
A serious book on software architecture.
')
It helps to understand what is actually an architecture, contains useful information about typical architectural solutions, considers from an architectural point of view some projects and technologies (for example, J2EE). The book is designed for medium and high level programmer.
The book is difficult to read, but contains many interesting ideas.
For example, the authors identify the following quality attributes of any software:
- readiness (property to work without shutdowns for a long time);
- modifiability (ease of change);
- performance;
- security (protection against hacking);
- testability (ease of testing);
- practicality
and argue that achieving the maximum parameters for all qualities is impossible or too expensive and suggests a method for analyzing needs and achieving the required quality levels in each project.
The book contains very interesting typical scenarios (tactics) to achieve software quality. For example, the quality of "readiness" can be divided into three groups of tactics:
1. fault detection;
2. recovery after malfunctions;
3. fault prevention.
The first group contains the following tactics: Ping / echo packages, Heartbeat, exceptions.
Curiously, the “practicality of software” in the book is completely formalized and is determined by the following quality aspects:
- exploring the capabilities of the system;
- effective use of the system;
- minimization of the consequences of mistakes;
- adaptation of the system to the needs of the user;
- trust and satisfaction of the user.
In fact, the authors offer very well-designed and tested sets of universal solutions (software or hardware-software) or ideas.
Just liked the quotes from the book:
"Any architecture implies the division of all possible changes into three categories: local, non-local and architectural."
"The architecture should perform the same tasks in the same ways."