31
Objektorientierte Software-Entwicklung Klaus Becker 2006

Objektorientierte Software- Entwicklung Klaus Becker 2006

Embed Size (px)

Citation preview

Page 1: Objektorientierte Software- Entwicklung Klaus Becker 2006

Objektorientierte Software-Entwicklung

Klaus Becker

2006

Page 2: Objektorientierte Software- Entwicklung Klaus Becker 2006

2

Objektorientierte Software-Entwicklung

ProblemAuftrag

Ermittlung der AnforderungenPflichtenheft

(Prototyp)

Entwicklung eines Modells

OO-AnalysemodellOO-Designmodell

Implementierung des Modells

LauffähigesProgramm

Testen des Programms

AuftraggerechtesProdukt

Page 3: Objektorientierte Software- Entwicklung Klaus Becker 2006

3 Teil 1

Software-Entwicklungsprozess

Page 4: Objektorientierte Software- Entwicklung Klaus Becker 2006

4 Vom Problem zum Auftrag

Software-Entwicklung geht in der Regel von einer Problemstellung und einer hieraus resultierenden Zielsetzung aus. Eine Formulierung der Zielsetzung kann auch als Auftrag für einen Entwicklungsprozess aufgefasst werden.

1$ 1$ 1$ 1$1$ 1$ 1$

1$ 1$1

2

3

4

5

631$31$

Auftrag „chuck a luck“: Entwicklung eines Simulationsprogramms, mit dem das Würfelspiel „chuck a luck“ am Rechner gespielt werden kann.

ProblemAuftrag

Page 5: Objektorientierte Software- Entwicklung Klaus Becker 2006

5 Ermittlung der Anforderungen

Zu Beginn eines Software-Entwicklungsprozesses legen die Entwickler gemeinsam mit dem Auftraggeber die Funktionalität des gewünschten Systems fest. Beide Parteien müssen dabei genau vereinbaren, was das zu entwickelnde System leisten soll.

ProblemAuftrag

Ermittlung der AnforderungenPflichtenheft

(Prototyp)

Page 6: Objektorientierte Software- Entwicklung Klaus Becker 2006

6 Prototyp

Ein Prototyp dient dazu, bestimmte Aspekte eines zu entwickelnden Software-Systems vor der Realisierung zu überprüfen. Häufig wird ein Prototyp der Benutzungsoberfläche erstellt. Anhand dieses Prototyps können die Entwickler mit dem Auftraggeber diskutieren, inwieweit dessen Wünsche beachtet und umgesetzt wurden.Prototyp „chuck a luck“: Benutzungsoberfläche, bei der noch keine Funktionalitäten implementiert sind.

Page 7: Objektorientierte Software- Entwicklung Klaus Becker 2006

7 Pflichtenheft

Ein Pflichtenheft ist eine textuelle Beschreibung dessen, was das zu realisierende System leisten soll. Es soll dabei zwei Zielsetzungen erfüllen: Zum einen ist es das „Einstiegsdokument“ in das Projekt für alle, die das System später pflegen und warten sollen, zum anderen soll es den Systemanalytiker in die Lage versetzen, eine objektorientierte Analyse vorzunehmen.

Pflichtenheft „chuck a luck“

/0/ Der Benutzer erhält zu Beginn einen bestimmten Geldbetrag, mit dem er spielen kann.

/1/ Der Benutzer kann eine Zahl auf einem Spielbrett auswählen. Er kann die Wahl dieser Zahl auch korrigieren.

/2/ Der Benutzer kann sämtliche Spielaktionen einzeln auslösen: Einsatz zahlen, Würfel werfen, ...

/3/ Der Spielablauf wird vom System „überwacht“, so dass keine unzulässigen Aktionen möglich sind.

/4/ Sämtliche Spieldaten werden jeweils aktualisiert angezeigt.

/5/ ...

Page 8: Objektorientierte Software- Entwicklung Klaus Becker 2006

8 Objektorientierte Modellierung

Ein komplexeres Software-System muss zunächst entworfen werden, bevor es mit einer Programmiersprache realisiert werden kann. Hierzu werden Modelle des Systems aus unterschiedlicher Blickrichtung erstellt.

ProblemAuftrag

Ermittlung der AnforderungenPflichtenheft

(Prototyp)

Entwicklung eines Modells

OO-AnalysemodellOO-Designmodell

Page 9: Objektorientierte Software- Entwicklung Klaus Becker 2006

9 Objektorientierte Analyse

1$ 1$ 1$ 1$1$ 1$ 1$

1$ 1$1

2

3

4

5

631$31$ Miniwelt

ModellAbbild der Miniwelt

Vorlage für das System

Der Blick richtet sich auf die Struktur der Miniwelt.

Aufgabe der objektorientierten Analyse (kurz: OOA) ist es, die Miniwelt unabhängig von der späteren Implementierung mit Hilfe von Objekten, Klassen sowie deren Beziehungen zu beschreiben. Die Miniwelt wird dabei soweit abstrahiert, dass alle für den Auftraggeber relevanten Bestandteile des Problembereichs abgebildet sind. Das Ergebnis einer OOA ist also eine präzise, abstrahierende Beschreibung der Miniwelt.

Page 10: Objektorientierte Software- Entwicklung Klaus Becker 2006

10 Objektorientiertes Design

System

ModellAbbild der Miniwelt

Vorlage für das System

Der Blick richtet sich auf das zu entwickelnde System.

Aufgabe des objektorientierten Designs (kurz: OOD) ist es, das OOA-Modell zu erweitern und an die Rahmenbedingungen des zu erstellenden Systems anzupassen. Hier werden dann u. a. auch programmiertechnische Details festgelegt wie die genaue Spezifikation der Attribute (Datentypen) und Methoden (Parameter und ihre Datentypen) oder die Anbindung an die Benutzungsoberfläche.

Page 11: Objektorientierte Software- Entwicklung Klaus Becker 2006

11 Objektorientierte Analyse

1$ 1$ 1$ 1$1$ 1$ 1$

1$ 1$1

2

3

4

5

631$31$ Miniwelt

Identifikation der Objekte

spielbrett wuerfelA wuerfelB wuerfelC

zahl = 3 augen = 3 augen = 3 augen = 5

konto

stand = 9

spielmanager

zustand = ...

Zuständigkeit:verwaltet den Spielzustand und erteilt die passenden Aufträge an die Spiel-Objekte

Zuständigkeit:Geldbetrag verwalten

Zuständigkeit:getippte Zahl merken

Zuständigkeit:würfeln

Page 12: Objektorientierte Software- Entwicklung Klaus Becker 2006

12 Objektorientierte Analyse

1$ 1$ 1$ 1$1$ 1$ 1$

1$ 1$1

2

3

4

5

631$31$ Miniwelt

TWuerfelTSpielbrettTKonto

augenzahlstand

werfensetzen(tipp)abheben(betrag)einzahlen(betrag)

TSpielmanager

zustand

einsatzZahlenspielzahlSetzen(zahl)wuerfelWerfengewinnVerbuchen

kennt

kennt

kennt3

Klassenentwurf

Page 13: Objektorientierte Software- Entwicklung Klaus Becker 2006

13 Objektorientiertes Design

System

kontospielmanagerFGUIhat kennt

Anbindung an die GUI

Page 14: Objektorientierte Software- Entwicklung Klaus Becker 2006

14 Objektorientiertes Design

System

Schnittstellenspezifikation

TKonto

– stand: integer

+ create(betrag: integer)+ destroy+ abheben(betrag: integer)+ einzahlen(betrag: int.)+ getStand: integer+ setStand(betrag: integer)

TKonto

stand

abheben(betrag)einzahlen(betrag)

Page 15: Objektorientierte Software- Entwicklung Klaus Becker 2006

15 Implementierung des Modells

Das entwickelte Modell wird mit den Mitteln der gewählten Programmiersprache implementiert.

ProblemAuftrag

Ermittlung der AnforderungenPflichtenheft

(Prototyp)

Entwicklung eines Modells

OO-AnalysemodellOO-Designmodell

Implementierung des Modells

LauffähigesProgramm

Page 16: Objektorientierte Software- Entwicklung Klaus Becker 2006

16 Implementierung des Modells

TKonto

– stand: integer

+ create(betrag: integer)+ destroy+ abheben(betrag: integer)+ einzahlen(betrag: int.)+ getStand: integer+ setStand(betrag: integer)

unit uKonto;interfacetype TKonto = class private stand: integer; public constructor create(startkapital: integer); procedure einzahlen(betrag: integer); procedure abheben(betrag: integer); function getStand: integer; end;

implementation...

Page 17: Objektorientierte Software- Entwicklung Klaus Becker 2006

17 Testen des Programms

Bevor das fertige System an den Auftraggeber abgeliefert werden kann, muss systematisch getestet werden, ob es die gewünschten Anforderungen auch erfüllt. Gegebenenfalls müssen Korrekturen vorgenommen werden.

ProblemAuftrag

Ermittlung der AnforderungenPflichtenheft

(Prototyp)

Entwicklung eines Modells

OO-AnalysemodellOO-Designmodell

Implementierung des Modells

LauffähigesProgramm

Testen des Programms

AuftraggerechtesProdukt

Page 18: Objektorientierte Software- Entwicklung Klaus Becker 2006

18 Testen des Programms

Testprotokoll:

/1/ Der Benutzer hat keine Zahl auf dem Spielfeld ausgewählt. (ok)

/2/ Der Benutzer versucht, mehrfach zu würfeln. (ok)

...

Page 19: Objektorientierte Software- Entwicklung Klaus Becker 2006

19 Prozessdokumentation

ProblemAuftrag

Ermittlung der AnforderungenPflichtenheft

(Prototyp)

Entwicklung eines Modells

OO-AnalysemodellOO-Designmodell

Implementierung des Modells

LauffähigesProgramm

Testen des Programms

AuftraggerechtesProdukt

Genaue Formulierung des Auftrags

Detailliertes Pflichtenheft

Diagramme zur Darstellung der Modelle

Kommentiertes Programm

Testprotokoll

Page 20: Objektorientierte Software- Entwicklung Klaus Becker 2006

20 Werkzeuge zur Unterstützung

ProblemAuftrag

Ermittlung der AnforderungenPflichtenheft

(Prototyp)

Entwicklung eines Modells

OO-AnalysemodellOO-Designmodell

Implementierung des Modells

LauffähigesProgramm

Testen des Programms

AuftraggerechtesProdukt

Textverarbeitung

Textverarbeitung; Entwicklungsumgebung

UML-Editor (z. B. Violet)

Code-Generator (z. B. UMLEd), Entwicklungsumgebung

Entwicklungsumgebung, Textverarbeitung

Page 21: Objektorientierte Software- Entwicklung Klaus Becker 2006

21 Sequentielles Vorgehen

ProblemAuftrag

Ermittlung der Anforderungen Pflichtenheft

(Prototyp)

Entwicklung eines Modells

OO-AnalysemodellOO-Designmodell

Implementier-ung des Modells

LauffähigesProgramm

Testen des Programms

AuftraggerechtesProduktWasserfallmodell

Die Schritte zur Entwicklung der Software werden streng sequentiell – einer nach dem anderen – durchlaufen.In der Praxis ist dieses

Vorgehen kaum einsetzbar, da in späteren Phasen oft Erkenntnisse gewonnen werden, die eine Überarbeitung früher gewonnener Ergebnisse erforderlich machen.

Page 22: Objektorientierte Software- Entwicklung Klaus Becker 2006

22 Iteratives Vorgehen

ProduktVersion 1

Während des Entwicklungsprozesses wird eine Folge von Produktversionen erstellt, wobei die Funktionalität des Software-Produkts fortlaufend erweitert und angepasst wird. Zunächst werden nur die Kernfunktionalitäten des Systems realisiert. Anschließend werden weitere Funktionen sukzessive ergänzt. Dabei werden die sich ergebenden Anforderungen und Rahmenbedingungen mit berücksichtigt.

ProblemAuftrag

ProduktVersion 2

ProduktVersion ...

Page 23: Objektorientierte Software- Entwicklung Klaus Becker 2006

23 Teil 2

Beispiele

Page 24: Objektorientierte Software- Entwicklung Klaus Becker 2006

24 Zielsetzung

Ziel ist es, dass Sie einen gesamten Software-Entwicklungsprozess selbstständig durchlaufen. Sie sollen in kleineren Teams eine etwas komplexere Software entwickeln und den gesamten Prozess gut dokumentieren.

ProblemAuftrag

Ermittlung der AnforderungenPflichtenheft

(Prototyp)

Entwicklung eines Modells

OO-AnalysemodellOO-Designmodell

Implementierung des Modells

LauffähigesProgramm

Testen des Programms

AuftraggerechtesProdukt

Page 25: Objektorientierte Software- Entwicklung Klaus Becker 2006

25 Entwicklungs-Teams

Ein Team besteht aus den an den jeweiligen Tischen sitzenden Personen. Diese müssen gemeinsam ein Software-Produkt entwickeln.

Page 26: Objektorientierte Software- Entwicklung Klaus Becker 2006

26 Entwicklungsauftrag

Als Auftraggeber möchte ich Ihnen zwei Aufträge zur Auswahl stellen:

Simulation eines einfachen Roulette-Spiels / Simulation eines Galton-Bretts

Page 27: Objektorientierte Software- Entwicklung Klaus Becker 2006

27 Roulett

Auftrag:Entwickeln Sie ein Programm zur Simulation eines Roulett-Spiels. Die Simulation kann einfach gehalten werden. Folgende Vereinfachungen könnte man z. B. vornehmen:

- Es gibt nur 8 Felder auf dem Tisch zum Setzen.- Es gibt nur eine Sorte Chips. Es können aber mehrere auf ein Feld gelegt werden. - Ein Chip kann nicht über mehrere Felder gelegt werden.- ...

Page 28: Objektorientierte Software- Entwicklung Klaus Becker 2006

28 Galton-Brett

Auftrag:Entwickeln Sie ein Programm zur Simulation eines Galton-Bretts. Die Simulation sollte zunächst eher einfach gehalten werden. So sollten Sie zunächst auf eine (sicher wünschenswerte, aber schwierig zu realisierende) Visualisierung verzichten.

Page 29: Objektorientierte Software- Entwicklung Klaus Becker 2006

29 Teamarbeit

AuftraggeberDas bin ich.

TeamleitungEine / einer sollte die Koordination des Teams übernehmen. Diese Person sollte insbesondere darauf achten, dass das Produkt fristgemäß erstellt wird und sämtliche Dokumentationsaufgaben erledigt werden.

Arbeit im TeamInnerhalb eines Teams sollte die Arbeit gemeinsam geplant und dann aber arbeitsteilig ausgeführt werden. Beachten Sie: Je genauer Sie sich abstimmen, desto reibungsloser funktioniert das Zusammensetzen der Arbeitsergebnisse.

Page 30: Objektorientierte Software- Entwicklung Klaus Becker 2006

30 Zeitvorgaben

Phase 1: Ermittlung der Anforderungen(bis zur Vormittagspause)beachte: Diese Anforderungen müssen mit dem Auftraggeber abgesprochen werden.

Phase 2: Entwicklung eines Modells(bis zur Mittagspause)beachte: Das Modell sollte dokumentiert werden. Benutzen Sie hierzu das Werkzeug Violet und / oder UMLed

Phase 3: Implementierung des Modells(bis zur Nachmittagspause)

Phase 4: Testen des Programms(bis zur Abendpause)

Page 31: Objektorientierte Software- Entwicklung Klaus Becker 2006

31 Literaturhinweise

Eine Linksammlung zum Thema „Software-Entwicklung“ findet man unter: http://hsg.region-kaiserslautern.de/faecher/inf/material/se/index.php