UML design in Rational Rhapsody
IBM® Rational Rhapsody Designer for Systems Engineers, Rational Rhapsody Architect for Systems Engineers, Rational Rhapsody Architect for Software, and the Rational Rhapsody Developer editions support designing your models with UML. The UML specification includes many diagram types, including use case diagrams, statecharts, and activity diagrams.
UML is a third-generation modeling language that you can use to describe complex systems. According to the Object Management Group (OMG), UML is the industry standard for describing object-oriented systems. For more information about the OMG, go to their website.
UML defines a set of diagrams by which you can specify the objects, messages, relationships, and constraints in your system. Each diagram emphasizes a different aspect or view of the system elements. For example, a UML sequence diagram focuses on the message flow between objects during a particular scenario, whereas an object model diagram defines classes, their operations, relations, and other elements.
UML diagrams in Rational Rhapsody
The UML specification includes the following diagrams:
- Class diagrams show the static structure of a system: the classes and their associations and operations, and the relationships between classes and any constraints on those relationships. A class diagram is the basic diagram in UML. A class diagram is the equivalent of the object model diagram in Rational Rhapsody. However, a class diagram is specified for the class structure, while an object model diagram is specified for the object structure.
- Similarly, object model diagrams show the static structure of a system: the objects and their associations and operations, and the relationships between classes and any constraints on those relationships. In Rational Rhapsody, an object model diagram is the equivalent of a class diagram. However, an object model diagram is specified for the object structure, while a class diagram is specified for the class structure.
- Sequence diagrams show the message flow of objects over time for a particular scenario.
- Timing diagrams represent timing data for individual classifiers and interactions of classifiers. You can use this diagram to provide a snapshot of timing data for a particular part of a system. Timing diagrams use lifelines from sequence diagrams, but are not directly correlated to the sequence diagram in Rational Rhapsody.
- Use case diagrams show diagrams show typical interactions between the system that is being designed and the external users or actors. You can use the product to generate code for actors in use case diagrams to test models.
- Component diagrams describe the organization of the software units and the dependencies among these units.
- Deployment diagrams depict the nodes in the final system architecture and the connections between them. Nodes include both the processors that run software components and the devices that those components control.
- Communication diagrams provide the same information as simple sequence diagrams but with an emphasis on structure rather than time.
- Structure diagrams model the structure of a composite class; any class or object that has an object model diagram can have a structure diagram. Object model diagrams focus more on the specification of classes, whereas structure diagrams focus on the objects used in the model.
- Statecharts define all the states that an object can occupy and the messages or events that cause the transition of the object from one state to another.
- Activity diagrams specify a workflow or process for classes, use cases, and operations. Activity diagrams are like statecharts; however, activity diagrams are better for showing linear step-by-step processes, while statecharts portray non-linear and event-driven processes.
- Panel diagrams provide you with a number of graphical control elements that you can use to create graphical user interfaces (GUIs) to monitor and regulate applications.
In addition, flow charts are available in the product and describe a function or class operation or generate code.