Characteristics of System
Characteristics of System
1. Basic Components
2. Interaction and Structure
3. Goal
4. Behavior
5. Life cycle
1.Basic Components
• Every system has a set of interrelated elements or basic
components.
• The basic components are simply the various identifiable
parts of a system. They are the moving parts of a system.
• The system components may be men, materials
,machine, information etc.
• Ex of system: Education
• Ex. Of components: Students, teacher, buildings,
administration, text, books.
• If a system is a large enough then it is composed of many
subsystem.
• Each subsystem is then made up of several smaller
subsystem.
• The component exist at the lowest level.
This components of a system are
interrelated and the have certain
interdependence. They have certain
relationship among them.
2. Interaction and structure
• An important feature of a system is that the
basic components interact among themselves.
system is not just an inanimate (life-less) thing.
There must be activity or processing procedure
between the elements of a system.
• In any system the elements display activity or
interaction. A system is always dynamic in
nature. Interaction alone can establish
relationships between these basic components.
• These relationships that exist among the
components and define the boundary between a
system and its environment are called stucture.
3.Goal
• A system is an organized whole. It has a
purpose, goal or objective. Without a common
objective a system starts moving in all direction
and co-ordination among the parts will be lost.
• The goal or purpose integrates the activities of
the components. All subsystems and
components work more effectively together in
the system than if they were acting
independently.
• The entire system has to be views as a whole
rather than just the sum of its parts. This
integrating effect is known as ‘Synergistic Effect’.
4. Behavior
• Behavior is the way a system reacts to its
environment. Behavior is determined by
procedures or instructions designed to
make sure that components behave in
ways that will allow a system to achieve its
goals. While a procedure describe what to
be done, behavior describe what is
actually done.
5.Life Cycle
• Just like a human body every system has
birth, life and death. Buildings, automobiles,
equipments have their own life.
• Whatever be the system, the life cycle
includes evolution, wear (be dressed),
obsolescence, aging, replacement, repair
and finally an end to the system’s
existence.
What is system?
• A system is an integrated collection of
components which satisfy, functions
necessary to achieve the system’s goal
and which have relationship to one anther
that give cohesion (structure) to the
system and define structure.
a. General Model of a system
• A system can be better understood with a
general model. A general model of a
physical system is made up of system
elements like input, processor and output
with the system concepts like control and
feedback to keep the system balance.
• And also explain all elements of system
with this answer.
Environment Control
Feed Back
Feed Back
Detailed System
Documentation
Cost
justification
and candidate
Design Submitted to
system design
MGT. for approval
NO Abandon
Design Projects
Accepted
YES
Test Programs
• The designer uses certain standard tools
and techniques to organize and work
through the system specification like
output design, input design etc. These
tools are:
1. System flowcharts, computer run chart,
clerical procedure chart, computer
procedure chart etc.
2. IPO( input processing and output) and
HIPO (Hierarchy of IPO) charts.
3. Decision Tables
• The formats of the repots and outputs are
decide at output design. In the input design the
data to input, calculate or stored are described.
• In this stage we can also decides the file
design that include:
1. Types of File
2. File structure
3. File organization including file access method
4. Choice of storage medium and availability.
• Now the detailed processing design involve the
design information. The designer must take
care to provide complete and clearly outlined
software specification.
• Finally documentation is essential to test the
programs and carry on maintanence.And after
that management will check it and approve for
the design and management check the cost of
system and the design of the candidate system.
• After approval or design is accept then it will go
for testing. Now full details of developed system
is available. This stage is the second check
point for the system project team must take a
decision to implement the system or to stop
implementation.
• A final report prior to the implementation phase
including procedural flowcharts, record layouts,
report layouts and working plan for implementing
the system prepared.
5. Implementation, Follow up and
Maintenance
• Implementation may not be creative process but
certainly is a difficult task. This is because users have
to accept the system.
• The implementation include:
1. Site preparation
2. Installation of new equipment
3. Users training, seminars, meeting to gain user support
4. Use of new inputs and procedures.
5. Trial and parallel runs of the system on the computer
6. Gradual (slowly) phasing out of the old system.
• Maintenance is the “tail end” of the life
cycle but it is most expensive and
consumes energy, cot and time in the log
run.
Maintenance
Time
Development
Software Cost
• After a new system has been
implemented, problems and errors and
difference appear and must be fixed. This
require system maintenance as on going
process. Generally hardware vendors take
the burden of maintain hardware. In case
of software , vendors provide newer
versions which helps enhancements
thereby increasing processing capabilities.
• When the system maintenance becomes
more costly and time demanding, new
system will have to be thought of.
6. Evaluation of the system
• Evaluation is nothing but feedback for the system.
This is the third and final checkpoint of SDLC. It
includes:
1. Development evaluation: This decides whether the
system is developed on time and within the budget.
Also it includes assessment of developed methods
and tools.
2. Operational evaluation considers
I. Response time
II. Ease of use
III. Reliability of computation
IV. sufficiency of storage capacity
3. User management Assessment
Evaluation: How often managers use the
information system and how far they are
satisfied judge the real worth of a system.
If the management I satisfied then
generally the organization also is satisfied.
• Draw diagram of the SDLC and also read
the difference between System Analysis
and System Design
Flow Charts
• What are Flow charts?
• A graphical picture of the sequence of a
program or an information system is called
a Flowcharts.
• Flow charting is the most common method
of describing procedure in a computer
based system.
Types of flow charts
• Basic 4 types of flowcharts we are using.
1. System Outline Chart: This presents a list of all
inputs, files, process and output in tabular form
without bothering about the sequence of
operations. It helps in checking for duplication
and difference in operation.
2. System Flowchart: A system flowcharts define
the flow of data through all parts of a system
with minimum of details. Generally it shows
where the input enters the system, how it is
processed and controlled and how it leaves the
system in the form of storage or output.
• In system flowcharts importance is placed on
input document and output reports. It shows only
limited data about how it is processed. It should
be noted that system outlines and system
flowcharts can be drawn for a complete system
or sub system.
3. Computer Run- chart: It can be regarded as a
master plan of the computer sub-system. They
are prepared in EDP environment. The computer
run chart define the interrelationship and where
relevant, sequence of the computer routines to
be performed how showing inputs, files and
outputs. This is required in the design of the
computer aspect of a new system.
4. Computer Procedure Flowcharts or
Program flowchart:
• A computer procedure flowchart define in
more detail the process and symbols
shown on a computer run chart. In short
they show the sequence of instruction in a
single program ( program logic) for that
there are known as program flowchart.
• It provide complete and detailed sequence
of logical operations to be performed in the
CPU of computer executing the program.
Structured Programming
• The structured programming is provide a well defined,
clear and simple approach to program design. Such a
method should be easier to understand, evaluate and
modify than any arbitrary method conceived by the
designers.
• Structured programming requires the use of single-
entry and single-exit control structure.
• The technique used to implement these principles is to
restrict all control constructs to one of the three
statements.
1. Sequence structure ( Single entry and single exit)
2. Decision/Branch structure (IF THEN ELSE)
3. Iteration/ Repetition Structure ( DO WHILE)
PRONS and CONS of Structured
Programming
• Advantages:
1. Clarity: Structured programs generally have a clarity and
logical pattern to there control structure which is a great
advantage throughout the process of design.
2. Productivity: Programmers who use structured techniques
show a significant increase in instruction coded per man-
hour of work.
3. Fixed Style: Structured programming tends to limit the
coding to a few straightforward design approach.
4. Maintenance: The clarity and modularity of a structured
design is of great help in finding an error and redesigning
the wrong section of code.
5. Redesign: Most large software products are subject to
occasional redesign. The clarity and modularity of structure
design maximizes the amount of code which can be reused.
Disadvantages
1. Reactionary attitudes: There are many programmers
who hesitate to learn new techniques.
2. Inefficiency: In certain cases it can be clearly shown
that structured programs require more memory.
3. Non structured languages: many current languages do
not have all the control concepts needed for structured
programming and thus require some additional effort to
simulate missing construct.
• In short, structured programming produces programs
with clean flow, clear design and a degree of
modularity or hierarchical structure.
Module Concept
• Modularity is a characteristic of good design. In a
modular design, the components have clearly defined
inputs and outputs and each components has a clearly
stated purpose. For Example modules include
procedures, Subroutines and functions. It allow the
designer to decompose a system into functional unit, in
order to
1. Impose a hierarchical ordering
2. Implement data abstraction
3. Develop independently useful subsystems.
• In the design’s decomposition the components at one
level filter those in the level above.
• As we move to lower level , We find more detail
about each component
• Thus we considered the top level to be the most
abstract and components are said to be
arranged in the levels of Abstraction.
• The levels of abstraction help us to understand a
problem addressed by a system and a solution
proposed by the design.
• By examining the levels from the top and
working down, the more abstract problem can be
handled first and the solution is carried through
as the detailed description is generated.
• In similar way modularity hide the detail,
that is, the components hide the internal
details and processing from one other.
• An advantage of information hiding is that
each components hides design decisions
from the others.
The module:
• Modules have basic four attributes
1. Input and Output
2. Function
3. Mechanics
4. Internal data
• Input is what it gets from its invoker while output is what
it returns to the its invoker. Functions is what it does to
its input to produces output. Mechanics is the
procedural code or logic by which it carries out its
functions. The internal data is its own private work
space, that is, data to which it alone refers. While the
inputs, outputs and function are the outside view of the
module, the mechanics and internal data comprise the
inside view of the module
• A modules is defined as collection of programs
statements with four basic attributes: input and output,
functions , mechanics and internal data.
• Types of Modules:
1. Input module: This kind of modules obtain information
from their subordinates and passes it on to its bosses.
2. Output module: This kind of modules take information
from the boss and passes it on to its subordinates.
3. Transform Module: These are modules that exit only
for the sake of transforming data into some other form
for ex., computational module.
4. Coordinate module: The primary concern of the co-
ordinate module is managing the flow of data and from
different subordinates.
5. Composite Module: sometimes module can perform
functions of more than one type of module.
Modular Programming
• An approach to programming in which the
program is broken into several
independently compiled modules.
• Each modules export specified
elements( such as constant, data types,
variable, functions) all other elements
remain private to the module.
• Modular programming is a originator of
object-oriented programming.
Advantages of modular
programming
1. It is easier and less costly to add features, change
features or correct errors after deployment.
2. It is easier to write and debug the program.
3. It is easier to manage since more difficult modules can
be given to more skilled programmers and easy
modules to junior programmers.
4. One can divide a large, complex problem into a
number of modules each of manageable complexity.
5. The modular concept fits in well with top-down design.
6. Formal module interface definition may be especially
helpful in “organizing” a bottom-up design, first bottom-
up and then top-down.
Disadvantage
• Because there are few formal design techniques, it is
difficult to learn, although the principles are clear.
• Modular programming requires more design effort and
care
• Many programmers are unwilling to try new things,
including modular design
• Modular programming may require slightly more memory
space and runtime.
• To avoid slow processing in some O.S one may have to
ensure that modules that call each other frequently are in
the same machine page.
• Although Modular programming probably is a help in
managing a project organized along conventional lines. If
group programming is employed it may be
disadvantageous to associate one programmer's name
with each module.
Qualities of A good Design:
COUPLING and COHESION
• Software must have high quality in it.To
design such high quality software, the
characteristics for such good qualities
must be identified.
• A good design must have ease of
understanding, ease of implementation,
ease of testing, ease of modification and
correct translation from requirements
specification.
Component independence
• Component independence is an important
requirement for a good design. If and when a
system fails, it is easy to trace back through the
code to the particular component to fix the cause.
• It also easier to understand how a component
works if there is independence of component.
• To recognize and measure the degree of
component independence in a design, we also use
two concepts
1. Coupling
2. Cohesion
1. Coupling
• One of the difficulties in modular programming is that everyone
easily grasp the concepts yet it is difficult to implement.
• So the problem is that how we avoid the coupling among the
module, that is how we do we make them independent?
• We say that the two component are highly coupled when there is
great deal of dependence between them. Loosely coupled
components have some dependence but the interconnection are
weak.
• Uncoupled components have no interconnections at all.
Highly coupled---Many
dependencies
• Our objective is to minimize coupling, that is, to make modules as
independent as possible. This can be done in any one of the
following three ways—
1. By eliminating unnecessary relationships
2. By reducing the number of necessary relationships
3. By easing the tightness of necessary relationships
• In reality, it is very difficult to build completely uncoupled
components.
Principles of coupling:
• The coupling between modules is to be reduced. that, is the
complexities of the connections between the modules must be less
as possible.
1. Create narrow connections:
• An example of narrow coupling would be a state in which the pair of
modules communicate only pieces of data from one to the other
.this is in contrast to broad connections in which a pair of modules
may be communicating large pieces of data back and form.
2. Direct Connection: The interface between two module is
better understandable if a person can understand it
directly without having to refer to several other pieces of
information. The reason for this insistence for human
understanding is because cost of computer system is very
large.
3.Local Connections:
• In this case of local connections, all the information
required to understand the connection between to
modules is presented with a connection itself.
4. Obvious connections:
• Obvious connection is one ,which is easier to understand.
The obvious connection is the dream of any designer.
Easy to do complex task.
5. Flexible connection: If the mechanism to make the
connection between the modules is rigid then it is very
difficult for making changes or to clip a module to module
other than those to which it is already attached. Its more
difficult to maintain.
Types of Coupling
• For a good design, coupling must be kept
minimum. In the sequence from best to worst
there are three broad categories of coupling
between modules.
• 1. Normal coupling ( coupling by parameters)
• 2. Global or common coupling ( coupling via a
globally accessible data area)
• 3. Content or pathological coupling( Coupling by
direct connection between the internal of
modules)
1. Normal Coupling
• In normal coupling if we go from best to worst then we
have
1. Data coupling (parameters)
2. Stamp coupling( Composite parameters)
3. Control coupling( Parameters used explicitly to control
the behavior of the recipients modules)
• By normal coupling we mean the following:
• Two modules A and B are normally coupled
1. A calls B
2. B returns to A
3. All information passes between them by means of
parameters presented with the call itself.
1.1 Data coupling
• Data coupling is by far the simplest type of coupling.
Here two modules are data coupled, if they are
communicate via an elementary data item, which is
passed as a parameter between the two.
• There are no extra complication. Hence data
coupling is narrow, direct, local and obvious and its
flexible.
• However in data coupling we must keep interface as
narrow as possible, that is too many parameters will
complicate matter. if we can add any information it
can violates the principle of good design.
1.2 Stamp coupling
• Two normally coupled modules are stamp coupled if one
passes to the other a composite piece of data( that is a
data structure itself is passed)
• With stamp coupling the data values, format ,
organization must be matched between interacting
components.
• If composite data like CUSTOMER-RECORD consist of
many fields are passed between modules then the two
modules are stamp coupled.
• Ex. Module MOBILE-CHARGE it take two components
1. Basic rental charge
2. The usage charge
1.3 Control Coupling
• Two modules are control coupled if one
passes to the other a piece of information
intended to control internal logic of the
other.
Types of flags
• Different types of flags used in coupling
1. Data- name of student, pin code etc
2. Description flag: Student is average, pin
code is numeric….
3. Control flag: Bo to next record , Select
the record, enter master records……….
Common Coupling
• The normal coupling like data, stamp, and
control retain the basic character modularity.
• The common coupling refers to two or more
modules drawing information from the same
global data area. This kind of globally accessible
data area can be created in most computer
language like Cobol, Fortran, C programming.
• In fact relatively wide levels of coupling occur,
when modules tide to an environment external to
software. For ex. I/O couples a modules to
specific device, format and communication
protocols. Read example.
Limitation of Common coupling
1. A defect in any module using a global area may slow
up in any other module using that global area. A
data in the global area is not well protected and may
get managed at any moment.
2. The flexibility of globally coupled module is worse
than that normally coupled one.
3. The global coupling introduces an odd kind of
isolation in a system. so the value pass from one to
other.
4. Global areas may be misused by different modules
using the same area to store quite different pieces of
information.
5. Programs with a lot of global data are
extremely tough for maintenance
programmers.
6. It is difficult to discover what data must be
changed if a module is changed. Also it is
difficult to find out what modules must be
changed if a piece of data is changed.
7. Common coupling has some unwanted
features, which are not suitable for some
programming.
Content (Pathological) Coupling
• Content coupling exist between two modules if one
refers to the inside of the other in any way. Example.
1. If one module refers to data within another.
2. If one module alters a statement in another.
3. If one module branches into another.
• This kind of coupling makes nonsense of the concept
of black box module, since it force one module to
know about the explicit counters and implementation of
another one.
• Generally assembler language use such coupling. In
fact higher level language make it difficult to implement
content coupling.
Cohesion
• A fundamental goal of software design is to structure the
software product so that the number and complexity of
interconnection between modules is minimized. To achieve
this we involve the concept of coupling and cohesion.
• An important way o evaluate partitioning of the system is
decided by the fact of how cleanly the modules are
separated from one another, this is the criteria of coupling.
• Another way to determine partitioning is to look at how the
activities within single module are related to one another.
This is the criteria of Cohesion.
• While coupling talks about the interconnection between the
modules, Cohesion refers to “ putting strongly associated
things” in the same module.
• Cohesion is a measure of the strength of
functional relatedness of elements within a
module. Here elements mean an
instruction, a group of instruction, a data
definition or a call to another module. That
is any piece of code that accomplish some
work or define some data.
Types of Cohesion
• Cohesion of elements occurs on the scale of
weakest to strongest in the following order.
1. Coincidental cohesion
2. Logical cohesion
3. Temporal cohesion
4. Procedural cohesion
5. Communicational cohesion
6. Sequential cohesion
7. Functional cohesion
Coincidental Cohesion
• It occurs when the elements within a module have no
apparent (Clear) relationship with one another, that is ,
there is no meaningful relationship between the
elements.
1. Wash car
2. Fill out the application form
3. Have coffee
4. Go to the movie
5. Walk Dog
• The activities here are related neither by flow of data
nor by flow of control. Such modules make system less
undestandable.
2. Logical Cohesion
• It implies some relationship among the elements of the
module. A logically bound module often combine
several related functions in a complex and interrelated
fashion.
• Ex. We could combine into a single module all
processing elements that fall into the class of getting
input.
1. Read a control message from a terminal
2. Read transaction from magnetic tape
3. Read Master records from Disk.
• The logical cohesion is slightly better than coincidental
cohesion.
3. Temporal Cohesion
• A temporally cohesive module is one whose elements
are involved in activities that are related in time.
• Ex. In an initialization module the elements can be
1. Open Disk File
2. Reset Counter
3. Read a control Message from a terminal
4. Set Accumulator to Zero
• These activities are unrelated to one another except
that they are carried out at a particular time. So
temporal is stronger then logical, it may still lead to
complication at the maintenance stage.
4. Procedural Cohesion
• Generally functions must be performed in a certain
order. Ex. Data must be entered before they can be
checked and then manipulated. When functions are
grouped together in a component just to ensure this
order, the component is procedurally cohesive. EX.
Function A
Function B
Function C
Communicational Cohesion
• The elements of a module processing
communicational cohesion refers to the same
set of input and/or output data.
• Ex. Calculate gross-pay, calculate deduction and
calculate net-pay are combined into a single
module USE NET-PAY, then it would be
communicational. They work on same input like
Employee_id which makes the module
communicational cohesive.
Sequential Cohesion
• A sequentially cohesive module is one whose elements
are involved in such activities such that output data from
one activity serve as input data to the next.
• Ex. Read student_id
• Read marks of the student
• Calculate total-marks
• Calculate percentage
• Determine class
• Here the output of one activity goes as input to the next,
that is the elements/activities are sequentially bound.
• Sequentially cohesive module usually has good coupling
and is easily maintained.
Functional Cohesion
• A functionally cohesive module contains elements that
all contribute to the execution of one and only one
problem related risk.
• Ex. Functionally bound modules are
1. Assign Loan Account number to customer.
2. Compute Square root
3. Generate random Number.
4. Write records to print file.
• Each of these modules has a strong single minded
purpose. When its boss calls it, it carries out just one
job to completion without getting involved in any extra
activity.
Additional Design Guidelines
• Coupling and cohesion are two essential criteria in designing
system. But we also include:
1. Factoring
2. Decision Splitting
3. System Shape
4. Error reporting
5. Editing
6. State memory
7. Matching data structure
8. Informational cluster
9. Initializing and terminating modules
10. Restrictively/ Generality
11. Redundancy
12. Fan-in and Fan-out
• Out of this we are study factoring, system shape, error
reporting, generality, fan-in and fan-out.
Factoring
• Factoring is a process of decomposing a module
so that the bulk of its wok is done by its
subordinates.
• A system is said to be completely factored if all
of the actual processing is accomplished by
bottom level atomic (small) modules.
• Further non-atomic modules largely perform the
jobs of control and co-ordination. Structured
design aims for a completely factored structure.
• Factoring I done mainly for the following
reasons
1. To reduce module size
2. To get the advantage of top-down design
3. To avoid duplication of code
4. To separate the managerial work like
calling and deciding form outline task like
calculating and editing.
5. To simplify implementation
• To reduce module size :A large modules is a
headache because it becomes difficult to find bugs
or to understand the total module.
• To get the advantage of top-down design: In a top-
down deign, we can get the advantage of core of
understanding. Also modification to the system
becomes more localized and straightforward.
• To avoid duplication of code: We can reduced the
duplication code.
• To separate the managerial work like calling and
deciding form outline task: Factoring result in a
program structure in which top level modules
performs decision making and low level modules
performs most input, computational part and output
work. The middle level modules perform some
control and do moderate amounts of work.
• To simplify implementation: Factoring can
bring some ease to programming
problems. We can do this by reducing the
number of immediate subordinates of a
module.
• Factoring also can bring out the difference
between a structure chat and flowchart.
System Shape
• The quality of a system is largely determine by
the characteristics of the structure chart. There
are basic types of modules. They are
determined by the direction that data flow though
them. These types are:
1. Afferent: In anatomy terms, afferent means,
nerves sending information towards the brain.
Here it means what you view to a module.
Afferent
2. Efferent: It means nerves sending
information away from the brain. That is
what you get back from the module.
Efferent
Transform
4. Coordinate: Here module coordinates the
communication of its subordinates.
Coordinate
Error Reporting
• Error reporting should be reported from the
module, that is , it can detect an error and know
what the error is? Some times the boss module
can correct the errors.
• The question arise as to the storing of a text of
error messages. there are, in fact two choices,
one is to keep them all in one place. Other is to
sprinkle them all around by keeping message to
the respective module detecting the error.
keeping the error message at one place has the
following advantage:
1. Avoid duplicate message
2. Easier to update message
3. Possible to keep the text of the message in a
disk file
4. Easier to keep the wording and format of
messages consistent.
• However, there are two minor disadvantage if
we keep the message in one module:
1. You will need an artificial error message
number to access them
2. The code in the system isn’t so readable as it
is with the message text located where it is
used.
Generality/ Restrictively
• The modules should not be made too restrictive or
too general. A restrictive module has one or more
of the following characteristics:
1. It deals with restrictive data values, types or
structures. Ex. Bank amount.
2. It makes assumptions about where or how it is
being used.
3. It performs a specific job
• The problem with restrictive module is that they
are hard to reuse. Maintenance is slow and
tedious.
FAN-OUT
• The span of control is important while designing
the program structure. The depth and width of
the number of levels of control provide an
indication of the success of the structure.
• Fan-Out is a measure of the numbers of
modules that are directly controlled by another
module. On the contrast Fan-In indicates how
many modules are directly control a given
module.
• Fan-out is directly concerned with the
structured chart. If the number under the
module is too much, then the module is
consider to be complex and difficult to
maintain. In general the Fan-out of a
module should be less than eight.
• A high fan-out is repair by factoring out
middle management modules with strong
cohesion and loose coupling.
Fan-In
• The Fan-in to module is the number of
immediate bosses it has. High fan-in is the
return for intelligent factoring and the
removal of restrictive module.
• Fan-in should be maximized because they
have good cohesion.