The TextUML Toolkit version 1.6 has been released. It is the same RC1 build mentioned here a week ago. The listing on the Eclipse Marketplace has been updated, so in addition to the regular update site (http://abstratt.com/update/), if you are using Eclipse 3.6, you can get it even more conveniently using the brand new Eclipse Marketplace Client.
Take a look at the new notation features:
- preconditions on operations
operation withdraw(amount : Real);
precondition { amount > 0 and amount < self.balance; }
begin
self.balance := self.balance - amount;
end;
reference employees : Employee[*]
/* calculated field */
derived attribute employeeCount : Integer := ():Integer { return self->employees.size(); };
- initial values on properties
attribute available : Boolean := true;
You can also try these new features online on AlphaSimple. Sign up or start a guest session to create, validate and run your models on the spot, there is nothing to install!
TextUML Toolkit 1.6 RC1 is now available! You can install it using the Marketplace Client or by pointing Eclipse to the update site:
http://abstratt.com/update
If you find any problems installing this build, please let us know asap so it can be addressed before the final release.
New features
Much of the work in this release went into improving the model building infrastructure to be even more notation agnostic. That work is still ongoing and should be completed in 1.7. But there were plenty of user-facing feature additions as well:
- preconditions on operations (2986923 and 3002571)
- support for a default notation (so file extensions can be optional) (2995372)
- support for implicitly applying profiles/stereotypes (so models are less verbose) (2981580)
- support for derived properties (2928428)
- support for initial values in properties (2115439)
- advanced features (closures, constraints) are now implemented using profiles instead of metamodel extensions (2933692)
In other news
The reason it took so long for a new TextUML Toolkit release to come about was that I have been busy working on AlphaSimple, which went on public beta today. AlphaSimple is an online tool for domain-driven prototyping that currently uses TextUML as modeling notation. Thus, AlphaSimple is also the driving force behind most of the changes that happened in the 1.6 cycle, and you can try them right away by starting a guest session and studying the example projects.
The TextUML Toolkit has since release 1.2 had a metamodel extension package (inaptly named ‘meta’). This metamodel extension package defined new metaclasses not available in UML such as:
- closure - an activity that has another activity as context
- conversion action - an action that flows an input directly as output just changing the type
- literal double - a literal value for double precision numeric values
- signature - a classifier that contained parameters, the type of a closure
- meta value specification - a value specification for meta references
- collection literals - a value specification that aggregates other value specifications
Turns out extending the UML metamodel by definining new packages and metaclasses is a bad idea. Some reasons (yes, I am feeling ‘bullety’):
- it is non-standard
- other UML tools cannot read instances of your metaclasses, some won’t read your models at all if they have *any* unknown metaclasses
- there is little documentation on how to maintain these kinds of metamodel extensions
- since it is not the mainstream approach, we are bound to encounter more issues
Because of that, release 1.6 will rely exclusively on profiles and stereotypes for extending the UML metamodel.
What to expect
For conventional users of the Toolkit, this change might possibly go unnoticed, barring any potential bugs introduced in the process.
People using the built-in base package and the base_profile will be directly affected. The elements in these models are still provided, by they are now in the new mdd_extensions profile, or one of the new mdd_types, mdd_collections and mdd_console packages.
We apologize for any inconvenience these changes might bring, but we strongly believe they are required to make the TextUML Toolkit a better product. If you have any trouble moving to 1.6 (to be released later this month), make sure to hit the user forums or report issues.