Entwicklung nutzerorientierter Anwendungen
Entwicklung nutzerorientierter Anwendungen
Entwicklung nutzerorientierter Anwendungen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Entwicklung</strong> <strong>nutzerorientierter</strong> <strong>Anwendungen</strong><br />
Wintersemester 2013/2014<br />
1. Einführung<br />
Lernziele der Veranstaltung 2<br />
Inhalte 3<br />
Praktikum 4<br />
Klausur 5<br />
Literatur (HCI und UID) 6<br />
Literatur (Java) 7<br />
<strong>Entwicklung</strong>sumgebung 8<br />
2. Softwaretechnik für Benutzungsschnittstellen<br />
Übersicht: Analyse und Entwurf 9<br />
Visionsdokument 10<br />
2. 1 Benutzer kennen und verstehen<br />
Admins und User - ein Zerrbild 11<br />
Benutzer charakterisieren 12<br />
Stereotype 13<br />
Beispiel: Stereotype<br />
Stereotype und Benutzerrollen 14<br />
Anwendungsszenarien 15<br />
Beispiel 1: Anwendungsszenario OBS<br />
Beispiel 2: Anwendungsszenarien Mobida<br />
Szenario Use Case Beschreibung 16<br />
Methoden der Benutzerforschung 17<br />
Fallen umgehen 18<br />
z.B. Fahrkartenautomat 19<br />
z.B. Online Belegsystem 20<br />
z.B. Stundenplanungssystem 21<br />
2. 2 Anwendungscharakter und Modell<br />
Nicht-funktionale Anforderungen 22<br />
Charakter von <strong>Anwendungen</strong> 23<br />
Beispiel: Anwendungscharakter<br />
Modelle eines Systems 24<br />
Beispiel: Diskrepanz der Modelle<br />
2. 3 Anwendungsfallanalyse<br />
Anwendungsfälle (Use Cases) 25<br />
Use Case Diagramm (Geldautomat) 26<br />
Use Case Diagramm (Belegsystem) 27<br />
z.B. Use Cases eines Buchs 28<br />
z.B. Dokument- statt Datei-Menü 29<br />
Beispiel: anwendungsfallorientiert 30<br />
Gegenbeispiel: datenstrukturorientiert 31<br />
Von Use Cases zu Screens 32<br />
Use Case Spezifikation 33<br />
Beispiel: Use Case Spezifikation<br />
2. 4 Abläufe<br />
Workflow 34<br />
Beispiel zum Workflow 35<br />
Assistent 36<br />
Beispiele zu Assistenten 37<br />
- 2 -
2. 6 Klarstellung:<br />
2. 7 Vorbild<br />
2. 8 Grenzen<br />
2. 8 Rapid<br />
2. 5 GUI-Diagramme<br />
Sinn und Zweck 38<br />
vgl. Flow Chart 39<br />
vgl. Contentogramm 1<br />
vgl. Contentogramm 2<br />
vgl. Zustandsdiagramm 40<br />
Navigationsübersicht (abstrakt) 41<br />
Navigationsübersicht (detailliert) 42<br />
Legende zur Navigationsübersicht 43<br />
Screen-Diagramme (abstrakt, skizziert, detailliert) 44<br />
=> Medero: Paper Prototyping<br />
=> Rettig: Prototyping for Tiny Fingers<br />
Varianten von Screen-Diagrammen 45<br />
Vorgehensweise für Screen-Diagramme 46<br />
vgl. Wireframes 1<br />
vgl. Wireframes 2<br />
Spezialfall Karteireiter (JTabbedPane) 47<br />
UML-Sequenzdiagramme zur Erinnerung 48<br />
vgl. Sequenzdiagramm "Geld holen" 49<br />
Verbindung GUI => Sequenzdiagramm 50<br />
Fokussteuerung definieren 51<br />
Drag&Drop 52<br />
Komplexität beherrschen 53<br />
Diagramme - für wen ? 54<br />
Architektur 55<br />
der UML 56<br />
Prototyping 57<br />
=> YouTube: Hanmail Paper Prototype<br />
3. Screen Design und Ergonomie<br />
3. 1 Arten von Benutzungsoberflächen<br />
Klassifikation 58<br />
Menüs und Dialoge 59<br />
Toolbars und Icons 60<br />
Tastaturkürzel / Hotkeys 61<br />
Direkte Manipulation 62<br />
Multi-Touch Gesten 63<br />
Web-Oberflächen 64<br />
Konventionen berücksichtigen 65<br />
3. 2 Formen<br />
Gedanken zur Fenstergestaltung 66<br />
z.B. Windows arabisch 67<br />
Prioritäten für Gruppierung 68<br />
Hinweise zur Gruppierung 69<br />
z.B. MS Word Druckdialog 70<br />
Natürliche Anordnung 71<br />
Hervorheben von Komponenten 72<br />
Minimal- und Maximalgrößen 73<br />
Umrechnung des Sehwinkels 74<br />
Abbildungsmaßstab 75<br />
Dialog Units (DLU) unter Windows 76<br />
- 3 -
3. 3 Schrift<br />
Schriftarten 77<br />
Gut lesbare Bildschirm-Schrift 78<br />
Beschriftung mittels Label 79<br />
Ausrichtung von Beschriftungen 80<br />
Eingabe von Text 81<br />
Hörsaalübung: Gestalten eines Eingabefenster 82<br />
3. 4 Farbe<br />
Was ist Farbe ? 83<br />
Farbmodell RGB 84<br />
Farbmodell CMYK 85<br />
Farbmodell HSL 86<br />
Physiologische Aspekte 87<br />
Psychologische Aspekte 88<br />
Farbkombinationen 89<br />
Heller oder dunkler Hintergrund ? 90<br />
Farbschema / Farbklima 91<br />
Im Zweifelsfall 92<br />
Farbcodierung 93<br />
3. 5 Dynamisches Layout<br />
Begriffserklärung 94<br />
Wo macht es Sinn ? 95<br />
Parameter dynamischer Layouts 96<br />
Layout-Raster skizzieren 97<br />
Vorgehensweise beim Layout 98<br />
Auswahl anwendungsfallorientiert 99<br />
Komponentengröße beeinflussen 100<br />
Versuch mit geschachtelten Layouts 101<br />
besser mit GridBagLayout 102<br />
Hörsaalübung 103<br />
"Datei öffnen" als GridBagLayout<br />
Quellcode "Datei öffnen" als GridBagLayout<br />
Anmerkung zur Schriftgröße 104<br />
3. 6 Software-Ergonomie<br />
Begriffe (1) 105<br />
Begriffe (2) 106<br />
Ergonomische Normen 107<br />
Normen zur (Software-)Ergonomie 108<br />
Normen zur Software-Ergonomie 109<br />
(1a) Aufgabenangemessenheit 110<br />
(1b) Aufgabenangemessenheit 111<br />
(2a) Selbstbeschreibungsfähigkeit 112<br />
(2b) Selbstbeschreibungsfähigkeit 113<br />
(2c) Selbstbeschreibungsfähigkeit 114<br />
(3) Steuerbarkeit 115<br />
(4a) Erwartungskonformität 116<br />
(4b) Erwartungskonformität 117<br />
(5) Fehlertoleranz 118<br />
(6) Individualisierbarkeit 119<br />
(7) Lernförderlichkeit 120<br />
3. 7 Usability Inspection<br />
Evaluation der Usability 121<br />
Methoden der Usability Inspection 122<br />
Checkliste für Heuristik 123<br />
- 4 -
3. 8 Usability Test<br />
Vorbereitung des Tests 124<br />
Prototypen 125<br />
Usability Lab<br />
Eröffnung 126<br />
Durchführung: Thinking aloud - laut denken 127<br />
Durchführung: Co-Discovery - zu zweit erforschen 128<br />
Durchführung: Interviews und Fragebogen 129<br />
Durchführung: Observierung 130<br />
Auswertung (1) 131<br />
Auswertung (2) 132<br />
Auswertung (3) 133<br />
4. Java<br />
Interpreter-Prinzip 134<br />
Dateitypen und Tools 135<br />
Java Development Kit (JDK) 136<br />
<strong>Entwicklung</strong> nur mit JDK 137<br />
IDE Eclipse 138<br />
4. 1 Programmtypen<br />
Das einfachste Java-Programm (main) 139<br />
Ausgabe auf die Konsole 140<br />
Die einfachste GUI-Applikation 141<br />
HelloWorld Klassendiagramm 142<br />
Zur Lebensdauer von Objekten 143<br />
Seitenblick: Applet 144<br />
Applets und Sicherheit 145<br />
4. 2 Grundlagen für Umsteiger<br />
Klassen 146<br />
Objekte 147<br />
Initialisierung von Variablen 148<br />
Zugriffsrechte 149<br />
Datentypen 150<br />
Zeichenketten: String 151<br />
Arrays 152<br />
Ausnahmebehandlung 153<br />
Bibliotheken: Packages 154<br />
4. 3 Weitere Details zu Java<br />
Zeiger versus Referenzen 155<br />
Typumwandlung (cast) 156<br />
Interface 157<br />
Klassenhierarchie 158<br />
Mutter aller Klassen: class Object 159<br />
plattformunabhängig ? 160<br />
sicher ? 161<br />
Gegenüberstellung Java / C++ in Stichworten<br />
4. 4 Collection-Klassen<br />
Collection-Klassen 162<br />
Wrapper-Klassen 163<br />
Interface Iterator 164<br />
Klassenhierarchie 165<br />
AbstractList implements List 166<br />
AbstractSet implements Set 167<br />
AbstractMap implements Map 168<br />
Generics: typsichere Collections 169<br />
- 5 -
4. 5 Dateien und Streams<br />
Streams / Datenströme 170<br />
Byte- und Character-Streams 171<br />
Lesen aus Streams 172<br />
Schreiben in Streams 173<br />
Spezialisierte Streams 174<br />
Beispiel: Kopieren einer Textdatei 175<br />
Zerlegen von Texten: Scanner 176<br />
Wahlfreier Datei-Zugriff 177<br />
4. 6 Serialisierung<br />
Serialisierung / Deserialisierung 178<br />
Serialisierung in C++ 179<br />
Interface java.io.Serializable 180<br />
Standard-Implementierung in Java 181<br />
Praktischer Einsatz 182<br />
Portabilität serialisierter Objekte 183<br />
Mögliche Probleme 184<br />
Interface java.io.Externalizable 185<br />
Marshalling / Unmarshalling 186<br />
4. 7 Entwurfsphase mit statischem Layout<br />
Dynamische und statische Layouts 187<br />
Vorgehensweise beim Entwurf 188<br />
Starter-Applikation 189<br />
4. 8 GUI Klassenstruktur<br />
Architektur für kleine GUI-<strong>Anwendungen</strong> 190<br />
Model / View / Controller - Architektur 191<br />
Beispiel Model / View 192<br />
Beispiel Model / ViewController 193<br />
Situation mit Eclipse WindowBuilder 194<br />
Alle Widgets zu Instanzvariablen 195<br />
Handler als Methoden der Fensterklasse 196<br />
Statische GUI im Konstruktor verstecken 197<br />
Zugriff auf Model-Objekt 198<br />
main-Methode in Hauptfensterklasse 199<br />
Partitionierung der GUI 200<br />
Klassendiagramm 201<br />
Reaktionszeit und Event Queue 202<br />
Kurze Aktivitäten mit Wait-Cursor 203<br />
Längere Aktivitäten im Worker Thread 204<br />
Beispiel zu Wait-Cursor und Worker Thread<br />
Swing & Worker Threa<br />
Quellcode zu Wait-Cursor und Worker Thread<br />
5. Fenster, Dialoge, Container<br />
GUI-Bibliotheken in Java SE 205<br />
Swing Components<br />
Weitere Features von JFC/Swing 206<br />
Container 207<br />
Top Level Container 208<br />
Bereits bekannt: JFrame 209<br />
5. 1 Panels und Panes<br />
Räumliche Gliederung 210<br />
JPanel: einfache Fläche 211<br />
Rand und Abstand mit Border 212<br />
Beispiele zu Border<br />
JScrollPane: verschiebbare Sicht 213<br />
JSplitPane: zweigeteilt 214<br />
- 6 -
JTabbedPane: Karteikarten mit Reitern 215<br />
Beispiel zu JTabbedPane<br />
CardLayout: reiterlose Karteikarten 216<br />
5. 2 Dialoge<br />
Überblick 217<br />
JDialog 218<br />
JOptionPane: Standard-Dialoge 219<br />
Spezielle Dialoge 220<br />
Datenübergabe 221<br />
Beispiel zu Dialogen<br />
Dialogklasse (JDialog)<br />
Hauptfensterklasse (JDialog, JOptionPane)<br />
5. 3 Layout-Manager<br />
Layout-Manager in Swing 222<br />
Überblick 223<br />
Fließtext: FlowLayout 224<br />
FlowLayout Programmfragment 225<br />
Zeile oder Spalte: BoxLayout 226<br />
BoxLayout Programmfragment 227<br />
Mitte maximal: BorderLayout 228<br />
BorderLayout Programmfragment 229<br />
Gleiche Tabellenzellen: GridLayout 230<br />
GridLayout Programmfragment 231<br />
Universell: GridBagLayout 232<br />
GridBagLayout Programmfragment 233<br />
GridBagConstraints (1) 234<br />
GridBagConstraints (2) 235<br />
Weitere Layout-Manager 236<br />
Gemischt: statisch und dynamisch 237<br />
6. Ereignisbehandlung<br />
Konsoledialoge 238<br />
Ereignisorientierte Programmierung 239<br />
Ereignisbegriff 240<br />
Aktivitäten und Eventklassen 241<br />
Zuordnung von Handlern 242<br />
bei Komponenten 243<br />
Systemvergleich 244<br />
in Java AWT 1.0 (veraltet) 245<br />
seit Java AWT 1.1 : Listener 246<br />
Listener und Adapter 247<br />
Anonyme innere Klasse 248<br />
Innere Klasse im Vergleich zu C++ 249<br />
Observer-Pattern zum Vergleich 250<br />
So macht es Eclipse 251<br />
So machte es JBuilder 252<br />
Fenster als Listener seiner Komponenten 253<br />
Beispiel zu Varianten der Ereignisbehandlung<br />
Quellcode zu Varianten der Ereignisbehandlung<br />
zum Vergleich: MFC (1) 254<br />
zum Vergleich: MFC (2) 255<br />
zum Abschluss: Visual Basic 256<br />
- 7 -
7. Bausteine grafischer Bedienoberflächen<br />
Begriffe 257<br />
Visueller Index (aus Java Tutorial)<br />
Swing Components in Eclipse 258<br />
Klassenhierarchie 259<br />
7. 1 Schaltflächen<br />
Schaltflächen: Charakterisierung 260<br />
JButton: löst nur Aktion aus 261<br />
JToggleButton: Zustand + Aktion 262<br />
JCheckBox: Wahrheitswert-I/O 263<br />
JRadioButton: Auswahl 1 aus n 264<br />
Beispiel zu RadioButtons<br />
Quellcode zu RadioButtons (JRadioButton, ButtonGroup)<br />
7. 2 Textfelder<br />
Textfelder: Charakterisierung 265<br />
JTextField: einzeilige I/O + Aktion 266<br />
JTextArea: mehrzeilige I/O 267<br />
Beispiel zu Textfeldern<br />
Quellcode zu Textfeldern (JTextField, JTextArea, JScrollPane)<br />
Wertebereichsüberprüfung 268<br />
7. 3 Auswahllisten<br />
Auswahllisten: Charakterisierung 269<br />
JList: sichtbare Liste 270<br />
JList: Auswahlmodus und Selektion 271<br />
JComboBox: ausklappbare Liste 272<br />
Dynamische Listen 273<br />
ImageIcon: statische Bilder 274<br />
Beispiele zu Auswahllisten<br />
Quellcode zu Auswahllisten (JList, JComboBox, JScrollPane, ImageIcon)<br />
7. 4 "Analogwerte"<br />
JSlider: analog mit Einrasten 275<br />
JProgressBar: reine Anzeige 276<br />
JScrollBar: meist für Fenster 277<br />
Beispiele zu "Analogwerte"<br />
Quellcode zu "Analogwerte" (JSlider, JProgressBar, JScrollBar)<br />
7. 5 Komplexe Datenstrukturen<br />
Model / View / Controller - Architektur 278<br />
Beispiel Model / View 279<br />
Beispiel Model / ViewController 280<br />
JTable: Charakterisierung 281<br />
Model / View Architektur bei JTable 282<br />
Model / View als Observer-Pattern 283<br />
Zugriff über Interface TableModel 284<br />
Abstract Class AbstractTableModel 285<br />
Beispiele zu Tabellen<br />
Quellcode zu Tabellen (JTable, AbstractTableModel)<br />
JTree 286<br />
DefaultMutableTreeNode 287<br />
Tree als binärer Baum 288<br />
DefaultTreeModel 289<br />
Beispiele zu Baumstrukturen<br />
Quellcode zu Baumstrukturen (JTree, DefaultTreeModel, DefaultMutableTreeNode)<br />
- 8 -
7. 6 Menüs und Toolbars<br />
Klassenhierarchie zu JMenu 290<br />
JMenuBar, JMenu: Hauptmenü 291<br />
Aufbau eines Menüs 292<br />
JPopupMenu: Kontextmenü 293<br />
Kontextmenü-Ereignisbehandlung 294<br />
Beispiele zu Menüs (JMenuBar, JMenu, JPopupMenu)<br />
Quellcode zu Menüs<br />
Toolbars 295<br />
JToolBar 296<br />
Beispiel zu Toolbars<br />
Quellcode zu Toolbars (JToolBar, BorderLayout)<br />
7. 7 Grafik<br />
Direkte Grafikausgabe 297<br />
Grafik Kontext 298<br />
Beispiel: Bild anzeigen 299<br />
Grafikausgabe beschleunigen (1) 300<br />
Grafikausgabe beschleunigen (2) 301<br />
7. 8 Drag & Drop<br />
Mentales Modell und Anwendungsbereiche 302<br />
Zustandsdiagramm allgemein 303<br />
Low Level mit Swing 304<br />
Abstract Class DragAndDropable 305<br />
High Level mit Swing 306<br />
- 9 -