Software Architecture Book

I am currently writing a book on software architecture. I have signed a contract with Alan Apt at Taylor and Francis, with a due date of January 2010. With some luck and a lot of hard work, maybe it will be done sooner.

My intention is to explain how architecture concepts are essential for understanding large complex systems, but that you can do “just enough” architecture modeling — architecture need not mean Big Design Up Front.

You can download the current draft below by clicking on the appropriate chapter links below. The Frontmatter chapter has the table of contents and preface. As always, comments or questions on any of this would be appreciated.

-George

Frontmatter
Part I: Narrative Part II: Reference
1. Introduction 10. Concepts
2. Example: Media Player 11. Elements
3. Risk-Centric Architecture 12. Relationships
4. Architecture Modeling 13. Analyses
5. Working with Models 14. Models
6. Working with Code 15. Architectural styles
7. Architecture Technologies 16. Risks and Techniques
8. Conclusion 17. Using UML as an ADL

Software Architecture Courses at Rhino Research

Our perspective on software architecture

While there is vigorous debate about which process to follow — including Agile and high-ceremony processes — there is a general consensus about the core concepts of software architecture and how to model them.

Software architects build and analyze models to understand systems and reduce risk, and use those models to create and evolve implementations. Since software development has diverse risks, architects build various kinds of models. They follow a divide-and-conquer strategy, where they “divide” by producing models with a limited view of the system, allowing them to comprehend and reason about a particular part or quality of the system. In order to “conquer,” however, they must understand how all the models fit back together to build a system.

So we need ways to make it easier to understand individual parts of a model and relate the parts with the whole.

Our courses explain how to use models of information, behavior, and components to express business problems and solutions, with the focus on interconnections between the models. Conceptual and concrete models are related to each other using refinement. Views narrow the details present in the full model, allowing analysis and improved comprehension.

The courses give participants the conceptual tools to help them divide models as needed, as well as fit them back together (“conquer” them). Course participants will leave with a coherent mental framework of software architecture, helping them to reconcile business needs with implementation issues, identify risks, and successfully design systems.

Courses

We offer a set of interlocking courses designed to suit your needs. The shorter the course, the more general the intended audience. Combining the two 3-day courses yields the same content as the 5-day course. Splitting the training can be beneficial because participants have an opportunity to try out the new techniques (and generate questions) before the advanced material.

Course Length % Lecture Audience Content
Dine and Discover 90 minutes 100% Fully general What and why of software architecture
Essence of Software Architecture 1 day 90% Mostly general Dine and Discover + a tour of how it is done
Introduction to Software Architecture 3 day 60% Engineers Essence + simplified how-to + exercises
Advanced Software Architecture 3 day 60% Engineers Adds realistic wrinkles + advanced techniques
Software Architecture 5 day 60% Engineers Combined Introduction + Advanced courses

The lectures in the 3- and 5-day courses contain a running example and comprise about 60% of course time. The remaining 40% are in-depth exercises designed to reinforce key concepts.

Syndicate content