Coyright 1999 Lars Bratthall, Per Runeson 1 A Taxonomy of Orthogonal Properties of Software Architectures Lars Bratthall, Per Runeson Department of Communication Systems, Lund University, Sweden, (lars.bratthall | per.runeson)@tts.lth.se Abstract. There are several suggestions regarding the definition of the term software architecture. Yet dis- cussions concerning the subject are ambiguous. This leads to unclear discussions and slow scientific progress. This paper suggests a coherent set of properties - a Taxonomy of Orthogonal Properties of Soft- ware Architecture (TOPSA) - that enables more precise communication within the software architecture domain. The TOPSA has been empirically validated by using it during an industrial development project. The paper shows some uses of the TOPSA in education and system development. It is concluded that the TOPSA is applicable for a wide range of uses. The TOPSA sharpens the conceptual tools available in the domain, resulting in more precise preservation, retrieval and use of knowledge within the software architec- ture domain. 1. Introduction Several authors have defined software architecture, although differently [4, 5, 29]. Models that illustrate types/ views of software architecture have been suggested by [4, 22, 30], yet the terms and the views are used differ- ently by different authors. This results in studies being hard to compare, and confusion in communication illus- trates the need for further investigation into the subject. For the practitioner, it is a challenge to know which views and models should be made when. An example of the confusion is apparent when, for example [4], states that a software architecture is com- pletely visible in code, while [15] states that a software architecture is an interpretation, not entirely visible in code. Depending on what view of software architecture is being discussed, both may be correct. Another example comes from the performance computation domain; object oriented techniques usually considered “good” cannot be used in the code due to performance constraints. Creating large amounts of objects during execution may be even less permissible. However, during the analysis phase, the software archi- tecture may use object-oriented constructs, that are not retained in actual code. In this paper, two types of soft- ware architecture are discussed: Conceptual software architectures during domain analysis, and realizational software architecture during design. A third example is the use of the term “abstraction level”. Does this refer to the aggregation level of compo- nents, or to the conceptual level of the architecture? This paper attempts to relate both of these concepts into a coherent set. The ambiguity is a problem, since it through linguistic determinism [14] affects the human ability to describe entities related to software architecture, as well as it restricts how humans can reason about them. In order to facilitate discussions within the software architecture domain, a set of properties of software architec- ture is suggested. The set of properties has the following characteristics: 1. Orthogonal definitions. The definitions given within the set are orthogonal. Thus the properties defined can be arbitrarily combined. Without orthogonality, changing one property would automatically change other properties. 2. Process independent. It is possible to use the set for discussing both forward and reverse-engineering proc- esses. 3. Representation independent. The set neither assumes nor dictates any particular representation. In section 2 a Taxonomy of Orthogonal Properties of Software Architecture (TOPSA) is introduced. In sections 3 and 4, a number of uses of the TOPSA for research, education and development purposes are dem- onstrated. Finally, some related work are discussed, and some further work is outlined. 2. A Taxonomy of Orthogonal Software Architecture Properties 2.1 Introduction There are several definitions of software architecture, for example [4, ,5, 29]. The basis for the TOPSA is the definition of software architecture given in [4]: “The software architecture of a program or computing system