What Is Unified Modeling Language?

UML is a modeling language used in requirements analysis, design, and programming. It is managed by the Object Management Group (OMG), which publishes updates to the UML as needed. Later versions of UML remove outdated diagrams, add new diagrams, update the syntax of diagrams, fix bugs, or increase the formality of the UML language to support the conversion of UML to a programming language, for example, Java. The semantics of the diagram types for products and behavior (also called "process and procedure", "static and dynamic", or "what and how") that correspond to OO object data and methods do not change.

UML is an acronym for Unified Modeling Language. UML is widely accepted as the de facto standard description language for the specification and design of object-oriented software systems. UML is a family of "languages", or diagram types, that attempt to bring together the "best in breed" software specification techniques for describing software systems. Users and practitioners of UML can choose which members of the family are the most suitable for their application domain.


A collage of UML diagrams including use case diagram, class diagram, activity diagrams, sequence diagrams, deployment diagram, component diagrams, composite structure diagram, package diagrams.

Personally, I have become associated with UML through my years and years of specifying software products. Several of the UML diagram types that I will discuss below are among my primary tools for communicating application and system requirements and software designs to programmers.

I do not advocate, nor do I personally practice, an over-attachment to UML. Like many of these project management and requirements management techniques, there is a time and a place for the proper introduction of these types of UML artifacts into the software development process. Programmers may be unfamiliar with the UML diagram types and symbology, and so if you are a business analyst, project, program or product manager, and you are using these types of project deliverables with a new staff of engineers, be prepared to explain the UML diagram type you are using, keep the introductions down to one or two different new UML "Languages", or diagram types, at a time.

I also recommend that if you insert UML diagrams into your functional specification documents, and I recommend that if you have invested the time to properly prepare UML diagrams that you do leverage them into your spec docs, make sure that you include an explanatory prose component into your accompanying functional specification document's text.

There are nine different types of UML languages, or diagram types:

  1. Use Case.
  2. Sequence.
  3. Collaboration.
  4. Statechart.
  5. Activity.
  6. Class.
  7. Object.
  8. Component.
  9. Deployment.

Five of these diagram types render behavioral views, the use case, sequence, collaboration, statechart and activity diagrams, while the remaining four diagram types are concerned with architectural or static aspects of the software design.


How does UML help in specifying a software design?

UML is a graphical language that is based on the premise that any software system can be described in terms of interacting business entities.  The various aspects of these entities and their interactions can be described visually using one or more of the above nine types of UML diagrams.

Use Case diagrams represent and document the dialog between external (to the system under discussion, as in an embedded system) actors and the system.

Sequence and collaboration diagrams describe interactions between objects.

Activity diagrams illustrate the flow of control between objects.

Statecharts represent the internal dynamics of active objects.


What is UML 2.0?

UML 2.0 is a revision to Unified Modeling Language that incorporates several improvements to UML. UML 2.0 is only just now beginning to supplant UML as the de facto standard.

A shorthand description of UML 2.0 is that it is designed for more rigor of specification, and it can sometimes be too much, or too much of a fine-grained distinction to bandy about when in an actual day-to-day, working software development environment. You are very likely to be working with only a subset of the UML languages, or diagram types, I outlined above at any one given point in the development project.

UML 2.0, when the diagrams are laid out in a software program such as VisualUML or others, can actually be used to generate working object code. If the business analysts have developed their proficiency enough with UML diagramming software, they can actually construct and output from these programs working java (or other programming language) object code.

In order to obtain this level of integration with application programmers, UML 2.0 had to have more access to a more robust and constrained specification language. The improvements to UML 2.0 include:

  1. New base classes that provide the foundation for UML modeling constructs.
  2. Object constraint language, a formal method that can be used to better describe object interactions.
  3. An improved diagram meta-model that allows users to model systems from four viewpoints:
    1. Static models (e.g., class diagrams)
    2. Interaction (e.g., using sequence diagrams)
    3. Activity (i.e., to describe the flow of activities within a system)
    4. State (i.e., to create FSMs, or Finite State Machines, using state charts)

UML has always been used to not only specify software systems for systems and application programming, but also specification for embedded systems as well. This emphasis on the notion of time and state is evident in the way that sequence diagrams are implemented in UML, and indicates the special considerations that were undertaken to support embedded systems design in the original conception of UML.


Source: Paul Seibert, https://hubtechinsider.wordpress.com/2011/07/17/what-is-uml-what-is-universal-modeling-language/
Creative Commons License This work is licensed under a Creative Commons Attribution 3.0 License.

Last modified: Monday, November 13, 2023, 6:20 PM