Abstract
The purpose of this paper is to build the foundation for software architect-
ure. We first develop an intuition for software architecture by appealing to
several well-established architectural disciplines. On the basis of this
intuition, we present a model of software architecture that consists of
three components: elements, form, and rationale. Elements are either data
, processing or connecting elements. Form is defined in terms of the
properties of, and the relationships among, the elements-that is, the
constraints of the elements. The rationale provides the underlying basis
for the architecture in terms of the system constraints, which most often
derive from the system requirements. We discuss the components of the model
in the context of both architectures and architectural styles and present an
extende example to illustrate some important architectural and style
considerations. We conclude by presenting some of the benefits to our
approach to software architecture, summarizing our contributions, and
relating our approach to other current work