Object Oriented Modeling A Roadmap-5
Object Oriented Modeling A Roadmap-5
Finally, a great variety of commercial software tools are 6.) embedding the modeling in the whole software
available on the market. Most of them are still under development process: consequences for the software life
development in the sense that they support only parts of cycle.
the complete UML, that they do not offer sufficient process The order of these themes exhibits some interesting
support, or that they are hard to integrate within an overall structure, too. Let us suppose for a - really very short -
software development environment. moment, we study the themes strictly subsequently. First,
we study a language as formalism. Then we study elements
4. PERSPECTIVES
- the constituents and their composition - from the
Based on the above discussion of requirements and of the
descriptions formulated in the language. Next we study how
state-of-the-art, we shall investigate the landscape of
to come up with such a description, followed by studying
drawbacks and open issues in order to find the road for
how to check such a description. Finally, we study
research and development tasks for the next couple of
integrating the last two processes into their umbrella
years.
software engineering process.
First, we start with structuring the landscape and
This is very similar to the (pre)history of software
identifying regions of related topics. Thus, by applying the
engineering: to develop programming languages, to identify
principle of separation of concerns to our own presentation,
basic program elements, to define the programming process,
we yield the following six regions illustrated as packages in
to define the testing process, to integrate the latter two
UML notation and interrelated by a dependency relation (cf.
processes into their umbrella business process, being the
Fig. 2):
software engineering process. In the past, when we still had
1.) language structure: the definition and architecture of an to learn the process of software engineering, the latter
object-oriented modeling language itself, ranging from core series of themes from programming language to process
elements to application-specific extensions; embedding were studied one after the other, spanning a
period of over forty years. In the case of object-oriented
Figure 2: Regions of the object-oriented modeling modeling languages, we can organize the study of themes
landscape from the regions in parallel, while being aware of the
structure these themes fit in. This can considerably reduce
modeling process
the time span of research, maybe ten years instead of forty.
(in-the-large)
To summarize, it is the structure of the themes that is crucial
for understanding the relevance of the topics to be studied.
Therefore, in the discussion below some of the topics will
modeling process be mainly illustrative for the structure in the grouping of the
model review topics. In such a case we will content ourselves with only a
(in-the-small)
very short description of the topic.
4.1 Language Structure
model
The classical basics of a language are its syntax and its
composition
semantics. From the ongoing research activities concerning
UML two important problems emerge. Whereas the syntax
of this has been precisely described by using a metamodel
model
approach, this does not hold for the semantics. When it
constituents
comes to describing the meaning of the various syntactic
language constructs, usually English is used with its
inherent informalities and ambiguities. The other problem is
language the large and complex scope of the language. An extra
structure complication are the built-in features for incorporating
anticipation of change into the language, such as Another point of study that seems interesting, is the binary
stereotypes, tagged values and constraints. On the one character of some relations between constituents. For
hand this makes UML an almost guaranteed part of any instance, actual calling of a method of an object is normally
future object-oriented modeling language. UML, so to say, done from one other object. This is the typical caller - callee
can serve as the starting point for such a future language. relation. Is this necessary? Could it be useful, even
On the other hand, the nature as well as the meaningful use clarifying, if the number of two participants in this relation
of these features still needs further study. could be generalized into some larger number. First results
Because of the highly complex nature of such an object- of the study of these so-called multi-methods can be found
oriented modeling language we propose to add a layered in [39]. This might result in new forms of dependency and
structure to the language (cf. Figure 3). This is in line with influence and therefore of consistency.
current work on UML 2.0 as well as of the precise UML
Figure 3: Language layers
group, where an improved layered architecture of the UML
is a major point of discussion [34, 18]. language
The first, innermost layer or shell contains the core
language. It contains the basic language elements of UML,
application-specific
its basic building blocks. It is to be a point of study which
extensions
language elements will belong to the core. Most probably,
classes, relationships, i.e., class diagrams, have to be put
there. Also one or two from the triple use cases, activity
domain-specific
diagrams, state machines, representing the more simple
extensions
behavior modeling elements, will belong to the core, and
may be even some form of interaction diagram will also
belong to it. Finally, also the constraint language OCL will modeling
belong to this core. It has to be discussed, what are useful, language
necessary criteria for a language element to belong to the
core. A possible criterion could be, whether the semantics
of that element is completely defined and can be expressed
core language
and understood in a relatively easy manner.
The second layer contains the other language elements
being the less basic elements of UML. It is an important
point of research and part of this second layer to The definition of the semantics of an object-oriented
investigate how the different sublanguages of an object- modeling language is a hard and difficult task due to the
oriented modeling language are interrelated. This holds for inherent divergence of the different sublanguages of a fully-
instance for the interrelation between statecharts and fledged object-oriented modeling language like UML.
interaction diagrams, but also the connection between OCL Currently, different approaches are investigated like
specifications and the remaining UML model [8]. operational ones based on state transition systems or graph
Furthermore, the concrete syntax of an object-oriented transformation systems, or denotational ones. In any case,
modeling language has to be studied. In particular, the role it is a fact that a precise and formal semantics is a
of so-called hybrid languages - combining textual and prerequisite for any type of model review and model
graphical notations - has to be investigated (cf. [1]), as it checking and of embedding the model into the overall
might not always be true that graphical (or textual, resp.,) software development process.
representations are more easily comprehensible for a The third layer (cf. Fig. 3) consists of the domain-specific
potential user. For instance, graphical representations for extensions to the language, so-called domain-specific
the OCL, so-called constraint diagrams, are currently profiles and domain-specific frameworks. Here, we see the
investigated as alternative for the originally proposed extensions to UML in the context of a particular domain. To
textual notation [32]. give an impression of such domains and domain-related
In addition, the completeness of an object-oriented ongoing activities, we mention the domains of real-time
modeling language has to be studied. This means whether applications [10, 40], multimedia applications [43], web
appropriate language features are offered for all applications [7] and last but not least the software
perspectives of a system to be modeled. For instance, for development process [30]. The profiles are formulated in
the description of what happens during execution, i.e., how terms of the UML´s extensibility mechanisms, i.e.,
object structures are rearranged and object values are stereotypes, tagged values and constraints.
changed, graph transformations as in [21] could be taken An alternative approach to yield a domain-specific
into account. adaptation of a modeling language is the usage of a
domain-specific framework. Frameworks are architectural
patterns, i.e., they form a partial model, which expresses 4.2 Model Constituents
common basic structures and behavior within a certain The constituents of a concrete model (cf. Figure 2) reflect
domain. They can be extended by refinement and the modeler's way of separating the various concerns seen
specialization to yield a complete model for a certain as relevant for the concrete situation to be modeled.
application. The usage of UML for describing a framework Consider the situation of an architect designing a prefab
for business processes has been studied, for instance, in house. Parts of the house are to be made in some factory,
[35]. As a framework is defined as an architectural pattern, and the parts have to be put together on the spot where the
we thus see patterns return as elements of our third layer. It final house has to be built. A part is a complete wall or floor
is intriguing to investigate in what sense and under what element, containing the (local) pipes and tubes for gas,
circumstances patterns (cf. [23]) can be an alternative to the water, central heating, the electricity wiring and such things
use of UML´s extensibility mechanisms. as radiators, windows, doors. So in this case, the
The fourth layer contains the application-specific architectural design of the house physically consists of the
extensions to the language on top of the domain-specific drawings of the prefab parts. When a potential buyer of
extensions from the previous layer. The prefaces as such a house wants to see a drawing of the house, he
discussed in [9] belong to this layer. Depending on the actually gets a series of interrelated drawings, one for each
concrete context of a certain application, so-called semantic floor. These drawing do not in the least reflect drawings of
variation points occurring in such a preface have to be the prefab parts the house is composed of, although the
fixed, thus pin-pointing the pragmatics for that application. floor representations are thoroughly consistent with these
There seems to be some similarity with the frameworks parts. Moreover, if the potential buyer wants to be
mentioned above, so on this level, too, we see the patterns completely informed about the central heating system, he
return. will also get a drawing on scale containing all heating-tubes,
radiators, the stove, and the thermostat. Also this drawing
In this subsection, we have proposed a shell-layered does not in the least reflect drawings of the prefab parts,
language structure. The innermost shell contains the most nor does it reflect all information from the floor
general elements, the outermost shell the least general ones. representations. But again, there is full consistency with the
As patterns cover the full range of recurring problems, other representations.
whether this is over all domains, or restricted to one domain
but over all applications, or just restricted to one type of Analogous to the prefab house, an object-oriented model
application, we see the patterns occur in three out of four has many constituents, which are different in nature. First of
shell layers. all, a model consists of the constituents it has been - really,
physically - made of: the classes, with their data, behavior,
It is very imaginable that the impact of the elements in the functionality, communication, and of relationships as class
domain-specific or the application-specific shell on the connectors. Also packages belong to the physically real
language support may vary in the course of time. For constituents of a model. These constituents exactly reflect
instance, there may be a shift in impact of a specific pattern how the model has been constructed, similar to drawings of
from the domain-specific shell towards a more general shell. the above prefab parts of the house. Second, a model also
As a concrete example, we mention the role of the has other representations. Such a representation is a
communicator in the Model-View-Communication-Controller different form the model takes, when represented depending
pattern [42], which may lead to new language features in the on a particular use of the model one has in mind. Not the
language shell or even the core shell, to express different model as it is, but as one can think of it, the model with its
alternatives of communication between objects in a more representative constituents. Examples of such different
explicit way than it is supported by currently available representations are views, subjects and patterns. They
language features. themselves consist of the same type of constituents,
Summarizing, we see the following four main open issues in classes and relationships, as the model physically does, but
the language region. differently represented, similar to the drawings of the floors
versus drawings of the various prefab parts. Third, the
Open issues in the Language region: classes actually combine things that, unless on metalevel,
are not to be represented as classes and relationships
language architecture (core vs. profiles)
themselves. Examples are data, behavior, functionality,
hybrid notations (textual vs. graphical) communication. They are aspects that are bound together in
completeness the various classes, similar to the above central heating
semantics system. The aspects are so to say woven into the classes
[33].
Where there are so many different components in a model,
the real ones, the representative ones as views and
patterns, and the aspects, the interrelations between the
components have to be carefully watched over. There is
really much consistency to take care of. Important parts of and for change. For instance, extending a model or a small
this consistency management issues have already been part of it with some other model(´s part) that has new or
studied, as, for instance, in the viewpoint approach [19], more sophisticated functionality, should be relatively easy
where consistency between different views could be kept and also well understood.
by an explicit consistency management. A different We see scalability into two directions, horizontal and
approach of an (automatic) integration of possibly vertical. Horizontal scalability consists of adding or
overlapping views or subjects into an overall model has removing model parts as classes, packages, patterns, views
been discussed in the view-based development approach of or aspects. Vertical scalability consists of refinement or its
[16], or the subject-oriented design technique of [6]. reverse aggregation.
The real model, the one with the real components, actually When, model parts are being put together in the horizontal
describes its own architecture, although probably from a direction, one has to perform the actual integration of these
logical point of view, and not so much from a hardware and parts with the already present ones. Not only in a syntactic
system software point of view. Therefore, further study of sense, but also in a functional, semantic sense. This means
the relation with architecture description languages (ADL) that we need composition techniques for the different types
seems promising in view of mutual usefulness of both of constituents. For instance, we need a better
approaches for each other [13]. Architectural patterns may understanding how to refine behavioral descriptions like
turn out to be important, so the above consistency insights statechart-based ones. A discussion on two different types
could be relevant for this situation, too. of statechart inheritance together with concrete
Patterns as a different kind of constituent of a model have construction rules can be found in [12].
been studied e.g. in [23]. Similar to views, also patterns are Horizontal compositionality might result in the requirement
to be composed with other patterns. Pattern integration to treat all constituents of a model as a semantic unit with a
should be such that mandatory or perhaps only desired or clear defined interface through which such a model part
optional consistency can be guaranteed. looks like a class. In particular, this might mean to lift
A third but different type of model constituent is the aspect packages from the syntactic level to the semantic level.
or feature. Aspects or features are not classes, but types of Scalability in the vertical direction is very often
general characteristics or concerns for the model as a whole, modularization, resp. more concrete either refinement or
see e.g. [33, 46]. Examples for aspects are communication, aggregation. In the case of refinement, an existing model
resource sharing, replication, distribution. Such an aspect part changes its content into a new, more detailed content,
normally is entangled, intertwined with everything else in but from the outside it still looks as before. So the old part is
the model. Small bits of the aspects can be found in many replaced by some more detailed part, for instance one class
different parts of the model. The parts are the classes, so is replaced by a whole group of cooperating classes. Such a
the classes bear small parts of the aspects. Further research group then is known as a module. The module replaces the
is required to shift the aspect-oriented from the old class, by representing itself to the rest of the model as if
programming level to the modeling level. Here, it has to be it is that class. The other way round is the grouping of a set
investigated which aspects can be specified separately and of already existing model parts, e.g. classes, into something
what are the interrelations between different aspects or new, the module. The module represents the set towards the
features (see e.g. [2] for an investigation on feature rest of the model. Quite often we want a module to look as
interactions). much as a class as possible. This is in line with the
Summarizing, we see the following open issues in the model aggregation concept, where a group of classes constitutes
constituents region: the aggregation class. Adapting to the type level, the above
cited remark of Meyer now becomes: Classes - instead of
Open issues in the Model Constituents region: objects - are the only modules. It has to be investigated
how class-like descriptions of certain modules or packages
modeling units and their interdependencies can be defined and eventually constructed, also with
views, subjects respect to non-structural aspects as behavior, functionality
aspects, features and communication.
patterns, frameworks Summarizing, we see the following open issues in the model
composition region:
animation / simulation techniques All issues discussed above have to be incorporated into an
overall software development process model and have to
analytical techniques be supported by appropriate software tools. For instance,
the role of animation, prototyping and model review have to
4.6 Embedding into the Development Process be appropriately integrated with all other model
In the above five regions, we can see some contours from development tasks.
the umbrella software engineering process. Examples of
these contours are: designing a model, reviewing a model, Open issues in the Modeling Process (in-the-Large)
integrating whatever model part into the rest of the model. region:
Designing a model has to be understood in a broad sense,
covering the whole lifecycle of model engineering. This front-end / back-end transformations
means concretely that the modeling language and its use round-trip engineering
have to be embedded in the software engineering lifecycle process models
process, covering all phases where some form of model
development is situated. Adopting for a moment the support tools
waterfall view with respect to software engineering, we .
speak about front-end embedding and of back-end
5. CONCLUSIONS
embedding of model design into the software lifecycle.
In this article, we have drawn the road map, i.e., the main
The front-end embedding addresses the transformation or open issues in the field of object-oriented modeling to be
translation from any informal description of the problem investigated within the next couple of years. As a base for
situation towards the object-oriented model. Often, an the presentation and future discussion, we introduced a
informal description is written in natural language, but also structured landscape consisting of six different regions.
video or other images can serve as such. This form of They address all perspectives of object-oriented modeling,
transformation occurs in the feasibility phase, in the i.e., the underlying language, the developed models, as well
as the development process. Within each region, we [8] St. Cook, A. Kleppe, R. Mitchell, J. Warmer, A. Wills:
identified concrete topics to be investigated and gave Defining the Context of OCL Expressions. In [22], 372-
references to some research results in order to illustrate 383.
possible ways to find solutions. [9] St. Cook, A. Kleppe, R. Mitchell, B. Rumpe, J. Warmer,
The whole discussion is biased towards two software A. Wills: Prefaces: Defining UML Family Members (in
engineering principles, which were identified in section 2 to preparation).
be the most crucial ones in the field of object-oriented [10] B. P. Douglas: Doing Hard Time - Developing Real-
modeling. These are user-friendliness of the modeling Time Systems with UML, Objects, Frameworks, and
approach and separation of concerns. As object-oriented Patterns, Addison-Wesley, 1999.
modeling is central to the whole software development
[11] D. D'Souza, A. Wills: Objects, Components, and
process, a great variety of stakeholders are dealing with the
model and the underlying language. Thus, first an intuitive Frameworks with UML - the Catalysis Approach.
and clear understanding of any model is an important Addison-Wesley, 1998.
prerequisite. Second, due to the complexity of the models to [12] J. Ebert, G. Engels: Structural and Behavioural Views on
be developed, in particular horizontal and vertical OMT-Classes. In E. Bertino, S. Urban (eds.):
structuring techniques are desperately needed. Proceedings International Symposium on Object-
The Unified Modeling Language (UML), currently playing a Oriented Methodologies and Systems (ISOOMS),
dominant role in the field, also influenced the presentation Palermo, Italy, September 21-22, 1994, LNCS 858,
and discussion within this article. The discussion on Springer, Berlin 1994, 142-157.
forthcoming versions of the UML will be a major task in the [13] A. Egyed, N. Medvidovic: Extending Architectural
near future in the field of object-oriented modeling. It is Representation in UML with View Integration. In [22],
obvious that a convincing solution to all open issues 2-16.
discussed above can only be reached if fundamental, [14] G. Engels, L.P.J. Groenewegen: SOCCA: Specifications
scientific research results will be combined in a synergetic of Coordinated and Cooperative Activities. In A.
way with industrial requirements and restrictions. Finkelstein, J. Kramer, B.A. Nuseibeh (eds.): Software
6. REFERENCES Process Modelling and Technology, Research Studies
[1] M. Andries, G. Engels: A Hybrid Query Language for Press, Taunton 1994, 71-102.
the Extended Entity Relationship Model. Journal of [15] G. Engels, L.P.J. Groenewegen, G. Kappel: Object-
Visual Languages and Computing, 7(3), September Oriented Specification of Coordinated Collaboration. In
1996, 321-352. N. Terashima, Ed. Altman: Proc. IFIP World Conference
[2] E. Astesiano, G. Reggio: A Discipline for Handling on IT Tools, 2-6 September 1996, Canberra, Australia.
Feature Interaction. In M. Broy, B. Rumpe (eds.): Chapman & Hall, London 1996, 437-449.
RTSE'97 - Workshop on "Requirements Targeting [16] G. Engels, R. Heckel, G. Taentzer, H. Ehrig: A Combined
Software and Systems Engineering", Technical Report Reference Model- and View-Based Approach to
TUM-I9807, April 1998, Technical University of System Specification. International Journal on Software
Munich, Germany, 1 - 22. Engineering and Knowledge Engineering, Vol. 7, No. 4,
[3] G. Booch (guest editor): UML in Action. CACM, Oct. December 1997, 457-477.
1999, 42(10). [17] G. Engels, R. Hücking, St. Sauer, A. Wagner: UML
[4] G. Booch, J. Rumbaugh, I. Jacobson: The Unified Collaboration Diagrams and Their Transformation to
Modeling Language User Guide. Addison-Wesley, Java. In [22], 473-484.
Reading, MA, 1999. [18] A. Evans, St. Kent: Core Meta-Modelling Semantics of
[5] P. Chen: The Entity-Relationship Model - Toward a UML: The pUML Approach. In [22], 140-155.
Unified View of Data. ACM Transactions on Database [19] A. Finkelstein, J. Kramer, B. Nuseibeh, L. Finkelstein,
Systems, 1(1), 1976, 9-36. M. Goedicke: Viewpoints: a Framework for Integrating
[6] S. Clarke, W. Harrison, H. Ossher, P. Tarr: Subject- Multiple Perspectives in System Development.
Oriented Design: Towards Improved Alignment of International Journal of Software Engineering and
Requirements, Design and Code. In Proceedings of the Knowledge Engineering, 2(1), March 1992, 31 - 57.
OOPSLA '99, Denver, CO, USA, Nov. 1 - 5, 1999, ACM, [20] D. Firesmith, B. Henderson-Sellers, I. Graham: OPEN
New York, 1999, 325 - 339. Modeling Language (OML) Reference Manual,
[7] J. Conallen: Modeling Web Application Architectures Cambridge University Press, New York, 1998.
with UML, CACM, October 1999, 42(10), 63 -70. [21] T. Fischer, J. Niere, L. Torunski, A. Zündorf: Story
Diagrams: A New Graph Grammar Language based on
the Unified Modeling Language and Java. In H. Ehrig,
G. Engels, H.-J. Kreowski, G. Rozenberg (eds.): Proc. of [36] B. Meyer: Object-Oriented Software Construction,
the 6th Intern. Workshop on Theory and Application of Prentice Hall, 1997.
Graph Transformation. Paderborn, November 1998, [37] Object Management Group. OMG Unified Modeling
LNCS 1764, Springer , Berlin, 2000. Language Specification, Version 1.3. June 1999.
[22] R. France, B. Rumpe (eds.): <<UML>>'99 - The Unified [38] R. F. Paige, J. S. Ostroff: A Comparison of the Business
Modeling Language, Beyond the Standard. Second Object Notation and the Unified Modeling Language.
Intern. Conference. Fort Collins, CO, October 28-30, In [22], 67-82.
1999. LNCS 1723, Springer, 1999.
[39] M. Schrefl, G. Kappel: Cooperation Contracts. In T. J.
[23] E. Gamma, R. Helm, R. Johnson, J. Vlissides: Design Theorey (ed.): Proc. of the 10th Intern. Conf. on the ER
Patterns. Addison-Wesley, Reading, MA, 1995. Approach, October 1991, 285-307.
[24] C. Ghezzi, M. Jazayeri, D. Mandrioli: Fundamentals of [40] B. Selic, G. Gullekson, P. Ward: Real-Time Object-
Software Engineering. Prentice-Hall Intern, 1991. Oriented Modeling. Wiley, 1994.
[25] D. Giannakopoulou, J. Magee, J. Kramer: Checking [41] A. Sernadas, C. Sernadas, H.-D. Ehrich: Object-Oriented
Progress with Action Priority: Is it Fair? In O. Specification of Databases: An Algebraic Approach. In
Nierstrasz, M. Lemoine (eds.): Proc. ESEC/FSE '99, P. M. Stoecker, W. Kent (eds.): Proc. 13th Intern. Conf.
Toulouse, France, Sept. 1999, LNCS 1687, Springer, on Very Large Databases VLDB'87, VLDB End. Press,
Berlin, 1999, 511-527. Saratoga (CA), 1987, 107-116.
[26] D. Harel: Statecharts: A Visual Formalism for Complex [42] St. Sauer, G. Engels: MVC-Based Modeling Support for
Systems. Science of Comp. Prog., 8 (July 1987), 231-274. Embedded Real-Time Systems. In P. Hofmann, A.
[27] K. M. van Hee: Information Systems Engineering: A Schürr (eds.): OMER Workshop Proceedings, 28-29
Formal Approach. Cambridge Univ. Press, Cambridge, May, 1999, Herrsching (Germany), University of the
UK, 1994. German Federal Armed Forces, Munich, Technical
[28] C. L. Heitmeyer, R. D. Jeffords, B. G. Labaw: Automated Report 1999-01, May 1999, 11-14.
Consistency Checking of Requirements Specifications. [43] St. Sauer, G. Engels: Extending UML for Modeling of
In ACM TOSEM, 5(3), July 1996, 231-261. Multimedia Applications. In M. Hirakawa, P. Mussio
[29] ITU-TS Recommendation Z.120: Message Sequence (eds.): Proc. 1999 IEEE Symposium on Visual
Chart (MSC). ITU-TS, Geneva, 1996. Languages, September 13-16, 1999, Tokyo, Japan. IEEE
Computer Society 1999, 80-87.
[30] I. Jacobson, G. Booch, J. Rumbaugh: The Unified
Software Development Process, Addison-Wesley, [44] J. Warmer, A. Kleppe: The Object Constraint Language:
Reading, 1999. Precise Modeling with UML. Addison-Wesley,
Reading, MA, 1998.
[31] R. Jungclaus, G. Saake, T. Hartmann, C. Sernadas:
TROLL - A Language for Object-Oriented Specification [45] A. Zamperoni: GRIDS - GRaph-Based Integrated
of Information Systems. ACM Trans. on Information Development of Software: Integrating Different
Systems, 14(2), April 1996, 175-211. Perspectives of Software Engineering. In Proc. of the
18th Intern. Conf. on Software Engineering, March
[32] St. Kent, J. Howse: Mixing Visual and Textual 1996, Berlin, Germany, IEEE Computer Society Press,
Constraint Languages. In [22], 384 - 398. 1996, 48-59.
[33] G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. [46] P. Zave: Feature Interactions and Formal Specifications
Lopes, J.-M. Loingtier, J. Irwin: Aspect-Oriented in Telecommunications. Computer, 26(8), 1993, 20-29.
Programming. In Proceedings of ECOOP'97, LNCS 1241,
Springer, 1997. 7. LINKS
www.omg.org - OMG home page
[34] C. Kobryn: UML 2001: A Standardization Odyssey.
CACM, 42(10), October 1999, 29-37. www.cs.york.ac.uk/puml - precise UML group
[35] G. Larsen: Designing Component-Based Frameworks www.rational.com/uml/index.jtmpl - UML literature
using Patterns in the UML. CACM, 42(10), October uml.shl.com - UML RTF home page
1999, 38-45.