Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/ord.php on line 23

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/ord.php on line 28

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/ord.php on line 34

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/ord.php on line 38

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/ord.php on line 45

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/ord.php on line 49

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/ord.php on line 58

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/ord.php on line 62

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/ord.php on line 71

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/ord.php on line 81

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/string/src/phputf8/utils/validation.php on line 40

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/joomla/database/driver.php on line 1944

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/joomla/database/driver.php on line 1944

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/joomla/database/driver.php on line 2020

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/registry/src/Format/Ini.php on line 170

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/vendor/joomla/registry/src/Format/Ini.php on line 187

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/joomla/filesystem/path.php on line 143

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/joomla/filesystem/path.php on line 146

Deprecated: Array and string offset access syntax with curly braces is deprecated in /srv/www/vhosts/eftrading.ch/httpdocs/libraries/joomla/filesystem/path.php on line 149

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; plgSystemImageShow has a deprecated constructor in /srv/www/vhosts/eftrading.ch/httpdocs/plugins/system/imageshow/imageshow.php on line 12
Agile Softwareentwicklung
WedOct21

Agile Softwareentwicklung

Agile Softwareentwicklung

Agile Softwareentwicklung ist der Oberbegriff für den Einsatz von Agilität (lateinisch agilis: flink; beweglich) in der Softwareentwicklung. Agile Softwareentwicklung versucht mit geringem bürokratischen Aufwand, wenigen Regeln und meist einem iterativen Vorgehen auszukommen.

ZIELSETZUNG

Das Ziel agiler Softwareentwicklung ist es, den Softwareentwicklungsprozess flexibler und schlanker zu machen, als das bei den klassischen Vorgehensmodellen der Fall ist. Man möchte sich mehr auf die zu erreichenden Ziele konzentrieren und auf technische und soziale Probleme bei der Softwareentwicklung eingehen. Die agile Softwareentwicklung ist eine Gegenbewegung zu den oft als schwergewichtig und bürokratisch angesehenen traditionellen Softwareentwicklungsprozessen.

GESCHICHTE

Erste Ansätze zu agiler Softwareentwicklung sind bereits Anfang der 1990er Jahre zu finden. Popularität erreichte die agile Softwareentwicklung erstmals 1999, als Kent Beck und andere das erste Buch zu Extreme Programming veröffentlichten. Das Interesse an Extreme Programming ebnete den Weg auch für andere agile Prozesse und Methoden. Die Bezeichnung agil für diese Art der Softwareentwicklung wurde im Februar 2001 bei einem Treffen in Utah ausgewählt, als Ersatz für das bis dahin gebräuchliche leichtgewichtig (engl. lightweight). Bei diesem Treffen wurde auch das Agile Manifest (siehe unten) formuliert.

Ende 2005 wurde von Forrester Research eine Untersuchung herausgebracht, die besagt, dass 14% der Unternehmungen in Nordamerika und Europa ihre Software unter Zuhilfenahme von agilen Prozessen entwickeln. Weitere 19% denken über die Nutzung nach.

VersionOne stellte in ihrer siebten jährlichen Umfrage zu agilen Methodiken 2013 fest, dass bereits 84% aller Unternehmen agile Prozesse einsetzen.

BESTANDTEILE AGILER SOFTWAREENTWICKLUNG

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.

Agile Werte

Die Werte agiler Softwareentwicklung bilden das Fundament. Im Februar 2001 haben 17 Erstunterzeichner diese Werte als Agiles Manifest (englisch Manifesto for Agile Software Development oder kurz Agile Manifesto) formuliert:

“We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.”

 

„Wir erschliessen bessere Wege, Software zu entwickeln, indem wir es selbst tun und anderen dabei helfen. Durch diese Tätigkeit haben wir diese Werte zu schätzen gelernt:

  • Menschen und Interaktionen stehen über Prozessen und Werkzeugen
  • Funktionierende Software steht über einer umfassenden Dokumentation
  • Zusammenarbeit mit dem Kunden steht über der Vertragsverhandlung
  • Reagieren auf Veränderung steht über dem Befolgen eines Plans

Das heisst, obwohl wir die Werte auf der rechten Seite wichtig finden, schätzen wir die Werte auf der linken Seite höher ein.“

– KENT BECK, MIKE BEEDLE, ARIE VAN BENNEKUM, ALISTAIR COCKBURN, WARD CUNNINGHAM, MARTIN FOWLER, JAMES GRENNING, JIM HIGHSMITH, ANDREW HUNT, RON JEFFRIES, JON KERN, BRIAN MARICK, ROBERT C. MARTIN, STEVE MELLOR, KEN SCHWABER, JEFF SUTHERLAND UND DAVE THOMAS

Das Manifest weist die Autoren und Erstunterzeichner aus, die auf unterschiedlichen Gebieten der agilen Softwareentwicklung tätig sind. Die Liste der Unterzeichner umfasst tausende Personen und wächst nach wie vor.

Agiles Prinzip

Ein Agiles Prinzip ist ein Leitsatz für die agile Arbeit.

Manchmal werden agile Prinzipien auch als Methoden 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. Im Agilen Manifest sind zwölf Prinzipien aufgelistet.

  • Zufriedenstellung des Kunden durch frühe und kontinuierliche Auslieferung von wertvoller Software
  • Agile Prozesse nutzen Veränderungen (selbst spät in der Entwicklung) zum Wettbewerbsvorteil des Kunden.
  • Lieferung von funktionierender Software in regelmässigen, bevorzugt kurzen Zeitspannen (wenige Wochen oder Monate)
  • Nahezu tägliche Zusammenarbeit von Fachexperten und Entwicklern während des Projektes (Bsp.: Gemeinsamer Code-Besitz (Collective Code Ownership))
  • Bereitstellung des Umfeldes und der Unterstützung, welche von motivierten Individuen für die Aufgabenerfüllung benötigt wird
  • Informationsübertragung nach Möglichkeit im Gespräch von Angesicht zu Angesicht
  • Als wichtigstes Fortschrittsmass gilt die Funktionsfähigkeit der Software
  • Einhalten eines gleichmässigen Arbeitstempos von Auftraggebern, Entwicklern und Benutzern für eine nachhaltige Entwicklung
  • Ständiges Augenmerk auf technische Exzellenz und gutes Design
  • Einfachheit ist essenziell (KISS-Prinzip: Keep it small and simple)
  • Selbstorganisation der Teams bei Planung und Umsetzung
  • Selbstreflexion der Teams über das eigene Verhalten zur Anpassung im Hinblick auf Effizienzsteigerung

Der Übergang zwischen Prinzipien und Methoden ist fliessend.

Agile Methode

Streng genommen bezeichnet agile Methode eine an Agilität ausgerichtete Methode zur Softwareentwicklung.

Ein Kennzeichen agiler Methoden ist, dass sie in einem Prozess dazu dienen können, die Aufwandskurve möglichst flach zu halten. Als Leitsatz gilt: Je mehr du nach Plan arbeitest, desto mehr bekommst du das, was du geplant hast, aber nicht das, was du brauchst. Daraus resultieren einige Prinzipien des agile Modelling und des extreme Programmings.

Agile Methoden lassen sich in zwei Gruppen unterteilen: die tatsächlichen Methoden und die den Methoden zu Grunde liegenden Prinzipien.

Beispiele für agile Methoden:

  • Paarprogrammierung
  • Testgetriebene Entwicklung
  • ständige Refaktorierungen
  • Story-Cards
  • schnelle Codereviews

Agiler Prozess

Ziel der Vorgehensweise ist es, den Softwareentwicklungsprozess durch Abbau der Bürokratie und durch die stärkere Berücksichtigung der menschlichen Aspekte effizienter zu gestalten.

Den meisten agilen Prozessen liegt zu Grunde, dass sie versuchen, die reine Entwurfsphase auf ein Mindestmass zu reduzieren und im Entwicklungsprozess so früh wie möglich zu ausführbarer Software zu gelangen, die dann in regelmässigen, 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. Inzwischen gibt es eine Vielzahl von agilen Prozessen. Zu den bekanntesten zählen unter anderem:

  • Adaptive Software Development (ASD)
  • Crystal
  • Extreme Programming (XP)
  • Feature Driven Development (FDD)
  • Kanban
  • Scrum
  • Agiles Testen
  • Behavior Driven Development (BDD)

AGILE BEWERTUNG

Auf die Frage, inwieweit agile Werte in Prozesse und Methoden umgesetzt wurden, kann eine agile Bewertung Auskunft geben.

Mit dem sogenannten Agility Index Measurements gibt es den Vorschlag, Softwareprojekte genauso wie bei Capability Maturity Model Integration (kurz CMMI) anhand fester Faktoren zu bewerten. Der ähnlich benannte Agility Measurement Index bewertet die Entwicklung von Softwareprojekten in 5 unterschiedlichen Dimensionen (Dauer, Risiko, Erfindungsreichheit, Aufwand und Interaktion). Weiterhin gibt es agile Selbstbewertungen, um zu bestimmen, ob ein Team auf agile Weise arbeitet.

KRITISCHE BETRACHTUNG

Es ist umstritten, ob der Entstehungsprozess von Software so gut verstanden wird, dass eine planmässige Herstellung möglich ist: Kritiker argumentieren, dass Software nichts anderes sei als „ausführbares Wissen“. Wissen jedoch lässt sich nicht ingenieursmässig herstellen, wie sich etwa eine Brücke oder ein Hochhaus herstellen lässt, sondern wird in einem kreativen Prozess gefunden. Mit ein Grund hierfür ist, dass sowohl die Ziele, als auch das Umfeld (beteiligte Personen, Marktanforderungen, technisches Umfeld/Schnittstellen) flexibel sind und sich im Laufe der Zeit ändern.

Die agilen Methoden eignen sich besonders gut, um auf veränderte Anforderungen oder ein verändertes Umfeld zu reagieren, da die Entwicklungszyklen in der Regel von vorneherein nicht lange angelegt sind. Die Anforderungen werden in der Regel nur mit Kurzbeschreibungen festgehalten und erst kurz vor Beginn von Umsetzung und Testvorbereitung ausformuliert. Durch die kurzen Zeiträume sind die Anforderungen relativ frei von nachträglichen Änderungen.

Allerdings verbieten weder das V-Modell noch RUP den Einsatz von agilen Elementen, wie Rapid Prototyping; weder vor noch während der Phasen Anforderungsdefinition oder Design. 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.

Beim Vertragsabschluss müssen die Eigenschaften der agilen Vorgehensweise ausreichend berücksichtigt sein. Klare inhaltliche Vorgaben (Pflichtenheft) sind schwerlich möglich, da die Anforderungen per Definition erst zur Projektlaufzeit entwickelt werden.

Durch den Hype um agile Methoden werden diese manchmal fälschlicherweise als Allheilmittel bei Projektproblemen angesehen. Dies ist natürlich nicht so: Die Haupthinderungsgründe (siehe auch Projektindikatoren) gelten für agile Verfahren genauso wie für traditionelle Verfahren.

ABGRENZUNG

Der Begriff Agilität ist darüber hinaus in der deutschen Fachliteratur – über die hier präsentierte, aus dem amerikanischen übersetzte Software-Engineering-Philosophie hinaus – nicht klar definiert.

Agile Softwareentwicklung ist beispielsweise nicht mit IT-Agilität zu verwechseln, welche die Anpassungsfähigkeit einer Unternehmens-IT bezeichnet.

 

Links

More in this category: