General[edit]
Name | Creator | Platform / OS | First public release | Latest stable release | Open source | Software license | Programming language used |
---|---|---|---|---|---|---|---|
ArgoUML | Tigris.org | Cross-platform (Java) | 1998-04 | 2011-12-15[1] | Yes | EPL | Java, C++ (as module) |
Astah | Change Vision, Inc. | Cross-platform (Java) | 2009-10-19 | 2018-09-26 | No | Commercial. Free education edition, subscription model | Java |
ATL | Obeo, INRIA Free software community | Cross-platform (Java) | Unknown | 2010-06-23 | Yes | EPL | Java |
Borland Together | Borland | Cross-platform (Java) | Unknown | 2008 | No | Commercial | Unknown |
BOUML | Bruno Pagès | Cross-platform | 2005-02-26 | 2018-10-23 | No | Free from v7.0, Commercial starting from v5.0 up to v6.12,GPL before v5.0[2] | C++/Qt and Java ('plug-out') |
Cacoo | Nulab | Windows 7+, Mac OS X | October 2010 | July 2018 | No | Commercial, Free edition available | HTML5 |
CaseComplete | Serlio Software | Windows | 2004 | 2013-04 | No | Commercial | C# |
ConceptDraw PRO | CS Odessa | Windows, macOS | 1993 | 2010 (v9) | No | Commercial | Unknown |
Dia | Alexander Larsson/GNOME Office | Cross-platform (GTK+) | 2004? | 2012-07-05 | Yes | GPL | C |
Eclipse UML2 Tools[3] | Eclipse Foundation | Cross-platform (Java) | 2007 | 2009-06-19 | Yes | EPL? | Java |
Edraw Max | Edrawsoft | Windows, Linux, macOS | 2004 | 2015-03 | No | Commercial | C++ |
Enterprise Architect | Sparx Systems | Windows (supports Linux and macOS installation) | 2000 | 2019-03-06 | No | Commercial | C++ |
Gliffy | Gliffy | Chrome, Safari, Firefox, Internet Explorer 9+ | 2006-08-01 | 2015-01 (v. 5.1) | No | Commercial, Free trial | HTML5 and JavaScript |
JDeveloper | Oracle Corporation | Cross-platform (Java) | Unknown | Unknown | No | Freeware | Java |
Lucidchart | Lucid Software | Windows, macOS, Linux, Solaris | 2008-12 | 2014-10-07 | No | Commercial / Free (educational) | HTML5 and JavaScript |
MagicDraw | No Magic | Cross-platform (Java) | 1998 | 2017-02-20 (v18.5) | No | Commercial | Java |
Microsoft Visio | Microsoft | Windows | 1992 | 2016 (v16.0) | No | Commercial | Unknown |
Microsoft Visual Studio | Microsoft | Windows | 1997-02 | 2016-06-27 | No | Community & Express editions: Registerware; Enterprise, Professional & Others editions: Trialware | C++, C# |
Modelio | Modeliosoft (SOFTEAM Group) | Windows, Linux, macOS | 2009 | 2019-04-17 (3.8.1) | Yes | GPL and Commercial | Java |
MyEclipse | Genuitec | Windows, Linux | 2003[4] | Unknown | No | Commercial | Java |
NClass | Balazs Tihanyi | Windows, macOS, Linux, Unix | 2006-10-15 | 2011-06-06 | Yes | GPL | C# |
NetBeans[5] | Oracle Corporation | Windows, macOS, Linux, Unix | 1996 | 2013-02-21 | Yes | CDDL or GPL2 | Java |
Open ModelSphere | Grandite | Cross-platform (Java) | 2002-02 | 2009-11-04 | Yes | GPL | Java |
Papyrus | Commissariat à l'Énergie Atomique, Atos Origin | Windows, Linux, macOS (Java) | 2013-06-27 | 2018-12 | Yes | EPL | Java |
PlantUML | Arnaud Roques | Cross-platform (Java) | 1999-04-30 | 2017-09-03 | Yes | GPL | Java |
Poseidon for UML | Gentleware | Cross-platform (Java) | Unknown | 2009 | No | Commercial | Java |
PowerDesigner | Sybase | Windows | 1989 | 2018 | No | Commercial | Unknown |
PragmaDev Studio | PragmaDev | Windows, Linux, OS X | 2002 | 2018-02-07 | No | Free, Commercial | Python, C, C++ |
Prosa UML Modeller | Insoft Oy | Windows | 1996 | 2013-10-19 | No | Commercial | C/C++ |
Rational Rhapsody | IBM | Windows, Linux | 1996 | 2015-07-01 (8.1.3) | No | Commercial | C, C++, C#, Java, Ada |
Rational Rose XDE | IBM | Windows, Linux, Unix | Unknown | Unknown | No | IBM EULA | Unknown |
Rational Software Architect | IBM | Windows, Linux | Early 1990s | 2015-09-18 | No | IBM EULA | Java/C++ |
Rational Software Modeler | IBM | Windows, Linux | 2004-10-13 | 2008-09 | No | IBM EULA | Unknown |
Rational System Architect | IBM | Windows | Unknown | 2013-03-15 | No | Commercial | Unknown |
Reactive Blocks | Bitreactive | Windows, macOS, Linux | 2011-11-13 | 2016-09-16 | No | Commercial, Free Community Edition | Java |
RISE | RISE to Bloome Software | Windows (.NET) | 2008 | 2010-09-03 | No | Freeware | C# |
Software Ideas Modeler | Dusan Rodina | Windows (.NET), Linux (Mono) | 2009-08-06[6] | 2019-02-01 | No | Commercial, Freeware for non-commercial use | C# |
StarUML | MKLab | Windows, macOS, Linux | 2005-11-01 | 2018-08-17 | No | Commercial | Delphi |
Umbrello UML Modeller | Umbrello Team | Unix-like; Windows | 2006-09-09 | 2018-08-29 | Yes | GPL | C++, KDE |
UML Designer | Obeo | Windows, macOS, Linux | 2012 | 2017-09-18 | Yes | EPL | Java, Sirius |
UMLet | The UMLet Team | Windows, macOS, Linux | 2005-11-05[7] | 2016-11-24[7] | Yes | GPL | Java |
UModel | Altova | Windows | 2005-05 | 2018-10-17 | No | Commercial | Java, C#, Visual Basic |
Umple | University of Ottawa | Cross-platform; Java/Eclipse | 2008 | 2018-02-19 | Yes | MIT License | Umple, Java, PHP, Javascript |
Visual Paradigm for UML | Visual Paradigm Int'l Ltd. | Cross-platform (Java) | 2002-06-20 | 2018-11-28 | No | Commercial, Free Community Edition | Java, C++ |
WhiteStarUML | janszpilewski | Windows 7-10 | 2011-12-18 | 2017-05-14[8] | Yes | GPL2 | Delphi |
yEd | yWorks GmbH | Windows, macOS, Linux, Unix | Unknown | 2016-07-15[9] | No | Free | Java |
Name | Creator | Platform / OS | First public release | Latest stable release | Open source | Software license | Programming language used |
Features[edit]
Name | UML 2 | MDA | XMI | Templates | Languages generated | Languages reverse engineered | Can be integrated with | Details |
---|---|---|---|---|---|---|---|---|
PragmaDev Studio | Yes | Yes | Partial | No | C, C++ | No | Integration with Reqtify traceability tool. Model simulator integrated with any FMI 2.0 supporting tool. Generated code can be integrated on the following RTOS: VxWorks, FreeRTOS, ThreadX, CMX, OSE Delta, OSE epsilon, uITRON 3, uITRON 4, Nucleus, posix, win32. | Dedicated to modeling and testing of communicating systems. Based on ITU-T Z.109 UML profile, SDL-RT, SDL. The model can be simulated and can be exported to model checking tools. Full testing environment integrated based on TTCN-3. |
ArgoUML | No | Yes | Yes | Unknown | C++, C#, Java, PHP4, PHP5, Ruby | Java (other languages with plugins) | Unknown | Closely follows the UML standard |
Astah | Yes | No | Yes | Unknown | Java, C++, C#, Python, Ruby and any other languages with plugins | Java, C++, C#, PHP | Mind Mapping, ER Diagram, DFD, Flowchart, CRUD, Traceability Map, Requirement Diagram and Requirement table. Provides API and Plugins, RTF, HTML Export. | |
ATL | Yes | No | Yes | No | Unknown | Unknown | Available from the Eclipse M2M project (Model to Model). | Can transform UML & EMF models into other models. It has a repository of transformations called ZOO about a large set of common industrial concerns and educational labs. |
Borland Together | Yes | Yes | No | Yes | Java 6, C++, CORBA | Unknown | Eclipse and MS VS.NET 2005 | |
BOUML | Yes | Yes | Yes | Yes | C++, Java, PHP, IDL, Python, MySQL | C++, Java, PHP, MySQL | Unknown | UML 2. Solid code roundtrip, fast. Extensible through 'plug-outs' written in C++ or Java |
Cacoo | Yes | Unknown | Unknown | Yes | Unknown | Unknown | Google Drive, Google Docs, Typetalk, Adobe Creative Cloud, Slack, Atlassian Confluence, Dropbox, Visio, Box. | |
CaseComplete | Unknown | Unknown | Export | Unknown | Unknown | Unknown | Unknown | Provides management and editing of use cases, their flow of events, and referenced requirements. Supports use case and activity diagrams. |
Dia | Partly | No | No | No | Included Python script codegen.py 'export filter' to Python, C++, JavaScript, Pascal, Java, PHP; external tools add Ada, C, PHP5, Ruby, shapefile, C#, SQL (Sybase, Postgres, Oracle, DB/2, MS-SQL, MySQL, …) | No | No | Uses Python as scripting language |
Eclipse UML2 Tools | Yes | Yes | Yes | Yes | Java (or Eclipse project supported?) | Java (or Eclipse project supported?) | Eclipse | Ten UML 2 diagram types. |
Enterprise Architect | Yes | Yes | Yes | Supports MDA templates and Code Generation templates | ActionScript, C, C#, C++, Delphi, Java, PHP, Python, Visual Basic, Visual Basic .NET, DDL, EJB, XML Schema, Ada, VHDL, Verilog, WSDL, BPEL, Corba IDL | ActionScript, C, C#, C++, Delphi, Java, PHP, Python, Visual Basic, Visual Basic .NET, DDL, XML Schema, WSDL | Eclipse & Visual Studio | UML 2.5, SysML, BPMN, SoaML, SOMF, WSDL, XSD, ArchiMate. Frameworks: UPDM, Zachman, TOGAF. Forward and Reverse Engineering for code and Database. Model Driven Integrated Development (Edit/Build/Debug) for Java, .Net, PHP & GNU compilers. Simulates Activity, State Machine, Sequence and BPMN diagrams. |
Gliffy | Yes | Unknown | Unknown | Yes | Unknown | Unknown | Google apps, Google drive, JIRA, Confluence | Has libraries of shapes for: UML class, sequence, activity, use case and more. |
Lucidchart | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Google Drive, Google Apps, JIRA, Confluence, Jive, and Box. | |
MagicDraw | Yes | Yes | Yes | Yes | Java, C++, C#, CIL, CORBA IDL, DDL, EJB, XML Schema, WSDL | Java, C++, C#, CIL, CORBA IDL, DDL, EJB, XML Schema, WSDL | Eclipse, EMF, NetBeans | UML 2.3, Full round-trip support for Java, C++, C#, CL (MSIL) and CORBA IDL, Report generator from template in RTF, HTML, XML, ODT, ODS, ODP, and Text (DOCX, XLSX, PPTX since 16.8). |
Microsoft Visio | Plugin | Unknown | Plugin | Plugin | Unknown | Unknown | Unknown | |
Modelio | Yes | Yes | Yes | Yes | Java, C++, C#, XSD, WSDL, SQL | Java, C++, C# | Eclipse,EMF | Full UML2, BPMN2, ArchiMate3. Documentation generation in HTML.Extensions providing documentation generation in Open XML format, support for TOGAF, SysML, SoaML, Hibernate, OMG MARTE standard. Support of model fragments for collaboration. Support of design patterns. |
MyEclipse | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | |
NClass | Unknown | Unknown | Unknown | Unknown | C#, Java | C#, Java | Unknown | |
NetBeans | Unknown | Unknown | Unknown | Unknown | Java | Java | Unknown | Has to be installed as a plug in to enable the UML modeling. |
Open ModelSphere | No | Unknown | Unknown | Yes | Java, SQL | Java | Unknown | Supports data, business-process and UML modeling |
Papyrus | Yes | Unknown | Yes | Unknown | Ada 2005, C/C++, Java addins | Unknown | Eclipse | |
PlantUML | Yes | Unknown | Export | Unknown | Unknown | C#, grails, Java, Lua, PHP, SqlALchemy | Chrome, Word, Open Office, Google Docs, J2EE Servlet, JQuery, Sublime, Eclipse, NetBeans, IntelliJ, LaTeX, Emacs, Doxygen, etc.[10] | Creates diagrams using simple text language. Sequence, use case, class, activity, component, state, object, and UI mock diagrams are supported. Outputs images in PNG or SVG format. |
Poseidon for UML | Yes | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | Commercial version of ArgoUML |
PowerDesigner | Yes | Yes | Yes | Yes | Java, C#, VB .NET | Unknown | Eclipse | Data-modeling, business-process modeling - round trip engineering |
Prosa UML Modeller | Yes | Yes | Open modelbase | Yes | C++ Java, C#, SQL DDL and SQL queries | C++ Java and C# class headers are synchronized between diagrams and code in real-time | Programmer's workbenches, documentation tools, version control systems | Supports following UML diagrams: Use case diagram, Sequence diagram, Collaboration diagram, Class diagram, Statechart diagram, Activity diagram, Component diagram, Deployment diagram and Package diagram |
Rational Rhapsody | Yes | Yes | Yes | Yes | C++, C, Java, Ada, C#, Corba, Customizable for other languages | C++, C, Java, Ada, C#, Customizable for other languages | Visual Studio, Eclipse, TcSE, WindRiver, Green Hills, QNX, Linux, Mathworks Simulink, DOORS, customizable for others | Targets real-time or embedded systems and software using industry standard languages (UML, SysML, AUTOSAR, DoDAF, MODAF, UPDM, DDS), full code generation (structural, behavioral, functional), simulation, model based testing, integration with numerous real time operating systems and IDE's |
Rational Rose XDE | No | Unknown | Unknown | Unknown | Unknown | Unknown | Unknown | |
Rational Software Architect | Yes | Yes | Yes | Unknown | Java, C#, C++, EJB, WSDL, XSD, IDL, SQL | Java, C++, .NET | Eclipse | |
Rational Software Modeler | Yes | Yes | Unknown | Unknown | Unknown | Unknown | Eclipse | |
Rational System Architect | No | Unknown | Export | Unknown | C++, Java, WSDL | C++, Java, WSDL | Unknown | |
Reactive Blocks | Yes | No | Yes | No | Java | Unknown | Eclipse | Code generation from Activity Diagrams for J2SE, OSGi, Kura, and ESF, unit testing via JUnit, supports formal analysis and state space simulation |
Software Ideas Modeler | Yes | Yes | Yes | Yes | ActionScript, C++, C#, Delphi, Java, JavaScript, PHP, Python, Ruby, SQL DDL, VB.NET, VB6, XSD | C++, C#, VB.NET, Java, Object Pascal, PHP, Ruby | Unknown | UML, BPMN, SysML, ArchiMate, JSD, Data Flow Diagram, Flowchart, Robustness Diagram, CRC, ERD, Mixed Diagram, HTA, UI, Venn, Behavior Tree, Structure Chart, Decision Table, Roadmap, Computer Network Diagram, Layer Diagram, Web Page Diagram, Grafcet, custom diagrams |
StarUML | Yes | Yes | Import | Yes | Java,C#,C++ | Java,C++,C# Code Generator and Reverse Engineer | JavaScript, Node.js | Plug-in architecture: JavaScript, HTML5, Node.js |
Umbrello UML Modeller | Yes[11] | Yes | Yes | Unknown | C++, Java, Perl, PHP, Python … 16 | C++, IDL, Pascal/Delphi, Ada, Python, Java; import XMI, RoseMDL | KDE | |
UML Designer | Yes | Yes | Yes | Unknown | Any kind of languages as it is compatible with code generator tools like Eclipse UMLGenerators or Acceleo | Any kind of languages supported by Eclipse UML Generators | Eclipse | Open source under EPL license, based on Eclipse, EMF, Sirius |
UMLet | No | Unknown | Unknown | No | Unknown | Unknown | Eclipse | |
UModel | Yes | Yes | Yes | Yes | Java, C#, Visual Basic | Java, C#, Visual Basic | Eclipse, Visual Studio | Also supports business process modeling, SysML, and database modeling |
Umple | Class, State, Composite Structure only | No | Yes | Yes | Java, C++, SQL, Alloy, NuSMV, yUML, USE | Java | Command-line tools, Embeddable in web pages, Eclipse | Input or export can be by diagram or Umple textual form, separation of concerns (aspects, traits, mixins), embeds action code in Java and other languages, written in itself, documentation generation, plugin architecture for generators |
Visual Paradigm for UML | Yes | Unknown | Commercial version | Unknown | Java, C#, C++, PHP, Ada, Action Script (all only in commercial version) | Java, C# (binary), C++, PHP (all only in commercial version) | Eclipse, NetBeans, IntelliJ and Visual Studio | UML 2.4.1, SysML, BPMN, SoaML, SOMF, WSDL, XSD, ArchiMate. Frameworks: UPDM, Zachman, TOGAF. Forward and Reverse Engineering for code and Database. Model Driven Integrated Development (Edit/Build/Debug) for Java and .Net. Simulates Activity, State Machine, Sequence and BPMN diagrams. (only in commercial version) |
WhiteStarUML | Yes | Yes | Import | Yes | Java 1.5,C#,C++, SQL | Java 1.5,C#,C++, SQL | Unknown | WhiteStarUml is a fork of StarUML with an intent to revive its Delphi code base by updating code to recent Delphi editions, reducing dependence on third party components and fixing bugs and adding new features. |
yEd | Unknown | No | No[12] | Unknown | Unknown | Unknown | Unknown | |
Name | UML 2 | MDA | XMI | Templates | Languages generated | Reverse engineered languages | Can be integrated with | Details |
References[edit]
- ^'ArgoUML'. ArgoUML. 2011-12-15. Retrieved 2012-01-23.
- ^'BOUML - an UML tool box'. 2017-05-31. Retrieved 2017-05-31.
- ^'Eclipse UML2 Tools'. Eclipse.org. 2007-08-24. Retrieved 2011-10-12.
- ^'Product History'.
- ^'UML modeling dropped as of v6.8'. Retrieved 2013-04-23.
- ^'Product History'. Retrieved 2013-09-05.
- ^ abThe UMLet Team (13 November 2016). 'UMLet - UML Tool for Fast UML Diagrams 14.2'. eclipse.org.
- ^'WhiteStarUML'. Source Forge. 2017-05-14. Retrieved 2017-08-22.
- ^'yWorks News'. yWorks. 2015-07-16. Retrieved 2016-08-03.
- ^'Running'. PlantUML. Retrieved 2014-11-06.
- ^'Umbrello Features'.
- ^'How to import XMI files into yEd?'.
External links[edit]
Wikimedia Commons has media related to UML tools. |
- UML Tools at Curlie.
An introduction to structure diagrams in UML 2
This is the next installment in a series of articles about the essential diagrams used within the Unified Modeling Language, or UML. In my previous article on sequence diagrams, I shifted focus away from the UML 1.4 spec to OMG’s Adopted 2.0 Draft Specification of UML (a.k.a. UML 2). In this article, I will discuss Structure Diagrams, which is a new diagram category that has been introduced in UML 2. Because the purpose of this series is to educate people about the notation elements and their meanings, this article focuses mainly on the class diagram. The reason for this will soon become clear. Subsequent articles will cover other diagrams included in the structure category.
The yin and yang of UML 2
Structure diagrams in general
The class diagram in particular
The basics
- a class
- an interface
- a data type
- a component.
Class name
Figure 1: Class diagram for the class Flight
Class attribute list
Continuing with our Flight class example, we can describe the class’s attributes with the attribute type information, as shown in Table 1.
Table 1: The Flight class’s attribute names with their associated types
Attribute Name | Attribute Type |
---|---|
flightNumber | Integer |
departureTime | Date |
flightDuration | Minutes |
For example:
Showing a default value for attributes is optional; Figure 2 shows a Bank Account class with an attribute called balance, which has a default value of 0.
Figure 2: A Bank Account class diagram showing the balance attribute’s value defaulted to zero dollars
Class operations list
The Flight class’s operations are mapped in Table 2 below.
Table 2: Flight class’s operations mapped from Figure 3
Operation Name | Parameters Return | Value Type |
---|---|---|
delayFlight | N/A | |
getArrivalTime | N/A | Date |
delayFlight(numberOfMinutes : Minutes) : Date.
] When an operation has parameters, they are put inside the operation’s parentheses; each parameter uses the format “parameter name : parameter type”.Figure 3: The Flight class operations parameters include the optional “in” marking
Inheritance
Figure 4: Inheritance is indicated by a solid line with a closed, unfilled arrowhead pointing at the super class
Figure 5: An example of inheritance using tree notation
Abstract classes and operations
Associations
Bi-directional (standard) association
Figure 6: An example of a bi-directional association between a Flight class and a Plane class
Table 3: Multiplicity values and their indicators
Indicator | Meaning |
---|---|
0..1 | Zero or one |
1 | One only |
0.. | Zero or more |
Zero or more | |
1..* | One or more |
3 | Three only |
0..5 | Zero to Five |
5..15 | Five to Fifteen |
Uni-directional association
Figure 7: An example of a uni-directional association: The OverdrawnAccountsReport class knows about the BankAccount class, but the BankAccount class does not know about the association
Packages
- If the modeler decides to show the package’s members within the large rectangle, then all those members need to be placed within the rectangle. [Note: It’s important to understand that when I say “all those members,” I mean only the classes that the current diagram is going to show. A diagram showing a package with contents does not need to show all its contents; it can show a subset of the contained elements according to some criterion, which is not necessarily all the package’s classifiers.] Also the package’s name needs to be placed in the package’s smaller rectangle (as show n in Figure 8).
- If the modeler decides to show the package’s members outside the large rectangle then all the members that will be shown on the diagram need to be placed outside the rectangle. To show what classifiers belong to the package, a line is drawn from each classifier to a circle that has a plus sign inside the circle attached to the package (Figure 9).
Figure 8: An example package element that shows its members inside the package’s rectangle boundaries
Figure 9: An example package element showing its membership via connected lines
Importance of understanding the basics
Beyond the basics
Interfaces
Figure 10: Example of a class diagram in which the Professor and Student classes implement the Person interface
More associations
Association class
Figure 11: Adding the association class MileageCredit
Aggregation
An association with an aggregation relationship indicates that one class is a part of another class. In an aggregation relationship, the child class instance can outlive its parent class. To represent an aggregation relationship, you draw a solid line from the parent class to the part class, and draw an unfilled diamond shape on the parent class’s association end. Figure 12 shows an example of an aggregation relationship between a Car and a Wheel.
Figure 12: Example of an aggregation association
The composition aggregation relationship is just another form of the aggregation relationship, but the child class’s instance lifecycle is dependent on the parent class’s instance lifecycle. In Figure 13, which shows a composition relationship between a Company class and a Department class, notice that the composition relationship is drawn like the aggregation relationship, but this time the diamond shape is filled.
Figure 13: Example of a composition relationship
Reflexive associations
Figure 14: Example of a reflexive association relationship
Visibility
Table 4: Marks for UML-supported visibility types
Mark | Visibility type |
---|---|
Public | |
# | Protected |
– | Private |
~ | Package |
Figure 15: A BankAccount class that shows the visibility of its attributes and operations
UML 2 additions
Instances
For example:
Because the purpose of showing instances is to show interesting or relevant information, it is not necessary to include in your model the entire instance’s attributes and operations. Instead it is completely appropriate to show only the attributes and their values that are interesting as depicted in Figure 16.