|
Edited by:
Bedir Tekinerdogan
| |

| |
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 |
| |
| |
| |
|