next up previous
Next: 2.2 Architectural Description Languages Up: 2 Position Previous: 2 Position

2.1 Software Architecture

The term Software Architecture (SA) has been recently adopted referring to the level of software design in which the system is represented as a collection of computational and data elements, or components, interconnected in certain way. From this point of view, we can consider SA as the level where the architecture and structural properties of software systems are described. SA focuses in those aspects of design and development which cannot be suitably treated inside the components that form the system [SG95]. Among them are included those which derive from the structure of the system, i.e. from the way in which its different components are combined.

The significance of explicit architectural specifications of software systems is twofold. First, they raise the level of abstraction, facilitating the description and comprehension of complex systems. Second, they increase reuse of both architectures and components. However, effective reuse of a certain architecture often requires that some of its components can be removed, replaced, and reconfigured without perturbing other parts of the application [NM95].

Although object-orientation can be applied to all levels of software design, in SA the more general term component-oriented is preferred, allowing to consider not only objects but architectures, interaction mechanisms and design patterns as first-class concepts of a software architecture [Nie95]. However, most concepts coming from the object-oriented paradigm can be almost directly applied to SA. In particular, we are interested the application of inheritance, parameterization and polymorphism to the specification of software architectures.


next up previous
Next: 2.2 Architectural Description Languages Up: 2 Position Previous: 2 Position

Carlos Canal, Ernesto Pimentel, and Jose M. Troya
Sept. 2, 1997