Mustersuche in Quellcode

Ähnliche Dokumente
Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Software-Entwurfsmuster

Software Engineering Entwurfsmuster (update: 11.6.)

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen

Software-Architektur Design Patterns

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Software-Engineering 2. Software-Engineering 2. Entwicklungsumgebungen (IDE) IT works. Klaus Mairon

Vorlesung Programmieren

Komponentenbasierter Taschenrechner mit CORBA

Design Patterns. 5. Juni 2013

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Refaktorisierung des Eclipse- Plugins Saros für die Portierung auf andere IDEs. Verteidigung der Bachelorarbeit von Arndt Tigges

Vorlesung Programmieren. Software Design. Software Design. Entwurfsmuster

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

12.4 Sicherheitsarchitektur


Software Engineering Übung 4 Architektur, Modulentwurf

Technische Universität München WS 2011/12 Fakultät für Informatik Lösungsvorschläge zu Blatt 2 Dr. C. Herzog, M. Maalej 31.

Entwurfsmuster (Design Pattern) ETIS SS05

XMI & Java. von Stefan Ocke so3@inf.tu-dresden.de 5.Juli 2001

Software Engineering II

Das Interceptor Muster

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Konstruktion anpassbarer Software

Projekt AGB-10 Fremdprojektanalyse

DESIGN'PATTERN'2011. November. Abstract Factory & Factory Method BEARBEITET VON INHALT [1] Christoph Süsens

Kapitel 6. Vererbung

Spring Dynamic Modules for OSGi Service Platforms

Vorlesung "Software-Engineering"

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Themen. Software Design and Quality Group Institute for Program Structures and Data Organization

Guido de Melo Fachvortrag, Uni Ulm UML 2.0. Für den Einsatz in der Praxis

TUDOOR - Ein Java Adapter für Telelogic DOORS

Software Engineering. 8. Persistenz

Analyse und Modellierung von Informationssystemen

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Definition von visuellen Alphabeten basierend auf Meta Object Facilities (MOF) 23. Oktober 2012

3D Visualisierung von UML Umgebungsmodellen

Von der UML nach C++

GWI Research. Gesellschaft für Wirtschaftsberatung und Informatik

Software Engineering in der Projektpraxis

Domänenspezifisch entwickeln mit UML (Vortrag mit Demo)

Quellcode-Repräsentation in Eclipse. Seminarvortrag PG Reclipse Jan Rieke

Analysemuster. Marc Monecke

Softwaretechnik (Medieninformatik) Überblick: 6. Objektorientiertes Design

Model Driven Architecture Praxisbeispiel

Model Driven Architecture (MDA)

Inhaltsverzeichnis. 2.2 Grundlagen der UML Zusammenfassung... 53

Objektorientierte Programmierung

Rhapsody in J Modellierung von Echtzeitsystemen

Open Source IDE - eclipse ETIS SS04

Vorlesung Donnerstags, bis Uhr, HS12 Übung Dienstags, bis Uhr 4-5 ÜbungsbläMer (Programmieraufgaben)

Model Driven Software Development

Usecase Meta Model Comparison and Model Migration. Dawid Kostrzycki Entwicklung verteilter eingebetteter Systeme

Michael Piechotta - CASE Tools. openarchitecture Ware

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

eclipse - Entwicklungsumgebung und mehr ETIS SS05

Komponentenbasierte Softwareentwicklung

Prinzipien Objektorientierter Programmierung

Spring Dynamic Modules for OSGi Service Platforms

WIRTSCHAFTSINFORMATIK

Model Driven Development im Überblick

Software Engineering in der Praxis

3. Konzepte der objektorientierten Programmierung

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Andreas Lux Verknüpfung unterschiedlicher Modellsprachen (BPMN, UML, DSL) zur Anforderungsanalyse

Entwicklungswerkzeuge

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

OOAD Richtlinien & Tips

Java 6 lernen mit Eclipse

Softwarepraktikum: Enigma

Modell/Metamodell. Generated Source Code. Generator. Model. Fakultät für Informatik und Wirtschaftsinformatik MDSD - SS 2014

Office in Java. 2. Info-Point Urs Frei

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Mac OS X Programmierung

Programmieren in Java

Siehe auch Heide Balzert: Lehrbuch der Objektmodellierung.

Merkliste SoSy. V Modell. Anforderungen. Eigenschaften VKKNERV. Ermittlung FBI WAS. Volerekarte Punkte KKKMUH

Inhalt: Version 1.7.5

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH

Werkzeuggestützte Softwareprüfungen Statische Analyse und Metriken

Software Engineering. 11. Entwurfsmuster III. Franz-Josef Elmer, Universität Basel, HS 2015

Modellarbeit I: Entwurfsgerechte Klassenmodellierung

Evolution in objektorientierten Systemen. Dr. Thorsten Arendt Marburg, 28. Januar 2016

Klassenbeziehungen & Vererbung

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009

Unit Tests mit Junit 4. Dario Borchers

Konzeption und Realisierung eines logikbasierten Anfragewerkzeugs für UML-Modelle

Software Engineering II

Transkript:

Mustersuche in Quellcode Komponentenbasierte Softwareentwicklung 13.07.2005 Peter Schübel 1

Gliederung 1. Vorstellung des Projekts InPulse 2. Design Patterns 1. Idee 2. Beispiele 3. Referenzsystem World Simulator 4. Mustersuche 1. Suchalgorithmen 2. Werkzeuge / Schnittstellen 3. Implementierungen 4. Ergebnisse 2

InPulse Projekt (1) = Integrative Pattern- und UML-orientierte Lernund System Entwicklungsumgebung Aufgabe: Automatische Erkennung der verwendeten Design Patterns in existierendem Quellcode Ziel: Besseres Verständnis Vereinfachtes Refactoring [1] 3

InPulse Projekt (2) Laufzeit: 01.10.2003 30.09.2005 Beteiligte Institutionen / Firmen: BMBF TU Ilmenau, OFFIS Oldenburg Daimler-Chrysler, Ulm exxellent solution GmbH Ulm transit GmbH, Ilmenau Phaidros Software AG Ilmenau Umfang: 211 TEUR [1] 4

Design Patterns (1)...descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context. (Gamma...) Fertige Lösungsansätze für häufige Probleme Erleichtern Verständnis von Quellcode und die Kommunikation im Softwareentwicklungsprozess Gamma, Helm, Johnson, Vlissides (GOF): Festlegung von 23 objekt-orientierten Entwurfsmustern [2] 5

Design Patterns (2) Dekorierer (Decorator) Dynamisches Hinzufügen / Entfernen von Funktionalität zu Objekten Häufige Verwendung, wenn Ableitung unpraktisch ist (viele Kombinationen) [2] 6

Design Patterns (3) Dekorierer Beispiel: ScrolledWindow [2] 7

Design Patterns (4) Kompositum (Composite) Baumstrukturen (Teil-Ganzes-Hierarchien) Einzelne Objekte und Kompositionen werden gleichbehandelt [2] 8

Design Patterns (5) Kompositum Beispiel: Vektorgrafik [2] 9

Referenzsystem World Simulator Implementierung aller 23 GoF Design Patterns Dient als Referenz für Suchalgorithmen Implementiert keine sinnvolle Funktionalität reale Verwendungen von Design Pattern sind oft Variationen der ursprünglichen DPs 10

Mustersuche (1) 4 Diplom-/Studienarbeiten Allg. Methodik: Suche nach Schlüsselmerkmalen Definition von notwendigen Merkmalen Definition von verbotenen Merkmalen Nutzung einer API, die diese Merkmale liefert Möglichst allgemeingültige Suchalgorithmen Qualitätsmaße: Recall: % der existierenden Muster gefunden Precision: % der gefundenen Muster korrekt [3] 11

Mustersuche (2) [3] 12

Suchalgorithmus Dekorierer für jede Klasse i (Dekorierer) do gibt es 1-zu-1-Aggregation zu einer Klasse j (Komponente)? ja: ist Klasse j Oberklasse von Klasse i? ja: hat Klasse i Unterklasse k (konkreter Dekorierer)? ja: für alle Methoden L von Klasse k do gibt es ein Aufruf auf Klasse i gefolgt von lokalem Methodenaufruf? ja: enthält die in Methode L aufgerufene Methode der Klasse i einen Aufruf der gleichnamigen Methode der Klasse j? ja: Muster gefunden od od [3] 13

Suchalgorithmus Kompositum für jede Klasse i (Kompositum) do besitzt Klasse i eine 1-zu-n-Aggregation zu einer Oberklasse (Komponente)? ja: weiter besitzt Klasse i Unterklassen? nein: Muster gefunden ja: für jede Unterklasse k (spez. Kompositum) von Klasse i do für jede Methode L der Klasse k do ruft Methode L eine Methode der Klasse i auf, und folgt dem ein lokaler Methodenaufruf? nein: weiter, ja: Abbruch od od Muster gefunden od [3] 14

Werkzeuge / Schnittstellen Entwicklung in Java unter Eclipse UML-Design Toolkit together UML-Diagramme erstellen Sourcecode-Generierung Java-Archiv als PlugIn nutzbar Auffinden der Schlüsselmerkmale: OpenAPI von together chorda -API von exxellent 15

together (1) 16

together (2) Entwicklungsumgebung C++, C#, Corba IDL, Java, VisualBasic 6/.NET Entwurf mittels Design Patterns Synchronhaltung Quellcode <==> UML-Diagramme Reverse Engineering OpenAPI liefert Daten aus Diagrammen, SourceCode & Kommentaren IDE (Ausgabe) Read-Write Interface RWI SourceCode Interface SCI (sprachenabhängig!) [7] 17

together (3) Probleme: Abhängigkeit von proprietärer API Schlechte Performance (Java) Virtualität, Klassennamen bei Zeigern OpenAPI prüft nur Header-Dateien Klassenstruktur muss separat gespeichert werden (Hashtables) Togethersoft von Borland aufgekauft: Neues Datenmodell, veränderte API, Bugs... Kein Debuggen der PlugIns möglich 18

chorda -API (1) Basiert auf Meta Object Facility (OMG) abstrakte Sprache und Framework zur Verwaltung technologieneutraler Metamodelle MOF (Meta-meta) ==> UML (Meta) ==> UMLModell ==> Computer System Allgemeines, abstraktes Modell für Quellcode Spezialisierung: Definition konkreter Sprachelemente Geplant als eigenständige unabhängige API Bisher als PlugIn für together realisiert Portierung für andere IDE's (Eclipse) [4, 5] 19

chorda -API (2) [6] 20

chorda -API (3) 21

chorda -API (4) Probleme Zugriff auf Daten oft sehr umständlich Kardinalität nicht direkt abfragbar API unvollständig Bisher nur konkretes Modell für Java Expressions teilweise nicht implementiert Dokumentation mangelhaft Quellcode nicht verfügbar Keine Debug-Version Nur per Log-Ausgaben nachvollziehbar 22

Bisherige Implementierung (1) Nutzung der OpenAPI Speicherung / Ausgabe der Suchresultate Abstrakte Klasse FindPattern häufig benötigte Methoden: 23

Bisherige Implementierung (2) Interne Repräsentation in Hashtables: 24

Neue Implementierung Nutzung der chorda -API Speicherung / Ausgabe der Suchresultate Abstrakte Klasse FindPattern häufig benötigte Methoden Interne Repräsentation durch chorda-baum 25

FindPattern getstatements(imodelelement methodnode) Allgemeines Statement? => Stringvergleich /* if(children[j].getmodelelementtype().equals(imodelelementjava.statement_expression)) { v_statements.addelement(children[j]); }*/ if(children[j].getmodelelementtype().equals("javaexpression")) { 26

Find_Decorator (1) für jede Klasse i (Dekorierer) do gibt es 1-zu-1-Aggregation zu einer Klasse j (Komponente)? ja: ist Klasse j Oberklasse von Klasse i? ja: für jede Klasse j do ja: hat Klasse i Unterklasse k (konkreter Dekorierer)? ja: für alle Methoden L von Klasse k do gibt es einen Aufruf auf Klasse i gefolgt von lokalem Methodenaufruf? ja: enthält die in Methode L aufgerufene Methode der Klasse i einen Aufruf der gleichnamigen Methode der Klasse j? ja: Muster gefunden od od [3] od 27

Find_Decorator (2) Ergänzungen: Mehrere ConcreteDecorator werden erkannt und gespeichert Test auf Methodenaufrufe wird für alle aggregierten Oberklassen durchgeführt Probleme: Kardinalität kann nicht direkt bestimmt werden if(!(attribute.getspecification().getspecificationelementtype().equals( ISpecificationElementJava.ARRAY))) {... 28

Find_Composite (1) für jede Klasse i (Kompositum) do besitzt Klasse i eine 1-zu-n-Aggregation zu einer Oberklasse j (Komponente)? ja: für jede Klasse j do besitzt Klasse i Unterklassen? nein: Muster gefunden ja: für jede Unterklasse k (spz. Kompositum) von Klasse i do für jede Methode L der Klasse j do ruft Methode L eine Methode der Klasse i auf, und folgt dem ein lokaler Methodenaufruf? nein: weiter, ja: Abbruch od od; Muster gefunden od od 29

Find_Composite (2) Ergänzungen: Test auf Methodenaufrufe wird für alle aggregierten Oberklassen durchgeführt Probleme: Kardinalität kann nicht direkt bestimmt werden Akzeptieren aller Aggregationen 30

InPulse Plug-In (1) Starte Suche... 31

InPulse Plug-In (2) Ergebnisse: 32

Ergebnisse Qualitätsmaße: [8] Recall 100% Precision 100% Angaben zu realen Projekten? Anzahl der gefundenen Muster: Projekt/Muster Bsp. Projekt WorldSimulator Dekorierer Kompositum 1 (1) 1 (1) 0 (1) 1 (0) geerbte Methode wurde nicht berücksichtigt? 33

Quellenangaben [1] http://www.tu-ilmenau.de/fakia/drittmittelprojekte [2] Gamma, et al: Design Patterns. Elements Of ReUsable Object-Oriented Software, 1995. [3] Naumann, Sebastian: Reverse-Engineering von Entwurfsmustern, 2001. TU Ilmenau. Diplomarbeit. [4] http://www.software-kompetenz.de/?7116 [5] OMG: Meta Object Facility Specification, 2002. Ver 1.4 [6] chorda-dokumentation: sprachabbildung.pdf [7] Herbig, Jens: Reverse Engineering von Entwurfsmustern, 2003. TU Ilmenau. Studienarbeit [8] Seidel, Antje: Analyse von Algorithmen zur automatisierten Mustererkennung, 2004. TU Ilmenau. Diplomarbeit. 34

Vielen Dank für Ihre Aufmerksamkeit! 35