Am Wochenende stand mal wieder Geocaching auf dem Zeitplan! Lange nicht mehr losgewesen, so dass ich einen kleinen Schubs von außen brauchte um wieder durch den Wald zu wuseln ;)
Auf dem Plan stand ein Cache, den ich bereits vor einiger Zeit mit meiner werten Freundin zusammen gelöst hatte. Dieser wurde nun von den Frankentrollen reakiviert.
Und mit der tatkräftigen Unterstützung der gesamten Truppe konnte der Cash schnell ausgemacht werden ;)
Hat mal wieder Spaß gemacht!
08.02.2011
07.02.2011
Scrum - Empirische Prozessteuerung
Die unangenehmste Eigenschaft von komplexen Problemen ist, dass sie meistens unvorhergesehen auftreten. Zusätzlich ist die Art und Weise, wie diese Probleme in Erscheinung treten nicht fest definiert, sondern unterscheidet sich von Fall zu Fall.
Die meisten Prozesse funktionieren nur deshalb, weil der Grad der Ungenauigkeit tolerierbar ist. Es gibt keine exakt rund laufenden Räder oder vollkommen plane Oberflächen im Alltag. Dies ist aber in sofern tolerierbar, weil es keinen Einfluss auf die Nutzung der entsprechenden Produkte hat. Viele Prozesse können mit dieser Toleranz erfolgreich bewältigt werden.
Sind allerdings höhere Präzisionsgrade gefragt, so müssen die Prozesse, die zu ungenau sind, angepasst werden. Ein höherer Grad der Präzision kann durch eine schrittweise Steuerung des Prozesses erreicht werden. Damit soll sichergestellt werden, dass sich die einzelnen Schritte innerhalb des Prozesses in ihren Toleranzbereichen befinden. Sollten einzelne Schritte mit zu hohen Toleranzen verarbeitet werden, so können diese recht schnell auf eingegrenzt und bearbeitet werden. Die Gestaltung eines solchen Prozesses, der ein stetiges Qualitätsniveau erreicht wird als definierte Prozesssteuerung bezeichnet.
In vielen Fällen ist aufgrund der Komplexität der Zwischenschritte keine definierte Prozessteuerung möglich und es muss die sogenannte empirische Prozessteuerung eingesetzt werden.
Ken Schwaber beschreibt die Unterschiede anhand der Produktion von Massenware. Die definierte Prozessteuerung ist dann zu gebrauchen, wenn ein Produkt als Massenprodukt hergestellt werden soll. Hohe Stückzahl mit mittlerer Qualität sozusagen. Wird das Produkt allerdings von der Qualität so schlecht, dass dieses unbrauchbar wird, so muss mit Hilfe der empirischen Prozesssteuerung nachgebessert werden. Die empirische Prozesssteuerung ist dabei kostengünstiger (auf lange Sicht) als die Nachbesserung durch die definierte Prozesssteuerung.
Die drei Säulen der empirischen Prozesssteuerung sind die Sichtbarkeit, die Inspektion und die Anpassung.
Dabei wird die erstellte Funktionalität einem Review durch erfahrene Entwickler unterzogen. Dieses Review erfolgt auf Basis der vorgegebenen Programmierstandards und unterschiedlichen Vorgehensweisen. Diese Überprüfung wird immer dann durchgeführt, wenn ein Abschnitt fertiggestellt worden ist. Eventuell auftretene Verbesserungen oder Kommentare werden durch den Entwickler duchgeführt.
Die meisten Prozesse funktionieren nur deshalb, weil der Grad der Ungenauigkeit tolerierbar ist. Es gibt keine exakt rund laufenden Räder oder vollkommen plane Oberflächen im Alltag. Dies ist aber in sofern tolerierbar, weil es keinen Einfluss auf die Nutzung der entsprechenden Produkte hat. Viele Prozesse können mit dieser Toleranz erfolgreich bewältigt werden.
Sind allerdings höhere Präzisionsgrade gefragt, so müssen die Prozesse, die zu ungenau sind, angepasst werden. Ein höherer Grad der Präzision kann durch eine schrittweise Steuerung des Prozesses erreicht werden. Damit soll sichergestellt werden, dass sich die einzelnen Schritte innerhalb des Prozesses in ihren Toleranzbereichen befinden. Sollten einzelne Schritte mit zu hohen Toleranzen verarbeitet werden, so können diese recht schnell auf eingegrenzt und bearbeitet werden. Die Gestaltung eines solchen Prozesses, der ein stetiges Qualitätsniveau erreicht wird als definierte Prozesssteuerung bezeichnet.
In vielen Fällen ist aufgrund der Komplexität der Zwischenschritte keine definierte Prozessteuerung möglich und es muss die sogenannte empirische Prozessteuerung eingesetzt werden.
Ken Schwaber beschreibt die Unterschiede anhand der Produktion von Massenware. Die definierte Prozessteuerung ist dann zu gebrauchen, wenn ein Produkt als Massenprodukt hergestellt werden soll. Hohe Stückzahl mit mittlerer Qualität sozusagen. Wird das Produkt allerdings von der Qualität so schlecht, dass dieses unbrauchbar wird, so muss mit Hilfe der empirischen Prozesssteuerung nachgebessert werden. Die empirische Prozesssteuerung ist dabei kostengünstiger (auf lange Sicht) als die Nachbesserung durch die definierte Prozesssteuerung.
![]() |
| Säulen der empirischen Prozesssteuerung |
- Sichtbarkeit
- Alle ergebnisorientierten Aspekte eines Prozesses müssen für die Überwacher des Prozesses sichtbar sein. Die Sichtbaren Eigenschaften müssen zwangsläufig wahrheitsgetreu sein, es gibt keinen Spielraum für Täuschungen und Fehlinterpretation.
- Inspektion
- Alle Aspekte des Prozesses müssen so oft untersucht werden, dass nicht tolerierbare Abweichungen im Prozess festgestellt werden können. Die Wahl der Häufigkeit muss berücksichtigen, dass die Inspektion an sich die Prozesse verändern kann. Bei hoher Dichte der Inspektionen wird die Inspektionstoleranz des Prozesses überschritten.
- Anpassung
- Sollten Abweichungen der Toleranzen heruasgefunden werden, so muss der Prüfer die Prozesse anpassen und justieren. Die Anpassungen müssen so schnell wie möglich durchgeführt werden.
![]() |
| Code Review durch erfahrene Entwickler |
05.02.2011
Scrum - Komplexität der Softwareentwicklung
Im Rahmen einer jeden Entwicklung wird eine Menge an Anweisungen erzeugt, welche es ermöglichen eine Mensch-Maschine oder Maschine-Maschine Kommunikation zu etablieren.
Der Anforderungsgrad einer entwickelten Software kann von simpel bis unvorstellbar komplex reichen und somit kann auch der Grad der erforderlichen Genauigkeit schwanken. Mit dem Zusammenspiel von komplexen Anforderungen mit hoher Genauigkeit kann der Grad der Komplexität schnell unermesslich groß werden.
Ken Schwaber führt als Einflussgrößen die Menschen, die gewählte Technologie und die Anforderungen an. Ich persönliche sehe aber auch noch die Zeit als kritische Einflussgröße. Zwar nicht unmittelbar, wenn man die reine Komplexität einer Anforderung misst, aber doch unmittelbar, da die Zeit immer Einfluss auf die Menschen und die gewählte Technologie hat.
Anforderungen sind in der Praxis meist nicht trivial. In den meisten Fällen bleiben die Anforderungen auch nicht konstant, sondern werden im Rahmen der Entwicklung modifiziert oder auch komplett überarbeitet. Die gestellten Anforderungen kommen in der Regel vom Kunden. Die Kunden sind aber nicht ausschließlich die Personen, die ein Interesse an dem Ergebnis des Projektes haben. Somit wird der Begriff Stakeholder eingeführt. Dieser Begriff kennzeichnet wortwörtlich die Interessengruppe, die das Projekt unter Beobachtung hat. Dabei handelt es sich um Investoren, Anwender oder auch einfach nur durch das Projekt betroffene Teilnehmer, wie technische Administratoren. Damit wird es umso schwieriger die Interessen aller Beteiligten unter einen Hut zu bringen.
In der Regel kommen in Softwareprojekten keine einfachen Technologien zum Einsatz. Ken Schwaber hat eine schöne Definition, was Software-Entwicklungsprojekte angeht.
Er bezeichnet diese als "Anwendung moderner, häufig unzuverlässiger Technologien zur Umsetzung geschäftlicher Aufgabenstellungen und Erzielung von Vorteilen gegenüber dem Wettbewerb". Ich finde, dass dies ganz gut passt.
Betrachtet man nun die Abhängigkeit der Technologien und Anforderungen von einander, wird schnell klar, dass diese den Komplexitätsgrad des Projektes maßgeblich beeinflussen. Je weiter die Anforderungen von der Vereinbarung abschweifen, desto komplexer wird das Projekt. Je weniger Gewissheit über die Technologie herrscht, desto komplexer wird das Projekt.
Neben der Dimension der Technologie und der Dimension der Anforderung kommt noch der Faktor der Menschen hinzu. Alle Teilnehmer eines Entwicklungsteams sind in ihren Skills verschiedenen und haben in der Regeln unterschiedliche Standpunkte, Meinungen und Ansichten, die auch noch von persönlichen Emotionen beeinflusst werden. Wird diese Dimension berücksichtigt, so steigt der gesamte Grad der Komplexität um ein Vielfaches.
Scrum versucht diese Komplexität mit den Methoden aus der empirischen Prozessteuerung zu relativieren.
Der Anforderungsgrad einer entwickelten Software kann von simpel bis unvorstellbar komplex reichen und somit kann auch der Grad der erforderlichen Genauigkeit schwanken. Mit dem Zusammenspiel von komplexen Anforderungen mit hoher Genauigkeit kann der Grad der Komplexität schnell unermesslich groß werden.
![]() | ||
| Einflussgrößen bzgl der Komplexität |
Anforderungen sind in der Praxis meist nicht trivial. In den meisten Fällen bleiben die Anforderungen auch nicht konstant, sondern werden im Rahmen der Entwicklung modifiziert oder auch komplett überarbeitet. Die gestellten Anforderungen kommen in der Regel vom Kunden. Die Kunden sind aber nicht ausschließlich die Personen, die ein Interesse an dem Ergebnis des Projektes haben. Somit wird der Begriff Stakeholder eingeführt. Dieser Begriff kennzeichnet wortwörtlich die Interessengruppe, die das Projekt unter Beobachtung hat. Dabei handelt es sich um Investoren, Anwender oder auch einfach nur durch das Projekt betroffene Teilnehmer, wie technische Administratoren. Damit wird es umso schwieriger die Interessen aller Beteiligten unter einen Hut zu bringen.
In der Regel kommen in Softwareprojekten keine einfachen Technologien zum Einsatz. Ken Schwaber hat eine schöne Definition, was Software-Entwicklungsprojekte angeht.
Er bezeichnet diese als "Anwendung moderner, häufig unzuverlässiger Technologien zur Umsetzung geschäftlicher Aufgabenstellungen und Erzielung von Vorteilen gegenüber dem Wettbewerb". Ich finde, dass dies ganz gut passt.
Betrachtet man nun die Abhängigkeit der Technologien und Anforderungen von einander, wird schnell klar, dass diese den Komplexitätsgrad des Projektes maßgeblich beeinflussen. Je weiter die Anforderungen von der Vereinbarung abschweifen, desto komplexer wird das Projekt. Je weniger Gewissheit über die Technologie herrscht, desto komplexer wird das Projekt.
Gewissheit bzgl. der Technologie | Abweichung von den Anforderungen | Komplexität des Projektes |
Neben der Dimension der Technologie und der Dimension der Anforderung kommt noch der Faktor der Menschen hinzu. Alle Teilnehmer eines Entwicklungsteams sind in ihren Skills verschiedenen und haben in der Regeln unterschiedliche Standpunkte, Meinungen und Ansichten, die auch noch von persönlichen Emotionen beeinflusst werden. Wird diese Dimension berücksichtigt, so steigt der gesamte Grad der Komplexität um ein Vielfaches.
Scrum versucht diese Komplexität mit den Methoden aus der empirischen Prozessteuerung zu relativieren.
03.02.2011
Scrum - Gerüst und Kernstück
Die Stärke von Scrum ist die iterative Vorangehensweise. Dabei werden in unterschiedlichen Abschnitten Inkremente des eigentlichen Projektes zusammengestellt.
Dabei unterliegen die einzelnen Iterationen zur Erstellung eines Inkrements einem definierten Zyklus. Dieser Zyklus beinhaltet eine Menge von Entwicklungsaktivitäten, die nacheinander ausgeführt werden. Dabei finden während dieser Entwicklungsaktivitäten tägliche Reviews, die so genannten Daily Scrums statt. Dabei treffen sich alle Teammitglieder und reflektieren ihre geleistet Arbeit anhand einfacher Fragestellungen:
Der Ablauf einer solchen Iteration entspricht immer einem gleichbleibenden Muster.
Im ersten Schritt wählt das Team in Absprache mit dem ProductOwner und dem ScrumMaster die umzusetzende Funktionalität aus, die in der folgenden Iteration realisiert wird.
Im zweiten Schritt arbeitet das Team autark an der Iteration und synchronisiert sich durch die täglich stattfinden Daily Scrums.
Das fertiggestellte Inkrement wird den Stakeholdern präsentiert und von diesen untersucht und abgenommen.
Das Kernstück dieses gesamten Prozesses ist die Iteration. Das Team bewertet die Anforderungen anhand der verfügbaren Technologien, Qualifikationen und Möglichkeiten. Dabei wird gemeinsam festgelegt welche Funktionalität umgesetzt werden soll. Der Lösungsansatz wird dabei täglich aktualisiert und einem Auftreten von Schwierigkeiten oder Hindernissen neu bewertet.
Dieser kreative Prozess ist das, was Scrum ausmacht.
Dabei unterliegen die einzelnen Iterationen zur Erstellung eines Inkrements einem definierten Zyklus. Dieser Zyklus beinhaltet eine Menge von Entwicklungsaktivitäten, die nacheinander ausgeführt werden. Dabei finden während dieser Entwicklungsaktivitäten tägliche Reviews, die so genannten Daily Scrums statt. Dabei treffen sich alle Teammitglieder und reflektieren ihre geleistet Arbeit anhand einfacher Fragestellungen:
- Was habe ich seit dem letzten Daily Scrum geschafft?
- Gibt es aktuelle Hindernisse, die die Aktivität einschränken?
- Wie sieht die weitere Planung für die Aktivität aus?
Der Ablauf einer solchen Iteration entspricht immer einem gleichbleibenden Muster.
Im ersten Schritt wählt das Team in Absprache mit dem ProductOwner und dem ScrumMaster die umzusetzende Funktionalität aus, die in der folgenden Iteration realisiert wird.
Im zweiten Schritt arbeitet das Team autark an der Iteration und synchronisiert sich durch die täglich stattfinden Daily Scrums.
Das fertiggestellte Inkrement wird den Stakeholdern präsentiert und von diesen untersucht und abgenommen.
Das Kernstück dieses gesamten Prozesses ist die Iteration. Das Team bewertet die Anforderungen anhand der verfügbaren Technologien, Qualifikationen und Möglichkeiten. Dabei wird gemeinsam festgelegt welche Funktionalität umgesetzt werden soll. Der Lösungsansatz wird dabei täglich aktualisiert und einem Auftreten von Schwierigkeiten oder Hindernissen neu bewertet.
Dieser kreative Prozess ist das, was Scrum ausmacht.
01.02.2011
Scrum - Einführung
Die Entwicklung von Software ist in der Regel ein komplexer Prozess. In den meisten Fällen ist eben diese Komplexität im Rahmen der Softwareentwicklung nicht steuerbar und auch nicht zu kontrollieren. Die Ergebnisse der Entwicklung sind vollständig durch den entsprechenden Entwickler geprägt und beinhalten dessen aktuelle Sicht auf das Problem, welches er gerade bearbeitet hat.
Scrum bietet auch in diesem Fall keine Steuermöglichkeit oder gar Kontrolle über die Komplexität des Entwicklungsprozesses, sondern hilft viel mehr den erfolgreichen Projektabschluss zu realisieren. Entwickelt wurde Scrum durch Ken Schwaber um aus komplexen Aufgabenstellungen erfolgreiche Endprodukte zu schaffen. Die wesentlichen Eigenschaften von Scrum sind dabei aus der Prozessteuerung der Industrie abgeleitet. Dazu gehören unter anderem die Selbstkontrolle bzw. das Selbstmanagement und die Technik einzelne komplexe Aufgaben in kleinere Teilaufgaben zu strukturieren.
Eine wesentliche Rolle in dem ganzen Prozess hat der ScrumMaster inne. Er übernimmt den admistrativen Bereich und vermittelt zwischen dem Team und dem ProductOwner.
Der ScrumMaster muss die anfallenden Probleme erkennen und eventuelle Schwierigkeiten aus dem Weg räumen.
Um die komplexen Vorgänge zu beeinflussen werden Verfahren, wie die empirische Prozesssteuerung eingesetzt. Die Kernaussage ist in diesem Fall, dass ein Projekt unter dem Einsatz von Scrum keinen garantierten Verlauf bietet und damit exakt die erwarteten Ergebnisse bringt, sondern dass das Endprodukt das bestmögliche Ergebnisse bei sinnvollem Einsatz der zur Verfügung stehenden Mittel bietet.
Scrum bietet auch in diesem Fall keine Steuermöglichkeit oder gar Kontrolle über die Komplexität des Entwicklungsprozesses, sondern hilft viel mehr den erfolgreichen Projektabschluss zu realisieren. Entwickelt wurde Scrum durch Ken Schwaber um aus komplexen Aufgabenstellungen erfolgreiche Endprodukte zu schaffen. Die wesentlichen Eigenschaften von Scrum sind dabei aus der Prozessteuerung der Industrie abgeleitet. Dazu gehören unter anderem die Selbstkontrolle bzw. das Selbstmanagement und die Technik einzelne komplexe Aufgaben in kleinere Teilaufgaben zu strukturieren.
Eine wesentliche Rolle in dem ganzen Prozess hat der ScrumMaster inne. Er übernimmt den admistrativen Bereich und vermittelt zwischen dem Team und dem ProductOwner.
Der ScrumMaster muss die anfallenden Probleme erkennen und eventuelle Schwierigkeiten aus dem Weg räumen.
![]() |
| Scrum - Rollen in der Übersicht |
Um die komplexen Vorgänge zu beeinflussen werden Verfahren, wie die empirische Prozesssteuerung eingesetzt. Die Kernaussage ist in diesem Fall, dass ein Projekt unter dem Einsatz von Scrum keinen garantierten Verlauf bietet und damit exakt die erwarteten Ergebnisse bringt, sondern dass das Endprodukt das bestmögliche Ergebnisse bei sinnvollem Einsatz der zur Verfügung stehenden Mittel bietet.
Abonnieren
Posts (Atom)









