The Rational Unified Process: An Introduction (3rd Edition)

ARCHITECTURE REPRESENTATION

In one form or another, many different parties are interested in architecture:

To allow the various stakeholders to communicate, discuss, and reason about architecture, we must have an architectural representation that they understand. The architecture and its representation are not quite the same thing: by choosing a representation, we omit some of the most intangible or soft aspects.

The various stakeholders have different concerns and are interested in different aspects of the architecture. Hence, a complete architecture is a multidimensional thing. Architecture is not flat.

Multiple Views

For a building, different types of blueprints are used to represent different aspects of the architecture:

Over decades, blueprints have evolved into standard forms so that each person involved in the design and construction of the building understands how to read and use them. Each of these blueprints tries to convey one aspect of the architecture for one category of stakeholders, but the blueprints are not independent of each other. On the contrary, they must be carefully coordinated.

Similarly, in the architecture of a software- intensive system, you can envisage various blueprints for various purposes:

And there are many more purposes. These are what we call architectural views. [4]

[4] This multiple-view approach is to conform to the future IEEE Recommended Practice for Architectural Description. See Draft 5.2 of IEEE P1471, November 1999.

An architectural view is a simplified description (an abstraction) of a system from a particular perspective or vantage point, covering particular concerns and omitting entities that are not relevant to this perspective. For each view, we need to clearly identify the following:

The 4+1 View Model of Architecture

As shown in Figure 5-1, the Rational Unified Process suggests a five-view approach. [5] The following sections summarize the five views.

[5] Philippe Kruchten, "The 4+1 view of Architecture," IEEE Software , 12(6) Nov. 1995, pp. 45 “50.

Figure 5-1. The 4+1 view model of architecture

The Logical View

This view of the architecture addresses the functional requirements of the system, in other words, what the system should do for its end users. It is an abstraction of the design model and identifies major design packages, subsystems, and classes.

Examples include a flight, a flight plan, an airway, an airport, and an airspace package.

The Implementation View

This view describes the organization of static software modules (source code, data files, components , executables, and other accompanying artifacts) in the development environment in terms of packaging and layering and in terms of configuration management (ownership, release strategy, and so on). It addresses the issues of ease of development, management of software assets, reuse, subcontracting , and off-the-shelf components.

Examples include the source code for a flight class and the library of code for an airspace database.

The Process View

This view addresses the concurrent aspects of the system at run-time ” tasks , threads, or processes as well as their interactions. It addresses issues such as concurrency and parallelism, system start-up and shutdown, fault tolerance, and object distribution. It deals with issues such as deadlock, response time, throughput, and isolation of functions and faults. It is concerned with scalability.

Examples are a flight management process, flight plan entry processes, and an airspace management process.

The Deployment View

This view shows how the various executables and other runtime components are mapped to the underlying platforms or computing nodes. It is here that software engineering meets system engineering. It addresses issues such as deployment, installation, and performance.

For example, the flight management process runs on the main flight processor, whereas the flight plan entry processes run on any workstations.

The Use-Case View

This view plays a special role with regard to the architecture. It contains a few key scenarios or use cases. Initially, these are used to drive the discovery and design of the architecture in the inception and elaboration phases, but later they will be used to validate the different views. These few scenarios act to illustrate in the software architecture document how the other views work.

Examples are the entry of a flight plan and the handover of responsibility to another air-traffic controller.

Models and Views

The preceding description of the architecture is true also for the models introduced in the first section of this chapter. We create different models to address different needs. But the models are complete representations of the system, whereas an architectural view focuses only on what is architecturally significant. If we do not make this distinction, there is no clear way to distinguish "design" from "architecture." Not all design is architecture.

What is "architecturally significant"? An architecturally significant element has a wide impact on the structure of the system and on its performance, robustness, evolvability, and scalability. It is an element that is important for understanding the system.

Architecturally significant elements include the following:

Table  5-1. The Relationship between Models and Views

Model Architectural View
Design model Logical view
Design model [*] Process view
Implementation model Implementation view
Deployment model Deployment view
Use-case model Use-case view

[*] or a process model for a complex system

Architectural views are like slices cut through the various models, illuminating only the important, significant elements of the models. Table 5-1 summarizes the relationship between models and views. The views useful for a system are captured in an important artifact: the software architecture description.

Architecture Is More Than a Blueprint

Architecture is more than just a blueprint of the system to be developed. To validate the architecture and to assess its qualities in terms of feasibility, performance, flexibility, and robustness, we must build it.

Building the architecture, validating it, and then baselining it are the number one objectives of the elaboration phase. Therefore, in addition to a software architecture description, the most important artifact associated with the architecture is an architectural prototype that implements the most important design decisions sufficiently to validate them ”that is, to test and measure them. This prototype is not a quick-and-dirty throwaway prototype, but it will evolve through the construction phase to become the final system. See the section titled Prototypes in Chapter 11.

Категории