Role modeling for framework design, as developed in this dissertation,
makes designing, learning, and using object-oriented frameworks
easier than possible with traditional class-based approaches.
Object-oriented frameworks promise higher productivity and
shorter time-to-market for the development of object-oriented
applications. These goals are achieved through design and code
reuse. While many projects show that these promises can be met,
failed projects also show that they are not always easy to reach.
This dissertation addresses three pertinent technical problems
of designing, learning, and using object-oriented frameworks:
complexity of classes, complexity of object collaboration, and
lack of clarity of requirements put upon use-clients of a framework.
Role modeling for framework design is an evolutionary extension
of class-based modeling of frameworks. The method enhances class-based
modeling with role modeling concepts. In this method, objects
play roles that are described by role types. An object typically
plays several roles, so that the class of an object composes several
role types. Moreover, objects collaborate for several different
purposes, each of which is called an object collaboration task.
Such a task is described by a role model. A class model composes
all relevant role models to describe how instances of its classes
collaborate. Describing classes as compositions of role types
and class models as compositions of role models reduces class
and object collaboration complexity.
Going one step further, role modeling for framework design
defines frameworks as explicit design and implementation artifacts
with well-defined boundaries. A framework defines how to use it
with the help of so-called free role types of free role models.
A free role model provides free role types for roles that clients
of a framework have to play to make proper use of the framework.
Free role types are key to defining the requirements put upon
use-clients of a framework. Only by acting according to free role
types from a free role model may use-clients make use of framework
objects. The dissertation shows how these concepts are used to
design, use, and layer object-oriented frameworks.
Role modeling for framework design represents a significant
improvement over current practice regarding the initially stated
problems of framework design. This thesis is validated with the
help of three case studies that show how role modeling for framework
design works in practice. Each of the case studies compares a
traditional class-based framework design with a framework design
based on role modeling. However, each case study does so from
a different angle. The first case study on the Geo Object framework
compares a traditional design with an enhanced role modeling design.
The second case study on the KMU Desktop Tools framework shows
how role modeling helps in the redesign of an existing framework
and how the redesigned version compares to the old version. The
third case study on the JHotDraw framework for drawing editors
shows how an existing well-designed framework design can be described
even better using role modeling. Finally, all three case studies
reflect on the experiences made while carrying them out.
For its validation, the thesis is split up into nine sub-theses,
each of which has a problem and an activity dimension. The addressed
problems are class complexity, object collaboration complexity,
and lack of clarity of requirements put upon use-clients. The
activities are designing and redesigning a framework, learning
a framework, and using a framework. For each problem/activity
pair an argument is made based on the case studies. The overall
validation of the thesis becomes the validation of all nine problem/activity
pairs.
Role modeling for framework design combines the strengths of
role modeling with those of class-based modeling while leaving
out their weaknesses. It is therefore an evolutionary extension
of current methods that preserves existing investments. Finally,
role modeling for framework design is the first comprehensive
method to make frameworks explicit design artifacts and to introduce
modeling concepts for directly expressing their unique properties.
|