Agile Softwareentwicklung
Das folgende Kapitel entstand aufgrund eines Fachgespräches mit Dr.-Ing. Dipl. Inform. Uwe Gühl, der gerade in Zusammenarbeit mit Dipl. Volkswirt Daud Alam ein Buch zu Projektmanagement erstellt. Das Buch soll unter dem Titel "Projektmanagement praxisnah" veröffentlicht werden.
Ein großes Problem in der Softwareentwicklung ist die Bewältigung der hohen Komplexität der zu entwickelnden Software. Bleiben auf dem Weg zum Endprodukt Tests von Einzelkomponenten aus, so passiert es häufig, dass nach einer längeren Entwicklungszeit das Projekt erfolglos abgebrochen werden muss.
Das Wesentliche bei der Agilen Softwareentwicklung sind deshalb zwei Dinge:
|
Insbesondere durch die Vereinbarung, auf jeder Entwicklungsstufe der Software funktionstüchtigen Code zu generieren wird die oben beschriebene "Komplexitätsfalle" gemieden.
Scrum
Eine weit verbreitete Spielart für "Agile Softwareentwicklung" ist die Scrum-Methode. Der Begriff Scrum kommt aus dem amerikanischen Football und stellt die Situation dar, in der sich die Manschaften bei Beginn des Spiels gegenüberstehen. Am einfachsten ist sie durch Spezifizierung der verschiedenen Rollen zu verstehen, die von den Projektteilnehmern eingenommen werden.
Product owner
|
Scrum-Master
|
Das Entwicklerteam
|
Bild 0-1: Rollen beim Software-Entwicklungsprozeß nach der Scrum-Methode (T1..Tn: Tasks/Aufgaben).
Ablauf eines Scrum basierten Projektes:
Vorarbeit
|
Sprint Planung
|
Sprint Abschluß
|
daily scrum
|
Bild 0-2: Taskplanungs-Board: Beim daily scrum werden die Tasks durchgesprochen und umgehangen von "initial" nach "in Arbeit", oder von "in Arbeit" nach "fertig".
Besonderheiten der Scrum-Methode
|
Mock
Nicht immer kann die Entwicklung so geplant werden, dass immer "User stories" formuliert werden können, die direkt produktiv einsetzbare Softwaremodule repräsentieren. Um dennoch das Paradigma der Agilen Softwareentwicklung an den Meilensteinen stets funktionierende Software vorliegen zu haben einzuhalten, wird oft die Anwendung des aktuell entwickelten Moduls simuliert.
Soll beispielsweise der zu entwickelnde Fuzzy-Regler für den Antrieb einer Laufkatze eingesetzt werden, so kann der "Mock" in einer Simulation der Laufkatze bestehen. Oft werden Mocks aber wesentlich einfacher konzipiert, als die reale Anwenderseite. So kann es in diesem Beispiel genügen, definierte Signale an den Regler zu geben, auf die die zu erwartende Reaktion bekannt ist.
Äquivalenzklassen
Auf einer viel niedrigen Ebene speziell für prozedurale Programme, gibt es die Testmethode der Äquivalenzklassen. Hier wird ein Softwaretest so durchgeführt, dass sämtliche Programmzweige des untersuchten Programms durchlaufen werden.
Testunit
Im Zeitalter der Objektorientierung würde man zum Testen einzelner Klassen Testunits generieren. Ganz im Sinne der Äquivalenzklassen sollten auch hier alle möglichen auftretenden Fälle für die Art und Weise, wie die Objkte der Klasse benutzt werden können getestet werden.
In unserem Fall (Java) bietet es sich an innerhalb der zu testenden Klasse eine main-Methode einzubauen, die Objekte der Klasse erzeugt und austestet.