Africa Studio - stock.adobe.com

Fünf Techniken zu einer innovativen Softwareentwicklung

Unternehmen sollten auf fünf zentrale Techniken setzen, um ihren Entwicklungsprozess effizienter und innovativer zu gestalten. Zusammen können sie die Entwicklung optimieren.

Softwareentwicklung ist heutzutage ein wettbewerbsintensives Unterfangen. Um in diesem Szenario überleben und wachsen zu können, müssen sich Technologieunternehmen ständig weiterentwickeln und innovativ sein.

Die Einführung von Verbesserungen in den Lebenszyklus der Softwareentwicklung (Software Development Life Cycle, SDLC) ist eine der wirkungsvollsten Möglichkeiten für Unternehmen, in diesem Umfeld wettbewerbsfähig zu bleiben. Sie sollten dabei vor allem auf fünf Taktiken achten. Nicht alle sind revolutionär neu, zusammen sorgen sie aber für einen deutlich verbesserten SDLC.

Feature-Flags als Teil der kontinuierlichen Integration

Feature-Flags (auch als Feature-Toggles oder Feature-Switche bekannt) sind leistungsstarke Mechanismen, mit denen Entwickler Funktionen in ihren Anwendungen ein- und ausschalten. Hierbei müssen sie den Code weder ändern noch erneut bereitstellen.

Kontinuierliche Integration (Continuous Integration, CI), wie sie von Martin Fowler in seinem Artikel definiert wurde, ist eine Praxis der Softwareentwicklung, bei der jeder Entwickler seine Arbeit mindestens einmal am Tag in eine gemeinsame Mainline integriert. Die Vorteile von CI sind zahlreich. Der größte Vorteil ist, dass das Team durch die häufigere Integration die Rückmeldungsschleife verkürzt, Fehler früher erkennt und die Wahrscheinlichkeit logischer Konflikte verringert.

CI stellt Entwickler jedoch vor ein Rätsel: Wie sollen sie integrieren, wenn sie nur teilweise fertige Funktionen oder Code haben, der noch nicht richtig funktioniert? Feature-Flags sind hier hilfreich. Wenn ein Entwickler seinen noch nicht finalen Code mit der Mainline zusammenführen muss, kann er diesen Code hinter einem Feature-Flag verbergen, das zunächst deaktiviert bleibt.

Das kommt den Entwicklern auch beim Umgang mit Unterbrechungen zugute. Zu solchen Unterbrechungen kommt es oft, weil zum Beispiel Probleme mit höherer Priorität oder kritische Fehler auftauchen. Die Möglichkeit, unvollständigen Code oder Code, der nicht richtig funktioniert, über ein Feature-Flag standardmäßig auszuschalten, hilft den Entwicklern, sich unterschiedlichen Aufgaben zu widmen, ohne die Qualität der Codebasis zu gefährden.

Feature-Flags als Teil der kontinuierlichen Bereitstellung

Kontinuierliche Bereitstellung (Continuous Delivery, CD) ist die andere Hälfte des CI/CD-Duos. Sie automatisiert die Übergabe von Änderungen an den Endbenutzer. Durch die Automatisierung der gesamten Pipeline, vom ersten Commit des Entwicklers bis zum neuen Code für den Benutzer, entsteht ein Prozess, der reproduzierbar, skalierbar und weniger anfällig für menschliche Fehler ist. Kurz gesagt, die Verwendung von CD führt zu häufigeren und zuverlässigeren Bereitstellungen. Das ist ein deutlicher Fortschritt gegenüber herkömmlichen Verfahrensweisen, und mit Feature-Flags lässt sich CD noch weiter verbessern.

Feature-Flags können Risiken im Bereitstellungsprozess reduzieren, indem Funktionen nur teilweise aktiviert werden. Progressive Delivery ist eine Weiterentwicklung der Konzepte von CI und CD. Bei der progressiven Bereitstellung rollen Entwickler Funktionen schrittweise aus, zunächst für eine kleine, risikoarme Zielgruppe (zum Beispiel interne QA-Teams) und schließlich in kontrollierter Weise für produktive Benutzer. Es handelt sich um eine wiederholbare, automatisierte Methode zum Testen und Lernen unter Verwendung echten Verhaltens und Feedbacks von Benutzern. Wie beim Canarying, A/B-Testing oder Blue Green Deployment besteht das Ziel darin, sicherzustellen, dass qualitativ hochwertigerer Code die Benutzer schnell erreicht.

Erstellung prüfungsfreundlicher Pipelines

Audits stehen in den meisten Unternehmen weit unten auf der Beleibtheitsskala. Nicht selten treiben anstehende Audits den Verantwortlichen Schweißperlen auf die Stirn. Meistens liegt das daran, dass die erforderlichen Informationen über eine große Anzahl von Diensten und Tools verteilt sind. Der Leiter des Entwicklungsteams – oder derjenige, der für das Sammeln dieser Informationen verantwortlich ist – muss dann mühsam alles, was er benötigt, aus unzähligen Quellen extrahieren und in einem einheitlichen Format zusammenführen. Um solche Probleme zu vermeiden, sollten Unternehmen jederzeit für Audits gerüstet sein. Das verringert nicht nur das Risiko, sondern macht auch den gesamten Audit-Prozess weniger stressig.

Darum muss zunächst die gesamte Toolchain integriert werden, um die Verschwendung von Zeit und Ressourcen zu vermeiden, die mit dem Sammeln von Informationen aus unterschiedlichen Quellen verbunden ist. Ein weiterer wichtiger Schritt ist die Automatisierung aller Phasen des SDLC. Dadurch wird sichergestellt, dass die Möglichkeiten für menschliche Fehler minimal sind und dass bewährte Verfahren in der Pipeline durch automatisierte Zeitfenster für Kontrollen durchgesetzt werden.

Entwicklerproduktivität im Auge halten

Die Erfassung von Kennzahlen zur Entwicklerproduktivität ist oft schwierig. Wie im Falle der Audits liegt dies vor allem daran, dass die benötigten Informationen über viele verschiedene Tools und Systeme verteilt sind. Hinzu kommt die Tatsache, dass es viele mögliche technische Metriken gibt, um die Produktivität zu beurteilen, aber nicht alle sind gleich wertvoll. Welche Metriken sollte ein Unternehmen einsetzen, um seinen SDLC zu verbessern?

Zunächst einmal sollten die Verantwortlichen messen, wo die meiste Entwicklungszeit verbraucht wird. Entwickler tragen in der Regel zum Wert eines Projekts bei, indem sie neue Funktionen beisteuern. Aber sie müssen ihre Zeit auch für andere Aufgaben nutzen, zum Beispiel die Behebung von Fehlern, die Reparatur fehlerhafter Builds, die Arbeit an Sicherheitsproblemen und vieles mehr. Wenn Entwickler unverhältnismäßig viel Zeit auf die zweite Gruppe von Aktivitäten verwenden, ist dies ein deutliches Warnsignal.

Außerdem ist es ein schlechtes Zeichen, wenn die Entwickler zu viel Zeit für ungeplante Arbeiten aufwenden. Das könnte darauf hindeuten, dass sie behindert oder abgelenkt werden, was sie davon abhält, sich auf die Arbeit zu konzentrieren, die am wichtigsten ist. Es könnte aber auch ein Zeichen für Fehlkommunikation oder schlechte Planung sein: Das Team könnte seine Kapazität für jeden Sprint falsch einschätzen, oder eine schlechte Priorisierung könnte dazu führen, dass Entwickler zur Unzeit mit dringenden Problemen konfrontiert werden.

Schließlich muss die Geschwindigkeit, Zuverlässigkeit und Effizienz des gesamten Entwicklungsprozesses beobachtet und verbessert werden. Durch die Beobachtung wertvoller Metriken wie der Zykluszeit, können Verantwortliche Bereiche im Softwareentwicklungsprozess diagnostizieren, in denen Ineffizienzen auftreten, welche die Geschwindigkeit des Teams beeinträchtigen.

Value Stream Management einsetzen

Nicht zuletzt ist Value Stream Management (VSM) wichtig, um den SDLC zu optimieren. Ein Value Stream ist eine Abfolge von Schritten, die in einem Unternehmen stattfinden und dazu beitragen, den Kunden kontinuierlich einen Mehrwert zu liefern. VSM ist der Prozess der Beobachtung und Verwaltung der Value Streams eines Unternehmens, damit sich der Value Stream von der Idee bis zur Bereitstellung der Funktionalität für den Kunden verfolgen lässt.

Nick Rendall, CloudBees

Mit Unterstützung einer soliden VSM-Strategie und eines entsprechenden Tools kann ein Unternehmen Engpässe in seinem SDLC diagnostizieren und beheben.“

Nick Rendall, CloudBees

Value Stream Management kann helfen, Silos innerhalb des Unternehmens aufzubrechen. Dies führt zu einer besseren Transparenz, einer effizienteren Kommunikation und einer besseren Zusammenarbeit zwischen verschiedenen Akteuren, Teams und Abteilungen. Eine gute VSM-Plattform kann verschiedene Teams, Dienste und Tools miteinander verbinden und so eine effektive zentrale Quelle der Wahrheit schaffen, in der Metriken über alle Value Streams beobachtet und verbessert werden können.

Mit Unterstützung einer soliden VSM-Strategie und eines entsprechenden Tools kann ein Unternehmen Engpässe in seinem SDLC diagnostizieren und beheben, unterstützt durch Echtzeit-Performance-Metriken, die den tatsächlichen Zustand der Entwicklungsprozesse des Unternehmens anzeigen.

Fazit

Unternehmen, deren Erfolg zu einem relevanten Teil von erfolgreicher Softwareentwicklung abhängt, heben sich von der Konkurrenz ab, indem sie ihre SDLC-Prozesse verbessern. Schließlich sind sie durch den SDLC in der Lage, einen Mehrwert für ihre Kunden zu schaffen.

Die fünf dargestellten Techniken können Unternehmen schon heute einsetzen, um ihren Entwicklungsprozess effizienter und innovativer zu gestalten. Für sich genommen ist jede von ihnen bereits wertvoll. Zusammen können sie die Art und Weise, wie ein Unternehmen Software entwickelt und bereitstellt, revolutionieren.

Über den Autor:

Nick Rendall ist Senior Product Marketing Manager bei CloudBees.

 

Die Autoren sind für den Inhalt und die Richtigkeit ihrer Beiträge selbst verantwortlich. Die dargelegten Meinungen geben die Ansichten der Autoren wieder.

Erfahren Sie mehr über Softwareentwicklung