UML
- Unified Modeling Language
- Standardized, general-purpose modeling language
- Purpose: visualize, specify, construct, and document artifacts of software systems
- Consolidation of the OO development methods and notations of:
- Booch Method [Booch]
- Object-Modeling Technique (OMT) [Rumbaugh, et al.]
- Object-Oriented Software Engineering (OOSE) [Jacobsen]
- Object-Management Group www.omg.org
Modeling History

Diagram Types

Diagram Views

Structure Diagrams - Static Aspects
- Class - set of classes and their relationships. Describes interface to the class
- Object - set of objects (class instances) and their relationships
- Component - logical groupings of elements and their relationships
- Deployment - set of computational resources (nodes) that host each component
- Package - organization into packages
Class Diagrams

Object Diagrams

Component Diagrams

Deployment Diagrams

Package Diagram

Behavior Diagrams - Dynamic Aspects
- Use Case - high-level behaviors of the system, user goals, external entities: actors
- Sequence - focus on time ordering of messages
- Communication - focus on the structural organization of objects and messages
- State Chart - event-driven state changes of the system
- Activity - flow of control between activities
UML Use Case Diagram

UML Sequence Diagram

UML Communication Diagram

UML State Machine Diagram

UML Activity Diagram

Model
- Diagrams are a visual representation of the underlying system model
- MOF - Meta-Object Facility
Level |
Name |
Description |
Example |
M3 |
meta-metamodel |
Models to define Models |
|
M2 |
metamodel |
UML Syntax |
 |
M1 |
model |
UML Model |
 |
M0 |
data layer |
Real World |
 |
- UML to communicate an aspect of a system
- Forward engineering - sketches to work out a design before implementation
- Reverse engineering - sketches for comprehension
- Main feature: Selectivity.
- Requirements: Need to be performed quickly and collaboratively
- E.g., whiteboard, paper
- Express design enough to hand off to another group
- Separation of labor: High-end designers versus "coders"
- Main feature: Completeness.
- Forward engineering - Every detail needed to implement the design
- Reverse engineering - Every detail of the design is in the code
- Specialized tools to generate and create
- May be integrated into IDE and used as another view of the code
- Provide enough detail to compile executable code from UML
- Promise: "UML is a higher-level language and thus more productive than current programming languages"
- Reality:
- Graphical languages are not always better, e.g., flow chart versus pseudocode for an algorithm
- The "best" languages are not always the most successful
UML & Process
- UML is not a process
- UML supports a process
- Not all diagrams in UML are useful to all processes and all development
- How UML is used in a process is affected by the UmlMode
UML-Driven Process
- Requirements: Written text, Use Case Diagrams
- Analysis Object Diagrams
- High-level Design Class Diagram
- Low-level Design Sequence Diagram, State Machine Diagram (perhaps)
- Implementation Deployment Diagram, Activity Diagram
Problems with UML
- Limited to no formal semantics
- Diagram representation: layout versus model