⚡️ TL;DR
- UML is a standard visual language for software systems. There are 2 categories of UML diagrams: structural and behavioural.
- Structural diagrams, like class and component diagrams, focus on static structures and relationships in a system. These diagrams focus on the lower levels of a system.
- Behavioural diagrams like sequence and activity diagrams emphasize system changes and interactions. They communicate business processes and system workflows.
🚀 Introduction
UML (Unified Model Language) is a standard visual language to represent structures, interactions, and behaviours in a software system. UML diagrams help software developers plan, design, and communicate systems to stakeholders.
There are 14 types of UML diagrams classified into 2 categories – structural and behavioural. Deciding which diagram to use can feel daunting if you’re new to UML, so let’s explore some common diagram types.
🏢 Structural
Structural diagrams show the static components of a system and their relationships. Since these diagrams focus on the lower levels of the system, they’re mainly for technical audiences. Let’s look at a few common structural diagram types.
1️⃣ Class diagrams
Class diagrams extend from the object-oriented model, showing classes, attributes, methods, and relationships. They help plan and design software systems before writing code, and they can also be useful post-implementation for documenting the system.
In class diagrams, boxes represent classes, with the class name at the top, attributes in the middle, and methods at the bottom. Connecting lines show relationships between classes. Here’s an example of a class diagram for a potential e-commerce system.
Example of a UML class diagram
2️⃣ Object diagrams
Object diagrams (also called Instance diagrams) show a snapshot of a system at a specific time. They represent instances of a class diagram. These diagrams communicate examples of a data structure and are sometimes used to test scenarios for a class diagram.
Creating object diagrams is similar to class diagrams with boxes, text, and lines. Attributes will have values assigned. Building on the previous example, here’s what an object diagram could look like.
Example of a UML instance diagram
3️⃣ Component diagrams
Component diagrams simplify complex systems by breaking them down into components and relationships. Think of components as groups of classes or a unit of functionality. These diagrams help developers plan large-scale development projects and see dependency relationships.
Component diagrams have a bigger set of symbols and shapes than class diagrams. These include different shapes for components, nodes, interfaces, and ports.
Example of a UML component diagram
❓ Other structural diagram types
There are other types of structural diagrams used for specific use cases, such as:
- Deployment diagrams to map out hardware systems and their components
- Package diagrams that highlight dependencies between components in a system
🧐 Behavioral
Behavioural diagrams visualize dynamic systems and how they respond to events over time. They show what happens in a system. Since they focus on higher levels of a system, these diagrams are easier to understand for non-technical audiences.
4️⃣ Sequence diagram
Sequence diagrams show how objects interact with one another over time. They communicate the chronological flow of messages exchanged in a system for specific functionality.
In sequence diagrams, boxes with long vertical rectangles depict time for objects. Labelled arrows represent messages between objects. Sequence diagrams can get complex, which is why we reimagined how to visualize them on IcePanel. Learn more about Flows and how they compare to sequence diagrams here.
Example of a UML sequence diagram for a login flow
5️⃣ Activity diagram
Activity diagrams help visualize business processes and workflows, such as a login or checkout flow. They simplify processes by breaking them into a series of step-by-step actions, making it easy to understand how different components work together. They’re similar to a typical flowchart, with more symbols and notation.
In activity diagrams, rounded rectangles symbolize activities, diamond shapes denote decision points, and arrows serve as connectors. The example below shows an activity diagram for a checkout flow in an e-commerce app.
Example of a UML activity diagram for a checkout flow
6️⃣ Use case diagram
Use case diagrams show the interaction between users and the system. They’re an effective tool for communicating functional requirements without going into technical details, making them a great option for visualizing system structures for non-technical audiences.
These diagrams show users (actors) as stick figures, use cases as ovals, and relationships as lines. Going back to our e-commerce app, a use case diagram can look something like this:
Example of a UML use case diagram
7️⃣ State diagram
State diagrams show how an object or system transitions between different states. They model how a system behaves to different conditions and events (internal or external).
In state diagrams, rounded rectangles depict states, diamond symbols show dynamic conditions, arrows represent transitions, and circles denote beginning and end states.
Example of a UML state diagram
❓ Other behavioral diagram types
- Timing diagrams are like sequence diagrams with their axes reversed. They help identify areas in a process that take too much time.
- Communication diagrams are like sequence diagrams without emphasis on the order of events.
🏁 To wrap up
UML diagrams are an essential tool for visualizing software systems. They’re helpful abstractions for planning a new system or onboarding a team member.
However, UML is often considered an older, heavier methodology for modelling software systems. Many teams only use a handful of UML diagrams, while some prefer scrappier ad hoc diagrams. The C4 model is an attractive alternative, offering a good balance of structure and simplicity. We cover the differences between the C4 model and UML more here.