Agile Softwareentwicklung ist der Oberbegriff für den Einsatz von Agilität in der Softwareentwicklung. Je nach Kontext bezieht sich der Begriff auf Teilbereiche der Softwareentwicklung, z.B. Agile Methoden wie Agile Modeling, oder auf den gesamten Softwareentwicklungsprozess mittels Agiler Prozesse wie Extreme Programming. Agile Softwareentwicklung zeichnet sich durch geringen bürokratischen Aufwand und wenige, flexible Regeln aus.
Erste Ansätze zu Agiler Softwareentwicklung sind dabei bereits Anfang der 1990er Jahre zu finden.
Große Popularität erreichte die Agile Softwareentwicklung erstmals 1999, als Kent Beck und andere das erste Buch zu Extreme Programming veröffentlichten. Das große Interesse an Extreme Programming ebnete den Weg auch für andere Agile Prozesse und Methoden.
Ende 2005 wurde von Forrester Research eine Untersuchung herausgebracht, die besagt, 14% der Unternehmungen in Nordamerika und Europa entwickeln ihre Software unter Zuhilfenahme von agilen Prozessen. Weitere 19% denken über die Nutzung nach.
Agile Werte bilden das Fundament. Agile Prinzipien basieren auf den Agilen Werten und bilden Handlungsgrundsätze. Agile Methoden sind konkrete Verfahren während der Softwareentwicklung, die sich auf die Werte und Prinzipien stützen. Der Agile Prozess ist die Zusammenfassung aller angewandten Methoden und dient der Agilen Softwareentwicklung.
Andererseits kennt die klassische Softwaretechnik verschiedene Phasen oder Aspekte der Softwareentwicklung, die ebenfalls unter Einsatz von Agilität realisiert werden können. Dazu gehören das Agile Modelling mit Agiler Analyse und Agilem Entwurf, das Agile Testen und die Agile Programmierung.
Nicht alle Agilen Prinzipien und Methoden lassen sich genau einem Aspekt der Softwaretechnik zuordnen, eine Tatsache, die ebenfalls charakteristisch für die agile Softwareentwicklung ist. Die 40-Stunden-Woche und kollektiver Code-Besitz lassen sich schwer direkt einem Element der Softwaretechnik zuordnen, sondern haben wesentlich mehr sozialen als technischen Charakter.
Beispiele für Agile Werte:
Manchmal werden Agile Prinzipien auch als Methode bezeichnet. Die eigentlich falsche Verwendung des Begriffs "Methode" für Prinzipien wird von den Vertretern agiler Methoden teilweise bewusst eingesetzt. Bei schwergewichtigen Prozessen werden Prinzipien von umfangreichen Methodenbeschreibungen überlagert und lassen die Prinzipien häufig in Vergessenheit geraten. Zudem wurden Prozesse früher hauptsächlich über Methoden, nicht über Prinzipien definiert. Die Auflistung von Prinzipien als Methoden soll den Prinzipien gegenüber formalen Methoden wieder mehr Gewicht verleihen.
Beispiele für Agile Prinzipien:
Der Übergang zwischen Prinzipien und Methoden ist fließend.
Einige Agile Methoden können auch außerhalb Agiler Prozesse zum Einsatz kommen. Häufig sind jedoch die verschiedenen Methoden eines Agilen Prozesses verzahnt und stützen sich gegenseitig, sodass der Einsatz einzelner Methoden ohne die anderen sich als fatal erweisen kann.
Ein Kennzeichen vieler agiler Methoden ist, dass sie in einem Prozess dazu dienen können, die Aufwandskurve möglichst flach zu halten. Als Leitsatz für agile Methoden gilt: "Je mehr Du nach Plan arbeitest, um so mehr bekommst Du das, was Du geplant hast, aber nicht das, was Du brauchst." Daraus resultieren einige Prinzipien des Agile Modeling und des Extreme Programmings.
Agilen Methoden lassen sich in zwei Gruppen unterteilen: die tatsächlichen Methoden und die den Methoden zu Grunde liegenden Prinzipien.
Beispiele für Agile Methoden:
Den meisten Agilen Prozessen liegt zu Grunde, dass sie versuchen, die reine Entwurfsphase auf ein Mindestmaß zu reduzieren und im Entwicklungsprozess so früh wie möglich zu ausführbarer Software zu gelangen, welche dann in regelmäßigen, kurzen Abständen dem Kunden zur gemeinsamen Abstimmung vorgelegt werden kann. Auf diese Weise soll es jederzeit möglich sein, flexibel auf Kundenwünsche einzugehen, um so die Kundenzufriedenheit insgesamt zu erhöhen. Sie stellen damit einen Gegensatz zu den klassischen Vorgehensmodellen wie dem V-Modell oder dem Rational Unified Process (RUP) dar.
Allen agilen Prozessen ist gemeinsam, dass sie sich zahlreicher Methoden bedienen, die Aufwandskurve möglichst flach zu halten, wie folgendes Bild am Beispiel von Extreme Programming (XP) verdeutlicht:
Inzwischen gibt es eine Vielzahl von agilen Prozessen. Zu den bekanntesten zählen unter anderem:
Der Rational Unified Process (RUP) wird von vielen Vertretern Agiler Methoden (viele von Ihnen haben das Agile Manifesto unterzeichnet) als nicht-agiler, schwergewichtiger Prozess aufgefasst. Das ist allerdings umstritten (siehe dazu 'XP und RUP - Passt das zusammen?').
Auch in der Agilen Softwareentwicklung sind diese Aspekte von zentraler Bedeutung, sie werden allerdings nicht zeitlich über Phasen verteilt. Kent Beck spricht in diesem Zusammenhang von den vier Aktivitäten der Softwareentwicklung:
Phasen gibt es bei den Agilen Methoden nicht. Stattdessen unterteilt sich der Lebenszyklus einer Software in Iterationen (zumindest bis zur Inbetriebnahme). Die genannten Aktivitäten treten in jeder Iteration auf.
In der Fachpresse findet häufig eine Vermischung zwischen abstrakten und konkreten Begriffen der Agilität statt. So wird häufig ein Agiler Prozess in Ermangelung eines eigenen Namens einfach als "der Agile Prozess" bezeichnet, obwohl er nur ein möglicher agiler Prozess unter vielen ist. Gleiches gilt für Begriffe wie "Agile Methode", "Agiles Prinzip", "Agile Modellierung" usw.. Ein Leser von Artikeln über Agile Softwareentwicklung ist also stets gut beraten, zwischen allgemeinen, abstrakten Bestandteilen von Agilität und speziellen konkreten Bestandteilen einer Umsetzung von Agilität zu unterscheiden.
Allerdings verbieten weder V-Modell oder RUP den Einsatz von Rapid Prototyping; Weder vor noch während der Phase "Anforderungsdefinition" oder in der Designphase. Generell ist in Projekten ein agiles Vorgehen notwendig, allein schon um die Änderungen die ein Projekt zwangsläufig mit sich bringt, zu berücksichtigen und zu integrieren. Vorgehensmodelle helfen dabei diese Änderungen geregelt ins Projekt aufzunehmen.
Agiles Vorgehen stößt dann an Grenzen, wenn einer der beiden Vertragspartner (Auftraggeber oder Auftragnehmer) sich nicht an diese Prinzipien hält oder man die rechtlichen Aspekte von (Vertrags-)Änderungen im Projekt berücksichtigt.
Agile | Agile software development | Desarrollo ágil de software | Ketterä ohjelmistokehitys | Méthode agile | Metodologia agile | アジャイルソフトウェア開発 | Lankstusis programavimas | Desenvolvimento ágil de software | 敏捷软件开发
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Agile Softwareentwicklung".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world