Software Product Mastering / Das unsichtbare Biest
Das "Was" und das "Wie"¶
Entkopplung von „Was“ (Anforderungen) und „Wie“ (Umsetzung) in der Softwareentwicklung

„Was“ – Anforderungsebene¶
- Ziel: Klare Definition des gewünschten Endergebnisses
- Zeitplan: Festlegung von Meilensteinen und Deadlines
- Budget: Maximal erlaubte Kosten
- Anforderungen: Präzisierung von Funktionen und Nutzerbedürfnissen
- Klarheit: Vage Idee oder detailliertes Ziel?
„Wie“ – Umsetzungsebene¶
- Team: Passende Mitarbeiter und Kompetenzen
- Vorgehensweise: Auswahl der Methodik (z. B. agil oder Wasserfall)
- Technologien: Festlegung von Tools und Plattformen
- Risiken: Umgang mit technischen Unsicherheiten (z. B. Prototyping)
- Zwischenschritte & Feedback: Milestones und regelmäßige Überprüfungen
Vorteile der Entkopplung¶
- Flexibilität: Änderungen im „Was“ oder „Wie“ unabhängig voneinander möglich
- Risikominimierung: Risiken können gezielt adressiert werden
- Klarheit und Verantwortung: Klare Verantwortlichkeiten und Kommunikationswege
Nochmal zum Nachlesen...
Die Entkopplung von Anforderung („Was“) und Umsetzung („Wie“) in der Softwareentwicklung ist essenziell, um Flexibilität zu schaffen und eine klare Aufteilung der Verantwortlichkeiten zu ermöglichen. Diese Entkopplung erlaubt es, dass sich die Anforderungen und das Verständnis des Ziels unabhängig vom technischen Lösungsweg weiterentwickeln können. Dadurch wird die Entwicklung weniger starr und ermöglicht eine iterative Anpassung, die sowohl Unsicherheiten in den Anforderungen als auch technische Risiken berücksichtigt.Das „Was“ – Anforderungsebene¶
Auf der Ebene des „Was“ werden strategische und geschäftliche Fragen geklärt, die die Grundlage für das Projekt bilden. Hier geht es darum, die Motivation und die Erwartungen hinter der Software klar zu verstehen, ohne sich sofort in die technischen Details zu vertiefen. Typische Fragen auf dieser Ebene sind:
Welches Ziel soll erreicht werden?
Hier geht es darum, das gewünschte Endergebnis zu definieren, also den Nutzen oder die Problemlösung, die die Software bieten soll. Ein klares Ziel hilft dabei, den Wert des Projekts zu verstehen und sicherzustellen, dass alle Beteiligten eine gemeinsame Vision haben.Wann soll das Ziel erreicht werden?
Diese Frage hilft, eine Zeitleiste zu setzen und Meilensteine zu definieren. Ein realistischer Zeitplan unterstützt das Projektmanagement und ermöglicht es, priorisierte Anforderungen zuerst zu implementieren, falls Zeitdruck besteht.Wie teuer darf die Entwicklung maximal sein?
Das Budget beeinflusst die verfügbaren Ressourcen und hilft dabei, die Machbarkeit abzuschätzen. Es stellt sicher, dass das Projekt innerhalb der finanziellen Rahmenbedingungen bleibt und dass Entscheidungen zu Funktionen und Prioritäten getroffen werden können, falls Kompromisse notwendig sind.Welche Anforderungen sind konkret?
Hier werden die Hauptanforderungen spezifiziert, um den Projektumfang abzugrenzen. Dies könnte die Definition von Benutzerrollen, Sicherheitsanforderungen, Performance-Zielen oder spezifischen Funktionalitäten umfassen.Handelt es sich um eine vage Idee oder ist das Ziel detailliert ausgearbeitet?
Wenn das „Was“ nur als vage Idee vorliegt, ist eine agile, iterativ-inkrementelle Vorgehensweise empfehlenswert, um die Anforderungen im Laufe der Zeit zu konkretisieren. Eine detaillierte Anforderung hingegen kann präzisere Planungen und möglicherweise einen stärker strukturierten Ansatz ermöglichen.
Die Beantwortung dieser Fragen auf der Anforderungsebene legt den Fokus auf das „Was“ und gibt der Entwicklung klare, geschäftsgetriebene Rahmenbedingungen.
Das „Wie“ – Umsetzungsebene¶
Sobald das „Was“ in seinen Grundzügen geklärt ist, wird die Umsetzungsebene („Wie“) relevant. Hier wird der technische Lösungsweg detailliert und der Plan erstellt, wie die Anforderungen erfüllt werden können. Die Fragen auf dieser Ebene helfen, die praktische Umsetzung zu organisieren und Risiken in Bezug auf die Machbarkeit und Effizienz zu steuern.
Welche Mitarbeiter und Kompetenzen werden benötigt?
Die Auswahl der Teammitglieder oder die Definition benötigter Kompetenzen ist entscheidend, um die Umsetzung effektiv zu gestalten. Die richtigen Fähigkeiten im Team ermöglichen es, die Anforderungen optimal zu erfüllen und technische Hürden schneller zu überwinden.Welcher Weg soll eingeschlagen werden?
Diese Frage betrifft den gesamten Prozess der Softwareentwicklung, also ob beispielsweise ein agiler Ansatz wie Scrum oder ein klassischer Wasserfall-Ansatz gewählt wird. Die Methodik sollte zum Projekt passen und hilft, Arbeitsabläufe zu strukturieren und effizient zu gestalten.Welche Technologien und Werkzeuge werden eingesetzt?
Die Auswahl der Technologien (z. B. Programmiersprachen, Frameworks, Plattformen) ist von zentraler Bedeutung, da sie die Architektur, Entwicklungszeit und Wartbarkeit beeinflusst. Dies betrifft auch Werkzeuge für das Projektmanagement, die Versionskontrolle und die Qualitätssicherung.Wie wird mit technischen Risiken umgegangen?
Hierzu zählen mögliche Risiken im Zusammenhang mit neuen Technologien, komplexen Architekturentscheidungen oder Integrationsproblemen. Eine Risikobewertung und die Identifikation von Experimenten (z. B. Prototyping oder Proof-of-Concepts) können helfen, technische Unsicherheiten zu verringern.Gibt es Zwischenschritte und wie wird Feedback gesammelt?
Die Definition von Zwischenschritten und Milestones ist wichtig, um den Fortschritt zu überwachen und die Einhaltung der Anforderungen sicherzustellen. Regelmäßiges Feedback (z. B. durch Stakeholder-Reviews oder Usability-Tests) stellt sicher, dass das Projekt auf Kurs bleibt und Anpassungen frühzeitig vorgenommen werden können.
Vorteile der Entkopplung von „Was“ und „Wie“¶
Durch eine klare Trennung dieser beiden Ebenen wird sichergestellt, dass das Team auf der Anforderungsebene flexibel auf Änderungen reagieren kann, ohne die technische Umsetzung zu beeinträchtigen. Genauso können auf der Umsetzungsebene technische Herausforderungen und Lösungen diskutiert werden, ohne dass die Gesamtanforderungen infrage gestellt werden. Hier sind einige wichtige Vorteile:
- Flexibilität bei Anforderungen und technischem Weg: Die Entwicklung bleibt anpassbar und kann auf geänderte Geschäftsanforderungen oder technologische Fortschritte reagieren.
- Risikominimierung: Durch die Entkopplung kann das Team spezifische Risiken auf jeder Ebene isoliert betrachten und gezielt adressieren.
- Klarheit und Verantwortung: Jedes Teammitglied weiß, ob es für das „Was“ oder das „Wie“ verantwortlich ist, wodurch Kommunikations- und Entscheidungslinien klarer werden.
Zusammengefasst erlaubt die Entkopplung, dass Änderungen in den Anforderungen nicht sofort die technische Umsetzung beeinflussen und technische Innovationen sich auf die bestmögliche Umsetzung konzentrieren, ohne die Ziele aus den Augen zu verlieren.
Aufbau des Diagramms¶
- X-Achse: Klarheit des „Wie“ (links = unklar, rechts = klar)
- Y-Achse: Klarheit des „Was“ (unten = unklar, oben = klar)
Interpretation der Position¶
- Rechts oben: Klare Anforderungen & klare Umsetzung → stabiler, strukturierter Ansatz
- Oben links: Klare Anforderungen, unklare Umsetzung → Prototyping, iterative Klärung des technischen Wegs
- Unten rechts: Unklare Anforderungen, klare Umsetzung → MVPs, iteratives Feedback zur Schärfung der Anforderungen
- Links unten: Unklare Anforderungen & unklare Umsetzung → explorativer, agiler Ansatz mit intensivem Kundenfeedback
Nutzen¶
- Zeigt an, wo Klärungsbedarf besteht (Anforderungen oder Lösungsweg)
- Hilft bei der Wahl des Entwicklungsansatzes (strukturiert oder flexibel)
- Unterstützt Risikomanagement durch frühe Erkennung von Unsicherheiten
Nochmal zum Nachlesen...
Ein Diagramm zur Visualisierung der Klarheit in den Dimensionen „Was“ (Anforderungen und Ziel) und „Wie“ (technischer Lösungsweg) kann genutzt werden, um auf einen Blick den aktuellen Status eines Projekts in Bezug auf die Anforderungen und die technische Umsetzung zu erfassen. Es hilft Projektteams, Unsicherheiten frühzeitig zu erkennen und den Entwicklungsprozess optimal zu steuern.
Aufbau des Diagramms¶
Das Diagramm basiert auf zwei Achsen, die jeweils die Klarheit des „Was“ und des „Wie“ abbilden:
X-Achse: Klarheit des „Wie“
Die X-Achse verläuft von links („unklar“) nach rechts („klar“) und zeigt, wie gut der technische Lösungsweg, also das „Wie“, definiert ist. Hier wird visualisiert, ob der technische Ansatz, die genutzten Technologien, der Aufbau der Architektur und die notwendigen Schritte zur Umsetzung klar und präzise festgelegt sind.Y-Achse: Klarheit des „Was“
Die Y-Achse verläuft von unten („unklar“) nach oben („klar“) und gibt an, wie genau die Anforderungen und das Ziel des Projekts definiert sind, also das „Was“. Dies betrifft Fragen nach den gewünschten Funktionen, den Benutzerbedürfnissen, den zu erreichenden Ergebnissen und dem übergeordneten Ziel des Projekts.
Skalen und Positionierung¶
Position auf der X-Achse (Klarheit des „Wie“):
Projekte, die weiter rechts auf der X-Achse liegen, haben eine präzise Vorstellung darüber, wie die Umsetzung erfolgen soll. Der technische Lösungsweg ist klar und gut durchdacht, und es besteht weniger Bedarf an experimentellen Ansätzen oder Prototypen. Ein Projektpunkt weiter links zeigt hingegen an, dass Unsicherheiten hinsichtlich der technischen Umsetzung bestehen. Hier könnten Prototyping, technische Experimente oder ein iterativer Ansatz sinnvoll sein, um die Klarheit zu erhöhen.Position auf der Y-Achse (Klarheit des „Was“):
Ein Punkt, der weiter oben auf der Y-Achse liegt, deutet darauf hin, dass das Projektteam ein klares Verständnis der Anforderungen und des gewünschten Ergebnisses hat. Die Ziele und Funktionalitäten sind eindeutig definiert, und es besteht Konsens über das „Was“. Ein Punkt weiter unten zeigt, dass noch Unsicherheiten bezüglich der Anforderungen bestehen. Hier ist eine iterativ-inkrementelle Entwicklung, möglicherweise mit kontinuierlichem Kundenfeedback, hilfreich, um die Anforderungen im Verlauf des Projekts zu konkretisieren.
Interpretation der Position im Diagramm¶
Die Position eines Projekts im Diagramm gibt Hinweise darauf, wie viel Arbeit und Planung in die beiden Dimensionen investiert werden muss und welche Art von Entwicklungsansatz sich eignet:
Klarheit in beiden Dimensionen (rechts oben):
Ein Projekt, das sich weiter rechts oben im Diagramm befindet, zeigt eine hohe Klarheit in Bezug auf Anforderungen und technische Umsetzung. Sowohl das Ziel als auch der technische Weg sind gut definiert, was eine stabile und strukturierte Vorgehensweise erlaubt. Ein klassischer Wasserfall-Ansatz oder ein geplanter agiler Ansatz kann hier geeignet sein, da die Anforderungen stabil sind und der technische Weg klar vorgegeben ist.Hohe Klarheit im „Was“, aber Unsicherheit im „Wie“ (oben links):
Wenn der Punkt des Projekts weiter oben, aber links im Diagramm liegt, sind die Anforderungen klar, jedoch besteht Unsicherheit in der technischen Umsetzung. In solchen Fällen können technische Experimente, Prototyping oder ein risikobasiertes Vorgehen sinnvoll sein, um die beste technische Lösung zu finden. Hier kann ein iterativer, agiler Prozess hilfreich sein, um Lösungen zu testen und schrittweise die Klarheit im „Wie“ zu erhöhen.Hohe Klarheit im „Wie“, aber Unsicherheit im „Was“ (unten rechts):
Ein Punkt weiter rechts, aber unten, zeigt, dass der technische Lösungsweg klar ist, während die Anforderungen noch unklar sind. Hier kann es sich anbieten, die Anforderungen schrittweise zu konkretisieren und durch Feedbackschleifen und frühe Tests am Benutzer die Bedürfnisse besser zu verstehen. Ein Ansatz mit Minimum Viable Products (MVPs) oder kleinen, iterativen Verbesserungen hilft hier, das „Was“ schrittweise zu schärfen.Unsicherheit in beiden Dimensionen (links unten):
Befindet sich das Projekt links unten, sind sowohl die Anforderungen als auch der technische Lösungsweg noch unklar. Ein stark explorativer und agiler Ansatz ist hier notwendig, um sowohl das „Was“ als auch das „Wie“ schrittweise zu definieren. In diesem Fall sind Methoden wie Design Thinking, intensives Prototyping und kontinuierliches Kundenfeedback sehr hilfreich, um die Klarheit beider Dimensionen zu verbessern.
Anpassung des Entwicklungsansatzes¶
Die Position des Projektpunkts im Diagramm zeigt somit an, welche Dimension noch weiter geklärt werden muss und wie flexibel oder strukturiert der Entwicklungsprozess gestaltet werden sollte. Projekte weiter oben und rechts im Diagramm sind bereit für eine planbare Umsetzung, während Projekte mit einer Position weiter unten oder links auf Flexibilität und iterative Klärung setzen sollten.
Nutzen des Diagramms¶
Dieses Diagramm bietet einen schnellen Überblick über den Klarheitsgrad eines Projekts in den Dimensionen „Was“ und „Wie“. Es ermöglicht den Projektteams, auf einen Blick zu erkennen, in welchen Bereichen Unsicherheiten bestehen und welche methodischen Ansätze geeignet sind, um die Klarheit zu erhöhen. So wird die Planung und Umsetzung gezielt an die spezifischen Bedürfnisse des Projekts angepasst, und Risiken können frühzeitig identifiziert und minimiert werden.
Das "Was" und das "Wie" spielerisch erleben¶
Ein kleines interaktives Programm, in dem der Benutzer durch die Dimensionen „Was“ und „Wie“ navigiert und seine Antworten bewertet, um zu sehen, in welchem Bereich des Diagramms sein Projekt liegt. Am Ende wird automatisch eine Empfehlung für den Entwicklungsansatz angezeigt.
Hier ist ein einfaches Beispiel für ein solches Programm:
- Setup: Erstelle ein interaktives Widget, das dem Benutzer Fragen zur Klarheit des „Was“ und „Wie“ stellt.
- Bewertung: Lasse den Benutzer für jede Frage Punkte von 1 bis 5 vergeben, wobei 1 „sehr unklar“ und 5 „sehr klar“ bedeutet.
- Berechnung und Feedback: Basierend auf den Eingaben wird das Projekt im Diagramm positioniert und eine passende Empfehlung für den Entwicklungsansatz angezeigt.
- Ergebnis visualisieren: Ein Diagramm zeigt den Punkt für das Projekt an der berechneten Position im Klarheitsdiagramm.
Hier ist ein Beispielcode für die Umsetzung:
import ipywidgets as widgets
from IPython.display import display
import matplotlib.pyplot as plt
# Interaktive Fragen erstellen
question_what = widgets.IntSlider(value=3, min=1, max=5, step=1, description="Klarheit des 'Was'")
question_how = widgets.IntSlider(value=3, min=1, max=5, step=1, description="Klarheit des 'Wie'")
submit_button = widgets.Button(description="Projekt positionieren")
# Anzeige der Fragen
display(question_what, question_how, submit_button)
# Funktion zur Berechnung und Ausgabe der Empfehlung
def evaluate_project(event):
# Werte des „Was“ und „Wie“ erfassen
what_score = question_what.value
how_score = question_how.value
# Diagramm zeichnen
plt.figure(figsize=(6, 6))
plt.plot(what_score, how_score, 'bo', markersize=10)
plt.xlim(1, 5)
plt.ylim(1, 5)
plt.xlabel("Klarheit des 'Wie'")
plt.ylabel("Klarheit des 'Was'")
plt.title("Projektposition im Klarheitsdiagramm")
plt.grid(True)
plt.show()
# Empfehlung basierend auf der Position
if what_score >= 4 and how_score >= 4:
recommendation = "Stabiler, strukturierter Ansatz empfohlen."
elif what_score >= 4 and how_score < 4:
recommendation = "Iteratives Prototyping für technische Klärung sinnvoll."
elif what_score < 4 and how_score >= 4:
recommendation = "Iterative Klärung der Anforderungen mit MVPs und Feedback."
else:
recommendation = "Explorativer Ansatz mit intensivem Feedback empfohlen."
# Ausgabe der Empfehlung
print("Empfehlung:", recommendation)
# Button-Click-Event verknüpfen
submit_button.on_click(evaluate_project)
IntSlider(value=3, description="Klarheit des 'Was'", max=5, min=1)
IntSlider(value=3, description="Klarheit des 'Wie'", max=5, min=1)
Button(description='Projekt positionieren', style=ButtonStyle())
Empfehlung: Stabiler, strukturierter Ansatz empfohlen.
Erläuterung des Codes:¶
- Widgets: Der Benutzer kann die Klarheit des „Was“ und „Wie“ mithilfe von Schiebereglern bewerten.
- Positionierung: Der Code platziert die Projektposition auf einem Diagramm mit der Skala von 1 bis 5 auf beiden Achsen.
- Empfehlung: Basierend auf der Position des Projekts wird eine Empfehlung für den Entwicklungsansatz angezeigt.