Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design
What are the ingredients of robust, elegant, flexible, and maintainable software architecture? Beautiful Architecture answers this question through a collection of intriguing essays from more than a dozen of today's leading software designers and architects. In each essay, contributors present a notable software architecture, and analyze what makes it innovative and ideal for its purpose.
Some of the engineers in this book reveal how they developed a specific project, including decisions they faced and tradeoffs they made. Others take a step back to investigate how certain architectural aspects have influenced computing as a whole. With this book, you'll discover:
- How Facebook's architecture is the basis for a data-centric application ecosystem
- The effect of Xen's well-designed architecture on the way operating systems evolve
- How community processes within the KDE project help software architectures evolve from rough sketches to beautiful systems
- How creeping featurism has helped GNU Emacs gain unanticipated functionality
- The magic behind the Jikes RVM self-optimizable, self-hosting runtime
- Design choices and building blocks that made Tandem the choice platform in high-availability environments for over two decades
- Differences and similarities between object-oriented and functional architectural views
- How architectures can affect the software's evolution and the developers' engagement
Go behind the scenes to learn what it takes to design elegant software architecture, and how it can shape the way you approach your own projects, with Beautiful Architecture.
Review By: Richard J. Foster
09/28/2009I don't think any software professional would argue with the fact that system architecture is important. The right framework for a task can make development easy and somewhat fun. A poor choice may result in a fragile and unnecessarily complex system.
Beautiful Architecture is an interesting book. As a collection of articles it does not have a single voice. Each author has their own view of what the term architecture means and what makes a particular architecture beautiful. Many of the examples selected are modern ones while others have been selected from the somewhat-distant past. A few authors chose to discuss architectural concepts and language choices in more abstract terms, which I personally found to be the most interesting chapters.
Because the authors come from such diverse backgrounds, the terminology they choose may sometimes be different than readers are used to. At one point, I had to mentally adjust the term "program" to "script" to remind myself that the authors were discussing third-party "glue code" external to the main software components.
In some chapters, particularly where the authors chose to discuss a modern system (e.g., Facebook), I worry that the information presented will quickly become stale. Web applications have a relatively short history and it is possible that—to use an example from building architecture—the Facebook chapter describes the equivalent of a Roman villa. While undeniably beautiful and long lasting, such architectural choices are unlikely to be the best when it comes to building tomorrow's complex software skyscrapers and airport terminals.
Despite these shortcomings, software architects and designers are likely to find some valuable concepts and suggestions in this book. Others will probably also enjoy it but may not get as much benefit reading all of the chapters rather than if they just read the ones that look relevant to their interests. If the book sounds interesting then you may like to know that all royalties are being donated to "Doctors Without Borders"—a reason, perhaps, to buy your own copy instead of borrowing someone else's.