People on the Project:
We have had several fourth-year students from universities across Canada working on our project through the UCOSP program. Collectively they have banished several long-standing bugs in the compiler and are now working on some of the changes discussed below. The current three participants are Joshua Horacsek, Joel Hobson and Alvina Lee. We anticipate additional groups of students each semester.
Four graduate students are also very active in improving Umple: Omar Baddredin (state machines), Hamoud Aljamaan (tracing), Miguel Garzon (umplification), and Sultan Eid (C++). Andrew Forward, one of the long-term system architects, remains active and will be working on patterns and empirical studies with Umple.
User Manual and Wiki:
The user manual has been upgraded so most mature Umple features are now described, with examples. The examples can be made 'live' in UmpleOnline. Effort has also been put into improving the organization of the wiki, particularly pages to help people installing Umple and who want to develop Umple itself.
UmpleOnline has seen several important improvements. There are now a variety of ways to open Umple models directly as part of URL. You can open any .ump file on the Internet using the 'filename' argument. You can also open the built-in examples using the 'example' argument, or models you are collaboratively evolving with the 'model' argument. UmpleOnline now also allows you to generate zip files and JavaDoc documentation.
Taken together with the enhancements to the user manual, these features have significantly improved the ability to use Umple to teach UML in the classroom.
Future: UmpleOnline's graphics for drawing class diagrams have some glitches related largely to cross-browser compatibility. We are therefore planning to move towards using a toolkit that will render diagrams using html5. We hope to achieve this within a year, maybe sooner.
Outreach and publicity:
One of our key needs is to have more developers using Umple. This will result in improved quality (through detection and correction of bugs, and discovery of new features) and will hopefully result in more people understanding and adopting our overall philosophy and vision. Hopefully this will in turn improve software engineering more generally.
The Umple Facebook page has received a lot of traffic. We frequently post small news items here. Facebook says that many of these get 100 or more views. Please 'Like' this page. We currently have 21 likes; when we get 25 likes we will be eligible for a much nicer URL in Facebook.
Umple is listed on all the important open-source directories, specifically
- Ohloh: We have 4 people who indicate they use Umple. Interestingly, they calculate that our code base must have resulted from over $4million of work, when in fact total funds paid have been on the order of $200k, since this has been largely developed by PhD and masters students. We are listed on the second page of their UML tools directory; if 7 more people indicate they use Umple, then we would be listed on the first page.
- The Open Source Directory: We are currently rated as 4.5 stars.
- Freshmeat: This is the standard place to post release notifications.
We encourage everybody to +1, 'Like', and indicate they 'use' Umple on all these sites.
We are going to make a new formal release of the compiler soon (1.15). This will incorporate a lot of bug fixes and enhancements that have been recently made. UmpleOnline always uses the 'bleeding edge' of the compiler, so is ahead of the formal release cycle; you can try out the forthcoming 1.15 there. With the formal 1.15 release, we will change Umple to compile itself using 1.15.
Recent changes to the compiler (available in UmpleOnline and will be available in 1.15):
Issue 221: isX methods now are generated by the compiler from Boolean attributes. This is consistent with Java conventions. Note that getX methods are also still generated for compatibility.
Issue 26: Singleton classes no longer generate constructors that require arguments. The 'lazy' keyword can now be applied to any attribute, if you don't want it to appear in the constructor; the fix to issue 229 is to default all attributes to lazy. In addition associations to other classes with a '1' end will instead be interpreted as 0..1.
Issue 229: The generate clause can now take an argument specifying a directory where the code will be output. This is useful for build scripts. You can have different generate clauses for each language (e.g. java and PhP). You can use the 'override' keyword to ignore any subsequent generate clauses.
Issue 146 and issue 227: Comments placed immediately before a class in Umple now appear in the generated code. In Java these are generated in such a manner that they will appear in generated JavaDoc documentation.
Issue 137: Use of depend after the isA keyword no longer fails.
Issue 172: Tracing: You can now use the 'trace' keyword followed by an attribute name to output a record of changes. You can also do this conditionally. This is the first phase of large tracing capability being added to Umple. Tracing of associations will be added soon.
Issue 223: Developer debug mode: This will allow developers of Umple to determine the Jet template where generated code originated (this is actually not active yet, but when completed, it will be a key part of 1.15).
Plans for the compiler for the next few months:
1. Issues 238, 239 and 240: History and final states: These enhancements to state machines are under development. Both are part of UML. They may make it into 1.15, or may be released later. Entering a final state would result in deletion of the object. If there are several concurrent regions in a state machine, the deletion would only occur when all regions reach the final state.
2. Issue 66: Useful error messages. The biggest weakness in Umple currently is that its error messages just point to the point of failure of a parse. In UmpleOnline, even that is missing. UCOSP students are working now on building the infrastructure for comprehensive error reporting. This would include reporting parser errors as well as semantic errors in Umple (e.g. making a class a subclass of itself) and errors from the base-language compiler that is used to compile methods. Once this is all done, Umple should appear to any programmer just like any other compiler.
3. Issues 154, 155, 236 and others: Spacing issues in the parser. The parser is overly sensitive to the location of spaces. This is being addressed.
4. Issue 19: C++ generated from Umple. We have enabled 'generate cpp'; initially this is a clone of Java. Over the next few months we will adapt the code so it is proper C++.
In addition, further work on tracing will be accomplished, and the first public release of the umplificator tool might become available
Several bugs have recently surfaced that warrant note:
Windows 7: Although Umple can be used in Windows 7, Umple itself seemingly can't be developed in Windows 7 due to bugs that remain unresolved at this time. Development of Umple can be performed on Mac, Linux or earlier versions of Windows.
Issue 235: Compiler generated in Mac OS adds escape characters to quotes. Although the compiler should be identical no matter where it is built, there is currently an issue with a compiler built on Mac OS when the ="initial value" notation used. A compiler generated on another platform will work fine on Mac OS.