Why Model?

  • Design / synthesis
  • Analysis / prediction
  • Control
  • Diagnosis
  • System identification

A software model is an abstraction representation of a software for a purpose. When modelling, we model only the essentials to provide perspective and enable effective communication.

When modelling the Software Lifecycle, we make different diagrams based on where we are in the process (use case diagrams → architecture diagrams → class and state machine diagrams etc).

UML

  • UML Provides a standard way to visualize the design of a system Class Diagrams

  • Describes the static structure of a system, the types of objects in a system, and their relationships

  • Requires:

    • Class name
    • Attributes (optional)
    • Operations (optional)
  • Objects

  • Attributes

  • Associations

    • We can name these, and use a regex-like syntax to define the multiplicity of the relationship (1, 0..1, *, 1..*) etc
  • Aggregation & composition

    • An aggregate is a relationship between an aggregate and constituent where they can exist separately
    • A strong ownership and coincident lifetime of parts
  • Generalizations and realizations

    • Generalizations extend and realizations implement
  • A package is a container for organizing elements

  • A dependency is a semantic relationship between two elements Use Case Diagrams

  • Describes functional behaviour as seen by the user Sequence Diagrams

  • Describes the dynamic behaviour between actors and the system State Diagrams

  • Describes the dynamic behaviour of an individual object Activity Diagrams

  • Models the dynamic behaviour of a system (workflows) Component Diagrams

  • Shows the organization and dependencies between components/subsystems

  • Domain Model

  • Object Model

  • Data Models