Automated Abstraction of Class Diagrams

Authors: Alexander Egyed

Designers can easily become overwhelmed with details when dealing with large class diagrams. This paper presents an approach for automated abstraction that allows designers to “zoom out” on class diagrams to investigate and reason about their bigger picture. The approach is based on a large number of abstraction rules that individually are not very powerful, but when used together, can abstract complex class structures quickly. This paper presents those abstraction rules and an algorithm for applying them. The technique was validated on over a dozen models where it was shown to be well-suited for model understanding, consistency checking, and reverse engineering.

Categories and Subject Descriptors: D.2 [Software Engineering]: Design Tools and Techniques
General Terms: Class Diagrams, Transformation, Unified Modeling Language, Reverse Engineering, Class Abstraction, Class Patterns

CORRECTION! On page 488, the paper incorrectly describes an article from Murphy et al. [1995]. Their technique allows a developer to define a high-level model of what the system is expected to be doing which is then compared to what the system is actually doing. While the high-level model is defined by a developer, the observation of what the low-level model is doing can be derived statically from source code or dynamically from the system's execution. The latter was misrepresented in this article. Their technique can be used to map (almost all) binary relationships one can extract between source-level program elements. Some common examples of relationships they look at are calls between functions (methods), accesses to global variables, event interactions, and inheritance. So contrary to our characterization, their technique is not limited to runtime behavior.

Download PDF here!