New Book Review: "Just Enough Software Architecture"
Recently posted book review for Just Enough Software Architecture: A Risk-Driven Approach, by George H. Fairbanks, Marshall & Brainerd, 2010, reposted here:
During my last year of graduate school several years ago, I wrote reviews for two software books that I still consider exemplary: "Object Technology: A Manager's Guide", by David A. Taylor, which I called "the best concise introduction to object-oriented technology", and "Software Architecture in Practice", by Len Bass, Paul Clements, and Rick Kazman, the software architecture Bible at the time. As a consultant whose experience includes software, systems, and enterprise architecture, "Just Enough Software Architecture: A Risk-Driven Approach" is the book I will now be recommending to software developers who either have no architecture-level experience, or who need to get back to the basics of what software architecture is really all about.
Although I recently rated another text entitled "97 Things Every Software Architect Should Know: Collective Wisdom from the Experts" with high marks, I commented in my review that "after reading [that] book the reader will likely leave with an understanding of a broad range of architect responsibilities communicated by dozens of different architects with varying levels of experience across numerous business industries", and that "the degree to which their thoughts subtly differ on this aspect somewhat reflects what one will find in the workplace, especially when working as a consultant". However, for a cohesive treatment of software architecture, the goal of which is to start students and professionals on the right track, there are no other texts than can stand up to this one in the year-2010 marketplace.
Thinking back to my use of both the first and second editions of "Software Architecture in Practice" during my first graduate-level architecture course, I remember using the second edition to a greater extent than the first edition because of its use of UML. In fact, I had been known for quite some time to be a bit of a stickler for proper UML notation. Now I am known to combine component and deployment diagrams on a frequent basis just because it often makes sense to do so (if the tools being used are permissive in that sense). That said, the only aspect of the content that Fairbanks provides that I am not sure about is the ample use of legends within UML diagrams to explain what different lines and shapes convey. Because the goal of this book is not to teach UML, however, holistically speaking this is just a slight annoyance.
The first part of this book, "Risk-Driven Software Architecture", is what I especially enjoyed about what Fairbanks has to share with readers. Right off the bat, the delineation that the author provides between the job role of "architect", the process of "architecting", and the "architecture" engineering artifact is well done, as are his explanations of risk-driven architecture and agile architecture, and why software architecture is important. In addition, the extended example of risk-driven software architecture approach usage is effective, especially the points that the author makes about team communication, an extremely important aspect of architecture that is somehow often missed in other works of this genre.
Of the chapters within the second part of this book, "Architecture Modeling", I especially enjoyed Chapter 13, "Model Relationships". Although perhaps best read by novice architects, as a professional I found this chapter appealing because I have noticed the prevalent misunderstanding that exists in industry of how models relate to each other, and Fairbanks writes extremely well in this chapter as with the rest of the book, patiently walking the reader through every step along the way. Some potential purchasers of this book might be interested in knowing that the author shares effective "further reading" sections throughout that not only suggest other books to read, but provide CliffsNotes-styled commentaries of why each should be read. Well recommended.