Methodologien, Prozesse und Metaebenen

Kollabieren oder Kollaborieren
Kommentare

Wenn Begeisterung in einem Softwareentwicklungsteam vorhanden ist, dann wird miteinander kommuniziert und sich engagiert. Dies ist die Voraussetzung für eine effiziente Zusammenarbeit in einem lernenden Unternehmen. Eine Collaboration-Plattform fördert die Kommunikation und unterstützt Vorgehensmodelle und Best Practices eines Teams.

Softwareentwicklung ist im Vergleich zu anderen Ingenieurswissenschaften eine neue Disziplin. Es hat Jahrtausende gedauert, bis man Brücken und Häuser in der Qualität bauen konnte, wie das heute der Fall ist. Selbst das Bauen von Autos ist eine alte Disziplin, wenn man sie mit der Softwareentwicklung vergleicht. Software ist, im Unterschied zu Autos, Häusern und Brücken, ein nichtmaterielles Gut. Es hat also Ähnlichkeit mit Büchern und Musik. Im Laufe der Jahre haben sich Verfahren entwickelt, die sich für das Management von Softwareprodukten bewährt haben. Da die Entwicklung immer komplexer wird und Anforderungen an Geschwindigkeit und Flexibilität wachsen, steigt auch die Notwendigkeit, bei dem Vorgehen zur Entwicklung ständig zu lernen. Der Versuch, Software fabrikmäßig und arbeitsteilig herzustellen, wie es zum Beispiel bei einer Produktionsstraße in der Automobilfertigung praktiziert wird, hat nicht gut funktioniert. Der Wissensverlust bei der Übergabe von einer Disziplin an die andere ist zu groß. Es ist schwierig, alles Wissen zu transferieren, wenn eine Person eine Anforderungsanalyse durchführt, die nächste Person das Softwaredesign, eine weitere Person die Kodierung übernimmt, bevor die vierte Person das Produkt testet. Zu viel Wissen, dass intuitiv gelernt wird, geht bei der Kommunikation verloren. Dies führt zu einer Art stille Post. Jeder hat sein eigenes Modell im Kopf. Am Ende kommt ein völlig anderes Produkt heraus, als am Anfang beabsichtigt war. Auch der Ansatz, ein Softwareprodukt vollständig im Voraus zu planen, wie zum Beispiel bei dem Bau einer Brücke üblich und erforderlich, hat sich als nicht praktikabel erwiesen. Die Hälfte der vorher geplanten Funktionen erweist sich als nutzlos oder so nicht einsetzbar. Während der Entwicklung findet ein Lernprozess statt, und die richtige Funktionalität kristallisiert sich oft erst am Prototyp heraus. Dazu sind lauffähige und testbare Versionen in einem frühen Stadium notwendig.

Iteratives Vorgehen

Der Ausweg aus dem Dilemma ist, von vornherein ein iteratives Vorgehen zu wählen. Diese Vorgehensweise besteht aus kleinen, zeitlich fixierten Produktzyklen, deren Ergebnisse jeweils lauffähig sind. Das Ergebnis wird evaluiert. An der neuen Version lernen alle am Projekt Beteiligten und konstruieren so die nächste verbesserte Runde. Das Wissen, das laufend hinzukommt, muss kommuniziert werden und ständig verfügbar sein. Dieser Lernprozess funktioniert nur dann, wenn die Bürokratie auf das notwendige Minimum reduziert wird. Sich selbst organisierende Teams, die ohne Hierarchien auskommen, haben sich hier als am effizientesten gezeigt. Überbordende Bürokratie ist ein Ausdruck von Machtmissbrauch, Kontrollsucht und mangelndem Vertrauen. Es ist im Kern ein Hinweis auf schwache Führungsqualitäten der verantwortlichen Manager. Deshalb ist es wichtig, sich grundsätzlich mit den Prinzipien von gutem Führungsstil auseinanderzusetzen, bevor man sich mit dem Einsatz von speziellen Vorgehensmodellen und Prozessen für die Softwareentwicklung auseinandersetzt. Erst der nächste Schritt ist es dann, eine Collaboration-Plattform einzusetzen, um diese Prozesse zu unterstützen.

Iteratives und empirisches Vorgehen hat sich bewährt, damit der Kunde und Anwender möglichst viel Funktionalität für seine Investition bekommt und die Ressourcen optimal genutzt werden. Iteratives Vorgehen ist schon so alt wie die Softwareentwicklung selbst. Mit der Bewegung, die agile Softwareentwicklung genannt wird, hat dieses Vorgehen ein strukturiertes Gesicht bekommen. Die Kunst bei iterativen Ansätzen ist es, Spielregeln für den Entwicklungsprozess festzulegen und dafür zu sorgen, dass alle Beteiligten sich daran halten. Es muss genau spezifiziert werden, was in jedem Inkrement erreicht werden soll. Auch wenn Veränderungen als Teil des Lernprozesses im gesamten Entwicklungszyklus gewünscht sind, darf nicht auf Zuruf täglich alles in Frage gestellt werden. Eine klare Modellierung der Software und eine ordentliche Dokumentation sind die Grundlage jeder Entwicklung. Agiles Vorgehen ist nicht gleichzusetzen mit Chaos, sondern mit besonders hoher Disziplin. Diese wird mit Hilfsmitteln zur Selbstorganisation erreicht. Das Projektmanagement-Framework Scrum ist für die Softwareentwicklung populär geworden. Es wurde ursprünglich von Hirotaka Takeuchi und Ikujiro Nonaka als Modell für die industrielle Produktentwicklung vorgestellt [1]. Ken Schwaber und Jeff Sutherland haben dieses Modell am Beispiel der Softwareentwicklung in einen formalen Rahmen gebracht [2].

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -