The increasing use of software is giving rise to development of highly complex software systems. Further, software systems are required to be of high quality as a defect can have catastrophic effect on business as well as human life. A picture is worth a thousand words. That’s why Unified Modeling Language (UML) diagramming was created: to forge a common visual language in the complex world of software development that would also be understandable for business users and anyone who wants to understand a system.
Overview of UML
Unified Modeling Language (UML) is a standardized general-purpose modeling language in the field of object-oriented software engineering.
UML is a widely accepted standard for modeling software systems. It consists of a set of modeling concepts (primitives) to support an object oriented approach to software development. UML consists of a set of diagrams that model both static and dynamic behaviour of a system. Various aspects of the system are elaborated at different levels of abstraction using diagrams like use case diagram, class diagram, activity diagram, sequence diagram and state diagrams
UML, as the name implies, is a modeling language. It may be used to visualize, specify, construct, and document the artifacts of a software system. It provides a set of notations (e.g. rectangles, lines, ellipses, etc.) to create a visual model of the system. Like any other language, UML has its own syntax (symbols and sentence formation rules) and semantics (meanings of symbols and sentences). Also, we should clearly understand that UML is not a system design or development methodology, but can be used to document object-oriented and analysis results obtained using some methodology.
As the strategic value of software increases for many companies, the industry looks for techniques to automate the production of software and to improve quality and reduce cost and time-to-market. These techniques include component technology, visual programming, patterns and frameworks. Businesses also seek techniques to manage the complexity of systems as they increase in scope and scale. In particular, they recognize the need to solve recurring architectural problems, such as physical distribution, concurrency, replication, security, load balancing and fault tolerance. Additionally, the development for the World Wide Web, while making some things simpler, has exacerbated these architectural problems. The Unified Modeling Language (UML) was designed to respond to these needs. The primary goals in the design of the UML summarize by Page-Jones in Fundamental Object-Oriented Design in UML as follows:
- Provide users with a ready-to-use, expressive visual modeling language so they can develop and exchange meaningful models.
- Provide extensibility and specialization mechanisms to extend the core concepts.
- Be independent of particular programming languages and development processes.
- Provide a formal basis for understanding the modeling language.
- Encourage the growth of the OO tools market.
- Support higher-level development concepts such as collaborations, frameworks, patterns and components.
- Integrate best practices.
Modeling concepts specified by UML
System development focuses on three overall different system models:
Functional: These are Use Case diagrams, which describe system functionality from the point of view of the user.
Object: These are Class Diagrams, which describe the structure of the system in terms of objects, attributes, associations, and operations.
Dynamic: Interaction Diagrams, State Machine Diagrams, and Activity Diagrams are used to describe the internal behavior of the system.
These system models are visualized through two different types of diagrams: structural and behavioral.
A UML diagram is a diagram based on the UML (Unified Modeling Language) with the purpose of visually representing a system along with its main actors, roles, actions, artifacts or classes, in order to better understand, alter, maintain, or document information about the system. UML can be used to construct nine different types of diagrams to capture five different views of a system. Just as a building can be modeled from several views (or perspectives) such as ventilation perspective, electrical perspective, lighting perspective, heating perspective, etc.; the different UML diagrams provide different perspectives of the software system to be developed and facilitate a comprehensive understanding of the system.
Types of UML Diagrams
There are several types of UML diagrams and each one of them serves a different purpose regardless of whether it is being designed before the implementation or after (as part of documentation).
Figure: Types of UML Diagram
The two broadest categories that encompass all other types are Behavioral UML diagram and Structural UML diagram. As the name suggests, some UML diagrams try to analyze and depict the structure of a system or process, whereas other describe the behavior of the system, its actors, and its building components. The different types are broken down as follows:
Structural UML Diagram: Structure diagrams show the static structure of the system and its parts on different abstraction and implementation levels and how they are related to each other. The elements in a structure diagram represent the meaningful concepts of a system, and may include abstract, real world and implementation concepts, there are seven types of structure diagram as follows:
1) Class Diagram, 2) Object Diagram, 3) Component Diagram, 4) Composite Structure Diagram 5) Deployment Diagram, 6) Package Diagram, 7) Profile Diagram
Behavioral UML Diagram: Behavior diagrams show the dynamic behavior of the objects in a system, which can be described as a series of changes to the system over time, there are seven types of behavior diagrams as follows:
1) Activity Diagram, 2) Use Case Diagram, 3) Interaction Overview Diagram, 4) Timing Diagram, 5) State Machine Diagram, 6) Communication Diagram, 7) Sequence Diagram
 “Chapter 1: Introduction”, available online at: http://shodhganga.inflibnet.ac.in/bitstream/10603/26089/9/09_chapter%201.pdf
 Bharath Padmanabhan, “Unified Modeling Language (UML) Overview”, EECS810 – Principles of Software Engineering, Spring 2012
 What is Unified Modeling Language (UML)? Available online at: https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-uml/
 What are UML diagrams related to structural and behavioral modeling respectively? Available online at: https://www.quora.com/What-are-UML-diagrams-related-to-structural-and-behavioral-modeling-respectively
 What is UML? Available online at: https://tallyfy.com/uml-diagram/