Freitag, 7. März 2014

Das unentdeckte Land oder wo noch nie ein Mensch gewesen.

Prozessübersicht Softwareentwicklung

Artikelübersicht
1. Teil Missing Links im Modell.
2. Teil Gibt es einen eklatanten Wissensbruch in der Softwareentwicklung?
3. Teil Entwurf und Bauen von Software – eine falsche Vorstellung.
4. Teil Softwareentwurf ist ein organisierter Kreislauf.
5. Teil In Softwareprojekten gibt es viel zu entdecken!
6. Teil Die Interaktion mit dem Kontext ist ein wesentlicher Grund für den Erfolg eines Softwareprojektes.
7. Teil Das unentdeckte Land oder wo noch nie ein Mensch gewesen.
8. Teil Mit schlanken Methoden zu gewollter Software.
9. Teil Die Flexibilität des Vorgehens schenkt laufende Verbesserungen.
10. Teil Vom Problem seiner Rolle gerecht zu werden.
11. Teil Wir gründen eine virtuelle Firma.
12. Teil Warum ist unsere virtuelle Firma nur ein Torso?
13. Teil Eine Arbeitsvorlage, ein strategisches Team und ein tolles Geschäft.
14. Teil Ein fortgesetztes tolles Geschäft.


Projekte sind unterschiedlichen Charakters. Es gibt Projekte, die nur Vorhandenes umsetzen, die Altes erweitern, die Prozesse automatisieren und verbessern, aber es gibt auch Projekte die absolut Neues schaffen. In letztgenannten Projekten steht man den weitaus größten Schwierigkeiten gegenüber, aber sie sind auch die interessantesten. Man kennt kaum die Basis, von der man ausgeht und weiß schon gar nicht, wo man genau hin will. Solche Projekte sind Erfinderprojekte, in denen man die Methoden des Design Thinking benutzen kann. Aber auch in den anderen Projekten kann man die Grundsätze des Design Thinking natürlich gewinnbringend anwenden. Bei unserer Prozessbetrachtung spielen diese Erfinderprozesse ebenfalls eine große Rolle, und ich denke, wir dürfen sie nicht vernachlässigen. Software erschaffen ist eben kein reiner Produktionsprozess, sondern es ist eher Wissensarbeit.

Im Artikel In Softwareprojekten gibt es viel zu entdecken! habe ich den explorativen Prozess angedeutet, der sehr oft notwendig ist, um wirklich gute Software zu entwickeln. Jeder Teilprozess, ob Requirements Engineering, Softwarearchitektur, Implementierung und auch das Bauen der Software unterliegt der Prozessfolge Exploration, Vision und Evolution. Die Punkte Exporation und Vision werden oft sehr stiefmütterlich behandelt. Die Suche nach dem besten Weg, der besten Technologie und der besten Lösung wird oft als unökonomisch gewertet. Kurzfristig mag dieses Denken vielleicht richtig sein. Ich denke, dass der Verzicht auf diese Prozessschritte wirklich gute Lösungen verhindert, die sich auf lange Frist auch ökonomisch auszahlen würden.

Der Post Killing or curing – the user centric way von Markus Flückinger hat mich darauf aufmerksam gemacht, wie wichtig Benutzererfahrungen sind, wie wichtig das Spiegeln der gemeinsam erarbeiteten Ideen in der Realität ist. "The message is very simple: Add reality in how you’re working and you get much better results. The quicker you can iterate, the faster you get these better results." [FLÜCK12] Diese Erkenntnis, verbunden mit den Methoden des Design Thinking, führen uns auf dem Weg der systematischen Softwareentwicklung wieder einen Schritt weiter. In [GÜRT13] ist ein Prozess dargestellt, den ich mit meinen schon dargestellten Erkenntnissen aus den anderen Prozessposts verbinden. Den dargestellten Prozess können wir durchaus als Erweiterung, besser als ein Genauerfassen, der Schritte Exploration – Vision – Evolution verstehen. "In der Exploration erkundet ein Team den Problemraum, typischerweise durch Ausprobieren. In der Vision stößt das Team zum Kern von Problemverständnis und Lösungsidee vor. Dazu ist die Reflexion über die beim Ausprobieren erzeugten Wirkungen notwendig. In der Evolution werden Teillösungen iterativ zu einer immer vollständigeren Lösung erweitert, die möglichst gut die Vision erfüllt." [S.177, DIR11]



Zu Beginn muss man das Problem verstehen. "Es geht dabei vor allem darum, das entsprechende Problemfeld möglichst unvoreingenommen und offen anzugehen, ohne dabei schon vorgedachte Lösungen zu implizieren und sich am besten mit viel Spaß am Erforschen und Lernen auf das jeweilige Thema einzulassen." [S.37, GÜRT13] Sehr wichtig in dieser Phase ist das Planen von Zeiträumen und die Vorbereitung und Planung von Recherche-Aktivitäten. Die gesamte Tätigkeit erfolgt im Team und diese gemeinsame Arbeit führt dazu, dass sich ein Team von Experten aufbaut, die sich gegenseitig ergänzen und sicherstellen, dass es mit hoher Wahrscheinlichkeit zu guten Ergebnissen kommt.

Beim Erforschen des Gegenstandes kommen verschiedene Mittel zum Einsatz. Wie im klassischen Requirements Engineering stehen uns eine ganze Anzahl von Ermittlungstechniken zur Verfügung. Praktisch sind die Mittel dieselben wie bei einer Systemkontextuntersuchung. Wir führen Interviews mit Stakeholdern, fertigen Fragebögen an und setzen Kreativtechniken ein. Da kann man die 6-Hüte-Methode anwenden, ein einfaches Brainstorming oder paradoxes Brainstorming. Die Breite an kreativen Methoden ist faktisch schwer zu überschauen und unserer Fantasie sind keine Grenzen gesetzt. Für diese Tätigkeiten benötigen wir sehr große Empathie für die Stakeholder und deren Wirklichkeit.

"Die Synthese als Verdichtung von Informationen zu einem Standpunkt (dem >>Point of View<<) oder Design-Prinzip ist ein Instrument aus dem klassischen Design und vielleicht das, was Design Thinking seinen Namen eingebracht hat." [S.44, GÜRT13] Ähnliche Verdichtungsprozesse für Informationen habe ich bereits im Post Ein hierarchisches Konzept von Kontextobjekten als Verdichtung von Information auf das Wesentliche erkannt. In dieser Essenz mache ich die eigentliche Idee sichtbar. "Die Synthese gilt gemeinhin als einer der >>Knackpunkte<< eines Design-Thinking-Projekts. Schließlich geht es darum, die >>wirklich wichtigen<< Informationen herauszufiltern, die >>wirklich entscheidenden<< Erkenntnisse zusammenzufassen bzw. die >>wirklich notwendigen>> Bedürfnisse der potentiellen Nutzer zu verstehen." [S.45, GÜRT13]

Bisher haben wir das Problem verstanden, durchdrungen und klipp und klar die Problemstellung formuliert. Jetzt geht es darum, Ideen für eine Lösung zu finden. Hierfür lassen sich eine Menge Methoden benutzen, um gemeinsam auf neues und unerforschtes Gebiet vorzudringen. "Carrying around a block of wood, using it as it were the nifty device the inventor imagines it to be and to figure out what makes sense to use it for, is another reported technique, e.g. attributed to Jeff Hawkins when creating the initial Palm Pot." [FLÜCK12] Aber auch das klassische Brainstorming kann hier einfach verwendet werden. Wichtig ist die gemeinsame Denkarbeit eines gut zusammengesetzten und gemeinsam kommunizierenden Teams.

Dann werden einzelne Ideen ausgewählt und in Prototypen umgesetzt. Diese Prototypen reichen vom einfachen Papierprototypen über den Wizard of Oz zu programmierten Prototypen mit echtem Verhalten. Diese Umsetzungen ermöglichen es dem späteren Kunden, den man nun in den Prozess mit einbindet, das Verhalten zu testen und so das extrem wichtige Feedback zu erzeugen. Einen ähnlichen Prozess beschreibt Eric Ries in seinem Buch "Lean Startup". [RIES12] Dort werden Ideen entworfen, die dann in Code umgesetzt werden. Dieser Vorgang bezeichnet genau den Prozess, einen Prototypen zu bauen. Dann werden zu messende Dinge festgelegt. Der Kunde testet den Prototypen und dabei werden Messwerte erhoben. Die erhaltenen Daten werden ausgewertet. Durch das erhaltene Feedback wird ein Lernprozess angestoßen, der wiederum Rückwirkungen auf die Ideen hat und in der nächsten Iteration zu einer wesentlichen Verbesserung der umgesetzten Idee führt. Hält man diese Iterationen kurz, beschränkt sich bei der Ideenfindung auf das Wesentliche und sorgt vor allem für ein breites Feedback, kann man innerhalb kurzer Zeit zu erstaunlichen Ergebnissen kommen.



Die Beschreibung dieser Prozesse ist mir sehr wichtig, um nicht den Eindruck zu erwecken, dass ich eine fabrikmäßige Methode zur Softwareerstellung bevorzuge. Außerdem möchte ich mich mit den verschiedenen Denkansätzen, Software zu entwickeln, auseinandersetzen und jedem Hinweis folgen, der mich im Denken auf neue Ideen bringt. In den folgenden Posts werde ich neue Prozessideen betrachten, sie einer Synthese unterziehen und die Prozesse auch in der Tiefe verfeinern.

  • [DIR11] : Jörg Dirbach, Markus Flückiger, Stefan Lentz: "Software entwickeln mit Verstand", 1. Auflage, dpunkt.verlag GmbH, Heidelberg, 2011
  • [FLÜCK12] : Markus Flückinger: "Killing or curing – the user centric way", hier
  • [GÜRT13] : Jochen Gürtler, Johannes Meyer: "Design Thinking.", GABAL Verlag Gmbh, Offenbach, 2013
  • [RIES12] : Eric Ries: "Lean Startup", 1. Auflage, Redline Verlag, München , 2012


vorheriger Post dieses Themas     folgender Post dieses Themas


Print Friendly Version of this page Print Get a PDF version of this webpage PDF

Keine Kommentare:

Kommentar veröffentlichen