The document discusses creative methods for developing usable software. It provides an overview of an event hosted by itemis AG on creative methods for software development. It defines creativity and discusses how iterative exploration and teamwork can promote creativity in software development. Specific creative techniques like affinity diagramming and paper prototyping are presented. The goal is to show how creativity can be applied systematically and learnably to software engineering processes.
Dieser Vortrag behandelt das Thema Kreativität im Kontext von Softwareentwicklung
Das Ziel ist es Ihnen einige Methoden und Vorgehensweisen näher zu bringen um Softwareentwicklung kreativer zu gestalten
Der Hintergrund des Vortrages basiert auf Forschungsergebnissen und aktuellen Entwicklungen
Dies ist der Inhalt des Vortrags.
Er besteht aus drei Teilen
Erster Teil bildet die Grundlagen, Wissen und Theorie
Zweiter Teil stellt konkrete Methoden, Werkzeuge und Beispiele vor
Abschließend gibt es einen Ausblick auf zukünftige Entwicklungen
Kreativität ist mysteriös. Eine klare Definition gibt es nicht.
Zu komplexes Phänomen.
Forscher haben unterschiedliche Dimensionen untersucht. Z.B. das kreative Produkt, kreative Person, oder kreativen Prozess
Rhoden definiert Kreativität in drei Dimensionen: Produkt, Person und Prozess
Es gibt Produkte, die als kreativ / innovativ empfunden werden
Anders als andere in Dimensionen:
Überraschend, neuartig, schön, ästhetisch, und nützlich oder effizient
Revolutionär: neue Kategorie
Evolutionär: Weiterentwicklung
Anderes Denken führt zu solchen Ideen, nicht lineare Prozesse
Man muss etwas wagen, neue Wege gehen
Immer relativ zu der Community, im Vergleich zu anderen Produkten
Hier geht es um Talent
Personen die neue Wege gehen oder Dinge erschaffen finden sich in vielen Bereichen
Unterschiede: Persönlichkeit, Temperament, Werte, Stil, Verhalten, Interesse, Neugier etc.
Künstler: realisiert in erster Linie eine eigene, persönliche Vision
Designer: Kreiert Dinge nicht für sich selbst, sondern für andere, muss wissen was anderen gefällt
Wissenschaftler: befriedigt seine eigene Neugier durch Ausbrobieren
Ingenieure: Machen Dinge effektiver und effizienter durch Verbesserungen -> inkrementell
Wissenschaftlich erforscht. Prozess ist entscheidend
Charakteristiken: Flexibilität, Problemslösungsverhalten, Ausarbeitung von Ideen, Neugier, Spieltrieb
Schauen wir uns also den Prozess zu Entwicklung von Software an
Insbesondere wie Iteration und Exploration den Prozess im Laufe der Zeit verändert hat.
Phase 1: Software wird umgesetzt, oft fehlen Funktionen oder Budget reicht nicht um alle Funktionen umzusetzen
Phase 2: Software wird auf den Markt gebracht und erweitert
Engineering Phase im Detail
Lineares Vorgehensmodell
Phasenorientiert, Phase muss abgeschlossen sein vor der nächsten Phase
Keine Rücksprünge möglich!
Test erst ganz am Ende wenn schon alles umgesetzt ist!
Wenn falsche Anforderungen, dann falsches Ergebnis!
Problem: keine Iteration!
Iteratives Vorgehensmodell
Phasenorientiert – Rücksprünge möglich!
Ergebnisse werden dann teilweise verworfen!
Späte Änderungen sind sehr teuer, da Behebung viele andere Komponenten beeinflusst
Weitere Modelle: V-Modell, RUP etc.
Problem: Iterationen kosten sehr viel, nur kleine Veränderungen möglich
Hoch-iteratives Vorgehensmodell
Ziel ist es zu allen Zeiten eine lauffähige Software zu haben um zu testen und Risiken früh zu erkennen
Inkrementelle Änderungen sind einfacher zu integrieren
Häufiger Test des Systems als Ganzes (technischer Test!)
Vorteil: Der Kunde bekommt, was er braucht, gut bei unklaren Anforderungen
Formulierung des “Agilen Manifests”, Paradigmenwechsel Softwareentwicklung wird hier als empirischer, dynamischer Prozess verstanden, der hochgradig von den beteiligten Individuen geprägt wird.
Wichtig! TEAMARBEIT
Problem: revolutionäre Änderungen sind schwierig. Wenn Projekt in falsche Richtung läuft hilft das auch nicht!
Usability Engineering:
Eigener Prozess für die Anforderungsanalyse!
Besteht aus 4 iterativen Phasen
Ziel: Entwicklung von Alternativen und empirische Auswertung von Optionen..
Test bereits auf der Ebene von Anforderungen!
Führt zu besserer Software und weniger Fehlschlägen!
Weniger fehlende Funktionen!
Problem: Aufwendig und zeitintensiv
Unterscheidung Iteration und Exploration
Beide Konzepte erkennen, dass die erste Idee nicht immer gleich die Beste ist.
Beides Konzepte um sich auf Veränderungen einzustellen
Iteration geht in eine Richtung, die zu Beginn festgelegt wird (roter Pfeil)
Fehlerhafte Richtung wird jedoch beibehalten, an ersten Ideen oft festgehalten
Exploration: Alle Möglichen Richtungen werden erforscht
Die besten Richtungen werden herausgefiltert
Ziel: Nur die Beste Variante
Softwareentwicklung entwickelt sich weiter: Trend geht zu einer zusätzlichen Designphase
Explizite Design (Concept Development) Phase – Exploration von möglichen Anforderungen bevor diese umgesetzt werden!
Die erste Phase ist ein Trichter! Funktionen werden reduziert!
Raum für Kreativität.. Während Engineering Phase ist dies nur schwer zu realisieren!
Ganz wichtiges Thema in Verbindung mit Kreativität ist Teamarbeit
Nur durch die Kombination von Wissen kann das individuelle Potential in einem Projekt genutzt werden
Interdisziplinäre Zusammenarbeit wichtig!
Gemeinsames Verständnis
Know-How auf verschiedenen Ebenen!
Beispiel: technisches Wissen beim Entwickler, Marktwissen bei Sales, Anforderungserstellung erfolgt von Anderen!
Benutzer: selten am Prozess aktiv beteiligt. Jedoch trotzdem wichtig!!
Entscheidungsfindung kompliziert. Emotionen / Rollen / Kompetenzen
Wie Wissen austauschen?
Einfache Methoden, die jeder versteht und anwenden kann! Gemeinsame Sprache!
Ideen entstehen durch Assoziation von Wissensbündeln
Übertrag von Wissen einer Domäne auf eine Andere
Einfaches Beispiel:
Jeweils 2 Konzepte im Kopf, Durch individuelle Kombination entstehen 2 Ideen
Durch Kombination des Wissens entstehen 6 Ideen
Voraussetzung: Wissen wird effektiv geteilt und von den Beteiligten verstanden
Problem: wurde nie so wissenschaftlich nachgewiesen!
Vergleich von Gruppen hat nie eine solche Effizienz zu Tage gebracht.
Viele denken deshalb, dass Brainstorming unnütz ist. Warum?
Ideen entstehen durch Assoziation von Wissensbündeln
Übertrag von Wissen einer Domäne auf eine Andere
Einfaches Beispiel:
Jeweils 2 Konzepte im Kopf, Durch individuelle Kombination entstehen 2 Ideen
Durch Kombination des Wissens entstehen 6 Ideen
Voraussetzung: Wissen wird effektiv geteilt und von den Beteiligten verstanden
Problem: wurde nie so wissenschaftlich nachgewiesen!
Vergleich von Gruppen hat nie eine solche Effizienz zu Tage gebracht.
Viele denken deshalb, dass Brainstorming unnütz ist. Warum?
Leider funktioniert das nur in der Theorie
In der Realität wurden in Studien Probleme festgestellt
Vor allem Soziale Faktoren spielen eine große Rolle!
Beispiel:
Blockierung: Menschen können kein Multitasking, nur einer kann sprechen, Problem man vergisst Dinge die man nicht gleich ausspricht
Bewertungsangst: Eigenes Wissen wird nicht geäußert weil man sich dafür schämt wenn Experte anwesend ist
Starke Persönlichkeiten: Person mit starker Meinung überstimmt andere Personen.
Social Loafing: Zurücklehnen weil andere die Arbeit machen oder eigne Beiträge nicht geschätzt werden Social Facilitation: Gegenteil: Ansporn und Motivation durch Wissensaustausch: „Ich werde gebraucht“
Frühe Fixierung: Erste Ideen werden oft behalten, Änderungen, Verwerfen ist unbequem
Ergebnis: Das Potential von Gruppenarbeit wird nicht ausgeschöpft!
Was kann man dagegen tun?
Moderation: Leitung und Steuerung der Gruppenarbeit, Vermeidung häufiger Probleme (z.B. Angst, Loafing, Fixierung)
Regeln und Methoden: Steuerung des Ablaufs, z.B. Zeit für eigene Ideen gegen Blockierung
Materialien: schriftlicher Ausdruck statt verbal gegen Blockierung. Viele Materialien verfügbar machen
Arbeitsbereiche: Visuelle räumliche Umgebung, Rückzugszonen wo man unbeobachtet ist, Vermeidung von Bewertungsangst
Konkrete Beispiele für den Einsatz von Kreativtechniken
Methoden sind:
Regeln und Ablauf
Materialien
Führen zu einem bestimmen Ziel
Es gibt viele Kreativitätstechniken
Beispiele:
Galerie: Individuelle Beiträge werden an einem gut sichtbaren Ort aufgehängt, soll Inspiration fördern, Gruppengefühl verstärken, auf dem Laufenden halten
Collective Notebook: Gedanken und Ideen werden in ein gemeinsames Notizbuch geschrieben. Mehrere Wochen, Spontane Eintragungen, Danach Auswertung und Analyse
Methode 635: 6 Personen, 3 Ideen, 5 Runden. Viele Ideen in kurzer Zeit, non-verbale Kommunikation,
Concept Maps
Nicht alle für Softwareentwicklung geeignet.
Häufiger Brainstorming Ablauf:
Generative Phase : Ideen werden generiert
Weiterentwicklung: Verfeinerung
Bewertung und Auswahl: Ideen werden ausgewählt
Zwei Beispiele werden im Folgenden vorgestellt und diskutiert
Affinity Diagramming: Gemeinsame Erstellung eines Affinitätsdiagramms
Paper Prototyping: Simulation und Test einer Software auf Papier
Einfache Methode um sich gemeinsam über Anforderungen klar zu werden
Ziel: unterschiedliche Perspektiven zusammen bringen, Wissen konzentrieren und auswählen
Divergenz und Konvergenz: Sammeln von Anforderungen. Auswahl von Anforderungen
Wichtig: Gemeinsamer Konsens muss erzielt werden
Projektbeteiligte treffen sich zu bestimmtem Thema
Teilnehmer schreiben Anforderungen auf Haftnotizen oder bringen diese mit
Persönlicher Bereich ist hier von Vorteil.
Kleine Notizen erleichtern die Handhabung und erzwingen sich kurz zu fassen
Keine verbale Interaktion in dieser Phase
Jeder Teilnehmer präsentiert seine Anforderungen und klebt diese an die Wand
Sichtbar für alle, Grobe Sortierung
Rundenbasiert jeder Teilnehmer nacheinander
Zeit für Rückfragen, Verständnisfragen, aber nicht Diskussion!
Die gesammelten Notizen werden in eine sinnvolle Anordnung gebracht.
Dabei: Diskussion über Ähnlichkeiten, Zuständigkeiten, Konflikte, offene Fragen, Wissenslücken
Auswahl von wichtigen Anforderungen und deren Zusammenhänge
Ziel: eine gemeinsame Struktur, die den Konsens der Gruppe wiederspiegelt
Das Ergebnis ist eine hierarchisierte Struktur, die für die weitere Umsetzung wichtige Anhaltspunkte liefern kann
Kategorien (Rote Ovale)
Unterkategorien (farbige Notizen)
Ähnliche Anforderungen
Ermöglicht:
Aufteilen von Zuständigkeiten
Sammlung ähnlicher Konzepte = Vereinfachung der Komplexität
Evaluation von Anforderungen, da von allen gesehen und diskutiert
Empfohlen als Einstieg in die Kooperation
In frühen Phasen um Wissen zu sammeln
Als Koordinationswerkzeug für weitere Prozessschritte
Diagramm kann in Büro aufgehängt werden. Gemeinsame Referenz
Einfache Methode um erstes Feedback einzuholen ohne die Anwendung zu programmieren
Ziel: Feedback aus einer anderen Perspektive erhalten (z.B. von zukünftigen Benutzer der nicht am Prozess beteiligt ist)
Divergenz und Konvergenz: Erstellung von Varianten oder Alternativen und Eingrenzung von Anforderungen
Wichtig: Entscheidungsfindung für den Prozess
Der Designer skizziert die Anwendung auf Papier
Dabei können auch bereits vorhandene Entwürfe verwendet werden
Annotationen können Varianten visualisieren
Abläufe der Anwendung werden entworfen
Entwicklung von unterschiedlichen Abläufen auf unterschiedlichen Blättern
Ein zukünftiger Benutzer wird eingeladen
Erklärung des Nutzungsszenarios falls der Benutzer nicht bereits involviert ist
Der Benutzer wird gebeten die Anwendung auf Papier zu bedienen
Dabei sollen die Schritte kommentiert werden. „Ich möchte das auswählen und drücke auf den Button“
Der Designer tauscht die Entwürfe einfach durch ein anderes Papier aus und simuliert so einen Ablauf
Wird verwendet um einen ersten Eindruck auf die Benutzerreaktion zu erhalten bevor man mit der Umsetzung beginnt
Anforderungen können so validiert werden, ob sie den gewünschten Effekt haben
Ideen für weitere Anforderungen können entstehen durch Benutzerkommentare
Hilft bei der Auswahl möglicher Alternativen, Einschränkung und Fokussierung
Für beide Methoden benötigt man nur einfache Werkzeuge.
Die Umgebung sollte passend gestaltet sein
Probleme mit diesen Methoden:
Es entstehen physische Artefakte
Schwer zu archivieren und über Email zu verteilen
Bessere Integration in digitale Arbeitsabläufe notwendig!