Skip to content
Fix Code Error

What’s the best UML diagramming tool?

March 13, 2021 by Code Error
Posted By: eplawless

I’m trying to choose a tool for creating UML diagrams of all flavours. Usability is a major criteria for me, but I’d still take more power with a steeper learning curve and be happy. Free (as in beer) would be nice, but I’d be willing to pay if the tool’s worth it. What should I be using?

Solution

Some context: Recently for graduate school I researched UML tools for usability and UML comprehension in general for an independent project. I also model/architect for a living.

The previous posts have too many answers and not enough questions. A common misunderstanding is that UML is about creating diagrams. Sure, diagrams are important, but really you are creating a model. Here are the questions that should be answered as each vendor product/solution does some things better than others. Note: The listed answers are my view as the best even if other products support a given feature or need.

  • Are you modeling or drawing? (Drawing – ArgoUML, free implementations, and Visio)
  • Will you be modeling in the future? (For basic modeling – Community editions of pay products)
  • Do you want to formalize your modeling through profiles or meta-models? OCL? (Sparx, RSM, Visual Paradigm)
  • Are you concerned about model portability, XMI support? (GenMyModel, Sparx, Visual Paradigm, Altova)
  • Do you have an existing set of documents that you need to work with? (Depends on the documents)
  • Would you want to generate code stubs or full functioning code?(GenMyModel, Visual Paradigm, Sparx, Altova)
  • Do you need more mature processes such as use case management, pattern creation, asset creation, RUP integration, etc? (RSA/RSM/IBM Rational Products)

Detailed Examples: IBM Rational Software Architect did not implement UML 2.0 all the way when it comes to realizes type relationships when creating a UML profile, but Visual Paradigm and Sparx got it right.
Ok, that was way too detailed, so a simpler example would be ArgoUML, which has no code generation features and focuses on drawing more than the modeling aspect of UML.
Sparx and Visual Paradigm do UML really well and generate code well, however, hooking into project lifecycles and other process is where RSM/RSA is strong.
Watch out for closed or product specific code generation processes or frameworks as you could end up stuck with that product.

This is a straight brain dump so a couple details may not be perfect, however, this should provide a general map to the questions and solutions to looking into.

NEW – Found a good list of many UML tools with descriptions. Wiki UML Tool List

Answered By: Ted Johnson

Related Articles

  • Join Not Displaying Selected Items - Using Svelte
  • Reference - What does this regex mean?
  • Replace every other instance of a string
  • Tools for creating Class Diagrams
  • Multiple elements per v-for loop
  • Accessing nested JSON with Vue
  • Scripting Required for Polymer Submenu/Pages Navigation?
  • Nested routes in Ember JS and Ember Rails
  • The definitive guide to form-based website authentication
  • Why does C++ code for testing the Collatz conjecture…
  • Explanation of the UML arrows
  • Getting started with Haskell
  • What is the worst programming language you ever worked with?
  • Reference — What does this symbol mean in PHP?
  • SQL query return data from multiple tables
  • How to make a SIMPLE C++ Makefile
  • Java ElasticSearch None of the configured nodes are…
  • #ember-power-select, How to set a preselected value…
  • Backbone.js Handling of Attributes That Are Arrays
  • How can I find the product GUID of an installed MSI setup?
  • Limitations on polymer conditional templates?
  • Memcached vs. Redis?
  • "Thinking in AngularJS" if I have a jQuery background?
  • Can't connect to MySQL server error 111
  • sql query to find priority jobs
  • Database development mistakes made by application developers
  • What are the nuances of scope prototypal /…
  • org.springframework.beans.factory.BeanCreationExcept…
  • c++ how to align output with for loop
  • Eclipse plugin for generating a class diagram
  • Graph visualization library in JavaScript
  • Generating UML from C++ code?
  • Format Column Data before passing to Vue Good-Table
  • Vue.js dynamic components - load only when data is…
  • How to fix filter by column in angular?
  • Shopware6 - not able to get values due to my foreach loop
  • How do SO_REUSEADDR and SO_REUSEPORT differ?
  • In UML class diagrams, what are Boundary Classes,…
  • What is your most productive shortcut with Vim?
  • creating triggers for After Insert, After Update and…
  • org.springframework.beans.factory.NoSuchBeanDefiniti…
  • How do you parse and process HTML/XML in PHP?
  • Proper use of the IDisposable interface
  • How to generate a random string of a fixed length in Go?
  • What does AngularJS do better than jQuery?
  • Flutter - Cubit - loaded state - managing…
  • How to access this variable from my store / state in…
  • How to filter a RecyclerView with a SearchView
  • Ember.js count position of object in Ember Data…
  • vuex - unknown action type (can't dispatch my action)
  • Django - update inline formset not updating
  • Ember routes deserialization not working on load
  • How to allocate aligned memory only using the…
  • why doesn't the ember route update the url correctly…
  • PHP parse/syntax errors; and how to solve them
  • Capturing User Authentication and Refresh Tokens…
  • Continuous Integration vs. Continuous Delivery vs.…
  • Unexpected behaviour java priority queue. Object…
  • Fill area between two non-linear curves without…
  • What is the incentive for curl to release the…
  • Vue project tests are failing when I added vue-i18n…
  • Autowiring fails: Not an managed Type
  • Android Linear Layout Parameters
  • Logging best practices
  • Proxy Route Strings
  • Replacing many missing columns in a Data Frame using…
  • Vue2: warning: Avoid mutating a prop directly
  • How do I use namespaces with TypeScript external modules?
  • How should a model be structured in MVC?
  • Passing Custom Variables to PayPal
  • Vue- How to watch the properties inside array of objects
  • Secure hash and salt for PHP passwords
  • Heroku deploy fails with react and next js
  • Peak signal detection in realtime timeseries data
  • Scrape a school's top247 college football recruits…
  • debuild - Is it possible to build several debian…
  • Vue.js v-for loop from an object key and nested array
  • Python, creating objects
  • List of Java class file format major version numbers?
  • Identifying and solving…
  • Is this request generated by EF Core buggy or is it my code?
  • How to keep disappearing Flutter Bottom Navigation…
  • Generate UML Class Diagram from Java Project
  • How to fetch and filter the data
  • Rendering a dropdown Menu in Backbone
  • What is a "cache-friendly" code?
  • Start redis-server with config file
  • What does do?
  • ExpressJS How to structure an application?
  • Idiomatic Emberjs for nested routes but non-nested templates
  • What does this symbol mean in JavaScript?
  • Ukkonen's suffix tree algorithm in plain English
  • Vue JS insert and remove html elements dynamicaly
  • My gcc compiler giving me warning for implicit…
  • How do malloc() and free() work?
  • 2D cross-platform game engine for Android and iOS?
  • Spring schemaLocation fails when there is no…
  • How do I set the conditional requirements and how do…
  • Pygame Curve Movement Problem How To Fix?
  • Set up adb on Mac OS X

Disclaimer: This content is shared under creative common license cc-by-sa 3.0. It is generated from StackExchange Website Network.

Post navigation

Previous Post:

finding and replacing elements in a list

Next Post:

How to remove the first Item from a list?

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

.net ajax android angular arrays aurelia backbone.js bash c++ css dataframe ember-data ember.js excel git html ios java javascript jquery json laravel linux list mysql next.js node.js pandas php polymer polymer-1.0 python python-3.x r reactjs regex sql sql-server string svelte typescript vue-component vue.js vuejs2 vuetify.js

  • you shouldn’t need to use z-index
  • No column in target database, but getting “The schema update is terminating because data loss might occur”
  • Angular – expected call-signature: ‘changePassword’ to have a typedeftslint(typedef)
  • trying to implement NativeAdFactory imports deprecated method by default in flutter java project
  • What should I use to get an attribute out of my foreign table in Laravel?
© 2022 Fix Code Error