Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design Paperback – Jan 30 2009
|New from||Used from|
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
To get the free app, enter your e-mail address or mobile phone number.
About the Author
Diomidis Spinellis is an Associate Professor in the Department of Management Science and Technology at the Athens University of Economics and Business, Greece. His research interests include software engineering, programming languages, internet information systems, computer security, and intelligent optimization methods. He holds an MEng in Software Engineering and a PhD in Computer Science both from Imperial College London.
Spinellis is a FreeBSD committer and the author of many open-source software packages, libraries, and tools. His implementation of the Unix sed stream editor is part of all BSD Unix distributions and Apple's Mac OS X. Other tools he has developed include the UMLGraph declarative UML drawing engine, the ckjm tool for calculating Chidamber and Kemerer object-oriented metrics in large Java programs, the Outwit suite for integrating Windows features with command-line tools, the fileprune backup file management facility, and the socketpipe network plumbing utility. In 2004 he adopted and has since been maintaining and enhancing the popular bib2xhtml BibTeX bibliography format to HTML converter. Currently he is also serving as the scientific coordinator of the EU-funded SQO-OSS cooperative research project, a software quality observatory for open-source software.
Spinellis has published two books in Addison-Wesley's "Effective Programming Series": in 2004 Code Reading: the Open Source Perspective, which received a Software Development Productivity Award in 2004 and has been translated into six other languages, and in 2006 Code Quality: the Open Source Perspective, which also received a Software Development Productivity Award in 2007. Both books use hundreds of examples from large open source systems, like the BSD Unix operating system, the Apache Web server, and the HSQLDB Java database engine, to demonstrate how developers can comprehend, maintain, and evaluate existing software code. Spinellis has also published more than 100 technical papers in journals and refereed conference proceedings. The article "A Survey of Peer-to-Peer Content Distribution Technologies" he co-authored in 2004 appeared in the list of ACM's most downloaded digital library articles throughout 2005 and 2006. He is a member of the editorial board of IEEE Software, authoring the regular "Tools of the Trade" column, and Springer's Journal in Computer Virology.
Spinellis is a member of the ACM, the IEEE, the Usenix Association, the Greek Computer Society, the Technical Chamber of Greece, a founding member of the Greek Internet User's Society, and an active Wikipedian. He is four times winner of the International Obfuscated C Code Contest and a member of the crew listed in the Usenix Association 1993 Lifetime Achievement Award.
Georgios Gousios is a researcher by profession, a software engineer by education and a software enthusiast by passion. Currently, he is working on his PhD thesis at the Athens University of Economics and Business, Greece. His research interests include virtual machines, operating systems, software engineering and software quality. He holds an MSc with distinction from the University of Manchester, UK.
Gousios has contributed code to various OSS projects and also worked in various R&D projects in both academic and commercial settings. He is currently the project manager, design authority and core development team member for SQO-OSS, a multinational EU-funded research project, expanding in 5 countries, being developed by 40 people and consisting of 65k lines of code. The project investigates novel ways for evaluating software quality.
In his academic life, Gousios has published 10 technical papers in referred conferences and journals. One of those, the article "A comparison of dynamic web content technologies of the Apache web server" won the best paper award at the 2002 System Administration and Networking Conference, being the first comprehensive study in its field.
Gousios is a member of the ACM, the IEEE, the Usenix Association and the Technical Chamber of Greece.
Inside This Book(Learn More)
Most Helpful Customer Reviews on Amazon.com (beta)
However, three chapters are excellent and make up for about a third of the forty dollars that I spent on this book. First, the preface and its discussion of architectural principles and properties is one of the best discussions of those topics. I have not seen that elsewhere. Chapter 1 ("what is architecture") and chapter 2 (a contrast between a system with a messy architecture with another with a thoughtfully designed one) are excellent. Unfortunately, all this interesting content stops on page 43 and very little worth the time reading the remaining 374 pages!
I hope that the publisher would come out with a shrunk down 72 pager condensed version of this book that is more like the substance I've come to expect from O'Rielly books.
This book is best checked out at your local library. I would instead recommend buying Jan Bosch's older but still unbeatable "Design and Use of Software Architectures" book.
The books starts with a "What is architecture" article (AMAZING! almost any book about architecture has that! can't we finally agree and deprecate this discussion?!)
Other articles arrange by topics: enterprise (server) architecture, client architecture, etc...
What really annoyed me while reading this book, and lowered two stars for it, is the repeating rhythm of the articles:
They start slow and punctuality (That's ok), getting warmer, getting into a really interesting point and puff - suddenly the article ends.
It's like making many preparations (warming the oven, preparing raw materials), putting the cake in, but closing it over before the cake is done. Shame!
Overall I would buy this book to get leads to new areas, not to really cover it.
Rather than being a boring book , Beautiful Architecture, is a well-written and very informative collection of interesting example from real life that should be known by anyone with interest in this field. Even if the systems presented in the book are on different platforms, using totally different technologies, and developed in different periods of time, all share some important aspects related to the architecture.
The book is divided in five parts. The first part is a general presentation on what is an architecture and an example of two software systems, very similar from many aspects like size, appliance, programming language, operating system and even so, one was aborted and one is used in our days. The first one was abandoned mainly because the lake of the design from the binging, hard to add new features, and the amount of effort required to rework, refactor, and correct the problems with the code structure had become prohibitive. The second one, is still in production, still being extended and changed daily. The actual architecture for the second one it is remarkably similar to the original design, with a few notable changes, and a lot more experience to prove the design was right.
The second part is about the "Enterprise Application Architecture". In this part is 4 systems are presented: the scaling problem faced in case of a massively multiplayer online games, the grow of a system for image storage and retrieval for retail offerings of portraits, an example resource-oriented system in which is presented the importance of Web Services in an enterprise application, and in the last chapter the Facebook application system is presented, and how the Facebook Platform was created.
Part three is about System Architecture. It starts by presenting the Xen virtualization platform that has grown from an academic research effort to major open source project. A large part of its success is due to it being released as open source. Then a fault tolerance system is presented, by reviewing the Tandem Operating System designed between 1974 and 1976 and shipped between 1976 and 1982. Chapter nine presents JPC, an x86 PC Emulator in Pure Java. Another Java implementation is presented in chapter ten: Jikes RVM is a successful research virtual machine, providing performance close to the state-of-the-art in a flexible and easy-to-extend manner.
In the fourth part, the End-User Application Architectures are presented. The GNU Emacs text editor architecture is described, and also a comparison with other software like Eclipse and Firefox is provided. Then the KDE project, one of the biggest Free Software, is presented in chapter twelve.
Languages and Architecture are presented in the last part of the book. This parts starts with a comparison between functional and object-oriented programming, continue with some examples of object-oriented programming and ends with some thoughts on beautiful buildings with problems.
From the beginning of a project is very important to have a clear view of the architecture and technologies used, because after some iterations is really hard, or in some situation impossible, to change the entire architectures and in some cases ignoring the architecture can lead to a project fail. A good conclusion for the book would be that: "An architecture influences almost everything that comes into contact with it, determining the health of the codebase and also the health of the surrounding areas."
In order to really grasp the full experience from the book you will have to have very deep and low level of knowledge of several disciplines which is unlikely (but not impossible) for the majority of the readers.
In my overall opinion the book is a worthy read, the insight from experience is great and the introduction to some very important Open Source Projects can really prove useful.
One of the attractions of the books in this series, is the premise that you get to hear first-hand accounts, in an essay format, from the people behind some of the more interesting projects out there. So the book can be viewed as an opportunity to ask a bunch of innovative technologists the question: how did you build it?
On the back cover the book claims that the contributors cover notable and innovative software architectures. At first glance the table of contents looked pretty promising, for example "The architecture of the Facebook platform". However, after spending some time with the book and reading through 5 random chapters, it feels like there is just not enough substance for the book to achieve what most people are probably hoping to get out of the book: concrete blueprints or solid design patterns to build systems demonstrating desired characteristics.
For the first 45 or pages of the book, the essays tended to meander around the topics of general definition of architecture vs software design etc, and general experience of people working on some non-trivial projects. But somehow the conversation always feels more academic than practical. So you kind of feel like you are sitting on a plane waiting for it to disengage from the gate and move towards the tarmac. And given the fact that this book is supposed to be about "beautiful" architectures, I am not at all sure why we need to spend time reading about "The Messy Metropolis". Given the title and general back cover description of the book I was expecting the narratives to be more specific and more parallels drawn with real-world systems that people interested in this book could be building.
The chapter "Architecting for Scale" by Jim Waldo, was also a bit underwhelming. We basically get a pretty high level overview of a system that was never really tested in the field, was not thoroughly bench-marked, and is addressing a fairly narrow problem domain of online gaming. Although some interesting ideas are presented, you have a hard time agreeing that this is necessarily beautiful because it does not seem that the system is proven to successfully solve their scalability goals. The chapter about facebook platform also failed to describe the thinking process and design trade-offs, you get a description of general building blocks but you don't really get any aha moments.
I did enjoy "Software Architecture: Object-Oriented versus Functional" by Bertrand Meyer, however one might argue that the book might have been better off focusing on systems architecture and concrete examples of real-world projects as opposed to discussion of type systems and other programming language esoterica, especially when the Meyer makes it clear that he has not actually worked in finance nor released production systems dealing with financial contracts.
I think this book is decent read on your e-book reader, but if you have limited bookshelf space and want to keep it filled with true classics, this book is not it.
Look for similar items by category
- Books > Computers & Technology > Computer Science > Software Engineering > Design Tools & Techniques
- Books > Computers & Technology > Computer Science > Systems Analysis & Design
- Books > Computers & Technology > Hardware > Design & Architecture
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Software Development
- Books > Professional & Technical > Architecture