First Unit 3 SE Min
First Unit 3 SE Min
- Introduction
- Design quality
- Design concepts
- The design model
Five Notable Design Quotes
• "Questions about whether design is necessary or affordable are quite beside the
point; design is inevitable. The alternative to good design is bad design, [rather
than] no design at all." Douglas Martin
• "You can use an eraser on the drafting table or a sledge hammer on the
construction site." Frank Lloyd Wright
• "The public is more familiar with bad design than good design. If is, in effect,
conditioned to prefer bad design, because that is what it lives with; the new
[design] becomes threatening, the old reassuring." Paul Rand
• "A common mistake that people make when trying to design something
completely foolproof was to underestimate the ingenuity of complete fools."
Douglas Adams
• "Every now and then go away, have a little relaxation, for when you come back
to your work your judgment will be surer. Go some distance away because then
the work appears smaller and more of it can be taken in at a glance and a lack of
harmony and proportion is more readily seen." Leonardo DaVinci
4
Purpose of Design
• Design is where customer requirements, business needs, and technical
considerations all come together in the formulation of a product or system.
• The design model provides detail about the software data structures,
architecture, interfaces, and components.
• The design model can be assessed for quality and be improved before code
is generated and tests are conducted
• Does the design contain errors, inconsistencies, or omissions?
• Are there better design alternatives?
• Can the design be implemented within the constraints, schedule, and cost
that have been established?
5
Purpose of Design (continued)
• A designer must practice diversification and convergence
• The designer selects from design components, component solutions, and
knowledge available through catalogues , textbooks, and experience
• The designer then chooses the elements from this collection that meet the
Requirements defined by Requirements Engineering and Analysis Modelling.
• Convergence occurs as alternatives are considered and rejected until one
particular configuration of components is chosen
• Software design is an iterative process through which requirements are
translated into a blueprint for constructing the software
• Design begins at a high level of abstraction that can be directly traced back to
the data, functional, and behavioral requirements
• As design iteration occurs, subsequent refinement leads to design
representations at much lower levels of abstraction. 6
From Analysis Model to Design Model
• Each element of the analysis model provides information that is necessary to create the
four design models
• The Data/Class design transforms analysis classes into Design classes along with the
data structures required to implement the software(Class and Collaboration
Diagram )
• The Architectural design defines the relationship between major structural elements
of the software; architectural styles and design patterns help achieve the
requirements defined for the system(Use Case Diagram & Sequence Diagram)
• The Interface design describes how the software communicates with systems that
interoperate with it and with humans that use it.(Use Case Diagram, Sequence
Diagram, Activity Diagram )
• The Component-level design transforms Structural elements of the software
architecture into a Procedural description of software components(Activity Diagram
& State Diagram)
Interface Design
Architectural Design
Data/Class Design
"Writing a clever piece of code that works is one thing; designing something
that can support a long-lasting business is quite another."
14
Design Quality Guidelines
Component-level Design
Interface Design
Architectural Design
Data/Class Design
Dimensions of the Design Model
High
Analysis model
Abstraction Dimension
Design model
26
Design Elements
• Data/class design
• Creates a model of data and objects that is represented at a high level of
abstraction
• Architectural design
• Depicts the overall layout of the software
• Interface design
• Tells how information flows into and out of the system and how it is
communicated among the components defined as part of the architecture
• Includes the user interface, external interfaces, and internal interfaces
• Component-level design elements
• Describes the internal detail of each software component by way of data
structure definitions, algorithms, and interface specifications
• Deployment-level design elements
• Indicates how software functionality and subsystems will be allocated
27
within the physical computing environment that will support the software
Pattern-based Software Design(Design Pattern)
• Mature engineering disciplines make use of thousands of design patterns for such
things as buildings, highways, electrical circuits, factories, weapon systems, vehicles,
and computers
• Design patterns also serve a purpose in software engineering
• Architectural patterns
• Define the overall structure of software.
• Indicate the relationships among subsystems and software components.
• Define the rules for specifying relationships among software elements.
28
☺
Cont…
• Design patterns
• Address a specific element of the design such as an aggregation of
components or solve some design problem, relationships among
components, or the mechanisms for effecting inter-component
communication.
• Consist of creational, structural, and behavioral patterns
• Coding patterns
• Describe language-specific patterns that implement an algorithmic or
data structure element of a component, a specific interface protocol,
or a mechanism for communication among components .
Design documentation
1. The Design Specification addresses different aspects of the design model
and is completed as the designer refines his representation of the software.
First, the overall scope of the design effort is described. Much of the
information presented here is derived from the System Specification and the
analysis model (Software Requirements Specification).
2. Next, the data design is specified. Database structure, any external file
structures, internal data structures, and a cross reference that connects data
objects to specific files are all defined.
3. The architectural design indicates how the program architecture has been
derived from the analysis model. In addition, structure charts are used to
represent the module hierarchy (if applicable).
Cont…
4. The design of external and internal program interfaces is represented
and a detailed design of the human/machine interface is described. In
some cases, a detailed prototype of a GUI may be represented.
5. Components—separately addressable elements of software such as
subroutines, functions, or procedures—are initially described with an
English-language processing narrative. The processing narrative explains
the procedural function of a component (module). Later, a procedural
design tool is used to translate the narrative into a structured description.
6. The Design Specification contains a requirements cross reference. The
purpose of this cross reference (usually represented as a simple matrix) is
(a) to establish that all requirements are satisfied by the software design
and (b) to indicate which components are critical to the implementation of
specific requirements.
7. The first stage in the development of test documentation is also
contained in the design document. Once program structure and
interfaces have been established, we can develop guidelines for
testing of individual modules and integration of the entire package. In
some cases, a detailed specification of test procedures occurs in
parallel with design. In such cases, this section may be deleted from
the Design Specification.
8. Design constraints, such as physical memory limitations or the
necessity for a specialized external interface, may dictate special
requirements for assembling or packaging of software. Special
considerations caused by the necessity for program overlay, virtual
memory management, high-speed processing, or other factors may
cause modification in design derived from information flow or
structure. In addition, this section describes the approach that will be
used to transfer software to a customer site.
9. The final section of the Design Specification contains
supplementary data.
Algorithm descriptions, alternative procedures, tabular data,
excerpts from other documents, and other relevant information are
presented as a special note or as a separate appendix.
It may be advisable to develop a Preliminary
Operations/Installation Manual and include it as an appendix to the
design document.
Modular Design
Cohesion
• Cohesion is the measure of strength of the association of elements
within a module. Modules whose elements are strongly and
genuinely related to each other are desired. A module should be
highly cohesive.
Types of Cohesion
• There are 7 types of cohesion in a module
• Coincidental Cohesion – A module has coincidental cohesion if its elements
have no meaningful relationship to one another. It happens when a module is
created by grouping unrelated instructions that appear repeatedly in other
modules.
• Logical Cohesion – A logically cohesive module is one whose elements
perform similar activities and in which the activities to be executed are
chosen from outside the module. Here the control parameters are passed
between those functions. For example, Instructions grouped together due to
certain activities, like a switch statement. For ex. A module that performs all
input & output operations.
• Temporal Cohesion – A temporally cohesive module is one whose elements
are functions that are related in time. It occurs when all the elements are
interrelated to each other in such a way that they are executed a single time.
For ex. A module performing program initialization.
• Procedural Cohesion – A procedurally cohesive module is one whose elements
are involved in different activities, but the activities are sequential. Procedural
cohesion exists when processing elements of a module are related and must be
executed in a specified order. For example, Do-while loops.
• Communication Cohesion – A communicationally cohesive module is one
whose elements perform different functions, but each function references the
same input information or output. For example, Error handling modules.
• Sequential Cohesion – A sequentially cohesive module is one whose functions are
related such that output data from one function serves as input data to the next
function. For example, deleting a file and updating the master record or function
calling another function.
• Functional Cohesion – A functionally cohesive module is one in which all of the
elements contribute to a single, well-defined task. Object-oriented languages tend
to support this level of cohesion better than earlier languages do. For example,
When a module consists of several other modules.
Coupling
• Coupling is the measure of the interdependence of one module to
another. Modules should have low coupling. Low coupling minimizes
the "ripple effect" where changes in one module cause errors in
other modules.
Types of Coupling
• There are 6 types of coupling in the modules are
• No direct Coupling – These are independent modules and so are not
really components of a single system. For e.g., this occurs between
modules a and d.
• Data Coupling – Two modules are data coupled if they communicate
by passing parameters. This has been told to you as a "good design
principle" since day one of your programming instruction. For e.g.,
this occurs between module a and c.
• Stamp Coupling – Two modules are stamp coupled if they
communicate via a passed data structure that contains more
information than necessary for them to perform their functions. For
e.g., this occurs between modules b and a.
Cont…
• Control Coupling – Two modules are control coupled if they
communicate using at least one "control flag". For e.g., this occurs
between modules d and e.
• Common Coupling – Two modules are common coupled if they both
share the same global data area. Another design principle you have
been taught since day one: don't use global data. For e.g., this occurs
between modules c, g and k.
• Content Coupling – Two modules are content coupled if:
• One module changes a statement in another (Lisp was famous for this ability).
• One module references or alters data contained inside another module.
• One module branches into another module.
Difference between Cohesion and Coupling
No Cohesion Coupling
Cohesion is the measure of strength of the Coupling is the measure of the interdependence
1.
association of elements within a module. Of one module to another.
2. A module should be highly cohesive. Modules should have low coupling.
Cohesion is a property or characteristics Coupling is a property of a collection of
3.
of an individual module. modules.
The advantage of cohesion is the ability to The advantage of coupling is the ability to bind
4. avoid changing source and target systems systems by sharing behavior, and bound data,
just to facilitate integration. versus simple sharing information.
The fact that systems coupled could cease to
5. The fact that a single system failure won’t function if one or more of the coupled systems
bring down all connected systems. go down.
Design Heuristics
• Once program structure has been developed, effective modularity can be
achieved by applying the design concepts. The program structure can be
manipulated according to the following set of heuristics:
1. Evaluate the "first iteration" of the program structure to Reduce coupling and
Improve cohesion.
Once the program structure has been developed, modules may be exploded or
imploded with an eye toward improving module independence. An exploded
module becomes two or more modules in the final program structure. An imploded
module is the result of combining the processing implied by two or more modules.
An exploded module often results when common processing exists in two or more
modules and can be redefined as a separate cohesive module. When high coupling
is expected, modules can sometimes be imploded to reduce passage of control,
reference to global data, and interface complexity.
2. Attempt to minimize structures with high fan-out; strive for fan-in as depth
increases.
• The structure shown inside the cloud in Figure below does not make effective use
of factoring. All modules are “pancaked” below a single control module. In
general, a more reasonable distribution of control is shown in the upper
structure. The structure takes an oval shape, indicating a number of layers of
control and highly utilitarian modules at lower levels.
3. Keep the scope of effect of a module within the scope of control of that
module.
• The scope of effect of module e is defined as all other modules that are affected
by a decision made in module e. The scope of control of module e is all modules
that are subordinate and ultimately subordinate to module e. Referring to Figure
above, if module e makes a decision that affects module r, we have a violation
of this heuristic, because module r lies outside the scope of control of module e.
4. Evaluate module interfaces to reduce complexity and redundancy and improve
consistency.
• It covers the overall structure of the software and the ways in which that
structure provides conceptual integrity for a system.
• So, architecture is the hierarchical structure of program components
(modules), the manner in which these components interact and the structure
of data that are used by the components.
• An architectural design can be represented using any of the 5 – models given
below:
• Structural Models – They represent architecture as an organized collection of program
components.
• Framework Models – They increase the level of design abstraction by attempting to
identify repeatable architectural design frameworks.
• Dynamic Models – They address the behavioral aspects of the program architecture
(states).
• Process Models – They focus on the design of the business or technical process that the
system must accommodate.
• Functional Models – They can be used to represent the functional hierarchy of a system.
• A number of different architectural description languages (ADLs) have been
developed to represent these models.
Control Hierarchy