[Uml-devel] user story

Andrew Sutton ansutton at kent.edu
Mon Oct 14 08:04:02 UTC 2002


i haven't tested the cvs version in a while - my dev environment kind of broke 
when i upgraded to kde-3.1 and qt-3.0.5, but i have a good parable about 
modeling UML - this is long.

i was recently assigned an assignment (homework for advance software 
engineering class) to create use case, object, sequence and class diagrams 
for a phone mail system, based on some pretty vague requirements. i 
downloaded the demo version of rational rose and started working in that. i 
hated it, so i reverted to my favorite modeling program - visio (umbrello or 
uml modeller isn't quite there yet).

the reason i use visio, and others in my class (including the professor), 
agree with my reasoning, is that its a better modeling program. it's built 
around a layout engine that extends really, really well to UML - and that's 
important. UML is a visual medium for describing the structure and behavior 
of software systems so it needs to be as visually appealing as possible. rose 
falls way short on that one. unfortunately, umbrello seems to be following 
behind rose. i think it would be a good idea (a really good idea) to spend 
some time focusing on the pure drawing and layout capabilities of the system. 
maybe a grid that objects snap to. maybe connection points that associations, 
links and messages attach to. maybe the inclusion of non-UML elements like 
callouts, block shapes and text to enhance the visual appearance of models.

another reason i ended up like visio was because i could actually make object 
diagrams - diagrams of instances of objects and their relationships to other 
instances. naturally, these are fundamentally different than class diagrams. 
anyway, you can't do this in rose or umbrello. My suggestion is to take the 
concept element and decompose it into the different things it can actually 
represent - classes, parameterized classes, interfaces, datatypes, 
exceptions, objects, etc. having a larger vocabulary might mean a little more 
code, but it also means users can better express their intentions. it also 
means that a verification engine will be able deal with the semantics of 
individual types.

finally, (and not really a feature request, but a design idea). I like the way 
that viso deals with visualizing UML elements. they offer a list of 
stereotypes (simple text tags).  Each stereotype corresponds to (derives 
from?) some class within the system.  The class is simply a drawing class. If 
an element's stereotype is type X, then it is drawn by the corresponding 
drawing class. Also, when you create an object of a certain type, the system 
limits the only possible stereotypes to be those defined to derive from that 
element you just created.  For example, <<interface>> is one of the 
stereotypes of Class. so, when i create an interface, it is drawn be the 
Class drawer. also, <<interface>> is included in a dropdown combo box that 
lists all stereotypes associated with the Class object. neat, huh?

One of my projects right now is to create a metamodel for an aspect-oriented 
programming (AOP) language. i've been using UML to show translations of AOP 
and actually had the pleasure of using the stereotyping facility to create 
new stereotypes for crosscutting relationships. it turned out quite nicely.

anyway, just food for thought.

andy




More information about the umbrello-devel mailing list