This document discusses software design concepts, including defining software design, key elements of a software design model, guidelines for translating requirements to design, and principles of good software design. It notes that software design encompasses principles, concepts and practices that lead to high-quality systems and products. The design model provides details on data structures, architecture, interfaces and components needed to implement a system. It also lists guidelines for modular and traceable design, as well as principles like accommodating change and minimizing errors.
Agenda
SoftwareDesign
Software Design Model
Translating Requirement Model to Software
Design
Software Design Guidelines
Software Design Principles
3.
Software Design
Software design encompasses the set
of principles, concepts, and
practices that lead to the
development of a high-quality
system or product.
4.
Software Design
Design concepts must be
understood before the design
practices are applied
Design practice itself leads to the
creation of various representations
of the software
Design Practices serve as a guide for
the construction activity that follows.
5.
Software Design
The design model provides detail
about software data structures,
architecture, interfaces, and
components that are necessary to
implement the system.
6.
Software Design
Mitch Kapor, the creator of Lotus 1-2-3,
presented a “software design manifesto” in
Dr. Dobbs Journal. He said:! Good software
design should exhibit:!
Firmness: A program should not have any
bugs that inhibit its function. !
Commodity: A program should be suitable
for the purposes for which it was intended. !
Delight: The experience of using the
program should be pleasurable one.!
7.
Software Design Model
Software design model consists of 4
designs:
Data/class Design
Architectural Design
Interface Design
Component Design
Design Guidelines
1.A design should exhibit an architecture that (1) has been
created using recognizable architectural styles or patterns, (2)
is composed of components that exhibit good design
characteristics and (3) can be implemented in an evolutionary
fashion!
2. A design should be modular; that is, the software should be
logically partitioned into elements or subsystems!
3. A design should contain distinct representations of data,
architecture, interfaces, and components.!
4. A design should lead to data structures that are
appropriate for the classes to be implemented and are drawn
from recognizable data patterns.!
10.
Design Guidelines
5.A design should lead to components that exhibit
independent functional characteristics.!
6. A design should lead to interfaces that reduce the
complexity of connections between components and with the
external environment.!
7. A design should be derived using a repeatable method
that is driven by information obtained during software
requirements analysis.!
8. A design should be represented using a notation that
effectively communicates its meaning.
11.
Design Principles!
1.The design process should not suffer from
‘tunnel vision’ !
2. The design should be traceable to the
analysis model. !
3. The design should not reinvent the wheel. !
4. The design should “minimize the intellectual
distance” between the software and the
problem as it exists in the real world. !
5. The design should exhibit uniformity and
integration.
12.
Design Principles!
6.The design should be structured to
accommodate change. !
7. The design should be structured to degrade
gently, even when aberrant data, events, or
operating conditions are encountered. !
8. Design is not coding, coding is not design. !
9. The design should be assessed for quality
as it is being created, not after the creation !
10. The design should be reviewed to minimize
conceptual (semantic) errors.!
13.
The End
Thanks for listening
Questions would be appreciated.