According to the authors,
This book presents a view of software architecture for product families. It is addressed to researchers, engineers, and managers involved in the development of software-intensive products. The purpose of the research was to understand which techniques, methods, or tools could be used to improve the process and product of software architecture for families of software-intensive products. The book is based primarily on the experience gained in the project ARES (Architectural Reasoning for Embedded Systems).
ARES was a European collaboration among six partners from academia and business, which ran from 1995 through 1999.
Software architecture provides a high-level design and a framework for the development of a complex system that may include hardware components. The authors note that, by the beginning of the 1990s, software complexity had reached a critical threshold that necessitated a change in design methods. One value of architecture is that it makes software complexity easier to manage. This improves productivity during subsequent development stages. This book reports research results and their application in industrial settings. It discusses software architecture for software developed to support product families, related devices that perform the same basic functions but with differing functional details and hardware components.
The book begins by presenting a conceptual framework for software architecture, that is, the definition of and model from which an architecture may be created. This framework includes such topics as the properties of software and how they are expressed in an architecture.
Next, the authors cover software architecture description, including a review of several languages and graphical tools that support the development of architecture. The tools that were used most by the ARES participants, and are discussed most thoroughly here, are Koala and Darwin. The authors discuss limitations of these tools and how they were handled. In addition, a variety of other tools are surveyed and compared.
Architecture assessment is a technique for reviewing an architecture to ensure that it meets its goals. This topic includes design analysis, response-time analysis, and structural analysis, along with a description of metrics that pertain to such analysis.
The ARES approach to software recovery is a core issue that receives detailed treatment. Many real systems were developed prior to the accumulation of our present knowledge of why architecture is important and how to develop an architecture. Hence, it is important to be able to recover the unexpressed architecture inherent to a product family. This recovery facilitates the creation of new products and improves the ability to change the products in the family.
Examples describing how the concepts are applied follow. These include a chapter each devoted to project experiences at Philips and Nokia, involving, respectively, a family of television models and a family of telecommunication systems. A third chapter discusses a train control system. In each case, the architecture applies to software that is used in several related products.
Given the inherent difficulty of addressing a complex topic applied to complex systems, the book strives to provide the big picture rather than exhaustive detail. Principles and procedures are described in an overview fashion, with sufficient detail to convey the what and how of the processes that succeeded. Architecture recovery is covered in the most depth, because it is likely to be the first step in a new effort to develop an architecture for an existing system.
The text is well written and clear, with a format that is easy to approach. Examples and diagrams clarify the concepts. The bibliography is extensive. Refreshingly, I found no typographical errors. Software designers and engineers will have the most interest in this material. There is much useful information here, including descriptions of techniques for creating, recovering, and assessing an architecture. One should not, however, expect to gain full knowledge of this subject from one reading. These concepts need to be applied and practiced for complete understanding.