Reviewed: January 2017
Designing Software Architecture eschews formal architectural models such as the IEEE standards or the “4+1” view model and provides instead a more practical (according to the authors) view of architecting a software system. The authors refer to the design process they adopted as ADD Attribute-Driven-Design (ADD).
The book is essentially split into four main sections.
The first part is a definition of architectural design and is mostly aimed in my opinion to new software architects. The second part goes into the description of the ADD architectural design process. The third, probably the most useful part of the book, focuses on use cases. This is where one can actually see what ADD involves in practice. The last part are appendixes on design useful for reference.
The first part of ADD consists on capturing functional and non functional requirements using what the authors call Use Case Model, Quality Attribute Scenarios and Constraints.
There is a refreshing focus on iterations in this methodology, which is something usually missing from other architecture methodologies but still enough rigour so that an inexperienced architect won’t feel lost during the process.
The first part of the design process is about capturing the overall software architecture in text and diagrams and recording the design decisions. The last bit of the first iteration is about cross-referencing the use case model with the chosen architecture to make sure all use cases are addressed.
The second iteration is about selecting technologies and explaining the rational for selecting one or another. The following iterations goes more in detail into aspects specific to the chosen architecture.
Overall I recommend this book to all software architects. ADD may not be the most suitable methodology for every project but it’s another tool at our disposal. The use cases are well described and serve as a reference while attempting to use this system in the real world.