[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