Formulations and Formalisms in Software Architecture

Authors: Mary Shaw and David Garlan

Invited for special volume of Lecture Notes in Computer Science, Computer Science Today: Recent Trends and Developments, Jan van Leeuwen (Ed), Springer-Verlag 1996, pp. 307-323.

Download the PostScript or PDF


Software architecture is the level of software design that addresses the overall structure and properties of software systems. It provides a focus for certain aspects of design and development that are not appropriately addressed within the constituent modules. Architectural design depends heavily on accurate specifications of subsystems and their interactions. These specifications must cover a wide variety of properties, so the specification notations and associated methods must be selected or developed to match the properties of interest. Unfortunately, the available formal methods are only a partial match for architectural needs, which entail description of structure, packaging, environmental assumptions, representation, and performance as well as functionality. A prerequisite for devising or selecting a formal method is sound understanding of what needs to be formalized. For software architecture, much of this understanding is arising through progressive codification, which begins with real-world examples and creates progressively more precise models that eventually support formalization. This paper explores the progressive codification of software architecture: the relation between emerging models and the selection, development, and use of formal systems.

Composable Software Systems Research Group in the School of Computer Science at Carnegie Mellon University.

[Last modified 11-Feb-1999.
Mail suggestions to the