Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have a couple of developers at my company who wish to move from programming into architecture. What are the best books out there on the theory and practice of software architecture? Include a cover picture if you can.

Feel free to include general books, and also books that relate to a specific technology.

share

locked by Thomas Owens Jun 5 '13 at 13:33

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

closed as not constructive by Mark Trapp Dec 9 '11 at 18:41

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

3  
It's not a direct answer, so just a comment. The best (and really only) way to learn to be an architect is from another architect, preferably a master architect. Software Architecture and Engineering in general is still in a pre-industrialized state from the perspective of other engineering disciplines. We still do apprentice->journeyman->master type advancement. –  JP Alioto Dec 8 '10 at 18:00

20 Answers 20

up vote 15 down vote accepted

alt text

(link to the book)

This is a pretty good book, although it deals not with software architecture in general, but with architecture of business applications.

share

alt text

But, I would encourage these developers not to move into architecture and totally forget about programming. If they do, they won't have any respect from programmers and they won't be properly equipped to make architectural decisions.

share

The commonly cited/referenced book on software architectures, and the book used when I took the Software Architecture course at my university is Software Architecture in Practice (2nd Edition) by Len Bass, Paul Clements, and Rick Kazman.

At least one professor who teaches the course has switched the textbook to Software Systems Architecture by Nick Rozanski and Eoin Woods, but I can't vouch for the quality or content of that book. According to Sergio Acosta (in the comments), Rozanski's book is newer, based on the work of Bass, and he considers it easier to read. I'm rarely disappointed by books used in the software engineering program.

share
2  
I've used both (Bass and Rozanski). Bass' was the architectural bible for a long time, but Rozanski's is newer and more up to date; it is easier to read and heavily based on Bass'. I highly recommend starting with Rozanski's. –  Sergio Acosta Dec 5 '10 at 22:42
1  
+1 the Bass book was a good read when I started getting into architecture. It is a bit dry but it gives you an idea of the kinds of things you should be thinking about. –  RationalGeek Sep 27 '11 at 12:18

Design Patterns

A must read for all programmers:

http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612

share
2  
Obsolete book now. Most of the patterns of the Gang of Four are became so misused that are almost anti-patterns now. Like singleton and abstract factory. –  Uberto Dec 7 '10 at 14:31
1  
@Uberto That's why everyone should read this book. It explains why and how to use each pattern along with when you probably should consider something else. If more people read the entire pattern entry, I think a lot of those problems would go away. –  Thomas Owens Dec 7 '10 at 14:35

alt text

this would be my #2 choice. Good book on practices and good code. A bit pedantic sometimes.

share

alt text

This is my number #1 choice right now. Best book about how to build (grow) application now.

share

I've found volumes 1 and 4 of Pattern-Oriented Software Architecture to be very useful. I'm sure the other volumes are good too, I just haven't read them so I can't recommend them.

share

Refactoring, Martin Fowler

One of the best programming books overall.

share

I wont't cite ones that have already been by other, so I'll add this one:

Concepts Techniques and Models of Computer Programming, by peter Van Roy and Seif Haridi

Concepts Techniques and Models of Computer Programming

The obvious problem is that it used the now (sort-of) defunct Mozart Programming System and the amazing Oz programming language. Which then spawned other interesting experiments like the Alice ML programming language.

It is, however, an amazing book, both to learn computer programming and to get a deep understanding of CS concepts and a good overview of architecture concepts without using buzzwords.

A bit verbose at times, but very well written.

Maybe more of a CS theory book in the end than an enterprise architecture book, but I find its teachings very valuable to apply to industry software.

share

Documenting Software Architecture: Views and Beyond by Clements et al. from the Software Engineering Institute.

Cover of Documenting Software Architecture

share

An interesting book is The Architecture of Open Source Applications

Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's successes.

This book's goal is to change that. In it, the authors of twenty-five open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to this book provide unique insights into how they think

share

Microsoft have some really good stuff on this. For a start they have a great free book available here:

http://msdn.microsoft.com/en-us/library/ff650706.aspx

Plus a lot of their white papers on design are here:

http://msdn.microsoft.com/en-us/practices/bb190351

You probably want to read up on design patterns:

http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612

And then there's the classics - mythical man month, code complete, pragmatic programmer etc. A bit of googling will help you find the good books.

share

try this small book.

Software Architecture for Developers - The Book A practical and pragmatic guide to software architecture

This book is a collection of essays that together form a practical and pragmatic guide to software architecture.

  1. What is software architecture?

  2. What is the role of a software architect?

  3. How do you define software architecture?

  4. How do you share software architecture?

  5. How do you deliver software architecture?

share

I recommend Expert One-on-One J2EE Design and Development. It's a very good book about J2EE, and is the theory basement of Spring Framework.

share

The question you're asking is very untangible, in a way. Software architecture is different things and software architects are a very diverse bunch.

A few notes, though:

"Clean Code" mentioned above is one of the best books I've ever read on programming. But it is certainly not a book about architecture. Mandatory reading for developers, yes, but doesn't give much insight into how the larger stuff fits together, imo.

"PoEAA" by Fowler is a good book, but as someone else said, kind of old now, and many of the patterns presented have been obsoleted several years ago.

The DDD book by Eric Evans is a very solid and very inspiring book about software construction and customer collaboration - valuable skills for architects, but good for developers also.

share

What I'd suggest that, please go and read Code Complete 2 first. This will help you to shape your thoughts and find the best way of doing things.

In the architecture perspective, it's good start with GOF or Head First Design Patterns.

Patterns of Enterprise Application Architecture is an excellent book

share

Not the answer you're looking for? Browse other questions tagged or ask your own question.