As a professional discipline, software architecture has at least a dozen schools of thought. Some of the major schools of thought include:
Alternative architecture approaches share concepts and principles, but their terminologies differ greatly. Each architecture school is relatively isolated from the others. In the literature of any given school, perhaps one or two other schools are acknowledged, however briefly. None of the schools appear to make any significant use of the results of the others.
Since the terminology between these groups varies significantly, communication is difficult, especially between practitioners using different architecture approaches. Upon further study, we find that the goals of each school are quite similar, and each school has some unique value to offer. In addition to these schools, there are many vendor-driven approaches that are tied to specific product lines, such as Netscape ONE, Sun Enterprise Java Beans, and Microsoft Back Office. In fact, every vendor appears to have a unique architectural vision for the future founded upon their own product lines.
We have found in practice that many vendors have minimal understanding of application architecture. Thus, we focus this column on those approaches which consider key application drivers with appropriate product support for underlying capabilities.
Here is a brief tour of the major schools of software architecture thought.
Zachman Framework: Derived from IBM research and practice, the Zachman framework is a traditional architecture approach, i.e. it is decidedly non-OO. The Zachman Framework is a reference model comprising 30 architecture viewpoints. The reference model is a matrix, which intersects two paradigms: journalism (who, what, when, why, where, and how), and construction (planner, owner, builder, designer, subcontractor). Architects choose from among these viewpoints to specify a system architecture.
Open Distributed Processing: A formal standard from ISO and ITU (telecommunications), Open Distributed Processing (ODP) defines a five viewpoint reference model (enterprise, information, computational, engineering, and technology). ODP defines a comprehensive set of terminology, a conformance approach, and viewpoint correspondence rules for trace-ability. The product of seven years standards work, ODP is a recent adoption, that fully supports OO and component-based architecture. In fairness, we should note that ODP is our primary approach to software architecture.
Domain Analysis: A process for the systematic management of software reuse. Domain analysis transforms project-specific requirements into more general domain requirements for families of systems. The requirements then enable the identification of common capabilities which are used as the basis for horizontal frameworks and reusable software architectures. An important capability of this approach is the definition of robust software designs, that are relatively resistant to requirements and context changes.