Software Engineering Methodologies

UML

Michael L. Collard, Ph.D.

Department of Computer Science, The University of Akron

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

Meta-Object Facility (MOF)

Level Name Description Example
M3 meta-metamodel Models to define Models  
M2 metamodel UML Syntax Cat
M1 model UML Model
M0 data layer Real World Cat

UmlMode [Fowler]

Uml-As-Sketch

  • 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

Uml-As-Blueprint

  • 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

Uml-As-Programming-Language

  • 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