| |
[Download PDF here!]
Authors: Alexander Egyed
Class
diagrams are among the most widely used object-oriented design techniques.
They are effective in modeling the structure of software systems at any
stages of the software life cycle. Still, class diagrams can become as
complex and overwhelming as the software systems they describe. This paper
describes a technique for abstracting lower-level class structures into
higher-level ones by ‘collapsing’ lower-level class patterns into single,
higher-level classes and relationships. This paper is an extension to an
existing technique that re-interprets the transitive meaning of lower-level
classes into higher-level relationships (relational reasoning). The existing
technique is briefly summarized. The extensions proposed in this paper are
two-fold: This paper augments the set of abstraction rules to also collapse
class patterns into higher- level classes (compositional reasoning). While
this augmentation is simple and in sync with traditional views of refinement
and abstraction, it has drawbacks in defining class features like methods
and attributes. This paper thus also demonstrates how to filter low-level
class features during abstraction. Our approach requires some human guidance
in deciding when to use compositional or relational reasoning but is
otherwise fully automated. Our approach is conservative in its results
guaranteeing completeness but at the expense of some false positives (i.e.,
the filter errs in favor of not eliminating in case of doubt). The proposed
technique is applicable to model understanding, inconsistency detection, and
reverse engineering.
|
|