Softwareentwicklung ist eine sehr dynamische Disziplin, in der sich die Anforderungen schnell ändern. Häufig entwickelt die Auftraggeber-Seite eine Reihe von Anforderungen oder User Stories, obwohl sie das entsprechende Resultat nicht genau einschätzen kann. Das Entwicklerteam macht sich Gedanken und arbeitet an einem repräsentablen Stakeholder. Wenn dieser jedoch hinter den Erwartungen zurückbleibt, weil die Anlage zur Visualisierung anfänglicher Anforderungen fehlt, kann es passieren, dass so ein Projekt komplett neu auf die Spur gesetzt werden muss.
Dies führt im Ergebnis zu einem erhöhten Budget für die Produktentwicklung. Um den Ablauf und dementsprechend das Budget zu optimieren, können verschiedene Ansätze verfolgt werden: PoC (Proof of Concept), Wireframes, Funktionales Prototyping, MVP (Minimum Viable Product) oder ein Pilotprojekt. Dieser Artikel konzentriert sich auf das Prototyping: Was ist Prototyping? Wie funtkioniert die Methode? Und in welchen Situationen verwendet man sie am besten?
Klassifizierung von Prototypen
Dass Software-Überprüfung unter realen Bedingungen und die daraus gesammelten Daten und Erkenntnisse zu einem optimierten Ergebnis führen, verschafft den Entwicklern mehr als einen großen Vorteil. Schließlich erhalten sie wichtige Informationen aus den Berührungspunkten der Nutzer und aus deren Anwenderverhalten. Doch so unterschiedlich die Ansprüche an das Endprodukt, so verschieden sind auch die Arten des Herangehens an das Prototyping selbst. Eine vorab festgelegte Art des Prototyping hilft bei der Umsetzung durch eine strukturierte Verfahrensweise, die sich an unterschiedlichen Dimensionen orientiert.
A. Nach Abmessungen
A.1. Horizontales Prototyping
Beim horizontalen Prototyping werden nur einige Schichten des Systems wie beispielsweise bloß die Benutzeroberfläche entweder als Wireframes oder als eigentliche UI-Implementierung aufgebaut. Dies hilft bei der Verfeinerung der Anforderungen zusammen mit dem Auftraggeber, damit dieser die Komplexität des Arbeitsaufwands besser versteht. Obwohl diese Art von Prototyping sehr nützlich und effektiv sein kann, zeigt die tatsächliche Implementierung der Funktionalität hinter der Benutzeroberfläche / dem Wireframe manchmal einige neue Aspekte der Komplexität, die beim Design von Benutzeroberflächen-Interaktionen möglicherweise noch nicht offensichtlich sind.
A.2. Vertikales Prototyping
Beim vertikalen Prototyping wird im Gegensatz zum horizontalen Prototyping nur ein Teil des Systems gebaut, jedoch auf einem fortgeschrittenen Level. Dieser Ansatz eignet sich besser für Teile des Systems, bei denen eine hohe Komplexität erwartet wird, oder wenn es für einen Teil des Systems (PoC) keine offensichtliche Lösung gibt. Dieser Ansatz hilft für eine bessere Annäherung von Ressourcenbedarf, erwartetem Netzwerkverkehr und Budget, das für den Betrieb eines solchen Systems in einer Produktionsumgebung erforderlich ist.
B. Nach Lebensdauer
B.1. Erstmaliges Prototyping
Dies ist ein Rapid Prototyping, bei dem das System so schnell wie möglich aufgebaut wird. Die Entwickler zeigen das Ergebnis den Interessengruppen, woraufhin die Anforderungen weiter verfeinert und verbindlich vereinbart werden, jedoch ohne dass dieses Ergebnis Teil des Endprodukts sein wird. So ermöglicht dieses Verfahren eine schnelle Entwicklung mit minimalem Aufwand an Architektur, Sicherheit oder Best Practices.
B.2. Evolutionäres Prototyping
B.2.1. Inkrementelles Prototyping
Inkrementelles Prototyping bezieht sich auf ein größeres Produkt, das aus der Verbindung mehrerer getrennter Prototypen besteht. Mit der Verwendung dieses Ansatzes kann die Problematik entstehen, die einzelnen Prototypen mühsam zu einer funktionalen Lösung zusammenfassen zu müssen. Dies lässt sich vermeiden, indem eine definierte Schnittstelle für den Datenaustausch zwischen den Prototypen vereinbart wird. Geschieht dies nicht, könnte ein großer Aufwand erforderlich sein, um aus diesen einzelnen Prototypen einen finalen Prototyp zu machen. Inkrementelles Prototyping eignet sich gut für die Architektur von Mikroservices, wenn bestimmte Teile des Produkts von verschiedenen Teams parallel erstellt werden.
B.2.2. Extremes Prototyping
Extremes Prototyping bezieht sich auf eine Weiterentwicklung des Prototyps durch Hinzufügen zusätzlicher Schichten in mehreren Stufen. Ein Beispiel ist die Entwicklung von Webanwendungen, in welcher ein Prototyp gebaut werden könnte, der nur die statische HTML-Version enthält. Im nächsten Schritt werden HTML-Seiten funktionsfähig, aber ohne funktionierendes Backend. Dies passiert in der letzten Phase der Implementierung der Backend-Lösung. Die Implementierung von extremem Prototyping in Unternehmen, in denen die Backend- und Frontend-Entwicklung von verschiedenen Teams/Teammitgliedern durchgeführt wird, ist nicht ideal. Die Backend-Entwicklung wird durch die Frontend-Entwicklung blockiert, so dass sie besser für die Full-Stack-Entwicklung geeignet ist.
Prototyping und Sicherheitsüberlegungen
Im Falle von evolutionärem Prototyping wird der Prototyp die Grundlage für das serienreife System bilden. Das ist aus haushaltspolitischer Sicht gut, könnte aber aus sicherheitstechnischer Sicht problematisch sein. Abhängig von den Sicherheitsfragen treten zwei Situationen auf:
a) Im Falle von Sicherheitsproblemen, die leicht zu lösen sind und keine architektonischen Probleme darstellen, können sie nachträglich behoben werden, wenn der Prototyp mit dem Auftraggeber vereinbart wird und das Produkt in die nächsten Phasen übergeht.
b) Im Falle von architektonischen Sicherheitsfragen, bei denen einige Teile des Systems neu gestaltet werden müssen, betrifft dies sowohl das Budget als auch den Zeitplan des Projekts. Um dies zu vermeiden, könnten entweder Wegwerf-Prototypen verwendet werden (weil sie schneller zu implementieren sind) und für die serienreife Konstruktion des Systems mit Blick auf die Sicherheit, oder der Prototyp mit Blick auf die Sicherheit, auch wenn es während der Prototypisierungsphase zeitaufwendiger ist.
Lesen Sie mehr zum Thema Softwareentwicklung:
Fazit
Abhängig von der Organisationsstruktur und der architektonischen Gestaltung des Produkts kann das Prototyping in seinen verschiedenen Ausformungen als mächtiges Werkzeug eingesetzt werden, um Zeit und Kosten für die Verfeinerung der Anforderungen zu reduzieren und sie mit dem Auftraggeber abzustimmen. Allerdings müssen Entwickler sorgfältige Überlegungen über Softwarearchitektur, Softwareprinzipien und Sicherheitsbedrohungen anstellen. Diese Entwicklungen gilt es, in die Prototypenentwicklung einzubinden, bevor dieser Ansatz zu einem serienreifen Produkt weiterentwickelt wird. Je komplexer das Produkt werden soll, desto teurer und zeitaufwendiger wird die Lösung der Aufgaben.