Softwareentwicklung bewegt sich in der Regel in einem komplexen Umfeld bei dem zu Beginn nicht alle Anforderungen und Rahmenbedingungen bekannt sind und diese sich mit der Zeit auch ändern können. Eine vollständige Analyse und damit Lösungsdefinition vor der Umsetzung ist daher in der Regel nicht möglich oder wie es Edward V. Berard bereits treffend auf den Punkt brachte: “Walking on water and developing software from a specification are easy if both are frozen.” Welche Möglichkeiten bieten agile Methoden in diesem Umfeld?Aufgrund der im Vorfeld nicht möglichen Lösungsdefinition werden in agilen Vorgehensmodellen die Architekturentscheidungen erst dann getroffen, wenn die Implementierung diese erforderlich machen. So können Erfahrungen aus den vorangegangen Produktinkrementen einfließen und späte Anforderungsänderungen möglichst lange ohne höhere Aufwände berücksichtigt werden.
Als Folge dieser Verschiebung wird die Architekturarbeit nicht durch einen von der Umsetzung losgelösten Softwarearchitekten geleistet, sondern muss durch das Entwicklungsteam wahrgenommen und verantwortet werden. Viele unerfahrene Teams sind sich der daraus resultierenden Aufgaben nicht bewusst, da es hierfür keine konkreten Artefakte oder Methoden in agilen Vorgehensmodellen wie Scrum oder Kanban gibt. Eine Reihe von Problemfeldern sind die Folge, von denen mir die folgenden immer wieder begegnen.
Um diesen Gefahren vorzubeugen, haben sich in agilen Entwicklungsteams Praktiken und Artefakte entwickelt.
Ergänzend zu den in der Architekturdokumentation beschriebenen, zugrunde liegenden Konzepten und Mustern helfen konkrete Beispiele, die Konsistenz innerhalb der entwickelten Software zu wahren. Neue Mitarbeiter erfahren durch diese Cookbooks in kürzester Zeit, wie neue Anforderungen in der bereits existierenden Struktur umgesetzt und integriert werden können.
Trotz gewissenhafter Analyse und umfänglich abgestimmter Architekturentscheidungen lässt sich im Laufe der Entwicklung die Entstehung von Technischen Schulden nicht vermeiden. Sich ändernde Rahmenbedingungen ebenso wie die technologische Weiterentwicklung führen mit der Zeit zu Problemen, die sowohl die Softwarequalität als auch die Umsetzungsgeschwindigkeit beeinträchtigen können. Die notwendigen Verbesserungen müssen zusammen mit den damit verbundenen Aufwände und Auswirkungen in einem Technical Backlog transparent gemacht werden.
Mehr zum Einsatz dieser Methoden, wie sie in den Scrum-Prozess integriert werden und welche Werkzeuge hilfreich sind, erfahren Sie in meinem Vortrag “Kollaborative Software Architektur in Agilen Teams” auf dem Frankfurter Entwicklertag am 10. März 2016.