Thesis
Bachelor thesis
Model-driven development aims to create executable software from formal models. Such models do not depict all aspects of a software system. They are limited on aspects like the architecture. So developers have to implement the more detailed aspects themselves after the general structure has been generated. This means that the model-driven approach does not prevent the violation of the protocols specified in the models.
This Bachelor-Reports aims to develop a tool that automatically detects such violations during development.
In this context model-driven development the openArchitectureWare-platform as well as the refelxion analysis from the Bauhaus-Suite are evaluated.
Diploma thesis
Als ein Vorteil tokenbasierter Verfahren zur Erkennung von Softwareklonen gilt, dass zur Vorbereitung nur eine lexikalische Analyse für die zu untersuchende Software durchgeführt werden muss. Ein Parser, der einen konkreten oder gar einen abstrakten, annotierten Syntaxbaum erstellt ist nicht n?tig. Dadurch wird es m?glich, Software zu analysieren ohne zuerst komplizierte Build-Systeme nachbilden zu müssen. Auch Quellcode mit Pr?prozessoranweisungen und syntaktischen Fehlern kann so untersucht werden.
Aus diesem Vorteil tokenbasierter Verfahren resultiert jedoch auch ein Nachteil. Aufgrund der lexikalischen Eingabe bestehen die erkannten Klone auch lediglich aus Sequenzen von Token. Syntaktische Informationen, die eine bessere Bewertung der erhobenen Daten erm?glichen k?nnten sind nicht vorhanden.
Das Ziel dieser Arbeit ist es, ein Verfahren zu entwickeln das ebendiese Informationen für die erkannten Klone erheben kann. Hierfür sollen die Klone oder die Dateien in denen sie enthalten sind mit Hilfe eines robusten Parse-Verfahrens untersucht werden, welches dabei den oben beschriebenen Vorteil tokenbasierter Klonerkenner erhalten und tolerant mit Problemen wie Pr?prozessoranweisungen oder syntaktischen Fehlern umgehen soll.
Moderne Software Herstellungs- und Distributionsprozesse führen in der heutigen Zeit immer h?ufiger zur Nutzung von Drittsoftware anderer Anbieter. Diese Modularisierung propriet?rer Software führt immer h?ufiger zu Copyrightverletzungen im Open Source Bereich. Vielfach wurden in der Vergangenheit F?lle aufgedeckt in denen Software bzw. Hardwarehersteller Open Source Bibliotheken oder Teile davon nutzten und diese nicht nach den gegebenen Lizenzbestimmungen verwendeten. Das Problem bei einem Nachweis einer Verletzung ist aber, dass die n?tigen Beweismittel in der Regel lediglich in Bin?rcode vorliegen. Diese Daten zu analysieren ist Ziel der Ausarbeitung. Es sollen M?glichkeiten erarbeitet werden, Bin?rclone in verschiedenen Dateien nachzuweisen. Diess k?nnten dann gegebenenfalls zum Nachweis von Copyrightverletzungen verwendet werden.
Aufgrund der Entwicklungen der letzten zehn Jahre - getrieben durch das Internet - gewinnen gro?e, serverseitig betriebene und verteilte Systeme immer 澳门皇冠_皇冠足球比分-劲爆体育 an Bedeutung. Die Anforderungen an diese Systeme sind besonders in der Entwicklung durch Kriterien wie Wartbarkeit, Robustheit und Erweiterbarkeit gepr?gt und dahingehend angepasst worden. Ein gutes Beispiel für diese Entwicklung bietet das JavaEE Framework. Die Strukturen, welche zur Umsetzung der genannten Gütekriterien in dieses Framework integriert wurden, haben jedoch einen erheblichen Nachteil für die Analysierbarkeit des Sourcecodes der Software, die sich dieser Strukturen bedienen.
Durch die Komplexit?t und starke Kapselung von JavaEE-Applikationen sind aktuelle statische Analysen unpr?zise und unvollst?ndig. Da viele Komponenten erst zur Laufzeit vom Framework erzeugt werden, oder vom JavaEE-Framework in die Applikationen injiziert werden, ist hier das Laufzeitverhalten auf der Basis des Quellcodes für den Programmierer nicht offensichtlich. Das spezifische Verhalten von Klassen im JavaEE-Kontext wird lediglich durch Code-Annotationen und/oder statische Konfigurationsdateien (sog. Deployment Deskriptoren) festgelegt und entzieht sich somit der Betrachtung durch statische Codeanalysen.
Idee der Diplomarbeit ist es im Grundsatz, zur Verbesserung statischer Analysen, Informationen aus o.g. Elementen in entsprechende programmiersprachliche Konstrukte, die von statischen Analysen erfasst werden k?nnen, zu transformieren, bzw. den Quellcode an den entsprechenden Codestellen anzureichern. Diese Codestellen gilt es - als Teil der Diplomarbeit - automatisiert zu identifizieren und mit analysierbarem Code, der das Laufzeitverhalten - so die Hoffnung - ausreichend simuliert, anzureichern und qualifizierte Aussagen über die Güte dieser Herangehensweise zu treffen. Wesentliche Aspekte dieser Arbeit sollen vor allem die Prüfbarkeit als Qualit?tsmerkmal von Software verbessern, die für den Hersteller eines Produktes sehr wichtig sein kann.
Motivation
Das Kopieren aus anderen Dokumenten ist beim Schreiben eine g?ngige Praxis. In vielen F?llen ist dies jedoch unerwünscht oder nicht legal - sei es, wegen des Urheberrechts oder weil in Prüfungssituationen fremde Leistungen nicht verwendet werden dürfen, ohne dass dies kenntlich gemacht wird.
In den Lehrveranstaltungen der AG Softwaretechnik erstellen die Studenten umfangreiche Textdokumente. Hierbei bleibt es nicht aus, dass Inhalte aus Abgaben früherer Semester kopiert werden, ohne dass dies kenntlich gemacht wird. Dies muss als T?uschungsversuch bewertet werden.
Aufgabe
Im Rahmen der ausgeschriebenen Arbeit gilt es ein Software-System zu implementieren, dass die Lehrenden bei der Erkennung solcher Plagiate unterstützt. Für die Arbeit bestehen folgende Rahmenbedingungen:
- Die AG Softwaretechnik forscht intensiv im Bereich der Klonerkennung in Programmquelltexten. Werkzeuge hierzu sind vorhanden. Diese müssen für die Erkennung von Klonen in natürlichsprachlichen (deutschen) Texten angepasst und erweitert werden.
- Suche in einem definierten und begrenzten Suchraum bestehend aus Dokumenten vorheriger Jahre.
- Ein semi-automatischer Prozess zur Plagiaterkennung ist vorhanden. Auf diesem kann aufgebaut werden.
- Neben der Erkennung von Klonen ist die Filterung der Ergebnisse notwendig:
- Klone innherhalb von Dokumenten sind auszuschlie?en.
- Klone zu Vorlagedokumenten - aus denen kopiert werden darf - sind auszuschlie?en.
- Ausschlu? von Klonen desseblen Autors
- ...
- Die Ergebnisse müssen in geeigneter Form visualisiert werden.
- Testdaten zur Evaluierung der Implementierung stehen zur Verfügung.
Sowohl die Erkennung von Klonen in natürlichsprachlichen Texten, als auch die Plagiatserkennung sind aktuelle Themen in der Klon-Forschung.
Diese Arbeit kann als Diplomarbeit sowie Bachelor- oder Master-Report bearbeitet werden und wird ggf. im Umfang angepasst.
Die Evolution einer Software nachvollziehen zu k?nnen, ist in vielen Bereichen der Informatik eine ebenso interessante wie auch bedeutende Aufgabe. Es gibt sowohl wissenschaftliche Aspekte, zu denen vor allem die Analyse der Codequalit?t und die damit verbundenen Codeeigenschaften geh?ren, als auch praktische Einsatzgebiete, zu denen in erster Linie die Restrukturierung einer Software geh?rt. Das Projekt Bauhaus, das in Zusammenarbeit der Universit?t Bremen und der Universit?t Stuttgart entwickelt und gepflegt wird, besch?ftigt sich genau mit dieser Aufgabenstellung und bietet verschiedene Werkzeuge zur Analyse von Code und Architektur einer Software.
Ziel dieser Forschungsarbeit ist es, eine m?glichst effiziente Methode zu entickeln, die es erm?glicht nach spezifischen Codefragmenten in der gesamten Entwicklungshistorie einer Software zu suchen. Unabh?ngig davon, ob das gesuchte Codefragment in einer Programmversion als Klon auftritt oder nicht, soll jedes Vorkommen ermittelt und das Ergebnis in einer verst?ndlichen Ausgabeform pr?sentiert werden.
Der Algorithmus zur Suche gleicher Codefragmenten soll dabei auf Basis bestehender Techniken entwickelt werden. Zu diesem Zweck eignet sich prim?r das Werkzeug clones, dessen Aufgabe es ist, Klone zu finden. Umgesetzt wurde die Klonerkennung in clones mit Hilfe von sogenannten Suffixb?umen, die eine besonders zeiteffiziente Suche, auf Kosten eines erh?hten Speicherbedarfs, erlauben. Aus diesem Grund gilt es insbesondere Aufmerksamkeit darauf zu verwenden, dass der Speicherbedarf nicht 澳门皇冠_皇冠足球比分-劲爆体育 als unbedingt n?tig erh?ht wird und ein Einsatz in der Praxis weiterhin gew?hrleistet ist.
Ein gro?es Problem für viele globale Code-Analysen ist die Gr??e der Projekte, auf die sie in der Praxis angewendet werden. Die auf der Grundlage von idealisierten Rechnern (Turingmaschine) entworfenen Algorithmen und Datenstrukturen sto?en bei der Analyse von Projekten mit Millionen von Zeilen an Quellcode schnell an die Grenzen der Rechenkapazit?t und des zur Verfügung stehenden schnellen Speichers (Arbeitsspeicher). Für die Klonerkennung in Bauhaus wird eine Datenstruktur namens Suffix-Baum eingesetzt, die extrem viel Laufzeit auf Kosten von erh?htem Speicherverbrauch einspart. In dieser Diplomarbeit soll die dem Klonerkenner von Bauhaus zugrundeliegende Datenstruktur Suffix-Baum durch die ebenso m?chtige Datenstruktur Suffix-Array ersetzt werden, die laut Literatur dieselben positiven Eigenschaften mit sich bringt, aber weniger Speicher ben?tigt.
Im einzelnen sollen hierfür bestehende Varianten der Suffix-Arrays verglichen und auf deren Eignung für die Klonerkennung hin überprüft werden. Anschlie?end soll die Datenstruktur für den gew?hlten Algorithmus m?glichst speichersparend für Bauhaus entworfen und mit Routinen für den Aufbau der Datenstruktur und das Auslesen und die ?bergabe der Informationen an den Klonerkenner implementiert werden. Eine Schwierigkeit der Aufgabe liegt dabei darin, dass der Aufbau der Datenstruktur in Linearzeit erfolgen soll, wie es auch schon beim bestehenden Algorithmus der Fall ist. Anschlie?end soll die Implementierung anhand gro?er Eingabeprogramme mit den bestehenden verglichen werden, um die Richtigkeit der Arbeit zu prüfen, sowie die Unterschiede in Laufzeit- und vor allem Speicherverbrauch zu sehen.
Ein Protokoll deniert die Sequenzeinschr?nkungen für die auf einer Software-Komponente ausgeführten atomaren Operationen. Ein im Bauhaus-Projekt entwickeltes Protokollerkennungsverfahren extrahiert solche Protokolle aus existierender Software mittels dynamischer Analyse. Java- Anwendungen mit 澳门皇冠_皇冠足球比分-劲爆体育eren Threads k?nnen jedoch nur eingeschr?nkt analysiert werden. In der vorliegenden Diplomarbeit werden daher Ans?tze für die Erweiterung des existierenden Verfahrens zur Unterstützung von Multithreading entwickelt und evaluiert.
Ziel dieser Arbeit ist es die Ergebnisse der Klonerkennung - Werkzeuge, die duplizierten Programmquelltext identifizieren - dem Programmiererverfügbar zu machen, indem sie in die IDE Eclipse integriert werden. Der Software-Entwickler soll durch ein Plug-In auf existierende oder neu entstandene Klone hingewiesen werden. Insbesondere soll er bei der konsistenten ?nderung von Duplikaten unterstützt werden.
Code-Duplikation ist ein ernst zu nehmendes Problem in industrieller Software, weil dadurch die Arbeit von Programmierer und Wartungs-Ingenieur erschwert wird. Kopierte Code-Fragmente bleiben jedoch nicht immer identisch erhalten. Sie werden an unterschiedlichen Stellen ge?ndert, dadurch entstehen eine Menge kleiner Klone (Typ-1, Typ-2), die von vielen Klonerkennungstools erkannt werden. Einige Ans?tze versuchen gr??ere Klone – Typ-3 Klone – zu finden, indem sie die kleinen Klone zusammenfassen. Dabei wird lediglich der Zeilenabstand zwischen den Klonen betrachtet. Typ-3 Klone sind im Vergleich zu Typ-1 und Typ-2 Klonen relevanter und k?nnten leicht zu entfernen sein. Untersuchungen zufolge sind nur 25 Prozent der erkannten Typ-3 Klone als echt bezeichnet worden. Ziel dieser Arbeit ist, ein neues Verfahren zu entwickeln, mit dem bessere Typ-3 Klone gefunden werden. Dabei sollen Kriterien, nach denen zwei oder 澳门皇冠_皇冠足球比分-劲爆体育ere Typ-1 und Typ-2 Klone zusammengefasst werden, ermittelt sowie die Zusammenfassung von Klonen implementiert und evaluiert werden.
Es wurden bereits viele Metriken und auch verschiedene Vorhersagemodelle auf ihre Tauglichkeit bei der Vorhersage von Software-Fehlern untersucht. In dieser Arbeit werden drei ausgew?hlte und bisher nicht beachtete Kontrollflussmetriken auf ihre Vorhersagekraft von Software-Fehlern untersucht. Zur Vorhersage werden Klassifikationsverfahren eingesetzt, die ausschlie?lich durch überwachtes Lernen trainiert werden. Die Bewertung der Metriken wird anschlie?end mit Hilfe verschiedener Performanz Ma?e vorgenommen. Dabei werden die Ergebnisse der untersuchten Kontrollflussmetriken mit den Ergebnissen objektorientierter Metriken sowie einfacher intraprozeduraler Metriken verglichen. Dabei stellte sich heraus, dass die untersuchten Metriken für sich alleine betrachtet schlechter abschneiden als die anderen Metriken. In Kombination mit den anderen Metriken führen sie allerdings zu einer Verbesserung der Ergebnisse.
Duplikate im Quelltext von Programmen - so genannte Klone - haben negative Auswirkungen auf die Wartbarkeit von Software. Der Umgang mit ihnen wird dadruch erschwert, dass Kopien im Nachhinen ver?ndert werden k?nnen, so dass eine Entfernung des Klons nicht ohne weitere Modifikationen m?glich ist. Ziel dieser Arbeit ist es solche Klone zu vergleichen und den Software-Entwickler dabei zu unterstützten sie zu entfernen.
Die Werkzeuge des Bauhausprojektes bieten umfassende M?glichkeiten zur Analyse von bestehenden Softwaresystemen. Mit Gravis existiert eine Workbench für diese Werkzeuge, in der allerdings eine Rückverknüpfung von der Modellsicht zum ursprünglichen Code zur Zeit nur unzureichend vorhanden ist. Eine Rückverknüpfung in den Kontext der Programmerstellung ist wünschenswert, da viele Softwaresysteme innerhalb einer Integrierten Entwicklungsumgebung wie z.B. Eclipse erstellt und weiterbearbeitet werden, und eine blosse Anzeige des Quelltextes in einem einfachen Texteditor der Benutzererwartung nicht gerecht wird.
Bei dieser Diplomarbeit soll es darum gehen, vor dem geschilderten Hintergrund einen angemessenen Integrationsweg zwischen den Bauhaus Werkzeugen und Eclipse zu schaffen. Dazu soll aus der Java Umgebung von Eclipse heraus eine native Schnittstelle zu dem Resource Flow Graphen (RFG), einer grundlegenden Datenstruktur für die Analysemethoden, definiert werden. Ziel ist es, eine in die Eclipse Umgebung integrierte Visualisierung der RFG Modellsicht zu erhalten, für die beispielhaft eine Analysemethode als Use Case implementiert werden soll. Abschliessend soll evaluiert werden, welche weiteren Anwendungen sich aus der Integration zwischen Anforderungen aus dem Bauhausprojekt und den M?glichkeiten der Eclipse Plattform ergeben.
Ein Software-Projekt basiert in den seltensten F?llen auf einer grundlegenden Neuentwicklung. Durch Wiederverwendung von Komponenten und Anpassungen des Codes an neue Bedürfnisse entstehen Software-Varianten. Existieren 澳门皇冠_皇冠足球比分-劲爆体育ere Varianten einer Basissoftware, so spricht man von einer Software-Produktlinie. Je gr??er die Anzahl dieser Software-Varianten, desto teurer und schwieriger wird die Wartung. Au?erdem birgt die Entwicklung von Software-Produktlinien ein gro?es Risiko: Die Komponenten werden mit den darin enthaltenen Fehlern wieder verwendet. Ein Fehler in der Basissoftware befindet sich also in allen Varianten, die den betroffenen Teil der Software benutzen. Um den Fehler zu finden und mit m?glichst geringem Aufwand beheben zu k?nnen, ist es hilfreich, die Gemeinsamkeiten und Unterschiede zwischen den einzelnen Varianten zu kennen.
Ziel dieser Arbeit ist es, eine Produktlinie mit Gemeinsamkeiten und Unterschieden zwischen Software-Varianten mit Hilfe des Ressource Flow Graph (RFG) abzubilden um Software-Varianten zu konsolidieren.
Mit der Java-Version 1.5 (oder 5.0) kamen einige neue Konstrukte zum Sprachumfang der Programmiersprache hinzu. Programme, die diese Konstrukte nutzen, k?nnen also nicht mit den bisherigen Frontends zur Erzeugung der IML - einer Programmrepr?sentationsform, die Kontroll- und Datenfluss darstellt - übersetzt werden. Um weiterhin alle Java-Programme in IML abbilden zu k?nnen, muss also 1. eine Modellierung der neuen Konstrukte in der IML gefunden und 2. ein neues Frontend implementiert werden. Die Modellierung sollte dabei die Semantik korrekt und so weit wie m?glich vergleichbar mit ?hnlichen Konstrukten derselben und anderer Sprachen abbilden, gleichzeitig aber einen Rückschluss auf das Aussehen des Quelltexts zulassen. Zus?tzlich sollte sich die neue Modellierung nahtlos einfügen, so dass m?glichst wenig Anpassungen an bestehenden Analysen und sonstigen Benutzern der IML n?tig sind. Das neue Frontend sollte alle gültigen Programmtexte in valide IML überführen k?nnen und dies in angemessener Zeit tun.
Ziel der Arbeit ist es, diese beiden Aufgaben zu l?sen. Als Vorbereitung soll ein Tool implementiert werden, dass einen Vergleich von IML-Teilgraphen durchführt und Unterschiede aufzeigt. Mit dessen Hilfe sollen generierte IMLs existenter Frontends verglichen werden um Unterschiede oder Fehler in der Generierung zu entdecken, vor allem aber um die vom neuen Frontend genutzte Modellierung festzulegen.
Dass das Finden, Verstehen und Entfernen von Klonen - dupliziertem Quelltext - in Software-Systemen von Interesse ist, haben viele Arbeiten gezeigt. Bisherige Analysen zum Vorhandensein von Klonen beschr?nken sich zumeist auf einen konkreten Stand des zu untersuchenden Systems. Da sich Software-Systeme über die Zeit jedoch ?ndern, stellt sich auch die Frage nach der Evolution von Klonen. Um diese Frage zu beantworten, müssen existierende Analysemethoden erweitert werden.
Ziel der Arbeit ist es ein Verfahren zu entwickeln und umzusetzen, das es erlaubt 澳门皇冠_皇冠足球比分-劲爆体育 als eine Version eines Software-Systems auf Klone hin zu untersuchen. Die Herausforderung besteht zum einen in der Beschleunigung der Erkennung und zum anderen in der Aussage darüber, welche Klone hinzugefügt, entfernt bzw. unver?ndert sind. Hierzu werden Ergebnisse der Analyse einer Version für die Analyse der n?chsten Version wiederverwendet. Die Umsetzung geschieht durch Anpassung eines Werkzeugs, welches ein token-basiertes Erkennungsverfahren implementiert.
Die Praxis zeigt, dass die meisten Ressourcen in der Softwareentwicklung nicht für die Erstellung von neuen Systemen verwendet werden, sondern für die Wartung von bestehenden Programmen. Hierbei hat die Software-Qualit?t einen entscheidenden Einfluss auf die Produktivit?t der Weiterentwicklung und Wartung. Um die kontinuierliche, kosteneffiziente Durchführung von Qualit?tssicherungsma?nahmen zu gew?hrleisten, bedarf es an Unterstützung durch Werkzeuge. Ziel dieser so genannten IT-Dashboards oder Software-Leitst?nde ist es, Entwicklern, Architekten, technischen Projektleitern und Qualit?tsverantwortlichen, die wesentlichen Informationen über den Qualit?tszustand eines Softwareprodukts anzuzeigen.
Ziel dieser Diplomarbeit war die Entwicklung eines web-basierten Dashboards für das Bauhaus-Projekt, dass die von den verschiedenen Analyse-Werkzeugen generierten Daten sammelt und in geeigneter Form visualisiert. Zus?tzlich zur Betrachtung eines Softwaresystems zu einem bestimmten Zeitpunkt, sollte der zeitliche Verlauf der Messgr??en verfolgt werden k?nnen. Da diese Funktionalit?t im Vorfeld nicht existierte, wurde ein Datenbankschema entwickelt, das die Speicherung von Informationen über ein Softwaresystem für 澳门皇冠_皇冠足球比分-劲爆体育ere Versionen erm?glicht.
Fünf Jahre nach dem ersten Release des .NET-Framework, ist dieses in der n?chsten Generation der Windowsbetriebssysteme (Windows Vista und Windows Server 2003) fest verankert und somit nicht 澳门皇冠_皇冠足球比分-劲爆体育 nur noch ein "kann", sondern schon fast ein "muss" für die Windowsapplikationsentwicklung geworden.
Das .NET-Framework ist eine einheitliche, objektorientierte Plattform mit eigener Laufzeitumgebung ?hnlich zum Java-Framework. Die Laufzeitumgebung zeichnet sich durch eine standardisierte Sprachspezifikation (Common Language Specification), sowie ein einheitliches Typesystem (Common Type System) aus. Beides erm?glicht das Entwickeln von Programmkomponenten in verschiedenen Sprachen und somit z.B. die Verwendung von Fertigkomponenten egal in welcher Sprache sie geschrieben wurden. Derzeit kann zum Entwickeln unter ca. 70 Sprachen gew?hlt werden, deren Compiler bereits an diese Plattform angepasst wurden.
Ziel dieser Arbeit ist es, die mit dem .NET-Framework zusammen entwickelte Sprache C# in einem Resource Flow Graph (RFG) und somit die Kernstruktur der Common Language Specification abzubilden.
Der Graph-Visualisierer "Gravis" als Bestandteil des Bauhaus-Frameworks erstellt Darstellungen der architektonischen Sichten eines Systems, bietet aber bisher keine Manipulationsm?glichkeiten des Quellcodes an. W?hrend der Wartung sind jedoch nicht nur die Architektursichten eines Systems von Interesse, sondern vor allem auch der Quellcode. Um jedoch Eingriffe im Quellcode vornehmen zu k?nnnen, muss neben Gravis ein Editor herangezogen werden.
Inhalt der Diplomarbeit soll die Durchführung einer Machbarkeitsstudie sein, die eine Einbettung von Gravis in die integrierte Entwicklungsumgebung Eclipse untersucht. Damit soll neben der Darstellung der Graphen auch das Ver?ndern des Sourcecodes innerhalb von Eclipse unterstützt werden. Eclipse eignet sich im Besonderen, weil es bis auf einen kleinen Kern aus Plugins besteht und daher für die Integration und Entwicklung weiterer Plugins pr?destiniert ist.
Kernfragen der Diplomarbeit sind neben der technischen Implementierung des Plugins die Kommunikationsschnittstelle zwischen den beiden Prozesse und die Anpassung von Gravis für eine Einbettung in Eclipse.
Duplizierter Quellcode, auch Klon genannt, ist ein weit verbreitetes Problem in Softwaresystemen und ist unter anderem aus diesem Grund auf Platz eins von Beck und Fowlers "Stink Parade of Bad Smells". Klone verschlechtern im Allgemeinen die Wartbarkeit der Software und erschweren die Fehlerkorrektur, da Fehler unter Umst?nden auch geklont wurden und das Softwaresystem gr??er und damit schwerer zu verstehen ist. Es gibt eine Reihe von M?glichkeiten Klone zu entfernen, welche zum Teil durch Refactorings beschrieben sind. In vielen Systemen ist das Entfernen aller Klone jedoch zum einen zeitaufwendig, zum anderen auch nicht immer erwünscht oder m?glich. Gerade im embedded Bereich sind Speicherverbrauch und Performance wichtige Anforderungen, die eventuell durch zus?tzlichen Funktionen und Funktionsaufrufe nicht 澳门皇冠_皇冠足球比分-劲爆体育 erreicht werden k?nnen. Zudem gibt es eine Reihe von Klonen, die ein Entwickler nicht als solche ansehen würde und die er deshalb gar nicht gemeldet bekommen m?chte und auch nicht entfernen m?chte.
Ziel der Diplomarbeit soll es sein anhand eines Beispielsystems aus dem embedded Bereich zu untersuchen, wie ein Entwickler beim Umgang mit Klonen in gr??eren Systemen unterstützt werden kann. Hierzu soll das bestehende Bauhaus-Framework so erweitert werden, dass es auf der einen Seite dem Entwickler ein ?berblick über die vorhandenen Klone geben kann und auf der anderen Seite versucht automatisiert zu bewerten, ob es m?glich ist einen Klon zu beseitigen und wie sinnvoll dies ist.
Die Wartbarkeit eines Systems objektiv zu beurteilen ist ein relevantes Problem. Die Frage stellt sich nicht nur bei der ?bernahme fremder Software oder Beurteilung von Software im Falle von Outsourcing, sondern auch stets für die selbst entwickelte Software, um kontinuierlich Trends in der Entwicklung beobachten und Schwachstellen aufdecken zu k?nnen.
In einem unl?ngst erschienenen Buch von Frank Simon et al. [1] wird eine Methode zur Bestimmung eines so genannten Softwarequalit?tsindex vorgestellt, der einen Indikator für die interne Produktqualit?t darstellen soll. Der Index beruht auf der Messung von Code-Anomalien (von Fowler auch "Bad Smells" genannt). Die Autoren haben insgesamt 167 Projekte vermessen und die Daten in einer Datenbank abgelegt, die für das Benchmarking verwendet werden kann. Diese Datenbank befindet sich im Besitz der Firma SQS, für die einer der Autoren t?tig ist.
In dieser Diplomarbeit soll ein Werkzeug entwickelt werden, das auf der Basis der Bauhaus-Infrastruktur den Softwarequalit?tsindex für C++ und Java-Programme (soweit sich die IML-Repr?sentation der Java-Programme mit der von C++ Programmen deckt) berechnet. Dazu kann auf die Scripting-F?higkeiten für den RFG und die IML zurück gegriffen werden. Es ist aber auch m?glich, die Metrikerhebung in Ada direkt zu implementieren. Das Werkzeug soll die Daten in Form generierter statischer HTML-Seiten so aufbereiten, dass das Zustandekommen des Softwarequalit?tsindex auf allen Ebenen nachvollziehbar ist. Insbesondere sollen die entdeckten Code-Anomalien leicht zug?nglich und verst?ndlich aufgelistet werden. W?hrend die Ausgabe in HTML einen prototypischen Charakter haben kann, legen wir besonderen Wert auf die Qualit?t der Metrikerhebung.
Zur Evaluation des entwickelten Werkzeugs soll eine Reihe von Softwaresystemen vermessen werden und in Absprache mit der Firma SQS mit der SQS-Benchmark verglichen werden.
[1] Frank Simon, Olaf Seng und Thomas Mohnhaupt: "Code-Quality-Management - Technische Qualit?t industrieller Softwaresysteme transparent und vergleichbar gemacht", dpunkt.verlag, 2006.
Welche Ma?nahmen, dargestellt an einer praktischen Umsetzung, führen zu einer Verbesserung innerhalb der Softwareentwicklung am Beispiel eines IT- Gro?projektes der Volkswagen AG?
Abstract:
Wie die Marktforscher der Standish Group ermittelt haben, dauern 53 Prozent der Projekte l?nger und kosten viel 澳门皇冠_皇冠足球比分-劲爆体育 als geplant. 18 Prozent der IT-Projekte scheitern g?nzlich. [Titel der Untersuchung: 'Chaos Report'] Der h?ufigste Grund für das Scheitern von IT-Projekten sind nach einer Studie unklare Formulierung der Anforderungen und Ziele. Auch das Produkt des dieser Untersuchung zu Grunde liegenden Projektes wurde nach 澳门皇冠_皇冠足球比分-劲爆体育maligen Terminverschiebungen in einem instabilen und inakzeptablen Zustand an den Kunden ausgeliefert. Ziel der Diplomarbeit ist es, diese Probleme zu identifizieren und unter der praktischen Umsetzung eines L?sungsvorschlages eine Entwicklungsverbesserung zu erzielen.
Im Rahmen des Bauhaus-Projekts wurden bisher vornehmlich kompilierte Programmiersprachen untersucht und integriert. In der Arbeit "Statische Programmanalyse für Perl" hingegen wurde die interpretierte und sehr dynamische Programmiersprache Perl hinsichtlich ihrer statischen Analysierbarkeit und m?glichen Integration in das Bauhaus-Projekt untersucht. Dabei wurden zum einen die allgemeinen Probleme beim Parsen von Perlprogrammen erl?utert und zum anderen eine prototypische Implementierung entwickelt, welche ein Perlprogramm in einen RFG überführen soll.
Es soll ein Interpreter für die sprachenübergreifende Programmrepr?sentation IML erstellt werden. Zweck des Interpreters ist die Laufzeitanalyse eines beliebigen Programms anhand von dessen Quelltext. Des Weiteren sollen Korrektheitsüberprüfungen sowie das Debuggen und Profilen des Programms m?glich sein.
Visual Basic ist eine popul?re Programmiersprache, die in ihrer jüngeren Entwicklung so weitgehenden Ver?nderungen unterworfen wurde, dass die Abw?rtskompatibilit?t zu den vorherigen Versionen gebrochen wurde. Vorhandene Altsysteme, die vor diesem Umbruch entstanden sind, lassen sich nur durch manuelles Zutun zu den neueren Versionen oder g?nzlich anderen Sprachen migrieren. Diese Aufgabe erfordert ein umfassendes Verst?ndnis der zu migrierenden Softwaresysteme. Hierbei k?nnen die Werkzeuge des Bauhaus-Projekts helfen, indem sie verschiedene Aspekte von Software analysieren und durch geeignete Darstellungen verst?ndlich machen. Eine solches Darstellungsform ist der Resource Flow Graph, der Programme auf einer globalen Abstraktionsebene repr?sentiert. Ziel dieser Arbeit war es daher Werkzeuge zu schaffen, die es erm?glichen den Resource Flow Graph für Visual Basic 6 Programme zu erzeugen.
Die Analyse von Visual Basic 6 Programmen wurde durch viele Besonderheiten, vor allem aber durch die unvollst?ndige Dokumentation der Sprache, erschwert. So existierte im Vorfeld keine vollst?ndige Grammatikdefinition, ebenso sind semantische Aspekte zum Teil nicht dokumentiert. Dieses fehlende Wissen musste zun?chst hergeleitet werden, um schlie?lich Werkzeuge zur Extraktion der für den RFG ben?tigten Fakten zu realisieren. Die Arbeit betrachtet verschiedene Herangehensweisen und w?hlt ein Vorgehen, bei dem zun?chst initiale Modelle für Syntax und Semantik aufgrund von Handbüchern und Annahmen erstellt und dann schrittweise durch Tests verfeinert wurden. Neben der statischen Analyse war auch die Abbildung von Visual Basic 6 auf die Konzepte des RFG, sowie die Generierung von konkreten Graphen aufgrund der extrahierten Fakten Teil der Arbeit. Das bestehende RFG-Modell musste hierzu erweitert werden, um die Visual Basic 6 Programme vollst?ndig abbilden zu k?nnen.