32
votes

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.

1
  • 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, 2010 at 18:00

20 Answers 20

15
votes

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.

4
  • it was a good book when published, but I think most of the patterns there are not used very much in the industry. Not a bad book but for sure not one of the top 5 in my opinion
    – Uberto
    Dec 7, 2010 at 14:26
  • Although it's called "Enterprise Application Architecture", it's roughly on the same level as the GoF Design Patterns book, which is a class-level design rather than an application-level architecture.
    – Thomas Owens
    Dec 7, 2010 at 14:34
  • Ugh, I don't like this book. It will not help you become an architect.
    – JP Alioto
    Dec 8, 2010 at 17:54
  • The book is ok, but it's really only about enterprise applications. If you're doing any other kind of development (e.g. desktop, mobile, embedded) it's not very useful.
    – nikie
    Jun 28, 2011 at 8:33
16
votes

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.

11
votes

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.

2
  • 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. Dec 5, 2010 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. Sep 27, 2011 at 12:18
10
votes

Design Patterns

A must read for all programmers:

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

4
  • 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, 2010 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, 2010 at 14:35
  • I found that book very heavy to read and to understand. I suspect most of the people just pretend they read it and copy-paste the examples. So I won't suggest it as first book for a future architect. For sure it's important for a historical point of view of current sw architecture.
    – Uberto
    Dec 7, 2010 at 14:42
  • Does anyone else think that Groupthink is a huge disease in the software profession? If following gurus blindly (not what the book expected, but that which in fact happened) is where the profession is going, I think the software profession is doomed. I don't blame this book. I blame the people who read it, and started thinking that grokking pattern-fu could cover for their lack of care for other foundational practices of clean coding.
    – Warren P
    Apr 13, 2011 at 15:41
8
votes

97 Things Every Software Architect Should Know

enter image description here

2
  • Zach, did you read one? I was looking at it before, but its amazon reviews looked not so great.
    – DXM
    Jun 28, 2011 at 7:02
  • I've read chunks of it. I'm not sure if I read every essay but some of the ones I read were worth it.
    – Zachary K
    Jun 28, 2011 at 7:17
7
votes

alt text

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

3
  • I agree about it being pedantic, but the practices it advocates are much better than 2000 line functions.
    – riwalk
    Dec 8, 2010 at 18:24
  • Yes sure, the content is a very very good one.
    – Uberto
    Dec 9, 2010 at 20:28
  • This book is too low-level to be considered software architecture. Nov 25, 2011 at 10:21
6
votes

alt text

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

3
votes

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.

3
votes

Refactoring, Martin Fowler

One of the best programming books overall.

3
votes

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.

2
votes

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

2
votes

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.

2
votes

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?

1
  • The codingthearchitecture.com blog also has some excellent posts about the discipline of software architecture. Sep 27, 2011 at 12:20
1
vote

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.

1
vote

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.

1
vote

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

0

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