Sie brauchen einen Berater für agile Softwareentwicklung und/oder möchten, dass wir Ihnen unser Angebot in diesem Umfeld vorstellen?
Bitte hinterlassen Sie uns Ihren Namen und die Kontaktdaten. Dann melden wir uns bei Ihnen.
mindsquare » Knowhow » DevOps
Agile Softwareentwicklung bezeichnet eine Reihe von Ansätzen zur iterativen und unbürokratischen Anwendungsentwicklung. Dabei wird ein hohes Maß an Transparenz und Flexibilität angestrebt, sodass Prozesse möglichst einfach und beweglich (also agil) gestaltet werden. Auf diesem Wege lassen sich Risiken im Entwicklungsprozess minimieren und Anwendungen können schneller und kontinuierlich bereitgestellt werden. Im Vergleich zu herkömmlichen Entwicklungsverfahren lassen sich so Zeit und Kosten sparen.
Agile Softwareentwicklung bezeichnet eine Reihe adaptiver Denk- und Handlungsansätze. Diese sollen die Entwicklungsprozesse von Anwendungen transparenter, schlanker und flexibler gestalten als bei klassischen Vorgehensmodellen. Die Ansätze basieren auf den 2001 formulierten zwölf Prinzipien der agilen Softwareentwicklung und können sich auf einzelne Aspekte der Softwareentwicklung oder aber den gesamten Prozess beziehen. Allgemein werden im Zuge der agilen Softwareentwicklung folgende Ziele verfolgt:
In diesem E-Book erfahren Sie mehr über DevOps und ob es für Ihr Unternehmen sinnvoll ist.
Diese Ansätze stehen im Kontrast zu Vorgehensweisen der klassischen Softwareentwicklung (bspw. Wasserfall- oder V-Modell), die oftmals als bürokratisch, schwergewichtig und langwierig angesehen werden. Ein Kritikpunkt dieser plangeführten Modelle ist, dass dabei alle Einzelheiten schon im Voraus genau geplant und festgelegt werden.
Im Gegensatz dazu wird bei der agilen Softwareentwicklung angestrebt, das Produkt flexibel an die Bedürfnisse von Kunden anpassen zu können. So lassen sich auch Anforderungen erfüllen, die sich noch während der Projektlaufzeit ergeben oder verändern. Ermöglicht wird dies zum einen durch die vergleichsweise kurzen und sich wiederholenden Planungs- und Entwicklungsphasen, bei denen Anforderungen und Ziele kontinuierlich evaluiert und gewichtet werden.
Darüber hinaus erlaubt die agile Softwareentwicklung, neu entwickelte Applikationen (oder Teile davon) möglichst früh im in Kundensystemen einzusetzen. Anwendungsfeatures können also im Realbetrieb getestet und vom Kunden selbst gegen Anforderungen und Geschäftsziele geprüft werden. So erhalten Entwickler noch während der Projektlaufzeit wertvolles Feedback, welches sie in nachfolgenden Entwicklungszyklen berücksichtigen können, um so ein Produkt zu entwerfen, welches genau auf Kundenbedürfnisse abgestimmt ist.
Erste Ansätze von dem, was heute als agile Softwareentwicklung bezeichnet wird, ließen sich bereits in den 1990er-Jahren beobachten. Zu dieser Zeit gewann auch die neuartige Methode des Extreme Programming an Popularität und ebnete den Weg für weitere agile Prozesse und Methoden.
Die Definition bestimmter Entwicklungsmethoden als “agil” ereignete sich erstmals im Februar 2001, als eine Gruppe namhafter Programmierer und Softwareentwickler ein neues Konzept von Softwareentwicklung entwarf. Als Antwort auf Softwareprojekte, die als eine Abfolge linearer Sequenzen organisiert werden, formulierte diese Gruppe das sogenannte “Agile Manifest”. Dabei handelt es sich um ein Dokument, welches vier Leitsätze und zwölf Prinzipien darstellt, die laut den Unterzeichnern besondere beim Entwicklungsprozess zu beachten sind:
“Wir erschließen 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:Individuen und Interaktionen mehr als Prozesse und Werkzeuge
Funktionierende Software mehr als umfassende Dokumentation
Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlung
Reagieren auf Veränderung mehr als das Befolgen eines PlansDas heißt, obwohl wir die Werte auf der rechten Seite wichtig finden,
schätzen wir die Werte auf der linken Seite höher ein.”
“Wir folgen diesen Prinzipien:
- Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Auslieferung wertvoller Software zufrieden zu stellen.
- Heiße Anforderungsänderungen selbst spät in der Entwicklung willkommen. Agile Prozesse nutzen Veränderungen zum Wettbewerbsvorteil des Kunden.
- Liefere funktionierende Software regelmäßig innerhalb weniger Wochen oder Monate und
bevorzuge dabei die kürzere Zeitspanne.- Fachexperten und Entwickler müssen während des Projektes täglich zusammenarbeiten.
- Errichte Projekte rund um motivierte Individuen. Gib ihnen das Umfeld und die Unterstützung, die sie benötigen und vertraue darauf, dass sie die Aufgabe erledigen.
- Die effizienteste und effektivste Methode, Informationen an und innerhalb eines Entwicklungsteams zu übermitteln, ist im Gespräch von Angesicht zu Angesicht.
- Funktionierende Software ist das wichtigste Fortschrittsmaß.
- Agile Prozesse fördern nachhaltige Entwicklung. Die Auftraggeber, Entwickler und Benutzer sollten ein gleichmäßiges Tempo auf unbegrenzte Zeit halten können.
- Ständiges Augenmerk auf technische Exzellenz und gutes Design fördert Agilität.
- Einfachheit – die Kunst, die Menge nicht getaner Arbeit zu maximieren – ist essenziell.
- Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams.
- In regelmäßigen Abständen reflektiert das Team, wie es effektiver werden kann und passt sein Verhalten entsprechend an.”
Ziel dieser Leitsätze und Prinzipien ist es nicht, bestimmte Entwicklungsverfahren und -abläufe vorzuschreiben. Stattdessen stellen die angesprochenen Punkte eine Art Richtlinie dar, um Denkansätze und Workflows von Entwicklerteams umzustrukturieren. Außerdem soll eine klare Abgrenzung agiler Entwicklungsverfahren zu herkömmlichen Methoden verdeutlicht werden. Das agile Manifest fördert ein neues Verständnis von Softwareentwicklung, welches die Zufriedenheit der User und Funktionalität von Anwendungen in den Mittelpunkt stellt und gleichzeitig die Wichtigkeit von Veränderung und Kooperation betont.
In regelmäßigen Feedbackschleifen Fehler beheben und das Risiko eines fehlerhaften Endproduktes minimieren.
Zur Verdeutlichung der Leitsätze und Prinzipien des agilen Manifests werden die dort angesprochenen Konzepte an dieser Stelle dem traditionellen Wasserfallmodell gegenübergestellt.
Bei dieser klassischen Programmiermethode ist das Entwicklungsprojekt in aufeinanderfolgende Phasen organisiert. Die Prozesse einer Phase müssen vollständig abgeschlossen sein, bevor mit der nächsten Phase begonnen werden kann. Gleichzeitig ist es bei notwendigen Rückschritten nur möglich, zur unmittelbar vorangehenden Phase zurückzukehren.
Aus diesem Grund ist es erforderlich, dass Produktanforderungen und gewünschte Leistungen vom Auftraggeber bereits vor Entwicklungsbeginn in einem sogenannten Lastenheft festgelegt werden. Die direkte Beteiligung von Anwendern im Entwicklungsprozess ist beim Wasserfallmodell lediglich auf diese anfängliche Anforderungsanalysephase beschränkt. Bereits hier kann es zu ersten Verzögerungen des Projekts kommen, wenn das Lastenheft bspw. unklar definierte Anforderungen enthält.
Aufgrund des phasenhaften Ablaufs klassischer Modelle können diese nur mühsam auf veränderte Anforderungen reagieren, welche sich im fortgeschrittenen Verlauf des Entwicklungszyklus ergeben. Dies ist insofern problematisch, als gerade bei Neuentwicklungen erst im Laufe des Entwicklungsprozesses überhaupt erkennbar wird, welche Funktionen tatsächlich benötigt werden. Die dann erforderlichen Nachverhandlungen zwischen Kunden und Entwicklern und das erneute Durchlaufen der einzelnen Projektphasen bedeuten je nach Umfang des Projekts einen möglicherweise beträchtlichen Zeit- und Kostenaufwand.
Bei komplexen Entwicklungsverfahren hat sich daher die Praxis etabliert, die vorgeschaltete Planungsphase zu reduzieren und genaue Anforderungsziele erst im laufenden Prozess festzulegen. Dies stellt einen ersten Schritt Richtung agiler Softwareentwicklung dar und verdeutlich die Notwendigkeit, von unzweckmäßigen Vorgehensweisen klassischer Entwicklungsverfahren abzuweichen.
Der agile Ansatz wurde mit dem Ziel entworfen, die Nachteile und Einschränkungen phasenbasierter Entwicklungsmodelle zu umgehen. Mittlerweile wird er für zahlreiche Projekte der Softwareindustrie umgesetzt und kann je nach praktischen Anforderungen des Vorhabens unterschiedliche Ausprägungen aufweisen.
Im Gegensatz zum Wasserfallmodell, bei dem der Entwicklungszyklus sequenziell aufeinanderfolgende Phasen durchläuft, setzt die agile Softwareentwicklung grundsätzlich auf die parallele und iterative Ausführung unterschiedlicher Prozesssequenzen. Damit werden übermäßige lange Projektlaufzeiten, zu denen es bei traditionellen Entwicklungsmodellen oftmals kommt, vermieden.
So finden bspw. Entwicklungs- und Testphasen gleichzeitig statt und werden im Laufe des Application Lifecycle Managements (ALM) kontinuierlich wiederholt. Dies ermöglicht häufige kleine Releases lauffähiger Anwendungsfeatures, welche von Anwendern dann unter realen Bedingungen getestet werden können. Der Endkunde wird also effektiv in den Entwicklungsprozess eingebunden.
Auf diese Weise kann auch rechtzeitig auf veränderte Marktanforderungen reagiert werden. Durch die kurzen und sich wiederholenden Entwicklungszyklen ist es nämlich möglich, auch bisher unbekannte Anforderungen bei der zukünftigen Anwendungsprogrammierung zu berücksichtigen.
Diese Charakteristika der agilen Softwareentwicklung macht sie äußerst attraktiv für Unternehmen, die mittels zunehmender Digitalisierung darauf abzielen, flexibel auf die beschleunigte Geschäftsentwicklung zu reagieren. Agile Methoden liefern solide Grundlagen für digitale Workflows und unterstützen das an Bedeutung gewinnende Cloud Computing und cloudnative Technologien.
Darüber hinaus eignet sich das agile Vorgehen auch für die Umsetzung eines DevOps-Konzepts, das aufgrund der Verfahren Continuous Integration, Continuous Delivery und Continuous Deployment ebenfalls von flexiblen Prozessen zur Entwicklung und Bereitstellung von Software profitiert.
Der Erfolg der agilen Softwareentwicklung in den letzten Jahrzehnten lässt sich durch verschiedene Studien belegen: Im Zuge einer 2005 durchgeführten Marktstudie wurde ermittelt, dass zu diesem Zeitpunkt 14% der Unternehmen in Europa und Nordamerika agile Softwareentwicklung einsetzten, während 19% die Nutzung in Erwägung zogen. Im Vergleich dazu wurde 2013 festgestellt, dass bereits 84% aller Unternehmen zu einem gewissen Grad agile Prozesse einsetzen. 2016 betrug dieser Anteil bereits 94%.
In diesem Dokument zeigen wir Ihnen einen Beispielablauf, wie ein DevOps Workshop aussehen kann.
Die agile Softwareentwicklung baut auf verschiedenen Frameworks auf, welche die Grundlage für gängige Entwicklungsansätze und deren konkrete Praktiken bilden. Zu den bekanntesten agilen Frameworks zählen:
Da es sich bei Scrum um das am häufigsten eingesetzte Framework handelt, wird es im folgenden noch einmal näher vorgestellt.
Scrum stellt eine Form des Projektmanagements ohne Projektmanager dar. In einem Scrum-Modell arbeiten interdisziplinäre Teams von bis zu neun Personen gemeinsam an einem Projekt. Das Team setzt sich dabei aus einem Scrum Master, einem Product Owner und dem restlichen Scrum Team zusammen. Dieses Team unterteilt seine Aufgaben in sogenannte Sprints – dabei handelt es sich um zwei- bis vierwöchige Arbeitsphasen, die im Laufe der Projektzeit wiederholt stattfinden.
Der Scrum Master ist für die Teamkoordination und das Aufrechterhalten optimaler Arbeitsbedingungen verantwortlich. Er sorgt für die Einhaltung von Prozessen, moderiert Scrum Meetings und löst Konflikte. Der Product Owner ist der Produktverantwortliche. Er pflegt die Produktanforderungen im sogenannten Product Backlog und stellt das Bindeglied zwischen Scrum Team und Stakeholdern bzw. Managern dar. Das Scrum Team sorgt für die Erfüllung der festgelegten Anforderungen, wobei es selbstständig über die konkrete Umsetzung entscheidet und sich entsprechend selbst organisiert.
Das grundlegende Motto von Scrum ist die Retrospektive, also das Durchlaufen von Feedbackschleifen, bei denen Prozesse kontinuierlich geprüft und den ggf. veränderten Vorgaben angepasst werden. Die Aufgaben werden im sogenannten Sprint Backlog festgehalten und zwischen den einzelnen Sprints ergänzt. Beim täglichen Scrum Meeting (auch Daily Scrum genannt) wird entschieden, welche Aufgaben als nächstes zu bearbeiten sind. Nach Abschluss eines Sprints erhält der Auftraggeber die bisherigen (Teil-)Ergebnisse in Form eines Sprint Review. Anschließend werden Feedback und neue Anforderungen des Auftraggebers in das Product Backlog aufgenommen und der Prozess beginnt von vorn.
Agile Praktiken sind konkrete Techniken und Vorgehensweisen, durch die Änderungen oder neue Anforderungen mit möglichst geringem Aufwand umgesetzt werden können, während gleichzeitig die Produktqualität verbessert wird. Beispiele agiler Praktiken und Techniken sind:
Korrekt umgesetzte agile Entwicklungsverfahren bringen eine Reihe von Vorteilen sowohl für Entwicklerteams wie auch Kunden und Endanwender, die im Folgenden noch einmal zusammengefasst werden
Trotz der zahlreichen Vorteile stellt die agile Softwareentwicklung keine Pauschallösung für erfolgreiche Softwareprojekte dar. Wie bei traditionellen Verfahren auch wird der Rahmen eines agilen Projekts durch allgemeine Vorgaben wie Deadlines und Budgets vorgegeben und kann durch unterschiedliche Komplikationen eingeschränkt werden. Zu etwaigen Herausforderungen der agilen Softwareentwicklung zählen z. B.:
Sind die Entwicklerteams noch unerfahren im Umgang mit agilen Vorgehensweisen, sollten bisherige Entwicklungsverfahren nach und nach umstrukturiert werden, indem neue Methoden und Praktiken schrittweise eingeführt und immer wieder evaluiert werden.
Verfügen Mitarbeiter über ausreichend Kenntnisse zur Umsetzung eines agilen Projekts, sollte die Entscheidung von den Ansprüchen und Bedürfnissen des Auftraggebers abhängig gemacht werden.
Agiles Vorgehen ist sinnvoll, wenn
Agiles Vorgehen ist weniger sinnvoll, wenn
Haben Sie weitere Fragen zum Thema Agile Softwareentwicklung? Oder wünschen Sie sich eine individuelle Beratung zum erfolgreichen Einführung agiler Frameworks und Praktiken? Dann kontaktieren Sie uns für ein unverbindliches Erstgespräch mit einem unserer Experten.
Bitte hinterlassen Sie uns Ihren Namen und die Kontaktdaten. Dann melden wir uns bei Ihnen.
Agile Ansätze setzen auf die parallele und iterative Ausführung von Entwicklungsprozessen. So kommt es zu kurzen Entwicklungs- und Testphasen, die das häufige Bereitstellen von Teilanwendungen ermöglichen. Gleichzeitig wird auf Feedbackschleifen und intensive Kommunikation gesetzt. Entwickler pflegen einen offenen Austausch und stehen in direktem Kontakt zum Auftraggeber, um Prozesse flexibel anzupassen und eine pragmatische Softwarelösung zu liefern.
Agile Methoden setzen auf die frühe und kontinuierliche Auslieferung funktionsfähiger Software in kurzen Zeitspannen, das Eingehen auf Veränderungen, die direkte Zusammenarbeit motivierter Individuen in selbstorganisierten Teams, technische Exzellenz und gutes Design, Einfachheit und die nachhaltige Prozessverbesserung durch Reflexion.
Scrum ist das bekannteste agile Framework: ein überschaubares und selbstorganisiertes Team, das verschiedene Rollen in sich vereint, erledigt seine Aufgaben mithilfe sogenannter Sprints. Dabei werden in sich wiederholenden Arbeitsphasen von wenigen Wochen die Anforderungen des Auftraggebers schrittweise umgesetzt. Weitere gängige Frameworks sind Extreme Programming, Kanban, Scrumban, DSDM, Feature Driven Development, Adaptive Software Development, Crystal und Lean Startup.
Zu den wichtigsten Vorteilen der agilen Softwareentwicklung zählen kürzere Time-To-Market, Flexibilität bzgl. auftretender Veränderungen, offener Austausch und die Kommunikation von Feedback, erhöhte Produktqualität und gesteigerte Mitarbeiter- wie auch Kundenzufriedenheit.
Die agile Softwareentwicklung konfrontiert Unternehmen bspw. mit folgenden Herausforderungen: mangelnde Zusammenarbeit innerhalb der Entwicklerteams oder mit dem Auftraggeber, mangelnde Planung und damit einhergehender Verlust von Produktivität, Einstiegsbarrieren für eine erfolgreiche Einführung und Umsetzung agiler Verfahren, erhöhte Anforderungen an den vertraglichen Rahmen zwischen Auftraggeber und -nehmer.