Analyzing and Detecting Design Flaws using Source Code Change Information


finished by Raoul Schmidiger


A good object-oriented design is a key to a long-living and successful software system and therefore software projects invest a lot of effort in the design up-front. There is an on-going discussion about “good” object-oriented design and a number of design principles and heuristics have been proposed such as the ones by Riel and Martin. Furthermore, approaches to measure code smells and violations of a number of these principles exist. Typically, they use static source code information such as source code metrics for the measurement and detection of code smells and design flaws. The results obtained by these approaches are valuable, however we claim that code smells and design flaws cannot be measured sufficiently using static information solely because they often emerge during evolution. It smells if the effort to fix a bug, to modify or extend a feature, or to add a new feature is high; it smells if many classes are affected by the change; etc. In this diploma thesis you will address our claim and develop an approach to detect code smells and design flaws in object-oriented software systems using static information and change data.

The goals of this Diploma Thesis

The goal of this thesis is to develop an approach and a prototype tool to measure and visualize object oriented design flaw.

Task description

The first task in the Diploma Thesis is concerned with investigating existing work in the field of object-oriented design (OOD) principles/heuristics, code smells and design flaws, techniques to measure and detect them, and software evolution analysis.

In the next step, select a sub-set of principles, smells, and design flaws and develop an approach to measure, observe, and detect violations of them. The basic idea of the approach is to detect flaws by analyzing the changes in class interfaces, class usage dependencies, and package structure. Find out, which changes and measures are appropriate to detect which flaws. Can we validate the sub-set of principles and heuristics described in the literature?

Implement your approach as an Eclipse plug-in and integrate it into our Evolizer platform. The tool should allow the user to analyze the as-implemented design of Java software systems. A typical usage scenario, for instance is, select a Java project in the Package Explorer and run the analysis of a particular OOD principle via context menu. The analysis outputs a list of detected violations showing affected packages and classes. Furthermore, graph visualizations may be also used to show the dependencies between affected classes/packages. Existing Evolizer plug-ins such as the FAMIX parser to extract the as-implemented design from Java source code and the ChangeDistiller to extract the source code changes should be used.

The last step is concerned with evaluating your approach. This is done in a case study with a Java open source project such as the Eclipse project. The evaluation will also include a manual inspection of the detected code smells and design flaws in the source code.

The deliverables are as follows:

When What
end of 1st month State-of-the-art report
end of 2nd month A list of object oriented design principles and heuristics and methods to measure them
end of 3rd month An approach to use the previous methods to detect design flaws
end of 4th month A prototype tool to visualize and analyze design flaws
end of 5th month An evaluation of the concepts and prototype tools with the Eclipse project
last month Finishing Diploma Thesis

In this Diploma Thesis you will learn

  • Object-oriented design principles and heuristics.
  • Code smell and design flaw detection.
  • Graph visualization techniques.
  • Contributing to the Eclipse project.

General thesis guidelines

The typical rules of academic work must be followed. "So what is a (Diploma) Thesis" describes guidelines which must be followed. At the end of the thesis, a final report has to be written. The report should clearly be organized, follow the usual academic report structure, and has to be written in English using our s.e.a.l. LaTeX-template.

Since implementing software is also part of this thesis, state-of-the-art design, coding, and documentation standards for the software have to be obeyed.

The diploma thesis has to be concluded with a final presentation.


Dr. Martin Pinzger, Beat Fluri, Prof. Harald Gall.

More information on "What is a Diploma Thesis and How to do a Diploma Thesis at IFI" is provided here.