Praise for my book Just Enough Software Architecture
This book reflects the author’s rare mix of deep knowledge of software architecture concepts and extensive industry experience as a developer. If you’re an architect, you will want the developers in your organization to read this book. If you’re a developer, do read it. The book is about architecture in real (not ideal) software projects. It describes a context that you recognize and then it shows you how to improve your design practice in that context.
Just Enough Software Architecture will coach you in the strategic and tactical application of the tools and strategies of software architecture to your software projects. The first contribution of this book is an insightful guide that will help you identify the driving characteristics of your project and develop goals, value propositions, and implementation strategies for the role of architectural modeling in your project. Dr. Fairbanks goes on to provide clear instruction in the tactics and the tools of architectural modeling that will enable you to achieve your goals for the overall project. Whether you are a developer or an architect, this book is a solid foundation and reference for your architectural endeavors.
— Nicholas Sherman, Program Manager, Microsoft
The Risk-Driven Model approach described in George Fairbanks’ Just Enough Software Architecture has been applied to the eXtensible Information Modeler (XIM) project here at the NASA Johnson Space Center (JSC) with much success.
George’s approach illustrated to the customer why the system was designed the way it was from its service layer, data-access layer, dependency injection support, and even its data architecture. The high-high quality attribute pairs that fell out of the architecture process justified the tasks, schedule, and cost of the project. The modeling constructs have helped communicate the architecture among all team members and even to prospective new customers. The architecture has allowed the XIM project to be a success here at JSC and it can help your project be a success as well.
It is a must for all members of the project from project management to individual developers. In fact, it is a must for every developer’s tool belt. (The Code Model section and the anti-patterns alone are worth the cost of the book!). Using “Just Enough Software Architecture” and involving the whole project team in the approach will go a long way towards project success.
— Christopher Dean, Chief Architect, XIM, Engineering Science Contract Group – NASA Johnson Space Center
Just Enough Software Architecture says what everyone is thinking but can’t say because they are tied to various methodologies: Big Design Up Front is bad, you don’t have to document everything, and everyone from the lowest programmer to the project manager needs to understand not just what the architecture of the system is but also why that architecture was chosen. The risk-driven approach to design presented in this book helps software developers understand how much design is needed so they can quickly get back to writing code and providing value to customers in the form of working software.
If you’re only going to read one book on software architecture, start with this one. Just Enough Software Architecture covers the essential concepts of software architecture everyone – programmers, developers, testers, architects, and managers – needs to know; and it provides pragmatic advice that can be put into practice within hours of reading.
— Michael Keeling, professional software engineer
This book [is] a uniquely practical and approachable contribution to the field of software architecture. For anyone who must create innovative software systems, for anyone who is faced with tough decisions about design tradeoffs, for anyone who must find an appropriate balance between agility and discipline — in short, for almost any software engineer — this is essential reading.
— Dr. David Garlan, Professor, School of Computer Science, Carnegie Mellon University
Despite the publication of several excellent software architecture books (e.g. the SEI series) that aim to popularize recent advances in software architecture research, for many corporate IT departments, there unfortunately remains a gaping chasm between adopted application architecture standards and practices on one side and today’s best available approaches and techniques on the other. George Fairbanks’ outstanding new book Just Enough Software Architecture distills the best of the latest architecture research to provide clear, concrete, practical and actionable advice that serves as a bungee cord for those application architects ready to take the plunge and leverage new architecture best practices to improve their applications.
Fairbanks synthesizes the latest thinking on process, lifecycle, architecture, modeling and quality of service into a coherent framework that is of immediate applicability to IT applications. Fairbanks’ writing is exceptionally clear and precise, while remaining engaging and highly readable. Just Enough Software Architecture is an important contribution to the IT application architecture literature and may well become a standard reference work for enterprise application architects.
— Dr. Ian Maung, Senior Vice President of Enterprise Architecture at Citigroup and former Director of Enterprise Architecture at Covance
This book directly tackles some key needs of software practitioners who seek that blend of tools to help them create more effective systems, more effectively. George reaches frequently into his own experience, combining important ideas from academia to provide a conceptual model, selected best practices from industry to broaden coverage, and pragmatic guidance to make software architectures that are ultimately more useful and realistic. His simple risk-based approach frames much of the book and helps calibrate what “just-enough” should be. This book is an important addition to any software architecture book-shelf.
This book shows how software architecture helps you build software instead of distracting from the job: the book lets you identify and address (only) those critical architectural concerns that would otherwise prevent you from writing code.
— Dr. Kevin Bierhoff, Software engineering professional
In many companies risk management is only a list of how projects could fail. Instead, this book shows you how to drive your architecture design based on risks. The book gives you a risk driven approach, and discusses good architectural practices, models, styles and techniques to create the architecture.
— Guido Zgraggen, Alumnus of Carnegie Mellon’s Master of Software Engineering program
Just Enough Software Architecture delivers on its promise — it captures and concisely conveys to designers of software-intensive systems just what they need to know about today’s (sadly) buzzword-laden minefield of software architecture.
The risk-driven model of software architecture introduced by Fairbanks in this book gives you practical tools to tackle tough design trade-offs, effectively communicate your decisions, and accomplish your goal to ship working software. I can almost see Fairbanks marching around JavaOne or PDC with a sign that states, “Software architecture is for everyone!”
The presentation is brisk, and the examples are frequent and interesting. This is a worthy book, a joy to read, and one I wish I had earlier in my career — to help me avoid making so many mistakes! It is deserving of a place on your shelf if you want become a better software designer.
— Dr. Timothy J. Halloran, Director of Engineering at SureLogic Inc.
This book presents a unique view on software architecture that makes it both accessible and practical. The concepts of just enough architecture and risk-driven design are breakthrough ideas developed by Fairbanks. This book demonstrates how architectural principles can be effectively used to solve real world applications. I found it extremely useful and a must read for anyone working in software development.
Fairbanks’ focus on just enough architecture should appeal to any developers trying to work out how to make the architecting process tractable. This focus is made accessible through detailed examples and advice that illustrate how risk can be used to manage architecture development and scope. At the same time, Fairbanks provides detail on the more academic aspects of software architecture, that should help developers interested in understanding the broader theory and practice apply these concepts to their projects.
— Dr. Bradley Schmerl, Senior Systems Scientist, School of Computer Science, Carnegie Mellon University
System and software developers questioning why and where about software architecture will appreciate the clear arguments and enlightening analogies this book presents; developers struggling with when and how to do architecture will discover just-enough guidance, along with concepts and ideas that clarify, empower, and liberate. Among the many good reasons to read this book, here is my personal list of positive impressions:
- By giving fitting names to concepts and ideas that may already be implicitly familiar to the reader, George makes them explicit and crystal.
- I appreciate George’s point of view that every system has an architecture, whether the designers consciously designed it or not. The three distinct kinds of architecture designs that George teases apart and describes are a stroke of brilliance, and so is the name “presumptive architecture.”
- George abstracts away unnecessary details in his exposition of a concept so that the reader can easily grasp the essential idea George presents. George’s definition of “risk” in Section 3.3 and the notion of “perceived risk” exemplify this fine balance of exposition.
- George emphasizes distributing and democratizing architectural knowledge, a separable issue from the job title of architect.
- George drives home the mindset, and offers a template, for thinking about architectural choices that shifts it away from one of designer ego contest into the more objective realm of engineering decisions.
- I grew to appreciate the first-person voice of George’s writing. The tone is not over-bearing, comes across as pragmatic and experienced from sweat-earned wisdom, while being frank and encouraging. Evident from the writing itself is down-to-earth-ness, openness of ideas, integrity, and a genuine concern for the reader’s understanding and success. In that spirit, I liked how Section 5.7 clearly spells out the limitations and challenges of what George advocates, but also attempts to offer things that might mitigate.
All in all, this book is easy to read, concise, yet rich with references — a well-architected and finely-designed book!
— Dr. Shang-Wen Cheng, Carnegie Mellon ISR Alumnus and Flight Software Engineer