Software Engineering Softwareentwicklungsmethoden und -modelle Prof. Dr.-Ing. habil. Reiner R. Dumke http://www.smlab.de R. Dumke 2-1
Software Engineering - LV-Inhalt - 3. Softwareentwicklungsmethoden sequentielle und nicht sequentielle Entwicklungsform 4. Softwareentwicklungsmodelle Wasserfallmodell V-Modell Prototyping Spiralmodell inkrementelle Entwicklung evolutionäre Entwicklung agile Entwicklung R. Dumke 2-2
3. Entwicklungsmethoden - Softwareprozesse und deren Ressourcen - R. Dumke 2-3
3. Entwicklungsmethoden - Übersicht - R. Dumke 2-4
3. Entwicklungsmethoden - Probleme -...... Quelle unbekannt R. Dumke 2-5
3. Entwicklungsmethoden - objektorientierte Softwareentwicklung - R. Dumke 2-6
3. Entwicklungsmethoden - - Zählerbeispiel: Problemdefinition- Lieber Systementwickler! Ich liebe es zu zählen. Bitte entwickeln Sie mir ein System, welches mir zu zählen hilft. Ich wünsche zu Inkrementieren und zu Dekrementieren. Ich möchte eine Menge Dinge in verschiedenen Zahlensystemen zählen. Bisher habe ich einen Zähler aus roter Plastik verwendet. Darauf habe ich einen Inkrement-Knopf, einen Dekrement-Knopf und, ach ja, einen Reset-Knopf. Beste Grüße! Der Auftraggeber R. Dumke 2-7
Zunächst alle Substantive: 3. Entwicklungsmethoden - OO-Zählerbeispiel: Anforderungsanalyse - Systementwickler, System, Inkrementieren, Dekrementieren, Menge Dinge, Zähler, rote Plastik, Inkrement-Knopf, Dekrement-Knopf, Reset-Knopf, Grüße, Auftraggeber, verschiedene Zahlensysteme. Systematisiert/klassifiziert: Problemdefinitionskontext: Systementwickler, Auftraggeber, Grüße, Systembeschreibung: System, Zähler, Menge Dinge, rote Plastik, Systemeigenschaften: Inkrementieren, Dekrementieren, Inkrement-Knopf, Dekrement-Knopf, Reset-Knopf, verschiedene Zahlensysteme. Typischer Fehlschluss für ein Objekt: Zähler, welche eine Menge Dinge in verschiedenen Zahlensystemen zählen und zuvor aus roter Plastik waren. Richtiger OO-Ansatz: Zahl, die sich inkrementiert und dekrementiert und die angezeigt wird. R. Dumke 2-8
3. Entwicklungsmethoden - OO-Zählerbeispiel: (Spezifikation) Use-Case-Diagramm - R. Dumke 2-9
3. Entwicklungsmethoden - OO-Zählerbeispiel: (Spezifikation) Sequenz-Diagramm - R. Dumke 2-10
3. Entwicklungsmethoden - OO-Zählerbeispiel: (Entwurf) Layout-Design - Zahl Mein Zaehler zaehlwert anfangswert Inkrement- Dekrement- Reset- Knopf Knopf Knopf anfangswertsetzen inkrementieren dekrementieren Wertanzeige zahlensystemdarstellen R. Dumke 2-11
3. Entwicklungsmethoden - OO-Zählerbeispiel: (Entwurf) Klassen-Diagramm (naive Lösung) - R. Dumke 2-12
3. Entwicklungsmethoden - OO-Zählerbeispiel: (Entwurf) Java-Klassen (java-bezogene Lösung) - R. Dumke 2-13
3. Entwicklungsmethoden - OO-Zählerbeispiel: (Implementation) Klassen Zahl und FrameZahl - public class Zahl { public Zahl() {anfangswert=0; zählwert=0;} public static void anfangswertsetzen() { zählwert = anfangswert; } public static void dekrementieren() { zählwert--; } public static void inkrementieren() { zählwert++;} public static int darstellen (){ /* zunächst nur dezimale Darstellung */ return(zählwert);} public static int anfangswert; public static int zählwert; } import java.awt.event.*; import java.awt.*; /* Generated by Together */ public class FrameZahl extends Frame implements ActionListener { /** * @clientcardinality 1 * @suppliercardinality 1..* * @link aggregation */ Button b1,b2,b3; TextField t; FrameZahl () { super("mein Zähler"); // Zählfenster bezeichnen add(b1=new Button("Reset"), BorderLayout.WEST); b1.addactionlistener(this); //Resetknopf add(b2=new Button("Inkr"), BorderLayout.CENTER); b2.addactionlistener(this); // Inkrementknopf add(b3=new Button("Dekr"), BorderLayout.EAST); b3.addactionlistener(this); //Dekrementknopf add(t=new TextField(), BorderLayout.SOUTH); t.settext("---------------- " + Zahl.darstellen() + " ----------------"); // Zahlanzeige this.enableevents(awtevent.window_event_mask); // Fensterschließung setvisible(); } public void actionperformed(actionevent erg){ if ("Reset".equals(erg.getActionCommand())) {Zahl.anfangswertSetzen();} if ("Inkr".equals(erg.getActionCommand())) {Zahl.inkrementieren();} if ("Dekr".equals(erg.getActionCommand())) {Zahl.dekrementieren();} t.settext("---------------- " + Zahl.darstellen() + " ----------------"); } public static void main(string args[]) { new FrameZahl(); } // Aufruf eines Zählers protected void processwindowevent(windowevent e) { //Fenster-Ereignisse if (e.getid()==windowevent.window_closing) { //behandeln dispose(); // Ressourcen des Fensters freigeben System.exit(0); // Programm beenden } } } R. Dumke 2-14
3. Entwicklungsmethoden - Systemanforderungen in den Entwicklungsphasen - R. Dumke 2-15
3. Entwicklungsmethoden - Webshop-Beispiel: Entwicklerdokumentation - R. Dumke 2-16
3. Entwicklungsmethoden - sequentiell vs. nicht sequentiell - R. Dumke 2-17
4. Entwicklungsmodelle - Softwareprozesse: Vorgehensmodelle- Modellinhalte: Anforderungen: nach Schmietendorf Prinzip/Erfahrung: Vorgehensmodelle begründen sich gemäß einer Softwaresystemklasse und eines Paradigmas für die Entwicklung R. Dumke 2-18
4. Entwicklungsmodelle - Wasserfallmodell - Prinzip/Erfahrung: Anforderungen liegen vollständig vor; Zeit für phasenweise Entwicklung gegeben R. Dumke 2-19
4. Entwicklungsmodelle - V-Modell - Prinzip/Erfahrung: Entwicklungsverfeinerung Bei Systemintegration stufenweise gestestet R. Dumke 2-20
4. Entwicklungsmodelle - evolutionäre Entwicklungsform - Prinzip/Erfahrung: Anforderungen sind unvollständig; Ständige Anwendung/Kundenbewertung notwendig R. Dumke 2-21
4. Entwicklungsmodelle - inkrementelle Entwicklungsform - Prinzip/Erfahrung: bei sehr komplexen Systemen kann der Kunde bereits zeitnah Funktionalitäten verwenden R. Dumke 2-22
4. Entwicklungsmodelle - Prototyping - Prinzip/Erfahrung: Anforderungen müssen noch hinsichtlich Machbarkeit auch in ihrer Realisierung geprüft werden R. Dumke 2-23
4. Entwicklungsmodelle - Spiralmodell - Prinzip/Erfahrung: jede Entwicklungsphase wird Genauestens (auch alternativ)geprüft, bewertet Und dann realisiert R. Dumke 2-24
4. Entwicklungsmodelle - agile Entwicklungsform: Prinzipien - Die höchste Priorität einer agilen Softwareentwicklung ist die frühe Implementation von Software und die damit mögliche frühe Zufriedenstellung des Auftraggebers. Die Software soll in kurzen Zeitintervallen (nur einige Wochen) erstellt werden. Dabei werden jeweils umsetzbare Teilanforderungen berücksichtigt. Das primäre Maß für den Arbeitsfortschritt ist anwendbare Software, die inkrementell eine gewisse Menge von Systemanforderungen bereits realisiert. Auftraggeber und Entwickler sollten täglich den Ergebnisstand auswerten und ggf. Maßnahmen zur Gewährleistung der Validität festlegen. Der beim agilen Entwickeln unbedingt erforderliche Informationsaustausch sollte am besten durch eine Face-to-face-Kommunikation gesichert werden. Die Kunst der Entwicklung besteht vor allem in der Fähigkeit, eine Einfachheit aller Systemkomponenten und Integrationsformen zu gewährleisten. Ein agiles Team erreicht in bestimmten Intervallen durch Reflexion eine höhere Effizienz, wobei sich die Teammitglieder in ihrem Verhalten dem Entwicklungsfortschritt anpassen. nach dem agilen Manifest R. Dumke 2-25
4. Entwicklungsmodelle - agile Praktiken - nach Schmietendorf Prinzip/Erfahrung: Anforderungen sind z. T. unklar; Kunde kann/soll ständig schnell realisiert Programme Nutzen und bewerten (als Validationsprüfung) R. Dumke 2-26
4. Entwicklungsmodelle - agile Modellkomponenten - Prinzip/Erfahrung: kurze Entwicklungssprints (ca. 3 Wochen), tägliche Ergebnisdiskussion R. Dumke 2-27
4. Entwicklungsmodelle - der SCRUM-Prozess - nach Schiel, 2012 Ein Entwicklungsteam wird von einem SCrUM-Master Angeleitet/geführt. R. Dumke 2-28
4. Entwicklungsmodelle - speziell: Wartungsprozess - Prinzip/Erfahrung: Anforderungen erfordern ständige Erweiterung, Anpassung, Korrektur und Verbesserung R. Dumke 2-29
4. Entwicklungsmodelle - speziell: Anwendungsprozess - Prinzip/Erfahrung: Implementation der Anforderungen werden ständig (auf Fehler) geprüft und führen ständig Zur Funktionserweiterung und Anpassung R. Dumke 2-30
Übungsaufgaben - Entwicklungsmodelle - 17. Wiederholen Sie die Schritte und Inhalte einer objektorientierten Softwareentwicklung. 18. Nennen Gründe für eine sequentielle oder nicht sequentielle Softwareentwicklung. 19. Ordnen Sie die Entwicklungsphasen der Verifikation und der Validation zu. 20. Welche Aspekte erweitern/modifizieren das Wasserfallmodell zum V-Modell? 21. Erläutern Sie den Unterschied zwischen evolutionärer und inkrementeller Entwicklungsmodellform. R. Dumke 2-31
Übungsaufgaben - Entwicklungsmodelle - 22. Was intendiert ein Prototyping? Geben Sie den Unterschied zwischen einem horizontalen und vertikalen Prototyping an. 23. Welche Qualitätsaspekte verdeutlicht die Vorgehensweise nach dem Spiralmodell? 24. Welche Spezifika begründen eine agile Softwareentwicklung? 25. Erläutern Sie zwei Managementtechniken der agilen Vorgehensweise. 26. Beschreiben Sie die orthogonalen Phasen zwischen der Softwarewartung und der Softwareanwendung. R. Dumke 2-32