191
pages
English
Documents
2011
Le téléchargement nécessite un accès à la bibliothèque YouScribe Tout savoir sur nos offres
191
pages
English
Documents
2011
Le téléchargement nécessite un accès à la bibliothèque YouScribe Tout savoir sur nos offres
Publié par
Publié le
01 janvier 2011
Nombre de lectures
20
Langue
English
Poids de l'ouvrage
3 Mo
Publié par
Publié le
01 janvier 2011
Langue
English
Poids de l'ouvrage
3 Mo
A dissertation submitted to the
FAKULTÄT FÜR INFORMATIK UND AUTOMATISIERUNG
TECHNISCHE UNIVERSITÄT ILMENAU
Customizable Feature based Design Pattern Recognition
Integrating Multiple Techniques
for the degree of
DOKTOR-INGENIEUR (DR.-ING.)
presented by
Ghulam Rasool (MSCS)
born April 8, 1975
in Pakpattan, Pakistan
Gutachter:
1. Prof. Dr.-Ing. habil. Ilka Philippow
2. Prof. Dr.-Ing. habil. Kai-Uwe Sattler
3. Dr.-Ing. Patrick Mäder
October 2010
urn:nbn:de:gbv:ilm1-2011000079
Abstract
Recovering design information from legacy applications is a complex, expensive, quiet
challenging, and time consuming task due to ever increasing complexity of software and
advent of modern technology. The growing demand for maintenance of legacy systems,
which can cope with the latest technologies and new business requirements, the reuse of
artifacts from the existing legacy applications for new developments become very
important and vital for software industry. Due to constant evolution in architecture of
legacy systems, they often have incomplete, inconsistent and obsolete documents which
do not provide enough information about the structure of these systems. Mostly, source
code is the only reliable source of information for recovering artifacts from legacy
systems. Extraction of design artifacts from the source code of existing legacy systems
supports program comprehension, maintenance, code refactoring, reverse engineering,
redocumentation and reengineering methodologies.
The objective of approach used in this thesis is to recover design information from
legacy code with particular focus on the recovery of design patterns. Design patterns are
key artifacts for recovering design decisions from the legacy source code. Patterns have
been extensively tested in different applications and reusing them yield quality software
with reduced cost and time frame. Different techniques, methodologies and tools are used
to recover patterns from legacy applications in the past. Each technique recovers patterns
with different precision and recall rates due to different specifications and
implementations of same pattern. The approach used in this thesis is based on
customizable and reusable feature types which use static and dynamic parameters to
define variant pattern definitions. Each feature type allows user to switch/select between
multiple searching techniques (SQL queries, Regular Expressions and Source Code
Parsers) which are used to match features of patterns with source code artifacts. The
technique focuses on detecting variants of different design patterns by using static,
dynamic and semantic analysis techniques. The integrated use of SQL queries, source
code parsers, regular expressions and annotations improve the precision and recall for
pattern extraction from different legacy systems. The approach has introduced new
semantics of annotations to be used in the source code of legacy applications, which
reduce search space and time for detecting patterns.
The prototypical implementation of approach, called UDDPRT is used to recognize
different design patterns from the source code of multiple languages (Java, C/C++, C#).
iii
The prototype is flexible and customizable that novice user can change the SQL queries
and regular expressions for detecting implementation variants of design patterns. The
approach has improved significant precision and recall of pattern extraction by performing
experiments on number of open source systems taken as baselines for comparisons.
iv
Zusammenfassung
Die Analyse und Rückgewinnung von Architekturinformationen aus existierenden
Altsystemen ist eine komplexe, teure und zeitraubende Aufgabe, was der kontinuierlich
steigenden Komplexität von Software und dem Aufkommen der modernen Technologien
geschuldet ist. Die Wartung von Altsystemen wird immer stärker nachgefragt und muss
dabei mit den neuesten Technologien und neuen Kundenanforderungen umgehen können.
Die Wiederverwendung der Artefakte aus Altsystemen für neue Entwicklungen wird sehr
bedeutsam und überlebenswichtig für die Softwarebranche. Die Architekturen von
Altsystemen unterliegen konstanten Veränderungen, deren Projektdokumentation oft
unvollständig, inkonsistent und veraltet ist. Diese Dokumente enthalten ungenügend
Informationen über die innere Struktur der Systeme.
Häufig liefert nur der Quellcode zuverlässige Informationen über die Struktur von
Altsystemen. Das Extrahieren von Artefakten aus Quellcode von Altsystemen unterstützt
das Programmverständnis, die Wartung, das Refactoring, das Reverse Engineering, die
nachträgliche Dokumentation und Reengineering Methoden. Das Ziel dieser Dissertation
ist es Entwurfsinformationen von Altsystemen zu extrahieren, mit Fokus auf die
Wiedergewinnung von Architekturmustern. Architekturmuster sind Schlüsselelemente,
um Architekturentscheidungen aus Quellcode von Altsystemen zu extrahieren. Die
Verwendung von Mustern bei der Entwicklung von Applikationen wird allgemein als
qualitätssteigernd betrachtet und reduziert Entwicklungszeit und kosten. In der
Vergangenheit wurden unterschiedliche Methoden entwickelt, um Muster in Altsystemen
zu erkennen. Diese Techniken erkennen Muster mit unterschiedlicher Genauigkeit, da ein
und dasselbe Muster unterschiedlich spezifiziert und implementiert wird. Der
Lösungsansatz dieser Dissertation basiert auf anpassbaren und wiederverwendbaren
Merkmal-Typen, die statische und dynamische Parameter nutzen, um variable Muster zu
definieren. Jeder Merkmal-Typ verwendet eine wählbare Suchtechnik (SQL Anfragen,
Reguläre Ausdrücke oder Quellcode Parser), um ein bestimmtes Merkmal eines Musters
im Quellcode zu identifizieren. Insbesondere zur Erkennung verschiedener Varianten
eines Musters kommen im entwickelten Verfahren statische, dynamische und semantische
Analysen zum Einsatz. Die Verwendung unterschiedlicher Suchtechniken erhöht die
Genauigkeit der Mustererkennung bei verschiedenen Softwaresystemen. Zusätzlich wurde
eine neue Semantik für Annotationen im Quellcode von existierenden Softwaresystemen
entwickelt, welche die Effizienz der Mustererkennung steigert.
v
Eine prototypische Implementierung des Ansatzes, genannt UDDPRT, wurde zur
Erkennung verschiedener Muster in Softwaresystemenen unterschiedlicher
Programmiersprachen (JAVA, C/C++, C#) verwendet. UDDPRT erlaubt die Anpassung
der Mustererkennung durch den Benutzer. Alle Abfragen und deren Zusammenspiel sind
konfigurierbar und erlauben dadurch die Erkennung von neuen und abgewandelten
Mustern. Es wurden umfangreiche Experimente mit diversen Open Source Software
Systemen durchgeführt und die erzielten Ergebnisse wurden mit denen anderer Ansätze
verglichen. Dabei war es möglich eine deutliche Steigerung der Genauigkeit im
entwickelten Verfahren gegenüber existierenden Ansätzen zu zeigen.
vi
Acknowledgements
First and far most, this work would not have been completed except by special blessings
of Almighty Allah. There are several other individuals who made contributions to this
thesis. Tireless efforts, expert guidance and analytic thinking on the part of my supervisor,
Professor Dr. Ilka Philippow, who spent countless hours by discussing different aspects of
my thesis. She always kept door open in her tight time schedule and dedicated countless
hours for discussions. Her valuable suggestions and continuous encouragement helped
during difficult time of my dissertation. I greatly appreciate her immeasurable efforts
which exposed my scientific research skills and sparked my interest in the area of design
pattern recovery.
My debit of gratitude goes to Dr. Patrick Mäder who helped in different aspects of this
thesis. His friendly attitude and scientific support was admirable throughout difficult
journey of my PhD. He polished my raw theoretical ideas, reviewed my papers very
carefully and provided valuable feedback. I cannot forget his help to solve many technical
issues related with my thesis and his moral support played a great role for the completion
of this work. I would also like to thank Professor Dr. Nazir A. Zafar, Dean Faculty of
Information Technology, University of Central Punjab, Lahore, Pakistan, who provided
research environment for working during my stay in Pakistan.
I would also like to give my gratitude to the students who supported me in the
implementation of prototype. My thanks go to Sebastian Kahlm and Xiang Yu for their
dedicated work.
I would like to thank the Higher Education Commission (HEC) and the Govt of
Pakistan for funding my PhD study in Germany for the period of three years.
My sincere thanks go to Nils Würfel and Heiner Kotula for their technical support
during my stay in TU Ilmenau. I would also like to thank my colleague Elke Boui