Anmelden / Registrieren Konto

DevOps

Was ist agile Softwareentwicklung?

Das Ziel der agilen Softwareentwicklung ist die kontinuierliche Bereitstellung funktionsfähiger Software, die in schnellen Iterationen erstellt wird. 

Allerdings kann der Begriff „agile Softwareentwicklung“ irreführend sein, wenn man darunter nur eine bestimmte Methode der Softwareentwicklung versteht. Agile Softwareentwicklung umfasst jedoch keine festen Vorschriften darüber, welche Abläufe genau ausgeführt werden müssen. Stattdessen handelt es sich um einen Denkansatz für Workflows und die Art des Zusammenarbeitens. Dieser Denkansatz umfasst verschiedene Werte, die unsere Entscheidungen im Hinblick darauf, was und wie wir etwas durchführen, aktiv unterstützen.

Konkret geht es bei der agilen Softwareentwicklung darum, kleine Teile funktionsfähiger Software schnell bereitzustellen, um die Zufriedenheit der Kunden zu verbessern. Diese Methoden nutzen adaptive Ansätze und Teamarbeit zur kontinuierlichen Verbesserung. Normalerweise findet eine agile Softwareentwicklung in kleinen, selbstorganisierenden Teams aus Entwicklern und Unternehmensvertretern statt, die sich über den gesamten Zyklus der Softwareentwicklung hinweg in regelmäßigen Abständen persönlich treffen. Bei einem agilen Konzept wird versucht, die Softwaredokumentation gering zu halten und Veränderungen zu jedem Zeitpunkt im Softwarezyklus willkommen zu heißen, statt sie abzulehnen.

 

Agile Werte

Das Wort „agil“ in seiner heutigen Bedeutung wurde erstmals im Jahr 2001 verwendet. Als Antwort auf Wasserfallmodelle beim Projektmanagement, bei denen ein Softwareprojekt als eine Abfolge von linearen Sequenzen organisiert wird, formulierte eine Gruppe von Softwareentwicklern das sogenannte „Agile Manifest“. In diesem Dokument beschreiben die Programmierer ein neues Konzept der Softwareentwicklung, das auf vier Leitsätzen basiert, die nach Meinung der Softwareentwickler Vorrang haben sollten. Agile Softwareentwicklungsteams sollten dementsprechend Folgendes berücksichtigen:

  • Personen und Interaktionen haben Vorrang vor Prozessen und Tools.
  • Funktionsfähige Software hat Vorrang vor umfassender Dokumentation.
  • Zusammenarbeit mit dem Kunden hat Vorrang vor Vertragsverhandlungen.
  • Eingehen auf Veränderungen hat Vorrang vor dem Befolgen eines Plans.

Die Autoren verdeutlichen, dass alle Punkte der vorstehenden Liste einen Wert an sich besitzen. Sie erklären jedoch, dass die Ergebnisse der Produktentwicklung verbessert werden können, wenn die Punkte auf der linken Seite (fett gedruckt) stärker berücksichtigt werden als die auf der rechten Seite. Ziel des agilen Manifests ist es nicht, Vorschriften festzulegen. Vielmehr dient das agile Manifest als Richtlinie zu einem neuen Verständnis der Softwareentwicklung.

Das agile Manifest führte zu zahlreichen praktischen Konsequenzen. Bei der Wasserfallmethode beispielsweise wird die Produktqualität sichergestellt, indem Software sequenziell von einer Phase zur nächsten entwickelt wird. Im Gegensatz dazu können in einem agilen Konzept Entwicklungs- und Testphase als gleichzeitige und kontinuierliche Prozesse ausgeführt werden. Mit anderen Worten basiert die Wasserfallentwicklung auf dem Grundsatz, dass eine komplette Phase abgeschlossen sein muss, bevor die nächste Phase eingeleitet wird, während ein agiles Konzept die gleichzeitige Ausführung mehrerer Sequenzen unterstützt. 

 

Woher stammen agile Konzepte?

Agile Arbeitsmethoden wurden entwickelt, um die offensichtlichen Beschränkungen der Wasserfallmodelle zu beseitigen. Diese war von der Fließband-Fertigungsmethode von Henry Ford aus dem Jahr 1913 abgeleitet und später auf die Softwareentwicklung angewendet worden. Seit ihrer Einführung im Jahr 2001 werden agile Modelle erfolgreich in zahlreichen Varianten in der Softwareindustrie und im Projektmanagement eingesetzt.

Die agile Softwareentwicklung begann damit, dass viele Entwickler feststellten, dass die Produktionszyklen und die Methoden der Zusammenarbeit beim Wasserfallmodell nicht zu den gewünschten Ergebnisse führten. Dieses Problem zeigte sich besonders in den frühen 1990er Jahren, als zwischen der geschäftlichen Anforderung und der letztlichen Lieferung einer funktionierenden Anwendung oft mehrere Jahre vergingen. Die geschäftlichen Anforderungen und die Märkte änderten sich in diesen Jahren so schnell, dass ein Großteil der Softwareprojekte storniert wurde, bevor sie geliefert werden konnten. Die Verschwendung von Zeit und Ressourcen führte dazu, dass viele Softwareentwickler nach einer Alternative suchten.

Angesichts der drohenden betrieblichen Konsequenzen führen Unternehmen zunehmend Strategien zur digitalen Transformation ein, um mit einer beschleunigten Geschäftsentwicklung Schritt halten zu können. Dabei spielt häufig die agile Softwareentwicklung eine Rolle.

Agile Methoden bilden heute die Grundlage vieler digitaler Workflows. Das Cloud Computing mit seiner flexiblen, skalierbaren IT-Infrastruktur hat parallel zu den Anforderungen der agilen Softwareentwicklung an Bedeutung gewonnen. Die cloudnative Entwicklung mit ihren vielen vernetzten Services, deren Umfang an die Geschäftsanforderungen angepasst werden kann, ähnelt der agilen Softwareentwicklung.

Das DevOps-Konzept hebt die alten Grenzen zwischen Softwareentwicklung und Operations auf. SRE ist eine Implementierung von DevOps, bei der Software als Tool zur Verwaltung von Systemen und Automatisierung von Operations-Aufgaben verwendet wird.CI/CD trägt der Tatsache Rechnung, dass sich Software kontinuierlich ändert, und gibt den Entwicklern Tools an die Hand, mit denen sie neuen Code noch schneller bereitstellen können.

Vielleicht haben Sie schon bemerkt, dass die „agile Softwareentwicklung“ selbst eine agile Idee ist, um in Zeiten der Veränderung auf die Anforderungen der Kunden (d. h. Softwareentwickler) zu reagieren. Das sollten Sie im Hinterkopf behalten, wenn wir uns die verschiedenen agilen Frameworks anschauen, die unterschiedliche Namen haben und sich oft von einer Implementierung zur anderen unterscheiden.

 

Agile Frameworks

Agile Frameworks für die Softwareentwicklung, wie Scrum, Kanban oder Extreme Programming (XP), bilden die Grundlage für gängige Softwareentwicklungsprozesse wie DevOps und CI/CD (Continuous Integration/Continuous Delivery).

Scrum ist eines der heutzutage am häufigsten verwendeten agilen Frameworks. Allerdings sind nicht alle agilen Frameworks Scrum-Frameworks und, ehrlich gesagt, sind nicht alle Scrum-Frameworks agil. In einem Scrum-Modell arbeiten kleine, funktionsübergreifende Teams aus fünf bis neun Personen zusammen. Diese unterteilen ihre Arbeiten in Schritte, die innerhalb eines konsistenten Zeitraums ausgeführt werden können, der als Sprint bezeichnet wird. Scrum-Teams bestehen aus Teammitgliedern, einem Scrum-Master und einem Product Owner. Normalerweise wird ein Scrum-Modell angewendet, wenn ein großes Projekt in zwei- bis vierwöchige Sprints unterteilt werden kann. Scrum konzentriert sich auf Feedbackschleifen durch eine Zeremonie, die als „Retrospektive“ bezeichnet wird. Das inoffizielle Motto bei Scrum könnte „prüfen und anpassen“ lauten.

Andere agile Frameworks, insbesondere Kanban, wurden vor dem agilen Manifest entwickelt. Aber diese Frameworks werden als agil eingestuft, weil sie auf denselben Werten basieren wie das agile Manifest. Es gibt zu viele agile Frameworks und Methoden der agilen Skalierung, als dass wir sie hier alle auflisten könnten.