Grady Booch IBM Fellow Podcast 4: The future of software architecture (4 min 15 sec) IBM software architect kit http://www.ibm.com/developerworks/architecture/kits/index.html This is part four of a four-part series on software architecture. In this installment ... In the last three podcasts, I've examined the nature of software architecture, the roles and responsibilities of the software architect, and ways of representing software architecture. In this segment, I'd like to take a look at some of the coming advances in software architecture. Now, in the software industry it's always difficult for us to predict the future because things change so rapidly. But one hint we can get toward the trajectory of these best practices is by looking toward the past. I would observe that the entire history of software engineering has been one of rising levels of abstraction. We've seen this in our languages, in our platforms, in our tools, and in our processes. In the past decade, perhaps one of the most interesting and important advances in software engineering has been the identification of the practice of design patterns. And by design patterns we mean, simply, a common solution to a common problem, and in object oriented-terms, often manifested as a society of classes that work together with one another. These practices of design patterns have woven themselves into most hyper-productive organizations. What we're seeing therefore as we move toward the future of software architectures, is a move toward the identification of architectural patterns, and here we're speaking of patterns that transcend small design patterns but involve systems and systems of systems. A corollary to this observation is that we're seeing the creation and codification of a variety of vertical-specific frameworks for certain industries. We've seen this in the automotive industry such as through Auto Tzar, in the medical electronics world, and in the financial world as well. And so what's happening is that organizations are beginning to rally around these kinds of architectural frameworks within an industry binding together to produce open standards with their former competitors and thereby making that market larger for them. And again, architecture is at the center of this. Another advance we're seeing in the software architecture space is a better understanding of the roles of design decisions within their influence on software architectures. This in turn is impacting the way in which organizations manage and govern software architectures. In the tool space, we're also seeing advances in the reverse engineering of architectural patterns. Architectures are important artifacts in the process of building a system. Often these architectures are accidental and sometimes intentional, and for the accidental ones it's important that we be able to reconstruct those design decisions from the as-built system. Herein we're seeing tooling going on which help us recover and therefor reason about some of these architectural decisions. Finally, and I think very important for our profession of software engineering, is the identification of the body of knowledge which the software architect must know. I alluded to this in an earlier podcast, but organizations such as the International Association of Software Architects and the Worldwide Institute of Software Architecture both represent a growing maturation in our industry whereby we can identify the roles and responsibilities of the practicing architect. As I also mentioned in one of my earlier podcasts, it's important to realize that every hyper-productive organization I've encountered -- every one of them -- seems to have within it the process of growing a software architecture through an incremental and iterative release of executables. I can't overstate enough the importance of architecture to these kinds of processes, and it's notably absent in those organizations that are less productive. This therefore ends my observation of software architecture. Architectures are important. They are essential to building quality systems.