UML, or Unified Modeling Language, is a standardized visual language designed to model and document software systems. It plays a pivotal role in software engineering, bridging the gap between conceptualization and implementation.
What is UML?
UML stands for Unified Modeling Language. It is a standard notation that provides a consistent way to visualize the design of a system. UML is mainly known for its diagrams, which offer different views of a software system.
- Standard language for specifying, visualising, constructing, and documenting the artifacts of software systems, business modelling and other non-software systems.
- The UML represents a collection of best engineering practices that have proven successful in the modelling of large and complex systems.
- The UML is mostly used in developing object-oriented software and the software development process.
- The UML uses mostly graphical notations to express the design of software projects.
- UML is not a “process”. (That is, it doesn’t tell you how to do things, only what you can do.)
Key Benefits of UML
- Visualization: UML provides a clear and standardized way to represent system architectures, components, relationships, and processes.
- Standardization: As an industry-standard, UML promotes consistency across projects.
- Communication: UML diagrams enhance communication between team members and stakeholders by providing a clear visual representation of system components and their interactions.
We need UML to:
- help develop efficient, effective and correct designs, particularly Object-Oriented designs.
- communicate clearly with project stakeholders (concerned parties: developers, customer, etc).
- Using the UML helps project teams communicate, explore potential designs, and validate the various aspects of the software design.
Classification of UML Diagrams
Class Diagram
- Purpose: Represents the static structure of a system.
- Components: Classes, interfaces, associations, and generalizations.
Object Diagram
- Purpose: Shows a complete or partial view of the structure of a modeled system at a specific time.
- Components: Object instances and their relationships.
Use Case Diagram
- Purpose: Describes a system’s functional requirements, as well as the external entities interacting with the system.
- Components: Use cases, actors, and their relationships.
Sequence Diagram
- Purpose: Represents the sequence of activities in a system in terms of sequential flow.
- Components: Actors, lifelines, messages, and activations.
Activity Diagram
- Purpose: Represents workflows and business processes.
- Components: Activities, action flows, decisions, guards, forks/joins, and swimlanes.
Component Diagram
- Purpose: Describes the organization and interrelationships of system components.
- Components: Components, interfaces, and their relationships.
Deployment Diagram
- Purpose: Depicts the physical resources in a system, including nodes, components, and the connections between them.
- Components: Nodes and their relationships.
State Diagram (State Machine Diagram)
- Purpose: Describes the behavior of an entity (class, interface, etc.) in response to internal and external stimuli.
- Components: States, transitions, events, and actions.
Package Diagram
- Purpose: Represents the division of a model into functional units, showing the dependencies between the packages.
- Components: Packages and their relationships.
Communication (Collaboration) Diagram
- Purpose: Shows interactions between objects focusing on the structural organization.
- Components: Objects and their links, illustrating the flow of messages.
Interaction Overview Diagram
- Purpose: Combines activity and sequence diagrams to show a high-level view of interactions in the system.
- Components: Interaction fragments, decisions, initial/final nodes, and interactions.
Timing Diagram
- Purpose: Shows the behavior of objects in a given timeframe, focusing on the timing constraints.
- Components: Lifelines, states, and state transitions.
Composite Structure Diagram
- Purpose: Represents the internal structure of a class (or any other classifier) and the collaborations that this structure makes possible.
- Components: Classes, ports, parts, connectors, and collaborations.
Profile Diagram
- Purpose: Provides a mechanism to customize UML models for particular domains and platforms.
- Components: Stereotypes, tagged values, and constraints.
UML in Common Use
Models used mainly for requirements:
- Use case diagram shows a set of use cases and actors and their relationships.
- Activity diagram (flowchart) shows the flow from one activity to another activity within a system.
Models used mainly for systems architecture: • Component diagram shows the organisation and dependencies among a set of components. • Deployment diagram shows the configuration of processing nodes and the components that live on them.
Models used mainly for detailed design:
- Class diagram: shows a set of classes, interfaces, and collaborations with their relationships.
- Sequence diagrams: time ordering of messages
- State diagrams and activity diagrams also are widely used.