Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Essential Software Architecture Hardcover – April 20, 2006
There is a newer edition of this item:
- Print length304 pages
- LanguageEnglish
- PublisherSpringer
- Publication dateApril 20, 2006
- Dimensions9.21 x 0.67 x 6.14 inches
- ISBN-103540287132
- ISBN-13978-3540287131
Product details
- Publisher : Springer; First Edition (April 20, 2006)
- Language : English
- Hardcover : 304 pages
- ISBN-10 : 3540287132
- ISBN-13 : 978-3540287131
- Item Weight : 1.33 pounds
- Dimensions : 9.21 x 0.67 x 6.14 inches
- Best Sellers Rank: #7,861,125 in Books (See Top 100 in Books)
- #1,719 in Web Services
- #28,956 in Computer Software (Books)
- #62,935 in Computer Programming (Books)
- Customer Reviews:
About the author

Ian Gorton is the director of computer science master’s programs and a professor of the practice at the Khoury College of Computer Sciences at Northeastern University’s Seattle campus. He is passionate about analyzing and designing complex, high-performance distributed systems and embodying design and architecture principles in methods and tools that can be exploited by architects in other projects.
Before joining Northeastern in 2015, he was a senior member of the technical staff at the Carnegie Mellon University Software Engineering Institute. He had several projects on the principles of designing massively scalable software architectures for big data applications and building knowledge bases both manually and using machine learning to support engineering tasks. Before this, Gorton was a laboratory fellow in computational sciences and math at Pacific Northwest National Laboratory (PNNL). He managed the Data Intensive Scientific Computing research group and was the chief architect for PNNL’s Data Intensive Computing Initiative. He was also PI for multiple projects in environmental modeling, carbon capture and sequestration, and bioinformatics. This experience has led to a particular interest in the design of large-scale, highly customizable cyber-infrastructures for scientific research.
Gorton is a senior member of the IEEE Computer Society and a Fellow of the Australian Computer Society. Until July 2006, he led the software architecture R&D at National ICT Australia in Sydney, Australia, and previously worked at CSIRO, IBM, Microsoft, and in academia in Australia. A complete list of his publications and citations can be found on Google Scholar and in dlbp.
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on Amazon-
Top reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
One point of confusion emerged in our conversation -- the book appears to have been originally titled "Essential Software Engineering", and the author refers to it as such. Though I feel that in it's present form it would be quite inadequate as an engineering book, as an architecture book it is actually pretty damn good.
Much of the book is spent explaining different terminology well enough for the reader to be able to hold their own in conversation, but if everyone read the book (and did not do further research) there wouldn't be much discussion to be had. It's definitely an introductory text, not a primary source.
One thing that grated on me is that the book is mostly in nested outline form! The concepts are *well described*, but not too well contrasted. The format does not do a very good job of relating the concepts to one another -- they are presented serially as if in PowerPoint. You'd get a better understanding in a lot of ways by browsing the related Wikipedia articles, simply because hypertext is better suited for explaining multidimensional things (though hypertext obviously does not work on paper). A lot of the subheadings throughout the book are short & shallow -- but the alternative of longer & shallower would be clearly worse :)
The case study is discussed far too abstractly: he enumerates the functional and non-functional requirements, and gives an overview of the chosen architecture at too high of a level -- but does fairly little to justify the choices made. He does not really discuss the various downsides to the chosen architecture, nor does he discuss why other architectures were not chosen. Absolutely no discussion is made of feedback from the 'architect' to the 'client' about weighing the potential usefulness of the dictated features -- especially those which hinder the use of architectures better suited to the problem domain.
A major disappointment that stood out for me was that he didn't really address the *culture* of Big Design Up Front -- where all your mistakes are designed, diagrammed in UML, and ossified well before you start coding. I find that architecture should be something that is put off right up until the point when a qualitative decision about how things should work is no longer avoidable. My favorite definition of Software Architecture is from the original c2 wiki:
> "the set of decisions that we have to live with for the life
> of the project or system because it will be too expensive to
> change our implementation later if we change our minds"
Most of the technologies are related to the use of middleware to interface a companies' homegrown software and customized versions of commercial software together with commercial backend software. Because of this the primary readership I see for this book is in department-level managers in charge of dealing with the nightmare of deploying 'Enterprise Software' for a large business. I can see this book actually being quite helpful to them, particularly if they do not have a background in Computer Science.
If you're a code monkey and not a decision maker, this book doesn't really contain anything that could help you deal with your task directly -- it might even demoralize you by helping you realize how poorly/over-architected the system you toil on is. If you have any agency it might help you manipulate the managers below and above you into seeing things your way!
If you're an academic, it's probably only really useful for 'gawking at the natives' over in industry. Much of the chafing that I experienced with this book is related to the fact that my course spent 3 credit-hours a week on it for ten weeks -- it did not hold up well at all under our drawn-out usage of it. We were not at all the right audience for it.
Reading through it again now it holds up a lot better, with a lot more mindfulness evident in the text than on the first drudgery-filled pass as a group. Thinking about it now I realize how exceptionally mindful it is for a book in it's field! I would not recommend it's use in an academic Computer Science course, but it would probably work pretty well as a text in courses on Business, Information Systems, or Software Engineering; especially in a coursework-based masters program.
The second edition promises to dismiss most of my criticisms, especially in regards to the case study.
The core chapters of the book are the first 6 chapters, which provided a strong foundation of knowledge. Chapter 1 introduces the topic by discussing architecture definition, abstraction, views and non-functional requirements plus others. Chapter 2 introduces the study study utilized throughout the book. I got alot out of chapters 3 & 4. Chapter 3 discusses software quality attributes that an architecture should take into consideration. Quality attribute are characteristics of an architecture design rather than capability. Quality attributes are such items as scalability, modifiability, security, performance, portability, etc. Chapter 4 discusses architecture design patterns and technologies applicable to architecture design. Chapter 5 discusses development cycle for defining your software architecture. Chapter 6 discusses how to document the architecture design.
I thought chapter 6 was a bit light in discussing architecture documentation. In the course where this book was the textbook, there was much time spent discussing views and viewpoints. I think chapter 6 should have delved deeper into the view discussion.
I thought the author did an excellent job with this book. There are many different types of software architectures that can be built. Therefore, readers would becoming various technological perspectives in reading this book. I felt he discussed the topics in the chapters in a way that was applicable to this wide audience.
I feel that this is an incredibly useful resource for those who have to design systems from the "ground up". It has several best practices and examples of where things can go wrong.
I feel this is well worth a read.
As an introductory textbook it is very useful for (to be) ICT professionals and students.