Beruflich Dokumente
Kultur Dokumente
2: Softwareprozesse
1. Prozessmodelle
2. Prozessaktivitäten
3. Umgang mit Änderungen und der Rational Unified Process
4. Verbesserung der Prozesse
Lernziele
Verständnis von Softwareprozessen und Prozessmodellen für Software
Kenntnis von 3 generischen Prozessmodellen und ihrer Anwendung
Kenntnis der grundlegenden Prozessaktivitäten bei Anforderungsanalyse
(Requirements Eng.), Entwicklung, Test und Weiterentwicklung (Evolution)
Verständnis, warum Umgang mit Änderungen ein integraler Bestandteil ist
Informatik, Software Engineering 1, A. Reichenbach Seite 2
Softwareprozesse
Spezifikation
Kunden und Entwickler definieren, was das System machen soll.
Entwurf (Design) und Implementierung
Definition der Organisation des Systems und seine Implementierung.
Validierung
Sicherstellen, daß die Spezifikationen erfüllt sind
(und die Kundenanforderungen).
Evolution
Anpassung des Systems aufgrund von Änderungen der Kunden- und
Marktanforderungen.
Anforderungs-
analyse und
-definition
Entwurf des
Systems und
der Software
Implementierung
und
Modultests
Integration
und
Systemtests
Informatik, Software Engineering 1, A. Reichenbach Betrieb und Wartung Seite 10
Phasen des Wasserfallmodells
Abgrenzungsproblem
Klar voneinander abgegrenzte Projektphasen sind oft unrealistisch
Der Übergang zwischen den Phasen ist fließend: Teile des Systems können
sich noch in Planung befinden, während andere schon in der Implementierung
oder im Gebrauch sind.
Abfolgeproblem
Die nächste Phase sollte nicht beginnen, bevor die vorherige abgeschlossen
wurde. In der Praxis überlappen die Phasen.
Softwareentwicklung ist kein einfacher, linearer Prozess, sondern umfaßt ua
Rückkopplungen ➔ ggf Aktualisierung von Dokumente
Fazit
Das Wasserfallmodell sollte nur verwendet werden, wenn
die Anforderungen sehr genau spezifiziert sind und sich
sehr wahrscheinlich während der Entwicklung nicht
ändern. Sehr kompakte, kritische Systeme profitieren uU
von sehr detailierter früher Anforderungsanalyse und
integrativem Entwurf des Gesamtsytems.
Aus Managementsicht
Der Prozess ist nicht sichtbar.
Manager benötigen regelmäßig Deliverables, um den Forschritt zu messen.
Wenn Systeme schnell entwickelt werden, sind Dokumente jeder Version des
Systems nicht kosteneffizient.
Die Struktur des Systems wird wahrscheinlich mit dem
Hinzufügen neuer Inkremente langsam inkonsistent.
Außer: Es werden Zeit und Kosten für Refactoring aufgewendet.
Ansonsten: Regelmäßige Änderungen führen zu Inkonsistenzen in der Struktur
und neue Änderungen einzupflegen wird immer aufwändiger und teurer.
Inkrementelle Auslieferung ist in der Praxis schwierig
Einrichten und testen von Inkrementen stört ggf normale Arbeitsabläufe.
Informatik, Software Engineering 1, A. Reichenbach Seite 27
Nachteile inkrementeller Entwicklung
Benutzeranforderungen
Grobe Aufstellung der Anforderungen aus Endbenutzersicht.
Systemanforderungen
Detailierte Aufstellung der Anforderungen unter Einbeziehung der
Systemumgebung.
Komponententests
Individuelle Komponenten werden unanhängig voneinander getestet.
Komponenten können Funktionen oder Objekte sein oder kohärente Gruppen
dieser Elemente.
Entwicklertools zur Testautomatisierung: JUnit, NUnit, CppUnit etc
Systemtests
Test des Gesamtsystems.
Test auf komponentenübergreifende Funktionen ist besonders wichtig.
Kundentests (Akzeptanz- und Abnahmetests)
Mit Kundendaten und Stakeholdern testen um zu evaluieren, ob das System
die Kundenanforderungen erfüllt.
Änderungen antizipieren
In den Softwareprozess Aktivitäten einbauen, mit denen mögliche Änderungen
abgefangen werden können bevor zu viel umgebaut werden muss.
zB kann erst einmal ein Prototyp erstellt werden, mit dem Schlüssel-
anforderungen dem Kunden demonstriert und mit ihm abgeglichen werden
können.
Toleranz gegenüber Änderungen
Den Softwareprozess so aufsetzen, dass Änderungen mit möglichst kleinen
Kosten untergebracht werden können.
Normalerweise durch einen inkrementellen Prozess abgebildet. Änderungen
können dann in noch nicht entwickelten Inkrementen mit implementiert
werden, bzw es muss nur einer der vorherigen Inkremente neu entwickelt
werden.
Prototyping
Eine Vor-Version des Systems oder System-Teils wird schnell
entwickelt, um die Kundenanforderungen gegenzuprüfen und
die Machbarkeit der Entwurfsentscheidungen zu testen.
Inkrementelle Auslieferung
Das System wird Stück für Stück an den Kunden ausgeliefert,
der es ausprobieren kann und seine Meinung rückmeldet.
Erhöhte Benutzerfreundlichkeit
Näher am wirklichen Bedarf der Nutzer
Bessere Entwurfsqualität
Bessere Wartbarkeit
Weniger Entwicklungsaufwand
Inkrementelle Entwicklung
Inkrementelle Entwicklung des Systems und Evaluierung jedes Inkrements
bevor die Entwicklung des nächsten Inkrements in Angriff genommen wird.
Das ist der Normalfall bei agilen Methoden
Evaluierung wird von Stakeholdern durchgeführt
Inkrementelle Auslieferung
Einsatz eines Inkrements für den Gebrauch beim Endbenutzer
Realistischere Evaluation bgl der praktischen SW Benutzung
Ersatz-Systeme können normalerweise nicht so entwickelt werden, da die
frühen Inkremente weniger Funktionalität als das Altsystem bereitstellt
Kombiniert die
Vermeidung von
Änderungen mit
Änderungstoleranz
Hoher Managementaufwand
Für kleinere und mittlere Projekte eher nicht geeignet
Oft nicht anwendbar, wenn ein anderes Modell mit
entsprechender Dokumentation vertraglich verienbart
ist.
Erfordert Erfahrung in der Risikoschätzung.
Muss für den Einsatz verfeinert werden.
Dynamische Perspektive
Anfangsphase
Anfangs- Ausarbeitung Entwicklungs- Umstellung
phase phase
wikipedia.org
Informatik, Software Engineering 1, A. Reichenbach Seite 80
Empfohlene Vorgehensweisen im RUP
Wichtigeste Neuerungen
Trennung der Phasen und Prozessaktivitäten
Phasen sind dynamisch und haben Ziele
Arbeitsabläufe sind statisch und sind fachliche Aktivitäten, die nicht mit einer
einzelnen Phase verknüpft sind. Sie können während der Entwicklung
verwendet werden, um Ziele der einzelnen Phasen zu erreichen.
Erkenntnis, dass Bereitstellung der Software in einer Benutzerumgebung Teil
des Prozesses ist
Empfehlung
RUP ist nicht für alle Entwicklungstypen geeignet
zB nicht für die Entwicklung von eingebetteter Software
RUP stellt jedoch einen Ansatz dar, der potentiell die drei allgemeinen
Vorgehensmodelle mit ihren Stärken kombiniert.
Informatik, Software Engineering 1, A. Reichenbach Seite 83
Diskussion
Prozessreifungsansatz
Konzentriert sich auf die Verbesserung von Prozess- und Projektmanagement
und die Umsetzung passender und bewährter Software Engineering Praktiken.
Der Prozessreifegrad zeigt an, in wie weit technische und Management-
Praktiken im Software Entwicklungsprozess umgesetzt worden sind.
Agiler Ansatz (➔ Vertiefung am Ende des Semesters)
Konzentriert sich auf iterative Entwicklung und Reduktion von Overhead im
Software Entwicklungsprozess.
Hauptcharakteristik agiler Methoden sind die rasche Auslieferung von
Funktionalität und starke Ausrichtung auf Einbeziehung von Anforderungs-
änderungen.
Zeit
die eine Prozessaktivität benötigt
zB Zeitspanne oder benötigte Leistung zur Fertigstellung einer Aktivität oder
eines Prozesses
Ressourcen
die für einen Prozess oder eine Aktivität benötigt werden
zB Gesamtleistung in Personentagen
Häufigkeit
des Auftretens bestimmter Ereignisse
zB Anzahl entdeckter Fehler