Lade Inhalt...

Softwareentwicklung von heute und morgen -Agile Softwareentwicklung

Ausarbeitung 2007 7 Seiten

Informatik - Software

Leseprobe

Softwareentwicklung von heute und morgen

Vor vielen Jahren war die Wettervorhersage nicht so präzise wie heutzutage. Wir hören die Nachrichten und rüsten uns mit Mantel und Regenschirm aus, bevor wir uns auf den Weg machen. Dies ist mittlerweile nur möglich, da die Technologie sich entwickelt hat und wir mit Wettersatelliten im All leben. Die Vogelperspektive auf die Erde, Erfahrungen und gute Analyse lässt die Vorhersage des Wetters für eine Woche schon möglich machen. Dieser Zusammenhang lässt sich schön zwischen der Softwareentwicklung und den agilen Methoden übertragen. Wobei die agilen Methoden in dieser Konstellation die Wettersatelliten darstellen. Mit Agilen Methoden lassen sich laut Studien und Best Paractice-Berichte die Phasen der Softwareprojekte besser vorhersagen und ihr Aufwand einfacher berechnen. Agile Entwicklung betrachtet Änderungen im Plan und neue Anforderungen während des Projektes als Selbstverständlichkeit und bereitet sich von Beginn an darauf vor. Auslöser der agilen Methoden war das Gefühl, durch Bürokratie, Prozesse und Dokumentationsvorgaben gelähmt und gehemmt zu werden.

Software ist aus allen Bereichen unserer Gesellschaft nicht mehr wegzudenken. Entsprechend wächst die Bedeutung guter Softwarequalität. Die Klassischen Probleme bei der Softwareentwicklung sind [1]:

- Spannungsdreieck zwischen den Faktoren Kosten, Qualität, Zeit
- Unpräzise Spezifikation der Kundenwünsche
- zu lange Entwicklungszeiten -> Termine werden nicht eingehalten
- Umgang mit Änderungen während des Projekts
- Kosten für Änderungen wachsen im Laufe der Entwicklungsphasen

Die klassischen Methoden konnten bis jetzt die o.g. Probleme nicht lösen und werden im Internetzeitalter immer aufwendiger und komplizierter. Die Einführung der agilen Methoden war nur eine selbstverständliche Revolution gegen die alten Entwicklungsprozesse und Methoden in der Softwareentwicklung. Die alten Methoden wurden als schwergewichtig und bürokratisch angesehen. Softwareentwicklungsprozesse wie der Rational Unified Process oder das V-Modell fallen unter dieser Kategorie. Die ersten Ansätze der agilen Methoden waren Anfang der neunziger Jahre.

Der Durchbruch und Popularität kam als Kent Beck und andere das erste Buch zur Extreme Programming veröffentlichten [2].

Die Alleinstellungsmerkmale der Agilen Methoden sind der geringere bürokratische Aufwand und die unflexiblen Regeln. Dazu zählen folgende Eigenschaften (Agile Manifesto)für die Agile Entwicklung:

- Unsicherheit und Veränderungen werden als nicht zu kontrollierende

Faktoren akzeptiert.

- Neue Auffassung über das organisatorische Lernen
- Stärkere Einbeziehung der Stakeholder
- Nahe Zusammenarbeit mit Kunden
- Kundenzufriedenheit steht im Mittelpunkt
- Schnelle Antwortzeiten als Ziel
- Frühe Prototypen - Funktionierender Code im Vordergrund
- minimale Spezifikation - weniger Dokumentation und Planung
- ständiges Testen
- kurze Releasezyklen
- starkes Eingehen auf Veränderungen - „embracing change“

Ein Kennzeichen vieler agiler Methoden ist, dass sie in einem Prozess dazu dienen können, die Aufwandskurve möglichst flach zu halten. Oft wird der Plural Agile- Methoden als Synonym für Agile- Prozesse verwendet. Zu den Agilen Methoden zählen [3]:

- Paarprogrammierung
- Testgetriebene Entwicklung
- ständige Refaktorisierungen
- Story-Cards
- schnelle Codereviews

Auf der anderen Seite existieren mittlerweile mehrere agile Prozesse. Folgende haben einen guten Ruf und sind sehr weit verbreitet [4]:

- Adaptive Software Development (ASD)
- Crystal
- Dynamic System Development Method (DSDM)
- Extreme Programming (XP)
- Feature Driven Development (FDD)
- Lean Development
- Pragmatic Programming
- Scrum

Für tiefere Betrachtungen der agilen Methoden und Prozesse verweise ich auf die Literatur und das Internet. Eine Menge Bücher und Berichte bzw. Best Practice für die Thematik wurden in den letzten Jahren publiziert. Man könnte alle diese Methoden in den Büchern ihrer jeweiligen Erfinder Nachlesen.

Die Faktoren Time to Markt, der Faktor Mensch, Kundenzufriedenheit und laufende korrekte transparente Software sind im Internet Zeitalter von großer Bedeutung. Durch den Einsatz agiler Methoden werden diese Faktoren sehr stark positiv beeinflusst. Im Folgenden werden diese Faktoren näher betrachtet.

Im Fall des Time To Markt Faktor werden die Vorteile der Agilen- Methoden an Hand der nächsten Diagramme veranschaulicht. In der Abbildung 1 ist zu ersehen, dass bei traditionellen Softwareentwicklungsmethoden, wie z.B. beim Wasserfallmodell ein gewisser Marktwert nahe dem akzeptablen Bereich bei dem ersten Release erreicht wird. Im Laufe der Entwicklung sinkt der Wert auf einen unter dem minimalen akzeptablen Niveau. Wenn der minimale Wert gemäß der Marktbedürfnisse erreicht wird, dann ist es angesagt, die Software von neu aufzubauen und zu entwickeln.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 1. Diagramm der wirtschaftlichen Werte der Software gegenüber der Zeit bei der traditionellen Softwareentwicklungsmethoden wie z.B. das Wasserfallmodell [5].

Bei der agilen Entwicklungsmethoden wird das erste Release der Software mit nicht so vielen Eigenschaften gefertigt. Der Wert liegt erheblich unter dem was man bei den traditionellen Entwicklungen erreichen würde. Auf der anderen Seite verringert sich der Zeitwert und Marktwert geringfügig zwischen dem Ende des ersten Release und dem Start des zweiten Release.

Der Vorteil gegenüber traditionellen Methoden liegt darin, dass das Ergebnis des zweiten Release und darauf folgende in kürzeren Iterationen auf Kundenanforderungen und Anforderungsänderungen des Kunden angepasst und weiter entwickelt werden. Kundenanforderungen und Markbedürfnisse sind zum grüssten Teil identisch.

Durch agile Methoden können wir den akzeptablen Marktwert in kürzerer Zeit erreichen und sogar darüber hinaus extra Eigenschaften in die Software in weiteres Release einbauen um den Marktbedürfnissen gerecht zu werden.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2. Diagramm der wirtschaftlichen Werte der Software gegenüber der Zeit bei der agilen (in Rot) und traditionelle (in Blau) Softwareentwicklungsmethoden [5].

Auf den Faktor Mensch und das Team wird in agilen Entwicklungsprozessen ein großes Augenmerk gelegt. Ziel ist der Fokus auf Talent, Fähigkeiten und Kommunikation, um die Effizienzsteigerung zu fördern, durch [6]:

- Reduktion der Informationsübermittlungskosten räumlich nahe Zusammenarbeit
- teaminterne Kommunikation fokussieren anstatt Dokumente zu schreiben
- schnellere Entscheidungsfindung
- Einbeziehung von Experten
- inkrementelles Arbeiten
- partizipative Entscheidungsfindung
- Selbstorganisierende Teams
- Selbstverantwortung und Zurechenbarkeit
- Projekt als Ökosystem
- Einzigartige Stärken des Teams hervorheben
- Denken in „Features“ anstatt in Aufgaben
- Dynamische Priorisierung nach jeder Iteration durch den Kunden

Es stellt sich nun die Frage nach der Qualität. In wieweit beeinflussen agile Methoden die Softwarequalität. Wer sich die bekannteste der agilen Methoden, die eXtreme Programming (XP) ansieht, fragt sich, wie es in agilen Methoden wohl um die Softwarequalität bestellt ist.

Das Verhältnis von agilen Methoden und Softwarequalität kann wie folgt zusammengefasst werden [7]:

- Wenn Zeit und Ressourcen knapp werden, darf nicht die Qualität leiden, sondern die am wenigsten nutzbringende Funktionalität. In konventionellen Projekten wird kürzer getestet und oft an der Qualität gespart.
- Klarer Schwerpunkt der agilen Softwareentwicklung ist die Kundenzufriedenheit. Alle anderen Aspekte wie Wartbarkeit und Erweiterbarkeit ordnen sich unter.
- Alle Testfälle werden extrem vor dem Code geschrieben. Reviews gehören auch dazu. In pair programming überwachen sich die Partner ständig. Gerade beim frühen Testen zeigen sich die rigorose Einstellung der agilen Methoden und die Auswirkung auf die Softwarequalität.

Nachdem die Faktoren behandelt worden sind, ist es angebracht zum Abschluss eine Auflistung der Vor und Nachteile der agilen Softwareentwicklung zu geben. Dabei kommen folgende Aspekte an das

Tageslicht:

Vorteile:

- erhöhte Produktivität
- bessere Lieferzeiten
- höhere Kundenzufriedenheit
- hohe Motivation der Mitarbeiter
- Qualitätsverbesserungen
- geringere Time-to-Market
- Nachteile
- für große oder sicherheitskritische Projekte nur beschränkt
- einsetzbar
- hohe Qualifikation und Erfahrenheit des Projektteams notwendig
- Gefahr schwerwiegender Fehler
- Kompetenz und Wille zur Mitarbeit des Kunden sind notwendig
- Kontrolle der Ergebnisse ist schwieriger

Literatur und Internetreferenz

1. Agile Software-Entwicklung kompakt, Timo Klimmer , Carsten Dogs, Mitp-Verlag; Auflage: 1 (Mai 2005)
2. http://de.wikipedia.org/wiki/Agile_Softwareentwicklung
3. Extreme Programming, Kent Beck , Addison-Wesley, Dez. 2003
4. Agility kompakt. Tipps für erfolgreiche Systementwicklung, Peter Hruschka, Chris Rupp, Gernot Starke, Spektrum Akademischer Verlag, Oktober 2003
5. Präsentation der Firma OutSystems. Link: www.outsystems.com. Video: http://video.google.com/videoplay?docid=4137632256718682420
6. Seminar: Ausgewählte Themen zu agilen Softwareprozessen. FU-Berlin 2007. Link: https://www.inf.fu-berlin.de/w/SE/SeminarAgileProzesse2006
7. Abenteuer Software Qualität. Kurt Schneider, dpunkt.verlag, 2007

Details

Seiten
7
Jahr
2007
Dateigröße
477 KB
Sprache
Deutsch
Katalognummer
v111042
Note
Schlagworte
Softwareentwicklung

Autor

Zurück

Titel: Softwareentwicklung von heute und morgen -Agile Softwareentwicklung