The Unified Modeling Language (UML) is a general-purpose visual modeling language for specifying software-intensive systems. More precisely, it is a graphical language for visualizing, specifying, constructing and documenting the artifacts of software-intensive systems. UML is a key enabling technology for Software Developers and Software Engineers who seek to transition from traditional, human-intensive, code-centric software development processes to Model-Driven Development (MDD) processes that are requirements-driven and architecture-centric.
The UML was originally derived from the object modeling languages of three leading object-oriented methods: Booch, Object Modeling Technique (OMT) and Object-Oriented Software Engineering (OOSE). It was first added to the list of Object Management Group (OMG) adopted technologies in 1997, and has since become the industry standard for modeling software-intensive systems. The UML specification is an open standard that is publicly available for download. The most recent revision is UML v. 2.1.4.
Why is UML useful? If you are a Software Developer and want to improve the precision and efficiency of your communications with fellow Software Developers and other system and business stakeholders, then UML is an excellent choice for a lingua franca. (If on the other hand, you are a Systems Engineer or a Business Analyst who wants to improve communications with your peers and other system stakeholders, then SysML or BPMN may be better choices.) Here's a list of reasons why Software Developers may want to use SysML and a Model-Driven Development process for their work:
- Facilitate communication among various stakeholders across the System Development Life Cycle
- Capture and manage corporate Intellectual Property related to system architectures, designs, and processes
- Compare and contrast “As Is” and “To Be” solutions
- Provide scalable structure for problem solving
- Furnish rich abstractions to manage size and complexity
- Explore multiple solutions or ideas concurrently with minimal risk
- Detect errors and omissions early in System Development Life Cycle