Definition Software Engineering
Die Entwicklung, Pflege und Einsatz qualitativ hochwertiger Software unter Einstz von:
wissenschaftlichen Methoden,
wirtschaftl. Prinzipien,
geplanten Vorgehensmodellen,
Werkzeugen und
quantifizierbaren Zielen.
Definition Qualität
Qualität ist der Grad, in dem ein System, eine Komponente oder ein Prozess die Kundenerwartungen und Kundenbedürfnisse erfüllt.
Definition Softwarequalität
Softwarequalität ist die Gesamtheit der Funktionalitäten und Merkmale eines Softwareprodukts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen.
Nichtfunktionale Merkmale (5)
Zuverlässigkeit (Reliability)
Benutzbarkeit (Usability)
Effizienz (Efficiency)
Änderbarkeit (Maintainability)
Übertragbarkeit (Portability)
Prinzipien der Qualitätssicherung (5)
Qualitätszielbestimmung
quantitative Qualitätssicherung
konstruktive Qualitätssicherung
integrierte, frühzeitige analytische Qualitätssicherung
unabhängige Qualitätssicherung
2 Verfahren für analytisches Qualitätsmanagement zur Fehleridentifikation
analysierende Verfahren (Review, statische Analysen, (formale) Verifikation) -> Prüfen der Eigenschaften
testende Verfahren (dynamische Tests, symbolische Tests) -> Ausführen mit konkreter Eigabe
7 Phasen des Wasserfallmodels
Machbarkeitsstudie
Anforderungsanalyse
Systementwurf
Codieren und Modultest
Integrations- und Systemtests
Auslieferung und Installation
Wartung
Aufgaben der Machbarkeitsstudie (4)
Problem informell und abstrahiert beschreiben
Verschiedene Lösungsansätze erarbeiten
Kostenschätzung durchführen
Angebotserstellung
Ergebnisse der Machbarkeitsstudie (4)
Lastenheft = (sehr) grobes Pflichtenheft
Projektkalkulation
Projektplan
Angebot an Auftraggeber
Aufgaben Anforderungsanalyse (3)
Genaue Festlegung der Systemeigenschaften wie Funktionalität, Leistung, Benutzungsschnittstelle, Portierbarkeit, … im Pflichtenheft
Bestimmen von Testfällen
Festlegung erforderlicher Dokumentationsdokumente
Anforderungsanalyse Ergebnisse (3)
Pflichtenheft = Anforderungsanalysedokument
Akzeptanztestplan
Benutzungshandbuch (1-te Version)
Systementwurf Aufgaben (4)
Programmieren-im-Großen = Entwicklung eines Bauplans
Grobentwurf, der System in Teilsysteme/Module zerlegt
Auswahl bereits existierender Software-Bibliotheken, Rahmenwerke, …
Feinentwurf, der Modulschnittstellen und Algorithmen vorgib
Ergebnisse des Systementwurfs (2)
Entwurfsdokument mit Software-Bauplan
detailierte(re) Testpläne
Aufgaben von Codieren und Modultests (4)
Programmieren-im-Kleinen = Implementierung einzelner Module
Einhaltung von Programmierrichtlinien
Code-Inspektionen kritischer Modulteile (Walkthroughs)
Test der erstellten Module
Ergebnisse Codieren und Modultest (4)
Menge realisierter Module
Implementierungsberichte (Abweichungen vom Entwurf, Zeitplan, … )
technische Dokumentation einzelner Module
Testprotokolle
Aufgaben Integration und Systemtests (3)
Systemintegration = Zusammenbau der Modul
Gesamtsystemtest in Entwicklungsorganisation durch Kunden (alpha-Test)
Fertigstellung der Dokumentation
Ergebnisse Integration und Systemtests (4)
fertiges System
Benutzerhandbuch
technische Dokumentation
Aufgaben Auslieferung und Installation (3)
Auslieferung an ausgewählte (Pilot-)Benutzer (beta-Test)
Auslieferung an alle Benutzer
Schulung der Benutzer
Ergebnis Auslieferung und Installation (2)
Akzeptanztestdokument
Aufgaben Wartung (3)
ca. 20% Fehler beheben (corrective maintenance)
ca. 20% Anpassungen durchführen (adaptive maintenance)
ca. 50% Verbesserungen vornehmen (perfective maintenance)
Ergebnis Wartung (3)
Software-Problemberichte (bug reports)
Software-Änderungsvorschläge
neue Software-Versionen
Probleme Wasserfallmodel (6)
zu Projektbeginn nur ungenaue Kosten- u. Ressourcenschätzungen möglich
Pflichtenheft kann nie Umgang mit fertigem System ersetzen, das erste sehr spät entsteht (Risikomaximierung)
Es gibt Fälle, in denen zu Projektbeginn kein vollständiges Pflichtenheft erstellt werden kann (weil Anforderungen nicht klar)
Anforderungen werden früh eingefroren, notwendiger Wandel (aufgrund organisatorischer, politischer, technischer, … Änderungen) nicht eingeplant
strikte Phaseneinteilung ist unrealistisch (Rückgriffe sind notwendig)
Wartung mit ca. 60% des Gesamtaufwandes ist eine Phase
Die 9 Phasen des V-Models
Systemanforderungsanalyse: Gesamtsystem einschließlich aller Nicht-DV-Komponenten wird beschrieben (fachliche Anforderungen und Risikoanalyse)
Systementwurf: System wird in technische Komponenten (Subsysteme) zerlegt, also die Grobarchitektur des Systems definiert
Softwareanforderungsanalyse: technischen Anforderungen an die bereits identifizierten Komponenten werden definiert
Softwaregrobentwurf: Softwarearchitektur wird bis auf Modulebene festgelegt
Softwarefeinentwurf: Details einzelner Module werden festgelegt
Softwareimplementierung: wie beim Wasserfallmodell (inklusive Modultest)
Software-/Systemintegration: schrittweise Integration und Test der verschiedenen Systemanteile
Überleitung in die Nutzung: entspricht Auslieferung bei Wasserfallmodell
Def. Forward Engineering
Das fertige Softwaresystem ist Ergebnis des Entwicklungsprozesses. Ausgehend von Anforderungsanalyse (Machbarkeitsstudie) wird ein neues Softwaresystem entwickel:
Anforderungen -> Design -> Code
Def. Reverse Engineering
Das vorhandene Software-System ist Ausgangspunkt der Analyse. Ausgehend von existierender Implementierung wird meist „nur“ das Design rekonstruiert und dokumentiert. Es wird (noch) nicht das betrachtete System modifiziert.
Anforderung <- Design <- Code
Def. Reengineering
Sanierung eines vorhandenen Software-Systems bzw. seiner Neuimplementierung. Dabei werden die Ergebnisse des Reverse Engineerings als Ausgangspunkt genommen.
Anforderungen <- Design -> Code
Zuletzt geändertvor 6 Monaten