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