Schriftliche Ausarbeitung - Alexander Willner | Masterarbeit
Schriftliche Ausarbeitung - Alexander Willner | Masterarbeit
Schriftliche Ausarbeitung - Alexander Willner | Masterarbeit
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
5. Implementierung und Test<br />
von möglichen Deadlocks. Des Weiteren beinhaltet das Programm Analysen für Abhängigkeiten<br />
von Threads innerhalb einer Applikation.<br />
PMD. Die Funktionsweise von PMD 5 entspricht grundsätzlich der von FindBugs und<br />
JLint, jedoch ohne Datenflussanalyse. PMD untersucht den Quelltext aber zusätzlich nach<br />
Kodierungsrichtlinien, die ebenfalls eine fehlerhafte, oder aber zumindest eine unsaubere<br />
Programmierung vermuten lassen.<br />
Lint4J. Auch Lint4J 6 untersucht den Quelltext und Bytecode nach Problemen bzgl. der<br />
Performance, Skalierbarkeit und Threadsicherheit, analysiert den Datenfluss und erstellt<br />
Blockierungsgraphen. Die durchgeführten Analysen basieren laut Aussagen des Herstellers<br />
auf Erfahrungswerten, die während der Implementierung von Performance- und sicherheitskritischen<br />
Anwendungen gewonnen wurden.<br />
Neben diesen Programmen existieren weitere Überprüfungssysteme wie z.B. Bandera 7 [62]<br />
und ESC/Java 8 [63], welche jedoch deutlich weitergehende Ansätze verfolgen. Diese basieren<br />
auf Beweisen von zuvor bestimmten, formalen Vor- und Nachbedingungen (vgl.<br />
[64, 65]) und Verifikation von Zustandsmodellen. Aufgrund der hohen Komplexität und<br />
des wissenschaftlichen Schwerpunkts dieser Möglichkeiten wurde von deren Nutzung im<br />
Rahmen dieser Arbeit abgesehen.<br />
5.2.3. Bewertung<br />
Der Einsatz statischer, automatisierter Analyseverfahren hat deutlich zur Lesbarkeit und<br />
Qualität der geschriebenen Quelltexte beigetragen. Insbesondere die Integration in die Entwicklungsumgebung<br />
erleichterte den Umgang wesentlich und Hinweise konnten sofort<br />
umgesetzt werden. Diese Hinweise waren aufgrund der hohen Zahl an formalisierten Erfahrungen<br />
zu weit verbreiteten und häufig gemachten Fehlern sehr zahlreich und führten<br />
zu einem ständigen Lernprozess während der Entwicklung. So wurden insbesondere<br />
robustere und effizientere Lösungen implementiert, deren Funktionsweise im Anschluss<br />
durch dynamische Testfälle überprüft werden konnten.<br />
Es liegt jedoch in der Natur der Sache, dass nicht alle Meldungen zu Quelltextabschnitten<br />
auf existierende Probleme oder Fehler hinweisen. Je nach Kontext sind verschiedene,<br />
gleichwertige Lösungsansätze möglich und Falschmeldungen sind nicht gänzlich zu vermeiden.<br />
5 http://pmd.sourceforge.net<br />
6 http://www.jutils.com<br />
7 http://bandera.projects.cis.ksu.edu<br />
8 http://secure.ucd.ie/products/opensource/ESCJava<br />
54