Wherefore the mere practical architect is not able to assign sufficient reasons for the forms he adopts; and the theoretic architect also fails, grasping the shadow instead of the substance. He who is theoretic as well as practical, is therefore doubly armed; able not only to prove the propriety of his design, but equally so to carry it into execution.
-- Marcus Vitruvius Pollio: de Architectura, Book I (1st century BC)
Our Software Architecture Book
I have written a book on software architecture with a colleague, Eoin Woods.
The book is called Software Systems Architecture : Working With Stakeholders Using Viewpoints and Perspectives, and is published by Addison-Wesley Educational Publishers. The first edition (ISBN 0321112296) was published on 29 April 2005, and the second edition (ISBN 032171833X) on 4 November 2011.
It is a practical handbook for anyone who is, or would like to become, a software architect. Specifically, the book explains:
- what software architecture is about and why your role is vitally important to successful project delivery;
- how to determine who is interested in your architecture (your stakeholders), understand what is important to them (their concerns), and design an architecture that reflects and balances their different needs;
- how to communicate your architecture to your stakeholders in an understandable way that demonstrates that you have met their concerns (the architectural description);
- how to focus on what is architecturally significant, safely leaving other aspects of the design to your designers, without neglecting issues like performance, resilience, and location;
- what important activities you most need to undertake as an architect, such as identifying and engaging stakeholders, using scenarios, creating models, and documenting and validating your architecture.
Edition 1 was translated into Japanese, and Edition 2 is also being translated into Chinese.
What's New in Edition 2
The most important changes in this edition are as follows.
- We have introduced a new viewpoint, which we call the Context viewpoint. This describes the relationships, dependencies, and interactions between the system and its environment (the people, systems, and external enti- ties with which it interacts). It extends, formalizes, and standardizes the relatively brief discussion of scope and context that used to be in Chapter 8.
- We have expanded the discussion of different aspects of the role of architecture in Part II.
- We have revised most of the viewpoint and perspective definitions, particularly the Functional and Concurrency views and the Performance and Scalability perspective.
- We have revised and extended the Bibliography and the Further Reading sections in most chapters.
- We have updated the book to align with the concepts and terminology in the new international architecture standard ISO 42010 (which derives from IEEE Standard 1471).
- We have updated our UML modeling advice and examples to reflect the changes introduced in version 2 of UML.
Our Software Architecture Website
We have set up a website for the book here.
Whether you are interested in our book or not, there is a wealth of useful information on the site for new or experienced architects. For example:
- There is a directory of websites devoted to software architecture, or of interest to software architects, here.
- There is a complete bibliography from our book, with information on books of interest to software architects, here.
- There are links to articles and presentations that Eoin and I have produced related to software architecture here.
- There are links to conferences and other events that Eoin or I have attended, or are planning to attend, here.
We have also drawn up a Quick Reference Card which contains reference information on all our viewpoints and perspectives in a single PDF.
You can browse the first chapter of the book here.