
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 derived from UML to
object-oriented programming languages such as Java, PHP and Ruby. Umple
can also
be used to create UML class diagrams textually.
Umple is an open source project, so details will evolve.
However,
it is ready to be used for real systems. In fact the Umple compiler
itself
was written in Umple. Any Java or PHP project could use Umple. We have
found the resulting code to be more readable and have many fewer lines.
This
is because Umple means you can avoid having to code a lot of
'boilerplate'
code that would be needed to implement associations and attributes, a
system
based on Umple should also be less bug-prone.
Umple has also been found to help students learn UML faster in
the
classroom.
Resources
Want to try Umple out? Click on UmpleOnline
to experiment with the language and generate either Java or PHP
code
(works directly in the browser).
To explore Umple, browse the user
manual
New to Umple? Read the tutorial powerpoint
presentation
on Umple to obtain an overview.
Want to contribute or learn Umple in more depth? Go to the Google Code
site where we are maintaining Umple as an open source project.
The Google code site hosts our Wiki, which has examples, tutorials and
documentation.
Of key interest in the Wiki is a list of presentations and
other tutorials about Umple
If you are a researcher or want to learn about Umple at a deep
level, a list of peer reviewed papers and these can be found in our list of
Umple publications.
Prof Lethbridge regularly blogs
about Umple
There is a Google group (mailing
list) you can join to be notified about Umple news.
The trunk of the Umple code tree
is here.
Umple uses CruiseControl for automatic building. Here is the current build status.
Umple development uses test driven development. Here is the report of testing of the latest
build.
Umple's current bug tracking system
is here.
Example
Umple is a set of extensions to existing object-oriented languages
(currently PHP and Java)
that provides a concrete syntax for UML abstractions like
associations as well as certain software patterns.
Umple's objective is to simplify software by incorporating modeling
concepts and software patterns.
The following example shows how to declare attributes and
associations
in the first steps on modeling a system using Umple. Other examples can be found here.
class Student {}
class CourseSection {}
class Registration
{
String grade;
* -- 1 Student;
* -- 1 CourseSection;
}
The class diagram to reflect the Umple code above is shown below.
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.
|