Erstellen eines Modells der Software-Lieferkette

Die Standarddarstellung eines Softwareentwicklungswertstroms beginnt mit der Codierung und endet mit dem Code in der Produktion. Sie sehen oft Entwicklungsdiagramme, die mit „dem Geschäft“ beginnen und mit „dem Kunden“ enden. Diese Darstellung spiegelt jedoch die Komplexität der Softwarebereitstellung im Unternehmensmaßstab nicht genau wider.

Wenn Sie einen Schritt zurücktreten, sehen Sie viel mehr Aktivitäten bei der Bereitstellung von Software für Kunden, aber die aktuellen Ansätze zur Verwaltung dieser Aktivitäten basieren auf Service Delivery Frameworks und nicht auf Produktionsmodellen. Als solche verbinden sie nicht alle beteiligten Aktivitäten als ein einziges End-to-End-System.

Das in anderen Produktbranchen verwendete Modell ist das Supply-Chain-Modell. Wenn Sie dieses Modell auf die Softwarebereitstellung anwenden, können Sie Ihr Verständnis des „Systems“ der Softwarebereitstellung über Entwickler hinaus erweitern und erhalten neue Einblicke in die Optimierung.

Was ist die Lieferkette?

Die Lieferkette beginnt mit der Idee, dass Sie alle Produktions- und Nichtproduktionsaktivitäten als ein einziges System koordinieren können. Supply Chain Management wird oft einfach als „Lieferantenmanagement“ missverstanden, wenn dies wirklich nur ein Aspekt des Supply Chain Managements ist (wenn auch ein kritischer).

Alle Produkt- und Dienstleistungsunternehmen haben eine Lieferkette, und die damit verbundenen Aktivitäten und ihre relative Bedeutung für das Lieferkettensystem variieren. Die Kernidee ist jedoch, dass Sie durch die Koordination dieser Aktivitäten als ein einziges System einen Wert erhalten, der größer ist als die Summe der Teile, und diesen Wert effizient an die Stakeholder liefern.

Die folgenden Aktivitäten sind nur einige der wichtigen Aspekte aller Lieferketten, aber für Software werden sie eindeutig ausgeführt:

Planung

In der traditionellen Lieferkette umfassen Planungsaktivitäten die Koordination von Assets und die Optimierung des Prozessflusses, um das Materialangebot mit der Nachfrage nach Produkten in Einklang zu bringen. In der Software-Lieferkette bedeutet diese Koordination, sicherzustellen, dass der richtige Code für die am meisten benötigten Produktfunktionen entwickelt wird. Im großen Maßstab mit Hunderten von Anwendungen und Tausenden von Softwareentwicklern ist dies ein monumentales Unterfangen.

Der Umfang der Planungsaktivitäten wird häufig durch vorhandene Entwicklungsmodelle minimiert. Es ist daher etwas ironisch, dass die großen Unternehmen, die am meisten Devops benötigen, sich mit rechtlichen, behördlichen, vertraglichen und Kundenverpflichtungen auseinandersetzen müssen, die die Planung langwierig und komplex machen. Ein Supply-Chain-Planungsansatz beinhaltet die Optimierung der Schnittstellen zwischen den vielen verschiedenen Planungsrollen und -disziplinen. Ein wesentlicher Erfolgsfaktor ist die effektive Integration dieser Schnittstellen.

Einerseits sind die agilen Methoden, die die Entwicklung im Unternehmen steuern, häufig in Wasserfallprozessen verankert. Nur wenige Unternehmen können sich Steuerplanungszyklen entziehen, und agile Prozesse können Abstraktionen enthalten, die mit diesen Zyklen in Konflikt stehen. Beispielsweise können Sprints nicht an den Grenzen der Geschäftsquartale ausgerichtet werden. Mangelnde Kommunikation und Verbindungen zwischen Entwicklungsprozessen mit agilen und nicht produktiven Aktivitäten mithilfe von Wasserfällen können zu Verschwendung und Ineffizienz im gesamten Unternehmen führen.

Andererseits umfasste die Produktplanung für Unternehmen immer umfangreiche Anforderungsmanagement- und Rückverfolgbarkeitssysteme, und dies ist bei Softwareprodukten nicht anders. Das Anforderungsmanagement ist besonders wichtig in stark regulierten Branchen wie dem Gesundheitswesen, in denen möglicherweise Software für medizinische Geräte entwickelt wird, die für die Benutzer Leben oder Tod bedeuten können. Das Anforderungsmanagement umfasst spezielle Tools und Methoden. Die Fähigkeit, die Genauigkeit und Qualität ihrer Implementierung über den gesamten Entwicklungslebenszyklus hinweg zu verfolgen, kann für Unternehmenssoftwareprodukte von entscheidender Bedeutung sein.   

Beschaffung

In der traditionellen Lieferkette umfasst die Beschaffung von Komponenten die Verwaltung der Beziehungen zu Lieferanten und die Entwicklung von Beschaffungsstrategien für Teile und Materialien. Software stützt sich auch stark auf Komponenten aus Quellen - laut jüngsten Untersuchungen von Sonatype macht Open Source heute die Mehrheit der Softwareprodukte aus: 80 bis 90 Prozent des Codes in modernen Anwendungen stammen aus Open Source-Komponenten. Und diese Komponenten schaffen einzigartige Managementherausforderungen.

Erstens kann es schwierig sein, zu entscheiden, wie die Qualität der Komponenten bestimmt werden soll, wobei viele Faktoren Entscheidungen wie Verbrauchsmaterial, Tests, Dokumentation, Community, Support und Technologietrends beeinflussen. Eine klare Strategie und ein klarer Ansatz für die Auswahl der Komponenten sind unerlässlich.

Zweitens ist es angesichts der Anzahl der Open-Source-Komponenten eine Herausforderung, zu wissen, was sie alle gemeinsam mit ihnen verwalten können. Produktmanager und Ingenieure müssen Lizenzierungsbedenken und Sicherheitsprobleme genau berücksichtigen. Der Status Ihrer Open Source-Komponenten kann sich täglich ändern, wenn neue Sicherheitslücken entdeckt werden und Betreuer ihre Strategien für geistiges Eigentum ändern. Und Kunden möchten genau wissen, was sie erhalten - viele große Unternehmen kaufen keine Software ohne eine Stückliste, in der beschrieben wird, was in der Verpackung enthalten ist. Das Management all dieser Open Source-Probleme ist ein zentraler Aspekt der Softwareproduktentwicklung.

Verteilung

Um Software in die Hände von Kunden zu bekommen, kann ein komplexes Netz von Partnern aller Art erforderlich sein: Bereitstellung, Vertrieb, Integration, Wiederverkäufer; Vereinbarungen aller Art: OEMs, Lizenzen, NDAs, RFPs; Treffen aller Art: Demos, PoCs, Präsentationen; und so viel mehr.

Diese Beziehungen dienen als Eingaben, Ausgaben und sogar Schritte im Softwarebereitstellungsprozess. Der Status einer dieser Beziehungen kann sich direkt auf die Entwicklungsaktivitäten auswirken. Ohne sie genau zu verwalten und mit der ausgeführten Arbeit zu verbinden, entsteht sehr greifbarer Abfall.

Stellen Sie sich vor, Sie liefern ein Epos für einen potenziellen Kunden, der stillschweigend zu einer verpassten Gelegenheit wurde, oder stellen eine Funktion für einen Partner bereit, der seine Vereinbarung vor einem Monat gekündigt hat. Dies geschieht regelmäßig, wenn Software unabhängig vom Wertstrom des Unternehmens geliefert wird - wenn die Softwarebereitstellungsfunktion nicht mit der Lieferkette verknüpft ist.

Die Devops-Pipeline muss eng mit den Partnerschaften, Vereinbarungen und Zielen verbunden sein, für die die Arbeit ausgeführt wird. Code kann nachverfolgt und von der Story über die Anforderung bis zum Kundendatensatz in Ihrem CRM verknüpft werden, indem Ihre Softwarebereitstellung wie eine Lieferkette behandelt und eine Integrationsstrategie verfolgt wird.

Stellen Sie sich stattdessen vor, Sie könnten alle laufenden Aktivitäten, die für einen bestimmten Vertrag ausgeführt werden, oder alle für einen neuen Kunden geplanten Funktionen anzeigen - dies ist das Ergebnis des Managements der Software-Lieferkette - Transparenz und Rückverfolgbarkeit über den gesamten Lebenszyklus.

Werkzeuge

Während Ihre klassischen Fertigungswerkzeuge aus Stanzmaschinen und Wärmebehandlungsöfen bestehen können, umfasst die Software-Lieferkette eine Klasse von Werkzeugen (verschiedene ALM-Werkzeuge, Lebenszyklus-Werkzeuge oder Entwicklungswerkzeuge), mit denen die verschiedenen Phasen der Softwarebereitstellung verwaltet werden .

Die Strategie zur Verwaltung dieser Tools unterscheidet sich stark vom klassischen Ansatz, da die technischen und intellektuellen Investitionen in Softwareentwicklungstools enorm und äußerst effektiv sind. Diese Art von Werkzeug entwickelt sich ebenfalls schnell und ist stark fragmentiert - die Jenkins von heute werden der Hudson von gestern sein. Ein Unternehmen muss so positioniert sein, dass es über einen stabilen und dennoch modularen Tool-Stack verfügt, der den Teams das bietet, was sie benötigen, und gleichzeitig die Flexibilität zur Anpassung beibehält.

Darüber hinaus kann die Toolkette nicht getrennt werden. Sie muss Informationen stromaufwärts und stromabwärts über die Wertschöpfungskette zurückfließen lassen, um zu erfahren, wo sie benötigt werden. Es ist wichtig, diesen Bereich auch unter dem Gesichtspunkt der Integration zu untersuchen. Wie können Sie die Aktivitäten auf einer bestimmten Ebene mit den umgebenden und unterstützenden Supply-Chain-Management-Aktivitäten verbinden?

Fazit

Das Geschäft hat das Technologiemanagement in der Vergangenheit von den umsatzgenerierenden Geschäftsbereichen getrennt und es als eine Reihe von Unterstützungsaktivitäten behandelt, die auf Werten und Zielen beruhen, die auf die Erbringung von Dienstleistungen ausgerichtet sind. In einer softwaredefinierten Welt passt dieses Geschäftsmodell jedoch nicht mehr.

Die Fähigkeit zur Softwarebereitstellung hat den klassisch definierten Supportbereich verlassen und definiert alle primären umsatzgenerierenden Aktivitäten.

Sie müssen daher Ihr Modell als Produktionssystem überdenken und sich einem Modell zuwenden, das die Komplexitätsbeziehungen zwischen Wertstromaktivitäten erfasst. Die Lieferkette verkörpert dieses Denken, und während sich die Produktion von Softwareprodukten weiterentwickelt, werden wir dieses Modell sicherlich reifen sehen.