Jede Entwicklung beginnt damit, dass der Auftraggeber oder die Auftraggeberin ein Bedürfnis formuliert, respektive eine Leistung anfragt.
Darauf folgt eine Reihe unterschiedlicher Phasen.
Als erstes müssen jene, die das Projekt implementieren, das Bedürfnis oder den Auftrag der Auftraggeberin oder des Auftraggebers verstehen (understand) . Wo liegt das Problem? Was ist zu tun?
Als nächstes werden mögliche Technologien evaluiert (evaluation) , gegeneinander abgewogen und ausgewählt. Es sollten dabei jeweils Technologien verglichen werden, mit denen das Team bereits vertraut ist: nur so wird es in der Lage sein, den Entwicklungsaufwand für die verschiedenen Anforderungen abzuschätzen.
Darauf folgt die Vorbereitung (prepare) der agilen Entwicklung. Es werden der Projektplan erstellt, die Anforderungen im «Product Backlog» zusammengetragen, eine Teststrategie erarbeitet, und die Entwicklungsinfrastruktur für das Team vorbereitet.
«Vorbereitung» heisst hier, dass das Team unmittelbar nach Abschluss dieser Phase mit der Softwareentwicklung beginnen kann. Um dies zu ermöglichen ist es ebenfalls wichtig, in der Vorbereitungsphase die detaillierten Anforderungen für die Backlog Items mit der höchsten Priorität zu erarbeiten.
Während der agilen Entwicklung (agile development) entwickelt das Team die Software iterativ und inkrementell in kurzen Sprints gemäss der Scrum-Methode (siehe Scrum Guides).
«Iterativ» bedeutet, dass das Team die Software in jedem Sprint entwickelt, testet und dokumentiert. Während des Sprints ist das Team ausserdem verantwortlich dafür, die Anforderungen für den darauffolgenden Sprint im Detail auszuarbeiten («backlog refinement») und das Backlog Refinement Meeting zu organisieren. Am Ende jedes Sprints demonstriert das Team die funktionierende Software der Auftraggeberin oder dem Auftraggeber und bittet um Feedback («sprint review»).
«Inkrementell» bedeutet, dass der Umfang der Software und deren Dokumentation (die Anzahl der implementierten Anforderungen) schrittweise wächst. Das Team hat sicherzustellen, dass alle Funktionen jeweils am Ende eines Sprints funktionieren. Testautomatisierung kann für die Erreichung dieses Ziels nützlich sein.
Während der kontinuierlichen Weiterentwicklung der Software ist darauf zu achten, dass sie eine angemessene Struktur behält. Falls nötig, ist ein «refactoring» in Betracht zu ziehen.
In vielen Studierendenprojekten - insbesondere in den Projektarbeiten im Abschlussjahr (WIPRO, BAA) - wird das Projektteam auf der Basis des Schlussberichts benotet. Die Softwareentwicklung sollte deshalb zum Ende der «agile development»-Phase abgeschlossen und in der Abschluss (finalize) Phase die volle Konzentration auf den Bericht gelegt werden, inklusive sämtlicher während des agilen Entwicklungsprozesses erstellten Dokumentationen.
Die nächste Abbildung zeigt eine Zeitachse der oben beschriebenen Projektphasen.
Abbildung 1: Phasen eines Softwareentwicklungsprozesses
Die Dauer der Phasen ist geschätzt auf der Basis einer Bachelorarbeit.
Ein Produktentwicklungsprojekt ist mehr als nur ein Softwareentwicklungsprojekt. Oft ist schon vorgängig ein gewisser Aufwand nötig, insbesondere für die Evolution innovativer Ideen.
Der Zweck der vorgelagerten Produktfindungs- (product finding) Phase ist es Lösungen zu finden, welche die Auftraggeberin oder den Auftraggeber überzeugen und ausserdem einem Marktbedürfnis entsprechen.
Die «Design Thinking»-Methode hat sich in diesem Zusammenhang bewährt. Am Ende der Design Thinking-Phase sind die Anforderungen für den Softwareteil des Produkts klar definiert, womit der agile Entwicklungsprozess fortgesetzt werden kann.
Abbildung 2: Phasen eines Produktentwicklungsprozesses, mit Design Thinking als Methode im Produktfindungsprozess
Im Studium haben Projekte meist einen festen Zeitrahmen. Das Team muss dort deshalb ganz besonders abwägen, ob es die Zeit und Ressourcen hat, ein umsetzbares Projekt zu entwickeln, oder ob es lediglich die benutzerzentrierte Lösung beschreiben will, die es im Design Thinking-Prozess erarbeitet hat.
Es gibt noch viele andere Methoden, um gute Lösungen mit Entwicklungspotential zu finden.
Einige Beispiele:
- Mit Geschäftsprozessmodellierung lassen sich Verbesserungen für Workflows finden
- Bei Big Data Analytics werden grosse Datenvolumina untersucht, um Information wie etwa verborgene Muster, Korrelationen, Markttrends oder Kundenwünsche sichtbar zu machen. Dies kann Organisationen helfen, fundierte Entscheidungen zu treffen.
- Benutzererlebnisdesign (user experience design) ist für Teams ein hilfreicher Prozess bei der Entwicklung von Produkten, die eine sinnvolle und relevante Nutzererfahrung sicherstellen sollen.
- Game-Entwicklung, Planungs- und Vorproduktions-Phase
An der HSLU haben Studierende die Möglichkeit, noch während des Studiums ihre eigene Firma zu gründen. Erfahrene Coaches unterstützen sie dabei im Anfangsstadium (mit Design Thinking) und helfen ihnen herauszufinden, ob sich ihre Idee für die Umsetzung ihrer Geschäftsidee eignet. Die HSLU bietet deshalb Schulungen in der Lean Startup-Methode an.
Abbildung 3: Lean Startup Methode als Teil des Produktentwicklungsprozesses.
Die Lean Startup-Phase kann parallel zu den Design Thinking- und agilen Entwicklungsprozessen verlaufen.