IntroductionSoftware architecture is a topic of growing concern within both the academic and industrial communities. Despite the popularity of this topic, little attention focuses on methods for analyzing a software architecture to show that it satisfies certain properties. Software architectures are primarily motivated by software engineering considerations, or software quality factors, such as maintainability, portability, modularity and reusability. In this paper, we address architectural description and a method of analysis with respect to software quality. The method is demonstrated by means of a case study examining architectures for developing the user interface portion of interactive systems.Over the past decade, changes in the software architecture characterize the advances in support environments for the development of user interfaces. However, it is often difficult to assess a developer's claims of qualities inherent in a software architecture. Examples of such claims are:We have developed … user interface components that can be reconfigured with minimal effort. [20] Serpent … encourages the separation of software systems into user interface and "core" application portions, a separation which will decrease the cost of subsequent modifications to the system. [22] This Nephew UIMS/Application interface is better that [sic] traditional UIMS/Application interfaces from the modularity and code reusability point of views. [26] The difficulty in assessing the validity of these claims arises for two reasons. First, the various architectural descriptions do not use a common vocabulary. When people develop new architectures, they typically develop new terms to describe them, or use old terms in a new way. It is, therefore, difficult to compare these new architectures with existing ones-there is no level playing field. Second, it is often difficult to link architectural abstractions with system development concerns. Developers tend to concentrate on the functional features of their architectures, and seldom address the ways in which their architectures support quality concerns within the system development life cycle.The main goal of this paper, therefore, is to establish a method for describing and analyzing software architectures, called the Software Architecture Analysis Method (SAAM). Before analyzing an architecture, we must first have a way to provide a clear description of it which exposes its main features. We define three perspectives for understanding and describing architectures-functionality, structure and allocation. We also provide a simple language for describing the structural perspective. This language is important because it permits different architectures to be described consistently, forcing a common level of understanding for comparing different architectures.
Rick