Validation
Software Prototype
Review
Testing
Software Design
A description of the structure of the software to be implemented, the data models and structures used by the system, the interfaces between system components and, sometimes, the algorithms used.
Design Activities
- Architectural Design
- Interface Design
- Component Design
- Database Design
Design Outputs
- System Architecture
- Database Specification
- Interface Specification
- Component Specification
Architecture Design
Overall structure
Block Diagram
Design Pattern
- Each pattern provides a solution for a kind of design problems under certain conditions
- Knowledge reuse
- Written in natural language
MVC
Design Pattern - need to be understanded by engineers
Specification Pattern - invisible to humans stored in machine
Abstraction
Focus on the nature rather than the unnecessary details
Generalization
Refinement
- In order to focus on important issues, deal with other detail later on
- Miller’s rule: The magical number seven, plus or minus two
Information hide
- Implementation details are hidden from the clients or users
- The processes and data of a module should not be accessible for the modules that do not need them
Modulization
- Decompose the software system into several
- 2
- 3
Module independence
- Organize items for the same use into a same room / Cohesion
- Purchase different items for different use / Coupling
- Easier to design
Cohesion
- Degree of interaction within a module
- Coincidental Cohesion
- A module has coincidental cohesion when if it performs multiple, completely unrelated actions
- Problem
- Degrades maintainability
- Modules are not reusable
- Solution
*
- Logical Cohesion
- A module has logical cohesion when it performs a series of related actions, one of which is selected by the calling module
- Problem
* - Solution