Software Engineering - Klausur Flashcards
Wasserfallmodell
Phasen: Analyse, Entwurf, Codierung, Test, Inastallation, Wartung
Stufen nacheinander ablaufen
- für einfache kleine/mittelgrosse Projekte
- Projekte mit strenger kontrolle, Ziel genau bekannt
Wasserfallmodell - con
Keine Möglichkeit Anforderungsänderungen auszunehmen
Keine Möglichkeit Software vor Abschluss der letzten Phase zu sehen/testen -> Hohes Projektrisiko
Fehler erst am Ende sichtbar -> ggf. großer Behebungsaufwand & steigende Kosten
SDLC
Software Development Life Cycle (Software Entwicklungslebenszyklus)
SDLC - Phasen
Planung und Analyse (Analysis)
Design (Design)
Entwicklung (Development)
Test (Testing)
Bereitstellung (Depliyment)
Wartung (Maintenance)
SDLC - Ziele der Phasen
Planung und Analyse
geschäftliche Rahmenbedingungen zur Entwicklung der Software analysieren.
Aufwandsschätzung
Ressourcenplanung
Anforderungsaufnahme
(Zielgruppendefinition)
SDLC - Ziele der Phasen
Design
Entscheidung über allgemeines Desgin der Software
Programmiersprache
Sicherheit
Serverkommunikation
Technologie
Architekturdesgin
Frontend (Benutzeroberfläche)
Backend (Frameworkverwendung)
Datenbank
SDLC - Ziele der Phasen
Entwicklung
Programmierung des Produktes
ggf. Prototyperstellung
SDLC - Ziele der Phasen
Testphase
Sicherstellung das Softwareprodukt hinsichtlich Nutzererfahrung und erforderlicher Ressource entwicklelt wurde
Einhaltung der Verfügbarkeits- & Sicherheitsanforderungen
Aufnahme & Dokumentation von Fehlern
SDLC - Ziele der Phasen
Bereitstellung
Bereitstellung der Software in Live-Umgebung
Sicherstellung das Software genauso läuft wie in Testumgebung
SDLC - Ziele der Phasen
Wartung
Sicherstellung das Software in Bezug auf Funktionalität, Leistung und Verfügbarkeit stabil und wie geplant läuft
Sicherstellung von Support für Anwender
was ist für moderne Softwareentwicklung relevant
Hintergrund:
Softwareprodukt muss schnell auf den Markt gebacht werden (vor Mitbewerbern, vor bestimmten Zeitfenster)
Anforderungen:
- schnelle Bereitstellung von Funktionalitäten
- Reaktion auf sich ändernde Produktspezifikationen
- Vermeidung von Overhead-Kosten bei der Entwicklung
Overhead-Kosten
Alles, was nicht direkt zur schnellen Auslieferung der Software beiträgt
Agile vs. Wasserfall - Gemeinsamkeiten
Vereinfachung des Entwicklungsprozesses
Verwaltung komplexer Software
Aufgaben in kleinere, überschaubare Teile zerlegen und gleichzeitig in mehrer Phasen & Meilensteine segmentieren
Agil vs. Wasserfall - Unterschiede
Wasserfall: Linear, strenge Phasen, Schrittweise ausführung
Agile: iterative durchführung, flexibilität
Kundenfeedback: Agile Konstant, Wasserfall nur am Anfang und Produktfreigabe
Anforderungsänderungen: Agile Änderungen im laufenden Projekt konstruktiv berücksichtigen, Wasserfall in initiierungsphase
Umfang:
Agile flexible reaktion auf Projektumfang
Wasserfall fixierter Umfang
Arbeitspriorisierung:
Agile auf Basis von Kundenfeedback
Wasserfall: das liefern was abgestimmt war
Planung:
Agile flexible, schrittweise planung
Wasserfall: traditioneller Ansat, fixe termine
Softwareentwurf - Architekturdesign
Frontend
Backend
Datenbank
Softwareentwurf - Architekturdesign - Frontend
Benutzeroberflächen aufbau
wie soll diese gestaltet sein?
Softwareentwurf - Architekturdesign - Backend
Verwaltung von Daten
Bestellungen
Benutzerkonten
Softwareentwurf - Architekturdesign - Datenbank
Speicherung von Produktinformationen
Benutzerprofielen
Bestellhistorien
Architektur Entwurf Beispiel
architektonisches Design
beinhaltet Verständnis der Proleme, welche Architektur des Produktes beeinflussen
beinhaltet Erstellung einer Beschriebung der Architektur, welche die kritischen Komponenten und ihre Beziehungen aufzeigt
Architektonische Einflüsse
Nicht-funktionale Produkteigenschaften
Produktlebensdauer
Software-Wiederverwendung
Anzahl der Nutzer
Software Kompatibilität
Architektonische Kompromisse
Wartbarkeit vs Leistung
Sicherheit vs Benutzerfreundlichkeit
Verfügbarkeit vs. Markteinführungszeit & Kosten
Architektonische Entwurfsrichtlinien
Trennung der Belange
einmal Implementieren
Stabile Schnittstellen
Architektumodell Beispiel