Umple: Model-Oriented Programming - embed models in code and vice versa and generate complete systems
OS | Linux Jenkins | Windows Appveyor |
---|---|---|
Status |
This is the main project for various Umple subprojects and components.
Umple is a model-oriented programming technology, allowing developers to embed modelling concepts (e.g. UML associations, state machines), patterns, generation templates, and other abstractions in traditional code, and vice versa. It generates high quality code for Java, C++ and PhP (Python in beta), as well as diagrams, metrics and many other artifacts. It can be embeded in the above languages as well as embed them.
The project homepage is located at https://umple.org/
There are a large number of scientific papers about Umple listed at: https://umple.org/publications
Cite the overall project as: Timothy C. Lethbridge, Andrew Forward, Omar Badreddin, Dusan Brestovansky, Miguel Garzon, Hamoud Aljamaan, Sultan Eid, Ahmed Husseini Orabi, Mahmoud Husseini Orabi, Vahdat Abdelzad, Opeyemi Adesina, Aliaa Alghamdi, Abdulaziz Algablan, Amid Zakariapour, "Umple: Model-Driven Development for Open Source and Education", Science of Computer Programming, 2021, https://doi.org/10.1016/j.scico.2021.102665.
Cite latest software release as: University of Ottawa, Umple, https://umple.org/releases https://doi.org/10.5281/zenodo.4677562
Umple is developed in itself, guaranteeing robustness; the most recent version of the compiler must be used to compile itself. See the wiki for development setup: https://umple.org/devsetup
Development follows a model-driven, test-driven, agile, continuous-integration process. Umple is hosted currently on Github at https://umple.org/code . It was first released in 2007. The master was on Google Code from 2011 to mid 2015 and moved to Github in 2015.
Umple has been largely developed as a research project at the University of Ottawa, Canada, by numerous PhD and masters students. Many undergraduates from across Canada and the USA have also contributed through the UCOSP program. See the license file for the list of contributors. https://umple.org/license
Umple does not need necessarily to be downloaded, the following allow you to run it directly in any web browser:
You can download the java jar for command-line use, or the Eclipse plugin:
To run locally on your machine, Umple needs Java (versions 8 and up although 17 is recommended) installed. It runs on Mac, Linux and Windows.
Umple is a programming and modeling language with a rich syntax. Full documentation with many examples can be found at
Umple is continuously tested and built on its own Jenkins server (see https://jenkins.umple.org) . It is also built on Appveyor (https://umple.org/appveyor/).
Umple is licensed under the MIT license. See https://umple.org/license
All developers of Umple are listed in the license file at https://umple.org/license
Financial support has been received from NSERC and the Ontario Research Fund. IBM supported early development of Umple. Google and Facebook supported student travel during Umple's development.
The umple project is split into many smaller subprojects; the folder hierarchy is explained below to better describe the structure.
build/
cruise.umple/ Umple compiler
cruise.umple.eclipse/, cruise.umple.xtext.ui/ Eclipse plugins
cruise.umplificator Converting outside code to Umple
cruise.umple.nebula Infrastructure used for real-time C++
dev-tools Tooling for Umple developers
dist Build produced items, only available after building
examples/ Developer curated examples
externalexamples/ External projects that are used for testing
ExternalTextEditorPlugins Plugins for external editors, Notepad++, etc
sandbox Small test done before a build to make sure testing and compiling works
testbed/, testbed_php/, testbed_ruby/ Test suites for Java, Php and Ruby respectively
UmpleToJava/ Code generation for Java
UmpleToPhp/ Code generation for Php
UmpleToRuby/ Code generation for Ruby
UmpleToRTCpp/ *Code generation for C++ *
UmpleToSDL/ Code generation to convert Umple to SDL (in early development)
UmpleToSql/ Code generation SQL from Umple models
UmpleToTest/ Code generation for abstract tests
UmpleToTemplate/ Location for templates that could be common to subprojects
UmpleTToJunit/ Code Generation for JUnit5 - used by MTL compiler
UmpleTToPhpunit/ Code Generation for PhpUnit - used by MTL compiler
UmpleTToRubyunit/ Code Generation for RubyUnit - used by MTL compiler
umpleonline/ The UmpleOnline web application
Umplificator/ Reverse engineer code to Umple
umplificatoronline/ Online tool for converting code to Umple
umpleUI/ Projects for the UIGU tooling
umplewww/ Core files from the Umple.org web pages