How Can a Subsystem Be Both a Package and a Classifier?


Joaquin Miller

Rebecca Wirfs-Brock

The concept subsystem, serves as a tool for both organization and abstraction. Used for organization, a subsystem is a tool for partitioning a system: a subsystem represents one of the parts of the system. Used for abstraction, a subsystem is a tool for hiding complexity: a subsystem hides its own parts, that is, the details of its internal structure. Because it is a system, a subsystem has parts. It is a subsystem because it happens to be a part of a larger system.

The UML specifies that a subsystem is both a package and a classifier. This paper explores what that could possibly mean and explains why that was the right choice. It points out a key to the use of the concept in CASE tools, mentions the historical precedent for that key, and challenges CASE tools to support the flexibility that architects and designers need. Along the way, the paper reviews a method for discovering a good partition of a system into subsystems, describes a scheme for using UML to build a model of a system, and suggests some changes to the UML.


This work © 1999 by Springer-Verlag
Preprint paper version