Beiträge

Sinn und Zweck der Entwicklung eines Prototyps in einem Software-Projekt

3 Arten von Prototyping in der Softwareentwicklung

Prototyping ist ein seit langem verbreitetes Prinzip in der Softwareentwicklung. Doch um was genau handelt es sich dabei und was ist der Unterschied zu einem Mock-up?

Der Grund für die Existenz beider Prinzipien ist das Entwickeln einer gemeinsamen Basis, die dem Kunden auf der einen und dem Entwicklerteam auf der anderen Seite bei der Kommunikation helfen. Eine konkrete Modellierung hilft beiden Parteien, ein besseres Verständnis vom Zielsystem aufzubauen.

Dabei sind Prototypen funktionsfähige Entwürfe, die bereits grundlegende Funktionalitäten beinhalten. Mock-ups dagegen sind Attrappen und besitzen normalerweise keine Funktionalität, sind also nicht mit Programmlogik angereichert. Dafür können Mock-ups dem Kunden ein deutlicheres Bild vom Endergebnis vermitteln als ein teils funktionsfähiger Prototyp.

Ein Prototyp als erster Schritt zur Software

Prototyping steht am Anfang eines Softwareprojekts für die Entwicklung eines Musters. Es ist ein Verfahren, welches im Software-Engineering eingesetzt wird. Gegenstand des Prototypings ist die Entwicklung einer lauffähigen Software bzw. einer Softwarekomponente, die bestimmte Kernfunktionen abdeckt. Das Verfahren ist kostengünstiger, da es weniger Zeit in Anspruch nimmt als die Komplettentwicklung. Der Prototyp kann erstellt und getestet werden. Fehler können somit frühzeitig erkannt und Änderungswünsche besser berücksichtigt werden als bei der fertigen Software.

Empfehlenswert ist der Einsatz vor allem dann, wenn die endgültigen Anforderungen und Spezifikationen für die komplette Software noch nicht ausgearbeitet werden. Dabei kann man es als iterativen Prozess betrachten, der zwischen Entwicklerteam und Auftraggeber stattfindet.

Es haben sich unter anderem folgende Arten herausgebildet: Exploratives, experimentelles und evolutionäres Prototyping. Daneben gibt es noch das Rapid-Prototyping für die schnelle Herstellung eines Musters.

1. Exploratives Prototyping – Ermittlung verschiedener Lösungsansätze

Das explorative Prototyping dient dazu, den Entwicklern einen Einblick in den Anwendungsbereich zu vermitteln, mit dem Auftraggeber verschiedene Lösungsansätze zu diskutieren und die Realisierungsmöglichkeiten abzuschätzen. Dazu wird auf Grundlage der Anwendung und Kundenvorstellungen ein Prototyp entwickelt. Beim explorativen Prototyping geht es in erster Linie um die Funktionalität des Systems, weniger um dessen (optische) Qualität.

2. Experimentelles Prototyping – Verdeutlichung eines Gesamtsystems

Einen anderen Ansatz verfolgt das experimentelle Prototyping. Hierbei sollen sämtliche Teilsysteme für die spätere Implementierung vollständig definiert werden. Anschließend soll die Funktion der Teilsysteme nachgewiesen und die jeweiligen Schnittstellen überprüft werden. Im Vordergrund stehen also die Einzelkomponenten und ihr Zusammenspiel.

3. Evolutionäres Prototyping – Schrittweise zum Endprodukt

Beim evolutionären Prototyping geht es um eine stufenweise Systementwicklung. Das System soll schrittweise nach den exakten, definierten Spezifikationen aufgebaut werden. Jeder Zwischenschritt dient als Grundlage für die inkrementelle Weiterentwicklung, basierend auf weiteren Spezifikationen. Das evolutionäre Prototyping ist eine Vorgehensweise, bei dem der Prototyp grundsätzlich das fertige Produkt darstellt.

Softwareentwicklung bei der kreITiv

Zusammenfassend sehen wir Prototyping in der Softwareentwicklung als effiziente Technik, um die späteren Anwender frühzeitig und kontinuierlich in die Entwicklung einzubeziehen. Dadurch lässt sich das Risiko von Fehlentwicklungen reduzieren und Kunden sind mit dem Endergebnis deutlich zufriedener.

Auch wir als Team der kreITiv wissen um die Mehrwerte, die Prototyping mit sich bringt und setzen vermehrt auf dieses Werkzeug, um bei jedem Projekt von Anfang an mit dem Kunden ein einheitliches und gemeinsames Verständnis vom Endergebnis zu entwickeln.

Das "Manifest für agile Softwareentwicklung" dokumentiert allgemeine Prinzipien

Scrum oder Kanban – Die Grundlagen agiler Softwareentwicklung

Im Projektmanagement und der Prozesssteuerung existieren heute zahlreiche agile Methoden und Tools, die jeweils eigenen Regeln und Vorgehensweisen folgen. Einige dieser Ansätze ziehen einen sehr engen Rahmen, andere lassen mehr Freiheiten. Trotz aller Unterschiede basieren sie aber alle auf denselben Prinzipien, die im „Manifest für agile Softwareentwicklung“ dokumentiert sind.

  • Das Manifest besagt unter anderem, dass es wichtiger ist, schnell auf geänderte Anforderungen zu reagieren, als strikt einem Plan zu folgen.
  • Als wichtiger Erfolgsfaktor für agil geführte Projekte gilt, dass alle Beteiligten die richtige Einstellung haben, um in einem agilen Projektumfeld arbeiten zu können.
  • Die Offenheit, möglichst auch verschiedene Komponenten unterschiedlicher Methoden zu kombinieren, ist ein weiterer wichtiger Aspekt des Manifests. Im Ergebnis sollen die eigenen Ansprüche optimal bedient werden. Wichtig sind das Bewusstsein und die Möglichkeit zur Kombination.

Auch die Softwareentwicklung folgt seit den letzten Jahren häufig einer agilen Methode. Die zwei verbreitetsten Ansätze auf diesem Gebiet sind Scrum und Kanban.

Vergleich von Scrum und Kanban

Ein oft erwähnter Vorteil solcher Methoden ist, dass Projekte durch den Einsatz der agilen Prinzipien schneller abgeschlossen werden können. Erreicht wird das durch Prozessoptimierung. Höhere Transparenz soll Optimierungspotenziale aufzeigen und dadurch eine Effizienzverbesserung ermöglichen.

Sowohl Scrum als auch Kanban setzen voraus, dass die Beteiligten ihre Umgebung anpassen. Es existieren Gerüste aus Regeln, in denen die Teams den gegebenen Spielraum nutzen können. Grundsätzlich kann man sagen, dass Kanban einen etwas flexibleren Rahmen vorgibt als Scrum. Aber ziehen wir einmal einen Direktvergleich…

  • leicht verständlich und schnell einführbar
  • lassen die Beteiligten entscheiden, wann sie welche ToDos bearbeiten
  • basieren auf fortlaufender Prozessoptimierung
  • betonen, dass die schnelle Anpassung wichtiger ist, als einem festen Plan zu folgen
  • setzen auf Transparenz, um Prozessverbesserungen zu beschleunigen
  • sind darauf ausgerichtet, Software schnell auszuliefern
  • unterteilen anfallende Aufgaben in kleinere Pakete
  • helfen dabei, durch empirische Daten kontinuierlich den Release-Plan zu optimieren
  • kurze Kommunikationswege
  • hohe Flexibilität/Agilität durch adaptives Planen
  • hohe Effektivität durch Selbstorganisation
  • hohe Transparenz durch regelmäßige Meetings und Backlogs
  • zeitnahe Realisation neuer Produkteigenschaften bzw. Inkremente
  • kontinuierlicher Verbesserungsprozess
  • kurzfristige Problem-Identifikation
  • geringer Administrations- und Dokumentationsaufwand
  • direkte Visualisierung des Projektablaufs macht Probleme anhand von Ticket-Häufungen schnell sichtbar
  • übergreifendes System, das prinzipiell auf jeden bestehenden Entwicklungsprozess aufgesetzt werden kann
  • negatives Multitasking optimal vermieden
  • geringe Größe der einzelnen Tickets hat zur Folge, dass die Beschreibung der verschiedenen Tasks auf das Wesentliche beschränkt ist
  • Board dient als Kommunikationsgrundlage und Fundament, über das sich das Team synchronisiert

 

Start in die agile Softwareentwicklung mit einem Kanban Board

Ein einfaches Kanban Board, Bildquelle: Kanban Tool (CC BY-SA 2.0)

Ein Kanban Board repräsentiert den individuellen Bearbeitungsprozess eines Teams, das klassische Scrum Board ist dagegen immer gleich aufgebaut. Letzteres begrenzt die Arbeitsbelastung indirekt durch die Einschränkung der Anzahl der Karten im Sprint Backlog. Ein Kanban Board kann die Anzahl der Karten je Spalte direkt begrenzen.

Kanban oder Scrum – Was ist besser?

Neben Scrum und Kanban gibt es noch weitere agile Ansätze, von denen einige auf den beiden vorgestellten Methoden basieren. Jedes Team, das agil arbeiten möchte, muss für sich die relevanten Elemente der verschiedenen Ansätze finden und passend kombinieren. Da es keine Allround-Methode für alle denkbaren Projekte gibt, ist Ausprobieren und Variieren notwendig, um die optimale Lösung zu finden.

Auch wir arbeiten seit vielen Jahren nach den Prinzipien agiler Softwareentwicklungsmethoden, was nicht nur bei Mitarbeitern, sondern insbesondere bei Partnern und Kunden für erfolgreiche Projektabschlüsse sorgt. Gerne beraten wir Sie auch zu diesen Themen.