Bell Labs Technical Journal July–September 1998 125 Software Architectures: An Introduction The complexity of industrial-strength computer- based systems has compelled system engineers to use higher levels of abstraction when addressing the issues of system design. It has also made the overall system organization—software architecture—an important aspect of system development. This has implied a sys- tematic approach to the engineering and application of architectures and has led to the rapid development of architecture technology. B. Boar has observed that a technology typically evolves from being a craft to an engineering discipline over time with the infusion of scientific theory and the need for broad application. 1 As a young discipline, the early architectural efforts were characteristic of the craft stage, during which a system architecture is cre- ated from scratch, relying on the designer’s personal experience, knowledge, and intuition. With the mass market involved, the architecture discipline has now reached the economics-driven commercial stage, charac- terized by the introduction of architectural standards, reusable reference architectures, and domain-specific software architectures. With more maturity and the presence of increased system complexity, software architecture is likely to assume the characteristics of a professional engineering discipline, characterized by underlying theory, architectural support tools, stan- dardized practices, licensed professionals, and a com- munity of shared expertise. Software architecture is principally concerned with the study of patterns of system organization, large-grained software components, their relation- ships, and the models of interaction between them. It addresses the overall system properties at high levels of abstraction and from multiple perspectives, such as structure, control, and data. Architectural designs also address important system characteristics, including scalability, overall performance, processing rates, and allocation of functionality to design elements. 2-4 For years, system engineers have used software architectures to describe the top-level design of com- puter-based systems. Typically informal, these descrip- tions include box-and-line diagrams representing system structure and often a free-form text clarifying the meaning of the diagrams and capturing some design rationale. Even being informal, such descrip- tions provide a critical first view of the solution and a starting point for determining whether a system can meet its essential requirements. They help developers construct the system; they also help management organize the entire project. Unfortunately, such archi- The DirSA Case Study: An Introduction to Software Architecture Technology Vassilka D. Kirova and Howard G. Kradjel This paper presents an introduction to the issues concerned with engineering and representation of software architecture. It discusses research ideas and techniques that facilitate architecture-based system construction and summarizes results from a case study conducted in Lucent Technologies. In this study, we used the generic architecture reference model (GARM) and the architecture specification technique (ASPECT) as means of performing architecture engineering and representation in an industrial project. The GARM-ASPECT method has provided a basis for analyses and a technique for building rigorous architectural specifications that yield practical archi- tectural solutions.