Handout

Werbung
Softwaretechnik
M. Jakob
Gymnasium Pegnitz
15. März 2016
Inhaltsverzeichnis
Grundlagen der Projektorganisation
Entwurfsmuster
Allgemeines
Adaptermuster
Kompositum
Beobachtermuster
model-view-controller-Muster
Praktische Softwareentwicklung
Profi GUI für Graphen
Simulation eines Rangierbahnhofes
Softwaretechnik
Grundlagen der Projektorganisation
Gründe der Projektorganisation
Große Projekte müssen perfekt organisiert sein. Gründe:
I
Die Anforderungen des Auftraggebers müssen erfüllt
werden,
I
die Ressourcen (Geld, Zeit, Material . . . ) müssen eingeteilt
werden,
I
es sind viele Personen beteiligt, die nicht ständig zur
Verfügung stehen,
I
das Projekt dauert Jahre und muss gewartet werden.
3/44 ( Version 15. März 2016)
Softwaretechnik
Grundlagen der Projektorganisation
Strategien der Projektorganisation
Um komplexe Projekte durchführen zu können, benötigt man
eine passende Strategie. Man unterscheidet je nachdem ob die
Anforderungen bekannt und stabil sind oder nicht statische und
dynamsiche Strategien.
4/44 ( Version 15. März 2016)
Softwaretechnik
Grundlagen der Projektorganisation
Beispiel: Statische Strategie
I
Der Auftraggeber stellt die Anforderungen in einem
Lastenheft dar.
I
Der Auftragnehmer beschreibt im Pflichtenheft, wie er die
Anforderungen erfüllen will.
Akzeptiert der Auftragnehmer das Pflichtenheft wir das
Projekt umgesetzt, und zwar
I
I
I
I
nach einem standardisierten Ablauf (z.B. Wasserfallmodell)
durch Zerteilen des Projektes in Teilprojekte mit klarer
Schnittstellendefinition,
durch Festlegung von Meilensteinen,
5/44 ( Version 15. März 2016)
Softwaretechnik
Grundlagen der Projektorganisation
Beispiel: Statische Strategie — Das Wasserfallmodell
Das Wasserfallmodell
hilft bei der Umsetzung
größerer Projekte. Die
Produktentwicklung wird in
mehrere Phasen unterteilt.
Jede Phase muss
abgeschlossen sein, bevor
die nächste begonnen wird.
Der Projektleiter koordiniert
den gesamten
Arbeitsablauf.
Teamsprecher organisieren
die Arbeit in den einzelnen
Gruppen.
6/44 ( Version 15. März 2016)
Softwaretechnik
Grundlagen der Projektorganisation
Zentrale Nachteile statischer Strategien
I
Das Ergebnis entspricht möglicherweise nicht den
tatsächlichen Erfordernissen weil im Lastenheft
Anforderungen übersehen wurden, oder sich die
Anforderungen geändert haben.
I
Möglicherweise unnötiger und sehr großer
Planungsaufwand.
7/44 ( Version 15. März 2016)
Softwaretechnik
Grundlagen der Projektorganisation
Dynamische Strategien
Sie begegnen dem Nachteil der statischen Strategien, indem
sie versuchen, die reine Entwurfsphase auf ein Mindestmaß zu
reduzieren und im Entwicklungsprozess so früh wie möglich zu
ausführbarer Software zu gelangen, die dann in regelmäßigen,
kurzen Abständen dem Kunden zur gemeinsamen Abstimmung
vorgelegt werden kann. Auf diese Weise soll es jederzeit
möglich sein, flexibel auf Kundenwünsche einzugehen, um so
die Kundenzufriedenheit insgesamt zu erhöhen.
8/44 ( Version 15. März 2016)
Softwaretechnik
Grundlagen der Projektorganisation
Zentraler Nachteil dynamsicher Strategien
Ein planvolles Handeln findet kaumt statt, es werden nur
halbwegs taugliche Lösungen geliefert (Gefahr der
„Flickschusterei“)
9/44 ( Version 15. März 2016)
Softwaretechnik
Grundlagen der Projektorganisation
Übungen
• Ü 1.1: Projektstrategien im Alltag
Nachfolgende sind mehrere Projekte des Alltags angegeben. Strukturiere jedes der
Projekte mit einer statischen und eine dynamischen Strategie, erläutere die Vor- und
Nachteile und beurteile, welche Strategie geeigneter ist.
1. Herstellen einer Sitzgelegenheit für 10 Personen
2. Bestehen des Schuljahres
3. Sicherung der familiären Ernährungslage für einen Monat
10/44 ( Version 15. März 2016)
In diesem Abschnitt
Entwurfsmuster
Allgemeines
Adaptermuster
Kompositum
Beobachtermuster
model-view-controller-Muster
Softwaretechnik
Entwurfsmuster
Allgemeines
Entwurfsmuster
Alltagsbeispiele
I Essens-Schema: Vorspeise - Hauptspeise - Nachtisch
I Witze-Schema: „zuerst-dann-als letztes“-Aufbau
I Werbe-Schema: Aufmerksamkeit erwecken - Bedürfnis
schaffen - Lösung anbieten
I Kompositions-Schema: Tonika - Subdominante Dominante
I Schema-Schema: 1-2-3-Schema
Entwurfsmuster
helfen bei der Strukturierung der Klassen in der Entwurfsphase,
weil sie gut durchdachte Lösungsschemata für immer wieder
vorkommende Standardsituationen anbieten. Dadurch wird die
Übersicht verbessert und Entwicklungsfehler vermieden.
12/44 ( Version 15. März 2016)
In diesem Abschnitt
Entwurfsmuster
Allgemeines
Adaptermuster
Kompositum
Beobachtermuster
model-view-controller-Muster
Softwaretechnik
Entwurfsmuster
Adaptermuster
Adaptermuster
Alltagsbeispiele: Adapterstecker, Geld
Adaptermuster
. . . nutzen und ergänzen
vorhandene Klassen und
bieten der darüber
liegenden Ebene eine
einheitliche Schnittstelle. So
kann flexibel auf spätere
Erweiterungen und
Korrekturen reagiert
werden.
14/44 ( Version 15. März 2016)
In diesem Abschnitt
Entwurfsmuster
Allgemeines
Adaptermuster
Kompositum
Beobachtermuster
model-view-controller-Muster
Softwaretechnik
Entwurfsmuster
Kompositum
Kompositum
Das Kompositum
. . . wird verwendet, wenn
Gruppen von Objekten das
gleiche Verhalten zeigen
sollen wie einzelne Objekte.
16/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Kompositum
Beispiel 1 — Baumstruktur als Kompositum
17/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Kompositum
Beispiel 2 — Grafische Oberfläche bei Java Swing
18/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Kompositum
Beispiel 2 — Grafische Oberfläche bei Java Swing
19/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Kompositum
Beispiel 2 — Implementation
1
2
3
4
5
6
// Blatt - Objekte erzeugen
JTable tabelle = new JTable ();
JTextField textFeld = new JTextField ("
Textfeld ");
JButton button1 = new JButton (" Knopf 1");
JButton button2 = new JButton (" Knopf 2");
JButton button3 = new JButton (" Knopf 3");
7
8
9
10
// Kompositum - Objekte erzeugen
JPanel containerRechts = new JPanel ();
JPanel containerUnten = new JPanel ();
20/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Kompositum
Beispiel 2 — Implementation
1
2
3
4
5
6
// Struktur aufbauen
containerRechts .add ( textFeld );
containerRechts .add ( containerUnten );
conatinerUnten .add ( button1 );
conatinerUnten .add ( button2 );
conatinerUnten .add ( button3 );
7
8
9
10
11
// in das Fenster einhängen
JFrame zeichenfenster = new JFrame ( "
Zeichenfenster " );
frame .add ( tabelle );
frame .add ( containerRechts );
21/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Kompositum
Übersicht Swing-Komponenten
22/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Kompositum
Übung
• Ü 2.1: Java.swing inspizieren
http://www.java-tutorial.org/jframe.html
• Ü 2.2: ProfiGUI_1
• Ü 2.3: ProfiGUI_2
23/44 ( Version 15. März 2016)
In diesem Abschnitt
Entwurfsmuster
Allgemeines
Adaptermuster
Kompositum
Beobachtermuster
model-view-controller-Muster
Softwaretechnik
Entwurfsmuster
Beobachtermuster
Beobachtermuster
Grundprinzip
Einem Informanten stellt registrierten Nutzern einheitliche
Informationen zur Verfügung. Die Nutzer werden
benachrichtigt, wenn neue Informationen vorhanden sind. Im
pull-Verfahren holen die Nutzer die Informationen selbstständig
beim Informanten ab, im push-Verfahren werden alle
Informationen vom Informanten an alle Nutzer weitergegeben.
25/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Beobachtermuster
Alltagsbeispiele
Zeitungsabonnement push-Verfahren
Unterrichtsstunde push-Verfahren (bei Lehrer J.)
Newsletter pull- und push-Verfahren
26/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Beobachtermuster
Beobachtermuster (Grundprinzip)
Beobachtungsmuster . . .
. . . halten, die Kommunikation zwischen einem Erzeuger von
Information (Informaten) und den Interessenten an dieser
Information (Beobachter) offen und flexibel.
Der Informant bietet ein Interface an, das Interessenten nutzen
können. Dazu müssen sich die Beobachter beim Informanten
registrieren lassen.
Die Beobachter müssen ihrerseits garantieren, dass sie alle
Botschaften des Informanten verstehen.
27/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Beobachtermuster
Beobachtermuster
• Beispiel Unterricht
28/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Beobachtermuster
Beispiel 1: Newsletter
29/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Beobachtermuster
Vorteile von Beobachtermustern
I
Neue Beobachter können jederzeit hinzugefügt werden,
ohne dass der Informant geändert werden muss.
I
Beobachter und Informant können unabhängig
voneinander wiederverwendet werden.
I
Informant und Beobachter können beliebig geändert
werden, so lange ihr Interface gleich bleibt.
30/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Beobachtermuster
Nachteile von Beobachtermustern
I
Gibt es viele Beobachter, kann die Benachrichtigung durch
den Informanten sehr zeitaufwändig werden.
I
Jeder Beobachter wird mit der gleichen Information
versorgt auch wenn er gar nichts oder nur Teile davon
benötigt. (Beispiele: Newsletter, Werbung)
31/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Beobachtermuster
Beispiel 2: Eventhandling in Java
I
Informant: Swing-Komponenten (Schaltflächen, Buttons,
etc.)
I
Beobachter: Sie werden Listener genannt, können sich bei
den Swing-Kompnenten registrieren (Jeder Swing-Button
erbt von AbstractButton Methoden zum An- und
Abmelden von Listenern).
I
Findet ein Event an einer Swing-Komponente statt (z.B. ein
Mausklick), so werden alle registrierten Listener von dieser
Swing-Komponenten über das Ereignis benachrichtigt.
I
Die Listener müssen die Methode
actionPerformed(ActionEvent) implementieren, in der
festgelegt wird, wie auf das Ereignis reagiert werden soll.
32/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Beobachtermuster
Beispiel 2: Eventhandling in Java
1
2
3
4
...
// Button erzeugen
JButton knopf = new JButton (" Klick mich");
fenster .add(knopf );
5
// Listener registrieren
7
knopf . addActionListener (
8
new ActionListener () {
9
public void actionPerformed (
ActionEvent e){
10
System .out. println (" geklickt : " + e
. getActionCommand ());
11
}
12
}
13
);
33/44 ( Version 15. März 2016)
6
Softwaretechnik
Entwurfsmuster
Beobachtermuster
Beispiel 2: Eventhandling in Java
Beachte
Die runde Klammer in Zeile 6 wird erst in Zeile 12 geschlossen.
D.h. der Methode addActionListerer wird eine Klasse
übergeben, die hier erst definiert wird.
Alternativ könnte für die Zeile 7 – 11 eine eigene Klasse erstellt
werden. Aber wer will schon für 50 oder 100 Events eigene
Klassen erstellen.
34/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
Beobachtermuster
• Ü 2.4: ProfiGUI_3
35/44 ( Version 15. März 2016)
In diesem Abschnitt
Entwurfsmuster
Allgemeines
Adaptermuster
Kompositum
Beobachtermuster
model-view-controller-Muster
Softwaretechnik
Entwurfsmuster
model-view-controller-Muster
model-view-controller-Muster (MVC)
Das model-view-controller-Muster (MVC)
basiert auf der klaren Trennung von
Modell funktionalem Kern des Systems
View Darstellung der Daten einschließlich Ein- und
Ausgabefelder sowie Buttons
Controller Entgegennahme und Verarbeitung der
Benutzereingaben
I
View und Controller bilden zusammen das
Benutzerinterface (UserInterface) und sind wechselseitig
voneinander abhängig.
I
View und Modell werden oft nach dem
Beobachtungsmuster entwickelt wobei der View als
Beobachter agiert.
37/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
model-view-controller-Muster
Zusammenspiel der Komponenten
38/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
model-view-controller-Muster
MVC-Klassendiagramm
39/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
model-view-controller-Muster
Anwendungen
I
Graphical-User-Interface (GUI)-Programmierung
(Verwendung von MVC-Muster war der entscheidende
Schritt)
I
Verschiedene Endgeräte (Computer, Handy, ipad) nutzen
gleiches Programm (E-Mail)
I
Nutzung verschiedener Web-Browser
40/44 ( Version 15. März 2016)
Softwaretechnik
Entwurfsmuster
model-view-controller-Muster
Vorteil des MVC-Musters
Vorteil des MVC-Musters
I
spätere Änderungen oder Erweiterungen werden
erleichtert,
I
die Wiederverwendbarkeit der einzelnen Komponenten
wird ermöglicht.
41/44 ( Version 15. März 2016)
In diesem Abschnitt
Praktische Softwareentwicklung
Profi GUI für Graphen
Simulation eines Rangierbahnhofes
In diesem Abschnitt
Praktische Softwareentwicklung
Profi GUI für Graphen
Simulation eines Rangierbahnhofes
Herunterladen