Schultz  Reverse- & Software-Engineering

 

Home
Tool-Übersichten
OO-Bibliographie
OO-Pages
Knackige Zitate
Privates
Impressum

OO-Bibliographie
 

Einige Bücher und Zeitschriftenartikel meiner umfangreichen OO-Literatur-Sammlung habe ich im folgenden kommentiert. Die Auswahl der vorgestellten Bücher ist sehr pragmatisch: es sind einfach diejenigen, für die ich die Zeit zur Kommentierung gefunden habe. Neue Besprechungen werden unten angefügt, eine alphabetisch nach Autor sortierte Liste finden Sie hier: 

Arrington: Enterprise Java with UML, Wiley 2001
Balzert: Lehrbuch der Objektmodellierung. 1999
Beck: Extreme Programming Explained. 1999
Buschmann et al: A System of Patterns 1996
Buschmann et al: Patterns for Concurrent and Networked Objects. 2000
Carey et al : San Francisco Design Patterns 2000
Cheesman/Daniels: UML Components. 2001
Coad:  Java Modeling in Color with UML, 1999
Cockburn: Writing Effective Use Cases. 2001
Conallen: Building Web Applications with UML  1999
Cook/Daniels: Designing Object Systems with Syntropy. 1994
Core J2EE Patterns. Sun 2001
D'Souza: The Catalysis Approach. Addison Wesley 1999
Eriksson: UML Toolkit, 1998
Fowler: UML Distilled 1997
Fowler, Beck, u.a: Refactoring: Improving the Design of Existing Code.1999
Fowler, Rice, u.a.: Patterns of Enterprise Application Architecture. 2002
Gamma, Helm, Johnson, Vlissides: Design Patterns. 1995
Herzum / Sims: Business Component Factory. Wiley 2000
Larman, Craig: Applying UML and Patterns (2nd ed.), 2002
Lea: Concurrent Programming in Java (2nd ed.)   1999
Leymann / Roller: Production Workflow. 2000
Jeckle et al: UML 2 glasklar. Hanser 2004
Monson-Haefel: Enterprise JavaBeans. O'Reilly 2000
Rumbaugh: UML Reference Manual, 2nd ed.  Addison Wesley 2004
Tate et.al.: Bitter EJB. Manning 2003
 
bullet[Gamma95] Gamma, Helm, Johnson, Vlissides: Design Patterns. Addison-Wesley 1995
Ein Kommentar erübrigt sich: der Klassiker.
UML-Modelle der Patterns finden sich hier und (etwas ausführlicher) auf der Internet-Seite von Mark Grand, der in seinem Buch die Patterns in Java vorstellt.
Beginnend mit diesem Buch haben sich Patterns als Thema etabliert. Hier ist der Einstiegspunkt für alle seitdem entstandenen Pattern-Kataloge.
 
bullet[Cook94] Steve Cook, John Daniels: Designing Object Systems with Syntropy. Prentice Hall 94
Heute nur noch von historischem Interesse. Methode der 2. Generation, die auf OMT aufbaut.
 
bullet[Eriksson 98] Hans-Erik Eriksson, Magnus Penker: UML Toolkit, Wiley 1998.
Das Buch erklärt sehr ausführlich die UML-Notation. Beginnend bei Use-Case-Diagrammen, über Klassendiagramme und Dynamik-Diagramme (mit einem extra Kapitel zu Realtime-Systemen), bis hin zur physikalischen Architektur.
Entgegen der Suggestion durch den Titel scheint keine Verbindung zu den “offiziellen” UML-Autoren vorhanden, insofern ist wie bei jedem dieser Titel zu fragen, inwieweit sich die Autoren an die UML halten und inwieweit eigenwillige Interpretationen vorgetragen werden. Meines Erachtens ist die vorgetragene UML-Interpretation sehr treffend und  korrekt, die Beispiele sind meist eigene Beispiele und  gelungen. 
Den Abschluss bildet die vollständige Modellierung einer Bibliothek, von den Use-Case-Diagrammen bis zur Implementierung in Java. Auf den 27 Seiten wird das Wichtigste vorgestellt, auf der beigefügten CD ist das vollständige Modell enthalten.
    An einem solch ausführlichen Beispiel entzünden sich am ehesten die Diskussionen. Für meinen Geschmack wird zu viel mit find-Methoden auf Klassenebene gearbeitet, die ein bestimmten Objekt anhand von Suchkriterien heraussuchen. Auch an den Stellen, an denen es möglich wäre, wird nicht navigierend gearbeitet. Vermutlich ist die Ursache dafür, dass bei dem System sogar eine einfache Persistenz eingebaut ist, und Assoziationen nicht über Objektreferenzen angesprochen werden, sondern vermittels der Persistenzschicht.
 
bullet[Fowler 97] Martin Fowler, Kendall Scott: UML Distilled. Addison Wesley 1997
Eine schlanke Beschreibung der UML, die vor den "offiziellen" UML-Büchern erschienen ist. Zeigt, was man in der täglichen Analyse-Arbeit so braucht. Sehr empfehlenswert.
Es gibt eine deutsche Übersetzung und eine Neuauflage von 1999.
 
bullet[Beck 99] Kent Beck: Extreme Programming Explained. Addison Wesley 1999
Ist nicht mein Ding, da ich im Herzen Modellierer bin und Kent Beck - was ich so zwischen den Zeilen heraushöre - nicht viel von graphischer Modellierung hält. Innerhalb der XP-Gemeinde gibt es aber auch welche, die der Modellierung ihren Platz einräumen, siehe   http://www.ronin-intl.com/publications/xm.htm  (vielen Dank an Rainer Bauer für den Hinweis).
Meiner Ansicht nach wird in dem Buch Refactoring überbetont. Wenn in Analyse oder Architektur etwas verbockt wurde, lässt sich das mit Refactoring kaum mehr ausbügeln.
 
bullet[Coad 99] Peter Coad, Eric Lefebvre, Jeff de Luca: Java Modeling in Color with UML, Prentice Hall 1999
Besser ist eigentlich der Untertitel “Enterprise Components and Process”. Für Peter Coad und seine Coautoren mag vielleicht das Wichtigste sein, dass die Modellierung von Problem-Domain-Objekten auf 4 Archetypen reduziert werden kann: 
  1. dingliche Objekte, die individuell identifizierbar sind (Artikel, Personen, Organisationen, Plätze, u. ä.) 
  2. Beschreibungen, die für mehrere dieser dinglichen Objekte gelten 
  3. Rollen, die dingliche Objekte einnehmen (Kassierer, Kunde, bestellter Artikel etc..) 
  4. Vorgänge (Bestellung, Rechnung, etc.) 

Die Klassen dieser Archetypen werden nicht nur mit entsprechenden UML-Stereotypen gekennzeichnet, sondern auch in unterschiedlicher Farbe dargestellt - daher die Farbe im Buchtitel. Naja.
Ich finde an diesem Buch sehr lehrreich und wichtig, dass es in geballter Form Problem-Domain-Modelle für alle Industriebereiche vorgestellt: für Materialwirtschaft, für Fertigung, für Verkauf, für Personalwirtschaft, für Planung etc. etc. Nicht in der betriebswirtschaftlichen Tiefe wie die Referenzmodelle von Prof. Scheer, aber das ist ja auch nicht der Anspruch. Getragen wird das Buch von der Vorstellung dieser Modelle, und begleitend werden verschiedene Design-Probleme erörtert und die gewählte Lösung begründet. 
Natürlich sind die Modelle in UML (es werden Klassendiagramme und Sequenzdiagramme benutzt) und der Beispielcode in Java.
 

bullet[D'Souza 99]  Desmond F. D'Souza: Objects, Components and Frameworks with UML. The Catalysis Approach. Addison Wesley 1999
Mit UML hat das Buch nicht so viel zu tun, interessanter sind die eigenen Konzepte dieser Methode, die in UML ausgedrückt werden, wenn es passt, und in eigener Notation, wenn es darüber hinausgeht (oft der Fall). Ich habe nur einige Ausschnitte gelesen, interessant fand ich
- das Konzept der Aktionen, first class model elemente wie die Klassen, mit Verfeinerungskonzept dafür, auf der untersten Ebene dieser Verfeinerung entspricht eine Aktion einer Nachricht/Operation.

bullet[Lea 99] Doug Lea: Concurrent Programming in Java (2nd ed.) Design Principles and Patterns. Addison Wesley 1999
Inhaltsangabe hier
Bewertung: 5 Sterne für das Buch: selten so viel gelernt.  
 
bullet[Conallen 99] Jim Conallen: Building Web Applications with UML . Addison Wesley 1999
Es gelingt dem Autor sehr gut, die Brücke zwischen dieser sich rasant entwickelnden Technologie (JSP, ActiveX, etc.etc.etc.) und den entsprechenden Abstraktionen zu schlagen. Die UML wird mit Stereotypen erweitert, so dass man die wesentlichen Entwurfsentscheidungen für eine Web-Application damit ausdrücken kann. Conallen kristallisiert drei Architektur-Patterns heraus: 
* Thin Client (Client nutzt irgendeinen Browser, keine Kontrolle über Client-Konfiguration, alle Business-Logik wird auf dem Server ausgeführt) 
* Thick Client (ein Teil der Business-Logik kann auf dem Client ausgeführt werden) 
* Web Delivery (distributed objects, der Web-Browser dient vor allem zur Verteilung) 
 
bullet[Balzert 99] Heide Balzert: Lehrbuch der Objektmodellierung. Analyse und Entwurf. Spektrum 1999
Der Unterschied zum Vorgängerbuch von 1996 ist nicht nur die Verwendung der UML als Notation, sondern eine durchgreifende Weiterentwicklung von Inhalt und Struktur. Wie in 1996 ist die Vorstellung der OO-Konzepte und die Checklisten zur Erstellung der jeweiligen Modelle in verschiedene Kapitel getrennt. Jede Checkliste enthält drei Teile: 
a) die konstruktiven Schritte (wie findet man ein Modellelement?) 
b) die analytischen Schritte (ist es ein "gutes" Modellelement?)
c) Hilfestellung für "klassische" Entwickler
 
bullet[Leymann 00] F. Leymann, D.Roller: Production Workflow. Concepts and Techniques. Prentice Hall 2000
Die Vorstellung dieses Titels ist auf eine gesonderte Seite ausgelagert.
 
bullet[Fowler 99] Martin Fowler, Kent Beck, u.a: Refactoring: Improving the Design of Existing Code. Addison Wesley 1999
Refactoring ist das Ändern von Software dergestalt, dass sich das externe Verhalten nicht ändert, aber die interne Struktur verbessert wird. Das Buch enthält einen Katalog von Refactoring-Maßnahmen einschl. der durchzuführenden Schritte. Teilweise ist das Resultat der Einsatz eines Patterns aus [Gamma 95].

 
bullet[POSA1] Buschmann/Rohnert/Stal/...: Pattern-Oriented Software Architecture Vol.1. Wiley 1996
Eine Vorstellung des Inhalts kann ich mir sparen, der ist unter http://www.hillside.net/patterns/books/Siemens/book.html zu ersehen. Zur Bewertung: ein wichtiges Buch über Patterns, wenig Überschneidungen mit  [Gamma 95], manches gründlicher erklärt. Z.B. enthält POSA1 für mich die ausführlichste Erklärung von MVC von den vielen, die ich gesehen habe.
 
bullet[POSA2] Buschmann/Rohnert/Stal/Schmidt: Pattern-Oriented Software Architecture Vol.2: Patterns for Concurrent and Networked Objects. Wiley 2000
Wenn ein Web-Server auf einem Port "horcht", dann geschieht dies in der Regel mit einer Event-Loop, die einer GUI-Event-Loop recht ähnelt. Eingehende Events werden an entsprechende Event-Handler weitergeleitet. Das entsprechende Pattern heisst "Reactor" und eines von 16 Patterns in POSA2. Eine Vorstellung des Inhalts kann ich mir sparen, der ist unter http://www.cs.wustl.edu/~schmidt/POSA#pgfId-604777 zu ersehen. Der Beispiel-Code ist in der Regel in C++, auf Java wird ab und zu eingegangen. Beispielsweise sind die Patterns Reactor und Proactor in dieser Form in Java nicht anwendbar, denn die beiden Patterns behandeln betriebssystem-nahe asynchrone IO-Funktionen, wie sie im WIN32- oder POSIX-API unterstützt werden, aber nicht in Java.
 
bullet[SanFrancisco] J.Carey, B.Carlson, T.Graser: San Francisco Design Patterns. Blueprints for Business Software. Addison Wesley 2000
Dies ist nicht ein Buch, um die Architektur von San Francisco zu verstehen, sondern es enthält Design Patterns, die für jedermann interessant sind. Im Unterschied zu den meisten anderen Design Pattern-Büchern geht es hier um Business Software. Das durchgängig verwendete Beispiel ist ein Food Warehouse, das ausführlich vorgestellt wird. Eine Übersicht über die 18 Patterns finden Sie hier.
 
bulletPeter Herzum / Oliver Sims: Business Component Factory. Component-Based Development for the Enterprise. Wiley 2000
Vergessen Sie erst mal das Wort "Factory" im Titel, wichtig ist, dass hier Business Components bis hin zur Geschäftsprozess-Ebene erstellt werden. Es ist ein grundlegendes, wichtiges Werk über die Entwicklung von Komponenten. .
Ausführliche Besprechung folgt, wenn Zeit vorhanden.
 
bulletJohn Cheesman / John Daniels: UML Components. A simple process for specifying component-based software. Addison-Wesley 2001
 
bulletAlistair Cockburn: Writing Effective Use Cases. Addison-Wesley 2001
Sehr empfehlenswert. Besprechung auf einer gesonderten Seite.
 
bulletRichard Monson-Haefel: Enterprise JavaBeans. 2nd Ed, O'Reilly 2000
Gutes Buch. Stellt die EJB-Technologie ausführlich vor (in der mir vorliegenden Ausgabe EJB 1.0 und 1.1)
Als Beispiel wird verwendet ein Schiff mit Decks und Kabinen, die in einer Reiseagentur für eine Kreuzfahrt reserviert werden können (EntityBeans: Cabin, Ship, Cruise, Customer und Reservation, TravelAgent ist ein statefull SessionBean, ProcessPayment ist ein stateless SessionBean Klassendiagramm).
Wie meistens bei O'Reilly wird keine UML verwendet, sondern eine eigene grafische Darstellung.
Die offizielle WebPage des Buches: http://www.oreilly.com/catalog/entjbeans2/ und http://www.ejbnow.com/

 
bulletCT Arrington: Enterprise Java with UML, Wiley 2001
Das Buch spannt den Bogen von der Anforderungsanalyse bis zur Implementierung in Java. Für jede Phase werden nicht nur die Inhalte vorgestellt, sondern auch die Ziele und das Vorgehen. Diese Bandbreite ist gleichzeitig die grösste Schwäche des Buches, denn weder wird eine der Technologien in ausreichender Tiefe vorgestellt, noch die Methodik. Ich persönlich habe kaum etwas neues gelernt. Hier finden Sie die ausführliche Besprechung

 
bulletMartin Fowler: Patterns of Enterprise Application Architecture. Addison-Wesley Nov. 2002
Dieses Buch ist vergleichbar mit einem J2EE-Patterns-Buch, geht aber darüber hinaus, da es von der Technologie abstrahiert. Es werden Patterns vorgestellt, die für eine moderne kommerzielle Anwendung notwendig sind, und in J2EE oder .NET oder anderen Servertechnologien umgesetzt werden können. Dazu zählen Patterns für
bulletdie Persistenzschicht, insbesondere für das objekt-relationale Mapping
bulletdie Verteilung bzw. für die daraus entstehenden Probleme
bulletdie Präsentation mit HTML und co.
bulletden Zustand einer Benutzer-Sitzung

Ein ausführlicher Überblick findet sich hier.
Ein sehr empfehlenswertes Buch.
 

bulletCraig Larman: Applying UML and Patterns: an Introduction to Object-Oriented Analysis and Design and the Unified Process. 2nd ed. Prentice Hall 2002
Mit [Fowler 97] bestimmt eines der besten Einführungen in UML. Es ist wesentlich umfangreicher als das Büchlein von Fowler, nicht weil es etwa die UML tiefer ausloten würde, sondern weil es tatsächlich eine Einführung in das objektorientierte Modellieren ist, mit einem durchgängigen Beispiel, bei dem die Modellierungsentscheidungen ausführlich erörtert werden und Modellierungsalternativen einander gegenübergestellt werden. Das Beispiel beginnt bei den Use-Cases und wird fortgeführt bis zu detaillierten Design-Überlegungen. Das Buch ist strukturiert entlang der Iterationen zur Ausarbeitung des Beispiels, die notwendige UML wird "an Ort und Stelle" eingebracht. Beispielsweise finden sich die grundlegenden Aussagen über Use Cases ganz am Anfang des Buches, während die Relationships zwischen Use Cases erst in der Elaboration Iteration 3 vorgestellt werden.
Als ich die erste Ausgabe kaufte, war ich von dem Buch enttäuscht. Die ausführlichen Diskussionen über (aus gewisser Sicht "einfache") Modellierungsprobleme langweilten mich, und es gab entgegen der scheinbaren Versprechungen im Titel keine "neuen" Patterns. Heute habe ich verstanden, daß die 5 GRASP-Patterns nicht Design-Patterns wie in Gamma95 sind, sondern 5 grundlegende Prinzipien zur Zuordnung von Verantwortlichkeiten, dem zentralen Thema des objektorientierten Designs (General Responsibility Assignment Software Patterns). Sie seien kurz zitiert: 
  1. Information Expert: assign a responsibility to the information expert - the class that has the information necessary to fulfill the responsibility.  
  2. Creator: assign class B the responsibility to create an instance of class A if one or more of the following is true:
    - B aggregates A objects
    - B contains A objects
    - B records instances of A objects
    ..............
  3. Low Coupling: assign a responsibility so that (unnecessary) coupling remains low
  4. High Cohesion: assign a responsibility so that cohesion remains high
  5. Controller: assign the responsibility for receiving or handling a system event message to a class representing one of the following choices:
    - represents the overall system, device, of subsystem (facade controller)
    - represents a use case scenario within which the system event occurs.

Die dritte Auflage enthält erneut Verbesserungen, u.a. Verwendung der UML 2.0, Agiles Modellieren, etc.
 

bulletMario Jeckle, Chris Rupp, Jürgen Hahn, Barbara Zengler, Stefan Queins: UML 2 glasklar. Hanser 2004
436 Seiten voll von Details über die UML 2. Ich habe fast keine Fehler gegenüber der OMG-Spezifikation entdeckt (das bedeutet ein dickes Lob). Die Beispiele stammen nicht aus dem kommerziellen Bereich, sondern dem Party-Bereich, und es ist erstaunlich, wieviel passende Erklärungen die Autoren daraus ziehen können. Die einzige Kritik könnte sein: das Buch ist zu dick, es erschlägt einen. Anders formuliert: der Leser sollte UML bereits kennen und sich schon eine eigene Meinung gebildet haben, was und wie tief er mit UML modellieren will. Die WebSite des Buches: http://www.uml-glasklar.de/ 
 
bulletDeepak Alur, John Crupi, Dan Malks: Core J2EE Patterns. Best Practices and Design Strategies. Sun 2001
Erstens findet sich der wesentliche Inhalte dieses Buches im Internet, und zwar hier, zweitens ist es in wichtigen Teilen überholt. Ich empfehle stattdessen [Bitter EJB] oder [Fowler02].
 
bulletBruce Tate, Mike Clark, Bob Lee, Patrich Linskey: Bitter EJB. Manning 2003
Das Buch enthält EJB-Anti-Patterns. Ein Anti-Pattern ist "a literary form that describes a commonly occurring solution to a problem that generates decidedly negative consequences."
Es werden insbesondere Anti-Patterns zu Session Beans, Message Beans (sic!) und Entity Beans beschrieben. Ein paar Gedanken dazu finden Sie hier.
Forum des Buches
Website des Nachbar-Buches "Bitter Java
 
bulletJim Rumbaugh, Ivar Jacobson, Grady Booch: The Unified Modeling Language Reference Manual, 2nd ed.  Addison Wesley 2004
Die 2.Auflage deckt UML 2.0 ab (Stand Juni 2004). Aber Vorsicht! Das ist das "Reference Manual", nicht der "User Guide". Das heisst: der Hauptteil des Buches besteht aus einer alphabetisch angeordneten Erklärung der UML-Begriffe. Das ist nicht so schwierig zu lesen wie die Original-Spezifikation der UML, aber doch wesentlich trockener als der "User Guide"(den es bis jetzt nicht für UML 2 gibt) oder andere UML-Einführungen. Auf der beigelegten CD sind die verschiedenen Begriffe untereinander verlinkt, wie es sich für ein Lexikon gehört. Das ist praktisch.

 

  Letzte Änderung: 05.02.2016 Zurück zur Startseite