The Aspect-Oriented Software Architecture Design Portal

 Advanced Separation of Concerns at the Architecture Design Level
 Identifying and Specifying Early Aspects
 

Home
Software Architecture
AOSD
Architectural Aspects
Publications
Events
Related Links
AOSAD Project
E-Tutorial

Site Map
Search
Contact

Edited by:
Bedir Tekinerdogan

Definition Motivation Classification Synbad Escher

 

Classification of Software Architecture Design Methods

A number of design methods have been introduced to identify and compose the architectural components. As we have described in the section on 'What is a Method?',  every method includes a set of artifact types, heuristic rules, and a process for defining the order of the design activities. These architecture design methods differ in applying different artifact types, heuristic rules and process for designing the software architecture.

To reason about the software architecture design methods and to improve our understanding on these methods, we will classify these methods based on two criteria: (1) the source from which the architectural components are derived, and (2) the scope of the software architecture.

Classification based on Source for Architecture Components

The first classification criteria that we apply is the source from which the architectural components are derived. Based on this we make a distinction between the following architecture design methods:

Artifact-driven architecture design methods derive architecture components by grouping artifact descriptions of the method. Examples of artifact-driven architectural design approaches are the object-oriented analysis and design methods such as OMT. Hereby, the methods provide a set of artifact types such as class, attribute, inheritance etc. Each artifact type provides a description of the entities that need to be identified in the analysis and design phase. The identification is supported by a set of heuristic rules. For example, OMT provides the artifact type tentative class, for which the following heuristic rule is defined:

IF an entity in the requirement specification is relevant
THEN select it as a TENTATIVE CLASS. 

In these artifact-driven methods architectural components are mainly defined as groupings of a set of artifacts, that is to say, the source of the architecture components are the artifacts. 

Use-case driven architecture design methods, apply use cases as the primary artifacts for deriving the architectural abstractions. A use case is defined as a sequence of actions that the system provides for actors. Actors represent external roles with which the system must interact. The actors and the use cases together form the use case model. The Unified Process, for example, applies a use-case driven architecture design approach. Hereby, the informal requirement specification and the use case model together form the requirement specification. From the use case model the architecturally significant use cases are selected and use-case realizations are created that determine how the system internally performs the tasks in terms of collaborating objects and as such help to identify the artifacts such as classes. These are later grouped as packages that basically define the architectural components. Similar to the artifact-driven methods, the use case driven methods also utilize groupings of artifacts as architectural components. Although use cases are applied to extract artifacts, the difference in the use-case driven methods is that the direct source of the architectural components are the use cases and not the artifacts as in the artifact-driven methods.

Domain-driven architecture design methods do not directly or indirectly derive the architectural components by utilizing artifact descriptions but rather extract the architectural components from the corresponding domain models. Domain models represent the reusable representation of domain knowledge for a given design problem. Domain models are developed through a domain analysis process, which can be defined as the process of identifying, capturing and organizing domain knowledge about the problem domain with the purpose of making it reusable when creating new systems. The domain model may be represented using different representation forms such as classes, entity-relation diagrams, frames, semantics networks, and rules. Although in the domain-driven architecture design methods use cases and artifact type descriptions may also be applied, they basically serve to scope the domain knowledge and extract the domain concepts.

Classification based on Scope of Software Architecture

We may classify the methods also according to the scope that the software architecture has to fulfill. Hereby we distinguish between methods that aim to design an architecture for a single system, from methods that try to design an architecture for a family of systems. Correspondingly, we term these methods respectively as single-system scope architecture design methods and multi-system scope architecture design methods. Let us explain this classification in more detail:

Single-System Scope Architecture Design Methods

Traditionally, software development methods focus on developing single systems rather than on a family of systems. This focus reflects itself also in the development of architectures which we classify as single-system scope architecture development. A single-system scope architecture basically addresses the development of the global structure of a single software system. Hereby, the system is typically partitioned into subsystems and modules that form the basic constituents of the system architecture:

"The system architecture is the overall organization of the system into components called subsystems. "
    - Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F., & Lorensen, W. Object-Oriented Modeling and Design, Prentice Hall, 1991.

A subsystem is a grouping concept relating aspects of the system with common properties. It is expected that each subsystem has a well-defined interface and can be designed and implemented independently. Subsystems may on their turn be decomposed into lower-level subsystems in which  the module concept is often considered as a primitive subsystem that includes the basic components such as classes and objects. 

Traditionally, architecture design is part of the system design and follows the analysis phase. Thereby, the design phase is generally decomposed into an overall structure design and a more detailed design. The terms architecture and design were used interchangeably and often meant the same thing as it can be for example derived from the following statement:

"The purpose of design is to create an architecture for the evolving implementation, and to establish the common tactical policies that must be used by disparate elements of the system.
….
There are two primary products of design: a description of the architecture, and descriptions of common tactical policies. "

    G. Booch, object-Oriented Design With Applications, Benjamin/Cummings, 1991.

The meaning of architecture in the Unified Modeling Process [Jacobson et al. 99] may also be categorized as single-system scope architecture as it can be derived from the definition of architecture:

"The set of significant decisions about the organization of a software system, the selection of the structural elements and their interfaces by which the system is composed, together with their behaviour as specified in the collaborations among those elements, the composition of these structural and behavioral elements into progressively larger subsystems, and the architectural style that guides this organization: these elements and their interfaces, their collaborations, and their composition. "
    - I. Jacobson, G. Booch & J. Rumbaugh, The Unified software Development Process, Addison-Wesley, 1999.

Multi-System Scope Architecture Design Methods

Over the years software engineers have realized that many applications share the same architectural structure. Instead of rebuilding an architecture from scratch the idea arose to reuse the architecture of similar kind of software systems. We term this as a multi-system scope architecture development. Unlike single-system scope architectures, multi-system scope architecture forms an abstraction from a family of systems rather than a representation of single-system. 

The impact of this focus is that one needs to make a distinction between the architecture for the whole family and the architecture of a single system. In general, these are respectively termed reference architecture and application architecture, whereby the application architecture is instantiated from the reference architecture.

A concrete example of an implementation of a multi-system scope architecture is an object-oriented framework. An object-oriented framework is an abstract design for a family of related systems consisting of a set of collaborating classes. Object-oriented application frameworks represent semi-finished architectures, which can be reused and extended for the generation of various applications. The objective of a framework is basically to emphasize design reuse but in addition it provides a reduction of source code. Object-oriented frameworks have gained a wide range popularity, though, current object-oriented analysis and design methods do not provide proper support.

 
 
 
 
 

Artifact-driven architecture design methods

 
 
Use-case driven architecture design methods
 
 
Domain-driven architecture design methods
 
 
 

Single-System Scope Architecture Design Methods

 

 
 
 
 
 
 
 
 
 
 
 
Multi-system scope architecture development