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