Software engineering management
1. Ein Beispiel für ein mißlungenes Projekt
(Corporate Information System)
1.1 Ein Softwareprojektdesaster
Ein Projekt mißlang, obwohl die
Verantwortlichen alle richtigen Dinge getan haben.
So haben sie:
verschiedene Management Publications zu Hilfe
gezogen und die Idee eines zentralisierten, unternehmensweiten Informationssystems
akzeptiert und übernommen
es wurde ein sogenannter think tank
eingestellt, der eine Durchführbarkeitsstudie anfertigte, die zwei Kalenderjahre (15
Arbeitsjahre) bis zur Fertigstellung benötigte
das Unternehmen verwendetet die modernsten
Computer und Datenbanksoftware
es wurden ohne Protest mehrere Millionen
Dollar an zusätzlichen Entwicklungskosten gezahlt, obwohl das Budget schon aufgebraucht
war
es wurden die neuesten strukturierten
Programmtechniken verwendet
1.2 Aufgetretene Fehler
Programm funktionierte - Programmierer und
Projektmitarbeiter brauchten mehr Zeit um das System zu tunen - zu langsam
20,000 Transaktionen jeden Tag um ihn auf den
aktuellen Stand zu bringen - eine Transaktion kann bis zu 20 Minuten dauern - Programm
versagte, alle notwendigen Updates eines Tages auch an einem Tag durchzuführen
2 Jahre um eine neue Fabrik einzubinden -
aber eine neue Fabrik alle 6 Monate
1.3 Konsequenzen
Projekt mußte aufgegeben werden
gegenüber Konkurrenz 5 Jahre verloren
sollte nicht passieren, tut es aber immer
wieder
1.
4 Das Desaster vermeiden
Systementwickler hatten nicht den Mut ihre
Fehler zuzugeben - Ich wußte das es nicht funktionieren wird, aber meine Programme
haben funktioniert - keine Sorgen
Der Grund für das Versagen des Projekts: es
wurden keine Project Attributes, die für das überleben des Programms wichtig waren,
bestimmt und auch nicht kontrolliert. Es konnte daher auch kein, auf diese Attributes
aufbauender, passender Aufbau des Programms erfolgen. Kleinere Schritte
Critical Attributes: Qualität und Grundlagen
- Kollaps eines Systems verursachen - unter bestimmten Limits (worst acceptable level)
CIS Fall: tägliche Transaktionsleistung
nicht ausreichend und konnte auch nicht ausreichend verbessert werden - Integration neuer
Firmen dauert zu lange - hätte Anzahl der Transaktionen pro Tag bestimmt werden müssen -
86 400 Sekunden in 24 Stunden ® 1 Sekunde pro Transaktion
1.5 Genauere Leistungsangaben für CIS
Work Capacity: es muß möglich sein, die
Arbeit eines normalen Tages an einem Bürotag zu erledigen
Worst Case: 4 Sekunden für eine
durchschnittliche Transaktion
Planned level(in der Anfangsphase): <1
Sekunde pro durchschnittlicher Transaktion
Planned level(bei mehr als 100 000 Tr./Tag):
0.2 Sekunden pro Transaktion
Kein Zeichen davon in der Praxis - niemand
hat sich Sorgen darum gemacht - genauso bei der Einbindung einer neuen Firma
1.
6 Einbindungsspezifikationen für CIS
Adaptability: das System sollte in der Lage
sein, eine neue Firma in einer Zeit integrieren können, so das das System selber nicht de
bremsende Faktor ist
Worst acceptable case: nicht mehr als 6
Monate mit nicht mehr als 10 Programmierern
Planned level: wenig als 6 Arbeitsmonate mit
gerechtfertigtem Aufwand
1.7 Architecture and Engineering
Da keine klar definierten Attribute
requirement specifications gefunden wurden, fehlten diese auch im Engineering and
architectural process.
z.B.: Arbeitskapazität war nicht klar
definiert - große Datenbank vom Hardwarehersteller zur Verfügung gestellt zu langsam und
ungeschickt - schwerwiegende Architecture decision - der Hersteller wollte nur Geld
verdienen, Rest egal - alle diese fehlenden Specifications hätten aber in die Designphase
der File und Programmorganisation eingebunden werden müssen, um die benötigten
Ergebnisse zu erreichen. Die Aufmerksamkeit konzentrierte sich auf die Funktionen der
Applikation und der Programmierung.
- kritischen Faktoren wurden übergelasssen
1.8 Evolutionary delivery (evol. Entwicklung)
Alle diese Fehler hätten früh genug erkannt
werden können, wenn man früh genug Erfahrung mit der Kapazität und Adaptierbarkeit
gemacht hätte. Es wurde aber nicht Stück für Stück entwickelt, sondern alles war auf
einen Termin ausgelegt an dem alles funktionieren sollte. Das heißt 5 Jahre Arbeit und es
läuft, oder gar nichts.
Evolutionary delivery hätte das böse
Erwachen verhindern können.
Nach einer ersten Entwicklungsphase hätte festgestellt
werden können, ob es sich auszahlt weiter zu machen und ob diese erste Phase überhaupt
funktioniert.
1.9 Die CIS Fehler kommen in den meisten
Software Engineering Projekten vor
Volvo Schweden
unklare Systemspezifikationen
zu wenig Arbeit und ausgebildetes Personal
(software architects & sw-engineers), um das System auf die wichtigen Attributes
auszurichten - Programmierer durften den Aufbau des Programms gestallten
kein Feedback und keine Chance aus Fehlern zu
lernen - kein Evolutionary delivery - alles auf einen Termin ausgerichtet
1.10 Grundlegende Prinzipien des Software
Engineering Management
Das unsichtbare Ziel" - Prinzip
Alle kritischen Systemeigenschaften müssen klar bestimmt werden. Unsichtbare Ziele sind
für gewöhnlich schwer zu treffen außer per Zufall
Das alle-Löcher-im-Boot" -
Prinzip (wenn nicht alle zu sind, geht es unter)
Die Designlösungen müssen alle kritischen Eigenschaften auf einmal erfüllen
Das den Nebel vom Ziel vertreiben"
- Prinzip
Alle kritischen Eigenschaften können in meßbaren, testbaren Einheiten definiert werden
Das lerne bevor dein Budget verbraucht
ist" - Prinzip
Versuche niemals, ein großes und komplexes System auf einmal abzuliefern. Liefere immer
kleinere Teile des Programms, damit Probleme früh erkannt und korrigiert werden können.
Das fühle dich sicher"
Minimisationsprinzip
Wenn du nicht weißt was du tust, dann tue es nicht im großen Rahmen
2. Was ist das wirkliche Problem beim Managen
eines Projekts?
2.1 Fehlen der Klarheit beim Definieren von
Zielen
selten zu finden, daß Ziele klar und
komplett definiert sind - keine Kostenziele, Bemerkungen wie verbessertes
Benutzerservice" oder bessere Produktverlässlichkeit", keine Ziele für
Erweiterbarkeit oder Produktivität
2.2 Ein Beispiel für ein unklar definiertes
Ziel
Das neue Produkt soll folgende Eigenschaften
haben: es soll einen angemessenen Kundenservice ermöglichen der die Kunden mit Produkten
beliefern kann - das Lager soll auf die Anforderungen des Kundenservice abgestimmt
werden(Menge der lagernden Produkte) - dadurch soll mehr Flexibilität und Effizienz in
der Verwendung der vorhandenen Ressourcen erreicht werden
Was wollte der Kunde jetzt wirklich?
Beim formulieren der Ziele stellte sich
heraus, daß er darauf aus war, 400 Millionen Dollar pro Jahr zu sparen.
2.3 Unklare Ziele
Das Prinzip der unklaren Ziel:
Projekte ohne klare Ziele, werden ihre Ziele
auch nicht klar erreichen
(Du kannst nicht ins Schwarze treffen, wenn
du nicht weißt wo es ist)
Ziele eines Projekts sind die Ergebnisse die
wir wollen.
Es ist bei der Definition aber wichtig, daß das eigentliche Ziel nicht mit
der Bedeutung, die das Ziel für meinen Lösungsweg hat, vermische. Beispiel: Steigerung
der Performance um das Doppelte" ist ein Ziel. Wie das geschehen soll geht daraus
nicht hervor, soll es auch nicht. Dafür sind die Lösungswege da.
Verringerung der Zugriffszeit auf
Datensätze, bessere Strukturierung, usw."
2.
4 Wege um die Eigenschaften eines Produktes
messen zu können
Um meßbare Eigenschaften zu erhalten, muß
man sich überlegen, was die Ziele im praktischen Bereich bedeuten. Manchmal kann das
finden von meßbaren Eigenschaften sehr schwer sein, wie zum Beispiel bei diesem Fall:
Wie mißt man Benutzerfreundlichkeit? Man
kann ein benutzerfreundliches Programm leicht erkennen, aber wenn man wem anderen sagen
soll was er zu tun hat um ein benutzerfreundliches Programm zu schreiben, kann er das
meistens nicht.
wieviel persönliche Erfahrung ist notwendig
um in einen Trainingskurs für das Produkt einzusteigen
wieviel Trainingszeit wird benötigt um ein
bestimmtes Produktivitätslevel mit dem Produkt zu erreichen
wieviel Arbeit kann eine trainierte Person
verrichten
wieviele Fehler werden vom Benutzer in seiner
Arbeit erzeugt
Meinung der Benutzer, wie sehr ihnen das
Produkt gefallen hat
Alle diese Punkte können gemessen und klar
definiert werden
2.5 Welche Vorteile bringt Meßbarkeit mit
sich
Für den Kunden z.B:
Mehr Gewißheit, das er auch bekommt was er
will
Alle Bewerber um ein Projekt haben die selben
Interpretationen, was gefordert wird
Für den Verkäufer z.B:
Die Möglichkeit, die gewünschten
Eigenschaften durch Mißverständnisse zu verfehlen wird reduziert
Wenn der Auftraggeber die gefragten
Eigenschaften ändert, kann man nachweisen das sie sich von den Vorigen unterscheiden und
mit einer Änderung des Preises argumentieren.
(Es war doch von Anfang an klar, das wir mit
Benutzerfreundlichkeit gemeint haben, das die Arbeitsleistung einer Person um 20 %
gesteigert wird)
2.6 Der teuflische Kreislauf der Entwicklung
Wie die gewünschten Eigenschaften unklar,
unkomplett oder falsch sind, wird der Aufbau genauso falsch sein
Wenn der Aufbau falsch ist, werden die
geschätzten Kosten falsch sein
Wenn die Kosten falsch sind, werden die Leute
merken das wie schlecht gemanagt sind
3. Was ist eine Lösung und was nicht?
3.1 Was ist mit einer Lösung gemeint?
Eine Lösung ist eine Sammlung von Ideen, die
zumindest einen Teil des Problems positiv behandeln. Eine Lösungsidee ohne positiven
Effect auf unsere Anforderungen ist daher auch keine Lösung. Viele Lösungen werden auch
negative Seiten haben.
Die Funktion des Produkts wurde von allen
Gruppen verstanden (Schaukel auf Baum für Person), die Eigenschaften wurden hingegen nur
sehr ungenau festgelegt. Genau das passiert beim Software Engineering. Mit der Zeit wurden
zwar die funktionellen Eigenschaften immer intelligenter, aber ohne die Eigenschaften
genau zu beschreiben.
Eine Lösung ist immer dann zu beachten, wenn
die positiven Beiträge gegenüber den negativen Beiträgen überwiegen. Lösungen sind
immer nur solange gültig, solange sie den derzeitigen Anforderungen dienen, und nicht
länger. Andere Anf.
- andere Lösung.
3.2 Wie unterscheiden sich Lösungen von
Zielen?
Zuerst ein nicht technisches Beispiel:
Functional Goals:
Vater zu sein
selbständig
in Paris zu wohnen
Attribute Goals:
Gesundheit (zumindest 350 nicht bettlägerige
Tage im Jahr bis zum Alter von 70)
Wohlstand (Einnahmen > Ausgaben)
Weisheit ( mehr als zehn neue Bücher pro
Jahr lesen)
Zufriedenheit ( mehr als 300 im Jahr an denen
man sich positiv und gut fühlt)
Einige Lösungen: (Wege um die Attribute
goals zu erreichen)
einen Gesundheitscheck durchführen lassen
weniger Geld für Zigaretten und Alkohol
ausgeben
sich entscheiden, sich über Dinge die man
nicht beeinflussen kann auch keine Sorgen zu machen
Diese Liste zeigt wie unterschiedlich
Funktionen, Eigenschaften und Lösungen sind.
Funktional goals listen auf was wir in der
Zukunft wollen.
Attribute goals sind variable (in der Zeit)
und verhandelbare(kommt darauf an was ich dafür tun muß) meßbare Dimensionen, die die
Funktionen besitzen. Sie können variieren wenn sich unsere Anforderungen ändern und
unsere Werte und unser Wissen über sie ändert.
Die Funktionellen Aspekte bleiben aber
ziemlich konstant. Die Lösungen müssen immer von den Zielen getrennt werden, damit sie
jederzeit ausgetauscht werden können.
3.3 Definitionen
Functional goals: Zustände die nur einen
zukünftigen Zustand haben können: wahr oder falsch
Attribute goals: Zustände die in meßbaren
Dimensionen angegeben werden. Sie beziehen sich auf Qualität" (gute Dinge von
denen wir so viel wie möglich haben wollen) und Resourcen" ( was haben wir zur
Verfügung um die Ziele zu erreichen (funkt. & att)
Lösungen: sind Ideen, die die zukünftigen
Ziele beinhalten.
Der Software engineering management process
konzentriert sich hauptsächlich darauf , die Attribut goals zu erreichen.
3.4 Prinzipien um die richtige Lösung zu
finden
Das unheilige Lösung - Prinzip
Lösungen sind niemals heilig - ändern sich
die Anforderungen oder ergeben sich Konflikte mit anderen Lösungen sollten sie geändert
werden
Das versteckte Lösung - Prinzip
Lösungen sollten nie in einem Ziel
beinhaltet sein, außer sie sind wirklich das wichtige Ziel selbst
4. Bewerten von Lösungen
4.1 Die beste Lösung
Lösungen können bewertet und miteinander
verglichen werden. Die beste Lösung ist die, welche die meiste Übereinstimmung mit den
geforderten Eigenschaften (attribute goals) aufweist.
4.2 Abstimmen der Ziele und Lösungen
aufeinander
Zuerst müssen wir feststellen, ob die
gewählte Lösung die gewünschten Eigenschaften mit dem gewünschten Niveau erreicht,
oder zumindest nicht unter dem Mindestniveau liegt.
Das kann man mit einer einfachen Tabelle.
Ziele
Lösungen
Gesundheit
nicht rauchen,
nicht trinken, früh ins Bett
Wohlstand
nicht rauchen,
nicht trinken, spart 10 % des Einkommens
Weisheit
keine Lösung
Zufriedenheit
humorvolle
Bücher lesen, nett zu anderen Leuten sein, früh aufstehen
Hier sehen wir, das mehr als eine Lösung pro
Eigenschaft angewandt wird und einige Lösungen können mehr als eine Eigenschaft
abdecken. Weisheit hingegen ist durch keine Lösung abgedeckt, das ist ein Zeichen, das
Weisheit mehr Aufmerksamkeit braucht, wenn wir unsere Ziele erreichen wollen.
Aber diese Analyse sagt uns viele Dinge
nicht, die wir noch gerne wissen würden.
Welche Nebeneffekte haben die Lösungen? Ein
Raucher und Trinker wird der Lösung einen negativen Nebeneffekt auf seine Zufriedenheit
zusprechen. Die Lösung nett zu anderen Leuten zu sein, könnte beinhalten, anderen Leuten
einen Drink anzubieten, und dann aus Höflichkeit mitzutrinken. Die Tabelle gibt uns
einige Ideen, wie sich die Lösungen auf die Ziele auswirken werden und ist einer
mündlichen Beschreibung der Lösungen immer vorzuziehen.
4.3 Die Lösungen vergleichen
Es ist fast unmöglich, ein Set von Zielen
anzugeben ohne
eine Liste mit viele Zielen, statt ein oder
zwei zu bekommen
herauszufinden, das jedes Ziel in irgend
einer Weise in Konflikt mit einem anderen steht
herauszufinden, das einige Ziele wichtiger
sind als andere, und das macht das aussortieren der Konflikte zwischen den Zielen noch
schwieriger
A, B, C A beeinflußt B, C negativ - A ist
aber wichtiger als B und C
Beim vergleichen der Lösungen soll jetzt die
best passende Lösung, für die vielen geforderten Eigenschaften gefunden werden.
Normalerweise haben wir sehr viele
Informationen über jede alternativer Lösung.
Zum Beispiel beim Kauf neuer Hardware.
(Höhere Taktrate, Prozessor, Speicher,..)
Tabelle
Lösung 1 Lösung 2 Lösung 3 Summe
Attribut 1 100 40 0 140
Attribut 2 -40 0 80 40
Attribut 3 30 5 45 80
Lösungsvergleich 90 45 125
Lösung 3 die beste, weil sie die 3 Attribute
zusammen am besten erfüllt
Summe der Attribute zeigt, wie sehr sich die
Lösungen mit jedem Attribut beschäftigen
Prozentzahlen, wie gut das Attribut erfüllt
wird
Die Tatsache, das alle Daten übersichtlich
aufgelistet sind, macht das finden der richtigen Entscheidung einfacher
5. Das Risiko abschätzen
5.1 Worin besteht das Risiko?
Die Umsetzung von Lösungen, die auf Plänen
aufbauen, die auf Schätzungen, Annäherungen und Unklarheiten aufbauen, sind mit Risiko
verbunden.
Aber auch in der Wirtschaft gilt, je höher das Risiko, desto größer der
Gewinn. Es ist daher sinnlos zu versuchen, das Risiko zu eliminieren, oder zu versuchen es
zu verkleinern, es ist wichtig die richtigen Risiken einzugehen.
5.2 Für das Risiko verantwortlich sein
Man kann das Ergebnis von Aktionen schon
relativ früh abschätzen, aufgrund von Beobachtungen. Man muß dabei aber bereit sein,
ein bestimmtes Risiko auf sich zu nehmen. Annahmen könnten falsch sein oder irreführend.
Wenn wir den Fehler machen, auf 100 % richtigen Abschätzungen zu bestehen, wird das auch
ewig dauern. Wir sollten uns vielmehr darauf konzentrieren, das Risiko zu kennen und zu
kontrollieren. Zu wissen, daß ein Risiko vorhanden ist, und auch das Level dieses Risikos
zu kennen ist ein Zeichen von Kompetenz. Manche Fachleute glauben irrtümlich, daß das
aufzeigen von Risiken ein Zeichen von Inkompetenz ist - weil es zeigt das man keine
vollkommene Kontrolle hat. Es ist aber wichtig das Risiko zu kennen und anderen
mitzuteilen, auf was sie sich einlassen.
Das Risiko teilen - Prinzip
Ein wirklicher Fachmann kennt das Risiko, den
Grad des Risikos, die Ursachen, die Handlungen die notwendig sind um das Risiko zu
kontrollieren und teilt sein Wissen seinen Kollegen und Klienten mit.
5.3 Überschreitungen erwarten
Das gilt vor allem im Bereich der Kosten. Von
einem professioneller SW-engineer wird erwartet, das er zwischen vorhersehbaren Kosten
(durch Erfahrung) und zwischen unsicheren Kostenfaktoren (neue Techniken, keine Erfahrung
über Kosten) unterscheidet. Wie kann man jetzt als Manager die schlimmsten Effekte eines
unbekannten Systems verhindern.
Das Versprechen - Prinzip
Gib niemals ein Versprechen das du nicht
halten kannst, auch nicht unter Druck
Das niedergeschriebenen Versprechen - Prinzip
Wenn du ein Versprechen gibst, dann von dir
aus, und in niedergeschriebener Form
Das stillschweigende Versprechen - Prinzip
Wenn du glaubst, das jemand anderer (Boß
oder Kunde) annimmt das du ein Versprechen gemacht hast, nimm dir die Zeit um es
abzustreiten, und die Versprechen zu wiederholen, die du wirklich gemacht hast, und zwar
schriftlich
Das Abweichungs - Prinzip
Wenn du eine Abweichung feststellst, mache
eine Liste der möglichen Ursachen und der möglichen Aktionen um diese Risiken zu
kontrollieren
Das beweis es schriftlich - Prinzip
Hänge das folgende Schild bei deinem
Schreibtisch auf: Wenn du es nicht schriftlich von mir hast, habe ich es nicht versprochen
5.4 Den Grad der Unsicherheit bestimmen
Management beinhaltet immer das Treffen von
Entscheidungen, mit unterschiedlichen Graden des Risikos das zu Fehlentscheidungen führen
kann.
Das Risiko muß aber klar definiert werden. Unbrauchbar ist die Aussage: Muß so
bald wie möglich fertig sein. Eine Verbesserung wäre es zu sagen: muß am 24. Dezember
um 17:00 fertig sein. Aber es wäre noch sinnvoller, eventuelle Unregelmäßigkeiten
festzuhalten. Wie z.
B.: Es wird geplant das Projekt bis zum 24. Dezember fertigzustellen,
dieser Termin ist der früheste vorstellbare Termin. Es ist eine große Wahrscheinlichkeit
gegeben, das es durch Krankheit des Personals zu einer einwöchigen Verspätung kommen
wird. Weiters ist auch eine Verzögerung um ein Monat denkbar, wenn der Hardwarelieferant
es versäumt wie ausgemacht zu liefern.
Zusammengefaßt: 24.
Dez. (+7,
Personalkrankheit) und (+31 Lieferschwierigkeiten des Hardwarelieferanten)
Weiters ist zu beachten, daß das Risiko
steigt, wenn es sich um eine Neuentwicklung handelt.
statt 20,000 Transactionen 40,000
durchführen will. Die höchste bekannte Zahl von Transactionen auf einem ähnlichen
System sind aber 30,000. Das Projekt-Team muß etwas neues, innovatives Umsetzen.
Das Prinzip der Risikoaufdeckung
Der Grad des Risikos und seine Ursachen,
dürfen nie vor den Entscheidungstreffern versteckt werden.
Das Fragen - Prinzip
Wenn du nicht nach Risikoinformationen
fragst, fragst du nach Problemen.
6. Evolutionäre Lieferung
Die meisten Bücher und heutigen SW
eingineering models sind auf dem Wasserfallmodel" für die Lieferung aufgebaut.
Das kann verschiedene Formen annehmen, aber charakteristisch dafür ist:
das die Planung des ganzen Projekts auf einen
Liefertermin ausgelegt ist. Wenn die Lieferung in einzelne Phasen aufgeteilt ist, dann
sind sie sehr umfangreich. Es gibt kein Konzept um unzufrieden abgeschlossene Phasen noch
einmal aufzuarbeiten.
(Macht es so gut es geht fertig, und aus)
alle Analysen und das ganze Design werden bis
ins Detail vorbereitet, bevor mit der Programmierung und dem Testen angefangen wird
Die Methode der evolutinären Lieferung
basiert auf den folgenden einfachen Prinzipien:
Liefere etwas an einen wirklichen End-user
richte das Design nach den Erfahrungen aus,
die du beobachtet hast
Das einfachste SW-Model von evo Lieferung,
ist ein Personal Computer Benutzer, der sich seine eigene Applikation zusammenstellt. Der
Programmierer wird zu einem Anwender, dem Zielsetzer, Analytiker, Designer und Tester. Es
ist eine ständige Verbesserung von der ersten Phase an, während das System entsteht. Das
System das entsteht entwickelt sich ständig weiter. Der Benutzer kann das Design ändern,
Programmdetails was den Code betrifft ändern und auch die Ziele. Evolutionäre Lieferung
besteht aus einer Sammlung von vielen Konzepten.
Die grundlegendsten lauten wie folgt:
Multi-objectives
frühe, ständige Verbesserung
komplette Analysen, Design, Entwicklung und
Test bei jeder Phase
User orientiert
System orientiert, nicht hauptsächlich auf
Algorithmen konzentrieren
open-ended basic systems architecture
6.1 Planen für multiple objectives
Die übliche Sw-Planung ist überwiegend
Funktions" orientiert. Die Planung geschieht auf Grund von funktionellen
Ansprüchen (Was die SW können wird) statt sich vielmehr um das Wie gut und zu welchem
Preis wird es das können zu kümmern. Heutiges SW-engineering beschäftigt sich viel zu
wenig mit der Kontrolle der kritischen Qualitäts- und Resource Eigenschaften eines
Systems, und deswegen verliert es die Kontrolle über diese Eigenschaften. Ein einfaches
Beispiel ist das Fehlen von Wissen unter Software engineers, wie man kritische
Eigenschaften wie Benutzerfreundlichkeit" oder Wartbarkeit"
definiert. Diese Dinge sind aber so wichtig für den Erfolg eines heutigen SW-Projects,
das die Ignoranz davon einem Projekt großen Schaden anrichten kann.
Evolutionäre Lieferung ist auf der
Weiterentwicklung entlang von klar und meßbaren Objectives aufgebaut. Das Set von
Objectives muß alle funktionellen, qualitativen und resource objectives beinhalten, die
für das langzeitige und kurzzeitige Überleben des Systems unter Entwicklung notwendig
sind. Projekte die nicht so aufgebaut sind, sind auch nicht nach den Anforderungen des
Anwenders aufgebaut.
6.2 Frühe und ständige Verbesserung
In den meisten SW-engineering Projekten, ist
der Zeitplan so festgelegt, das frühestens nach einem Jahr ein erstes praktisches und
brauchbares Ergebnis vorhanden ist. Es gibt zwar einige Gründe für das Fehlen einer
frühen Konfrontation mit dem echten Anwender, aber die Ausreden davor sind unzureichend.
Das Management eines solchen Projekts würde natürlich gerne die ersten Ergebnisse so
früh wie möglich haben. Aber das selbe Management akzeptiert auch die allgemeine
Einstellung, das es einem langen Kreislauf bedarf, bevor etwas nützliches geliefert
werden kann.
Das Prinzip der evolutionären Lieferung
basiert aber darauf, das das Entstehen des Systems in viele kleine Phasen zerlegt wird,
deren Ergebnis von einem Anwender getestet wird, und dessen Urteil in die
Weiterentwicklung mit einbezogen wird. Die Auswahl der Reihenfolge der Phasen kann so
getroffen werden. Welche Phase benötigt den wenigsten Aufwand, bewirkt aber
trotzdem etwas in Richtung unserer Ziele."
6.
3 Komplette Analysen, Design, Entwicklung
und Test nach jeder Phase
Eine der großen Zeitverschwendungen in
SW-Projekten sind detaillierte Bedürfnisanalysen, gefolgt von detailliertem Design. Wie
können solche Aufgaben nur für sehr kleine Projekte bestimmen. Es sind so viele
Unbekannte, zu viele dynamische Veränderungen, und ein zu komplexes Set von
Weiterentwicklungen in den Systemen die wir entwickeln. Wir müssen etwas bescheidener
sein.
Wir müssen meßbare Objekte festlegen,
soweit wird eine begründete Meinung über die Zukunft haben. Wir müssen bereit sein, die
Objekte zu verändern, sobald wir aus den Erfahrungen durch die Lieferung der einzelnen
Phasen dazu gedrängt werden.
Wir müssen meßbare Objectives für jede kleine
Lieferungsphase definieren. Ist einfach nicht möglich ein Set von multiple quality,
ressource und functional objectives zu definieren, und sicher zu sein, das alle wie
geplant erreicht werden. Man muß darauf vorbereitet sein, Kompromisse einzugehen.. Wir
müssen die technische Lösung designen, entwickeln, testen, liefern und Feedback
bekommen. Dieses Feedback muß dafür verwendet werden, um das vorhandene Design, falls
notwendig, zu verändern, und um sowohl Kurz- als auch Langzeitziele zu ändern.
Es ist
sinnlos so viel Geld auszugeben, oder vielmehr zu vergeuden, um über Bedürfnisse und
technischen Eigenschaften zu spekulieren, die viel leichter bestimmt werden können, wenn
es während der Implementierung eines funktionierenden Systems geschieht.
Evolutionäre Lieferung soll uns frühe
Warnsignale liefern. Die sind zwar unangenehm, verhindern aber, das Unzulänglichkeiten in
unserem Produkt nicht zu groß werden
6.4 User-Orientiertheit
SW Projekte werden nicht so sehr wegen der
erfolgreichen Einstellung auf den Markt oder den Benutzer für gut befunden. Die
Orientierung liegt viel mehr Richtung der Maschine, den Algorithmen, oder den Deadlines -
aber viel zu selten Richtung User. Viele SW-Entwickler sehen ihr Produkt nicht einmal im
Einsatz mit richtigen Anwendern, genausowenig wie Anwender die Gesichter von Designern
oder Programmierern sehen.
Selbst wenn der Entwickler es gewollt hätte, ein Produkt zu
entwickeln das jeden Benutzer glücklich macht, ist es meistens schon zu spät oder zu
unpraktisch es zu tun, nachdem zuviel Zeit vergangen ist, um es herauszufinden.
Mit evolutionärer Lieferung hat sich die
Situation verändert. Der Entwickler ist mit dem anhören der Benutzerreaktionen
beauftragt, sehr früh und oft. Der Benutzer kann also eine wichtige Rolle im
Entwicklungsprozeß übernehmen. Wertvolle Benutzerideen können die Planern auf eine
Reihe von neuen Ideen bringen, die ursprünglich nicht geplant waren. Wenn also bessere
Ideen vorhanden sind, müssen wir sie so früh wie möglich einbauen.
Jeder
Systementwickler sollte begreifen, das er Feedback braucht
6.5 Systemorientiert, nicht hauptsächlich
auf Algorithmen konzentriert
Viele SW-engineering Methoden haben eine
gemeinsame Schwäche. Sie orientieren sich rein auf aktuelle Programmiersprachen. Sie
kümmern sich herzlich wenig um den Aufbau der Daten, und noch viel weniger um
offensichtliche Anliegen wie Dokumentation, Training, Marketing oder Motivation.
Evolutionäre Lieferung ist eine Methode die
nicht nur auf SW limitiert ist. Sie ist für jeden kreativen Prozeß geeignet.
Man darf
nicht vergessen, dem ganzen Aufbau der Systemarchitektur zu betrachten, in dem die
Software nur ein Teil ist.
6.6 Open-ended basic systems architecture
Unter den prinzipiellen Attributes eines
jeden Systems sind die, die das Überleben und erreichen der Ziele unter Konditionen
erlauben, die sich mit der Zeit ändern. Ein guter SW-engineer sollte fortwährend und
detailliert die vorhandenen Design Technologien studieren, die zu Systemen führen die
anpassungsfähiger sind als andere. Es gibt eine Reihe von meßbaren, technischen
Eigenschaften, wie zum Beispiel Wartbarkeit, Transportierbarkeit und Erweiterbarkeit.
Was die evolutinäre Lieferungsmethode
betrifft, sind offene Architekturen absolut notwendig.
Eine offene Architektur muß es
erlauben, auf Änderungen reagieren zu können..
6.7 Die Gemeinsamkeiten mit Auto fahren und
Schach
auf plötzliche Veränderungen eingehen -
Wenn du ein Auto fährst, mußt du vorausdenken und planen. Du kannst aber nie absolut
sicher sein, das du den gewählten Weg auch fahren kannst, weil sich etwas
Unvorhergesehenes ergibt.
Trip von London nach Rom - Vergeudetet Zeit -
minimum an Planung - Route festlegen - Straßenkarte einstecken und Extrazeit einplanen
für event.
Zwischenfälle.
Schachspielen - hat das Ziel zu Gewinnen -
bestimmte Strategie und Taktiken - aber bei jedem Zug des Gegners mußt du sie neu
überdenken
Anmerkungen: |
| impressum | datenschutz
© Copyright Artikelpedia.com