Terms and Concepts
A system, possibly decomposed into a collection of subsystems, is a set of elements organized to accomplish a purpose and described by a set of models, possibly from different viewpoints. A subsystem is a grouping of elements of which some constitute a specification of the behavior offered by other contained elements. Graphically, a system and a subsystem are rendered as a stereotyped component icon. A model is a simplification of reality, an abstraction of a system, created to better understand the system. A view is a projection of a model, which is seen from one perspective or vantage point and omits entities that are not relevant to this perspective.
Systems and Subsystems
A system is the thing that you are developing and for which you build models. A system encompasses all the artifacts that constitute that thing, including all its models and modeling elements, such as classes, interfaces, components, nodes, and their relationships. Everything you need to visualize, specify, construct, and document a system is part of that system, and everything you don't need to visualize, specify, construct, and document a system lies outside that system.
Stereotypes are discussed in Chapter 6; packages are discussed in Chapter 12; classes are discussed in Chapters 4 and 9; use cases are discussed in Chapter 17; state machines are discussed in Chapter 22; collaborations are discussed in Chapter 28 . |
Aggregation and generalization are discussed in Chapters 5 and 10 |
Models and Views
A model is a simplification of reality, in which reality is defined in the context of the system being modeled. In short, a model is an abstraction of a system. A subsystem represents a partitioning of the elements of a larger system into independent parts; a model is a partitioning of the abstractions that visualize, specify, construct, and document that system. The difference is subtle but important. You decompose a system into subsystems so that you can develop and deploy these parts somewhat independently; you partition the abstractions of a system or a subsystem into models so that you can better understand the different aspects of the thing you are developing and deploying. Just as a complex system such as an aircraft may have many parts (for example, the airframe, propulsion, avionics, and passenger subsystems), those subsystems and the system as a whole may be modeled from a number of different points of view (such as from the perspective of structural, dynamic, electrical, and heating/cooling models, for example).A model contains a set of packages. You'll rarely need to model models explicitly, however. Tools need to manipulate models, however, so a tool will typically use package notation to represent a model as seen by the tool.
Packages are discussed in Chapter 12 |
The five views of a software architecture are discussed in Chapter 2 |
Diagrams are discussed in Chapter 7 |
Trace
Specifying relationships among elements such as classes, interfaces, components, and nodes is an important structural part of any model. Specifying the relationships among elements such as documents, diagrams, and packages that live in different models is an important part of managing the development artifacts of complex systems, many of which may exist in multiple versions.
Relationships are discussed in Chapters 5 and 10 |
Figure 32-2. Trace Relationships
[View full size image]

Dependencies are discussed in Chapter 5; stereotypes are discussed in Chapter 6 |