Nach der Analyse kommt . . . Kapitel 5: Das Design SoPra 2008 Kap. 5: Das Design (1/20) Kapitel 5.1: Überblick Was ist Design? • Ergebnis der Analyse: abstrakte Definitionen ⋆ Objektmodell: Klassen, Assoziationen, Attribute − Information im System − Beziehungen dazwischen ⋆ Interaktionsmodell, Operationsmodell: von außen sichtbare Operationen • Aufgabe des Designs ⋆ festlegen, wie die in der Analyse beschriebene Funktionalität realisiert wird • Ergebnis des Designs ⋆ objektorientierte Software-Struktur ⋆ Sammlung interagierender Objekte ⋆ noch unabhängig von der Programmiersprache SoPra 2008 Kap. 5.1: Das Design – Überblick (2/20) Aufgaben 1. Festlegung der Systemarchitektur 2. GUI-Design (⇒ Schnittstellenmodell) 3. Design der Anwendungslogik 4. Datenbank-Entwurf 5. Zusammenspiel der Systemkomponenten SoPra 2008 Kap. 5.1: Das Design – Überblick (3/20) Design in F USION light Zu erstellende Dokumente • Objektinteraktionsgraphen (OIGs) ⋆ Interaktion der Objekte zur Laufzeit ⋆ Realisierung der im Operationsmodell spezifizierten Funktionalität • Klassenbeschreibungen ⋆ spezifiziert Schnittstelle einer Klasse, d. h. Attribute und Methoden ⋆ beschreibt, wie Assoziationen implementiert werden ⋆ besonders wichtig für neue (im Design eingeführte) Klassen SoPra 2008 Kap. 5.1: Das Design – Überblick (4/20) Kapitel 5.2: Systemarchitektur Klassische 3-Schichtenarchitektur: 1. User Interface (GUI, “Präsentationsschicht”) 2. System (Business Logic, Anwendungslogik) 3. Datenschicht (Datenbank, Persistenzschicht) GUI • untere Schichten greifen nie auf höhere Schichten zu ⇒ GUI auswechselbar • controller bildet die Systemschnittstelle ⇒ sauberes Interface für Systemoperationen controller Anwendung Daten SoPra 2008 Kap. 5.2: Das Design – Systemarchitektur (5/20) Client-Server Architektur Thick-Client Client 1 C# Programm GUI controller Client N C# Programm ... GUI Systemgrenze controller nach Fusion Anwendung Anwendung Persistenzschicht Persistenzschicht Server DB Kommunikation (SQL, übers Netz) SoPra 2008 Kap. 5.2: Das Design – Systemarchitektur (6/20) Client-Server Architektur Thin-Client WebBrowser Client 1 HTML−Seite WebBrowser ... Client N HTML−Seite Kommunikation (HTTP) Session Thread 1 GUI controller Anwendung ... C# Programm GUI controller Session Thread N Systemgrenze nach Fusion Anwendung Server Persistenzschicht Persistenzschicht Kommunikation (SQL) DB SoPra 2008 Kap. 5.2: Das Design – Systemarchitektur (7/20) Client-Server Architektur Thin-Client (Variante) WebBrowser Client 1 HTML/javascript WebBrowser ... Client N HTML/javascript Kommunikation (HTTP) Session Thread 1 GUI controller ... Anwendung Persistenzschicht Session Thread N GUI controller Systemgrenze nach Fusion Anwendung Server Persistenzschicht Kommunikation (SQL) DB SoPra 2008 Kap. 5.2: Das Design – Systemarchitektur (8/20) Für’s Auge. . . Kapitel 5.3: die GUI Das Graphical User Interface – die GUI • Relevanz – Warum? • Die Grundregel – Wie? • Integration in F USION • Entwurf SoPra 2008 Kap. 5.3: Das Design – die GUI (9/20) Relevanz Warum ist die GUI wichtig? • Ergonomie ⋆ schlechte GUI ⇒ unproduktive Nutzung • Die GUI ist das Aushängeschild einer Software ⋆ Kunde sieht das ’Innenleben’ womöglich gar nicht ⋆ oft wird eine Anwendung nur an ihrer GUI bewertet ⋆ erster Eindruck zählt: Anwender nicht abschrecken SoPra 2008 Kap. 5.3: Das Design – die GUI (10/20) Relevanz • eine schlechte GUI kann Software unbrauchbar machen ⋆ umständlich zu bedienen ⋆ verwirrend. . . SoPra 2008 Kap. 5.3: Das Design – die GUI (11/20) Grundregel Der Nutzer steht im Mittelpunkt! • den menschlichen Arbeitsablauf unterstützen • den Nutzer führen • Kontext anbieten • Begriffswelt des Nutzers verwenden ⋆ keine Systeminterna in der Oberfläche ⋆ keine Bezeichner aus der Implementierung, sondern verständliche Begriffe Das System soll sich dem Nutzer anpassen – nicht umgekehrt! SoPra 2008 Kap. 5.3: Das Design – die GUI (12/20) Integration in F USION Die GUI realisiert einen Teil der Systemschnittstelle. • Dialogführung orientiert sich an den Lebenszyklen • GUI kommuniziert mit dem Systemkern über Systemoperationen ⋆ Controller als Schnittstelle zwischen GUI und Systemklassen • Nutzer-Eingaben werden Parameter für Systemoperationen Anbindung durch und an Systemoperationen • GUI beschafft sich Informationen über das System ⋆ Systemoperationen stellen diese zur Verfügung • präsentiert diese dem Nutzer • Nutzer macht Eingaben und löst Aktionen aus ⋆ entsprechend parametrisierte Systemoperationen werden angestoßen SoPra 2008 Kap. 5.3: Das Design – die GUI (13/20) Integration in F USION Unabhängigkeit vom Systemkern Mehrere Fenster realisieren zusammen einen Lebenszyklus. Wie kommt die GUI an ihre Daten? • Kommunikation nur über Systemoperationen ⋆ ggf. fehlende Operationen ergänzen ⋆ Oberfläche darf nur dokumentierte Operationen nutzen ⋆ kein eigenständiger Zugriff auf Interna • GUI und ’eigentliches’ System sollten getrennt bleiben ⋆ GUI unabhängig von Implementierungsdetails ⋆ Datenaustausch nur über die spezifizierte Schnittstelle ⋆ modulare, austauschbare GUI SoPra 2008 Kap. 5.3: Das Design – die GUI (14/20) Entwurf Die GUI sollte nicht alleine vom Software-Entwickler entworfen werden • enge Zusammenarbeit mit dem Kunden • Mitarbeit von ⋆ Psychologen (in großen Projekten) ⋆ Designern • Entwicklung anhand von Prototypen ⋆ Evaluation durch − Fragebögen − Statistiken (meist genutzte Funktion, etc.) ⋆ iterativer Prozess SoPra 2008 Kap. 5.3: Das Design – die GUI (15/20) Entwurf Vorgehen Wie kommt man zu einem GUI-Entwurf? 1. Drehbuch der Dialogabfolge • aus den Lebenszyklen 2. Welche Informationen sollen dargestellt werden? • Woher kommen diese Informationen? Gegebenenfalls fehlende (System-)Operationen ergänzen. 3. Eingabefelder für Nutzer vorsehen • lösen oft Systemoperationen aus, in das Drehbuch integrieren SoPra 2008 Kap. 5.3: Das Design – die GUI (16/20) Entwurf Vorgehen (2) 4. Layout der einzelnen Dialoge • ergonomische Kriterien beachten • den Nutzer führen, nicht verwirren ⋆ sinnvolle Namen und verständliche Meldungen • Dialoge klar strukturieren, nicht überladen ⋆ zusammen gehörende Dinge gruppieren • nach Möglichkeit selbsterklärende Dialoge 5. Aufruf einer Systemoperation • Vor Aufruf die Parameter aus den Nutzereingaben zusammenstellen 6. Rückmeldung an den Nutzer • Statuszeile, Message-Area, Popup-Fenster, . . . 7. Iterativer Prozess: 1. – 6. wiederholen bis ’gute’ GUI entsteht SoPra 2008 Kap. 5.3: Das Design – die GUI (17/20) Beispiel: Einzelbuchung anlegen Lebenszyklus und Dialogabfolge WUNSCHEINGABE ::= macheVorschläge(B.wunsch).#set(B.Vorschlag). VORSCHLÄGE | macheVorschläge(B.wunsch).#error. WUNSCHEINGABE | MAIN VORSCHLÄGE ::= legeBuchungAn(B.vorschlag,Startzeit,Titel).#ok. MAIN | WUNSCHEINGABE SoPra 2008 Kap. 5.3: Das Design – die GUI (18/20) Beispiel: Einzelbuchung anlegen Lebenszyklus und Dialogabfolge WUNSCHEINGABE ::= macheVorschläge(B.wunsch).#set(B.Vorschlag). VORSCHLÄGE | macheVorschläge(B.wunsch).#error. WUNSCHEINGABE | MAIN VORSCHLÄGE ::= legeBuchungAn(B.vorschlag,Startzeit,Titel).#ok. MAIN | WUNSCHEINGABE Raumwunsch Größe Gebäude Ausstattung 25 Abbruch Weiter Terminwunsch von bis Dauer 8:00 20:00 2h Weiter Zurück Buchungsvorschläge Raum 1001P, von 10:00 − 12:00 Raum 1002P, von 8:00 − 10:00 Raum 1005, von 15:00 − 17:00 Raum 1009, von 10:00−12:00 Raum H1, von 18:00−20:00 Raum1010J, von 14:30 −16:30 Titel Beschreibung Klausur SWT Lst. Reif Zurück Buchen! Buchungswunsch leider nicht erfüllbar. OK Buchung erfolgreich! SoPra 2008 Kap. 5.3: Das Design – die GUI (18/20) Beispiel: Einzelbuchung anlegen Dialogabfolge und Systemoperationen (1) WUNSCHEINGABE ::= macheVorschläge(B.wunsch).#set(B.Vorschlag). VORSCHLÄGE | macheVorschläge(B.wunsch).#error. WUNSCHEINGABE | MAIN VORSCHLÄGE ::= legeBuchungAn(B.vorschlag,Startzeit,Titel).#ok. MAIN | WUNSCHEINGABE #set(B.Vorschlag) Raumwunsch Größe Gebäude Ausstattung 25 Abbruch Weiter Buchungsvorschläge Terminwunsch von bis Dauer 8:00 20:00 2h Zurück VORSCHLÄGE macheVorschläge Weiter Raum 1001P, von 10:00 − 12:00 Raum 1002P, von 8:00 − 10:00 Raum 1005, von 15:00 − 17:00 Raum 1009, von 10:00−12:00 Raum H1, von 18:00−20:00 Raum1010J, von 14:30 −16:30 Titel Beschreibung #error WUNSCHEINGABE Zurück OK Lst. Reif Buchen! legeBuchungAn.#ok Buchungswunsch leider nicht erfüllbar. Klausur SWT Buchung erfolgreich! OK MAIN SoPra 2008 Kap. 5.3: Das Design – die GUI (19/20) Beispiel: Einzelbuchung anlegen Dialogabfolge und Systemoperationen (2) WUNSCHEINGABE ::= macheVorschläge(B.wunsch).#set(B.Vorschlag). VORSCHLÄGE | macheVorschläge(B.wunsch).#error. WUNSCHEINGABE | MAIN VORSCHLÄGE ::= legeBuchungAn(B.vorschlag,Startzeit,Titel).#ok. MAIN | WUNSCHEINGABE #set(B.Vorschlag) Raumwunsch Größe Gebäude Ausstattung 25 Abbruch Weiter Buchungsvorschläge Terminwunsch von bis Dauer 8:00 20:00 2h Zurück VORSCHLÄGE macheVorschläge Weiter Raum 1001P, von 10:00 − 12:00 Raum 1002P, von 8:00 − 10:00 Raum 1005, von 15:00 − 17:00 Raum 1009, von 10:00−12:00 Raum H1, von 18:00−20:00 Raum1010J, von 14:30 −16:30 Titel Beschreibung #error WUNSCHEINGABE Buchungswunsch leider nicht erfüllbar. OK Klausur SWT Lst. Reif Zurück Buchen! legeBuchungAn.#ok Buchung erfolgreich! MAIN SoPra 2008 Kap. 5.3: Das Design – die GUI (20/20)