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