spitzen-infos.de - Agile Softwareentwicklung

Agile Softwareentwicklung




Wikipedia http://de.wikipedia.org/wiki/Hauptseite MediaWiki 1.6alpha first-letter Media Spezial Diskussion Benutzer Benutzer Diskussion Wikipedia Wikipedia Diskussion Bild Bild Diskussion MediaWiki MediaWiki Diskussion Vorlage Vorlage Diskussion Hilfe Hilfe Diskussion Kategorie Kategorie Diskussion Portal Portal Diskussion Agile Softwareentwicklung 658344 14370954 2006-03-07T11:29:06Z Abubiju 84887 /* Agiler Prozess */ link korr '''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. == Zielsetzung == Ziel '''Agiler Softwareentwicklung''' ist es, die Softwareentwicklung zu verbessern. Dies will die Agile Softwareentwicklung durch eine Verschlankung der Softwareentwicklung erreichen. Dazu betont die Agile Softwareentwicklung die zu erreichenden Ziele sowie die Zielerreichung unterstützenden Werte, Prinzipien und Methoden und hebt ihre Bedeutung gegenüber einer eventuell bürokratisch definierten Softwareentwicklung hervor. == Geschichtliche Entwicklung == Die Agile Softwareentwicklung entstand als Gegenbewegung gegenüber oft als schwergewichtig und bürokratisch angesehenen Softwareentwicklungsprozessen wie dem [[Rational Unified Process]] oder dem [[V-Modell]]. Einige Entwickler wünschten sich Softwareentwicklungsprozesse, die mehr auf die technischen und sozialen Probleme bei der Softwareentwicklung eingehen, leicht umzusetzen und flexibel anzupassen sind. 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. == Bestandteile Agiler Softwareentwicklung == Wichtigster Bestandteil ist die Umsetzung von [[Agilität]]. Je nach Betrachtungsquerschnitt lässt sich Agile Softwareentwicklung auf verschiedene Arten zergliedern. ''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 [[sozial]]en als [[technisch]]en Charakter. === Agiler Wert === Agile Werte bilden das Fundament der Agilen Softwareentwicklung. Beispiele für Agile Werte: * Ehrlichkeit * Kommunikation === Agiles Prinzip === Ein Prinzip beschreibt kein direkt umsetzbares Verfahren, sondern einen Grundsatz, den man auf Methoden, die einen Prozess bilden sollen, anwenden kann. Ein ''Agiles Prinzip'' ist also ein Leitsatz für die agile Arbeit. 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: * Vorhandene Ressourcen mehrfach verwenden * [[KISS-Prinzip]] Der Übergang zwischen Prinzipien und Methoden ist fließend. === Agile Methode === Streng genommen bezeichnet '''Agile Methode''' eine an Agilität ausgerichtete [[Methode (Softwaretechnik)|Methode]] zur Softwareentwicklung, also ein konkretes einzelnes Teilvorgehensverfahren. Um die geringe Komplexität agiler Prozesse zu unterstreichen, wird der Plural ''Agile Methoden'' jedoch auch häufig als Synonym zu Agiler Prozess oder Agilen Prozessen verwendet. 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 Programming]]s. 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: * [[Paarprogrammierung]] * [[Testgetriebene Entwicklung]] * ständige [[Refaktorisierung]]en * [[Story-Card]]s * schnelle [[Codereview]]s === Agiler Prozess === Ein '''Agiler Prozess''' ist ein auf [[Agilität]] ausgerichteter [[Softwareentwicklungsprozess]], bei dem überwiegend Agile Methoden eingesetzt werden. Ziel ist, den Softwareentwicklungsprozess durch Abbau der Bürokratisierung und durch die stärkere Berücksichtigung der menschlichen Aspekte effektiver und für alle Beteiligten vorteilhafter zu gestalten. Dazu bedient sich ein agiler Prozess hauptsächlich Agiler Methoden. Wird ein Agiler Prozess erfolgreich zur Entwicklung von Software eingesetzt, spricht man von Agiler Softwareentwicklung. Um die vergleichsweise Einfachheit Agiler Prozesse zu unterstreichen, spricht man oft von ''Agilen Methoden'' statt einem Agilen Prozess. Das unterstreicht die Einfachheit der meisten Agilen Prozesse, die sich lediglich als Zusammenfassung einiger Agiler Methoden verstehen. 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 [[Vorgehensmodell (Software)|Vorgehensmodell]]en 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: [[Bild:Xpkurve.png]] Inzwischen gibt es eine Vielzahl von agilen Prozessen. Zu den bekanntesten zählen unter anderem: * [[Adaptive Software Development]] * [[Crystal_Family|Crystal]] * [[Dynamic System Development Method]] (DSDM) * [[Extreme Programming]] (XP) * [[Feature Driven Development]] * [[Lean Development]] * [[Pragmatic Programming]] * [[SCRUM]] * [[Software-Expedition]] * [[Universal Application]] Der Rational Unified Process (RUP) wird von vielen Vertretern Agiler Methoden (viele von Ihnen haben das [http://www.agilemanifesto.org Agile Manifesto] unterzeichnet) als nicht-agiler, schwergewichtiger Prozess aufgefasst. Das ist allerdings umstritten (siehe dazu [http://www.andrena.de/Links/Paper3.pdf 'XP und RUP - Passt das zusammen?']). == Aktivitäten der Softwareentwicklung/Phasen == Die klassischen Vorgehensmodelle der Softwareentwickung kennen verschiedene Phasen bzw. Aspekte. Grob wird meist zwischen Modellierung und Entwicklung unterschieden, wobei sich die Modellierung in Analyse und Entwurf, sowie die Entwicklung in Test und Programmierung unterteilen lässt. Außerdem stellt der Entwurf einen Übergang zwischen Modellierung und Entwicklung dar. 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: * Coding * Testing * Listening * Designing 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. === Agile Modellierung === Beispiele für Methoden zur Agilen Modellierung: * Paarprogrammierung === Agile Analyse === Beispiele für Methoden zur Agilen Analyse: * [[Story-Card]]s === Agiler Entwurf === Beispiele für Methoden zum Agilen Entwurf: * Ständige [[Refaktorisierung]]en === Agiles Testen === Beispiele für Methoden zur Agilen Programmierung: * [[Testgetriebene Entwicklung]] === Agile Programmierung === Beispiele für Methoden zur Agilen Programmierung: * [[Paarprogrammierung]] * Allgemeiner Code-Besitz (Engl. Collective Code Ownership) == Kritische Betrachtung == Es ist umstritten, ob der Entstehungsprozess von Software so gut verstanden wird, dass eine planmäßige Herstellung möglich ist: Kritiker argumentieren, dass [[Software]] nichts anderes sei als "[[ausführbares Wissen]]". [[Wissen]] jedoch lässt sich nicht ingenieursmäßig herstellen (wie sich etwa eine [[Brücke (Bauwerk)|Brücke]] oder ein [[Hochhaus]] herstellen lässt), sondern wird in einem kreativen Prozess gefunden. 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 mitsichbringt, 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 (AG oder AN) sich nicht an diese Prinzipien hält oder man die rechtlichen Aspekte von (Vertrags-)Änderungen im Projekt berücksichtigt. == Agiles Glossar == ;Agil:Unter Verwendung agiler Werte und darauf aufbauender Prinzipien und Methoden. ;Agilität:Verwendung agiler Werte und darauf aufbauender Prinzipien und Methoden. ;Agile Softwareentwickung, Agile Development:Software-Entwicklung mit Elementen der agilen Softwaretechnik. ;Agile Softwaretechnik:Oberbegriff für die einzelnen agilen Methoden; Softwaretechnik unter Verwendung von Agilität. ;Agiler Wert:Der Agilität zu Grunde liegender Wert, wie Einfachheit, Robustheit, Kundenorientierung etc.. ;Agiles Prinzip:Aus ein oder mehreren Agilen Werten abgeleiteter Grundsatz. ;Agile Methode:Einzelne agile Arbeitsanweisung für die Durchführung konkreter Handlungen. ;Agiler Prozess / Agile Methoden / Agiles Verfahrensmodell:Zusammenfassung von agilen Werten, Prinzipien und Methoden zu einem Verfahrensmodell oder umgekehrt, ein Verfahrensmodell, das agilen Methoden verwendet, um sich an agilen Prinzipien und Werten auszurichten. ;Agile Modellierung:Teile des Prozesses, Software-Modellierung ausgerichtet auf Agilität. ;Agile Analyse: Teil der Modellierung, Systemanalyse ausgerichtet auf Agilität. ;Agiler Entwurf: Teil der Modellierung, Systementwurf ausgerichtet auf Agilität. ;Agiles Testen: Teil des Prozesses, Software-Test ausgerichtet auf Agilität. ;Agile Programmierung: Teil des Prozesses, Progammierung ausgerichtet auf Agilität. == Siehe auch == * [[Die Kathedrale und der Basar]] == Weblinks == * [http://www.martinfowler.com/articles/newMethodology.html The New Methodology], ein Artikel von [[Martin Fowler]] in welchem u.a. Agile Methoden verglichen werden. * [http://www.agilealliance.org Agile Alliance] ''(englisch)'' * [http://www.agilemanifesto.org Manifesto for Agile Software Development] ''(englisch)'' [[Kategorie:Vorgehensmodell (Software)]] [[da:Agile]] [[en:Agile software development]] [[es:Desarrollo ágil de software]] [[fr:Méthode agile]] [[it:Agile]] [[lt:Lankstusis programavimas]] [[pt:Desenvolvimento ágil de software]] [[zh:敏捷软件开发]]



Diese Version des Artikels stammt vom 18.03.2006.



Der Inhalt dieser Seite basiert auf dem Artikel „Agile Softwareentwicklung“ aus der freien Enzyklop�die Wikipedia und ist unter der GNU-Lizenz f�r freie Dokumentation ver�ffentlicht. Auf der Wikipedia-Seite ist eine Liste der Autoren einzusehen.

Zufallsartikel.

Dresdner Parkeisenbahn

... mehr