| 
											 | 
											
													 This chapter validates the dissertation thesis. It first reviews
the thesis and then devises a validation strategy. Based on the
form of the thesis statement, the validation strategy is to split
the thesis up into nine parts, each of which can be validated
individually. Every sub-validation is carried out using general
arguments about object-oriented framework design that are backed
by the observations made and experiences gained in the case studies.
The validation of the dissertation thesis follows from the sub-validations. 
													9.1 Thesis review and validation strategy
													Chapter 2 presents the final version of the thesis of this
dissertation: 
													Thesis statement of dissertation (final version, taken from
Chapter 2) 
													Role modeling for framework design makes the following activities
easier to carry out for the expert framework developer and user
than is possible with traditional class-based approaches: 
													
														- designing and redesigning a framework;
														
 - learning a framework from its documentation;
														
 - using a framework that is already understood;
													
  
													The following problems are addressed and their severity is
reduced: 
													
														- complexity of classes;
														
 - complexity of object collaboration;
														
 - clarity of requirements put upon use-clients.
													
  
													This form of the thesis helps to determine what to prove and
which constraints to adhere to while doing so. 
													First, a validation of the thesis must be based on a comparison
between the "traditional class-based approach" and the
role modeling approach. Unless stated otherwise, role modeling
always means "role modeling for framework design as defined
in this dissertation". Traditional class-based approach means
what you can natively express using classes as the only central
modeling concept (for example, UML). Also, the discussion is restricted
to expert developers and users only. 
													Then, the thesis is split up into different parts: designing
and redesigning a framework, learning a framework from its documentation,
and using an already understood framework. These are separate
activities that can be discussed and validated independently. 
													Finally, the thesis defines in which respect role modeling
eases the different activities by stating which problems it addresses:
class complexity, object collaboration complexity, and clarity
of requirements and constraints put upon use-clients. 
													This leads to a matrix of sub-theses (claims) to be validated,
displayed in Table 9-1. 
													
													 
														
															| 
    (activity, problem) matrix | 
															
    designing and redesigning a framework | 
															
    learning a framework from its documentation | 
															
    using an already understood framework | 
														 
														
															| 
    complexity of classes | 
															
    Validity to be shown. | 
															
    Validity to be shown. | 
															
    Validity to be shown. | 
														 
														
															| 
    complexity of object collaboration | 
															
    Validity to be shown. | 
															
    Validity to be shown. | 
															
    Validity to be shown. | 
														 
														
															| 
    clarity of requirements put upon use-clients | 
															
    Validity to be shown. | 
															
    Validity to be shown. | 
															
    Validity to be shown. | 
														 
													 
													
													Table 9-1: The dissertation thesis broken up into nine sub-theses. 
													The matrix has the set of activities as its X-dimension, and
the set of problems as its Y-dimension. A matrix cell is referenced
using A for activity, P for problem, and a digit for the particular
activity and problem. For example, A2P1 is the top middle matrix
cell (activity: learning a framework; problem: complexity of classes). 
													For each cell in the matrix, it needs to be shown that the
X dimension, the activity, becomes easier (or stays the same)
with respect to the Y dimension, the problem, if one compares
the traditional class-based approach with the role modeling approach. 
													Because the dissertation thesis is viewed as the conjunction
of these nine sub-theses, the overall thesis validation becomes
the conjunction of the nine sub-validations. 
													The matrix form suggests a validation strategy in which each
sub-thesis is assessed and validated individually. For nine sub-theses,
this is a tedious and repetitive undertaking, because many arguments
and experiences apply to several of them. 
													A better validation strategy is to walk through a set of key
properties of the role modeling approach and show how they lead
to arguments that validate one or more of the nine sub-theses.
In a second step, for each sub-thesis, the arguments can then
be put together to form the overall validation of the sub-thesis.
With all nine sub-theses done, the overall thesis validation is
also done. 
													The next subsection carries out the thesis validation using
this strategy. 
													9.2 Thesis validation
													This subsection presents the actual validation of the dissertation
thesis. It follows the validation strategy outlined above: it
first walks through a set of key properties of the role modeling
method, and then consolidates the resulting arguments for each
sub-validation. The thesis validation follows as the conjunction
of the sub-validations. 
													9.2.1 Describes class as composition of role types
													Role modeling, as defined in this dissertation, lets developers
describe classes as compositions of distinct role types. Or, viewed
the other way round, class interfaces are broken up into role
types. A role type is used in two different contexts. In the first
context, the role type is part of a role model, where it is defined.
In the second context, a role type is part of the role type set
of a class, where the class defines how the role types are composed
to determine the behavior of its instances. Traditional class-based
modeling offers no appropriate means to split up a class interface
into distinct parts. 
													When dealing with a class, developers switch between the two
views. On the one hand, they focus on the role type in the context
of its role model to define, use, or understand the specific aspect
of the class being described by the role type. On the other hand,
they focus on the composition of the role types to understand
what makes up the class as a whole and how acting in the context
of one role will cause actions in the context of another role
of instances of that class. 
													Describing a class as the composition of role types and breaking
up a class interface into role types separates design concerns
along the lines of object collaboration tasks. This property of
the approach helps with the following activity/problem pairs: 
													
														- Designing complex classes of a framework (A1P1). Role modeling
  makes it easier to design a class and its interface, because
  keeping the role model and the class view separate and being
  able to easily switch between them reduces the complexity of
  the design task.
														
The experiences with designing the Geo frameworks and the
  Tools framework support this argument. For example, the Geo system
  has several complex service interfaces. Splitting them up into
  different role types significantly reduced the complexity of
  the remaining design task.
														  - Learning complex classes of a framework (A2P1). Role modeling
  makes it easier to understand a class, because keeping the role
  model and the class view separate and being able to easily switch
  between them reduces the complexity of the learning task.
														
It was a common experience in the Geo project that it is easier
  to learn key classes from a framework designed and documented
  using role modeling than possible with documentation based on
  traditional class based modeling. The same argument holds true
  for the JHotDraw framework.
														  - Using a class from an well-understood framework (A3P1). Role
  modeling makes it easier to use a class, because it is better
  understood, and because developers can focus on the different
  uses of a class independently of each other.
														
Describing classes as compositions of role types eased using
  key classes from the Geo frameworks. Also, when designing and
  implementing client classes, the focus is on single role types
  rather than full classes. This reduces the complexity of defining
  client classes further.
													   
													The property "describes class as composition of role types"
of the role modeling approach therefore significantly eases designing,
learning, and using complex classes of a framework. This addresses
the activity problem pairs A1P1, A2P1, and A3P1. 
													9.2.2 Breaks up relationship descriptions into role models
													Role modeling, as defined in this dissertation, breaks up the
object association or aggregation descriptions of traditional
class-based modeling into role models. A role model focuses on
one particular object collaboration task, while a traditional
object relationship description comprises all possible tasks carried
out on an instance of the relationship description. The object
relationship description between two classes becomes the sum of
the role relationships descriptions between role types from role
models that connect these two classes. Traditional class-based
modeling offers only object relationship descriptions between
classes, but no role models. 
													Role models can be viewed as zooming in on an object relationship
description. They detail what is going on between the involved
classes. Developers can therefore maintain two different views
on how classes relate to each other. They can see the traditional
object relationship descriptions that determine, which object
may relate to which other object in what quantities, etc., and
they can zoom in on any such relationship description to determine
the different object collaboration tasks carried out using instances
of these relationship descriptions. 
													Chapters 3 and 4 have shown that the role model view is an
extension of the relationship description view, and that the object
relationship descriptions between classes can be derived from
role models. The object relationship descriptions determine the
base skeleton, and the role models describe the behavior of objects
working along this predefined structure. These complementary views
help with the different activities and their problems. 
													Breaking up relationship descriptions into role models eases
handling the complexity of object collaboration. This property
of the approach helps with the following activity/problem pairs: 
													
														- Designing the object collaboration of a framework (A1P2).
  Role modeling eases designing the framework's object collaboration,
  because developers can zoom in on the object relationship structure,
  determine the tasks carried out along its line, and switch back
  to the big picture again. They can work on a detail level that
  is best for the current design issue, be it the overall structure
  or the individual collaboration tasks.
														
The experiences with the Geo frameworks and the Tools framework
  directly support this argument. During design sessions team members
  continuously switched between the class structure and their relationship
  descriptions on the one hand, and the detailed discussion of
  how instances of these classes collaborate on specific tasks
  using role models on the other hand. Many of these role models
  were design pattern instantiations, which made them a well-defined
  design issue in itself.
														  - Learning the object collaboration of a framework (A2P2).
  Object relationship descriptions tell us about the structural
  relationships between objects of a framework, but they tell us
  nothing about the tasks they carry out. Role models do that.
  Role modeling significantly eases learning the object collaboration,
  because it makes information explicit that would otherwise be
  lost or described in other (then sub-optimal) ways.
														
Again, the experiences from the case studies directly support
  this argument. When team members had to understand a new design
  or learn an existing framework, the two views of object relationship
  descriptions and role models helped them better and faster understand
  the intent of a design. Also, team members could more readily
  recognize design patterns based on the catalog of role model
  design patterns [Rie97a]. This helped reusing prior experience.
														  - Using classes from an well-understood framework (A2P3). Using
  role models, use-clients can be precise about what they want
  from a framework class (by picking up a specific free role type).
  Using object relationship descriptions, use-clients always get
  a bundle of role models, of which they may only be interested
  in one. Also, in traditional class-based modeling, use-clients
  without operations are not represented at all, even if they play
  a significant role. Role models provide free role types even
  for use-clients that have no operations. Hence important information
  is documented that gets lost in class-based modeling.
														
The case study experiences support this argument. For example,
  the Geo service interfaces clearly separated the different issues
  of using the services as free role types. Team members could
  therefore distinguish between the different tasks like retrieving
  the service object, configuring it with information, and using
  its primary functionality. These tasks could be carried out by
  different objects and were not bound to one specific client class.
													   
													The property "breaks up relationship descriptions into
role models" of the role modeling approach therefore significantly
eases designing, learning, and using a framework that has complex
object collaboration. This addresses the activity/problem pairs
A1P2, A2P2, and A3P2. 
													9.2.3 Makes requirements on clients explicit
													Role modeling, as defined in this dissertation, makes requirements
and constraints put upon use-client classes explicit. The requirements
and constraints are described using role types and role constraints.
The role types are the free role types of a framework, and the
role constraints are those constraints that relate to free role
types. How exactly requirements and constraints on clients are
specified depends primarily on the chosen type specification mechanism. 
													Traditional class-based modeling offers two possibilities to
define requirements and constraints put upon clients: 
													
														- classes or interfaces that client classes have to inherit
  from;
														
 - class specifications as part of a framework class interface.
													
  
													This has the following problems: 
													
														- Making clients inherit from classes to enforce constraints
  is too heavyweight an approach, if clients have to inherit unwanted
  baggage (implementation state, operation implementations). Partially
  or fully implemented classes are not always an adequate means
  for specifying client constraints.
														
 - Making clients implement specific interfaces is frequently
  better than making them inherit from classes. If an interface
  represents a role type, the role modeling approach and the traditional
  class-based approach are equivalent. However, in the traditional
  approach, such interfaces are used only if operations are associated
  with them. No-operation free role types are missed.
														
 - Making requirements and constraints put upon clients part
  of a framework class specification forces developers of any client
  for any collaboration task to keep in mind the whole specification.
  Splitting it up into role types separates different behavioral
  aspects of the class and therefore reduces complexity. (See the
  arguments of why to break up a class interface into role types).
													
  
													Moreover, the traditional approach to requirements and constraints
specification puts the specification into the wrong place, namely
the framework class. It is better to put it into the free role
types, because the requirements are requirements on clients, and
need to be adhered to by them, and not by the framework classes.
However, as long as there was no concept of free role type, there
was no possibility of making explicit that use-clients are responsible
for adhering to the specifications. Thus, they were specified
as part of a framework class interface. 
													Finally, the free role types are part of free role models.
The additional view on object collaboration tasks provides the
benefits of breaking up class interfaces into role types and breaking
up object relationship descriptions into role models. This also
applies to the specification of requirements and constraints put
upon clients. (See the discussion of these role modeling properties
above). 
													For these reasons, role modeling provides a better background
for specifying the requirements and constraints put upon clients
than traditional class-based modeling. Role modeling therefore
helps with the following activity/problem pairs: 
													
														- Designing use-client requirements (A1P3). Free role types
  are a better means of enforcing requirements and constraints
  than classes. They are also a better means than interfaces, if
  these are only used to specify requirements that are attached
  to operations. Also, role types stem from role models, and therefore
  show how they tie in with the framework. Traditional class-based
  modeling falls short here as well.
														
The experiences with the Geo frameworks and the Tools framework
  support this argument. For every role type provided by a framework
  class, the defining role model had to specify at least one client
  role type. Team members therefore always had to ask themselves
  what a specific role type was good for, and how the counterpart
  in the described collaboration task had to look like. This is
  in contrast to earlier experiences with traditional class-based
  modeling, where it was easy to forget about clients, and that
  they also had to fulfill requirements and adhere to constraints.
														  - Learning how to use a framework (A2P3). Free role types specify
  requirements and constraints well and completely (as far as possible
  with the chosen type specification mechanism). Moreover, they
  provide separation of concerns as discussed above in the subsections
  on breaking up class interfaces and object collaborations. Both
  make it easier to learn how to use a framework.
														
Again, this argument is supported by the experiences from
  the case studies. The primary reason is the separation of concerns
  achieved by defining free role types and by breaking up the relationship
  descriptions into role models. In class-based modeling, client
  requirements are either not specified or, at least, they are
  more difficult to understand. Thus, role modeling reduced the
  complexity of understanding all requirements and constraints.
														  - While using a framework, adhering to its requirements and
  constraints (A3P3). Every use-client has to specify explicitly
  how it ties in with the framework by stating which free role
  types it uses. None can be forgotten or omitted. This requirement
  allows checking for proper use of the framework.
														
This argument is also supported by the case study experiences.
  First, learning a Geo framework more easily also made it easier
  to lay out how to use it. Second, when using it, the free role
  types and their description where a constant reminder and measure
  of how use-client classes had to look like and how their implementation
  had to behave.
													   
													The property "makes requirements on clients explicit"
of the role modeling approach therefore eases designing, learning,
and using a framework with respect to the requirements and constraints
put upon clients. This addresses the activity/problem pairs A1P3,
A2P3, and A3P3. 
													9.2.4 Supports reuse of experience
													Role modeling, as defined in this dissertation, better supports
developers in reusing previous design experience than possible
with a traditional class-based approach. Reuse of design experience
can take on two forms in this context. First, developers may adapt
earlier designs to new requirements and derive the new design
from this, and second, developers may apply design patterns [GHJV95,
RZ96]. 
													In comparison to class-based modeling, role modeling eases
reusing experience, because the separation of concerns it achieves
makes designs more readily decomposable into pieces and recomposable
from these pieces. Role modeling supports this particular well,
because it works along the lines of object collaboration, which
are a main focus of design and also of reusing experience. 
													
														- Reuse of experience through design adaptation. In this form
  of reuse, a developer reconsiders an old design, takes out the
  pieces not needed in the new design, changes the pieces according
  to new requirements, and adds new pieces as required for the
  new design. The result is the new design. An example are the
  Geo service interfaces, which are very similar, but differ in
  the details of the actual services provided.
														
If the old design has a clear role modeling description, reusing
  experience this way is made easier, because the old design already
  separates the different concerns that become the individual focus
  of attention when adapting the design for a new situation. The
  design is adapted along the lines of the object collaboration
  tasks that are described by the role models of the old and then
  new design.
														  - Reuse of experience through design patterns. In this form
  of reuse, an experienced developer recognizes a design problem
  and recalls a design pattern that he applies to solve the problem
  in the given context. Design patterns can take on many different
  forms. The most common object-oriented design patterns have been
  described in the seminal work of Gamma et al. [GHJV95]. Each
  of the design patterns from this catalog makes one specific design
  aspect flexible so that it can be changed easily.
														
Most of these patterns are about the distribution of responsibilities
  among the objects of a design, and how the responsibilities are
  assigned to classes. Using role modeling terminology, each pattern
  instance focuses on one specific object collaboration task, and
  the assignment of responsibilities to classes corresponds to
  putting role types from a role model into the role type sets
  of classes. Of the patterns from the design patterns catalog,
  the larger part can be described well using role modeling [Rie97a,
  Rie97c]. (Also see Appendix D.)
														 In a design, a design pattern application needs to be composed
  with other design pattern applications and role models. Recasting
  design patterns in role model form makes it easier to keep the
  different collaboration tasks separate, and thereby eases the
  reuse of experience. As I have demonstrated, using role models
  for describing design patterns makes them more flexible and more
  easily applicable, without making them use their particular patterns
  quality [Rie96a]. Traditional class-based modeling offers no
  such support.
													   
													Being able to reuse experiences addresses every kind of problem
in object-oriented framework design. Therefore, role modeling
better supports all of the activities and eases all of the problems
than class-based modeling does (in this respect). 
													When designing the Geo system, the team made use of its own
version of the design patterns catalog, which recast all the common
design patterns in role model form. This catalog was a constant
companion, and helped team members in all of the activities regarding
all of the problems. 
													The use of design patterns is ubiquitous in the Geo frameworks,
the Tools framework, and the JHotDraw framework. They have been
applied to form or used to describe free role models as well as
internal role models. They serve to more readily understand the
framework's client collaboration as well as its inner workings.
And they support using the framework. 
													Therefore, the property "supports reuse of experience"
of the role modeling approach eases designing, learning, and using
a framework with respect to all stated problems. This addresses
the activity/problem pairs A1P1 through to A3P3. 
													9.2.5 Consolidation of validation
													There are further properties of role modeling that help with
framework design and use (for example, frameworks are made explicit
design artifacts with well-defined boundaries) and that have not
been discussed in the previous subsections. However, the purpose
of this section is to validate the dissertation thesis. Therefore,
properties that do not directly contribute to this validation
have been omitted. 
													The previous subsections discussed the following properties
and examined their effect on the activity/problem pairs derived
from the dissertation thesis. 
													
														- Section 9.2.1: Describes class as composition of role types.
  Helps ease the problem of dealing with the complexity of classes
  for all three activities.
														
 - Section 9.2.2: Breaks up relationship descriptions into role
  models. Helps ease the problem of dealing with complex object
  collaboration of a framework for all three activities.
														
 - Section 9.2.3: Makes client requirements explicit. Helps
  ease the problem of specifying requirements and constraints put
  upon use-clients of a framework for all three activities.
														
 - Section 9.2.4: Supports reuse of experience. Helps ease every
  problem for every activity, because developers have experience
  to reuse for all of them.
													
  
													Table 9-2 shows where to find the arguments that prove a particular
activity/problem pair. 
													
													 
														
															| 
    (activity, problem) matrix | 
															
    designing and redesigning a framework | 
															
    learning a framework from its documentation | 
															
    using an already understood framework | 
														 
														
															| 
    complexity of classes | 
															
    9.2.1 
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
												
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
    9.2.4 | 
															
    9.2.1 
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
												
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
    9.2.4 | 
															
    9.2.1 
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
												
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
    9.2.4 | 
														 
														
															| 
    complexity of object collaboration | 
															
    9.2.2 
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
												
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
    9.2.4 | 
															
    9.2.2 
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
												
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
    9.2.4 | 
															
    9.2.2 
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
												
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
    9.2.4 | 
														 
														
															| 
    clarity of requirements put upon use-clients | 
															
    9.2.3 
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
												
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
    9.2.4 | 
															
    9.2.3 
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
												
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
    9.2.4 | 
															
    9.2.3 
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
																
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
												
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
													
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
    9.2.4 | 
														 
													 
													
													Table 9-2: Where to find the arguments for the sub-validations. 
													The validation of the dissertation thesis is the conjunction
of the validation of the nine sub-theses. Table 9-2 shows in which
subsection each sub-thesis has been addressed and validated. For
each sub-thesis, there are at least two major validating arguments.
Because the thesis dissertation is the conjunction of these sub-validations,
Table 9-2 concludes the thesis validation. 
													9.3 Summary (meaning of validation)
													The thesis validation shows that role modeling as defined in
this dissertation is superior to traditional class-based modeling
with respect to the problems stated initially in this work. As
reviewed in Chapter 2, related work has also tried to address
some of the problems that role modeling solves. However, none
of this related work achieves this density of problem solving
as role modeling. 
													It is the nature of a validation to focus exclusively on what
needs to be validated and to ignore any other consequences. However,
it may be exactly the side effects, why a specific statement,
in this case the dissertation thesis, was set up in the first
place. Thus, the validation does not tell the full truth about
why role modeling represents an improvement over current practice. 
													In explaining the thesis as the sum of several distinct parts,
it became possible to more precisely describe the thesis, and
to devise a validation strategy based on breaking it up into parts.
Doing so, however, the whole, which is more than the sum of its
parts, got lost. Much of the power of role modeling for framework
design as defined in this dissertation stems from the interaction
of the different parts. Without role types, there would be no
role models. Without role models, there would be no precise definition
of client interaction. Without role models, there would only be
limited increase of reuse of experience. Etc. 
													However, for the purposes of the thesis validation, this is
irrelevant. It needed to be shown that role modeling is a significant
improvement over current practice, and this has been done. How
the validation result is used is not to be defined by the dissertation.
It will become apparent in the practice of using role modeling
for framework design.
												  | 
											 | 
											 |