Sie sind auf Seite 1von 94

Software Engineering 1

2: Softwareprozesse

Prof. Dr. rer. nat. Alex Reichenbach


Themen der Veranstaltung

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

 Ende 60er: Softwareentwicklung als Kunst


 Situation: Software Misere unerträglich
 ➔ Softwareentwicklung als Ingenieursdisziplin

 NATO Konferenz 1969: Begriff des Software


Engineerings
 Einführung eines Prozessmodells für Software
Engineering

Informatik, Software Engineering 1, A. Reichenbach Seite 3


Der Softwareprozess

Definition: Ein Softwareprozess ist ein strukturiertes Set


zusammengehöriger Aktivitäten, die benötigt werden, um
ein Software-System zu entwickeln.

Es gibt viele verschiedene Softwareprozesse, aber alle


beinhalten vier grundlegende Aktivitäten:
Spezifikation, Entwurf, Validierung, Evolution

Informatik, Software Engineering 1, A. Reichenbach Seite 4


Grundlegende Aktivitäten in SW Prozessen

 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.

Informatik, Software Engineering 1, A. Reichenbach Seite 5


Software Prozessmodell

Definition: Ein Software Prozessmodell ist eine abstrakte


Repräsentation eines Prozesses. Es liefert die
Beschreibung eines Prozesses aus einer bestimmten
Perspektive.

Informatik, Software Engineering 1, A. Reichenbach Seite 6


Beschreibungen eines SW Prozesses

Außer „offensichtlichen“ Aktivitäten wie „Spezifikation eines


Datenmodells“ oder „Design einer Benutzerschnittstelle“ können
Beschreibungen eines SW Prozesses noch Folgendes beinhalten:

 Produkte, die das Ergebnis einer Prozessaktivität sind, zB


Architekturmodell, Software-Package
 Rollen, die die Verantwortlichkeiten der zuständigen Personen
definieren, zB Projektmanager, Entwickler
 Vor- und Nachbedingungen für Prozessaktivitäten, zB
Fertigstellung oder Aufnahme einer anderen Aktivität

Informatik, Software Engineering 1, A. Reichenbach Seite 7


Plangesteuerte und agile Prozesse

 Bei plangesteuerten Prozessen werden alle Aktivitäten


im Vorfeld geplant und der Projekt-Fortschritt wird
gegen diesen Plan gemessen.
 Bei agilen Prozessen wird inkrementell geplant, damit
läßt sich der Prozess einfacher veränderbaren
Kundenanforderungen anpassen.
 In der Praxis bestehen die meisten Prozesse auf einer
Mischung beider Strategien.
 Es gibt keine richtigen oder falsche Softwareprozesse!
Informatik, Software Engineering 1, A. Reichenbach Seite 8
Software Prozessmodelle

 Das Wasserfallmodell (waterfall model)


 Plangesteuerter Prozess.
 Abgegrenzte Phasen von Spezifikation und Entwicklung.
 Inkrementelle Entwicklung (incremental development)
 Spezifikation, Entwicklung und Validierung sind verzahnt.
 Das System wird als Folge von Versionen (Inkrementen) mit zunehmender
Funktionalität entwickelt. Kann plangesteuert oder agile sein.
 Integration und Konfiguration (re-use oriented SW engineering)
 Das System wird vorrangig aus vorhandenen, konfigurierbaren Komponenten
zusammengesetzt. Kann plangesteuert oder agile sein.
 In der Praxis werden große Systeme meist nach einem hybriden
Prozessmodell entwickelt.
Informatik, Software Engineering 1, A. Reichenbach Seite 9
Das Wasserfallmodell
Erstes veröffentlichtes Modell für
Softwareentwicklung (Royce, 1970).

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

1. Anforderungsanalyse und -definition


 Anforderungen werden identifiziert und
die Dienstleistungen, Einschränkungen
und Ziele des Systems werden in
Zusammenarbeit mit den System-
benutzern aufgestellt.
 Dann Detailierung der Anforderungen und Definition der
Systemspezifikationen.

Informatik, Software Engineering 1, A. Reichenbach Seite 11


Phasen des Wasserfallmodells

2. Entwurf des Systems und der


Software
 Beim Systementwurf werden
die Anforderungen entweder Hardware-
oder Softwaresystemen zugewiesen, indem
eine übergeordnete Systemarchitektur
festgelegt wird.
 Der Softwareentwurf konzentriert sich auf das Erkennen und
Beschreiben der grundlegenden abstrakten Softwaresysteme
und ihrer Beziehung untereinander.

Informatik, Software Engineering 1, A. Reichenbach Seite 12


Phasen des Wasserfallmodells

3. Implementierung und Modultests


 Der Softwareentwurf wird durch eine
Menge an Programmen und Programm-
einheiten (Module) umgesetzt.
 Jedes Modul wird einzeln getestet ➔ Modultest
 Der Modultest stellt sicher, dass jede Einheit seine Spezifikation
erfüllt.

Informatik, Software Engineering 1, A. Reichenbach Seite 13


Phasen des Wasserfallmodells

4. Integration und Systemtests


 Die ganzen Programmeinheiten werden
integriert und als Ganzes getestet
➔ Systemtest
 Der Systemtest stellt sicher, dass sämtliche
Softwareanforderungen erfüllt werden.
 Nach den Tests wird das System an den Kunden ausgeliefert
➔ Abnahmetests durch den Kunden

Informatik, Software Engineering 1, A. Reichenbach Seite 14


Phasen des Wasserfallmodells

4. Betrieb und Wartung


 Ist normalerweise die längste Phase des
Produktlebenszyklus.
 Das System wird installiert und zum
Gebrauch freigegeben.
 Zur Wartung gehören
 Korrigieren bisher nicht entdeckter Fehler
 Verbesserung der Implementierung von Systemeinheiten
 Verbesserung des Systems im Falle neuer Anforderungen

Informatik, Software Engineering 1, A. Reichenbach Seite 15


Wasserfallmodell

 Jede Phase hat Start- und Endpunkte mit eindeutig


definierten Ergebnissen.
 In Meilensteinsitzungen am jeweiligen Phasenende
werden die Ergebnisdokumente verabschiedet
 Lastenheft
 Pflichtenheft
 Testprotokolle
 Produktdokumentation

Informatik, Software Engineering 1, A. Reichenbach Seite 16


Lastenheft (Anforderungsspezifikation)

 „Vom Auftraggeber festgelegte Gesamtheit der Forderungen an


die Lieferungen und Leistungen eines Auftragnehmers innerhalb
eines Auftrages“ (DIN 69901-5)
 Ergebnis einer Anforderungsanalyse
 Das Lastenheft beschreibt in der Regel, was und wofür etwas
gemacht werden soll.
 Formulierung der Anforderungen so allgemein wie möglich und so
einschränkend wie nötig.
 Auf Grundlage des Lastenhefts wird durch mögliche
Auftragnehmer ein Pflichtenheft erstellt.
 Was will der Kunde?
Informatik, Software Engineering 1, A. Reichenbach Seite 17
Pflichtenheft (Fachspezifikation)

 „Vom Auftragnehmer erarbeitetes Realisierungsvorhaben


aufgrund der Umsetzung des vom Auftraggeber vorgebenen
Lastenhefts.“ (DIN 69901-5)
 Beschreibt in konkreter Form, wie der Auftragnehmer die
Anforderungen des Auftraggebers zu lösen gedenkt, also das wie
und womit.
 Akzeptanz des Pflichtenhefts durch den Auftraggeber
➔ Beginn der Umsetzungsarbeit beim Auftragnehmer.
 Was genau wollen wir dem Kunden erstellen?

Informatik, Software Engineering 1, A. Reichenbach Seite 18


Probleme und Nachteile 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

Informatik, Software Engineering 1, A. Reichenbach Seite 19


Probleme und Nachteile des Wasserfallmodells

 Unflexibel gegenüber Änderungen und im Vorgehen.


 Frühes Festschreiben der Anforderungen oft problematisch, da bei
(wahrscheinlichen) Änderungen hohe Kosten entstehen.
 Software wird erst lange nach Beginn des Entwicklungszyklus
tatsächlich eingeführt und genutzt
 später Return on Investment
 Einführung des vollständigen Systems zu einem bestimmten
Zeitpunkt (Big Bang)
 Fehler können erst spät erkannt werden

AIB, Software Engineering 1, Massold/Krauskopf Seite 20


Vorteile des Wasserfallmodells

 Transparenter Prozess (klare Abgrenzung der Phasen)


 Erzeugt in jeder Phase Dokumentationen. Projektfortschritt kann
gegenüber dem Entwicklungsplan geprüft werden.
 Sehr effektives Modell bei stabilen Anforderungen und klarer
Abschätzung von Kosten und Umfang.
 Bei Großprojekten mit paralleler Entwicklung an verschiedenen
Standorten hilft so ein Vorgehen bei der Koordination der
Teilprojekte.

Informatik, Software Engineering 1, A. Reichenbach Seite 21


Wasserfallmodell mit Rücksprung

 Hauptproblem des Wasserfallmodells


 Starre Aufteilung des Projekts in verschiedene Phasen
 Es müssen früh Verbindlichkeiten eingegangen werden, was es schwer macht,
auf neuen Kundenanforderungen zu reagieren.
➔ Weiterentwicklung zum
Wasserfallmodell mit Rücksprung
➔ Erweiterung um iterative Aspekte

Informatik, Software Engineering 1, A. Reichenbach Seite 22


Wasserfallmodell

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.

Informatik, Software Engineering 1, A. Reichenbach Seite 23


Inkrementelle Entwicklung

Informatik, Software Engineering 1, A. Reichenbach Seite 24


Inkrementelle Entwicklung

 Wird heutzutage am Häufigsten eingesetzt


 Im plangesteuerten Ansatz
 Systeminkremente werden im Voraus bestimmt
 Im agilen Ansatz
 Frühe Systeminkremente werden ermittelt
 Die Entwicklung späterer Inkremente hängt vom
Projektfortschritt und den Prioritäten des Kunden ab.

Informatik, Software Engineering 1, A. Reichenbach Seite 25


Vorteile inkrementeller Entwicklung

 Jedes Inkrement enthält einen (weiteren) Teil der Funktionalität.


 Anpassungen an Anforderungsänderungen ist leichter möglich.
 Es muß wesentlich weniger Analyse und Dokumentation neu gemacht werden
als beim Wasserfallmodell.
 Rückmeldungen des Kunden lassen sich einfacher anhand bereits
fertiggestellter und getesteter Teile einholen und integrieren.
 Kunden können den aktuellen Entwicklungsstand während Demonstrationen
einsehen und kommentieren.
 Bereits nutzbare Software (mit Teilfunktionalität) kann schneller
ausgeliefert werden.
 Kunden erhalten früher Zugang zu und Nutzen von der Software als es mit
dem Wasserfallmodell möglich wäre.
Informatik, Software Engineering 1, A. Reichenbach Seite 26
Nachteile inkrementeller Entwicklung

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

Aus organisatorischer Sicht


 Große Organisationen haben bürokratische Handlungsabläufe,
die sich im Laufe der Jahre etabliert haben
➔ oft Widerspruch zur inkrementellen Entwicklung
 Bürokratische Handlungsabläufe basieren oft auf gesetzlichen
Regelungen
 Vorschriften zur Rechnungslegung
 Veränderungen von Geschäftsabläufen sind wegen Abhängigkeiten zwischen
verschiedenen Prozessen uU nicht möglich.

Informatik, Software Engineering 1, A. Reichenbach Seite 28


Integration und Konfiguration

 Vorwort: In einem Großteil der Softwareprojekte wird Quellcode


sowieso (oft informell) wiederverwendet.
 Der Ansatz basiert auf Software Wiederverwendung (re-use) und
schafft Systeme, die vorwiegend aus der Integration von bereits
existierenden Komponenten oder Anwendungssystemen bestehen.
 Diese Komponenten sind meist zur Wiederverwendung geschaffen.
 Die wiederverwendeten Elemente können uU konfiguriert werden,
um ihre Funktionalität an spezifische Kundenanforderungen
anzupassen.
 Ist heutzutage ein gängiger Ansatz, um viele Arten von
Unternehmensanwendungssoftware zu erstellen.
Informatik, Software Engineering 1, A. Reichenbach Seite 29
Arten wiederverwendbarer Software

 Stand-alone Anwendungen, die nur noch konfiguriert


werden müssen (manchmal COTS – commercial-off-
the-shelf – genannt)
 Sammlung von Objekten, die als Package entwickelt
wurden, um mit einem Komponenten Framework wie
.NET oder J2EE integriert zu werden.
 Web Services, die gemäß Service Standards
entwickelt wurden und die remote ausgeführt werden.

Informatik, Software Engineering 1, A. Reichenbach Seite 30


Wiederverwendungsorientierte SW Entwicklung

 Spezifizierung der Anforderungen


 Passende Software finden und evaluieren
 Anforderungen anpassen
 Konfiguration des Anwendungssystems
 Adaptation und Integration der Komponenten
Informatik, Software Engineering 1, A. Reichenbach Seite 31
Vor- und Nachteile von Wiederverwendung

+ Reduzierte Kosten und Risiken, da weniger


Software von Grund auf entwickelt wird.
+ Schnellere Auslieferung und Einsatz des Systems.
− Kompromisse bzgl der Anforderungen sind
unumgänglich, so dass die Benutzeranforderungen
ggf nicht voll erfüllt sind.
− Keine Kontrolle über die Weiterentwicklung der
benutzen Elemente.

Informatik, Software Engineering 1, A. Reichenbach Seite 32


Diskussion

 Welches generische Softwareprozessmodell würden Sie für die


folgenden Systeme verwenden und wieso?
 Das ABS System eines Autos
 Ein Buchhaltungssystem für die Hochschule, welches ein Altsystem ersetzt
 Ein interaktives Reiseplanungssystem, welches dem Benutzer hilft, seine
Reise mit möglichst geringem CO2 Footprint zu planen

 Warum benötigt man bei dem Wiederverwendungsansatz 2


unterschiedliche Anforderungsanalysen?

Informatik, Software Engineering 1, A. Reichenbach Seite 33


Prozessaktivitäten

 Reale Softwareprozesse bestehen aus einer verzahnten Abfolge


von technischen, kollaborativen und Management Aktivitäten mit
dem Endziel, ein Softwaresystem zu spezifizieren, entwerfen,
implementieren und testen.
 Die vier grundlegenden Prozessaktivitäten (Spezifikation,
Entwicklung, Validierung und Evolution) sind in jedem realen
Entwicklungsprozess anders organisiert.

Informatik, Software Engineering 1, A. Reichenbach Seite 34


Die Anforderungsanalyse (Requirements Engineering)

Informatik, Software Engineering 1, A. Reichenbach Seite 35


Software Spezifikation

Definition: Die Software Spezifikation ist der Prozess in


dem festgelegt wird, welche Funktionalitäten benötigt
werden und unter welchen Bedingungen das System
entwickelt und betrieben werden soll.

 Benutzeranforderungen
 Grobe Aufstellung der Anforderungen aus Endbenutzersicht.
 Systemanforderungen
 Detailierte Aufstellung der Anforderungen unter Einbeziehung der
Systemumgebung.

Informatik, Software Engineering 1, A. Reichenbach Seite 36


Software Spezifikation

 Erhebung und Analyse der Anforderungen


 Was benötigen die „Stakeholder“ bzw was erwarten sie?
Stakeholder: Jeder, der von dem System betroffen ist.
 Spezifikation der Anforderungen
 Detailierung der Anforderungen
 Validierung der Anforderungen
 Überprüfung der Gültigkeit der
Anforderungen

Informatik, Software Engineering 1, A. Reichenbach Seite 37


Software Spezifikation

1. Erhebung und Analyse der


Anforderungen
 Ableitung der Systemanforderungen
 Beobachtung bestehender Systeme
 Interviews mit potentiellen Benutzern bzw Käufern
 Aufgabenanalyse
 etc
 Entwicklung eines oder mehrerer Systemmodelle und
Prototypen kann nötig sein ➔ Verbesserung des
Verständnisses des zu spezifizierenden Systems.

Informatik, Software Engineering 1, A. Reichenbach Seite 38


Software Spezifikation

2. Spezifikation der Anforderungen


 Umsetzung der in der Analyse
gesammelten Informationen in ein
Dokument (Anforderungsspezifikation)
 Zwei Arten von Anforderungen
 Benutzeranforderungen: abstrakte Beschreibung des
Systemanforderungen für den Kunden und den Endbenutzer.
 Systemanforderungen: detailierte Auflistung der Funktionen, die
das System zur Verfügung stellen soll.

Informatik, Software Engineering 1, A. Reichenbach Seite 39


Software Spezifikation

3. Validierung der Anforderungen


 Prüfen, ob Anforderungen realistisch,
konsistent und vollständig sind
 Erkennung von Inkonsistenzen und Fehlern
in der Anforderungsspezifikation.
 Änderung der Anforderungsspezifikation hinsichtlich der
gefundenen Fehler.

Informatik, Software Engineering 1, A. Reichenbach Seite 40


Software Entwurf und Implementierung

Definition: Entwurf und Implementierung bedeutet, aus


der Systemspezifikation ein lauffähiges System zu
erstellen.

 Software Entwurf (Design)


 Entwurf einer Softwarestruktur, die die Spezifikation verwirklicht.
 Implementierung (Erstellung)
 Übersetzung der Struktur in ein lauffähiges Programm.
 Entwurf und Implementierung sind iterative Prozesse, die in einer
engen Beziehung stehen und miteinander verwoben sein können.

Informatik, Software Engineering 1, A. Reichenbach Seite 41


Generelles Modell eines Entwurfsprozesses

Informatik, Software Engineering 1, A. Reichenbach Seite 42


Entwurfsaktivitäten

 Entwurf der Architektur


 Entwurf der Gesamtstruktur des Systems, Aufteilung in Hauptkomponenten
(Untersysteme oder Module), Definition ihrer Beziehungen zueinander und
ihrer Verteilung.
 Entwurf der Datenbank bzw Datenstrukturen
 Entwurf der Datenstrukturen und wie diese, wenn
zutreffend, in einer Datenbank repräsentiert werden.
 Entwurf der Schnittstellen
 Definition der Schnittstellen zwischen den Komponenten.
 Auswahl und Entwurf der Komponenten
 Suche nach wiederverwertbaren Komponenten bzw wenn nicht verfügbar,
Entwurf der Funktionalität.

Informatik, Software Engineering 1, A. Reichenbach Seite 43


Implementierung

 Die Software wird entweder durch Eigenprogrammierung


oder durch Konfiguration von Komponenten erstellt.
 Entwurf und Implementierung ist bei den meisten
Software Systemen ein verzahnter Prozess.
 Programmierung ist eine individuelle Aktivität, die
keinem Standardprozess folgt.
Sie dürfen kreativ sein! ☺
 Debugging ist der Prozess, mit dem man Fehler im
Programm findet und behebt.
Informatik, Software Engineering 1, A. Reichenbach Seite 44
Validierung von Software

 Verifizierung und Validierung (V & V) soll belegen,


dass ein System seiner Spezifikation genügt und die
Anforderungen des Kunden erfüllt.
 V & V enthält Reviews und Systemtests.
 Für Systemtests werden auf Basis der Anforderungs-
dokumente Testfälle abgeleitet und von dem System
mit Testdaten verarbeitet.
 Testen ist die am häufigsten ausgeführte V & V
Aktivität.
Informatik, Software Engineering 1, A. Reichenbach Seite 45
Stufen des Testens

 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.

Informatik, Software Engineering 1, A. Reichenbach Seite 46


Testphasen in einem plangesteuerten
SW Prozess (V-Modell)

Informatik, Software Engineering 1, A. Reichenbach Seite 47


Software Evolution

 Software ist von Natur aus flexibel und kann sich


ändern.
 Da sich Anforderungen durch Änderungen im
Geschäftsfeld ändern können, müssen sich
Geschäftsanwendungen weiterentwickeln können.
 Auch wenn Entwicklung und Evolution de facto
getrennte Aktivitäten sind, so wird diese Trennung
immer mehr nichtig, da immer weniger Systeme
komplett neu entwickelt werden.

Informatik, Software Engineering 1, A. Reichenbach Seite 48


Evolution eines Systems

Informatik, Software Engineering 1, A. Reichenbach Seite 49


Quellcode ändert sich immer ...

 Faustregel: Es ist einfacher (und spannender ☺) neuen Code zu


schreiben als den eigenen oder fremden Code zu warten oder
weiterzuentwickeln.
 Die meisten SW Entwickler hoffen, nie Code warten oder weiterentwickeln zu
müssen.
 Reality-Check: Genau das ist es aber, womit die meisten ihre Zeit
verbringen.

 Tipp: Es zahlt sich grundsätzlich aus, Code so einfach und


verständlich wie möglich zu halten – egal bei welcher
Vorgehensweise.

Informatik, Software Engineering 1, A. Reichenbach Seite 50


Diskussion

 Warum ist es wichtig, die Erhebung von


Benutzeranforderungen und Systemanforderungen zu
trennen?

Informatik, Software Engineering 1, A. Reichenbach Seite 51


Zusammenfassung

 Softwareprozesse sind die Aktivitäten, die für die


Produktion eines Softwaresystems nötig sind.
 Software Prozessmodelle sind eine abstrakte
Repräsentation dieser Prozesse.
 Generelle Prozessmodelle beschreiben die
Organisation von Softwareprozessen. Beispiele für
diese Prozessmodelle sind das Wasserfallmodell oder
inkrementelle Entwicklung.

Informatik, Software Engineering 1, A. Reichenbach Seite 52


Zusammenfassung

 In der Anforderungsanalyse wird die Spezifikation der Software


entwickelt.
 Entwurf und Implementierung setzen die spezifizieren
Anforderungen um mit dem Ergebnis eines lauffähigen Systems.
 Softwarevalidierung stellt sicher, dass das System den
Spezifikationen entspricht und den wahren Bedürfnissen der
Benutzer entspricht.
 Als Softwareevolution wird der Prozess bezeichnet, in dem das
System Änderungen erfährt, um neue Anforderungen zu erfüllen.
Fast jede Software muss sich weiterentwicklen um nützlich zu
bleiben.

Informatik, Software Engineering 1, A. Reichenbach Seite 53


Umgang mit Änderungen

 Änderungen sind in großen SW Projekten unvermeidbar.


 Veränderungen im Geschäftsfeld führen zu neuen oder veränderten
Systemanforderungen.
 Neue Technologien eröffnen neue Möglichkeiten, um die Implementierung zu
verbessern.
 Änderung von Plattformen ziehen Änderungen in den Anwendungen nach
sich.

 Um Änderungen umzusetzen, müssen sowohl die Anforderungen


neu analysiert werden als auch neue Funktionalitäten
implementiert werden.

Informatik, Software Engineering 1, A. Reichenbach Seite 54


Kosten von Änderungen reduzieren

 Ä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.

Informatik, Software Engineering 1, A. Reichenbach Seite 55


Umgang mit sich verändernden Anforderungen

 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.

Informatik, Software Engineering 1, A. Reichenbach Seite 56


Prototyping

 Definition: Ein Prototyp ist eine initiale Version eines


Systems, die verwendet wird, um Konzepte zu
demonstrieren und Entwurfsoptionen auszuprobieren.
 Ein Prototyp kann verwendet werden, um
 Während der Anforderungsanalyse die Erhebung und
Validierung der Anforderungen zu unterstützen
 Während der Entwurfsphase verschiedene Optionen
auszuprobieren und eine Benutzerschnittstelle zu entwerfen
 Während des Testens die Tests direkt aufeinanderfolgend
laufen lassen zu können
Informatik, Software Engineering 1, A. Reichenbach Seite 57
Vorteile des Prototypings

 Erhöhte Benutzerfreundlichkeit
 Näher am wirklichen Bedarf der Nutzer
 Bessere Entwurfsqualität
 Bessere Wartbarkeit
 Weniger Entwicklungsaufwand

Informatik, Software Engineering 1, A. Reichenbach Seite 58


Der Prototyping Prozess

Informatik, Software Engineering 1, A. Reichenbach Seite 59


Entwicklung des Prototypen

 Es gibt für schnelles Entwickeln eines Prototypen


(rapid prototyping) spezielle Sprachen und Werkzeuge
 Für gewöhnlich werden Funktionen weggelassen
 Prototypen sind auf Teile des Produkts zugeschnitten, die nicht
ausreichend verstanden werden
 Fehlerbehandlung und Sicherungsmaßnahmen sind oft nicht in
einem Prototypen implementiert
 Fokus eher auf funktionalen Anforderungen als auf nicht-
funktionalen Anforderungen wie Zuverlässigkeit oder
Sicherheit

Informatik, Software Engineering 1, A. Reichenbach Seite 60


Prototypen wegschmeißen!

 Prototypen sollten nach Gebrauch entsorgt werden.


Sie sind keine gute Grundlage für das eigentliche
System:
 Nicht-funktionale Anforderungen können uU nicht sinnvoll
integriert werden
 Prototypen sind meist undokumentiert
 Die Struktur ist oft nach mehreren Änderungen inkonsistent
geworden
 Der Prototyp wird wahrscheinlich nicht den normalen
Qualitätskriterien der Organisation entsprechen.

Informatik, Software Engineering 1, A. Reichenbach Seite 61


Inkrementelle Vorgehensweise

 Entwicklung und Auslieferung wird in inkrementelle


Teilprodukte heruntergebrochen, von denen jedes
einen Teil der Funktionalität zur Verfügung stellt.
 Benutzeranforderungen werden priorisiert und in
absteigender Priorität in die Inkremente eingeplant.
 Sobald die Entwicklung eines Inkrements begonnen
hat, sind die Anforderungen für diesen Teil fix.
Anforderungen für spätere Inkremente können sich
jedoch weiterhin entwickeln.

Informatik, Software Engineering 1, A. Reichenbach Seite 62


Inkrementelle Entwicklung und Auslieferung

 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

Informatik, Software Engineering 1, A. Reichenbach Seite 63


Inkrementelle Auslieferung

Informatik, Software Engineering 1, A. Reichenbach Seite 64


Vorteile inkrementeller Auslieferung

 Der Kunde erhält mit jedem Inkrement einen


Gegenwert, dh bereits recht früh nutzbare Funktionen.
 Frühe Inkremente übernehmen Aufgaben eines
Prototypen und helfen die Anforderungen für spätere
Inkremente genauer zu spezifizieren.
 Geringeres Risiko eines kompletten Scheitern des
Gesamtprojekts.
 Die Systemfunktionalitäten mit der höchsten Priorität
werden automatisch am meisten getestet.
Informatik, Software Engineering 1, A. Reichenbach Seite 65
Probleme bei inkrementeller Auslieferung

 Viele Systeme benötigen ein Set grundlegender Funktionen, die


von verschiedenen Teilen des Systems genutzt werden
 Diese Funktionen können anfangs nicht so einfach identifiziert werden, da die
Anforderungen an Teile des Systems immer erst vor dem entsprechenden
Inkrement detailiert geplant werden.
 Das Wesen inkrementeller Prozesse besteht darin, dass die
Spezifikation parallel zur Implementierung der Software stattfindet
 Das widerspricht in den meisten Firmen den Richtlinien der
Beschaffungsabteilungen, da die Spezifikation des Systems meist essentieller
Teil des Vertrags ist.

Informatik, Software Engineering 1, A. Reichenbach Seite 66


Fazit inkrementelle Auslieferung

 Inkrementelle Entwicklung und Auslieferung ist für


folgende Systeme nicht das beste Vorgehensmodell
 Sehr große Systeme
 Viele Teams sind parallel an der Entwicklung beteiligt
 Verschiedene Orte der Entwicklung
 Eingebettete Systeme
 Software hängt von der Hardwareentwicklung ab
 Kritische Systeme
 Alle Anforderungen müssen zuerst komplett und sauber analysiert
sein, um Information- und Betriebssicherheit zu gewährleisten

Informatik, Software Engineering 1, A. Reichenbach Seite 67


Spiralmodell
nach Boehm
(1988)

Kombiniert die
Vermeidung von
Änderungen mit
Änderungstoleranz

Informatik, Software Engineering 1, A. Reichenbach Seite 68


Die Phasen des Spiralmodells

1. Festlegung der Ziele 1. 2.


 Spezifische Ziele für die nächste Phase
werden identifiziert und festgelegt.
2. Einschätzung und Verringerung der Risiken
 Risiken werden geschätzt und Maßnahmen
ergriffen, die größten Risiken zu minimieren.
3.
4.
3. Entwicklung und Validierung
 Ein Entwicklungsmodell wird gewählt, welches jedes der generischen Modelle
sein kann.
4. Planung
 Das Projekt wird überprüft und der nächste Umlauf der Spirale wird geplant.

Informatik, Software Engineering 1, A. Reichenbach Seite 69


Das Spiralmodell

 Großer Einfluß des Modells bei der Entwicklung


iterativer Modelle und Überlegungen zu risiko-
getriebenen Ansätzen in der Softwareentwicklung.
 Historisch – zu der Zeit wurde oft
 redundant entwickelt
 Benutzeranforderungen ignoriert
 unzuverlässige Software entwickelt
 ein Softwareprojekt ziemlich teuer

 Das Modell in Reinform wird selten für praktische


Softwareprojekte eingesetzt.
Informatik, Software Engineering 1, A. Reichenbach Seite 70
Vorteile des Spiralmodells

 Regelmäßige Überprüfung und uU neue Festlegung


des Prozessmodells, dieses ist nicht für die gesamte
Dauer des Projekts festgelegt.
 Erleichtert Wiederverwendung von Software durch
Betrachtung von Alternativen.
 Ermöglicht frühes Erkennen von Fehlern.
 Betont Qualitätsziele
 Integriert Entwicklung und Wartung

Informatik, Software Engineering 1, A. Reichenbach Seite 71


Nachteile des Spiralmodells

 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.

Informatik, Software Engineering 1, A. Reichenbach Seite 72


Diskussion

 Schlagen Sie weitere Aktivitäten vor, die fortlaufende


Veränderungen der Software unterstützen können.

Informatik, Software Engineering 1, A. Reichenbach Seite 73


Der Rational Unified Process (RUP)

 Objektorientiertes, aktivitätsgetriebenes Vorgehensmodell


 Hybridmodell aus den 3 generischen Modellen
 Entstanden durch Arbeit an der UML (Unified
Modeling Language) und ähnlichen Prozessen
 UML: grafische Modellierungssprache zur Spezifikation,
Konstruktion und Dokumentation von Software (s. nächste VL)
 Beschreibt üblicherweise 3 Perspektiven
 Dynamische P.: beschreibt die Phasen über die Zeit hinweg
 Statische P.: beschreibt die ausgeführten Prozessaktivitäten
 Praxisbezogene P.: empfiehlt Vorgehensweisen (good practice)Seite 74
Informatik, Software Engineering 1, A. Reichenbach
Phasen im Rational Unified Process

Iteration der Phasen

Anfangs- Ausarbeitung Entwicklungs- Umstellung


phase phase

 Dynamische Perspektive

Informatik, Software Engineering 1, A. Reichenbach Seite 75


Phasen im RUP Iteration der Phasen

 Anfangsphase
Anfangs- Ausarbeitung Entwicklungs- Umstellung
phase phase

 Einrichten des Geschäftsfalls (business case) für das System.


 Ausarbeitung
 Verständnis für die Anwendungsdomäne und die
Systemarchitektur entwickeln.
 Entwicklungsphase
 Entwicklung des Systems, Implementierung und Test.
 Umstellung
 Das System in der Geschäftsumgebung zum Einsatz bringen.
Informatik, Software Engineering 1, A. Reichenbach Seite 76
Iterationen im RUP

 Iterationen innerhalb einer Phase


 Jede Phase in sich läuft iterativ ab.
 Die Ergebnisse werden inkrementell entwickelt.
 Phasenübergreifende Iterationen
 Die Gesamtheit der Phasen kann inkrementell immer wieder
iteriert werden.

Informatik, Software Engineering 1, A. Reichenbach Seite 77


Statische Arbeitsabläufe im RUP
Arbeitsablauf Beschreibung
Business Modeling Die Geschäftsprozesse werden mittels Geschäfts-
anwendungsfällen (business use cases) modelliert.
Anforderungen Mit dem System interagierende Aktoren werden
identifiziert und Anwendungsfälle (use cases), die die
Systemanforderungen modellieren, werden entwickelt.
Analyse & Design Ein Entwurfsmodell wird erstellt und mittels diverser
(Entwurf) Modelle dokumentiert: Architekturmodelle, Kompo-
nentenmodelle, Objektmodelle und Sequenzmodelle
Implementierung Die Komponenten werden in strukturierten Unter-
Systemen implementiert. Code kann tlw von den
Entwurfsmodellen automatisch generiert werden.

Informatik, Software Engineering 1, A. Reichenbach Seite 78


Statische Arbeitsabläufe im RUP
Arbeitsablauf Beschreibung
Test Testung ist ein interativer Prozess, der mit der
Implementierung verzahnt ist. Der Systemtest folgt der
Fertigstellung des Systems.
Bereitstellung Ein Release wird erstellt, auf den entsprechenden
(deployment) Rechnern installiert und an die Benutzer verteilt.
Konfiguration und Unterstützender Arbeitsablauf, der sich mit
Change Management Änderungen des Systems befaßt.
Projektmanagement Unterstützender Arbeitsablauf, der die Entwicklung des
Systems verwaltet.
Umgebung Dieser Arbeitsablauf sorgt dafür, dass das
Entwicklungsteam die benötigten Ressourcen hat.

Informatik, Software Engineering 1, A. Reichenbach Seite 79


Zusammenhang von dynamischer und statischer Perspektive

wikipedia.org
Informatik, Software Engineering 1, A. Reichenbach Seite 80
Empfohlene Vorgehensweisen im RUP

 Entwickle Software iterativ


 Plane die Inkremente auf der Basis der Kundenprioritäten und
liefere Funktionalität mit höchster Priorität vorrangig aus.
 Verwalte die Anforderungen
 Kundenanforderungen sowie ihre Änderungen müssen explizit
dokumentiert sein.
 Benutze komponentenbasierte Architekturen
 Organisiere die Systemarchitektur als Set wiederverwendbarer
Komponenten.

Informatik, Software Engineering 1, A. Reichenbach Seite 81


Empfohlene Vorgehensweisen im RUP

 Modelliere Software graphisch


 Benutze graphische UML Modelle um statische und
dynamische Aspekte der Software darzustellen.
 Verifiziere die Software Qualität
 Versichere Dich, dass die Software den Qualitätsstandards
des Auftrags- und Arbeitgebers entspricht.
 Kontrolliere Änderungen der Software
 Verwalte Softwareänderungen mit einem System für
Änderungs- und Konfigurationsmanagement.

Informatik, Software Engineering 1, A. Reichenbach Seite 82


Fazit Rational Unified Process

 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

 Was ist der Vorteil davon, statische und dynamische


Sichten im RUP voneinander zu trennen?

Informatik, Software Engineering 1, A. Reichenbach Seite 84


Verbesserung von Prozessen

 Nicht nur Software entwickelt sich weiter, sondern


auch die Prozesse zur Entwicklung von Software.
 Softwareprozesse werden verbessert, um Qualität

 die Qualität von Software zuverbessern


 Kosten zu senken
 den Entwicklungsprozess zu beschleunigen Kosten Zeit

 Prozesse zu verbessern bedeutet, bestehende


Prozesse zu verstehen und diese dann anzupassen.

Informatik, Software Engineering 1, A. Reichenbach Seite 85


Verbesserungsansätze

 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.

Informatik, Software Engineering 1, A. Reichenbach Seite 86


Aktivitäten zur Prozessverbesserung

 Messen des Prozesses


 Messung von einem oder mehreren Attributen des Software
Prozesses oder Produkts ➔ Baseline für die Evaluierung
der Effektivität der Änderung.
 Analysieren des Prozesses
 Der aktuelle Prozess wird beurteilt und Schwächen sowie
Flaschenhals-Aktivitäten werden identifiziert. Prozessmodelle
zur Visualisierung des aktuellen Prozesses werden entwickelt.
 Ändern des Prozesses
 Voschlag von Prozessänderungen, die eine oder mehrer der Schwächen
adressieren. Nach Einführung der Änderung geht es wieder zum Messen, um
die Effektivität der Prozessänderung zu evaluieren.

Informatik, Software Engineering 1, A. Reichenbach Seite 87


Messen des Prozesses

 Sofern möglich, sollen quantitative Prozessmeßdaten (Metriken)


erhoben werden
 Wenn keine klar definierten Prozess-Standards vorhanden sind, müssen diese
erst einmal implementiert werden, bevor irgendwelche Messungen möglich
sind.
 Die Prozessmeßdaten sollen benutzt werden, um
Prozessverbesserungen zu evaluieren
 Es sollen nicht die Prozesse verändert werden, um die Prozessmeßdaten zu
verbessern!
 Der Antrieb hinter den Verbesserungen sollen sich aus Unternehmenszielen
herleiten.
 Hier kommen empirische Methoden zum Einsatz ...

Informatik, Software Engineering 1, A. Reichenbach Seite 88


Beispiele für Metriken

 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

Informatik, Software Engineering 1, A. Reichenbach Seite 89


Reifegrad der Kompetenz

Informatik, Software Engineering 1, A. Reichenbach Seite 90


Das CMU (SEI) Reifegradmodell (CMM)
 Das Capability Maturity Model (CMM) wurde ab 1986 am Software Engineering
Institute (SEI) der Carnegie Mellon University (CMU) entwickelt.
 Initiale Stufe: unkontrolliert
 Wiederholbare / gesteuerte Stufe
 Produktmanagement Prozeduren sind definiert und werden umgesetzt
 Definierte Stufe
 Produktmanagement Prozeduren und Strategien sind definiert und werden umgesetzt
 Gesteuerte / quantitativ gesteuerte Stufe
 Qualitätsmanagement Strategien sind definiert und werden umgesetzt
 Optimierende Stufe
 Strategien für Prozessverbesserungen sind definiert und werden umgesetzt
Informatik, Software Engineering 1, A. Reichenbach Seite 91
Diskussion

 Was sind die Vor- und Nachteile der Umsetzung des


Reifegradmodells?

Informatik, Software Engineering 1, A. Reichenbach Seite 92


Zusammenfassung

 Prozesse sollten Aktivitäten enthalten, die mit Anforderungs-


änderungen umgehen können. Prototypen sind nützlich, um sub-
optimale Entscheidungen bzgl Anforderungen und Entwurf zu
vermeiden.
 Prozesse können für iterative Entwicklung strukturiert werden, so
dass Änderungen möglich sind, ohne das Gesamtsystem zu
stören.
 Der Rational Unified Process ist ein aktuelles generisches
Prozessmodell, welches in Phasen (Anfangsp., Ausarbeitung,
Entwicklungsp., Umstellung) untergliedert ist, die Aktivitäten
(Anforderungen, Analyse, Entwurf, etc) jedoch von diesen Phasen
trennt.
Informatik, Software Engineering 1, A. Reichenbach Seite 93
Zusammenfassung

 Die grundlegenden Ansätze zur Verbesserung von Prozessen


sind
 Agiler Ansatz: Reduktion von Prozess-Overhead
 Prozessreifungsansatz: Verbesserung von Prozessmanagement und Einsatz
von Software Engineering Praktiken
 Das CMU Reifegradmodell definiert Reifegrade, die im Kern dem
Einsatz von Software Engineering Praktiken entsprechen.

Informatik, Software Engineering 1, A. Reichenbach Seite 94

Das könnte Ihnen auch gefallen