As a consultant, I’m often parachuted into complex projects and need to be able to appear intelligent in a short period of time to both technical staff as well as business people. In setting up a publishing system based on the Darwin Information Typing Architecture (DITA), I’m faced with trying to communicate the specialized structures and element names needed by an organization.
One of the most important principals of DITA specialization is the concept of inheritance. Inheritance allows you to use the structures and semantics previously defined by others as a starting point for your specializations. But how do you communicate this idea in a repeatedly simple clear concise manner during the design process? If a picture is worth a thousand words, a UML model is invaluable.
The Unified Modeling Language (UML) is a graphical notation that is particularly good at expressing object-oriented designs. UML went through a standardization process and is now an Object Management Group (OMG) standard.
I like using UML because it allows me to communicate certain concepts more clearly than alternatives like natural language. Natural language is too imprecise and subject to interpretation by the reader. A DITA DTD or Schema is very precise but not something that should be created during the design process. So I use UML to communicate and keep track of the important details like inheritance.
A lot of people talk about the learning curve associated with UML. I’m not advocating that team members need to be exposed to all that UML can provide. Only the parts necessary to convey the important details of the moment.
Let’s say that we want to build a new type of DITA topic for creating slide presentations. The following diagram conveys a lot of information:
My conversation with the assembled audience of technical staff and business users would go something like this:
Each green ellipse represents an element already in existence. Each yellow ellipse represents a proposed element. The double angle brackets in the ellipse are used in UML to define sterotypes. A sterotype is the vocabulary extension mechanism built into UML. In our case we are using sterotypes to indicate which organization (DITA or SGMLXML) an element reports to. The dotted lines represent which elements are included in others and which elements extend a base type (inheritance).
Once the audience agrees that the model is correct, it can be included in the specifications and developers can create the new elements and the properly-formed class attributes required.
In our example the definition of the class attributes in the resulting DTD would look like this:
Besides communicating DITA specialization information, I also use UML for other aspects of my deployments such as use case design, system deployment and various activity diagrams. No single model is sufficient to build the system but by using the same modeling language for all the models, it is easy to impart all of the important analysis, design and implementation decisions that must be made by an organization before deployment.