Experimental Validation ofOO Design Patterns |
|
Approach |
The first step is to "reverse engineer" existing OO designs to see if
structures analogous to proposed OODPs can be found. Patterns
found within existing designs where the defect rates of the classes is
known will be statistically analyzed in order to see if the defect
rates in the corresponding classes were significantly different from
error rates in classes designed according to no pattern. In addition
we will use the statistical analysis to determine which are the most
error-prone of the patterns we uncover.
If the analysis from the first step does in fact find that, in reinventing the proposed patterns on their own, system designers introduced extra errors into the system, then it may be the case that the design of such systems could be improved if a library of error-free patterns was provided. In this case, this experiment should be replicated with such an error-free library provided in order to be able to compare OO components developed from scratch with OO components developed from the library, to test for differences in error-proneness and implementation effort between the two categories. |
Validation Strategy |
We developed an inductive method, which we call BACKDOOR
(Backwards Architecting Concerned with Knowledge Discovery of OO
Relationships) aimed at helping us reverse architect OODPs from
existing OO software systems and package them into reusable design
solutions. Such a method will allow us to:
|
Project Status |
Dormant
The first phase, reverse engineering OODPs from existing programs, has been completed. We describe a method, called BACKDOOR, which we developed to facilitate the reverse engineering process. We validated the usefulness of our method by applying it to C++ programs developed for a university course. Now that a pool of design patterns has been found, it remains to associate the component classes with metrics in order to characterize the patterns and the programs in which they are found. |
Results |
We described an inductive method making it possible to
characterize OO systems with respect to their use of OODPs. The
method was validated using a suite of OO projects developed in a
controlled study performed at the University of Maryland in an
upper-level class. Although it was shown that we may not yet be
packaging patterns at the right level of generality, we have shown
that our method is useful for finding implicit design patterns in
system architectures. We have also shown that our method can provide
an initial pattern base which can be expanded on further iterations of
the pattern discovery process. The results so far from this work seem to indicate that the creation of an OODP library would be a worthwhile endeavor; practitioners are using patterns in practice, but in general not using very sophisticated implementations. By associating metric values with the patterns in our knowledge base in the next step, we will be able to get a much clearer insight into the potential for a library. In particular, if system designers introduce extra errors into the system by reinventing these patterns from scratch, then system design could clearly be improved if a library of tailorable, error-free patterns was provided. |