Archiv

Archive for April 2010

Bemerkenswerte Links im April 2010

30. April 2010 1 Kommentar

Die Links für den April reichen vom LHC in Genf über Blogger in der FAZ bis zum priorisieren von Features. Ich wünsche viel Spass beim lesen.

 

Massives spontanes Existenzversagen verschoben
André Goerres geht für BildBlog den Schwarzen Löchern vom LHC nach. Nachdem man ja im Vorfeld in den einschlägigen Medien über den bevorstehenden Weltuntergang in allen Details “informiert” wurde, musste man ja mit dem schlimmsten rechnen. Es ist kaum zu glauben wie wenig an diesen Szenarien dran ist, sobald man die Fakten berücksichtig. Daher: unbedingt lesen!

“monitor”-Beitrag: Zwischen Märchenstunde und Motzki-Pöbelei
Monitor ist eine Sendung, die ich während Jahren regelmässig angeschaut habe. In den letzten Monaten fehlte mir dazu allerdings die Zeit. Nach dem was Steffen Rutter zusammen getragen hat, habe ich nichts verpasst. Wie dieses Beispiel zeigt, sind die Öffentlich-Rechtlichen auch nicht besser als die “Privaten”. So bleibt wohl nur die Feststellung, dass man überall und immer alles hinterfragen muss…

Roger Köppels Leitsatz: «Misstraue jedem Konsens»
Ein interessantes Interview führte die Aargauer Zeitung mit Roger Köppel. Nachdem man ja während Wochen fast bei jeder Diskussionsrunde Köppel zuhören konnte, gibt es nun etwas zu lesen. Köppel äussert sich zur Weltwoche, Journalismus allgemein und die Schweiz im speziellen.

Verpasste Augenblicke / Das Pontifikat von Benedikt XVI. – eine kritische Bilanz nach fünf Jahren
Nachdem die katholische Kirche in den letzten Wochen unter Dauerfeuer steht, scheint es so, als ob alles was es zu schreiben gäbe schon geschrieben wurde. Die NZZ wird ihre Rolle als Qualitätsmedium gerecht und liefert diesen faktenreichen Beitrag. Man versucht die Zusammenhänge aufzuzeigen und auf Probleme hinzuweisen, die tiefer liegen als das was man bisher in anderen Medien immer und immer wieder hervorbringt. Wem das Thema noch nicht ganz verleidet ist sollte sich den Beitrag von Otto Kallscheuer unbedingt anschauen.

Rettet sie, die Alte Tante!
Die Zeit berichtet über die Veränderungen bei der NZZ. Wie überall wird auch bei der NZZ gespart. Was dies bedeutet wird von einem Insider berichtet. Auch eine so traditionelle Zeitung wird auf Dauer nicht von ihrer Geschichte leben können. Bleibt zu hoffen, das sich da einiges zum Besseren verändert.

iPad als Chance für Medienbetriebe: Hoffnung und Wahrheit
Gerade in Deutschland wird der IPad als die grosse Chance für die traditionellen Medien, sprich Zeitungen, angesehen. Macher Verleger preist schon die goldene Zukunft, wo man wieder viel Geld mit Zeitungen verdienen kann. Wieso? Weil man dort quasi 1:1 die Zeitung digitalisieren könne. A. Göldi und P. Sennhauser sehen dies weitaus skeptischer. Wer recht hat wird erst die Zeit zeigen.

Deutsche Blogger besetzen die FAZ
Die FAZ versuchte zu zeigen, wie unbedeutend Blogs sind. Wolfgang Michal nimmt dies unter die Lupe und findet so einiges, was da nicht zusammen passt. Ein angeblich so unwichtiges Thema mit 3 Seiten zu “belohnen” ist da nur die offensichtlichste Unstimmigkeit…

Prioritizing Features
Dean Leffingwell beschreibt wie man Features von Software priorisieren kann. Als ob die Aufwandsschätzung nicht schon schwer genug wäre, müssen die einzelnen Funktionen ja auch noch priorisiert werden. Wer sich mit dem Thema beschäftigt findet hier eine detaillierten Beitrag, der seine Thesen mit Beispielen und Grafiken unterlegt.

Buch-Rezension zu “Continuous Integration”

26. April 2010 1 Kommentar

Continuous Integration” von Paul Duval erschien 2007 bei Addison-Wesley. Bei Continuous Integration, oder kurz CI, denkt man als erstes an einen automatischen Build. Paul Duval zeigt was sonst noch alles dazu gehört und gerne vergessen geht.

Duval sah am Anfang seiner Kariere eine Werbung, bei der es auf der Tastatur einen Knopf mit der Beschriftung “Integrate” gab. Darunter stand “wenn es doch nur so einfach wäre”. Ein komplexes Produkt einfach durch das drücken einer Taste zu bauen und in die Produktion einzuführen. Nicht mehr tagelang in der Integrationshölle verbringen sondern nur ein Tastendruck. Tönt unmöglich? Ist es aber nicht.

 
Notwendige Grundlagen
Um Continuous Integration zu benutzten, braucht man unbedingt eine Versionsverwaltung für den Source Code. Nur wenn der gesamte Code an einer zentralen Stelle abgelegt ist, kann man auch alles zusammen bauen. Ist diese Voraussetzung erfüllt, kommt der CI-Server. Dieser wird aus der Versionsverwaltung den Code holen und das Projekt bauen. Ein Build Script kann dies stark vereinfachen. Kapitel 1 und 2 gehen auf diese Grundlagen ein und zeigen, wie CI in die Entwicklung passt.

 
Risiken minimieren
Wozu soll man CI nutzen? Wer schon einmal ein grösseres System integriert hat, hat sich mit Problemen herumschlagen müssen. Kommen die einzelnen Module zum ersten Mal zusammen, stösst man meistens auf Probleme. Je mehr Module zusammen kommen, desto grösser die Probleme. Dies kann man durch kleinere und häufigere Integrationen abfedern. Die kleinstmögliche Änderung am System ist ein commit in die Versionsverwaltung. Daraus folgt, dass der kleinstmögliche Integrationsschritt ebenfalls der commit ist. Bei jedem commit automatisch einen Build samt Integration aller Module ist so eine logische Schlussfolgerung. Und da es voll automatisiert abläuft, geht dies ohne einen Mehraufwand. Der CI Server wird einmal konfiguriert und läuft dann von alleine.

Die Integration der einzelnen Teile ist aber nicht die einzige Möglichkeit für Fehler. Auch die Tests müssen laufen – und zwar immer. Neben dem Bauen der Software soll daher auch die Testsuiten bei jedem commit ausgeführt werden. So bemerkt man sofort, wenn etwas nicht mehr funktioniert. Man kann dann den Fehler reparieren solange man noch weiss, was man geändert hat. Macht man dies erst Wochen später, wird das sehr aufwendig.

Diese Tests sind nicht nur auf Unit-Tests limitiert. Hat man auch die Funktionstests automatisiert, können auch diese ausgeführt werden. Nutzt man Funktionstests zum Messen des Projektfortschritts, weiss man so immer wo man steht. Wenn 15 von 30 Tests laufen ist dies ein deutlich klarere Aussage als “wir sind zu 95% fertig”. Man kann den Fortschritt laufend messen und steuert nicht auf die grosse Überraschung am Ende der Iteration zu.

 
Qualität überwachen
Neben der automatisierten Ausführung von Tests kann man auch die Qualität der Software überwachen. Code Metriken können durch entsprechende Tools erfasst werden. Je komplexer eine Methode, desto Fehleranfällig wird diese. Wenn man die Komplexität beobachtet, kann man frühzeitig und gezielt darauf eingehen. Gleiches gilt für duplizierten Code. Findet man den bevor man in nur einer Kopie einen Fehler repariert, spart man sich unnötige Arbeit.

Gibt es Coding-Standards, kann man diese ebenfalls überwachen lassen. Auch hier gilt wieder je eher man Abweichungen findet und diese behebt, desto weniger Aufwand ist nötig. Zu diesen und noch weiteren Punkten liefert der zweite Teil des Buches zahlreiche Tipps.

 
Feedback und Reaktion
Die ganze Automatisierung nutzt allerdings nur etwas, wenn man die Ergebnisse des CI-Servers überwacht. Schlägt ein Build fehl, muss er sofort repariert werden. Schlagen Tests fehl, muss man reagieren. Die richtigen Leute müssen zur richtigen Zeit erreicht werden. Duval beschreibt etliche Möglichkeiten, wie man das Feedback vom CI-Server zu den Entwicklern bekommt. E-Mail, SMS, Jabber oder auch Lavalampen können je nach Situation zum Einsatz kommen. Und dann muss man reagieren. Nur zu wissen das man ein Problem hat behebt dieses noch lange nicht. Ohne das sich jemand darum kümmert wird das am Tag des Release noch bestehen.

 
Automatische Verteilung der Software
Zu guter Letzt soll auch die Verteilung der Software automatisch ablaufen. Ein Knopf drücken und es wird kompiliert, getestet, geprüft und verteilt. Hat man den Punkt erreicht, ist die Integrationshölle definitiv überwunden. So eröffnen sich neue Möglichkeiten. Wenn der Aufwand für ein einzelnes Release minimal ist, kann man häufiger releasen. Kann man dem Kunden jede Woche eine funktionierende Demo präsentieren, können falsch verstandene Anforderungen schnell entdeckt werden. Statt für Monate in eine falsche Richtung zu entwickeln verliert man nur Tage. Auch hier wieder eine Reduktion von Aufwand und Kosten durch die Automatisierung.

 
Fazit
Paul Duval gelingt es die Vorteile von Continuous Integration klar darzulegen. Das Thema CI stoppt nicht bei automatischen Builds, sondern geht deutlich weiter. Schön ist ebenfalls, das man CI nach und nach ausbauen kann. Dabei hilft einem das Buch als Wegweiser. Will man von CI maximal profitieren, sollte man am Ende aber alles automatisieren. Dies benötigt Zeit und je nach dem etliche Änderungen am Ablauf. Der Aufwand ist aber minimal im Vergleich zu den Vorteilen, den man durch die Automatisierung gewinnt.

Die rund 300 Seiten sind gut um einem einen Überblick zu liefern und bei entsprechendem Vorwissen eine CI-Umgebung aufzubauen. Wie man einen speziellen CI-Server konfigurieren muss oder was Ant oder Maven alles bieten wird dabei nicht erklärt. Beginnt man ganz von vorne, wird man zusätzliche Bücher benötigen, die auf die einzelnen Teile genauer eingehen.

Da im Bereich von CI sehr viel in Bewegung ist, sollte man sich auch die Webseite zum Buch anschauen. Auf http://www.integratebutton.com/ gibt es Videos, weiterführende Links und die vorgestellten Skripte als Download.

 
Zum Buch
Continuous Integration: Improving Software Quality and Reducing Risk” von Paul M. Duval, Steve Matyas und Andrew Glover, 2007 Addison-Wesley, ISBN 978-0-321-33638-5, 336 Seiten

Schlagworte: ,

Mit Ant ein Tar-Archiv erstellen

22. April 2010 1 Kommentar

Mit Hilfe von Ant ein Tar-Archiv zu erstellen wäre an sich ganz einfach. Hat man am Ende das gewünschte Resultat erreicht, ist auch klar was die Dokumentation genau meinte. Bis es so weit ist, kann man aber viel Zeit verlieren.

 
Motivation: Weniger Arbeit beim nächsten Release
Für AtaraxiS haben wir bisher jeweils ein Zip- und ein Tar-Archiv angeboten. Das Tar nutzen wir um die Dateirechte auf Linux so setzen zu können, dass man die Dateien ausführen kann. Dabei sind wir nach diesem Ablauf vorgegangen:

  1. mit Ant-Task wird das Zip erzeugt
  2. das Archiv auf ein Linux-System kopieren und entpacken
  3. das Executable-Flag für die Shellscripte setzen
  4. Daten als Tar verpacken

Das alles ist zwar nicht kompliziert, doch muss es neben dem Release auch für die Tests gemacht werden. Es wäre praktisch, wenn dies gleich von Ant in einem einzigen Durchgang gemacht werden könnte.

 
Ein Verzeichnis archivieren
Ant hat einen Tar Task, mit dem man ein Verzeichnis in ein Tar-Archiv packen kann. Um den Ordner inputDir in das Archiv test.tar.gz zu packen und dabei gleich zu komprimieren, kann man dieses Target in der build.xml definieren:

<target name="tarTest" description="Test Tar Task">
	<tar longfile="gnu" destfile="./test.tar.gz" compression="gzip" basedir="inputDir">
	</tar>
</target>

So genügt nun ein Aufruf von ant tarTest und der Ordner wird archiviert.

 
Rechte für einzelne Dateien setzen
Für unseren Anwendungsfall müssen allerdings die Executable-Flags für alle *.sh und *.command Dateien gesetzt werden. Unter Linux kann man dies mittels chmod und der Oktalzahl 755 machen. Beim Tar Task lässt sich dies auf die gleiche Weise setzen. Die Dateiauswahl geschieht mittels tarfileset, bei der man über filemode die Rechte setzen kann:

<tarfileset dir="inputDir" filemode="755" prefix="AtaraxiS" >
	 <include name="*.command"/>
	 <include name="*.sh"/>
</tarfileset>

Allerdings kann man nun nicht einfach diesen Teil nehmen und in den tar-Block einfügen. So würden die Dateien doppelt kopiert und es gewinnt frei nach Murphy die Datei ohne die gesetzten Rechte.
So wie man bei einem fileset Dateien hinzufügen kann, kann diese auch ausschliessen. Um den Task einheitlicher zu gestalten, nutze ich für den Ausschluss ebenfalls ein fileset:

<target name="tarTest2" description="Test with exclude">
  <tar longfile="gnu" destfile="./test.tar.gz" excludes="**" compression="gzip" basedir="inputDir">
	<tarfileset dir="inputDir" prefix="AtaraxiS">
		<include name="**"/>
		<exclude name="*.command"/>
		<exclude name="*sh"/>
	</tarfileset>
	<tarfileset dir="inputDir" filemode="755" prefix="AtaraxiS" >
		<include name="*.command"/>
		<include name="*.sh"/>
	</tarfileset>
  </tar>
</target>

Damit dies funktioniert muss unbedingt auch auf dem Tar Task alle Dateien ausgeschlossen werden (excludes=”**”). Ansonsten ist man wieder gleich weit und Dateien werden doppelt kopiert.
Die Option prefix=”” legt fest, wo im Archiv die Daten abgelegt werden sollen. In meinem Beispiel wird alles ins Verzeichnis AtaraxiS kopiert. Wenn man dies nicht benötig, kann man die Option einfach weglassen.

 
Fazit
Es könnte so einfach sein. Geht man schrittweise vor und löst eine Teilaufgabe nach der anderen, kommt man zügig voran. Ich machte den Fehler und versuchte mehrere Teile auf einmal zu erledigen. Zudem kamen mir noch die vorhergehenden Tasks in die Quere. Diese setzten die Berechtigung ebenfalls und verwirrten so noch zusätzlich. Dies alles kostete Zeit und Nerven, aber so gibt es nun diesen Blogeintrag.

Schlagworte:

TechDays 2010 in Basel

11. April 2010 3 Kommentare

Am 6. und 7. April durfte ich die TechDays in Basel besuchen. Nachdem die letztjährigen TechDays bei uns während Wochen für Gesprächsthemen sorgten, freute ich mich auf 2 interessante Tage.

 
Keynote: eine verpasste Gelegenheit
Die TechDays starteten allerdings nicht gerade vielversprechend. Wir waren ein wenig zu früh in Basel und mussten draussen aufs öffnen der Türen warten. Nach einem Kaffee und einem ersten Rundgang durch die Ausstellerstände begann die Keynote. Neben einigen Informationen rund um die TechDays (dieses Jahr nahmen 1100 Personen teil) startete der Hauptteil über visuelle Filmeffekte.

Christoph Ammann versuchte dieses an sich spannende Thema zu präsentieren. Dies gelang allerdings nicht wirklich. Anhand vom Endprodukt in HellBoy 2 zeigte er was sie gemacht hatten. Uns wurden zwar einige Filmausschnitte (ohne Ton) gezeigt, doch was alles dahinter steckt wurde nur angetönt. Es war so oberflächlich, dass man es auch hätte sein lassen können. Zudem wirkte der ganze Vortrag unvorbereitet.

Die Keynote endete mit der Verleihung des .NET Swiss Innovation Awards. Die ausgezeichneten Applikationen nutzten Silverlight, WPF, Azure, WCF oder am besten alles zusammen. Microsoft konnte zeigen, dass es produktionsreife Produkte gibt, die auf diese “neuen” Technologien setzen.

 
Silverlight
Ein grosses Thema an den TechDays war Silverlight. Ronnie Saurenmann war einmal mehr super. Seine Präsentation “Silverlight 4 Overview: The key Microsoft UI technology” wie auch “Silverlight 4 Advanced” waren kurzweilig und boten eine hohe Informationsdichte. Zudem gab es sehr viel zu lachen, was bei einer solchen Veranstaltung nicht alltäglich ist. Es gibt eine neue DeepZoom-Anwendung von Ronnie für das Kunsthaus.

Silverlight ist mit Version 4 bereit für Geschäftsanwendungen (Line of Business – oder kurz LOB). Das DataGrid, die RIA-Services und der Designer in Visual Studio 2010 sind nun fertig und werden in Kürze veröffentlicht.

 

WPF
Bei all der Aufmerksamkeit für Silverlight kam WPF ein wenig kurz. Nur eine Session beschäftigte sich mit den Neuerungen von Version 4. Endlich gibt es aber auch da ein DataGrid und einen DatePicker, die man nicht mehr aus dem Toolkit holen muss. Die Schrift soll nun auch endlich besser steuerbar sein. Die Unschärfe beim scrollen oder während einer Animation könnten somit endlich der Vergangenheit angehören. Auch das DataBinding wurde cleverer. Ein setzen des aktuellen Werts soll nun das Binding nicht mehr entfernen.

Microsoft will nun WPF (und auch Silverlight) auch für LOB-Anwendungen pushen. Bisher lag das Augenmerk vor allem auf den grafischen Spielereien die damit möglich sind. Das DataGrid und die weiteren neuen Controls sind dafür eine Notwendigkeit. Bleibt nur die Frage wieso dies nicht schon mit der letzten Version angegangen wurde. Gerade das Grid ist doch wirklich unverzichtbar.

 

Azure
Ein weiteres sehr grosses Thema war Azure. Cloud Computing wächst und wird immer wichtiger. Mittlerweile gibt es auch in Europa ein Datacenter. Somit müssen die Daten nicht mehr über Nordamerika geholt werden.

Die Präsentation “Learn how to build your first .NET application for the Cloud using Windows Azure” zeigte wie einfach das deployment in die Wolke ist. Eine Datenbank wird über einen gewöhnlichen Connection-String angesprochen. Die ganzen Zusatzservices wie die gespiegelten Datenbanken sind transparent dahinter “versteckt”. Für den Entwickler spielt es somit fast keine Rolle, worauf er sich nun verbindet.

 
MIX, Entity Framework und TFS
Sascha P. Corti steckte einem mit seiner Begeisterung auch diesmal wieder an. Seine Zusammenfassung der MIX zeigte viele Neuerungen bei Microsoft. Der IE 9 wird endlich SVG anzeigen können und rendert so schnell wie derzeit kein anderer Browser. Wird auch endlich Zeit mag da mancher denken. Gerade bei SVG musste man ja lange genug warten.

Das Pivot Control gibt es derzeit nur für WPF. Hoffentlich kommt das auch bald für Silverlight. Was auf der Demo wie eine Spielerei aussieht könnte enorm praktisch bei der Visualisierung grosser Datenmengen sein. Ebenfalls sehr interessant tönt oData. Dies ist quasi ein RSS für Daten. Nur können Daten damit auch erzeugt und verändert werden. Ich bin sehr gespannt wie sich dies entwickeln wird.

Auch beim Entity Framework gibt es in Version 4 zahlrieche Verbesserungen. Ein lazy loading ist nun ebenso möglich wie die Einflussnahme auf die generierten Entitäten. Mittels der Template Engine T4 kann man seine Entitäten nach Belieben umschreiben lassen.

Der Team Foundation Server wartet mit einer ganzen Reihe von Verbesserungen für das Requirements- und Projektmanagement auf. Der Vortrag von Neno Loje dazu war ebenfalls spitze. Die teils sehr zynischen Bemerkungen sorgten für einen würdigen Abschluss der TechDays.

 
Was enttäuschte
Auch wenn mir die TechDays zum grossen Teil gut gefielen, so gibt es auch Punkte und Vorträge, die mich enttäuscht haben.

“RIA Services: Geschäftsorientierte Anwendungen mit Silverlight 4″ von Laurent Bugnion war so eine Präsentation. Von einer Session die sich an Experten richtet erwarte ich deutlich mehr als das vorzeigen des Hands-On Lab von Microsoft zu Silverlight RIA Services. Auf dies lief die ganze Präsentation am Ende leider hinaus. Dabei hätte es zu RIA Services etliches zu erzählen gegeben: Kompatibilität zwischen Versionen, Upgrade-Szenarien oder wann man eigentlich auf RIA-Services setzen soll und wann nicht. Doch all dies fehlte.

Fürs nächste Jahr sollte sich Microsoft überlegen, ob man wirklich alle 5 parallelen Sessions immer gleichzeitig in die Mittagspause lassen will. Wenn 1100 Leute an der Essensausgabe warten kann sich jeder die Schlangen vorstellen. Es gibt sicher einige Sessions die nach 45 Minuten fertig wären und auch solche, die gerne noch 15 Minuten anhängen würden. Diese Staffelung zusammen mit einem Küchenteam das dann auch bereit ist würde das alles deutlich angehemer machen. Grössere Teller würden ebenfalls den ganze Essensdownload beschleunigen…

Das Abschiedsgeschenk muss ich hier ebenfalls erwähnen. Beim Verlassen am Mittwoch gab es für jeden Teilnehmer noch einen Seesack. Dieser war gut gefüllt mit all der Werbung, die man einem die letzten 2 Tage an den Ausstellerständen schon in die Hand gedrückt hat. Ich behielt nur die Broschüre zum Azure-Wettbewerb. Der Rest landete zusammen mit dem fürchterlich stinkenden Seesack in der runden Aktenablage. Das “Geschenk” sollte man vor der nächsten Veranstaltung bitte ebenfalls überdenken.

 
Fazit
Wenn man in den richtigen Sessions war, hat man sehr viel lernen können und die 2 Tage sind wie im Flug vergangen. Hat man aber Pech und sass in den “falschen” Sessions, waren die TechDays alles andere als interessant (Siehe das Fazit von Dani Meier).

Mir hat es gefallen und ich konnte viele neue Ideen mitnehmen. Fürs nächste Jahr sollte Microsoft aber über die Bücher. Sich für 520.– an einem Glücksspiel um die richtigen Sessions zu beteiligen kann ich meinem Chef nicht wirklich vermitteln. Zumal mit der Shape im Herbst eine Konkurrenzveranstaltung aus dem gleichen Haus ansteht.

Schlagworte: , ,

Buch-Rezension zu “The Mythical Man-Month”

5. April 2010 1 Kommentar

The Mythical Man-Month: Essays on Software Engineering” von Frederick Brooks erschien erstmals 1975. Das Buch war so erfolgreich, dass man 1995 zum 20. Geburtstag eine Jubiläumsausgabe auflegte.

Ich hörte im Studium zum ersten Mal von diesem Buch. Sofern ich mich richtig erinnere hatten wir in Aspekte der Wirtschaftsinformatik die Grundthesen besprochen. Nun war es an der Zeit, das ganze Buch zu lesen.

“The Mythical Man-Month” ist eines von 14 Essays der Erstausgabe. Die mir vorliegende Jubiläumsausgabe beinhalten darüber hinaus auch das bekannte Essay “No Silver Bullet” sowie 3 weitere Kapitel.

 
Ein Blick in die Vergangenheit
Vor 35 Jahren sah die IT-Welt komplett anders aus. Computer waren noch riesig und Rechenzeit teuer. Entsprechend gross waren die Unterschiede bei der Software-Entwicklung. Mal eben schnell kompilieren und schauen ob man einen Fehler im Syntax hat war unvorstellbar – die Rechenzeit war dafür viel zu kostbar.

Die weniger bekannten Essays liefern einem einen interessanten Einblick in die damalige Zeit. Die technischen Probleme die damals die Entwickler beschäftigte sind heute kaum mehr vorstellbar. Der Fortschritt bei den Computern und der damit einhergehende Zerfall der Preise macht viele der empfohlene Lösungsansätze überflüssig.

Bei den organisatorischen Problemen sieht die Sache anders aus. Da Software immer noch von Menschen geschrieben wird, sind die Probleme auch heute noch aktuell. Ein Blick auf die Erfahrungen bei den organisatorischen Problemen lohnt sich somit noch immer.

 
The Mythical Man-Month
Ist ein Projekt im Verzug, wird in der Regel immer eine Massnahme getroffen: Man setzt mehr Leute ein. Und häufig ist das Resultat eine noch grössere Verzögerung. Brooks versucht in seinem Essay die Ursache dafür aufzuzeigen.

Eines der grundlegenden Probleme ist ein falsches Verständnis von Mannmonaten (oder heutzutage Personenmonate). Wenn 1 Person für eine Tätigkeit 5 Monate benötigt, können 5 Personen diese nicht automatisch in 1 Monat erledigen. Die Austauschbarkeit von Personen und Monate ist nur dann Möglich, wenn die Tätigkeit sich in unabhängige Untertätigkeiten aufteilen lässt. Sobald die Arbeiten aber eine Sequenz von Abläufen beinhalten, kann man nicht mehr Parallelisieren. Man kann immer mehr Leute an die Aufgabe setzen, doch wenn diese nur auf den Abschluss einer vorgehenden Tätigkeit warten, gewinnt man keine Zeit.

Am Tech wurde uns das anhand von einem Beispiel aus dem Buch erläutert, das in etwa so lautet: Eine Schwangerschaft dauert 9 Monate. Nur weil 2 schwangere Frauen in 9 Monaten 2 Kinder zur Welt bringen, ist das erste Kind dennoch nicht nach 4.5 Monaten “fertig”.

Ein weiterer nicht zu unterschätzender Punkt ist die Kommunikation. Je mehr Leute an einer Aufgabe sind, desto mehr muss kommuniziert werden. Die Formel zum Berechnen der Kommunikationswege ist n(n − 1) / 2, wobei n die Anzahl Personen ist. Danach benötigen 3 Personen schon 3 mal mehr Kommunikationswege als 2 Personen, bei 4 Personen sind es schon 6 mal mehr.

Mehr Aufwand für Kommunikation und Tätigkeiten die nicht parallelisiert werden können führen schnell zur oft beobachteten Verlangsamung. Brooks Fazit lautet daher, dass wenn man einem verspäteten Projekt gegen Projektende mehr Leute hinzufügt, es erst recht zu Verspätungen kommt. Will man dies Verhindern, muss man frühzeitig eingreifen. Oder man lässt die ursprüngliche Gruppe weiterarbeiten und akzeptiert die Verspätung. Die ist am Ende oft sogar deutlich kleiner, als wenn man gegen Ende mehr Leute hinzufügt.

 
No Silver Bullet
Wäre es nicht toll, gäbe es für jedes Problem eine Lösung, mit der man die gleiche Arbeit in einem Bruchteil der Zeit und der Kosten erledigen könnte? Diese silberne Kugel die das Ungeheuer der Komplexität vertreibt war schon 1986 das Thema von einem weiteren bekannten Essay von Brooks. Nur gibt es solche Kugeln nicht.

Software ist insofern ein spezielles Gut, als das es nicht einfach während einer definierten Zeit erzeugt und dann nur noch verwendet wird. Ein Auto als Beispiel wird im Werk gefertigt und fährt dann bis zu seiner Verschrottung praktisch unverändert herum. Es käme niemand auf die Idee, aus einem PKW einen Lastwagen zu machen. Bei Software sieht dies anders aus. Da wird hier noch ergänzt, da kommen neue Anforderungen und dann könnte es doch dies auch noch gleich machen. All dies erhöht die Komplexität und macht die Beschleunigung um Faktoren (und nicht nur Prozente) unmöglich.

Aber die silberne Kugel ist verlockend. Brooks beschreibt Objektorientierte Programmierung, Künstliche Intelligenz, Expertensysteme, grafische Programmierung und noch vieles mehr, das zu seiner Zeit als solche silberne Kugel galt. Heute wäre die Liste stellenweise anders, doch wie vor fast 25 Jahren geht es auch heute nur noch einige wenige Jahre bis dies funktionieren soll.

Die Veränderungen um Faktoren werden gemäss Brooks kommen, allerdings durch andere Anforderungen. Ein Kunde der 2 Mio. $ für Hardware ausgab, war durchaus bereit nochmals 250’000$ für ein auf seine und die Bedürfnisse der Hardware optimierte Lohnabrechnung zu kaufen. Kostet ihn die gleiche Hardware aber nur noch 50’000$ wird er sicher nicht das 5 fache für ein eigenes Programm ausgeben. Stattdessen wird ein Standardprodukt gekauft und man passt seine Abläufe der Software an. Dadurch reduzieren sich die Sonderfälle und Eigenheiten, was wiederum tiefere Kosten bringt.

Wann immer einem jemand ein Produkt als Lösung für alle Probleme verkaufen will, sollte man daher wachsam sein. Viele der zu lösenden Probleme kamen erst durch die letzte Lösung, die einem alle Probleme lösen sollte…

 
Fazit
In der Jubiläumsausgabe ist auch ein Rückblick von Brooks enthalten. Neben einem Blick auf die letzten 20 Jahre listet er auch auf, was er selber für überholt hält. Da dies viele der weniger bekannten Essays in diesem Buch betrifft, sollte man dieses Kapitel möglichst zu Beginn lesen. Überholt bedeutet allerdings nicht, dass diese nicht gelesen werden sollen. Sie liefern einen sehr interessanten Einblick in eine vergangene Zeit.

Wie immer gilt auch bei diesem Buch, dass man sich seine eigene Meinung zu den Ideen des Autors machen muss. Das Buch ist mittlerweile 35 Jahre alt und das merkt man deutlich. Das muss einem bewusst sein, wenn man dieses Buch liest. Es gibt auch in den überholten Kapiteln zahlreiche gute Ideen, die es wert sind, darüber nachzudenken.

Das Essay “The Mythical Man-Month” hat für mich auch heute noch seine Berechtigung. Die Erkenntnisse sind ja nun wirklich nicht mehr neu, doch noch immer wiederholt man die gleichen Fehler – auch ausserhalb der IT.

 
Zum Buch
The Mythical Man-Month: Essays on Software Engineering” von Frederick P. Brooks Jr, 1975 (original), 1995 Jubiläumsausgabe bei Addison Wesley, ISBN 978-0-201-83595-3, 336 Seiten

Schlagworte:
Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.

Schließe dich 297 Followern an