10 must to read books on software architecture

10
© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved. 10 must to read books on software architecture Ganesh Samarthyam Chaitanya KVNK Are you a developer or a lead looking for getting a boost in your career and get promoted to an architect? Does software architecture interest you and want to learn more on this topic? In this article, we provide you a list of 10 must to read books on software architecture. 1) “Software Architecture: Foundations, Theory, and Practice”, Richard N. Taylor, Nenad Medvidović, and Eric M. Dashofy, John Wiley and Sons, 2009. See: http://amzn.com/0470167742 We were quite impressed by the rigor with which the topics were covered and the depth of treatment of the topics. In our opinion this is the best textbook available in the world today for students to learn about software architecture. However, if you don’t like books written in “academic” style, this book is not for you. [Note: Slides available online here - www.softwarearchitecturebook.com/svn/main/slides/ppt/] 2) “Pattern-Oriented Software Architecture Volume 1: A System of Patterns”, Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal, Addison-Wesley, 1996. http://amzn.com/0471958697

Upload: ganesh-samarthyam

Post on 16-Jul-2015

549 views

Category:

Software


4 download

TRANSCRIPT

Page 1: 10 must to read books on software architecture

© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved.

10 must to read books on software architecture Ganesh Samarthyam Chaitanya KVNK Are you a developer or a lead looking for getting a boost in your career and get promoted to an architect? Does software architecture interest you and want to learn more on this topic? In this article, we provide you a list of 10 must to read books on software architecture.

1) “Software Architecture: Foundations, Theory, and Practice”, Richard N. Taylor, Nenad Medvidović, and Eric M. Dashofy, John Wiley and Sons, 2009. See: http://amzn.com/0470167742

We were quite impressed by the rigor with which the topics were covered and the depth of treatment of the topics. In our opinion this is the best textbook available in the world today for students to learn about software architecture. However, if you don’t like books written in “academic” style, this book is not for you. [Note: Slides available online here - www.softwarearchitecturebook.com/svn/main/slides/ppt/]

2) “Pattern-Oriented Software Architecture Volume 1: A System of Patterns”, Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal, Addison-Wesley, 1996. http://amzn.com/0471958697

Page 2: 10 must to read books on software architecture

© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved.

This is one of the earliest and best books on architectural patterns. It is only a surprise that this book is not as popular as the classic “Design Patterns” book. This book presents a catalog of architectural patterns with detailed discussion with examples, benefits and liabilities. This book is often referred to as POSA-I book because it is first in the series of books on patterns/styles.

Note that this book came out in 1996 and is not updated yet (to our knowledge), so you may find the examples to be outdated. Also, architectures for emerging topics such as cloud computing are not covered in this book. But books on patterns/styles are as relevant today as it was 20 years back, so we highly recommend reading this book.

3) Design Patterns: Elements of Reusable Object-Oriented Software, Erich

Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Addison-Wesley, 1995. http://amzn.com/0201633612 This is a book that architects and designers re-read because it condenses design knowledge in reusable patterns. Of course, it is dated – published in 1994 and not revised after that – but it is a timeless classic. Make sure you read it even if you don’t like design patterns. For example, we liked the beginning chapter – it helps us think at a deeper level about design in general and object oriented design in particular.

Page 3: 10 must to read books on software architecture

© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved.

4) Software Architecture in Practice (3rd Edition), Len Bass, Paul Clements, Rick Kazman, Addison Wesley, 2012. http://amzn.com/0321815734 This is perhaps the best book available for students and practitioners alike for learning software architecture. It focuses on key topics in software architectures: “ilities”, patterns/styles, documenting architectures, and evaluating architectures. However, we doubt if the phrase “in Practice” in the title accurately reflects the contents of the book!

Page 4: 10 must to read books on software architecture

© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved.

5) “Software Architecture for Developers”, Simon Brown, LeanPub, 2012.

https://leanpub.com/software-architecture-for-developers

If you like “no-nonsense” introduction to software architecture (especially useful if you are a programmer), this book is for you. This book provides a good overview of software architecture. What we like about this book: It is written in an easy-to-read style with practices that an architect can adopt in their regular work. You may be interested in going through the presentation available here (static.codingthearchitecture.com/presentations/software-architecture-for-developers.pdf) before deciding if you want to buy the book or not.

Page 5: 10 must to read books on software architecture

© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved.

6) “Essential Software Architecture”, Ian Gorton, Springer, 2006. http://amzn.com/3540287132

This book shares practical experiences in architecting enterprise IT systems. When reading this book, we realized that this book does not take a general perspective on software architecture. We felt that it is more relevant for architects working in Information Systems domain; if you are working in embedded systems or other specialized domains, you may perhaps gain a very little from it. Otherwise, it is an excellent and practical book on software architecture.

Page 6: 10 must to read books on software architecture

© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved.

7) Refactoring in Large Software Projects: Performing Complex Restructurings Successfully, Martin Lippert, Stephen Roock, Wiley, 2006. http://amzn.com/0470858923

Refactoring is an important topic for large software projects (especially in projects that follow Agile methodology) given the fact that

Page 7: 10 must to read books on software architecture

© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved.

architectures evolve with changing requirements. Refactoring can be performed at different scale or granularity. This book covers refactoring at a large scale and covers architectural smells. We don’t know why this book is not well-known, but we found it to be an excellent book, and highly recommend reading it.

8) Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives, 2nd Edition, Nick Rozanski, Eóin Woods, 2011. http://amzn.com/032171833X

Since this book is written by experienced/practicing architects, you will find it to be quite practical (though the book mixes quite a bit of theory). The book emphasizes on working with stakeholders, and using viewpoints and perspectives. Read this if you are looking for gaining an in-depth understanding of working with stakeholders and using viewpoints and perspectives. However, warned: with the focus on viewpoints and perspectives, many other important topics in software architectures (e.g., NFRs, styles) are not covered well. Also it is a bit voluminous, so you need patience if you want to complete reading this book.

Page 8: 10 must to read books on software architecture

© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved.

9) Patterns of Enterprise Application Architecture, Martin Fowler, Addison-Wesley Professional, 2002. http://amzn.com/0321127420

This book is strictly for software professionals entrustrued with building enterprise applications. It covers patterns related to domain logic, database mapping and access, web presentation, concurrency, etc. Considering the vastness of the topic, Fowler has done an amazing job in making the contents clear through examples makes the content pretty clear. He also guides us on choosing from a vast number of different types of patterns available (structural, web presentation, behavioral, domain logic, etc.). In a nutshell: This book does for enterprise application development in comparison to what GoF (Gang of Four) did for software development in general. We strongly recommend this to you if you are involve in developing enterprise applications.

10) 12 Essential Skills for Software Architects, Dave Hendricksen, Addison-Wesley Professional, 2011. http://amzn.com/0321717295

Page 9: 10 must to read books on software architecture

© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved.

Having only techinical skills isn’t enough for an architect – softskills (in addition to business skills and domain knowledge) are equally important to live effectively as an architect. This book presents a lucid and detaied discussion on 12 specific skills required for an architect. If you are a developer and aspire to become an architect, you’ll find this fun-to-read book useful to hone your non-technical skills.

Note that this list is not in any prioritized order – in specific, the 1st entry in this list does not mean it is the best book on this subject. Of course, this book list is our take and you may think “why my favorite book on software architecture is missing in this list?” If so, please drop us a mail with the title of the book with short discussion on why it should be included in this list.

Title (with URL) Author(s) Publisher & Year

1. Software Architecture: Foundations, Theory, and Practice

Richard N. Taylor, Nenad Medvidović, and Eric M. Dashofy

John Wiley and Sons, 2009

2. Pattern-Oriented Software Architecture Volume 1: A System of Patterns

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal

Addison-Wesley, 1996

3. Design Patterns: Elements of Reusable Erich Gamma, Addison-

Page 10: 10 must to read books on software architecture

© 2014-15. Ganesh Samarthyam and Chaitanya KVNK. All Rights Reserved.

Object-Oriented Software Richard Helm, Ralph Johnson, and John Vlissides

Wesley, 1995

4. Software Architecture in Practice (3rd Edition)

Len Bass, Paul Clements, Rick Kazman

Addison Wesley, 2012

5. Software Architecture for Developers Simon Brown LeanPub, 2012

6. Essential Software Architecture Ian Gorton Springer, 2006

7. Refactoring in Large Software Projects: Performing Complex Restructurings Successfully

Martin Lippert, Stephen Roock Wiley, 2006

8.

Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives (2nd Edition)

Nick Rozanski, Eóin Woods

Addison-Wesley, 2011

9. Patterns of Enterprise Application Architecture Martin Fowler

Addison-Wesley, 2002

10. 12 Essential Skills for Software Architects Dave Hendricksen

Addison-Wesley, 2011

About the authors: Ganesh Samarthyam has 12+ years of working experience in IT industry. He is currently a freelance corporate trainer & consultant based in Bangalore. He worked for Siemens (Corporate Research and Technologies, Bangalore) in Software Architecture and Development team for the last 6+ years. Before Siemens, he worked in Hewlett-Packard’s C++ compiler team, Bangalore for 4.5 years. He also served as member of ANSI/ISO C++ standardization committee (JTC1/SC22/WG21) from 2005 to 2007 representing HP. He has IEEE’s CSDP(Certified Software Development Professional) and SECI (Software Engineering Certified Instructor) certifications. He has conducted many SCP, CSDA, and CSDP trainings representing IEEE. He is one of the five course material contributors to IEEE’s SWEBOK Certificate Program (SCP). His latest book is “Refactoring for Software Design Smells: Managing Technical Debt” by Morgan Kaufmann/Elsevier (published in November 2014). For more information, visit his book website: http://www.designsmells.com Chaitanya KVNK has 9 years of experience in the IT industry. He is a consultant in Industrial Automation division of Siemens Technology and Services (STS) Pvt. LTd., India. You can reach him at [email protected]