4. Design Gliederung: Einführung Anforderungsdefinition Analyse Design

Slides:



Advertisements
Ähnliche Präsentationen
Klassen - Verkettete Liste -
Advertisements

Software Engineering 2 Übung – Konstruktion interaktiver (CASE) Tools SS 2007 Leif Geiger, Carsten Reckord, Software Engineering.
Kapitel 9: Graphdurchlauf
Einführung in die Informatik: Programmierung und Software-Entwicklung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
B-Bäume.
Verteilte Software - Java - Prozedurale Programmierung 1
Threads Richard Göbel.
Java: Dynamische Datentypen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 4. Methodenentwurf Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 Gliederung 1. Einführung 2. Objektdiagramme zur Analyse von Beispielen 3. Methodenentwurf.
3. Klassendiagramme in Java implementieren
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Use Case Driven Software Development
3. Analyse Gliederung: Einführung Anforderungsdefinition
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Christian, Leif, Carsten, AlbertCodeGen2 – Template- und Modellbasierte Codegenerierung 1 CodeGen2 Template- und Modellbasierte Codegenerierung für Fujaba.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 GUI Konstruktion: 1. Entwurf mit Papier und Bleistift / Post Ist 2. Eventuell.
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 1 6. Tipps, Tricks, Idiome Gliederung: 1. Einführung 2. Anforderungsdefinition 3.
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 1 Objektorientierte Vererbung Student erbt von Person: extensional: Menge der Studenten.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Projektplan: m : Anforderungsanalyse Dokument m :
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Objektorientierte Vererbung
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 1 4. Design Gliederung: 1. Einführung 2. Anforderungsdefinition 3. Analyse 4. Design.
1 Reverse Engineering WS 07 / 08 A. Zündorf. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University 2 Organisatorisches.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Reverse Engineering 1 Reverse Engineering WS 04 / 05 A. Zündorf.
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 1 4. Design Gliederung: 1. Einführung 2. Anforderungsdefinition 3. Analyse 4. Design.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Baustein- vs. Funktionsorientierte Organisation.
Model Driven Engineering SS 10 Prof. Albert Zündorf Fachgebiet für Software Engineering Wilhelmshöher Allee Kassel (Raum 1339)
Model Driven Engineering SS 10 Prof. Albert Zündorf Fachgebiet für Software Engineering Wilhelmshöher Allee Kassel (Raum 1339)
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 4. Methodenentwurf Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von.
Programmiermethodik SS2009 © 2009 Albert Zündorf, University of Kassel 1 Gliederung 1. Einführung 2. Objektdiagramme zur Analyse von Beispielen 3. Methodenentwurf.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Model Driven Engineering SS 10 Prof. Albert Zündorf Fachgebiet für Software Engineering Wilhelmshöher Allee Kassel (Raum 1339)
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Baustein- vs. funktionsorientierte Organisation.
Entwurfsmuster – Iterator
Einführung in die Programmierung Datensammlung
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Model Driven Engineering SS 10 Prof. Albert Zündorf Fachgebiet für Software Engineering Wilhelmshöher Allee Kassel (Raum 1339)
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 4. Methodenentwurf Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik WS 200^8 Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 2 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
2. Zustandsorientiertes Modellieren 2.1 Einfachauswahl
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
6. Story Driven Modeling Gliederung: Einführung
Arrays of Objects, a 3 part process
Programmentwurf: Beispiel auf Anwendungsebene anschauen
 Präsentation transkript:

4. Design Gliederung: Einführung Anforderungsdefinition Analyse Design Klassendiagramme Regel-Diagramme <== Zetteltests Validierung Zusammenfassung Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Beispiel: Objektspiel Spielstein raussetzen Main Memory Objects Rule Diagram / Program Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

The FAMous Fujaba Abstract Machine (Teil 1) Der Befehlssatz: in den Objekten werden Kommandos / Nachrichten von vergesslichen „Object Guys“ abgearbeitet Object Guys schlafen normaler weise beim Aufwachen wird die Umgebung wird vom „Nebel des Vergessens“ verschleiert Object Guys sehen nicht was die anderen tun Jeder Object Guy hat eigenen „Namensraums“ Object Guy hat „Handlungsanweisungen“ für jedes mögliche Komando Immer ein Object Guy pro Nachricht Object Guy kann: Kanten lesen und lokale Namen für Nachbarn vergeben Attribute lesen und prüfen temporäre Werte notieren Berechnungen durchführen Nachrichten verschicken (wartet (untätig) auf Antwort) Antworten zurückschicken (und wieder einschlafen) Attribute schreiben Kanten löschen / erzeugen Objekte löschen / erzeugen Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagrams: graphische Notation für Befehle der Fujaba Abstract Machine Main Memory Objects Rule Diagram / Program benenne this lese gehoert Link; benenne meinSp lese hat; benenne seinWuerfel prüfe augenzahl == 6 lese ist_Startfeld_von, benenne seinStart lese steht_in; benenne meinHeim lösche ist_Startfeld_von erzeuge steht_auf Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Fujaba Abstract Machine Teil 2: Zetteltest Main Memory Objects Rule Diagram / Program this meinHeim meinSp seinStart steht auf seinWuerfel Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagram Syntax: benennen  Objektkasten: class Spielstein { ... public void raussetzen () { Heimatfeld meinHeim = null; Spieler meinSp = null; Feld seinStart = null; Wuerfel seinWuerfel = null; . . . benennen: Objekttyp mit angeben ungebundene Objekte werden zu gebundenen Objekten, unbekannte Objekte werden bekannt Namen benutzen: ohne Objekttyp ACHTUNG: bei [failure] des Vorgängerschritts wurden eventuell nicht alle Variablen gebunden ! Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagram Syntax: lese Link  Link: bei zu-1 Links von bekanntem Objekt zu unbekanntem Objekt - get-Methode verwenden - Erfolg prüfen: meinSp = this.getGehoert (); if (meinSp != null) { .... oder try { ... meinSp = this.getGehoert (); JavaSDM.ensure ( meinSp != null ); ... } catch (SDMException e) { sdmSuccess = false } ... danach ist der Name zugewiesen Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Hilfsmethode JavaSDM.ensure class JavaSDM { public static void ensure (boolean expr) if (expr == false) throw new SDMException (); } Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagram Syntax: lese Link  Link: bei zu-n Links von bekanntem Objekt zu unbekanntem Objekt - iteratorOf-Methode verwenden - while Schleife bis zum Erfolg: sdmSuccess = false; ... Iterator iter = meinSp.iteratorOfSteine (); while ( !(sdmSuccess) && iter.hasNext () ) { try { stein2 = (Spielstein) iter.next (); JavaSDM.ensure ... // prüfen ob es der richtige ist sdmSuccess = true; } catch (SDMException e) { } } // while Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagram Syntax: prüfe Attributwert  Attributbedingung: sdmSuccess = false; ... try { ... seinWuerfel = meinSp.getHat (); JavaSDM.ensure ( seinWuerfel != null); JavaSDM.ensure ( seinWuerfel.getAugenzahl == 6); ... } catch (SDMException e) { } Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagram Syntax: prüfe Link zwischen gebundenen (schon benannten) Objekten  Link: Link zwischen gebundenen Objekten: JavaSDM.ensure ( meinSp.getHat () == seinWuerfel); oder bei zu-n Link: JavaSDM.ensure ( x.hasInNeighbours (y)); prüfe allgemeinen Constraint:  Prüfung JavaSDM.ensure ( meinSp.noOfSteine() < w.getAugenzahl() ); Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagram Syntax: prüfe kein Nachbar da  negatives Objekt: kollege = seinStart.getBewohner(); JavaSDM.ensure ( ! (kollege.getGehoert() == meinSp)) prüfe kein Link da  negativer Link: JavaSDM.ensure ( (x.getGehört() != meinSp)) Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagram Syntax: x :C next > x :C1 y :C2 others :C3 benenne wenn möglich  optionales Objekt: lese/prüfe Link wenn möglich  optionaler Link: benenne alle Nachbarn  Mengenobjekt : x :C next > x :C1 y :C2 others :C3 Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagram Syntax: loesche Objekt  <<destroy>>: gegener.removeYou() loesche Link  <<destroy>>: this.setStehtIn (null); erzeuge Objekt  <<create>>: neuStein = new SpielStein (); erzeuge Link  <<create>>: this.setStehtAuf (seinStart); setze Attributwert  augenzahl := 0: w.setAugenzahl (0); nachricht m1()   1: m1() meinSp.naechsterSpieler(); Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Syntax: Overview Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagrams: Kontrollfluss Activities start activity stop activities rule acitivities code activities branch activities Transitionen ohne Guard [success] [failure] [boolean condition] [else] Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel http://www.se.eecs.uni-kassel.de/se/fileadmin/se/courses/MSE/download/fujaba/FujabaTutorialStoryDrivenModeling.ppt

Rule Diagrams: for-each Activities this this lhome looser at lostCounter noPos noPos noPos Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagrams: for-each Activities class Game { public void collectThrownCounters () { . . . Iterator looserIter = this.iteratorOfPlayers(); while (!sdmSuccess && looserIter.hasNext()) { try { sdmSuccess = false; looser = looserIter.next (); lhome = looser.getHome (); JavaSDM.ensure (lhome != null); countersIter = looser.iteratorOfCounters (); while (!sdmSuccess && countersIter.hasNext()) { try { lostCounter = countersIter.next (); JavaSDM.ensure (lostCounter.getAt() == null); sdmSuccess = true; lostCounter.setAt (lhome); } catch (SDMException e) {} } // while } catch (SDMException e) {} } // while Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagrams: for-each Activities doppelte Activity Box anwenden so oft wie möglich [each time] transition für zusätzliche Aktionen für jeden Match [end] transition nach Abbruch [end] Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Rule Diagrams: for-each Activities class Game { public void collectThrownCounters () { . . . Iterator looserIter = this.iteratorOfPlayers(); while (!sdmSuccess && looserIter.hasNext()) { try { sdmSuccess = false; looser = looserIter.next (); lhome = looser.getHome (); JavaSDM.ensure (lhome != null); countersIter = looser.iteratorOfCounters (); while (!sdmSuccess && countersIter.hasNext()) { try { lostCounter = countersIter.next (); JavaSDM.ensure (lostCounter.getAt() == null); sdmSuccess = true; lostCounter.setAt (lhome); } catch (SDMException e) {} } // while } catch (SDMException e) {} } // while [end] Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel

Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel