Agile Softwareentwicklung
Agile Softwareentwicklung ist Mainstream!
So lautetet eine Meldung bei heise Anfang 2010 die sich auf eine Studie von Forrester Research stützt. Demnach arbeiten bereits 35% der 1.300 Befragten IT-Fachkräfte nach agilen Methoden und 46% iterativ. Weitere Zahlen von Forrester deuten sogar an, dass 84% der Befragten Scrum als agile Entwicklungsmethode einsetzen.
Für uns als codecentric AG ist das eine tolle Nachricht – seit vielen Jahren entwickeln wir unsere Projekte auf Basis agiler Methoden wie Scrum, Kanban oder XP und haben schon vielen Kunden geholfen selbst agiler zu werden.
Was bedeutet agile Softwareentwicklung?
Schlanke Konzeptionsphase, kurze Entwicklungszyklen und iteratives, inkrementelles Vorgehen stellen sicher, dass regelmäßig lauffähige Software in hoher Qualität entsteht.
- Das Märchen vom agilen Entwickler beschreibt auf welche Änderungen sich IT-Abteilungen einstellen müssen wenn Agiltät sich erfolgreich im Unternehmen etablieren soll.
- Der agile Machiavelli oder wie kippe ich ein agiles Projekt? beschreibt “Agile Worst Practices”. Eine Worst Practice ist das Gegenteil einer Best Practice, d.h. es geht um Praktiken, die sich im agilen Umfeld als schlecht erwiesen haben.
Nutzen und Auswirkungen von agile Softwareentwicklung
Ist agile Softwareentwicklung nur ein großer Hype oder steckt mehr dahinter? Gibt es vielleicht sogar einen echten Business Case? Anhand einer idealisierten Geschichte soll verdeutlicht werden, welche Chancen die Agilität bietet und warum sich ein Umstieg rechnet.
- Im Business Case für Agilität werden echte Finanz-Kennzahlen verglichen und der höhere Nutzen von agile Softwareentwicklung im Vergleich zum Wasserfall Modell nachgewiesen.
- Der Blogeintrag Budgetierung von agilen Projekten beschreibt ein Finanzierungsmodell für agile Softwareentwicklungsprojekte
- Agile Enterprise – Auswirkungen auf die IT beschreibt was agile Softwareentwicklung ausmacht und wie Unternehmen profitieren können.
Agile Softwareentwicklung benötigt agile Praktiken!
Agile Entwicklung von Software erfordert hohe handwerkliche Fähigkeiten beim umsetzenden Team. Aus unserer Sicht ist es deshalb notwendig jede agile Methode mit einer Handvoll Praktiken zu kombinieren:
- Continuous Integration
Kontinuierliche Integration ist wichtig um in der Entwicklung im Team schnelles Feedback über Integrationsprobleme zu erhalten. So verhindert man böse Überraschungen am Ende eines Releases. - Agile Testing
Die Automatisierung der Entwickler (Unit Tests) und Fachtests ist wichtiger Bestandteil der Definition of Done jeder Anforderung, die man in einem agilen Projekt umsetzt. Ohne Tests würden die Testaufwände mit der Zeit explodieren und die Wartung der Codebasis schwierig werden. - Continuous Deployment
Die Automatisierung der Bereitstellung einer Software in den unterschiedlichen Stages wie Test oder Produktion inkl. unterschiedlicher Konfigurationen ist unerlässlich, damit das Team sich auf die Umsetzung von fachlichen Funktionen konzentrieren kann. - Agile Requirements Engineering
Epics und User Stories in einem Backlog zu pflegen und zu priorisieren. Story Points schätzen und verstehen lernen. Abnahmekriterien zu definieren und Mockups mit dem Fachbereich zur erstellen. Nur einige der Fertigkeiten, die man erlernen muss, um erfolgreich die Anforderungen in agilen Projekten zu pflegen. - Agile Architecture
Evolutionäre Architekuren und emergentes Design stehen im Mittelpunkt bei agilen Architekturen. - Coding Culture
Kollektives Eigentum der Codebasis, Refactoring, Testgetriebene Entwicklung, Pair Programming, Coding Standards und einfaches Design sind nicht nur wichtige Techniken, um in kurzen Zyklen Software auszuliefern, sondern erfordern in der Regel auch ein Umdenken in der Anwendungsentwicklung.