I just sat in on a presentation of SysML (http://www.sysml.org). Although the presenter did a good job defending the spec, I found the spec itself quite miserable. I am wondering if it is the fact that the specifiers decided to use UML Profiles as a method of specification as opposed to a completely new MOF model.
My general impression was that UML was overloaded to the extent of being useless as a graphical notation for communication. There are obviously some areas where the UML notation seems a good fit, however, for most views there seems that UML’s graphical notation confuses the issue rather than enhance it.
Some of my readers may know that there is a raging war between those that believe in UML profiles as a liable option for creating new specification languages and those that believe that every language should be designed from the ground up using a domain specific language tool (using MOF, EMF/GMF, or some proprietary commercial tool like MetaEdit or Microsoft’s DSL tool).
I’ve always felt that I would know when to use one or the other. There is of course a grey area where I would have to do some analysis back and forth, however, my selection criteria would be based on the following facts:
UML is a collection of graphical modeling techniques that when applied is commonly known to everyone and hence has the advantage that software engineers (and increasingly business analysts) can recognize the notation and quickly evaluate the specs in front of them. I’ve also noticed that having a common notation tends to trigger flaw detections based on pattern recognition
UML is limited in what it can express, hence, if I for instance wanted to show a spec of non functional requirements, temporal invariants, predicate rules, etc. UML would be an improper language. It would take too long to tweak the profile, the graphical language would be of little use (no advantages, rather confusion as it looks like something else)
If I have one of the tools that accepts UML profiles are available to the project I’m working on, I can usually leverage some key tool elements that would be hard to implement (e.g., visual comparison, version control, shared repositories, etc), hence, even if the profile was hard to define, the advantage of the tool vendors might make me chose a profile even though the language does not justify it.
After the presentation, I’ll have to go back and rethink my boundaries. I would have guessed prior to the presentation that SysML would be an excellent candidate for a UML profile. After all, describing a system is what most of the UML components were defined for, right?
Well… take a look and see what you think… Does UML give you better semantic definitions? Does the UML graphical language help you understand the underlying semantic? Is the language expressive enough? I’ll let you judge… My impression was, NO!!! A surprise to me.
Add a comment