In this project we investigate how software systems change over time. To this end, we have developed several tools. Furthermore, we want to support developers by learning from the past of a software system, e.g. if certain parts of a system have been changed together frequently, then it is likely that they have to be changed together in the future as well.
EPOSee is our tool to show how a software system evolves over its lifetime. For this we provide several visualization techniques that illustrate different types of rules we obtain for a project by data mining. EPOSee integrates the individual visualizations into one tool.
EPOSee provides visualization techniques for the following rule types:
- Evolutionary Couplings: Pixelmap, 3D Bar Charts, Support Graph
- Association Rules: Rule Matrix
- Sequence Rules: Decision Tree, Parallel Coordinates
- How History Justifies System Architecture (or Not).
T. Zimmermann, S. Diehl, A. Zeller
In Proc. Sixth International Workshop on Principles of Software Evolution (IWPSE'03), Helsinki, Finland, Sep 2003.
- Visual Data Mining in Software Archives.
M. Burch, S. Diehl, P. Weißgerber
In Proc. ACM Symposium On Software Visualization (SOFTVIS'05), St. Louis, Missouri, USA, May 2005.
DependencyViewer analyzes the byte code of Java applications, computes various software metrics and visualizes the system design as a layered graph with colored edges and other visual hints to indicate design flaws and weaknesses.
Rule of thumb: All edges should run from the concrete to the more abstract packages.
The dependencies between the packages are indicators for reusability and maintainability of the whole system.
- DependencyViewer -- A Tool for Visualizing Package Design Quality Metrics.
Michael Wilhelm and Stephan Diehl
In Proceedings of the 3rd IEEE International Workshop on Visualizing Software for Program Understanding and Analysis VISSOFT, Budapest, Hungary, 2005.
RefVis searches in software archives for refactorings on the level of classes and methods. The following kinds of refactorings can be detected at the moment:
- Structural Refactorings: Move Class, Move Method, Pull Up Method, and Push Down Method.
- Local Refactorings: Hide Method, Rename Method, and Add/Remove Parameter.
RefVis visualizes the refactorings it has found in the context of the class hierarchy. The user can choose between a class hierarchy layout and a package layout. Color coding helps to distinguish different kinds of refactorings. Details on each refactoring can be displayed on demand using mouse-over tooltips. In the future the refactorings should be animated using linear interpolation.
- Error Detection by Refactoring Reconstruction
C. Görg, P. Weißgerber
In Proc. International Workshop on Mining Software Repositories (MSR), St. Louis, Missouri, USA, May 2005.
- Detecting and Visualizing Refactorings from Software Archives
C. Görg, P. Weißgerber
In Proc. International Workshop on Program Comprehension (IWPC), St. Louis, Missouri, USA, May 2005.
Recommending Software Changes
In cooperation with the software engineering group at Saarland University, we developed a recommender system that learns from previous software changes.
- Mining Version Histories to Guide Software Changes.
T. Zimmermann, P. Weißgerber, S. Diehl, A. Zeller.
In Proceedings of the 26th International Conference on Software Engineering (ICSE), Edinburgh, UK, May 2004. [PDF]
Abstract: We apply data mining to version histories in order to guide programmers along related changes: "Programmers who changed these functions also changed...". Given a set of existing changes, such rules a) suggest and predict likely further changes, b) show up item coupling that is indetectable by program analysis, and c) prevent errors due to incomplete changes. Our evaluation shows after an initial change, our ROSE prototype can correctly predict 26% of further files to be changed—and 15% of the precise functions or variables. 30% of the suggested files and 26% of the suggested functions or variables were correct predictions.