Introduction to Software Engineering 
Muhammad Nasir 
Design Concepts 
m.nasir@iiu.edu.pk
Agenda 
 Software Design 
 Software Design Model 
 Translating Requirement Model to Software 
Design 
 Software Design Guidelines 
 Software Design Principles
Software Design 
 Software design encompasses the set 
of principles, concepts, and 
practices that lead to the 
development of a high-quality 
system or product.
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.
Software Design 
 The design model provides detail 
about software data structures, 
architecture, interfaces, and 
components that are necessary to 
implement the system.
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.!
Software Design Model 
 Software design model consists of 4 
designs: 
 Data/class Design 
 Architectural Design 
 Interface Design 
 Component Design
Translating the Requirements 
Model into the Design Model
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.!
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.
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.
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.!
The End 
 Thanks for listening 
 Questions would be appreciated.

Lecture 19 design concepts

  • 1.
    Introduction to SoftwareEngineering Muhammad Nasir Design Concepts m.nasir@iiu.edu.pk
  • 2.
    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
  • 8.
    Translating the Requirements Model into the Design Model
  • 9.
    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.