Tool Mentor: Managing Subsystems Using Rational Rose
Purpose
This tool mentor describes how to represent design subsystems and related artifacts in Rational Rose.
This section provides links to additional information related to this tool mentor.
Overview
The following steps are performed to manage subsystems:
-
Create subsystems in the Design Model
- Create
subsystem interfaces
- Create
classes within the subsystem
- Document
package and subsystem dependencies
- Document
subsystem contents
- Document
subsystem behavior
1. Create
subsystems in the Design Model
You create a subsystem by creating a package in the Design Model and
using the Package Specification to assign it a stereotype of "subsystem".
In order to show the subsystem in sequence and collaboration diagrams
in Rational Rose, you create a class that acts as a "proxy"
for the subsystem in diagrams. To create this class in the subsystem,
read about creating a class in Tool Mentor:
Managing Classes. This "proxy"
class should have the same name as the subsystem, and should be
stereotyped "subsystem proxy" to indicate that it exists as
a "proxy" for the subsystem.
For
more information, refer to the following topics in the Rational Rose
online help:
2. Create subsystem
interfaces
See Tool Mentor: Managing Interfaces.
In this step, you enable the "subsystem proxy" to provide
all of the operations defined by the interfaces realized by the subsystem. To
do this, you first create a new Class Diagram in the subsystem
package and give it the name "Interface Realizations." You
can then drag and drop the "subsystem proxy" class into the
new diagram. Using Rational Rose's drawing tool, you should draw
realization dependencies from the "subsystem proxy" class
to the interface classes that the proxy realizes, making sure that
all the interface operations are defined in the "subsystem
proxy" class. This may require creating one or more operations
on the "subsystem proxy" class. See Tool
Mentor: Managing Classes for more information.
For
more information, refer to the following topics in the Rational Rose
online help:
-
Realize Relationship
- Interface
3. Create classes within the
subsystem
To create classes inside the subsystem, see Tool
Mentor: Managing Classes.
With the exception of the subsystem's "subsystem proxy", all contents of the subsystem should be
"invisible" to model elements outside the subsystem. This
is done by setting the class export control to
"implementation" in the Class Specification. Ideally, the
interfaces realized by the subsystem should be defined outside the
package that represents the subsystem (so that the subsystem is easily
replaceable), but if defined inside the package representing the subsystem, must also be visible.
4. Document
package and subsystem dependencies
You should document the dependencies between packages/subsystems in
the Design Model. To do this, you create a new class diagram for the
Design Model and name it "Package/Subsystem Dependencies."
You can then drag and drop the packages and subsystems from the
browser into the new diagram. Any existing dependency relationships
will be displayed automatically. You can also visually arrange the
packages and subsystems into layers in the diagram and use the Text
Box tool icon to annotate the layers. Finally, you can create
additional package and subsystem dependency relationships using the
Dependency tool icon.
For
more information, refer to the Dependency
Relationship topic in the Rational Rose online help:
5. Document subsystem
contents
Each package and subsystem should contain one or more class diagrams
to document and illustrate the classes contained in the package/subsystem.
6. Document subsystem
behavior
Each Subsystem should have one or more sequence diagrams to
illustrate how the operations offered by the interfaces of the
subsystem are distributed to the contents of the subsystem. For more
details, see Tool Mentor: Managing Sequence Diagrams.
The sequence diagram should illustrate how a particular operation
offered by a subsystem interface is performed by model elements
contained in the subsystem. The left-most object in these
"interface operation" diagrams should be the "subsystem
proxy" class. The remainder of the objects represent the
private classes of the subsystem. The messages between them
illustrate how the interface operation is realized.
It is recommended that you name the diagram "<interface
name>::<operation name>". This naming convention
simplifies future tracing of interface behaviors to the classes which
implement the interface operations.
|