OO-Projekte im Vergleich - Erfahrungsbericht

Andres Koch, dipl. El.Ing HTL, M.Math
Object Engineering GmbH, Zürich
Kontaktformular


Vortrag anlässlich der SAQ Tagung 1996 zum Thema "Qalitätssicherung und Objektorientierung"

Erfahrungen mit der objektorientierten Entwicklungstechnik sind heute vorhanden. Der vorliegende Beitrag soll vier konkrete Projekte, welche mit OO in fast ähnlicher Umgebung gemacht wurden, miteinander vergleichen. Dies wird anhand von Kriterien im Bereich von Projektmanagement, Entwicklungsprozess und Teamzusammensetzung gemacht. Die Ergebnisse sind unterschiedlich. Es mag nicht überraschen, dass die eingesetzte Technologie eine eher untergeordnete Rolle gegenüber der Entwicklungskultur und dem Teamverhalten spielt. Eine klare Software-Architektur und eine nachgeführte Dokumentation kristallisiert sich jedoch für alle OO-Projekte als gemeinsamer Nenner für den Erfolg unterstützt durch gute Ausbildung und ein gutes Team heraus.

1 Einleitung

Die seit 1989 gesammelte Erfahrung beim Begleiten von OO-Projekten sind einerseits durch die in dieser Zeit erst entstandenen OO-Methoden geprägt. Anderseits können aber gewisse Projekt-Grundprobleme unabhängig von den verwendeten Methoden ausgemacht werden, welche beim Einsatz der Objektorientierten Technik noch einen ausgeprägteren Einfluss auf das Gesamtprojekt haben. Im Folgenden werden vier Projekte aus jüngerer Zeit vorgestellt und gegenüber den gewählten Kriterien verglichen.

1.1 Kriterien

Die gewählten Kriterien wurden ihrerseits wie folgt gruppiert:

1.1.1 Projekt-Management-Kriterien

Dabei sollen die bei der Organisation und Leitung eines Projektes auftretenden Faktoren betrachtet werden. Oft werden die Grundsteine für den Erfolg eines Projektes bereits zu Beginn gelegt, im Speziellen bei der Auswahl des Teams, des Projektorganigramms und beim Vorlegen der genügend hohen Anfangsgeschwindigkeit. Natürlich spielen die Ressourcen (Geld, Zeit, ausgebildetes Personal) eine grosse Rolle.
Da das Team den Motor des Projektes bildet wird dies als einen wichtigen Faktor ebenfalls beurteilt respektive verglichen. Vom Ausbildungstand aber vorallem auch Lernwillen hängt die Qualität der Lösung im Wesentlichen ab. Der Erfahrungsschatz war in der Regel in der noch jungen Technologie bei allen relativ klein. Das Teamverhalten, die vom Einzelnen übernommene Verantwortung und Eigeninitiative bestimmt dann mehr die Einhaltung der in der Regel zu knappen Termine und damit in der hektischen Schlussphase das Verhältnis im Team.

Der eigentliche technische Entwicklungsprozess wird in die Phasen:

  • Requirement-Analyse/Domain-Analyse
  • Architektur
  • Design
  • Implementation
  • Tests
  • Qualitätssicherung
  • Dokumentation

untersucht, um die Unterschiedlichkeit der Projekte in den einzelnen Phasen aufzuzeigen. Dabei wird auch die Iterationshäufigkeit aufgezeigt, womit die Wiederholung oder das Zurückkehren in eine vorangehende Entwicklungsphase gemeint ist. Dies kann auch sehr wohl als Qualitätsmerkmal gewertet werden, im Speziellen wenn den früheren Phasen wenig Aufmerksamkeit geschenkt wurde.
Schlussendlich wird das Resultat verglichen, was schlussendlich das ist, was den Kunden interessiert und über den Wert des Produktes bestimmt.

1.2 Verglichene Projekte

Die verglichenen Projekte wurden aufgrund Ihrer Art gewählt.

1.2.1 Projekt A - Integrations-Projekt

Integration eines eingekauften, stark parameterisierbaren Applikations-Paketes, welches in die bestehende System-Umgebung des Unternehmens integriert werden musste. Der beschriebene Teil des Projektes betraf hauptsächlich den technischen Teil der Integration mit Hostanbindung, Kommunikation über Telex und anderen Plattformen. Realisiert wurde es mit UNIX, C++ und einer eigens dafür erstellten meldungsorientierter Middleware. Da die objektorientierten Methoden erst im Aufkommen waren, wurden sie noch nicht von Anfang an konsequent angewendet doch es wurde laufend versucht sich in dieser Beziehung zu verbessern.

1.2.2 Projekt B - Backendprozess-Projekt

Der Bau einer Auswertungsapplikation mit grosser Datenmenge und hohe Anforderungen an Präsentationscharakter für die gedruckten Auswertungen. Ebenso waren hohe Anforderungen an Durchsatz gefordert, um die Auswertungen in angemessener Zeit den Kundenbetreuern zur Verfügung zu stellen. Es wurde ausschliesslich in C++ und auf UNIX-Plattformen gearbeitet.

1.2.3 Projekt C - Frontendprozess-Projekt

In diesem Projekt wurde eine eingeschränkte, stark manuelle Prozesse unterstützte Applikation für die Erbringung von Kunden-Dienstleistungen durch eine neue Applikation ersetzt. Es waren zwei Plattformen (Host/MVS und Server/Unix) im Einsatz und es wurde sowohl auf dem Host wie auf dem Server mit C++ gearbeitet.

1.2.4 Projekt D - Migrations-Projekt

In einer typischen 3-Tire-Architektur in einem Grossunternehmen mit mehr als 10 Aussenstellen und 2500 Benutzern musste eine nicht mehr erhältliche Hardware durch neue Hard-/Software ersetzt werden, ohne dass die Applikations-Software massgebend verändert wurde. Mit einer schrittweisen Migrations-Strategie konnte mit sehr geringem Aufwand ein wichtiger Teil des Gesamtsystems erfolgreich auf eine modernere CORBA-basierte und objektorientierte Architektur überführt werden. Bei den involvierten Programmen handelte es sich um PL/1- und Assembler-Programme auf proprietären Plattformen (u.a MVS). Für die Migration wurde mit C später mit C++ gearbeitet und durch die Aufteilung in verschiedene Prozesse wurde eine hohe Flexibilität erreicht. Neben der bestehenden Plattform, wurde das abzulösende System durch einen modernen RISC-Server mit UNIX ersetzt und die Bildschirme durch die üblichen PCs.

2 Vergleich

2.1 Projekt-Management-Kriterien

2.1.1 Projektmanagement

Projekt A: Das Projekt wurde durch eine praxiserfahrene Person initialisiert. Mit eher managementorientierter statt technischer Einstellung wurde nur gerade die Integrations-Schicht im Hause entwickelt und die Haupt-Applikations-Komponente eingekauft. Damit konnte nicht nur Zeit sondern auch Erfahrung gewonnen werden.
Projekt B: Ein eher projektunerfahrenes und technisch orientiertes Projektmanagement, hat gerade die gegenteilige Einstellung vorangetrieben, nämlich alles im Hause zu entwickeln. Wiederverwendung was an vorhandenen Plattformen oder Komponenten innerhalb des Unternehmens bereits vorhanden war, wurde mit der Begründung "unfertig" in den Wind geschlagen, was sich später als fatal auswirken sollte.
Projekt C: Ein konventionell aufgezogenes Projektmanagement, welches sich aber mit internen Vertuscherei, Politik und fast intriegenähnlichen Zuständen auseinandersetzen musste. Die unglückliche Zusammensetzung der Teammitglieder, war eines der grossen Handicaps dieses Projektes.
Projekt D: Ein Schatten-Projektmanagement arbeitete auf die schlanke Art, da es sich lange um "kein" Projekt sondern um einen "Notbehelf" gehandelt hat. Durch ein sehr kleines Team, welches gut kooperierte, erreichte mehr, als wenn eine grosse Projektstruktur aufgebaut worden wäre. Für die Ausbreitung wurde dann richtigerweise ein zu 100% engagierter Projektleiter eingesetzt.

2.1.2 Entwicklungsmanagement

Projekt A: Die Entwicklungsphasen wurden noch eher traditionell im Wasserfall-Modell organisiert. Mit dem Erstellen der nötigen Dokumente in den einzelnen Phasen nach einem vorgegebenen Dokumentations-Plan wurde die nötige Transparenz für die angrenzenden Systeme und Organisations-Einheiten geschaffen. CASE-Tools wurden je nach Bedarf aber nicht konsequent eingesetzt. Es wurde zu Beginn eher objektbasiert als objektorientiert gearbeitet.
Projekt B: Objektorientierung war gross geschrieben und auch konsequent durchgeführt worden. Es ergab dann aber eine hauptsächliche Konzentration auf die Design- und Implementation-Phase wobei die Dokumentation und Versionenkontrolle sträflich vernachlässigt wurden.
Projekt C: Auch hier wurde Objektorientierung angesagt, doch fiel man dann wieder in die konventionellen Entwicklungsphasen nach dem Wasserfallprinzip zurück, was aber noch korrigiert werden konnte. Die Vision auf ganz oberster Direktionsstufe konnte nicht durch die eher überschätzte Basis getragen werden, wodurch der berechtigte Eindruck entsteht, ob es für das Unternehmen ein zu hoch gestecktes Ziel gewesen sei.
Projekt D: Durch die Notwendigkeit ein funktionierendes System innert kurzer Zeit abzulösen, hat gar keine Illusionen zugelassen. Man organisierte sich produkteorientiert dafür aber in flexibler modularer Weise. Wenn die Pragmatik auch oft etwas überhand nahm, konnte mit gezielt von der technischen Seite eingebrachten Systematik trotzdem ein flexibles System gebaut werden.

2.1.2.1 Ressourcen

Finanzen
In Projekt A, B und C waren diese gut budgetiert und genügend vorhanden. Projekt D, das als "Schattenprojekt" aufgezogen war, hatte eher knapp bemessene Mittel, welche aber trotzdem für die kleine Organisation angemessen genügten.
Zeit
In Projekt A, B und C knapp aber nicht unrealistisch bemessen. Trotzdem kam es bei allen drei Projekten zu kleineren (A und B) bis grossen (C) Terminverschiebungen.
Projekt D hatte weniger offiziellen Zeitdruck, da "nichts" erwartet wurde. Dafür hat war die Notwendigkeit, den Betrieb aufrecht zu halten und der Erfolgsdruck um so grösser. Es gab hier kleinere Terminverschiebungen.
Personal
In Projekt A standen etwa 15 Personen (intern und extern), in Projekt B und C etwa 20-25 Personen und in Projekt D etwa 6 Personen im Einsatz.

2.1.3 Vision - Illusion - Realität

Projekt A war von Pragmatik geprägt, aber die Systematik und auch das Qualitätsbewusstsein für den Entwicklungsprozess wurde vom Management mit dem nötigen Nachdruck gefördert.
Projekt B dagegen war eher eine Illusion von technisch denkenden Projektverantwortlichen, welche den wichtigen Entwicklungsphasen wie Dokumentation und Qualitätssicherung wenig beimassen.
In Projekt C wurde versucht eine Vision in die Realität umzusetzen, welche eher als Steckenpferd zu werten war, als dass sie vom Kunden goutiert worden wäre. Wie bereits erwähnt, war die Basis dafür nicht gewachsen.
In Projekt D stand die Realität respektive das zu erreichende Resultat klar und deutlich im Vordergrund, wobei aber die Vision das simulierte Altsystem mit der Zeit ganz abzulösen immer wegweisend vorhanden war.

2.2 Team-Kriterien

2.2.1 Ausbildungsstand und Lernwille

In Projekt A waren die rekrutierten Mitarbeiter recht gut ausgebildet und brachten aber teilweise auch Praxiserfahrung mit. Sie waren aber eher zurückhaltend in Bezug des Startens des Projektes, da die unternehmerische Wichtigkeit sie etwas beeindruckte. Um so lernwilliger und aufnahmebereiter waren sie für neue Methoden und Vorgehensweisen. Man darf diese Einstellung sicher als eher ideal einstufen.
In Projekt B war die technische Erfahrung recht gut, dafür bestand aber auch ein hohes Bewusstsein "es gut zu beherrschen". Ideen und Vorschläge aus anderen Projekten und Teams wurden oft mit Rechtfertigungen verworfen oder gar nicht ernst genommen.
In Projekt C war die Erfahrung und das Know-How der neu eingesetzten Technologie nicht vorhanden und mangels Akzeptanz des vom Projektmanagement organisierten umfangreichen Ausbildungsprogramms nie richtig angewendet worden. Die Teammitglieder, welche die Ausbildung besucht hatten, hätten die Methode noch angewendet, wären nicht neue Ressourcen dazugekommen, die sich als Gurus wähnten und das schon gar nicht "nötig" hatten.
In Projekt D war die Notwendigkeit neue Methoden zu lernen und vorallem anzuwenden von Anfang an bekannt, obwohl mehr als 12 Jahre Erfahrung in Systemprogrammierung vorhanden war. Durch das kleine Team war Lernwille nie ein Problem.

2.2.2 Teamverhalten

Im Projekt A hatte sich in kurzer Zeit ein kleines aber schlagkräftiges Team mit gutem sozialen Zusammenhalt gebildet. Die gegenseitige Akzeptanz war gross und die Zusammenarbeit mit dem Projektmanagement gut. Die Eigeninitiative und Uebernahme von Verantwortung für die zugeteilten Aufgaben (die in der Architektur ausgewählten Module wurden jeweils einem Teammitglied zum Design und Realisation übergeben) war sehr hoch.
In Projekt B schien der Zusammenhalt des Teams auch recht gut funktioniert zu haben, doch sobald die Fehler offensichtlich wurden, begann die Zusammenarbeit mit dem Auftraggeber eher einer kühlen Beziehung zu gleichen. Eigeninitiative und Verantwortung war unterschiedlich. Leider zeigte sich eine gewisse Apathie und sogar Aufgabe bei Teammitgliedern gegen Ende des Projektes.
Das Team in Projekt C war wie von einem Virus befallen, der vermutlich historisch aus dem Unternehmen herauskam. Dieser Virus wurde dann noch durch dazukommende "Parasiten" unterstützt respektive das Team wurde dadurch noch mehr als verkraftbar geschwächt. Das und andere Faktoren haben trotz grosser Bemühung der Projektleitung den inneren Zusammenhalt und Teamgeist auf ein Minimum sinken lassen. Was Verantwortung und Eigeninitiative anbelangt, waren auch hier unterschiedliche Verhaltensweisen zu beobachten. Einige strengten sich an irgendetwas zu bewegen, während andere mit wenig Aufwand (Bemerkungen) dies wieder zunichte machen konnten.
Die fast zufällig zusammengewürfelte Mannschaft hat sich durch grosse Toleranz und gegenseitige Akzeptanz (gleiche Wellenlänge) schnell gefunden und auch als schlagkräftig gezeigt. Mit Uebernahme von Verantwortung und die Eigeninitiative motivierten sich die Teammitglieder gegenseitig das gleiche zu tun. Keiner liess den anderen im Stich.

2.3 Entwicklungsprozess

Nachdem wir nun eher die organisatorischen und sozialen Aspekte betrachtet haben, möchten wir uns auf den eigentlichen Entwicklungsprozess konzentrieren.

2.3.1 Requirement-Analyse/Domain-Analyse

In Projekt A war die Anforderungs-Analyse des Bedarfs des Benutzers wohl das grösste Problem auf der applikatorischen Seite. Wie so oft stellte die Definition respektive die Anforderungen der Schnittstellen auf technischer Seite ein kleines Problem dar.
In Projekt B kann diese Phase mangels fehlender Informationen nicht beurteilt werden dafür wurde diese Phase in Projekt C mittels Use-Case-Technik beispielhaft erfüllt. Bei Projekt D waren die technischen Anforderungen durch das vorhandene System recht gut dokumentiert und damit auch nicht problematisch.

2.3.2 Architektur

Sowohl in Projekt A und D wurde dieser für objektorientierte Systeme sehr wichtige Teil sehr gut gelöst und darf wohl als ein weiterer Hauptfaktor für den Projekterfolg gewertet werden.
In den Projekten B und C waren Ideen, aber keine Architektur und diese wurden schon gar nicht oder erst im Nachhinhein dokumentiert. Es hätte genau eine Person gebraucht, welche die Rolle des Architekten übernommen hätte und auch als solcher akzeptiert worden wäre.

2.3.3 Design

Im Projekt A wurde nach einem aus der Architektur folgenden Modularisierung die Design-Aufgaben auf die einzelnen Teammitglieder verteilt und von denen im Detail ausgearbeitet und dokumentiert.
In Projekt B wurde das Design wirklich objektorientiert und mit viel Aufmerksamkeit auf die technische Lösung sehr gut gelöst. Leider blieb die Dokumentation dessen sträflich vernachlässigt.
In Projekt C wurde das Design eigenhändig durch eine Person gemacht, aber schlecht oder gar nicht (ausser im Code) dokumentiert. Die Auswirkungen für das Verständnis und für die Wartung des Produktes werden sich vermutlich nicht als positiv erweisen.
In Projekt D wurde konsequent mit einem CASE-Tool für eine objektorientierte Methode gearbeitet. Es wurde fast ausschliesslich Fürwort-Engineering verwendet, das heisst auf Reverse-Engineering wurde verzichtet. Das CASE-Tool wurde auch eingesetzt für das Design der objektbasierten Module, die später in 'C' (nicht objektorientierte Sprache) realisiert wurden. Damit konnte auf einfache Weise die Dokumentation des Projektes auch sichergestellt werden, die aber auch durch technische Beschreibungen unterstützt wurde. Das Vorgehen hat sich vorallem später bei der Weiterentwicklung gut bewährt.

2.3.4 Implementation

In Projekt A wurde die Implementation von "Hand"in C++ durch die Modulverantwortlichen realisiert. Die Integration erfolgte in der Regel (eine Ausnahme beim eingekauften Produkt) durch die Interprozesskommunikation und hatte darum ausser bei den Meldungs-Klassen und der IPC-Middleware wenig Abhängigkeiten.
Bei Projekt B und C kamen monolythische Programme zustande und dies mit der modernsten Werkzeuge des Software-Engineerings. Entsprechend gross wurden die Abhängigkeiten und langwierig die Generierung (Compilation) des Systems. Daraus entstanden eigentlich unnötige organisatorische Behelfslösungen, die dieses Problem zu lindern versuchten. Die Wartung beider Programme zeichnet sich als problematisch ab.
Projekt D wurde für die C-Teile von Hand programmiert später aber durch das CASE-Tool bei der Verwendung des Code-Generators für C++ stark unterstützt. Die lose Kopplung durch die Verwendung von Plattform-IPC und später einer CORBA-Implementation hat sich analog wie in Projekt A als sehr flexible und leichtgewichtige Vorgehensweise erwiesen. Dadurch kam bei Folge-Modulen auch die Wiederverwendung zum Zug.

2.3.5 Tests

Die Tests wurden in Projekt A und D auf Modulebene mit Teststubs gemacht, bevor das System integriert und als Gesamtes getestet wurde. Dies hat eine zeitlich parallele Entwicklung erlaubt, was bei hohen Terminanforderungen positiv auszahlte.
Während in Projekt C ein grosser Aufwand für den Aufbau eines Changemanagement-Systems und Testsystems mit Hilfe eines Testtools aufgewendet wurde, hat man vorallem den Changemangement-Aspekt in Projekt B sträflich vernachlässigt. Bei beiden Systemen war das Testen ein sehr mühseliger Prozess, nicht zuletzt weil es tatsächlich "Entwickler" gab, die Ihre Module ungetestet dem Test-Team übergaben. Durch die grosse Abhängigkeit der einzelnen Module untereinander und die langwierige Generations-Phase wurde das Testen für die Entwickler zum mühseligen Arbeitsprozess.

2.3.6 Qualitätssicherung

In Projekt A wurden durch frühzeitige "Walkthroughs" in der Designphase Fehler auf der Ebene von Middleware, Schnittstellen und Protokollen gefunden und konnten mit wenig Aufwand behoben werden.
In Projekten B und C wurde dies in der Design-Phase eher vernachlässigt und da man in diesen Projekten eher auf die Codierung konzentriert war. Es mussten zeitaufwendige Code-Reviews durch eine Qualitätssicherung gemacht werden.
In Projekt D musste man durch die kleinen und klaren Implementationsschritte sowie ein gutes Qualitätsbewusstsein auf Entwicklungsseite keine grossen QS-Aktivitäten aufziehen. Es beschränkte sich durch einen gemeinsamen durchgeführten System-Test bei der Integration und danach den üblichen System-Test durch die QS-Abteilung des Unternehmens.

2.3.7 Dokumentation

In den Projekten A wurde die Dokumentation in angemessenem Umfang über alle Entwicklungsphasen gemacht. Projekt C war in der Anfangsphase (bis und mit Analyse) eher überschwenglich bis angemessen, hat aber in der Design- und Implementations-Phase die Dokumentation sträflich vernachlässigt. Projekt B war durchs Band nachlässig in Bezug auf Dokumentation. Projekt D konnte von der Verwendung des CASE-Tools profitieren, ansonsten war man vom Umfang her eher moderat.

2.3.8 Iterationshäufigkeit

Bei Projekt A war die Iterationshäufigkeit - also das Durchlaufen resp. Zurückkehren der einzelnen Phasen - recht ausgeglichen. Bei Projekt C konnte eine starke Konzentration auf der Implementations und Testphase - nicht unerwartet - festgestellt werden. Im Projekt D hat es zwischen Design, Implementation und Test eine häufige Iteration gegeben, nicht zuletzt, da nicht alle Verhaltens-Details des bestehenden Systems, in der Analyse untersucht wurden.

3 Resultate

Projekt A ist heute erfolgreich eingeführt, gut dokumentiert, gut wartbar und sehr stabil.
Projekt B wurde vom Management suspendiert und durch ein eingekauftes Produkt ersetzt. Verluste durch Entwicklung und Einführungsverzögerung wird durch eine zweistellige Millionenzahl beziffert.
An Projekt C wird immer noch entwickelt und man verzeichnet bereits über ein Jahr Terminverzögerung. Die Wahrscheinlichkeit, dass das Produkt von Bedienerfreundlichkeit und Performanz her dem Benutzer zusagt, ist als gering einzustufen. Die Verluste bei Projekt-Misserfolg würde sich im gleichen Bereich wie Projekt B bewegen.
Projekt D ist eingeführt, gut wartbar und stabil. Auf dessen Basis wird weitermigriert und weiterentwickelt und es ist geplant, in 1-2 Jahren die alten Komponenten zu ersetzen, zu vereinfachen oder ganz zu eliminieren. Dank dem modularen Design wird eine Ablösung des Altsystems überhaupt erst möglich, ohne den Betrieb einzuschränken.

4 Zusammenfassung

Beim Einsatz der OO-Technologie kann die gewonnene Modularität so ausgenutzt werden, dass man die Arbeit auf Teams aufteilen kann. Dies erfordert aber ein sehr gut koordiniertes Team mit gutem Kommunikationsverhalten. Eine klare und weitsichtige Architektur und daraus entstandene einfache und vorallem verständliche Entwicklungsrichtlinien sowie eine gute Dokumentation sind Qualitäts-Merkmale auf dem Weg zum Erfolg.

4.1 Fazit

Folgende Schwerpunkte der gemachten Erfahrung können herausgenommen werden:

  • Der Erfolg eines OO-Projektes (und anderer) ist fast ausschliesslich von den sozialen und fachlichen Qualität des Projekt-Managements und Mitarbeiter im Team abhängig.
  • Ohne eine gute und durchgesetzte System- und Software-Architektur (und einem guten Architekten) ist ein OO-Projekte eher zum Scheitern verurteilt.
  • Der grosse Vorteil des Gedankengutes der objektorientierten Entwicklung liegt vorallem in der Modularisierung, sofern diese auch konsequent auf die physikalische Ebene übertragen wird. Vererbung und Polymorphismus sind zwar hilfreiche Mechanismen, müssen aber trotzdem in angemessener Form eingesetzt werden.
  • OO-Technologie setzt eine gute Projekt-Organisation bis hin zur Qualitätssicherung voraus, wird aber nicht unbedingt auf der Organisationsstruktur der bisherigen, konventionellen Entwicklung aufbauen können.
  • Von der QS sind einige neue Anforderungen und viel Flexibilität gefordert.
  • Qualitätssicherung ist eine Einstellung und keine Instanz, die vom frühesten Zeitpunkt des Projektes beginnt und mit viel Einfühlungsvermögen gepflegt werden muss.
  • Zeitmangel darf nicht auf Kosten der Wartungsfreundlichkeit und auf Kosten der Dokumentation gehen.

Trotz aller technologischen Forschritte und neuen Methoden, steht der Mensch weiter und noch stärker im Mittelpunkt. Durch die anwachsende Mächtigkeit der verschiedenen Methoden und Tools bekommt jedes Teammitglied einen grösseren Hebelarm, mit dem es positive zum Erfolg führende Aktionen erlangen kann. Anderseits aber kann der Fehler bei der Person sich ebenso stark auf den Misserfolg auswirken. Ueberlegen Sie bei der Wahl des Teams für ein terminkritisches, technologisch herausforderndes und das Image riskierende Projekt immer, ob Sie mit dem gleichen Team auch eine Expedition zum Nordpol wagen würden?