Professional Documents
Culture Documents
LESSON 13:
Topics Covered another application. A good software design should have the
Software Design- Features of a good software design, Cohesion following desirable characteristics:
and Coupling, Classifications of cohesion and coupling • A good design should capture all the functionalities of the
Objectives system correctly.
Upon completion of this Lesson, you should be able to: • It should be easily understandable.
• Know what is meant by software design • It should be efficient.
• Know what are the good features of a software design • It should be easily maintainable.
Know what is meant by cohesion and coupling in software Understandability of design is a major factor, which is used to
design and the various classifications of cohesion and coupling evaluate for the goodness of a design, since a design is easily
In today’s lecture we’ll see what do you exactly mean by a understandable it is also easy to maintain and change, unless a
software design and the features of a good software design as design is easily understandable it would require a tremendous
well as cohesion and coupling. effort to maintain it. In order to enhance the understand ability
of a design, it should have the following features.
What is a software design?
• Use of consistent and meaningful names for various design
Software Design components
Design phase of software development deals with
• Use of a cleanly decomposed set of modules
transforming the customer requirements as in the SRS
document into a form implementable using a programming • Neat management of modules in a hierarchy, tree like
language. In order to be easily implementable in a conventional diagram
programming language, the following items must be designed Modular design is one of the fundamental principles of a good
during the design phase: design. Decomposition of a problem into modules facilitates
• Different modules required to implement the design taking advantage of divide and conquer principle. If different
solution. modules are almost independent of each other then each
• Control relationship among the identified modules, i.e. the
module can be understood separately eventually reducing
call relationship among modules. complexity greatly.
In this lecture, we provided a broad overview of the activities 1. W. P. Stephens, G. J. Meyers, and L. L. Constantine,
involved in software design phase. We then characterized the “Structured Design,” IBM Systems Journal, 1974, vol. 13,
features of a good software design by introducing the concepts no. 2, pp. 115-139
of cohesion and coupling. Cohesion is the measure of the
2. D. L. Parnas, On the criteria to be used in decomposing
functional relatedness of elements (instructions, data
systems into modules, Communications of the ACM, v.15
definitions, etc.) within a single module. In a good design, the
n.12, p.1053-1058, Dec. 1972
cohesion of every module is high. Together with coupling,
cohesion is one of the best measures of the quality of a design. 3. Brian W. Kernighan , P. J. Plauger, The Elements of
Programming Style, McGraw-Hill, Inc., New York, NY, 1982
A module may exhibit any of seven levels of cohesion
depending on how the activities within the module are related. 4. John B. Bowen, Module size: a standard or heuristic?,
In sequence from best to worst, these seven levels are: Journal of Systems and Software, v.4 n.4, p.327-332, Nov.
functional (elements contribute to a single, problem related 1984
activity); sequential (activities within the module are connected 5. D. N. Card, F. E. McGarry, G. T. Pager et al., The Software
in that the output from one serves as the input to another); Engineerino Laboratory, NASA/GSFC, February 1982
communicational (activities share the same input or output); 6. Glenford J. Myers, Composite Structure Design, John Wiley
procedural (activities share the same procedural & Sons, Inc., New York, NY, 1978
implementation); temporal (activities can be carried out at the
7. R. D. Cruickshank and J. E. Gaffney, “Measuring the
same time); logical (activities appear to belong to the same
Development Process: Software Design Coupling and
general category); coincidental (activities have no relationship to
Strength Matrices,” Proceedings of the Fifth Annual
one another).
Software Engineering Workshop, NASA/GSFC, November
The maintainability of modules with functional, sequential, and 1980
communicational cohesion tends to be significantly higher than
8. Thomas J. Emerson, A discriminant metric for module
that of modules of the four lowest levels of cohesion.
cohesion, Proceedings of the 7th international conference on
Exercises Software engineering, p.294-303, March 26-29, 1984,
1. What do you mean by the terms cohesion and coupling in Orlando, Florida, United States
the context of software design? How are the concepts of 9. L. A. Marascuilo and M. McSweeney, Nonparametric and
cohesion and coupling useful in arriving at good software Distribution Free Methods for the Social Sciences. California:
designs? Brooks/Cole, 1977, pp. 466-471, pp. 431-435
2. Enumerate the different types of cohesion that a module 10. F. E. McGarry, “Measuring Software Development
might exhibit? Technology,” Proceedings of the Seventh Annual Software
3. Enumerate the different types of coupling that might exist Engineering Workshop, NASA/GSFC, December 1982
between two modules? 11. Peter C. Belford , Richard A. Berg , Thomas L. Hannan,
4. Is it true that whenever you increase cohesion of different Central flow control software development: A case study of
modules in your design, coupling among these modules the effectiveness of software engineering techniques,
automatically decreases? Justify your answer through a Proceedings of the 4th international conference on Software
suitable example. engineering, p.85-93, September 17-19, 1979, Munich,
Germany
5. What according to you is a good software design?
12. Victor R. Basili , Barry T. Perricone, Software errors and
6. What do you understand by the term functional
complexity: an empirical investigation0, Communications of
independence in the context of a software design? How can
the ACM, v.27 n.1, p.42-52, Jan. 1984
you achieve functional independence in a software design?
Site Reference
Assignment
http://www.waysys.com/ws_content_bl_pgssd_ch06.html
1. Design a questionnaire to gather information about the user
interface of some tool (such as Spread sheet ) with which Notes
you are familiar. Try to distribute the questionnaire to a
number of user and evaluate the results.
2. Draw possible data flow diagrams of system design for the
following.You may make reasonable assumptions.
A salary system. The input is a list of employee number who
are to be paid that month The system maintains tables holding
tax rates and the annual salary for each employee. The output is
a salary slip for each employee.