Entwurf von Software Flashcards
Definition Softwaredesign
- nicht nur Benutzeroberfläche
- auch Architektur- und Strukturentscheidungen
- Datenstrukturen mit Klassen- und ER-Diagrammen
- Abläufe mit Aktivitäts- und Sequenzdiagrammen
Die Systemarchitektur beeinflusst…
- Systemperformance
- Angriffssicherheit (Security) des Systems
- Betriebssicherheit (Safety) des Systems
- Verfügbarkeit und Wartbarkeit des Systems
Verteilte Systeme (Standard bei großen Softwaresystemen)
- mehrere Prozesse auf verschiedenen Rechnern
- System mit mehreren Prozessen kann als verteiltes System konzipiert werden, bei mehr als einem Prozessor
Vorteile verteilte Systeme
+ skalierbar (durch zusätzliche Hardware mehr Prozesse / Benutzer bedienen ohne zusätzliche Änderungen)
+ Fehlertoleranz (ABER: Netzwerk ist Single Point of Failure)
Nachteile verteilte Systeme
- sind komplexer
- Datenverkehr zwischen beteiligten Rechnern im Netzwerk erschwert Zugriffsschutz
Architekturentscheidungen: zentrale vs. dezentrale Datenhaltung (zentrales Repository)
+ keine direkte Kommunikation zwischen Subsystemen nötig
+ gut für betriebswirtschaftliche Anwendungen
- Datensicherung, -schutz, - wiederherstellung, -konsistenz und Zugriffskontrolle dezentral schwieriger zu gewährleisten
- Knotenzugriff auf zentrale Daten ist langsamer als auf eigener Festplatte (offline gar nicht möglich)
Architekturentscheidungen: Client-Server-Modell
- Server im Rechenzentrum bietet Dienste im Netzwerk an
- Clients fragen am Benutzerarbeitsplatz Dienste im Netzwerk an
- Client kennen Server, aber nicht andere Clients
Architekturentscheidungen: 2-Tier-Client-Server-Modell
- 2 Stufen: Clients und Server
- Thin-Client: Anwendung läuft komplett auf Server (Client nur für Benutzereingaben und Bildschirmdarstellung) –> einfaches Systemmanagement
Fat-Client: Server nur für Datenhaltung
Anwendungslogik, Benutzereingaben und Bildschirmdarstellung auf Client –> effiziente Lastverteilung
Architekturentscheidungen: 3-Tier-Client-Server-Modell
- zentraler Datenbankserver für Persistenz
- ein oder mehrere Applikationsserver für Anwendungslogik
- Clients für Benutzereingaben und Bildschirmdarstellung
Architekturentscheidungen
- Webapplikationen können einfaches Systemmanagement und effiziente Lastverteilung vereinen
- portabler Code und Daten von Server geladen
- wenn asynchron im Hintergrund: Vermeidung von Wartezeiten
- Usability und Performance ähnlich von lokaler Software
Typen von Softwaresystemen: Ereignisverarbeitende Programme (z.B. Echtzeitsysteme, Officeprogramme, Videospiele)
- reagieren ständig und sofort auf Ereignisse wie Benutzereingaben
- meist Einbenutzersysteme
- schnelle Reaktion auf Benutzerinteraktionen
- bearbeiten Daten längere Zeit im Hauptspeicher
- Architektur: autonome Objekte in Kommunikationsbeziehungen –> verarbeiten Ereignisse und interpretieren Befehle
Typen von Softwaresystemen: Batchverarbeitende Systeme (z.B. Rechnungsdruck in ERP-Systemen, Mahnungen)
- verarbeiten Daten am Stück ohne Benutzereingriff
- ähnliche Operationen auf große Datenmengen
- Architektur: EVA-Komponenten
Typen von Softwaresystemen: Transaktionsverarbeitende Systeme (z.B. Auftragserfassung in ERP-Systemen, Supermarktkassen-System)
- Schreib- und Lesezugriffe auf großen Datenbestand
- Benutzer dürfen sich nicht behindern (atomare Transaktionen)
- Architekturkomponenten: Benutzerinteraktion, Anwendungslogik, Datenhaltung
Typen von Softwaresystemen: Sprachverarbeitende Systeme (z.B. Vorlesen von Websites für Sehbinderte)
- arbeiten Anweisungen ab, die in formaler Sprache formuliert sind (z.B. Compiler und Skriptinterpreter für Makros)
- Architekturkomponenten: Prüfen, Auswerten und Ausführen von Anweisungen
Echtzeitsysteme
- Sensor empfängt Stimulus –> direktes Aufrufen einer passenden Routine
- viele nebenläufige, kooperierende Prozesse
- abhängig von Ergebnissen und dafür benötigte Zeit
Benutzeroberflächen
- Vermeiden von Benutzerfehlern durch angemessene Benutzerführung
- Screen-Prototypes für Anforderungen der Anwender
- immer funktionsfähigere, ausführbare GUI-Prototypen
- Testphase: User Acceptance und Usability
Grundregeln GUI-Entwurf
1) Benutzervertrautheit –> Bezeichnungen und Begriffe aus Erfahrungswelt der Benutzer
2) Konsistenz –> vergleichbare Operationen gleich veranlassen
3) Minimale Überraschung –> Benutzer sollten vom System nicht überrascht werden
4) Wiederherstellbarkeit –> Mechanismen zu Wiederherstellung für Benutzer
5) Benutzerführung –> aussagekräftige Rückmeldungen und kontextsensitive Hilfsmittel bei Fehlern
6) Benutzervielfalt –> geeignete Interaktionsmöglichkeiten für versch. Systembenutzer
Grundregeln GUI-Entwurf
- relative / numerische Informationen analog abbilden
- graphische Darstellungen ungenauer, aber übersichtlicher
- Text platzsparend, aber schwerer zu greifen (gut für Genauigkeit und langsam verändernde Werte)
Grundregeln für Systemmeldungen
1) Widerspiegeln des Benutzerkontexts
2) Genauigkeit der Meldung basierend auf Nutzererfahrung
3) Meldungen auf Fähigkeiten zugeschnitten (Terminologie)
4) Positiver, aktiv-formulierter Stil
5) der Kultur des Anwenders angepasst Meldung
Benutzerinteraktionen
- direkte Manipulation (Videospiele)
- Menüauswahl
- Ausfüllen einer Eingabemaske (pers. Angaben)
- Befehlssprache (Betriebssysteme)
- natürliche Sprache (Informationsabrufe)