Architecture.
Preliminary Design (Component specification).
Detailed design.
Gerson SunyƩ gerson.sunye@univ-nantes.fr
Art and science of conceiving the structure of software systems.
The designer is the one that simplifies, gives a strong and invisible personality to what he creates, prunes, purifies, clutters, and creates suitable products.
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.
The first way is far more difficult to achieve!
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.

Architecture.
Preliminary Design (Component specification).
Detailed design.

Strategic choices for system implementation.
Often concern several projects.
More engineering than computer science.
Architectural patterns application.
Components Specification
High-level description of the collaboration between the system major components.
System boundaries definition.
Component desired behavior description.
Component internal description.
Preparation of the target programming language projection.
Design pattern application.
User interface design.
Protocol design.
Database design.
Algorithm design.
etc.
Solution decomposition into components or subsystems
Component responsibility assignment
Component interface specification
Defines what the component should do
Internal Component Design
Additional component decomposition, if needed.
Explains how the component performs its behavior
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.
Choices about the hardware, programming language, network, user interfaces, etc.
Identify the quality factor(s) that will drive the design