61
© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn • Angebotserstellung • Modellbasierte Softwareentwicklung • Musterbasierte Softwareentwicklung Reverse Engineering Grundlagen des Software Engineerings

© Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

Embed Size (px)

Citation preview

Page 1: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

• Angebotserstellung• Modellbasierte

Softwareentwicklung• Musterbasierte

Softwareentwicklung• Reverse Engineering

Grundlagen des Software Engineerings

Page 2: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Angebotserstellung

Page 3: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Ziel dieser Vorlesungseinheit

Im Praktikum sollten sie zunächst ein Angebot erstellen Angebot setzt sich zusammen aus

Aufwandsschätzung Projektplan

Angebot geschieht aufgrund des Lastenheftes

Ziel dieser Vorlesungseinheit Wiederholung zum Lastenheft Lernen, wie eine Aufwandsschätzung erfolgt

• Schätzverfahren kennenlernen Lernen, wie eine Projektplan erstellt wird

Page 4: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Lastenheft (grobes Pflichtenheft)

DIN 69901-5 Vom Auftraggeber erstellt

Beschreibt seine Forderungen Für Auftraggeber und -nehmer Inhalt

Wesentliche Anforderungen des Produkts aus fachlicher Sicht (Anwendungsgebiet)

Wesentliche Funktionen & Daten Liefert die Grundlage für

Aufwandsschätzung Erstellung des Projektplans

4Software(technik)praktikum: Vorlesung 4

Ihr Lastenheft haben Sie bereits von uns erhalten.

Page 5: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Lastenheft (grobes Pflichtenheft)

Unser Lastenheft ist idealisiert Ausführlich (20 Seiten) Mehrere Reviewzyklen Möglichst Konfliktfrei

In der Industrie werden Sie so ein Lastenheft leider nur selten finden

Diese sind meist Sehr kurz (1-2 Seiten) Ohne Reviews Nicht konfliktfrei

5Software(technik)praktikum: Vorlesung 4

Page 6: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Angebot

Aufbau: Maximal 5 Seiten

Anschreiben (1 Seite) Aufwandsschätzung (1 Seite) Projektplan (1 Seite) Erklärender Text (max. 2 Seiten)

• Zur Aufwandsschätzung und dem Projektplan

6Software(technik)praktikum: Vorlesung 4

Page 7: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Angebot

Tipps Darstellung der Aufwände sollte übersichtlich sein

• z.B. Tabellarisch Arbeitspakete und Projektplan als Diagrammen visualisieren

und textuell beschreiben• Keine Diagramme ohne erklärenden Text!

Verantwortliche mit Kontakt-Möglichkeit angeben Auf Rechtschreibung, Ausdruck, Grammatik achten

7Software(technik)praktikum: Vorlesung 4

Page 8: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Aufwandsschätzung

Auf der Basis des Lastenheftes, insbesondere der Produktfunktionen und der Produktdaten, lässt sich der Aufwand schätzen.

Meist wird die Größe des resultierenden Softwareprodukts geschätzt

8Software(technik)praktikum: Vorlesung 4

Page 9: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Aufwandsschätzung

Schätzverfahren erfordern viel Erfahrung

Schätzverfahren benötigen Aufwandsdaten aus vorangegangenen Softwareprojekten in ähnlichem Anwendungsgebiet mit ähnlichen Entwicklungsmethoden mit ähnlicher Firmenkultur

Sonst stimmt die Hypothese der „konstanten“ Produktivität nicht, die fast allen Verfahren zugrunde liegt

Haben Sie nicht.

Haben Sie auch nicht.

9Software(technik)praktikum: Vorlesung 4

Page 10: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Aufwandsschätzung

Im Praktikum wird die Aufwandsschätzung nicht bewertet.

Um Erfahrung zu sammeln, sollen Sie aber die Grundlage Ihrer Schätzung und das Schätzergebnis am Ende mit dem Ergebnis und dem tatsächlichen Aufwand vergleichen

Stundenzettel Zählen der LOC (SVN-Repository) Vergleich im Abschlussdokument

10Software(technik)praktikum: Vorlesung 4

Page 11: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Grundlegende Schätzmethoden

Expertenmethode Mehrere Experten schätzen unabhängig voneinander

den Aufwand für jede Funktion. Dann vergleichen und diskutieren sie die Resultate Danach gibt jeder Experte nochmals eine Schätzung

ab (ggf. wird iteriert). Am Ende werden die Schätzungen gemittelt.( Delphi, XP)

Bewertung:+ relativ genaue Schätzung- Experten erforderlich

11Software(technik)praktikum: Vorlesung 4

Page 12: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Grundlegende Schätzmethoden

AnalogiemethodeSchätzung aufgrund der Ähnlichkeit des geplanten Produkts mit einem Produkt, das bereits früher erstellt wurde und für das der Aufwand bekannt ist

Bewertung:+ reale Basis- viel Erfahrung nötig- Mangel an vergleichbaren Projekten- Ähnlichkeit ist subjektiv- Abweichungen schlecht quantifizierbar

12Software(technik)praktikum: Vorlesung 4

Page 13: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Grundlegende Schätzmethoden

Multiplikationsmethode Zerlegung des Produkts in Teilprodukte Bewertung anhand vergleichbarer Teilprodukte

Bewertung:+ vergleichbare Teilprodukte sind eher vorhanden- Bewertung noch nicht in der Planungsphase möglich

(Teilprodukte werden frühestens im Pflichtenheft definiert)

13Software(technik)praktikum: Vorlesung 4

Page 14: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Grundlegende Schätzmethoden

Gewichtungsmethode Die Produktfunktionen werden kategorisiert und gemäß Komplexität

klassifiziert. Aus der Anzahl der jeweiligen Funktionen wird gemäß einer festen

Rechenvorschrift ein Wert berechnet. Dieser Wert wird über eine Tabelle (der gesammelten Erfahrungswerte) in

den Aufwand übersetzt.

(Bsp: Function-Point-Methode)

Bewertung:+ Schätzung in der Planungsphase+ Schätzung ist nachvollziehbar+ keine vergleichbaren Projekte nötig+ Anpassbar an die eigene Firmenkultur und –methodik durch Anpassung

der Tabelle+ verfeinerte Schätzung bei verfeinerten Anforderungen möglich+ Kochrezept, das (relativ) wenig Erfahrung erfordert- Hoher Aufwand

14Software(technik)praktikum: Vorlesung 4

Page 15: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Beispiel: Function-Point-Methode

Standardisiert in der ISO/IEC 20926

Zerlegung des Systems in elementare, in sich abgeschlossene Funktionen aus Anwendersicht, z.B. Erfassung einer Adresse Berechnung eines Tarifs Laden/Speichern

Function-Point-Bewertung ist unabhängig von der Technologie der Anwendung

15Software(technik)praktikum: Vorlesung 4

Function-Point-Methode ist zugeschnitten auf klassische Informationssysteme.Das Prinzip dahinter lässt sich aber auf andersartige Systeme übertragen.

Page 16: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Beispiel: Function-Point-Methode

Kategorisierung, z.B. Externe Ein- und Ausgaben, Benutzerinteraktionen, Externe

Schnittstellen, Interne Dateien Klassifizierung (der Komplexität), z.B:

einfach, mittel, komplex Je Kategorie-Klassen-Kombination wird ein Punktwert

zugewiesen einfache externe Eingaben = 3 für komplexe interne Dateien = 15

Funktionen werden einer Kategorie und Klasse zugeordnet• Jede Funktion hat somit einen Punktwert

Functional Size der Anwendung = Summe aller Punktwerte

16

[Sommerville, Software Engineering, 1992]

Software(technik)praktikum: Vorlesung 4

Page 17: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Beispiel: Function-Point-Methode

Bewertung weiterer Einflussfaktoren: Verflechtung mit anderen Systemen Verteilungsgrad der Daten Wiederverwendung Anpassbarkeit …

Die weiteren Einflussfaktoren modifizieren die Bewertung (Functional Size) meist nicht mehr als +/- 30%

Das Ergebnis ist die Function-Point-Bewertung.

17Software(technik)praktikum: Vorlesung 4

Page 18: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Beispiel: Function-Point-Methode

Über eine Tabelle (mit bisherigen Erfahrungswerten des Unternehmens) werden die Function Points in den Aufwand umgerechnet

Nach Abschluss des Projekts wird die Tabelle aktualisiert

18Software(technik)praktikum: Vorlesung 4

Page 19: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Schätzverfahren

Es gibt viele verschiedene Basismethoden und noch mehr konkrete Verfahren

Konkrete Schätzverfahren kombinieren verschiedene Methoden, um deren Nachteile auszumerzen und das Schätzergebnis zu verbessern

Auch das ausgeklügeltste Verfahren kann die Erfahrung nicht ersetzen

19Software(technik)praktikum: Vorlesung 4

Page 20: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Aufwandsschätzung

Positiv-Beispiel: tabellarisch ausführlich mit Std.-Lohn zusätzlich:

beschreibender Text

erledigt

noch zu tun

Teilaufgaben

Gesamtaufwand

Hauptaufgaben

20Software(technik)praktikum: Vorlesung 4

Page 21: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Aufwandsschätzung

Positiv-Beispiel:

Preis muss nachvollziehbar sein Auftraggeber hat durch Gliederung die Möglichkeit, einzelne Punkte zu streichen

Teilsummen

21Software(technik)praktikum: Vorlesung 4

Page 22: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Projektplan

Orientiert sich am vorgegebenen Zeitplan

Projektplan detailliert den Zeitplan Ggf. Zuordnung von Ressourcen (Personen) zu einzelnen Aktivitäten Interne Meilensteine Vorschläge für Aufgabenstart übernehmen oder anpassen Berücksichtigt das gewählte Vorgehensmodell ...

22Software(technik)praktikum: Vorlesung 4

Page 23: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Einhaltung des V-Modells

23

Ihr Projektplan soll sich ans V-Modell halten.

Software(technik)praktikum: Vorlesung 4

Page 24: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Projektplan

Verschiedene Darstellungsformen möglich Gantt-Diagramm Aktivitätendiagramm Tabelle

Mögliche Werkzeuge Microsoft Project (Erhältlich via MSDNAA) Gantt Project

24Software(technik)praktikum: Vorlesung 4

Page 25: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Modellbasierte Softwareentwicklung

Page 26: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Motivation und Beispiel

Was sind „Softwaremodelle“? Wozu sind sie gut? Warum brauchen wir sie?

Was ist Software? Was ist ein Modell?

26Software(technik)praktikum: Vorlesung 4

Page 27: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Modell

Modell [lat.-vulgärlat.-it.] das; -s, -e:

7. die vereinfachte Darstellung der Funktion eines Gegenstands od. des Ablaufs eines Sachverhalts, die eine Untersuchung od. Erforschung erleichtert od. erst möglich macht.

[nach Duden: Das Fremdwörterbuch, 1990].

27Software(technik)praktikum: Vorlesung 4

Page 28: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Zweck von Modellen

Verständnis des Problembereichs und des Endproduktes

Kommunikation auf richtiger Abstraktionsebene mit verschiedenen Personengruppen

Abstraktion Analyse & Verifikation

Konsistenz, Vollständigkeit,Korrektheit, …

Codegenerierung

28Software(technik)praktikum: Vorlesung 4

Page 29: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Modell und Metamodell

graphische / konkrete Syntax des Petrinetz-modells

PlaceTransition

1 source

1 targetArc

*

PetriNet

context Arc inv:( self.source.oclIsKindOf(Place) and

self.target.oclIsKindOf(Transition) )or( self.source.oclIsKindOf(Transition) and

self.target.oclIsKindOf(Place) )

Token*

Node

Element

Abstrakte Syntax des Metamodells für Petrinetze

29Software(technik)praktikum: Vorlesung 4

Page 30: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Abstrakte und konkrete Syntax

:Place

:Transition

:Arc

:Transition

:Place

:Arc

:Arc

source

target source

target

targetsource

:Arcsourcetarget

:Petrinet

:Token

graphische / konkrete Syntax

abstrakte Syntax(in Form eines Objektdiagramms)

30Software(technik)praktikum: Vorlesung 4

Page 31: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Metamodell und Modell

:Place

:Transition

:Arc

:Transition

:Place

:Arc

:Arc

source

target source

target

targetsource

:Arcsourcetarget

:Petrinet

:Token

PlaceTransition

1 source

1 target

Arc

*

PetriNet

Token*

Node

Element

Modell

Metamodell

ist Instanz von

konkrete Syntax

abstrakte Syntax

31Software(technik)praktikum: Vorlesung 4

Tipp zur Metamodellierung: Erst über die Modellebene nachdenken! Also erst ein Objektdiagramm für ein repräsentatives Beispiel zeichnen und dann ein Klassendiagram erstellen.

Page 32: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Klassendiagramm als Modell

1 source

1 targetAssociationClass

ClassDiagram

Ausschnitt des Metamodells der UML (Klassendiagramme)

UML-Modell

PlaceTransition

1 source

1 target

Arc

*

PetriNet

Token*

Node

Element

**

32Software(technik)praktikum: Vorlesung 4

Page 33: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Überblick

:Place

:Transition

:Arc

:Transition

:Place

:Arc

:Arc

source

target source

target

targetsource

:Arcsourcetarget

:Petrinet

:Token

PlaceTransition

1 source

1 target

Arc

*

PetriNet

Token*

Node

Element

1 source

1 target

AssociationClass

ClassDiagram

**

:Class:Class

:Association

:Association

Abstrakte Syntax zu

Ein Petrinetz

Modell für

Petrinetze

Abstrakte Syntax zu

Modell fürKlassendiagramme

Modell

Meta-Modell

Meta-Meta-Modell

(alternativ: Instanz)

(alternativ: Modell)

(alternativ: Meta-Modell)

Instanz von

Instanz von

33Software(technik)praktikum: Vorlesung 4

Page 34: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Modelle im Softwareentwurf

MOF: Meta-Object Facility (OMG Standard)

Level M3Meta-Metamodell

Level M2Metamodell

Level M1Modell

Level M0Instanz/Wirklichkeit

beschreibt

beschreibt

beschreibt Instanz von

Instanz von

Instanz vonInstanz von

beschreibt

MOF

UML

Modell einesDame-Spiels

ein Dame-Spiel(z.B. Brettspiel oder

Simulation im Computer)

MOF

(UML)

Petri-Netz einer Ampel

eine Ampel (in Wirklichkeit oder

deren Simulation im Computer)

Metamodell für Petrinetze

34Software(technik)praktikum: Vorlesung 4

Page 35: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Modelle im Softwareentwurf

MOF: Meta-Object Facility (OMG Standard)

Level M3Meta-Metamodell

Level M2Metamodell

Level M1Modell

Level M0Instanz/Wirklichkeit

beschreibt

beschreibt

beschreibt Instanz von

Instanz von

Instanz vonInstanz von

beschreibt

MOF

UML

Modell einesDame-Spiels

ein Dame-Spiel(z.B. Brettspiel oder

Simulation im Computer)

MOF

(UML)

Petri-Netz einer Ampel

eine Ampel (in Wirklichkeit oder

deren Simulation im Computer)

Metamodell für Petrinetze

Man kann ein Metamodell für Petrinetze in UML beschreiben oder

direkt in MOF. Nehmen wir UML, dann haben wir mehr als vier Meta-

Ebenen.

Begriffe: Metamodell nennen wir das Modell einer Sprache, mit der

sich wiederum weitere Modelle beschreiben lassen.

Die Modelle, die UML und Petrinetze beschreiben sind also Metamodelle. Das Modell eines Damespiels ist demnach kein Modell. Man kann allerdings

argumentieren…

35Software(technik)praktikum: Vorlesung 4

Page 36: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Modelle im Softwareentwurf

„Traditionell“: Mehr oder weniger automatisch: Forward-Engineering Reverse-Engineering Re-Engineering

Model Driven Architecture (MDA) Generierung von (Teilen der)

Software aus Modellen

Modelle sind die Software

36Software(technik)praktikum: Vorlesung 4

Page 37: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

„Traditionell“

Zunächst: Informelle Skizzen zur Diskussion, zum Verständnis und Kommunikation von Ideen und Entwürfen.

Später: Standardisierte (graphische) Notationen.

Aus diesen Diagrammen wurde dann (meist manuell) der Code erzeugt!

37

Forward-Engineering

37Software(technik)praktikum: Vorlesung 4

Page 38: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

„Traditionell“

Da Software oft nicht dokumentiert ist, wurde es nötig, aus existierendem Programmcode die Ideen, die dem Code zugrunde liegen, als Modelle zu extrahieren.

Diese Modelle dienen dem Verständnis der existierenden Software! Auf Ihrer Basis kann die Software geändert und verbessert werden.

Reverse-Engineering

Re-Engineering = Reverse- & Forward-Engineering

38Software(technik)praktikum: Vorlesung 4

Page 39: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Automatisierung

Teilweise lassen sich Reverse- und Forward-Engineering automatisieren (im Wesentlichen Struktur).

Änderungen an durch Reverse-Engineering erstellten Modellen können wieder in den Code übertragen werden.

Roundtrip-Engineering

39Software(technik)praktikum: Vorlesung 4

Page 40: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Musterbasierte Softwareentwicklung

Page 41: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Übersicht

Architekturstile / bzw. Architekturmuster und Entwurfsmuster unterstützen bei der Realisierung von Software

Eclipse und insbesondere das Graphical Editing Framework (GEF) nutzen diese und leiten zu deren richtigen Nutzung an

Ziel dieser Vorlesungseinheit: Wiederholung des bereits gelernten

aus GP2 und SE Anwendung des Model-View-

Controller Architekturstils bei GEF41

GEF: Framework zur Entwicklung von graphischen Editoren und Sichten in der Eclipse Plattform

Wir empfehlen GEF für die Entwicklung der Komponenten

Spielkonfigurator und PC-Beobachter.

Page 42: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Erinnerung: Entwurfsmuster (Design Patterns)

Beschreibungen für wiederkehrende Softwareentwicklungsaufgaben

Sind wiederverwendbare objektorientierte Schemata (Struktur und Verhalten)

Sind erprobt, erhöhen Wartbarkeit, Flexibilität, Adaptierbarkeit, Verständlichkeit, …

Die bekanntesten 23 Entwurfsmuster sind beschrieben in Design Pattern – Elements of Reusable Object-oriented Software, Gamma et al., 1995

42Software(technik)praktikum: Vorlesung 4

Bekannt aus der Vorlesung

Softwareentwurf

Page 43: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Erinnerung: Entwurfsmuster (Design Patterns)

In Eclipse, GEF und der Java-Bibliothek werden zahlreiche Entwurfsmuster verwendet.

Einige Muster nach Gamma et al.: Observer (Beobachten von Änderungen, z.B. in GEF) Adapter (Anpassen der Schnittstelle, z.B. in Eclipse) Command (Kapseln von Änderungen, z.B. in GEF) Singleton (Nur eine Instanz einer Klasse erlauben) Strategy (Umschalten zwischen versch. Algorithmen)

Mehr hierzu in der Vorlesung „Modellbasierte Softwareentwicklung“

im Wintersemester

43Software(technik)praktikum: Vorlesung 4

Nutzen Sie Entwurfsmuster im

Praktikum!

Page 44: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Erinnerung: Architekturstile

Bekannte Architekturstile Schichtenarchitektur Model – View – Controller Web-Service-orientierte Architektur

44

Bekannt aus der Vorlesung

Softwareentwurf

Page 45: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Model-View-Controller

View

Model

:Place

:Transition

:Arc

:Transition

:Place

:Arc

:Arc

:Arc

:Petrinet

:Token

:PlaceEditPart :TransitionEditPart:TransitionEditPart :PlaceEditPart

:GraphEditPart

Controller

45Software(technik)praktikum: Vorlesung 4

Wenn Model & View unabhängig voneinander sind, sind beide leicht änderbar

Fachmodell (Daten) & Funktionen darauf

Darstellung des Modells & Interaktion mit Benutzer

Modelländerung aufgrund Benutzerinteraktion

Aktualisierung der Darstellung nach Modelländerung

Page 46: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

GEF nutzt Model-View-Controller

In GEF: FiguresIn GEF: EObjects

In GEF: EditParts

View

Model

:Place

:Transition

:Arc

:Transition

:Place

:Arc

:Arc

:Arc

:Petrinet

:Token

:PlaceEditPart :TransitionEditPart:TransitionEditPart :PlaceEditPart

:GraphEditPart

Controller

46Software(technik)praktikum: Vorlesung 4

Page 47: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

GEF nutzt MVC

EObjects Figures

EditParts

2. EditPartViewer erstellt Request

Editor

1. Aktion

Command

3. erzeugt

4. modifiziert

5. erzeugt propertyChangeEreignisse

6. aktualisiert

47Software(technik)praktikum: Vorlesung 4

Request

Mehr dazu in unserem Tutorium: Einführung in GEF

Page 48: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Zusammenfassung

Architekturstile / -muster und Entwurfsmuster sind Ihnen bereits aus GP2 und SE bekannt

Im Praktikum sollen Sie Architekturstile / -muster und Entwurfsmuster möglichst häufig nutzen Zum Teil wird deren Einsatz sogar erzwungen (z.B. GEF)

Überlegen Sie beim Entwurf Ihrer Architektur und ihrer Implementierung, ob es für Ihre Entwurfsprobleme bereits bewährte Muster gibt. Wenn ja, nutzen Sie es.

48

Page 49: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Reverse Engineering

49Software(technik)praktikum: Vorlesung 4

Page 50: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Reverse Engineering

Software ... wird heute nicht mehr isoliert eingesetzt muss mit anderer Software interagieren muss oft weiterentwickelt nachdem sie ausgeliefert wurde ist oft schlecht oder gar nicht dokumentiert

Bevor man bestehende Software nutzen oder ändern kann, muss man sie verstehen bzw. rekonstruieren.

50Software(technik)praktikum: Vorlesung 4

Page 51: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Szenario im Praktikum

SWTPra-Teams sollen auf der Messe einen Smartphone-Beobachter von den SoPra-Teams erwerben und erweitern, sodass damit ein Mensch spielen kann

Frage: Worauf sollten SoPra-Teams bei der Erstellung achten? Worauf sollten SwtPra-Teams bei der Auswahl achten?

51

Smartphone- Beobachter

SoPra

Smartphone-Spieler

SWTPra

Auswahlkriterien?

Page 52: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Wartung von Software

Verstehen von Altsoftware ist sehr kostenintensiv

52

[Som12]

Initialentwicklung

Verstehen

Ändern

Kosten der Software über ihren Lebenszyklus

Rebecca Tiarks: What Maintenance Programmers Really Do: An Observational Study

Page 53: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Reverse Engineering

Definition Unter Reverse Engineering versteht man den Prozess, die

einem fertigen (und meist schlecht dokumentierten) Softwaresystem zugrunde liegenden Ideen und Konzepte aufzuspüren und (in Form von Modellen) zu dokumentieren.

Entwicklungsprozess wird „rückwärts“ durchlaufen

Das Ergebnis des Reverse-Engineering ist (im Idealfall) eine Spezifikation des Softwaresystems.

Wichtig: Abstraktion und Konzentration auf das Wesentliche

53Software(technik)praktikum: Vorlesung 4

Page 54: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Werkzeuggestütztes Reverse Engineering

Werkzeuge können das Reverse-Engineering unterstützen!

Aber sie können uns das Abstrahieren und die Auswahl des Wesentlichen nicht abnehmen. Dies ist die Aufgabe des Entwicklers.

Heutige Werkzeuge liefern oft „falsche“ Ergebnisse Diese müssen erkannt und von Hand korrigiert werden

54Software(technik)praktikum: Vorlesung 4

Page 55: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

5555

Vom Code zum Modell

Apublic class A{ private String name; B anAttribute; …

public void doThis() { … } }

B

- name : String

+ doThis() : void

anAttribute

Primitive Datentypen (int, String, …) werden als Attribut in der Klasse dargestellt (hier name), andere Variablen werden als Assoziationen zu den verwendeten Klassen dargestellt (hier B)

55Software(technik)praktikum: Vorlesung 4

Page 56: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

56

Beispiel: Code

public interface Moveable { public void move();}public abstract class Element { ...}public class Track extends Element { private Track next; private Track prev; public Track getNext() { return this.next; } public void setNext(Track value) { if (this.next != value) { if (this.next != null) { Track oldValue = this.next; this.next = null; oldValue.setPrev (null); } this.next = value; if (value != null) { value.setPrev (this); } } } public Track getPrev() { return this.prev; } public void setPrev(Track value) { if (this.prev != value) { if (this.prev != null) { Track oldValue = this.prev; this.prev = null; oldValue.setNext (null); } this.prev = value; if (value != null) { value.setNext (this); } } }}

public class Shuttle extends Element implements Moveable {

private boolean driving; private Track at; private Simulation simulation; public Track getAt() { return this.at; } public void setAt(Track value) { if ((this.at == null && value != null) || (this.at != null && !this.at.equals(value))) { this.at = value; } } public boolean isDriving() { return this.driving; } public void setDriving(boolean value) { this.driving = value; } public Simulation getSimulation() { return this.simulation; } public void setSimulation(Simulation value) { if (this.simulation != value) { if (this.simulation != null) { Simulation oldValue = this.simulation; this.simulation = null; oldValue.removeFromShuttles (this); } this.simulation = value; if (value != null) { value.addToShuttles (this); } } } public void move() { ... }}

public class Simulation { private TreeSet shuttles = new TreeSet(); public void addToShuttles(Shuttle value) { if (value != null) { boolean changed = this.shuttles.add (value); if (changed) { value.setSimulation (this); } } } public Iterator iteratorOfShuttles() { return this.shuttles.iterator (); } public void removeFromShuttles(Shuttle value) { if (value != null) { boolean changed = this.shuttles.remove (value); if (changed) { value.setSimulation (null); } } } public boolean hasInShuttles(Shuttle value) {... } public int sizeOfShuttles() { ... } public void removeAllFromShuttles() { ... }}

Was von diesem Code ist für das Verständnis relevant?

56Software(technik)praktikum: Vorlesung 4

Page 57: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Bsp.: generiertes Klassendiagramm

Simulation

- shuttles: TreeSet

+ addToShuttles(Shuttle) : void+ iteratorOfShuttles() : Iterator+ removeFromShuttles(Shuttle) : void+ hasInShuttles(Shuttle) : boolean+ sizeOfShuttles() : int+ removeAllFromShuttles() : void

Shuttle- driving : boolean- at : Track- simulation : Simulation

+ getAt() : Track+ setAt(Track) : void+ isDriving() : boolean+ setDriving(boolean) : void+ getSimulation() : Simulation+ setSimulation(Simulation) : void+ move() : void

Track- next : Track- prev : Track

+ getNext() : Track+ setNext(Track) : void+ getPrev() : Track+ setPrev(Track) : void

Element

«interface»Movable

+ move() : void

«implements»

57Software(technik)praktikum: Vorlesung 4

Page 58: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Automatisch generierte Diagramme

Problem: Automatisch generierte Modelle und deren Diagramme sind zwar meist syntaktisch korrekt, jedoch noch deutlich verbesserungswürdig Enthalten oft keine Kardinalitäten und Rollen Attribute, Methoden und Assoziationen sind redundant

enthalten Unwichtige Informationen Alle Informationen in einem Diagramm, was sehr

unübersichtlich sein kann

Fazit: Manuelle Nachbearbeitung oftmals notwendig

58Software(technik)praktikum: Vorlesung 4

Page 59: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Beispiel: Ergebnis (Struktur)

Manuell nachbearbeitetes Ergebnis:

Simulation

Shuttle

+ driving : boolean

+ move() : void

Element

«interface»Movable

+ move() : void

«implements»

simulation shuttles

0..1 0..* 0..1

at

Track

prev

next

0..10..1

59Software(technik)praktikum: Vorlesung 4

Page 60: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

60

Nochmal im Vergleich: Code

public interface Moveable { public void move();}public abstract class Element { ...}public class Track extends Element { private Track next; private Track prev; public Track getNext() { return this.next; } public void setNext(Track value) { if (this.next != value) { if (this.next != null) { Track oldValue = this.next; this.next = null; oldValue.setPrev (null); } this.next = value; if (value != null) { value.setPrev (this); } } } public Track getPrev() { return this.prev; } public void setPrev(Track value) { if (this.prev != value) { if (this.prev != null) { Track oldValue = this.prev; this.prev = null; oldValue.setNext (null); } this.prev = value; if (value != null) { value.setNext (this); } } }}

public class Shuttle extends Element implements Moveable {

private boolean driving; private Track at; private Simulation simulation; public Track getAt() { return this.at; } public void setAt(Track value) { if ((this.at == null && value != null) || (this.at != null && !this.at.equals(value))) { this.at = value; } } public boolean isDriving() { return this.driving; } public void setDriving(boolean value) { this.driving = value; } public Simulation getSimulation() { return this.simulation; } public void setSimulation(Simulation value) { if (this.simulation != value) { if (this.simulation != null) { Simulation oldValue = this.simulation; this.simulation = null; oldValue.removeFromShuttles (this); } this.simulation = value; if (value != null) { value.addToShuttles (this); } } } public void move() { ... }}

public class Simulation { private TreeSet shuttles = new TreeSet(); public void addToShuttles(Shuttle value) { if (value != null) { boolean changed = this.shuttles.add (value); if (changed) { value.setSimulation (this); } } } public Iterator iteratorOfShuttles() { return this.shuttles.iterator (); } public void removeFromShuttles(Shuttle value) { if (value != null) { boolean changed = this.shuttles.remove (value); if (changed) { value.setSimulation (null); } } } public boolean hasInShuttles(Shuttle value) {... } public int sizeOfShuttles() { ... } public void removeAllFromShuttles() { ... }}

60Software(technik)praktikum: Vorlesung 4

Page 61: © Fachgebiet Softwaretechnik, Heinz Nixdorf Institut, Universität Paderborn Angebotserstellung Modellbasierte Softwareentwicklung Musterbasierte Softwareentwicklung

© F

achg

ebie

t S

oftw

aret

echn

ik,

Hei

nz N

ixdo

rf I

nstit

ut,

Uni

vers

ität

Pad

erbo

rn

Zusammenfassung

Ausgelieferte Software ist oft schwer zu verstehen und muss oft aufwändig Reverse Engineered werden

Hochwertige Modelle, Dokumente und Code helfen enorm beim Verstehen dieser Software

Ziel sollte es sein, dass Reverse Engineering nicht notwendig ist bzw. möglichst kurz ist

Fazit für das Szenario im Praktikum: Der Smartphone-Beobachter sollten nicht nur funktionsfähig sein, sondern

auch eine erweiterbare Architektur haben, gute dokumentierten Code besitzen und in hochwertige Dokumente beschrieben sein.

61

Smartphone- Beobachter

SoPra

Smartphone-Spieler

SWTPra