UML Frequently Asked Questions
- GENERAL
- What is UML?
- Why use UML?
- Who created the UML?
- Why do Software Developers need a precise visual modeling language?
- What is the current version of UML, and how can I obtain a copy?
- Who maintains the UML specification and how is it updated?
- What changes were made during the last major revision of UML, UML 2.0?
- What changes were made during the last minor revision of UML, UML 2.4?
- How mature is UML 2.x?
- What is Model-Driven Development?
- What is the relationship between UML and MDD?
- What is the relationship between UML and SysML?
- What is the best way to learn UML?
- Which Architecture Description Language is easier to learn, UML or SysML?
- How can readers submit new questions for this FAQ?
- UML DIAGRAMS & MODELING TECHNIQUES
- What are the "Big Six Diagrams" of UML?
- Which UML diagrams support Agile Modeling or Agile Methods (SCRUM, Crystal, etc.)?
- What is the difference between a structural diagram and a behavioral diagram?
- What is a UML Use Case diagram and how is it used?
- What is a UML Activity diagram and how is it used?
- What is a UML Class diagram and how is it used?
- What is a UML Composite Structure diagram and how is it used?
- What is a UML Sequence diagram and how is it used?
- What is a UML State Machine diagram and how is it used?
- What is a UML Package diagram and how is it used?
- What is the difference between Generalization and Aggregation (Composition) relationships?
- What is the difference between Composition ("black diamond") and Aggregation ("white diamond") relationships?
- How can you define Requirements traceability across UML diagram types?
- UML TOOLS & INTEROPERABILITY
- What UML modeling tools are available?
- How should I select a UML modeling tool for my project or team?
- What evaluation criteria should I use for UML modeling tool selection?
- What is the difference between UML compliance and conformance?
- What is UML certification, and how is it related to compliance and conformance?
- Where can I find a Visio template ("stencil") for UML?
- What does it mean for a UML model or a UML tool to be "executable"?
- Why can't I interchange UML models between different UML modeling tools?
- ADVANCED UML TOPICS
- What Model-Driven methods and processes are compatible with UML?
- What Model-Based architecture frameworks are compatible with UML?
- What is Model Management and why is it important?
- What is relation between a View and a ViewPoint?
- What is relation between a View and a Subsystem?
- Can UML and SysML be used together in the same project?
- Can UML be customized by vendors or users?
- Will there be other variations or dialects of the UML?
- What is the roadmap for a UML 3.0 major revision?
-
GENERAL
-
Back to Top
What is the Unified Modeling Language (UML)?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.

UML 2 & Visual Modeling Language Evolution
Reproduced by Permission © 2003-2012 PivotPoint Technology Corp.
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. (See Specifications page.)
UML 2 Diagram Taxonomy
Reproduced by Permission © 2003-2012 PivotPoint Technology Corp.
Back to TopRate This Entry -
Back to Top
Why use UML?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
Back to TopRate This Entry -
Back to Top
Who created the UML?The short answer is that the Unified Modeling Language (UML) originated from the fusion of the three leading object methods of the early 1990's: Grady Booch's Booch Method, James Rumbaugh's Object Modeling Technique, and Ivar Jacobson's Objectory method.
However, a longer and more accurate answer follows. James Rumbaugh, the primary methodologist for the Object Modeling Technique (OMT) method, joined Grady Booch, the Chief Scientist at Rational Software who authored the Booch Method, at Rational Software in 1994. At Rational Software Booch and Rumbaugh collaborated on the Unified Method v. 0.8, which combined their object modeling method notations and was released at the Object-Oriented Programming and LAnguages (OOPSLA) conference in 1995. After realizing that the problem of unifying their object modeling notations was more tractable than unifying their methods, Booch and Rumbaugh were joined by Ivar Jacobson, the primary methodologist for the Objectory method, at Rational Software at 1995. These three object modeling methodologists, were collectively referred to as the "Three Amigos".
Seeing the business opportunity to exploit UML standardization leadership to further its marketing strategy for Rational Rose and other software development tools, Rational organized the UML Partners consortium in 1996 to respond to the OMG's RFP for object modeling tool interoperability. The original UML Partners consortium consisted of a strategic mix of software tool vendors and systems integrators, including Rational Software Corporation, Microsoft, Hewlett-Packard, Oracle, Texas Instruments, MCI Systemhouse, Unisys, ICON Computing, and Intellicorp. At first the Three Amigos functioned as technical co-chairs and Ed Eykholt, a Rational employee, was the project leader. The UML Partners' UML 1.0 specification draft was proposed to the Object Management Group (OMG) in January 1997, but its semantics were considered inadequate for OMG adoption. Consequently, the Three Amigos asked Cris Kobryn, the Chief Scientist at MCI Systemhouse with expertise in AI linguistics and formal languages, to chair a UML Semantic Task Force to finalize UML semantics and integrate them with related OMG standardization efforts. The result of this work, UML 1.1, was submitted to the OMG in August 1997 and was formally adopted by the OMG in November 1997.
UML2 Postscript: Kobryn went on to chair the UML Revision Task Force that specified the UML 1.2-1.4 minor revisions (1997-2002). During 2000-2003 he organized and chaired the U2 Partners consortium, which successfully specified a UML 2.0 major revision that was formally adopted by the OMG in 2003. During 2003-2006 Kobryn chaired the open source SysML project, which specified the Systems Modeling Language (SysML) dialect of UML for Systems Engineering applications.
Back to TopRate This Entry -
Back to Top
Why do Software Developers need a precise visual modeling language? Why aren't informal whiteboard drawings and ad hoc Visio diagrams sufficient?Answer To Be Provided.
You can request additional questions to be answered in the UML FAQ by sending email to FAQ@UMLforum.com.
Back to TopRate This Entry -
Back to Top
What is the current version of UML, and how can I obtain a copy?The latest version of the UML specification is OMG UML v. 2.4.1, which is available from the UML Specifications page of this web.
Back to TopRate This Entry -
Back to Top
Who maintains the UML specification and how is it updated?The Object Management Group (OMG) has adopted and maintains the UML specification. As with any OMG specification, minor revisions to UML are effected by Revision Task Forces (RTFs) and major revisions are effected by Requests for Proposals (RFPs). For more details regarding the OMG revision processes see the the OMG web.
Back to TopRate This Entry -
Back to Top
What changes were made during the last major revision of UML, UML 2.0?Noteworthy changes made in the UML 2.0 major revision include:
- Hierarchical decomposition of structures and support for component-based development. UML 2 introduces a major new diagram type, Composite Structure diagrams, that includes new constructs (Parts, Ports and Connectors) which allow you to recursively decompose a a system-of-systems into systems, subsystems, components, sub-components, etc.
- Hierarchical decomposition of behavior. UML 2 enhances Activity and Sequence diagrams so that you can recursively decompose behaviors into sub-behaviors. For example, you can decompose Action Nodes into sub-Action Nodes, sub-sub-Action Nodes, etc.
- Improved integration between structural and behavioral models. When properly applied UML 2 Parts allow you to seamlessly integrates structural and behavioral diagrams. For example, the same EFI Part in a Composite Structure diagram for an Engine might also be reused for a swimlane partition in an Activity diagram for Activate Cruise Control.
- Enhanced support for executable models. UML 2 includes a fully integrated Action Semantics that enables executable models capable of driving simulations and automatically generating programming code.
Back to TopRate This Entry -
Back to Top
What changes were made during the last minor revision of UML, UML 2.4?Answer To Be Provided.
You can request additional questions to be answered in the UML FAQ by sending email to FAQ@UMLforum.com.
Back to TopRate This Entry -
Back to Top
How mature is UML 2.x?Although UML v. 2.x is a major revision of UML 1.x that fixes many of the shortcomings of first generation UML, many significant issues need to be resolved. These include, but are not limited to, the following:
- GENERAL ISSUES
- Language bloat.A common and fair criticism of UML 2.x is that it is gratuitously large and complex. While SysML marketecture indicates that SysML is a "smaller, simpler" language for systems engineers, the reality is that SysML itself also suffers from language bloat because it adds two new diagrams (Requirements and Parametrics) and increases the number of stereotypes with imprecise semantics (see Increase of UML 2.x voodoo semantics below), while failing to explicitly exclude many redundant and software-centric UML 2 constructs from the seven UML 2 diagrams that it inherits. The bloat is exacerbated because the SysML specification provides no guidelines regarding how to combine SysML models with UML models for engineering teams that include both software engineers and system engineers.
- Recommendations: Explicitly remove UML constructs not needed for SysML. Provide concrete guidelines regarding how to combine SysML models with UML models for engineering teams that include both software engineers and system engineers. Encourage tool vendors to support automated translation of diagrams shared between the two languages.
- Increase of UML 2.x voodoo semantics.Another common and fair criticism of UML 2.x is that its semantics, including its purported executable semantics (a.k.a. the Action Semantics) are ambiguous and imprecise. While SysML marketecture indicates that SysML supports precise semantics for specifying parametric constraints, the reality is SysML defines only vague natural language semantics for ConstraintBlock, ConstraintProperty, and Context-Specific Values/Constraints. Similarly, the semantics for Activity diagram extensions related to continuous/discrete rates and probabilities lack formal precision.
- Recommendations: Add precise semantics for Parametric constructs and Activity diagram extensions.
- SPECIFIC ISSUES
- Structural constructs for Interfaces and Instances are complex and muddled.The semantics and notations for StandardPorts, FlowPorts, Provided/Required Interfaces, and ItemFlows are excessively complex and their usages are frequently counter-intuitive since they conflate dependencies with flows. Although Instance Specifications were recently added to SysML 1.2, Object diagrams were not, and many issues remain about their specialized usage within SysML.
- Recommendations: Unify, simplify, and clarify the Ports/Interfaces/ItemFlows constructs. Add Object diagrams and clarify differences between SysML and UML Instance syntax semantics.
- Requirement constructs are incomplete and confusing.Problems associated with Requirement diagrams include, but are not limited to, clarifying decomposition/containment semantics, categorization, defining basic properties, clarifying relationship semantics, and reducing the semantic overlap with Use Cases.
- Recommendations: Replace Containment with Composition for Requirements decomposition. Retire Copy dependency. Provide additional properties for source, priority, risk, verifyMethod, etc.
- Allocation relationships and tables are incomplete and ambiguous.With the exception of the AllocateActivityPartition stereotype the current specification fails to leverage the architectural integrity allocations of its parent language. In addition, the definitions of the Allocate and Allocated stereotypes strongly suggest conflated dependency and flow semantics, which are indicative of novice UML modelers ("which way does the arrow point?").
- Recommendations: Replace Allocate dependencies with flows that use distinctive notation (not dashed arrrows labeled with keywords). Require that implementations automatically generate Allocate dependencies for AllocateActivityPartitions.
- ValueType-Type integration needs simplification.The current usage of ValueTypes with Units and Dimensions and their integration with UML DataTypes needs to be clarified and simplified.
- Recommendations: Simplify and predefine a standard ValueType library.
Back to TopRate This Entry -
Back to Top
What is Model-Driven Development (MDD)?Model-Driven Development (MDD), a.k.a. Model-Driven Software Engineering (MDSE), is a software development paradigm that emphasizes the use of rigorous visual modeling techniques throughout the Software Development Life Cycle (SDLC). MDD is a subdiscipline of the Model-Based Engineering paradigm that promotes the use of open standards for visual modeling (e.g., UML2, BPMN, SysML, ArchiMate), and encourages the integration of visual modeling and traditional Software Development best practices, including Agile Development.
For more information about Model-Driven Development and related Model-Based Engineering subdisciplines check out the Model-Based Engineering Forum.
Back to TopRate This Entry -
Back to Top
What is the relationship between UML and Model-Driven Development (MDD)?A recommended best practice for any Model-Driven Development approach is the synergistic application of Model-Based Languages, Model-Based Tools, Model-Based Processes, and Model-Based Architecture Frameworks.

System Architecture Tetrad
Reproduced by Permission © 2003-2012 PivotPoint Technology Corp.
As an open standard Architecture Description Language (ADL) for software-intensive applications, UML 2 is the Model-Based Language of choice for MDD endeavors. However, if you don't choose and apply the other key enabling MDD technologies properly (Modeling Tools, Model-Based Processes, and Architecture Frameworks) your MDD project will likely achieve poor or mixed results.
Back to TopRate This Entry -
Back to Top
What is the relationship between UML and its SysML dialect?SysML is a dialect (Profile) of UML for Systems Engineering applications that was originally developed as an open source specification by the SysML Partners, an informal association of modeling tool vendors and industry leaders. The open source SysML specification was eventually adapted and adopted by the OMG as OMG SysML. For more information about open source SysML and OMG SysML see SysML.org and the OMG SysML web pages.
Back to TopRate This Entry -
Back to Top
What is the best way to learn UML?Learning any new language is difficult, whether it is a natural language (e.g., Japanese, Swahili, English) or an artificial language, such as UML. Since SysML is a dialect (Profile) of UML 2, if you are fluent in UML 2—and understand how Parts, Ports and Connectors support component-based design—you should be able to learn the SysML dialect relatively quickly. On the other hand, if you have only dabbled with UML 1 and have succumbed to UML 1 worst practices (e.g., Use Case Abuse), your previous bad exposure to UML 1 may be a liability rather than an asset.
In order to increase your likelihood of achieving UML language fluency, you may want to consider a multi-pronged approach to learning UML. For example, if you have the opportunity you may want to start off with basic UML hands-on training, followed up by expert coaching (mentoring) for On The Job training, which in turn is followed up with advanced UML hands-on training. For the best learning experience, ensure that all your UML training is taught by expert practitioners with extensive application experience on large projects, and includes frequent hands-on practice sessions and Q&A sessions.
In addition, you should also also read voraciously about UML techniques and best practices, so that you can further benefit from the experience (and mistakes) of others.
You can find a listing of selected UML 2 training resources on the UML Training page of this web.
You can find a listing of selected UML 2 tutorials on the UML Tutorials page of this web.
You can find a listing of selected UML 2 publications (including books, papers, and articles) on the UML Publications page of this web.
Back to TopRate This Entry -
Back to Top
Which Architecture Description Language is easier to learn, UML or SysML?The answer likely depends on whether you are a Software Developer or a Systems Engineer. If you are a Systems Engineer, you should expect SysML to be easier to learn, since it is smaller language and it is customized for your systems engineering applications. If you are a Software Developer, you will likely prefer UML's software-centric bias.
Back to TopRate This Entry -
Back to Top
How can readers submit new questions for this FAQ?
-
UML DIAGRAMS & MODELING TECHNIQUES
-
Back to Top
What are the "Big Six Diagrams" of UML?The term the "Big Six Diagrams" of UML refers to the six essential diagrams of UML: Use Case, Activity, Class, Sequence, Composite Structure, and State Machine diagrams. The expression was coined by Cris Kobryn, the chair of the UML Partners' Semantic Task Force for UML 1.1 and the chair of the UML2 Partners' UML 2.0 specification proposal team, in 2003. Based on his extensive experience as a UML specification chair and as a consultant on large-scale modeling projects, Kobryn applied the Pareto Principle (a.k.a. 80/20 rule) to UML diagrams techniques and identified these six diagrams as the "vital few", with the remainder relegated to the "trivial many". He further postulated that any UML modeler who mastered the "Big Six Diagrams" should find it relatively straightforward to master the remaining UML diagrams as special usages.
Back to TopRate This Entry -
Back to Top
Which UML diagrams support Agile Modeling or Agile Methods (SCRUM, Crystal, etc.)?Answer To Be Provided.
You can request additional questions to be answered in the UML FAQ by sending email to FAQ@UMLforum.com.
Back to TopRate This Entry -
Back to Top
What is the difference between a structural diagram and a behavioral diagram?As their names imply, a structural diagram emphasizes the static structures of the system entities, whereas a behavioral diagram emphasizes the dynamic behaviors of system entities.
Back to TopRate This Entry -
Back to Top
What is a UML Use Case diagram and how is it used?Answer To Be Provided.
You can request additional questions to be answered in the UML FAQ by sending email to FAQ@UMLforum.com.
Back to TopRate This Entry - Back to Top
