Not logged in.

Contribution Details

Type Master's Thesis
Scope Discipline-based scholarship
Title Analyzing and Detecting Design Flaws
Organization Unit
Authors
  • Raoul Marc Schmidiger
Supervisors
  • Beat Fluri
  • Martin Pinzger
  • Harald Gall
Institution University of Zurich
Faculty Faculty of Economics, Business Administration and Information Technology
Date 2007
Abstract Text As software systems enter the maintenance phase in their life cycle, their quality tends to rotten. This is due to continuous enhancements of system functionality and adaptations to ever changing environments. The experience of many developers out in the field has led to commonly accepted heuristics on good object oriented design. Martin Fowler proposed Refactorings for improving the design of existing software without changing its behavior. The problem in large systems is, that potential problem areas are hard to spot. Robert C. Martin has collected a set of Object Oriented Design Principles. The theoretical concept of these principles can be utilized to discover such problem hot spots. In this thesis, we develop detection strategies for breaches of these principles. By the use of evolutionary information on software systems, we suggest concepts that complement current static strategies as proposed, for example by Michele Lanza and Radu Marinescu. We investigate in the Single Responsibility Principle (SRP) and the Dependency Inversions Principle (DIP). For the SRP we show how CVS commits can be used to find out if a class possibly breaches the SRP. And by relating the change volatility of one class to another, we try to find breaches of the DIP. We evaluated our approach on five different projects.
Zusammenfassung Mit Einsetzen der Wartungsphase im Lebenszyklus eines Softwaresystems, tendiert dessen Qualität laufend abzunehmen. Der Grund dafür ist, dass das System dauernd um neue Funktionalität erweitert und an die sich verändernde Umwelt angepasst werden muss. Die Erfahrung vieler Softwareentwickler führte über die Jahre zu allgemein anerkannten Heuristiken über gutes Objekt-Orientiertes Softwaredesign. Martin Fowler schlug Refactorings vor, um das Design von Software zu verbessern ohne dabei gleichzeitig deren Verhalten zu ändern. Die Schwierigkeit in grossen Softwareprojekten ist, dass potentielle Problemstellen nicht leicht gefunden werden können. Robert C. Martin stellte die wichtigesten Objekt-Orientierten Design Prinzipien zusammen. Deren theoretische Grundlage kann dazu verwendet werden, solche potentiellen Problemstellen aufzufinden. In dieser Diplomarbeit entwickeln wir Strategien um Verletzungen von diesen Prinzipen zu finden. Durch den Einbezug von Daten über die Entwicklung eines Softwaresystems, schlagen wir Konzepte vor, welche die gängigen statischen Verfahren, wie sie etwa von Michele Lanza and Radu Marinescu vorgeschlagen wurden, ergänzen. Wir untersuchen das Single Responsibility Principle (SRP) und das Dependency Inversions Principle (DIP). Wir zeigen, wie CVS Commits dazu verwendet werden können, um potentielle Verletzungen des SRP zu finden. Für das DIP betrachten wir das Verhältnis von CVS Revisionen einer Klasse zur anderen. Wir evaluierten unsere Herangehensweise an fünf verschiedenen Projekten.
Export BibTeX