Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 4. Methodenentwurf Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von.

Slides:



Advertisements
Ähnliche Präsentationen
Developing your Business to Success We are looking for business partners. Enterprise Content Management with OS|ECM Version 6.
Advertisements

Einführung in die Informatik: Programmierung und Software-Entwicklung
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Vorteile der Online-Produkte
Telefonnummer.
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
-17 Konjunkturerwartung Europa September 2013 Indikator > +20 Indikator 0 a +20 Indikator 0 a -20 Indikator < -20 Europäische Union gesamt: +6 Indikator.
Kapitel 4 Syntaktische Analyse: LR Parsing.
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Betreuerin: Kathleen Jerchel
Differentieller Stromverstärker
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.
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 GUI Konstruktion: 1. Entwurf mit Papier und Bleistift / Post Ist 2. Eventuell.
4. Design Gliederung: Einführung Anforderungsdefinition Analyse Design
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 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
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.
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.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Baustein- vs. Funktionsorientierte Organisation.
Schieferdeckarten Dach.ppt
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)
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
Die Geschichte von Rudi
SK / , , in Hochkössen und der Wildschönau flow Ski- und Snowboardschule Intersport Menzel.
Eine Einführung in die CD-ROM
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
PROCAM Score Alter (Jahre)
PARTENARIAT ÉDUCATIF GRUNDTVIG PARTENARIAT ÉDUCATIF GRUNDTVIG REPERES KULTURELLER ZUSAMMENHALT UND AUSDEHNUNG DER IDEEN AUF EUROPÄISCHEM.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Analyseprodukte numerischer Modelle
Pigmentierte Läsionen der Haut
Basisdokumentation Erhebungszeitraum Rehabilitationsträger Zuweiser
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Bildergalerie PRESEASON CAMP Juni 2014 Romanshorn Get ready for the Season!
Es war einmal ein Haus
1.6.3 Test auf Verlustfreiheit (Verbundtreue) (4|10)
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Programmiermethodik SS2011 © 2011 Albert Zündorf, University of Kassel 1 Programmentwurf: 1. Beispiel auf Anwendungsebene anschauen 2. Beispiel in Objektdiagrammen.
6. Story Driven Modeling Gliederung: Einführung
Programmentwurf: Beispiel auf Anwendungsebene anschauen
 Präsentation transkript:

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 4. Methodenentwurf Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von Beispielen 3. Klassendiagramme in Java implementieren 4. Methodenentwurf 5. Test-First Prinzip 6. Story Driven Modeling 7. Zusammenfassung

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 2 StudyRight with Assignments

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 3 StudyRight with Assignments: Example

Modellierung Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 4

5 Herausforderungen: m allgemein(gültig)es Verhalten m Perspektivwechsel m Modellwahl m Lokalisierung / Zuschnitt der Funktionalitäten m Algorithmus konstruieren

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 6 Perspektivwechsel doAssignments() :

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 7 Perspektivwechsel doAssignments() : Student motivation = credits = done = points = in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 8 Perspektivwechsel : Room topic = credits = duties = students = doAssignments() : Student motivation = credits = done = points = in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 9 Perspektivwechsel : Room topic = credits = duties = students = a1 : Assingment topic = "integrals" points= 5 a2 : Assingment topic = "functions" points= 5 a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = credits = done = points = in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 10 Perspektivwechsel : Room topic = credits = duties = students = : Assignment topic = points = a2 : Assingment topic = "functions" points= 5 a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = credits = done = points = in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 11 Perspektivwechsel : Room topic = credits = duties = students = : Assignment topic = points = 5 a2 : Assingment topic = "functions" points= 5 a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = credits = done = points = in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 12 Perspektivwechsel : Room topic = credits = duties = students = : Assignment topic = points = 5 a2 : Assingment topic = "functions" points= 5 a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = 214 credits = done = points = 0 in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 13 Perspektivwechsel : Room topic = credits = duties = students = : Assignment topic = points = 5 a2 : Assingment topic = "functions" points= 5 a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = 209 credits = done = points = 5 in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 14 Perspektivwechsel : Room topic = credits = duties = students = : Assignment topic = points = 5 a2 : Assingment topic = "functions" points= 5 a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = 209 credits = done = points = 5 in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 15 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 a2 : Assingment topic = "functions" points= 5 a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = 209 credits = done = points = 5 in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 16 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 : Assignment topic = points = a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = 209 credits = done = points = 5 in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 17 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 : Assignment topic = points = 5 a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = 209 credits = done = points = 5 in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 18 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 : Assignment topic = points = 5 a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = 204 credits = done = points = 10 in =

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 19 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 : Assignment topic = points = 5 a3 : Assingment topic = "FFT" points= 10 doAssignments() : Student motivation = 204 credits = done = points = 10 in =

doAssignments() : Student motivation = 204 credits = done = points = 10 in = Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 20 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 : Assignment topic = points = 5 : Assignment topic = points =

doAssignments() : Student motivation = 204 credits = done = points = 10 in = Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 21 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 : Assignment topic = points = 5 : Assignment topic = points = 10

doAssignments() : Student motivation = 194 credits = done = points = 20 in = Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 22 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 : Assignment topic = points = 5 : Assignment topic = points = 10

doAssignments() : Student motivation = 194 credits = done = points = 20 in = Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 23 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 : Assignment topic = points = 5 : Assignment topic = points = 10

doAssignments() : Student motivation = 194 credits = done = points = 20 in = Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 24 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 : Assignment topic = points = 5 : Assignment topic = points = 10

doAssignments() : Student motivation = 194 credits = 17 done = points = 0 in = Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 25 Perspektivwechsel : Room topic = credits = 17 duties = students = : Assignment topic = points = 5 : Assignment topic = points = 5 : Assignment topic = points = 10

Objektspielprotokoll wird Algorithmusentwurf: 1. go to room 2. get first / next assignment 3. get points 4. add to student's points, reduce motivation 5. not enough points for credits of current topic? 6. yes: goto 2 7. no: turn in points. Get credits. Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 26

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 27 Alleine: Objektspiel mit Fog of oblivion r1 : Room topic = "math" credits = 17 a3 : Assignment topic = "integrals" points = 5 a4 : Assignment topic = "functions" points = 5 a5 : Assignment topic = "FFT" points = 10 s2 : Student motivation = 214 credits = 0 points = 0 duties in

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 28

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 29 Methodenentwurf: 1. Szenario auf Anwendungsebene formulieren 2. Szenario in Objektdiagrammen / Story Boards modellieren 3. Funktionsumfang zuschneiden / Funktion lokalisieren 4. Test programmieren 5. "Dreisprung": 1. generellen Kontrollfluss auf Anwendungsebene skizzieren 2. generelles Verhalten auf Objektebene skizzieren 3. allgemeines Verhalten programmieren 6. programmiertes Verhalten am Ausgangsbeispiel testen 7. programmiertes Verhalten an alternativen Beispielen testen

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel generellen Kontrollfluss auf Anwendungsebene skizzieren

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 31

2. generelles Verhalten auf Objektebene skizzieren 1. go to room 2. get first / next assignment 3. get points 4. add to students point, reduce motivation 5. not enough points for credits of current topic? 6. yes: goto 2 7. no: turn in points. Get credits. Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 32

allgemeines Verhalten programmieren class Student { public void doAssignment() { Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 33

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 34

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 35 Top Down / Bottom Up / Jojo / Iterativ m Top Down: l erst komplexe Methoden entwerfen l dabei Hilfsmethoden erfinden l dann Hilfsmethoden mit Hilfshilfsmethoden bauen usw. m Bottom Up l Erst Hilfshilfsmethoden bauen l dann damit Hilfsmethoden bauen l dann damit die komplexen

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 36 Top Down / Bottom Up/ Jojo / Iterativ m Jojo l ein bischen von oben ein bischen von unten m Iterativ l irgendwo anfangen l möglichst früh ausführbare Teile bauen l möglichst früh einzelne komplexe Methoden bauen l möglichst früh testen und praktisch einsetzen

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse von Beispielen 3. Klassendiagramme in Java implementieren 4. Methodenentwurf 5. Test-First Prinzip 6. Story Driven Modeling 7. Zusammenfassung

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel Test-First Prinzip Test First aus dem eXtreme Programming: 1. als erstes Test bauen 2. Methode realisieren bis Test läuft 3. noch ein Test zu der Methode 4. Methode verfeinern bis Test läuft 5. wenn noch ein Szenario vorstellbar gehe zu sonst fertig

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel Test-First Prinzip Warum Test-First: m effizienteres Debuggen l reproduzierbare Programmläufe l schnelle Testwiederholung ohne manuelle Eingaben m Design for Test: l bei nachträgliches Testen fehlen oft wichtige Zugriffe auf Interna l dadurch schwerer l und am Ende fehlt immer die Zeit zum Testen m Stabilität für iteratives Vorgehen l fertige Funktionalität geht nicht wieder verloren l Sicherheit bei Änderungen / Erweiterungen l Wartungsfehler werden sofort entdeckt

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel Test-First Prinzip Warum Test-First: m iteratives Vorgehen führt meist zu robuster Kernfunktionalität m frühe Kundendemo / -nutzung von Teilfunktionalität aber m neue Funktionalität erfordert oft Änderung an alten Methoden m dadurch oft Fehler in Teilen die schon mal funktioniert haben Gegenmaßnahme m umfangreiche, gezielte, vollautomatische Tests für die einzelnen Funktionalitäten Effekt m hohe Sicherheit bei Änderungen

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 41 JUnit Tests m JUnit Rahmenwerk für flexible automatische Tests m Stand-alone GUI oder in IDE integriert m alle Tests, Testgruppen oder einzelne Tests ausführbar m Testprotokolle m Kombination mit Coverage Tool interessant (später)

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 42 Aufbau eines JUnit Tests für OO Programm: 1. Objektstruktur bauen 2. Zielfunktionalität / -methode aufrufen 3. Ergebnis prüfen 4. nächste Methode aufrufen 5. Ergebnis prüfen 6. usw.

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 43 Beispielabläufe mit Objektdiagrammen

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 44

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 45 Grafische Tests mit Fujaba Story Boards Story Board Notation: m Folge von Activities m Start Activity erzeugt Objekte m Methodenaufrufe m «system step» l Kommentare m «actor step» l vergleicht Ist/Soll l stößt neue Schritte an Code Generierung: m JUnit Test m Startobjekte erzeugen m Startobjekte merken m Aufrufe m Situation vergleichen

Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 46 Grafische Tests mit Fujaba Story Boards class Scencario1Test { public Person prinz; public Raum r; public Tuer t1; public void scenario1 () { prinz = new Person (); r = new Raum (); prinz.setIn (r); t1 = new Tuer (); r.tueren.add (t1); … prinz.sammle…(); assertEquals (prinz.getIn (), r); assertTrue(r.tueren.contains(t1)); invent = prinz.hat; assertTrue(invent.enthaelt.contains(g1)) ; …