Introduction to the Special Issue on Software Architecture

A critical aspect of the design for any large software system is its gross structure represented as a high-level organization of computational elements and interactions between those elements. Broadly speaking, this is the software architectural level of design 11, 22. The structure of software has long been recognized as an important issue of concern e.g., 33, 44. However, recently software architecture has begun to emerge as an explicit eld of study for software engineering practitioners and researchers. Evidence of this trend is apparent in a large body of recent w ork in areas such as module interface languages, domain speciic architectures, architectural description languages, design patterns and handbooks, formal underpinnings for architectural design, and architectural design environments. What exactly do we mean by the term software archi-tecture?" As one might expect of a eld that has only recently emerged as an explicit focus for research and development , there is currently no universally-accepted definition. Moreover, if we look at the common uses of the term architecture" in software, we nd that it is used in quite diierent w a ys, often making it diicult to understand what aspect is being addressed. Among the various uses are a the architecture of a particular system, as in the architecture of this system consists of the following components ," b an architectural style, as in this system adopts a client-server architecture," and c the general study of architecture, as in the papers in this journal are about architecture." Within software engineering, most uses of the term software architecture" focus on the rst of these interpretations. Typical of these is the following deenition which was developed in a a software architecture discussion group at the SEI in 1994. The structure of the components of a pro-grammsystem, their interrelationships, and principles and guidelines governing their design and evolution over time. As deenitions go, this is not a bad starting point. But deenitions such as this tell only a small part of the story. More important than such explicit deenitions, is the locus of eeort in research and development that implicitly has come to deene the eld of software architecture. To clarify the nature of this eeort it is helpful to observe that the recent emergence of interest in software architecture has been prompted by t w o distinct trends. The rst is the recognition that over the years designers have begun to develop a shared …