Bücher zur Software-Entwicklung Hits und Flops

Objektorientierung, Analyse und Design

Objektorientierte Software-Entwicklung
Bertrand Meyer. ISBN 3-446-15773-5. 547 Seiten
B. Meyer ist als C++ Kritiker bekannt und beschreibt ihm Buch seine Programmiersprache EIFFEL. Eine Sprachbeschreibung ist aber nicht primäres Ziel des Buches, in erster Linie bleibt es ein Werk über Software-Entwurf. Inhalte sind Kernprobleme und Prinzipien wie Software-Qualität, Modularität, Wiederverwendbarkeit. Im zweiten und größten Teil beschreibt er EIFFEL. Im dritten gibt er einen Überriss über andere objektorientierte Sprachen, unter anderem C++. Meyers Buch ist gut zu lesen und die Übersetzung ist gut gelungen. In der neuen Auflage geht er auch auf objektorientierte Benutzungsschnittstellen und Java ein. Der EIFFEL Compiler erzeugt mittlerweile Java Bytecode. Jan 1999

OOP. Objektorientierte Programmierung
Peter Coad, Jill Nicola. Prentice Hall. ISBN 3-930436-08-6. 1994. 648 Seiten
Kaum ein Buch habe ich in den letzten 8 Jahren so oft angefangen wie dieses. Dann habe ich es immer wieder sein lassen. Zwar sind beide Autoren echte Profis, doch das Buch mit vielen Smalltalk/C++-Beispielen ermüdend über einen längeren Zeitraum zu lesen. Immer wieder wird ein Münzeinwurf und Zähler weiterentwickelt. Die Sprache ist immer der Art „Vorhin haben Sie…“, „Versuchen Sie es“, Bauen Sie alles zusammen“, „Lassen Sie das Programm laufen“. Mich nervt das! Das Buch bekam ich auch geschenkt und weiß warum. Jetzt bekommt es die Stadtbücherei. Juli 2004

Objektorientiertes Design ohne Geheimnis
John-Harry Wieken, F. Hoffmann. Verlag Heinz Heise. ISBN 3882290749. 1997
Hübsches OOP-Buch mit einer Zusammenfassung aller bekannten Methoden. September 2002

Design-Pattern

Entwurfsmuster für Software-Werkzeuge
Dirk Riehle. Addison Wesley. 1997. 165 Seiten
Akademisches und in meinen Augen sehr trockenes Buch zur Merkzeug- Material Metapher. Vermutlich ein kaum gelesenes Buch und das erklärt, warum es bei Amazon keine Kritiken gibt. Die Geschichte der Entwurfsmuster finde ich dabei das Beste am Buch. Oktober 2006

UML

UML Distilled: A Brief Guide to the Standard Object Modeling Language
Martin Fowler, Kendall Scott. Addison-Wesley. ISBN 0321193687. Dritte Auflage vom 19. September 2003. 192 Seiten
Ein UML-Buch mit nur 180 Seiten ist in der Tat etwas besonderes, verglichen mit den 1.000 Seiten der UML 2.0 Dokumentation inklusive der vielen Zusatzdokumente wie MDA und so weiter. Dabei ist Fowlers Buch nicht oberflächlich, sondern er destilliert den Kern der UML, die Diagramme, und hält sich nicht mit Meta-Modellen auf. Vor der eigentlichen Notation fasst er auf etwa 30 Seiten Entwicklungsmethoden (wie RUP), Refactoring, Pattern zusammen. Dann folgen die bekannten UML-Diagramme, in der 3. Auflage auch die seit UML 2.0 neuen Timing-Diagramme. In der Schreibweise wählt Fowler einen persönlichen Stil, den ich besonders sympathisch finde. Er spricht häufiger in der Ich-Form und am offensten war das Satz zum Thema Umgang mit den politischen Schwierigkeiten in der Software-Entwicklung:

I can’t offer you any serious advice on this because I’m not a skilled corporate politician. I strongly suggest that you find someone who is.

Das ist ein ganzes Kapitel! In der Summe dürfte das Buch für diejenigen interessant sein, die einen schnellen, schmerzlosen Einstieg in UML suchen. November 2005

Objektorientierte Software-Entwicklung. Analyse und Design mit der UML
Bernd Oestereich, Oldenbourg. ISBN 3486255738. 4. Auflage 1999. 375 Seiten
Ein Standardwerk zu UML. Ob man das Vorgehensmodell gut findet ist eine andere Frage (meine Auflage erwähnt agile Programmierung mit keinem Wort). Das wird mit der aktuellen 8. Auflage aus 2001 sicherlich anders sein. Mit 44,80 EUR etwas teuer. 2000 – April 2007

Agile und Extreme-Programming

Extreme Programming Explained
Kent Beck. Addison-Wesley Professional. ISBN 0201616416. Oktober 1999. 224 Seiten
Ein Buch über XP kann mehrere Aufgaben haben: Es kann in das Thema einführen, es kann verschiede Methoden der Software-Entwicklung gegenüberstellen, es kann XP auseinander nehmen. Becks Buch (und Andres‘ in der neuen Auflage) geben auf den 200 Seiten eine Einführung in die Prinzipien des Extremen; Paar-Programmierung, häufige Integration, kurze Releases usw. Kent Beck ist einer der „Erfinder“ von XP und eine äußerst bekannte Figur in der Software-Welt. Sein Wirken zeigt sich unter Anderem in JUnit und in Büchern wie „Contributing to Eclipse“ mit Erich Gamma und Test Driven Development.

So sehr ich die Einführung schätze, so sehr missfällt mir die Bläuäugigkeit. Probleme bei der Umsetzung werden stiefmütterlich behandelt und ich werde den Verdacht nicht los, dass das Prinzip Mut — einer der vier Prinzipien neben Kommunikation, Einfachheit und Feedback — nicht für das Buch galt: Mut, aufzuschreiben, wo Probleme bei der Umsetzung liegen. Zwar widmet sich das Buch im 24. Kapitel den Problemen, doch ein Kapitel mit etwas mehr als zwei Seiten ist mager. Eine Passage aus dem ersten Teil:

If integration took a couple of hours, it would not be possible to work in this style. It is important to have tools that support a fast integration/build/test cycle. You also need a reasonably complete test suite that runs in a few minutes. The effort needed to fix collisions can’t be too great.

Was denn zu tun ist, wenn bei Projekten die Integration länger dauert, beantwortet das Buch kaum. Auch Fragen der verteilten Entwicklung (mehrere Teams in unterschiedlichen Ländern) werden nicht beantwortet. Auch vergleiche zu anderen agilen Methoden fehlen. Die Anzahl der fehlenden Themen geht weiter: Wenn der Fachler unfähig ist, wenn — wie beim C3-Projekt — Geldgeber und Anforderungsbestimmer nicht gleich sind, wenn auf TDD verzichtet wird, usw. usw. Im Kapitel 25 (When You Shouldn’t Try XP) erfährt man vielleicht die Antwort: XP nutzt man dann erst gar nicht. Es ist vielleicht nicht die Antwort, die man erwartet hat. Statt kritischer Auseinandersetzung und Lösungsvorschlägen bekommt der Leser in meinen Augen patziges wie:

If you have programmers on two floors, forget it. If you have programmers widely separated on one floor, forget it.

Alles in allem ein nett geschriebenes Einführungsbuch, aber wer wirklich XP in sein Team bringen will, muss auf jeden Fall ein XP-kritisches Buch zusätzlich lesen. Es gibt seit Ende 2004 eine zweite Auflage. November 2005

Allgemeine Bücher

The Clean Coder
Robert C. Martin
Ich mag das Buch von Robert Martin (Uncle Bob), weil es offen und ehrlich ist. Selten sagen Entwickler und Berater: „Da habe ich Mist gemacht, ich war blöd, das war dumm“. Robert ist da schonungslos und legt offen, an welchen Stellen er in seinem Leben vor die Wand fuhr. Daraus formuliert er Grundsätze, von denen wir alle lernen können. Dabei ist das Buch relativ untechnisch. Vielmehr steht der Entwickler als Mensch als soziales und mitunter selbstherrliches Wesen im Vordergrund; Coding-Tipps wie Pattern oder Idiome fehlen gänzlich. Aber das ist gut so, denn viel zu oft denken gerade Neueinsteiger, es kommt auf die coole Programmiersprache an, oder Meister der Kommandozeile zu sein. Alles falsch bzw. das ist nur ein Teil. Softwareentwicklung ist ein kollaborativer Prozess. Man muss „Nein“ sagen zu Dingen, die man nicht einhalten kann und ein „Ja“ bedeutet, ein Commitment zu machen, um verlässlich im Team zu arbeiten. So ist auch „Ja“/“Nein“ zu sagen, und die Konsequenzen zu tragen, ein zentraler Bestandteil des Buchs. Weitere Themen sind Zeiteinteilungen, Arbeiten unter Druck und immer wieder, was ein professionellen Entwickler auszeichnet: Testen, Testen, Testen. Da der perfekte professionelle Entwickler nicht geboren, sondern im Laufe der Jahre heranreift, nimmt auch diese Entwicklung im Buch Platz ein. Zentrale Themen bei Martin sind: Programmieraufgaben (was man selbst tun kann) und Mentoring (was die Umgebung/Arbeitgeber tun kann). Wer schön länger im Geschäft muss es das Buch nicht lesen, denn jeder wird sich dort wiedererkennen, doch jeder angehende Softwareentwickler sollte es lesen und einen Eindruck gewinnen, worauf man sich einlässt und was es heißt, professionell zu arbeiten. Dezember 2011

Perlen der Programmierkunst. Programming Pearls
Jon Bentley. Addison-Wesley. ISBN 3827317193. 2000. 285 Seiten
Nicht-Informatiker erleben beim Lesen sicherlich mehr Aha-Momente. Stützt sich stark auf das Implementieren und geht wenig auf das Design bzw. die Architektur von Anwendungen ein. Eher ein algorithmisches Buch mit einigen netten Aufgaben und netten Anekdoten. Ich würd’s aber nicht noch einmal kaufen.April 2007

Electronic Business. Methoden, Werkzeuge, Techniken und Systemen für den Unternehmenserfolg im Internet
Berthold, Daum, Markus Scheller. Addison-Wesley. ISBN 978-3827316431. 2000. 462 Seiten
So schnell kann das gehen: 1999 brachte die Software AG noch eine neue Programmiersprache Bolero heraus, die ein Compiler in Java-Byte-Code übersetzt, und nur ein paar Jahre später findet man von dieser Sprache nichts mehr. Nicht im breiten Internet und auf den schmalen Seiten der Software AG. Das Buch ist ist im Wesentlichen eine Vorstellung von Bolero und Möglichkeiten, dazu noch ein wenig Dies und Das rund um Software-Entwicklung und die Bedeutung von E-Commerce. Das Buch kann im Regal bleiben. März 2007

Programmierpraxis. Prinzipien zur effizienten Programmierung
Brian W. Kernighan, Rob Pike. Addison-Wesley. 978-3827315830. 1999. 302 Seiten
Zwei großartige Entwickler schreiben für Java-Entwickler ein relativ unspektakuläres Buch. Für C(++)-Coder ist da schon viel drin, aber die Java-Entwickler werden sich wundern, warum denn die Autoren Dateiströme nicht im finally-Block schließen (Kapitel 4.7) und nicht das Prinzip „Der kleinste nötige Typ“ anwenden, etwa bei FileInputStream in = new FileInputStream(fname). Persönlich würde ich auch den Satz „Java, als auf höherer Ebene als C oder C++ angesiedelte Hochsprache, verbirgt die Problematik der Byte-Reihenfolge vollständig. Von den Bibliotheken wird die Schnittstelle Serializable zur Verfügung gestellt, die die Art und Weise definiert, in der Datenelemente zum Datenaustausch gepackt werden.“ auch falsch finden. März 2007

Applikationen entwickeln unter Windows NT 4.0. Client-Server-Technologie, Design, Programmierung
M. Rößmann. Addison-Wesley. ISBN 3-8273-1080-6. 1997

Die Software Rebellen. Die Erfolgsstory von Linus Torvalds und Linux
Glyn Moody, Mod. Industrie, La. ISBN 3478387302. 2001. 280 Seiten
Toll zu lesenden Buch, welches mich wie kein anderes in letzter Zeit zum Lesens brachte. Teilweise ist dem Inhalt etwas konfus zu folgen, da die Geschichte nicht chronologisch aufgebaut ist. Sonst kann ich nur sagen: Tolles Buch, welches insbesondere viele Detailinformationen über die Leute rund um die Open-Source-Szene gibt. Januar 2002

Programmieren mit GNU Software
Mike Loukides, Andy Oram, O’Reilly. ISBN 3-930673-32-0. 283 Seiten
Ein Buch, welches sich nur der Software-Entwicklung mit GNU-Produkten beschäftigt. Wir erfahren in dem Buch einiges über den Editor EMACS, dem GCC, Bibliotheken, dem Debugger, der Übersetzung mit make, der Verwaltung von Quelldateien mit RCS uns derzeit Messung und Profiling von Programmen. Das Buches allerdings von 1997, sodass nicht alle Software auf dem aktuellsten Stand beschrieben ist. Dennoch ist es auch eine schöne Einführung in die wichtigen Helfer. Auf grafische Oberflächen geht dieses Buch nicht ein, ebenso wie Java findet keinen Platz. Leider findet sich auch über configure und den neuen Dienstprogrammen von Apache, wie etwa ant kein Sterbenswörtchen. Aber da das Buch von 1997 ist und mittlerweile nicht mehr lieferbar ist, ist das OK.

Performance Engineering. State of the Art and Current Trends (Lecture Notes in Computer Science Vol. 2047)
Reiner Dumke, Claus Rautenstrauch, Andreas Schmietendorf, Andre Scholz. Springer-Verlag Berlin Heidelberg. ISBN 3540421459. Mai 2001. 349 Seiten
Man kann das Buch nicht als durchgehendes Buch sehen, sondern man muss es als Sammlung von Papers verstehen, die immer wieder von wissenschaftlichen Mitarbeitern der Universitäten von Forschungseinrichtungen publiziert werden. Die Inhalt und Themen sich auch relativ unspektakulär, sogar langweilig, und ich würde zweifeln, ob man die angesprochenen Themen wirklich praxistauglich umsetzen kann. Eines der interessantesten Artikel war über die Geschichte des PE. Mein Fazit: Man kann die Sammlung von Artikeln nicht bei konkreten Problemen inperformanter Programme verwerten. Der Preis ist mit 88,00 DM dann auch er etwas für Universitäts-Bibliotheken, die solche Bände regelmäßig kaufen (müssen). Oktober 2002

Übersetzung objektorientierter Programmiersprachen: Konzepte, abstrakte Maschinen und Praktikum „Java Compiler“
Dr. Bernhard Bauer, Riitta Höllerer. Springer. ISBN 3-540-64256-0. 1998. 272 Seiten
Nette Lehrbuch, aber etwas zu praktisch für meinen Geschmack. Ich fühle mich unwohl, wenn alles sofort verständlich ist, aus meinem Studium in Compilerbau erinnere ich mich an ganz andere Kaliber; bspw. Drachenbuch , Hopcroft/Ullman. Compilerbau ist für mich immer mit formalen Sprachen verbunden. Davon merkt man aber im Buch nichts. Parsingtechniken spielen keine Rolle. Interessant finde ich die Umsetzungen von virtuellen Methodenaufrufen in Java und C++. Etwas knapp auch GC: 7 Seiten. Da das Buch als Praxisbuch angelegt ist, findet sich im zweiten Teil (ab Seite 183) die Beschreibung des Compilertools MAX, der mit attributierten Grammatiken arbeitet und aus Java Quellcode eine Klassendatei generiert. Nett beschrieben für ein Praktikum. Fand ich aber nicht mehr so interessant, da auf die Details nicht eingegangen wird. Insgesamt ein lesbares Buch für diejenigen, die sich schon immer mal gefragt haben, wie ein OO-Compiler arbeitet. Weniger interessant für den Unibetrieb, da zu spezialisiert mit einem Tool und einer Sprache gearbeitet wird. Juni 2k

The Mythical Man-Month: Essays on Software Engineering
Frederick P- Brooks, Addison-Wesley. ISBN 0-210-00650-2. 1975. 195 Seiten
Dieses Buch ist ein absoluter Klassiker — was liegt näher, als das Buch einmal zu lesen. Leider ist es nicht einer der typischen Bücher, die ihr Standard-Englisch-Vokabular nutzen. So brauchte ich etwas länger zu lesen und dies zog sich über Monate hindurch. Zum Inhalt: Wie das Erscheinungsdatum andeutet, ist das Buch schon ein paar Dekaden alt. Brooks schreibt über seine Erfahrungen mit und beim Entwurf des IBM System/360. Tools und Programmiersprachen entsprechen also diesem Umfeld. Schön zu lesen ist die Personenaufteilung und der Projektverlauf. Für einen Projektleiter ist dieses Buch sehr reizvoll. Daher: Lesen! Juni 2k

Der Krieg der Codes: Wie Microsoft ein neues Betriebssystem entwickelt
G. Pascal Zachary. ISBN 3-445-11038-X. 1996. 407 Seiten
Ein super interessantes Buch über die Entstehung von Windows NT. Liest sich sehr flüssig und lässt die Zeit vergessen. Juni 1999

C Elements of Style
Steve Qualline. ISBN 0-13-148222-X. 1992. 265 Seiten
Buch über Programmierstil in C und C++. April 1999

Die westliche Programmierkunst am Scheideweg: die Schlüsseltechniken der Software-Entwicklung für das 21. Jahrhundert
Edward Yourdon. ISBN 3-446-17518-0. 1993. 298 Seiten
Das Buch von Yourdon ist zwar schon etwas älter, aber der Inhalt ist zukunftsweisend. Er beschreibt die neuen Wege, die im wesentlichen sind: CASE Tools und Objektorientierung. Er bringt eine Menge von Beispielen, wo die Design/Analyse Phase einfach übersprungen wird und dann natürlich alles aus dem Ruder läuft. Feb 1999