Unified Modeling Language (UML)

Unified Modeling Language (UML) is a set of standard diagrams use to visually represent the system and its design. UML helps in constructing the system design, and various artifacts of software and non-software system, and identifies new ways to use and integrate the system within larger scope. The UML is set of graphical notations (UML diagrams) which can be used to model the structure, behavior and integration of the system. UML diagrams or UML modeling can be categorized into two categories structure diagrams and behavior diagrams.

The structure diagrams used to denote various object used to construct the system, these diagrams include class diagram, object diagram, package diagram and deployment diagram.

The behavior diagrams are used to model system behaviors against various events or activities, these include use-case diagram, activity diagram, state diagram and timing diagram etc. There are some UML disarms which can represent integration of the system, these include package, deployment and communication etc., which falls under the system integration category.

When it comes to alternatives to UML, we need to go back to history, and see how UML become the de-facto standard to model systems.  

“By the mid-1990s, the best-known methodologies were those invented by Ivar Jacobson, James Rumbaugh and Grady Booch. Each had his own consulting company using his own methodology and his own notation. By 1996, Jacobson and Rumbaugh had joined Rational Corporation (founded by Booch), and they had developed a set of notations which became known as the Unified Modeling Language (UML). The ‘three amigos’, as they have become known, donated UML to the Object Management Group (OMG) for safekeeping and improvement. OMG is a not-for-profit industry consortium, founded in 1989 to promote open standards for enterprise-level object technology; their other well-known work is CORBA.” (ODocherty, M., 2005).

There are quite few alternatives to UML such as System Modeling Language (SysML), C4 Models of Software Architecture and Business Process Modeling and Notation (BPMN).

SysML is a general purpose modeling language for system engineering applications. SysML supports the specification, analysis, design, verification and validation of a broad range of systems and systems-of-systems. These systems may include hardware, software, information, processes, personnel, and facilities. UML and SysML are designed to solve different problems, UML focuses on the designing of individual system and model it, while SysML also includes requirements verification and validation, which makes it domain specific language for modeling systems.

C4 models takes a different approach of modeling system architecture and design, by keeping in mind, the context, containers, component and pseudo-code while designing and architects the system.  BPMN is modeling language for designing business processes, it is also developed and maintained by OMG, it focuses on modeling business side of the process instead of modeling system design and architecture, so its fundamentally different from UML.  

In my opinion, the best alternative to UML is not having any modeling at all, since the use of UML is declined with the rise of Agile method of software development. UML and similar modeling languages require a major part of system designed upfront which is opposite of Agile method of software development which is based on smaller minimal viable iterations of the system.