Entwicklung eines Klassengraphen

Ähnliche Dokumente
UML (Unified Modelling Language) von Christian Bartl

NACHRICHTENTECHNISCHER SYSTEME

1 Klassen und Objekte

7. Objektorientierung. Informatik II für Verkehrsingenieure

Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl

UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language

Vorlesung Programmieren

Erzeugung von UML-Diagrammen

Unified Modeling Language

Techniken der Projektentwicklungen

Mario Jeckle, Chris Rupp, Jürgen Hahn, Barbara Zengler, Stefan Queins. UML2 glasklar. UNIFIED MODELING LANGUAGE l HANSER

Vgl. Oestereich Kap 2.4 Seiten

Eine Klassen-Deklaration besteht folglich aus Deklarationen von:

Inhalt. " DiaGen Historie und Beschreibung. " Architektur eines DiaGen-Editors. " Hypergraphen. " DiaGen-Editoren Komponenten

Einführung in die Informatik

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel

Visual Studio 2010 Neues für Architekten

Inhalt. 1 Einführung 17. Strukturdiagramme. 2 Klassendiagramm 37

Aufgaben. Objektorientierte Programmierung

Unified Modeling Language 2

Analyse und Design mituml2

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

SWE6 Slide 1. Software-Engineering. Vorlesung 6 vom Sebastian Iwanowski FH Wedel

Comelio GmbH - Goethestr Berlin. Kurskatalog

Evaluation of Database Design and Reverse Engineering Tools for a Large Software System

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Das UML Benutzerhandbuch

Software Entwicklung 1

CARL HANSER VERLAG. Mario Jeckle, Chris Rupp, Jürgen Hahn, Barbara Zengler, Stefan Queins. UML 2 glasklar

Bestandsaufnahme und Arbeit an einer Alpha-Version des Saros- Plugins für die IntelliJ-Plattform

Visuelle Sprachen und Ihre Ausdrucksmittel

Objektdiagramm Komponentendiagramm Paketdiagramm. 6. Weitere Strukturdiagramme

Vorlesung Informationssysteme

Notationen zur Prozessmodellierung

Objektorientiertes Programmieren

Christoph Kecher, Alexander Salvanos UML 2.5. Das umfassende Handbuch. Rheinwerk. Computing

Kurzeinführung in UML

Softwaretechnologie für Fortgeschrittene Wohce 4 Modellierung UML

Modellierung CORBA-basierter Anwendungssysteme mit der UML

Algorithmen und Datenstrukturen 06

Poseidon for UML. Einführung. Andreas Blunk

So#waretechnologie für Fortgeschri4ene Teil Eide. Stunde IV: UML. Köln 26. Januar 2017

Keller (Stapel, Stack, LIFO)

Einführung in die Programmierung

Die Unified Modeling Language UML

Herzlich willkommen!

Oracle JDeveloper 10 g

Visual Studio 2010 Jetzt auch für Architekten

INSPIRE - Modellierung

Einführung: Zustandsdiagramme Stand:

Objektorientierte Analyse (OOA) Inhaltsübersicht

TEIL I Strukturdiagramme 1 Einführung Klassendiagramm Objektdiagramm Kompositionsstrukturdiagramm...

Übungen Softwaretechnik I

UML 2 glasklar Praxiswissen für die UML-Modellierung

UML mit Enterprise Architect

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung. Grundkurs C++

Analyse und Design mit U ML 2.3

Unified. Copyright Adriano Gesué UML 2.0 UML 1.4 UML 1.3 UML 1.2 UML 1.1 UML 1.0 UML 0.9. Method 0.8

Requirements Engineering I

Analyse und Design mituml2.1

UML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich

Einführung in die objektorientierte Programmierung

UML 2.0 als Architekturbeschreibungssprache? Seminar: Architekturbeschreibungssprachen Manuel Wickert

OOAD in UML. Seminar Software-Entwurf B. Sc. Sascha Tönnies

Inhalt. TEIL I Grundlagen. Einleitung 15

Implementierung einer Unterstützung von Versionsverwaltung in einem Plug-In für verteilte Paarprogrammierung

Objektorientierte Systementwicklung

Leitende Aufgabe Flight Management System Abgabedokumentation Softwareengineering

1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Gliederung des Vortrages

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

Software-Engineering im Sommersemester 2014

10. OLAPLINE-Anwendertreffen

Software Entwicklung 1

Inhaltsverzeichnis.

Handbuch für die Erweiterbarkeit

Software Entwicklung 1

Aufgaben. Objektorientierte Programmierung

Java Einführung Objektorientierte Grundkonzepte

Analyse und Entwurf von Softwaresystemen mit der UML

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick

Unified Modelling Language

Maintenance von Formsmodulen mit dem Entwicklungswerkzeug UniForms Überblick über UniForms Live Demo

Programmieren in Java -Eingangstest-

VisualDependencies Fachhochschule Köln

Übung Einführung in die Softwaretechnik

Martin Fowler, Kendall Scott. UML konzentriert. Eine strukturierte Einführung in die Standard-Objektmodellierungssprache. 2., aktualisierte Auflage

Spezifikation, Klassen, Schnittstellen in Java. 2.4 Datenabstraktion, Objektorientierung, Java

Multimedia im Netz Wintersemester 2012/13

Feature Modelle. und ihre Anwendung. Feature Modelle und ihre Anwendungen. Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn

Das UML Benutzerhandbuch

Semantisches Geschäftsprozessmanagement Übung 1

Kapitel

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE

UML Eine kurze Einführung

Beispiel. Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio)

Werkzeugunterstützung für UML Profiles. Verteidigung des Großen Belegs Andreas Pleuß

Transkript:

Vortrag zur Diplomarbeit von Carsten Stocklöw Fachbereich Biologie und Informatik Johann Wolfgang Goethe - Universität 1/39

Überblick Einleitung UML Stand der Technik Konzept Implementierung Demonstration Fazit 2/39

Einleitung Software wird zunehmend komplexer Es ist schwierig, den Überblick zu behalten Problem: Programmiersprachen sind als Sprachen linear orientiert Sind graphische Darstellungen besser geeignet zur Visualisierung von vernetzten Zusammenhängen wie Vererbungshierachien? 3/39

Einleitung Möglichkeiten zur graphischen Darstellung Änderung in der graphischen Darstellung führt zu veränderten Sourcecode Darstellung der vernetzten Strukturen Zielsprache: C++ Kernfrage: Können graphisch orientierte Tools die Programmierarbeit wesentlich beschleunigen? 4/39

Einleitung Reverse Engineering Extrahieren der Konstruktionselemente aus Sourcecode Forward Engineering Erstellen von Sourcecode anhand von Konstruktionselementen Roundtrip Engineering = Reverse Engineering + Veränderungen + Forward Engineering 5/39

Einleitung Refaktorisierung (Refactoring) Umbenennen Attribute kapseln Methoden extrahieren Schnittstelle extrahieren Subklasse extrahieren Variable für Ausdruck anlegen... 6/39

UML Unified Modelling Language Notation zur Visualisierung, Dokumentation, Konstruktion und Spezifikation von Software-Systemen Aktuelle Version: 1.5 Version 2.0 für Ende 2004 vorgesehen 7/39

UML UML Diagramme Struktur Verhalten Klassen Komponenten Objekte Aktivitäten Zustand Verteilung Packet Kompositionsstruktur Anwendungsfall Interaktion Interaktionsübersicht Sequenz Kommunikation Timing 8/39

UML - Klassendiagramm cd Klassen Window Haus size 1 Zimmer + size: Area = (100,100) # visibility: Boolean = true + defaultsize: Area Auto hat 4 Reifen + draw() Anbieter Schnittstelle Nutzer Button List Tree Anbieter Schnittstelle Nutzer 9/39

UML - Anwendungsfalldiagramm uc Online-Shop Online-Shop Produkt suchen Produkt versenden «include» Sachbearbeiter Kunde Produkt bestellen Bestellung bearbeiten Produkte verwalten Lagerist Mitarbeiter 10/39

Stand der Technik Betrachtete Programme: ClassBuilder 2.4 Alpha 1.7 Enterprise Architect 4.0 build 729 Jumli 1.4 Metamill v3.1 (build 556) ObjectDomain R3 (build 292) objectif 4.7 Rational Rose Enterprise Edition (2003.06.00.436.0) Select Component Factory 5.0 UMLStudio 7.1 (Build 746) WithClass 2000 Enterprise 6.0 11/39

Stand der Technik Gemeinsamkeiten: Unterstützung von UML Konstruktionselemente werden zusätzlich in einer Baumstruktur dargestellt Beziehungen werden durch Ziehen einer Linie erstellt 12/39

Stand der Technik Beispiel: Enterprise Architect 13/39

Stand der Technik Einschränkungen: Teilweise werden Methodenkörper nicht verarbeitet Nicht alle Beziehungen zwischen Klassen werden erkannt Fehler (z.b.: umbenennen resultiert in einem neuen Element) Klassen werden in separate Dateien ausgelagert Kommentare im Sourcecode werden nicht übernommen Sourcecode wird verändert 14/39

Stand der Technik Beispiel: Metamill // METHOD=mm:5120f0c8-ed84-11d8-8843-fd458635e3a5 void AddParent(CDataContainer* cont); // METHOD=mm:5120f0ca-ed84-11d8-8843-fd458635e3a5 void AddEnum(CDataEnum* item); // METHOD=mm:5120f0cc-ed84-11d8-8843-fd458635e3a5 void AddVariable(CDataVariable* var); // METHOD=mm:5120f0ce-ed84-11d8-8843-fd458635e3a5 void AddTypeReference(CDataVariable* data); 15/39

Stand der Technik Beispiel: WithClass 2000 struct stfilepos { CDataFile* File; long Line; long Col; }; Þ class stfilepos { CDataFile* File; long Line; long Col; CDataFile* File; public: }; 16/39

Konzept UML ist sehr vielseitig aber: viele Elemente können nicht in Sourcecode übersetzt aus Sourcecode gewonnen werden Þ automatisches Erstellen nicht möglich 17/39

Konzept Verschiedene Sichten mit unterschiedlichem Detailgrad Parallele Darstellung von Sourcecode und Graphik Design-Sicht 18/39

Fazit Beispiel: SourceCode to Flowchart 19/39

Konzept Methoden: Programmablaufpläne sort Start i = 1 2 sonst return i = 1; Button draw() 20/39

Konzept Klassen Symbole Button Window + draw() + draw() Button Window Methoden-Aufrufe Kontextdiagramm draw() draw() 21/39

Konzept Module und Komponenten Anhaltspunkte: Paket Model Unterverzeichnisse Klasse A Namensräume Klasse B Logische Aufteilung Subsystem Spezifikation Realisierung 22/39

Implementierung - Parser 1972: C 1980: C mit Klassen (ab 1983: C++) Probleme: Vorverarbeitung (Präprozessor) Eigene Datentypen C++ enthält C (Altlasten: Trigraph:??< Þ { ) Alternative Darstellungen ( <% Þ { ) 23/39

Implementierung - Parser Erstellung des Ableitungsbaums Problem: Konflikte in Grammatik Beispiel: dangling else Parsergenerator Bison meldet über 60 shift/reduce-konflikte und über 700 reduce/reduce-konflikte Prototypische Umsetzung verzichtet auf Erstellung des Ableitungsbaums 24/39

Implementierung - Layout Automatisches Layout Graphenalgorithmen Knoten: Klassen & Pakete Kanten: Beziehungen (Generalisierung, Aggregation,..) 25/39

Implementierung - Layout Ästhetikkriterien für automatisches Layout: Überschneidungen von Kanten Abstand zwischen Knoten Abstand zwischen Kanten bzw. zwischen Knoten und Kanten Länge der Kanten Anzahl der Kantenknicke Größe und Form des Diagramms Darstellung der Vererbungshierarchie 26/39

Implementierung - Layout Ästhetikkriterien für automatisches Layout: Überschneidungen von Kanten Abstand zwischen Knoten Abstand zwischen Kanten bzw. zwischen Knoten und Kanten Länge der Kanten Anzahl der Kantenknicke Größe und Form des Diagramms Darstellung der Vererbungshierarchie 27/39

Implementierung - Layout Ästhetikkriterien für automatisches Layout: Überschneidungen von Kanten Abstand zwischen Knoten Abstand zwischen Kanten bzw. zwischen Knoten und Kanten Länge der Kanten Anzahl der Kantenknicke Größe und Form des Diagramms Darstellung der Vererbungshierarchie 28/39

Implementierung - Layout Ästhetikkriterien für automatisches Layout: Überschneidungen von Kanten Abstand zwischen Knoten Abstand zwischen Kanten bzw. zwischen Knoten und Kanten Länge der Kanten Anzahl der Kantenknicke Größe und Form des Diagramms Darstellung der Vererbungshierarchie 29/39

Implementierung - Layout Ästhetikkriterien für automatisches Layout: Überschneidungen von Kanten Abstand zwischen Knoten Abstand zwischen Kanten bzw. zwischen Knoten und Kanten Länge der Kanten Anzahl der Kantenknicke Größe und Form des Diagramms Darstellung der Vererbungshierarchie 30/39

Implementierung - Layout Ästhetikkriterien für automatisches Layout: Überschneidungen von Kanten Abstand zwischen Knoten Abstand zwischen Kanten bzw. zwischen Knoten und Kanten Länge der Kanten Anzahl der Kantenknicke Größe und Form des Diagramms Darstellung der Vererbungshierarchie 31/39

Implementierung - Layout Ästhetikkriterien für automatisches Layout: Überschneidungen von Kanten Abstand zwischen Knoten Abstand zwischen Kanten bzw. zwischen Knoten und Kanten Länge der Kanten Anzahl der Kantenknicke Größe und Form des Diagramms Darstellung der Vererbungshierarchie 32/39

Implementierung - Layout Ansätze für Layoutalgorithmen: Der Topology-Shape-Metrics Ansatz Der Hierarchische Ansatz Der Sichtbarkeits Ansatz Der Vergrößerungs Ansatz Der Gerichtete-Kräfte Ansatz Der Divide and Conquer Ansatz 33/39

Implementierung - Layout Der Hierarchische Ansatz: Gerichtete azyklische Graphen Schritt 1: Ebenen-Zuweisung (layer assignment) Þ 34/39

Implementierung - Layout Der Hierarchische Ansatz: Gerichtete azyklische Graphen Schritt 2: Kreuzungs-Reduktion (crossing reduction) Þ 35/39

Implementierung - Layout Der Hierarchische Ansatz: Gerichtete azyklische Graphen Schritt 3: X-Koordinaten (x-coordinate assignment) Þ 36/39

Präsentation 37/39

Fazit Getestete Programme nützlich für: Design neuer Komponenten Dokumentation vorhandener Komponenten Sinnvoll: Erweiterung von Texteditoren um graphische Elemente Gleichzeitige Darstellung von Text und Graphik Bearbeitung im Text und in Graphik abwechselnd 38/39

Vielen Dank für Ihre Aufmerksamkeit 39/39