Showing posts with label specification. Show all posts
Showing posts with label specification. Show all posts

Wednesday, May 26, 2010

UML Simplification

Trying to learn the UML by studying the language specification is a difficult task. Not just because the size of the specification is so huge but because there are two complimentary specifications; the Superstructure and the Infrastructure. The UML Infrastructure specification acts as a kernel. There isn't any lower level of UML specification. The UML Superstructure defines all modeling elements found in the language by reusing and expanding on the elements found in the Infrastructure specification.

This sounds like a good application of reuse. The common elements are separated from the more specific elements. However, this has led to some level of redundancy in the UML specification, making UML concepts more difficult to grasp. This UML Simplification RFP aims to fix several specification problems, including the disconnect between the Infrastructure and Superstructure specifications. These problems also serve as a good example that reuse can sometimes lead to other unanticipated issues.

Wednesday, September 10, 2008

The UML meta model.

The UML meta model is an enormous tomb of a specification. All this is required to define a set of rules for what can and cannot be drawn in a UML diagram? Well, it does much more than that. There are semantics defined for every single element in the language. These semantics are by no means simplistic. Which would make sense my most people cringe at the thought of the UML meta model, or even the UML itself.

But these detailed explanations need not be daunting and boring. One approach I take is to learn one aspect of the UML form an end user perspective. This means reading documentation (not the UML specification) and creating sample diagrams in this one area; say, for example, activity diagrams. Once you have mastered the end user perspective, you can then dive into the specification. After I did this, the specification revealed several insights to my sample models. Not only that, but also made me think twice about code I had written, or code I had been planning to write.

Learning the entire UML specification upfront with no real high level modeling experience is an unrealistic goal. Rather, learn some general UML concepts and use the specification to solidify ideas and to enlighten, rather than frustrate.