UmpleOnline
Manual
Download
Code
News
Donate
Model-Oriented Programming - Umple.org
Umple is a modeling tool and programming language family to
enable what we call Model-Oriented Programming. It adds abstractions such as
Associations, Attributes and State Machines to object-oriented programming languages
such as Java, Python, C++ and PHP. Umple can also be used to create many kinds of
software engineering diagrams textually.
Umple creates reliable code from highly-readable abstractions. The resulting
system has many fewer lines than if programmed in a typical programming language,
since developers avoid having to write a lot of 'boilerplate' code.
AI-code generation is another way to help developers avoid having to write that code, but the difference
with Umple is that the boilerplate never has to be inspected or maintained, and has
been tested so that it is reliable.
Umple can be combined with AI code generation: simply ask your AI to generate a
data model or state model in Umple from requirements. This capability is available in the UmpleOnline
Umple is an open source project hosted on GitHub that can be used for real systems in industry.
The Umple compiler itself is written in Umple. Any Java, Python, C++ or PHP project can be adapted to use Umple.
Umple has also been found to help students learn to design software rapidly in
the classroom.
Umple works online, or can be downloaded for use on the command line, in VS-Code and other IDEs..
Example
The following example shows how to declare attributes and
associations
in the first steps when modeling a system using Umple. You can click here to load this directly into UmpleOnline.
class Student {}
class CourseSection {}
class Registration
{
String grade;
* -- 1 Student;
* -- 1 CourseSection;
}
The class diagram to reflect the Umple code above is shown below.
Many other examples can be found in the Umple user manual, and in UmpleOnline (select the diagram type from the Examples menu, then choose an example from the Select Example menu). Some examples in UmpleOnline can be directly executed.
Origin of the name Umple
The word 'Umple' is a play on words, meaning 'Simple', 'UML
Programming Language' and 'Ample'.
Let us expand on these concepts a little:
Simple:
Umple is intended to be simple from the programmer's perspective
because,
a) there is less code to write, and b) there are fewer degrees of
freedom than either Java or UML.
Code that is eliminated includes boilerplate code for adding,
deleting and modifying links of
associations, as well as constructors and methods for accessing
attributes. In all these cases,
and many others, Umple provides sensible default implementations.
UML Programming Language: Umple adds key features of UML to
its target languages. Namely, the
addition of association constructs and the simplification of
attribute declarations.
Ample: Despite the restrictions imposed by the deliberate
simplicity of Umple,
it is intended to have sufficient power to program the functional
layer of most kinds of systems.
Some recent advances (for more details see release notes)
- 2026: New versions of plugins for VSCode, and new plugin for the Zed editor
- 2026: A language server protocol (LSP) server repository is available, that powers various IDEs.
- 2026: Umple skills are being developed in a repository to help AIs use Umple.
- 2026: The CRUD (forms generation) tool is now working well; it can load and save data
- 2026: Many new class diagram examples
- 2026: Dark mode in UmpleOnline
- 2026: Filtering field in Umpleonline to select which classes to display
- 2026: Different algorithms can be used to lay out class diagrams
- 2025: Instance diagram generation
- 2025: Collaborative editing
- 2024: Editing of state machine diagrams (right-click or double-click to bring up a menu)
- 2024: Requirements can be embedded using the req keyword, and implementsReq to identify where they are implemented in other pars of Umple code.
- 2024: Ability to generate code that can generate Json and load from Json using suboption genJson
- 2022 to 2024: Python generation
- 2024: Editing of Graphviz class diagrams
|