BISS Monographs, Bd. 14
218 pages, year of publication: 2002
price: 40.50 €
The Unified Modeling Language (UML) is a widely accepted standard for modeling software systems. The UML supports object-oriented approaches to software development with a rich set of modeling concepts. The graphical notation of UML includes diagrams such as use case diagrams, class diagrams, state diagrams and sequence diagrams. These are used for describing static as well as dynamic aspects of a system. An important part of UML is the Object Constraint Language (OCL) - a textual language that allows to specify additional constraints on models in a more precise and concise way than it is possible to do with diagrams only.
While UML offers a rich set of concepts and diagrams, it is still an unsolved problem what the precise meaning of a model and associated constraints is. A number of problems related to under-specified constructs, ambiguities and contradictions have already been identified in the past. In our view, it is important to have a precise semantics of UML models and OCL constraints. Precise foundations are needed for analysis, validation, verification, and transformation (such as refinement and code generation) of models. They are also a prerequisite for providing tools with a well-defined and predictable behavior.
We present a precise approach that allows an analysis and validation of UML models and OCL constraints. We focus on models and constraints specified in the analysis and early design stage of a software development process. For this purpose, a suitable subset of UML corresponding to information that is usually represented in class diagrams is identified and formally defined. This basic modeling language provides a context for all OCL constraints. We define a formal syntax and semantics of OCL types, operations, expressions, invariants, and pre-/postconditions. We also give solutions for problems with the current OCL definition and discuss possible extensions.
A metamodel for OCL is introduced that defines the abstract syntax of OCL expressions and the structure of types and values. The metamodel approach allows a seamless integration with the UML metamodeling architecture and makes the benefits of a precise OCL definition easier accessible. The OCL metamodel also allows to define context-sensitive conditions for well-formed OCL expressions more precisely. These conditions can now be specified with OCL whereas they previously were specified only informally.
In order to demonstrate the practical applicability of our work, we have realized substantial parts of it in a tool supporting the validation of models and constraints. Design specifications can be "executed" and animated thus providing early feedback in an iterative development process. Our approach offers novel ways for checking user data against specifications, for automating test procedures, and for checking CASE tools for standards conformance. Therefore, this work contributes to the goal of improving the overall quality of software systems by combining theoretical and practical techniques.