Modellbasierte Analyse von Open Source- Projekten Seminararbeit Gereon Bürvenich Lehrstuhl Software Engineering RWTH Aachen

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Harald Köbler Software Design Patterns Prototype.
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Konzepte objektorientierter Systeme
Einführung in die Programmierung Ausführbare Klassen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Das Test-Framework JUnit
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Das Test-Framework JUnit
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Software-Engineering
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
1 Reverse Engineering WS 07 / 08 A. Zündorf. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University 2 Organisatorisches.
A. Zündorf, SE Group Reverse Engineering K2 1 Ziele Heute Compilerbau Nachlese Ausnutzung von Laufzeittypinformation.
A. Zündorf, SE Group Reverse Engineering K2 1 Ziele Heute Compilerbau Nachlese Ausnutzung von Laufzeittypinformation.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Vererbung
Informatikunterricht mit Java
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
UML Begleitdokumentation des Projekts
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Mehr Qualität und schnellere Marktreife durch effiziente Softwaretests
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Mahmoud Zoabi Khaled Isa
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium #4 Philipp Effenberger
JUnit Grundkonzept Gruppe Markt. JUnit: Ziele Einfachheit: –Leicht erlernbare, bekannte Tools –Möglichst wenig Aufwand für die Implementierung von Testfällen.
Programmiervorkurs WS 2014/15 Methoden
Test-Driven Development
Java-Kurs Übung Besprechung der Hausaufgabe
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
Seminararbeit Release Management von Web-Systemen Minh Tran Lehrstuhl für Software Engineering RWTH Aachen
1. Betreuer: Prof. Dr. Jörg Striegnitz 2. Betreuer: Dr. Martin Schindler Kontextsensitive Autocompletion für Klassendiagramme in der UML/P Florian Leppers.
Seminar Softwareproduktlinien Domänenspezifische Sprachen Sascha Draffehn von.
Eine Vokabelschlange. Schlangen in Anwendungsprogrammen Die Piktogramme von Personen, mit denen wir ursprünglich die Datenstruktur Schlange eingeführt.
Java Testtools: HTTPUnit
Schnittstellen.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Das IT - Informationssystem
Hello World! Javakurs 2013 Arne Kappen
Eldar Dedic HA061 bbw - Hochschule
Einführung in die Programmierung mit Java
Allgemeine Befehle für die allgemeine Liste
Kyncl M., Pollert J., Micin J.,Raclavsky J.,Malanik S.
Gruppe 2 Carina Fuss Informatik II – Übung 4 Gruppe 2 Carina Fuss Carina Fuss
Raphael Fischer Informatik II - Übung 03 Raphael Fischer
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Dynamic Link Libaries Von Tobias Pletschke
Grundkurs Informatik mit Java
Methodische Grundlagen des Software-Engineering
«Delegierter» Methoden Schablone Funktionszeiger
1. Die rekursive Datenstruktur Liste 1
Datenstrukturen und Softwareentwicklung
Übersicht und Benutzung von Sphinx
9. Vererbung und Polymorphie
Objektorientierte Programmierung
Statische und Nichtstatische Methoden Properties / Eigenschaften
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
 Präsentation transkript:

Modellbasierte Analyse von Open Source- Projekten Seminararbeit Gereon Bürvenich Lehrstuhl Software Engineering RWTH Aachen

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 2 Gliederung Einleitung und Motivation 1. Systementwurf2.Evaluierung und Ergebnisse 3. Zusammenfassung und Ausblick 4.

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 3 Einleitung und Motivation  Steigende Nachfrage nach qualitativ hochwertiger Software  Steigende Nachfrage nach Bestimmung der Qualität von Software  Metriken als Maßzahlen  Anwendung der Metriken meist auf Code-Ebene  Auch auf Klassendiagramm-Ebene einsetzbar? Ist auch auf Modell-Ebene eine ausreichende Bewertung der Qualität von Software möglich?

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 4 Was ist Qualität?  Im ursprünglichen Wortlaut lediglich eine Eigenschaft  Mittlerweile jedoch Qualität = „gute Qualität“  „Gesamtheit von Eigenschaften und Merkmalen eines Produktes oder einer Tätigkeit, die sich auf die Eignung zur Erfüllung gegebener Erfordernisse beziehen“ (DIN 55350)  Nicht nur Korrektheit  Weitere Eigenschaften wie Wartbarkeit und Effizienz  Muss messbar gemacht werden

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 5 Herangehensweise  Nutzung von Open Source-Projekten als Grundlage  Generierung von Klassendiagrammen  Qualitätsanalyse auf Basis der Klassendiagramme Implementierung von Metriken  Statische Analyse des Quellcodes  Vergleich zwischen modellbasierter und statischer Analyse

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 6 Metriken  Maßzahlen zur quantitativen Bestimmung von Softwarequalität  Vergleichbar, kurz, präzise  Einfache Metriken Lines of Code (LOC) Number of Children (NOC)  Komplexe Metriken Response for a Class (RFC) Lack of Cohesion in Methods (LCOM)

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 7 Auswahl der Projekte  Kriterien für die Auswahl: komplett in Java Open Source Maximalgröße von 50 Klassen aktive Entwicklung und Nutzung  Ausgewählte Projekte: picasso jUnit

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 8 MontiCore  Modellierungsframework zur schnellen und effektiven Erstellung von domänen- spezifischen Sprachen (DSL)  Stellt Parser zur Verfügung  Bietet Generatoren zur Code- Generierung aus Modellen  Parser erzeugt einen Abstrakten Syntaxbaum (AST)  Repräsentation des geparsten Programms als Baum

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 9 Parsen von Java als AST ast:ASTCompilationUnit importDeclaration:ASTImportDeclaration packageDeclaration:ASTPackageDeclaration name = [„pkg“] :ASTClassDeclaration extendedClass = null implementedInterfaces = null name = „Example“ :ASTMemberDeclarationList :ASTMethodDeclaration name = „getName“ parameters = null returnType:ASTSimpleReferenceType name = [„String“] :ASTFieldDeclaration declaration:ASTVariableDeclaration :ASTVariableDeclarator name = „name“ type:ASTSimpleReferenceType name = „String“ OD :ASTPrimitiveModifier modifier = 11 :ASTPrimitiveModifier modifier = 8 package pkg; public class Example { private String name; public String getName() { return this.name; }

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 10 Systementwurf Java-Parser Java- AST Generator CD-Parser CD- AST MetrikenERGEBNIS Open Source- Projekt Java- Code Free- marker- Temp- lates Java- Code Klassen dia- gramm e Klassen dia- gramm unterstützt durch MontiCore

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 11 Generierungsprozess junit extensionsrunner extensionsCD. cd runnerCD.cd junitCD.cd junit extensions ActiveTest Suite.java RepeatedTest.java RepeatedTest.java runner BaseTest Runner.java TestRun Listener.java Version.java junit extensions ActiveTest Suite.cd.part RepeatedTest.cd.part RepeatedTest.cd.part runner BaseTest Runner.cd.part TestRun Listener. cd.part Version.cd.part Java-Klassen in Paket-Struktur Klassendiagramm-Fragmente in gleicher Paket-Struktur Klassendiagramme für jedes Paket Vollständiges Klassendiagramm des Projektes

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 12 Klassendiagramm (Ausschnitt) package cd; classdiagram MyCD { class Action { Picasso picasso; Request request; java.lang.ref.WeakReference target; boolean skipCache; void error(); void cancel(); //... } class Picasso { static java.lang.String TAG; static android.os.Handler HANDLER; boolean indicatorsEnabled; boolean loggingEnabled; boolean shutdown; public void cancelRequest(android.widget.ImageView view); public void cancelRequest(Target target); //... } association Action->Picasso; association Action->Request; //... }

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 13 Klassendiagramm (Ausschnitt) - Editor

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 14 Modellbasierte Analyse  Auswahl der geeigneten Metriken Kein Quellcode vorhanden  Depth of Inheritance Tree (DIT)  Number of Children (NOC)  Cohesion among Methods in a Class (CAMC)  Coupling between Object Classes (CBO)  Parsen der Klassendiagramme mit Parser aus MontiCore  AST des Klassendiagramms  Ausführung der Metriken auf AST  Ausgabe der Werte in Datei

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 15 Evaluierung  Zunächst statische Analyse der Projekte Softwaremetriken (mithilfe des Eclipse-Plugins Metrics) Kommentare/Tests  Anschließend Generierung der Klassendiagramme  Modellbasierte Analyse der Klassendiagramme mit Softwaremetriken

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 16 Statische Code-Analyse – Ergebnis (jUnit) Class name DITNOCLCOMWMC ActiveTestSuite RepeatedTest 3502 TestDecorator 2304 TestSetup 3004 Assert AssertionFailedError 4104 ComparisonCompactor 100,5144 ComparisionFailure 500,3334 JUnit4TestAdapter 100,62511 JUnit4TestAdapterCache 3003 … Average 1,8940,5780,17620,684

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 17 Modellbasierte Analyse – Ergebnis (jUnit) Class name DITNOCCAMCCBO ActiveTestSuite 200,1953 RepeatedTest 350,4383 TestDecorator 230,54 TestSetup 300,53 Assert 100,2190 AssertionFailedError 210,8333 ComparisonCompactor 100,53 ComparisionFailure 300,6256 JUnit4TestAdapter 100,1345 JUnit4TestAdapterCache 200,53 … Average 1,6320,5780,4173,316

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 18 Vergleich Metriken jUnitpicasso statischmodellbasiertstatischmodellbasiert DIT1,8941,6321,7151,629 NOC0,578 0,444 WMC20,684-13,5- LCOM0,176-0,178- CAMC-0,417-0,35 CBO-3,316-3,481

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 19 Vergleich  Kommentare und Tests auf Model-Ebene nicht untersucht  Nicht alle Metriken auf Modell-Ebene anwendbar  DIT-Metrik leichte Abweichung, NOC gleich  LCOM und CAMC analoge Ergebnisse  Insgesamt ähnliche Aussagen auf Modell- und Code- Ebene

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 20 Zusammenfassung/Ausblick Zusammenfassung  Toolstack Reverse-Engineering von Modellen  Statische Analyse auf Code-Ebene differenzierter Ausblick  Genauerer Vergleich durch weitere Metriken  Vergleich weiterer (größerer) Projekte Dennoch deckende Aussage auf Modell-Ebene

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 21 Vielen Dank für Ihre Aufmerksamkeit!

Gereon Bürvenich Lehrstuhl für Software Engineering RWTH Aachen Seite 22 Literaturverzeichnis [BBM96]Victor R. Basili, Lionel C. Briand, and Walcélio L. Melo. A validation of object- oriented design metrics as quality indicators. IEEE Trans. Softw. Eng., 22(10):751–761, October [CK94]S. R. Chidamber and C. F. Kemerer. A metrics suite for object oriented design. IEEE Trans. Softw. Eng., 20(6):476–493, June [CSC06]Steve Counsell, Stephen Swift, and Jason Crampton. The interpretation and utility of three cohesion metrics for object-oriented design. ACM Trans. Softw. Eng. Methodol., 15(2):123–149, April [JL07]Horst Lichter Jochen Ludewig. Software Engineering - Grundlagen, Menschen, Prozesse, Techniken, volume 1st Edition. dpunkt, [McC76]H. Krahn. MontiCore: Agile Entwicklung von domänenspezifischen Sprachen im Software-Engineering. Shaker, [Rum11]Bernhard Rumpe. Modellierung mit UML, volume 2nd Edition. Springer, Weitere Quellen können der Seminararbeit entnommen werden.