Software Design Activities

Outline

Definitions

Software Design

Art and science of conceiving the structure of software systems.

Designer

The designer is the one that simplifies, gives a strong and invisible personality to what he creates, prunes, purifies, clutters, and creates suitable products.

— Jasper Morrison

Design Approaches

There are two ways of designing software:

One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.

— Hoare

The first way is far more difficult to achieve!

Design Approaches

  • During domain analysis, we used abstraction to hide technical details and simplify models.

  • This abstraction was needed to understand the problem domain, without any influence from implementation details.

  • Conversely, during the detailed design, we will do either:

    • add details to domain models or

    • create models from scratch.

Software Design

design big picture
Figure 1. The Big Picture

Outline

Software Design Activities

Different Activities

  1. Architecture.

  2. Preliminary Design (Component specification).

  3. Detailed design.

design process

Architecture Design

  • Strategic choices for system implementation.

  • Often concern several projects.

  • More engineering than computer science.

  • Architectural patterns application.

Preliminary Design

  • Components Specification

  • High-level description of the collaboration between the system major components.

  • System boundaries definition.

  • Component desired behavior description.

Detailed Design

  • Component internal description.

  • Preparation of the target programming language projection.

  • Design pattern application.

Other Design Aspects

  • User interface design.

  • Protocol design.

  • Database design.

  • Algorithm design.

  • etc.

Outline

Design Process

Design Process Activities

Preliminary design
  1. Solution decomposition into components or subsystems

  2. Component responsibility assignment

  3. Component interface specification

  4. Defines what the component should do

Detailed design
  1. Internal Component Design

  2. Additional component decomposition, if needed.

  3. Explains how the component performs its behavior

Outline

Conclusion

A Creative and Complex Task

  • Design is a creative activity that goes beyond diagrams drawing: design is not source code with boxes and arrows

  • Design is not a trivial task: a good design requires experience.

To Design is to Make Choices

Design is about making choices:
  • Choices about the hardware, programming language, network, user interfaces, etc.

  • Identify the quality factor(s) that will drive the design