Professional Documents
Culture Documents
Arch Patterns
Arch Patterns
Chapter 9:
Architecting and Designing Software
9.1 The Process of Design
Definition:
Design is a problem-solving process whose objective is
to find and describe a way:
To implement the systems functional requirements...
While respecting the constraints imposed by the
quality, platform and process requirements...
- including the budget
And while adhering to general principles of good
quality
Subsystem:
A system that is part of a larger system, and which has a definite
interface
Architecture design:
The division into subsystems and components,
- How these will be connected.
- How they will interact.
- Their interfaces.
Class design:
The various features of classes.
User interface design
Algorithm design:
The design of computational mechanisms.
Protocol design:
The design of communications protocol.
Top-down design
First design the very high level structure of the system.
Then gradually work down to detailed decisions about
low-level constructs.
Finally arrive at detailed decisions such as:
the format of particular data items;
the individual algorithms that will be used.
Bottom-up design
Make decisions about reusable low-level utilities.
Then decide how these will be put together to create
high-level constructs.
All the facilities for providing or accessing a set of related services are
kept together, and everything else is kept out
The layers should form a hierarchy
Higher layers can access services of lower layers,
Lower layers do not access higher layers
The set of procedures through which a layer provides its services is
the application programming interface (API)
You can replace a layer without having any impact on the other
layers
You just replicate the API
Pipe-and-filter
MVC
Service-oriented
Message-oriented
B. General Priorities
Decisions in this document are made based on the following priorities
(most important first): Maintainability, Usability, Portability, Efficiency
Client side:
Responses from the server will be displayed on the UI. There will be no
need for handleMessageFromServer to understand that the responses are
replies to the commands.