list of dots Digital Research Alliance of Canada logo  NSERC logo  University of Ottawa logo / UniversitĂ© d'Ottawa

User Manual    [Next]   

Getting Started

Umple is a technology for Model-Oriented Programming.

The Umple home page is To download Umple for the command line or an IDE, go to To use Umple online as a web app, go to

Umple allows you to do the following things:

  1. Create UML models textually. Rather than drawing diagrams, it can often be faster to create UML class diagrams and state machines using Umple's textual format that looks just like programming-language code. Editing, comparing and many other tasks can often be done faster using this textual form. Umple has tools that allow you to edit the model textually (and see changes appear in a UML diagram) or to edit a UML diagram (and see changes appear in the textual code)

  2. Add UML modeling constructs directly into your programs, when you are programming in Java, Python, PHP, C++ or Ruby. For example, when programming in Java, you can directly add a UML state machine into your code. This can save you a lot of coding. The Umple compiler acts as a pre-processor, first compiling the state machine to Java, and then compiling the Java into an executable program. Java methods found in the Umple code will be unchanged in the generated output. The same works for languages like Python and C++, although methods have to be tagged with the relevant language. See the Hello World examples to see how to do this.

  3. Generate high quality code from UML models. The Umple compiler creates code in languages like Java, C++ and PHP that is of top quality. It is a goal of the Umple team to create the best open-source code-generation tool available. The generated code never needs to be edited and never should be edited, since You can always embed native methods (i.e. Java, Php, etc.) in the Umple, or else use Umple's aspect oriented capabilities to alter the effects of generated code. As a result the concept of 'round tripping' is obsolete in Umple. You should treat Umple-generated code just like you would treat bytecode-or machine code, i.e. as a development artifact that can be thrown away and recreated. Nevertheless, we have endeavoured to make the generated code as clean and readable as possible so you can verify its correctness and learn how it works.

  4. Incrementally Umplify a program. A program in a base language like Java should pass through the Umple compiler unchanged. As a result you can incrementally refactor such a program, stripping off complex code for such things as associations, state machines and certain patterns, and replacing it by simple Umple code. This can be done bit-by-bit, while testing thoroughly at each step. When you are done, you will have a program that should not only be more compact, but also more reliable and more maintainable. In addition, you have the benefit of being able to view UML diagrams of your program.

The term "Umple" derives from "UML Programming Language", "Simple" and "Ample".

The quickest way to get started with Umple is to go to UmpleOnline, and select an example listed under 'EXAMPLES'. Each of the user manual pages also allows you to instantly load the examples into UmpleOnline.

To learn more about Umple, read the links on the left of this page, or go to the Umple Home page. In particular, you should browse the tutorials and videos about Umple

See here for the statement regarding privacy and other risks when using Umple.

If you are an ordinary user and notice an error in this manual, please report it using our issue tracking system here Flag it as a defect in the user documentation. If you still have trouble after reading this manual, please contact our help mailing list and post a request for help. If you are a contributer, you can click on the link 'edit in github' found at the bottom left of each manual page; also instructions on how to edit this manual are here.

YouTube Video with Additional Explanation