Grundlagen des Software Engineering: Prozesse und Modelle
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 5,65 KB
Was ist Software Engineering?
Die Untersuchung und Anwendung systematischer, wirtschaftlicher und messbarer Ansätze für die Entwicklung, den Betrieb und die Wartung von Software hoher Qualität.
Was ist Software?
Computerprogramme und die zugehörige Dokumentation.
Software Engineering bezieht sich auf Software-Systeme, die von Gruppen und nicht von Einzelpersonen entwickelt werden. Die Software muss den Anforderungen der Benutzer entsprechen, leicht zu pflegen sein, eine gute Leistung erbringen, zuverlässig und einfach zu bedienen sein.
Der Lebenszyklus von Software
- Requirements-Definition
- Analyse
- Projekt (Design)
- Coding (Implementierung)
- Tests
Requirements-Definition
Vor Beginn der Errichtung eines Systems sollte festgelegt werden, wie es verwendet wird, wie es mit den Nutzern interagiert und welche Funktionen es erfüllen soll.
Analyse
Die Analyse verfolgt folgende Ziele:
- Prüfung der Qualität der erhaltenen Anforderungen.
- Beschreibung der Anforderungen auf einem für Entwickler verständlichen Niveau.
Kurz gesagt: Die Analyse klärt, was das System tun sollte.
Projekt (Design)
Das Design betrifft die Umsetzung der Anforderungen. In dieser Phase werden die technischen Anforderungen an die Bauteile modelliert sowie die Plattform und die verwendeten Werkzeuge definiert.
Coding
Das Coding ist die Übersetzung der Design-Entscheidungen in eine bestimmte Programmiersprache.
Test
Software-Tests sind eine Aktivität der Qualitätssicherung. Das Hauptziel ist die Analyse der Softwarequalität, um sicherzustellen, dass sie den Bedürfnissen des Kunden entspricht. Die wichtigsten Arten von Tests sind: Unit-Tests, Integrationstests und Systemtests.
Testarten
- Unit-Test: Die niedrigste Teststufe, die in der Regel vom Entwickler durchgeführt wird.
- Integrationstests: Wenn die Einheiten geprüft wurden, werden sie zu größeren Einheiten integriert. Der Zweck ist zu testen, ob die verschiedenen Einheiten zusammen funktionieren.
- Systemtests: Das System läuft in einer realen oder testnahen Arbeitsumgebung.
Modell-Lebenszyklus
Eine abstrakte und vereinfachte Darstellung des Software-Entwicklungsprozesses, die in der Regel die wichtigsten Aktivitäten und Daten in der Produktion und Wartung von Software umfasst.
Annahme eines Modells
Die Annahme eines Lebenszyklus allein reicht für die Führung und Kontrolle eines Software-Projekts in der Praxis nicht aus. Weitere Merkmale sollten während der Lebensdauer eines Software-Produkts berücksichtigt werden:
- Organisation von Prozess-Aktivitäten
- Personal, Hardware und Software
- Betriebsverfahren
- Entwicklungspolitik und -beschränkungen
- Typen von Software
Merkmale der Modelle des Software-Lebenszyklus
Die grundlegenden Funktionen aller Modelle sind:
- Beschreibung der wichtigsten Etappen der Entwicklung.
- Festlegung der wichtigsten Aktivitäten jeder Phase.
- Definition der Produkte der einzelnen Phasen und der Versorgungsgüter für das Anfangsstadium.
- Bereitstellung eines Rahmens, auf dem die notwendigen Tätigkeiten zugeordnet werden können.
Die wichtigsten Modelle des Software-Lebenszyklus sind: Cascade Model, Incremental Model, Evolutionäres Modell, RAD Model, Prototyping, Spiral Model und das RUP-Modell.
Cascade Model (Wasserfallmodell)
Das älteste und am weitesten verbreitete Modell im Software-Engineering, das sich am konventionellen Engineering-Zyklus orientiert. Es erfordert einen systematischen und sequenziellen Ansatz.
Vorteile und Nachteile
Vorteile:
- Die Überprüfung am Ende jeder Phase erlaubt die Einbeziehung der Nutzer.
- Das Modell ermöglicht eine Konfigurationssteuerung.
- Jeder Schritt dient als Grundlage für den nächsten.
Nachteile:
- Der sequenzielle Ablauf wird in realen Projekten selten strikt eingehalten.
- Anforderungen müssen zu Beginn vollständig und korrekt vorliegen.
- Schwierige Bewertung des Fortschritts in frühen Stadien.
Prototyping
Hierbei wird in der ersten Phase ein Prototyp für den Anwender entwickelt, um die Systemanforderungen zu etablieren. Dies ist besonders attraktiv für große, komplexe Systeme oder wenn kein vorheriges System existiert.
Iteration
Software-Entwicklungsprozesse beinhalten oft Iterationen zwischen den Aktivitäten. In iterativen Prozessen kann die Spezifikation zusammen mit dem System entwickelt werden (z. B. inkrementell oder in Spiralmodellen).
Spiral-Entwicklung
Dieses Modell fügt dem Prozess Management-Aspekte hinzu:
- Risikoanalyse in regelmäßigen Abständen
- Planung
- Kontrolle
- Entscheidungsfindung
Der Ablauf erfolgt spiralförmig, wobei Risiken explizit während des gesamten Prozesses gelöst werden.
Inkrementelle Entwicklung
Anstatt das System als Ganzes zu liefern, erfolgt die Entwicklung in Schritten (Inkrementen), wobei jedes Inkrement einen Teil der Funktionalität liefert. Anforderungen werden priorisiert; die höchste Priorität wird in frühen Iterationen umgesetzt.
Inkrementeller Ansatz
Dieser Ansatz verbindet das Wasserfall-Modell mit evolutionären Schritten. Die wichtigsten Dienste (hohe Priorität) werden zuerst entwickelt. Jedes Inkrement kann intern einen Kaskaden- oder evolutionären Ansatz verfolgen.