UML

Unified Modeling Language (UML) is a general-purpose, modeling language designed to provide a standard way for visualizing, specifying, constructing, and documenting the artifacts of distributed object systems. It's the industry standard modeling language for software engineering.

The aim of UML is to give software engineers, agile and small development teams, and system architects useful tools for analysis, design, and implementation of software-based systems. It also provides modeling business and similar processes. The language helps to visualize your object-oriented design and communicate with others. It offers limited use for other programming paradigms.

UML offers an efficient way to communicate object programming concepts that are not intuitive between programmers and end users. It can also be very precise and helps to avoid ambiguities when you define your system.

UML is composed of many model elements that represent the different parts of a software system. The UML elements are used to create diagrams, which represent a certain part, or a point of view of the system. A full list of the diagrams is set out at the end of this article.

UML was born in the middle 90's by merging three methods. The notation aspect of the Booch method was superseded by the UML, which features graphical elements from the Booch method along with elements from the object-modeling technique (OMT) and object-oriented software engineering (OOSE).

A UML tool or UML modeling tool is a software application that supports some or all of the notation and semantics associated with UML. Many open source UML tools are available. We give our recommendation to the following software.

UML Tools

Click the links below to learn more about each application and see which one is best suited for your requirements.

Unified Modeling Language tools
Eclipse Papyrus Edit models based on UML and related languages
PlantUML Draw UML diagrams from simple textual description
Violet Designed for people who need to produce simple UML diagrams
Umple Create UML models textually
Umbrello UML Modeller based on KDE technology
Modelio UML and BPMN modeling environment
ArgoUML UML modeling tool
UMLet Java-based UML tool
Dia GTK+ based diagram creation software
UML Designer UML tool based on Sirius and Eclipse

There are also some excellent freeware tools that are not released under an open source license. We like Edraw Max, and StarUML.

UML 2 defines 14 diagrams:

  • Package Diagrams – used to reflect the organization of packages and their elements.
  • Class or Structural Diagrams – shows the building blocks of any object-orientated system.
  • Object Diagrams – use a subset of the elements of a class diagram in order to emphasize the relationship between instances of classes at some point in time.
  • Composite Structure Diagrams – shows the internal structure of a classifier, including its interaction points to other parts of the system.
  • Component Diagrams – illustrates the pieces of software, embedded controllers, etc., that will make up a system.
  • Deployment Diagrams – models the run-time architecture of a system.
  • Use Case Diagrams – captures the requirements of a system. Use cases are a way of communicating with users and other stakeholders what the system is intended to do.
  • Activity Diagrams – displays the sequence of activities.
  • State Machine Diagrams – models the behaviour of a single object, specifying the sequence of events that an object goes through during its lifetime in response to events.
  • Communication Diagrams (collaboration diagram) – an interaction diagram that shows similar information to sequence diagrams but its primary focus is on object relationships.
  • Sequence Diagrams – a form of interaction diagram which shows objects as lifelines running down the page, with their interactions over time represented as messages drawn as arrows from the source lifeline to the target lifeline.
  • Timing Diagrams – used to display the change in state or value of one or more elements over time.
  • Interaction Overview Diagrams – a form of activity diagram in which the nodes represent interaction diagrams. Interaction diagrams can include sequence, communication, interaction overview and timing diagrams.
  • Profile Diagrams – structure diagram which describes lightweight extension mechanism to the UML by defining custom stereotypes, tagged values, and constraints.

Read our complete collection of recommended free and open source software. The collection covers all categories of software.

The software collection forms part of our series of informative articles for Linux enthusiasts. There's tons of in-depth reviews, alternatives to Google, fun things to try, hardware, free programming books and tutorials, and much more.