DV-Training/Vom SW-Entwickler zum Profi der Objektorientierung Ohne systematische Schulung ist das Scheitern vorhersehbar

22.09.1995

Von Fritz Letters*

Die Mitarbeiterausbildung setzt haeufig objektorientierte Techniken einem Training zur reinen Werkzeugbedienung gleich. Diese Vorgehensweise widerspricht den Anforderungen und endet mit grosser Sicherheit im Misserfolg. Der Erfolg laesst sich erst mit einer systematischen Schulung der fachlichen und technischen Modellierer und Implementierer sicherstellen.

Dieser Beitrag setzt sich zum Ziel zu schildern, wie ein DV-Profi, aber Neuling in der OO-Landschaft, im Rahmen seiner Ausbildung die Sicherheit gewinnt, die ein selbstaendiges Arbeiten mit den objektorientierten Vorgehensweisen und Werkzeugen liefert. Daran misst sich der eigentliche Erfolg des Trainings.

Wegen der unterschiedlichen Aufgabenteilung ist der Ausbildungsweg fuer den Systemanalytiker - Modellierer - und den Software- Entwickler - Realisierer - getrennt voneinander zu betrachten. Der Modellierer analysiert den Ist-Zustand und erarbeitet anschliessend die Anforderungen und Spezifikationen des zu realisierenden Systems oder Produkts.

Das Ergebnis dieser Vorgehensweise ist das fachliche Konzept, bestehend aus dem Objektmodell, dem Dynamikmodell, Prototypen und verbalen Beschreibungen zu den Modellen. Der Realisierer entwickelt aus dem fachlichen Modell und deren projektunabhaengiger Applikationsarchitektur das technische Modell. Danach implementiert er das Modell mit einem geeigneten objektorientierten Werkzeug, das auf einer der objektorientierten (OO) Sprachen, beispielsweise C++ oder Smalltalk, basiert.

Der Vorgang sieht einen Schulungsaufwand von ungefaehr fuenf bis zehn Tagen fuer den Analytiker und 15 bis 20 Tagen fuer den Entwickler in mehreren Abschnitten mit integrierten Praktikas vor.

Im Rahmen der Ausbildung ist das objektorientierte Basiswissen das gemeinsame Fundament: Bei den zukuenftigen fachlichen Modellierern ist im wesentlichen das gleiche Grundwisssen wie bei den technischen Modellierern und Implementierern vorausgesetzt. Im Rahmen der durchgefuehrten Projekte haben sich gemeinsame Basisschulungen fuer beide Gruppen als besonders effizient erwiesen; nur auf diese Weise entsteht eine Gesamtsicht, und nur so koennen die unterschiedlichen Gesichtspunkte aus technischer und fachlicher Sicht erkannt und behandelt werden.

In diesem Ausbildungsabschnitt, der zwei bis drei Tage dauert, stehen die Objekte und das Basiswissen zum Erstellen objektorientierter Systeme im Vordergrund. Zunaechst lernen die Teilnehmer, die objektorientierten Technologien mit ihren Vorteilen wie integrierte Betrachtung von Daten und Funktionen, Wiederverwendbarkeit, Qualitaets- und Produktivitaetsverbesserung, einzusetzen. Dazu gehoert auch das Wissen, dass moderne Loesungen zusammen mit Client-Server-Systemen, grafischer Oberflaeche und Zugriff auf dezentrale und zentrale Datenbanken nur objektorientiert sicher zu modellieren und zu realisieren sind.

Die OO-Grundprinzipien lassen sich am effizientesten anhand eines Beispiels aufgezeigen und dann verallgemeinern. Stichworte wie Abstraktion, Klassenbildung, Vererbung und Polymorphismus gehoeren zu diesen Grundprinzipien. Bereits hier findet die spaeter in den Projekten eingesetzte Notation, zum Beispiel nach Rumbaugh, Booch oder Coad/ Yourdon. Zum Kennenlernen der OO-Modellierung werden die erforderlichen Modelle, wie CRC-(Class-Responsibility- Collaboration Cards, Veroeffentlichungen von Wirfs-Brock), Objekt- und Dynamikmodelle aufgezeigt und anhand eines Praxisbeispieles gemeinsam angewandt.

Darueber hinaus werden die Vorteile einer iterativen und mehrfach parallelen Vorgehensweise vorgestellt, bei der sich die aufgezeigten Modelle kombinieren lassen und die Ergebnisse der fachlichen Modellierung auf eine projektuebergreifende Applikationsarchitektur abgebildet werden. Zu dieser Vorgehensweise gehoeren auch Prototypen zur Abstimmung der Ergebnisse mit dem Fachbereich, Kunden oder Anwender [Letters 95].

Schulung fuer "klassische" Software-Entwickler

Es wird davon ausgegangen, dass der zukuenftige technische Modellierer und Implementierer etwa Cobol- oder Pascal-, vielleicht sogar C-Kenntnisse, einschliesslich Erfahrungen mit SQL und relationalen Datenbanken mitbringt. Schwerpunkt der Ausbildung ist somit in erster Linie das objektorientierte Denken und die iterative Arbeit im Team mit den objektorientierten Methoden, entsprechenden Sprachen und "geeigneten" Werkzeugen. Das Training erfolgt in mehreren, inhaltlich gegliederten Abschnitten; integrierte Praktikas erhoehen die Effizienz erheblich.

Im Abschnitt "Objektorientierte Implementierungssprache", der zwischen vier und fuenf Tage dauert, wird die objektorientierte Implementierung beispielsweise mit C++ oder Smalltalk und dem zugehoerigen Entwicklungswerkzeug beschrieben. Anders als in vielen Lehrbuechern und Vortraegen dargelegt, zeigen unsere Erfahrungen, dass Programmiererfahrung fuer den Umstieg auf die objektorientierte Software-Entwicklung sinnvoll ist.

Bei einer Smalltalk-Umgebung genuegt es, wenn die Teilnehmer eine konventionelle Programmiersprache beherrschen und dadurch den Umgang mit Entwicklungswerkzeugen, Syntax und anderen DV-Spezifika kennen. Voraussetzung einer effizienten C++-Ausbildung sind Kenntnisse mit der Programmiersprache C. Denn unabhaengig von der Objektorientierung ist Wissen ueber verschiedene Adressierungs- und Zeigermechanismen sowie ueber die Speicherverwaltung (Reservieren und Freigeben) noetig. Hierzu gehoert unter anderem der sichere Umgang mit Compilern und Linkern sowie deren Optionen. Falls die Modellierer und Implementierer keine Erfahrung in C besitzen, empfiehlt sich eine etwa fuenf- bis achttaegige Vorausbildung mit Uebungen in C.

Nach den Grundlagen zur Syntax, den Grundklassen und Methoden, werden Objekte implementiert und die Sprachelemente im Rahmen kleiner Beispiele eingesetzt. Der Aufbau und die Realisierung der Oberflaeche (Masken) und Bildschirmelemente sind werkzeugabhaengig unterschiedlich zu behandeln.

Ziel dieses Ausbildungsabschnitts ist die Entwicklung einer Mini- Applikation; als Inhalt waere eine Kunden- oder Teileerfassung denkbar. Die Applikation besteht aus einer fachlichen Klasse, etwa aus dem Kunden oder Teil einer Tabelle in einer relationalen Datenbank und zirka drei Bildschirmmasken zum Auswaehlen und Bearbeiten der Kunden oder Teile.

Nun sollte eine Uebungszeit von zwei bis drei Tagen folgen, in der eine kleine Applikation aehnlich wie die bereits erwaehnte Mini- Applikation, implementiert wird. Ziel dieses Praktikums ist, dass der Teilnehmer sein bisher erlangtes Wissen verinnerlicht und lernt, dieses Wissen selbstaendig anzuwenden. Aus diesem Grund steht ein Betreuer hoechstens ein- bis zweimal kurzzeitig zur Verfuegung, um die richigen Loesungen auf ihren Weg zu bringen. Dies erhoeht die Motivation der Teilnehmer und steigert die Ausbildungseffizienz erheblich.

Fuer den Abschnitt "Modellierung und Applikations-Design" sind zwischen drei und fuenf Tage anzusetzen - mit dem Ziel, Client- Server-Applikationen systematisch aufzubauen und zu implementieren. Eingangs stehen die Wiederholung und Vertiefung der objektorientierten Modellierung mit Objekt- und Dynamik- Modell. Gegebenenfalls gehoert hierzu eine Ausbildung mit einem entsprechenden Modellierungswerkzeug. Die modellierten Loesungen werden auf die typische projektunabhaengige Struktur, aktuelles Stichwort: Design-Pattern [Coplien 92] umgesetzt, die aus den folgenden Komponenten besteht:

- Datenklassen des Objektmodells; das heisst persistente Klassen, deren Objekte dauerhaft gespeichert werden koennnen,

- Vorgangsklassen, die die Ablaeufe, Prozesse oder Geschaeftsvorfaelle steuern,

- Praesentationsklassen, die die Oberflaeche repraesentieren und

- Zugriffsklassen, die die Anbindung an andere Systeme wie Datenbanken, Kommunikation etc. ermoeglichen.

Eine Uebung hat zum Ziel, eine Applikation zu modellieren und zu implementieren, die eine Zugriffs- und Datenklasse, zwei Vorgaenge und eine Oberflaeche mit bis zu fuenf Praesentationsklassen umfasst. Darueber hinaus werden Fragestellungen zur Implementierungssprache und spezielle Loesungswege des Entwicklungswerkzeuges wiederholt, vertieft und neu behandelt.

In einem drei bis fuenf Tage dauernden Praktikum loesen die Teilnehmer in Teams, zu zwei oder drei Mitarbeitern eine Aufgabe, deren Inhalt und Umfang der im vorangegangenen Abschnitt behandelten Uebung entspricht. Sinnvoll sind Aufgabenstellungen, die aus dem Anwendungsbereich des Teilnehmers stammen, oder auch kleine Projekte, die real anliegen.

Den Abschnitt "Wiederverwendung von Komponenten" bestimmen massgeblich die vorhandenen Werkzeugen und Klassenbibliotheken; er sollte mindestens auf drei Tage angesetzt sein. Gegebenenfalls muss in mehreren Teilabschnitten vorgegangen werden:

- Modellierung und Umsetzung des Objektmodells; hier bietet beispielsweise das Werkzeug Synchronicity die Moeglichkeit, persistente Klassen mit den Grund-Service-Funktionen zum Lesen und Schreiben der Attribute und zur Pflege der Beziehungen zwischen Klassen zu generieren. Da dieser Abschnitt wesentliche Modellierungsaspekte umfasst, sollte er zeitlich vor dem Applikations-Design liegen.

- Zu den Werkzeugen gehoeren Klassenbibliotheken, die unter anderem den Zugriff auf objektorientierte und relationale Datenbanken realisieren. Deren Einsatz und Einbindung in die Applikationsarchitektur wird projektuebergreifend definiert. Die Anwendung wird in diesem Abschnitt behandelt und geuebt. Werkzeuge, wie Polar [Wanner 95] oder Synchronicity, ermoeglichen eine Umsetzung des Objektmodells auf ein relationales Schema und die Generierung der entsprechenden Klassen.

- Klassen zur Vorgangssteuerung erlauben die Wiederverwendung typischer Schemen wie sequentielle oder parallele Ablaeufe, Entscheidungen oder Wiedervorlagen und Ereignisse. Die Vorgangsklassen der Applikation werden an die fachlichen Klassen angebunden.

- Heute und in naechster Zukunft werden branchenspezifische Referenzmodelle die Grundstrukturen fuer Datenbankschemen oder Vorgaenge vorgeben. Die Objekte der Applikation sind auf diese Strukturen umzusetzen. Dieses Schema-Mapping koennte Teil dieses Ausbildungsabschnitts sein.

Diese werkzeugabhaengigen und projektuebergreifenden Komponenten bestimmen wesentlich die Effizienz und Produktivitaet der Projektentwicklung (bis zu Faktor zehn). Deshalb sollte dieser Teil der Ausbildung sehr sorgfaeltig auf das zukuenftige Vorgehen in den Projekten abgestimmt werden. Ausserdem muss nicht die komplette Modellierungs- und Implementierungsmannschaft bei allen Themen anwesend sein.

Nach den geschilderten Lernschritten sind die Modellierer und Implementierer in der Lage, selbstaendig kleinere Projekte anzugehen. In groesseren Projekten sollte ein Coach als technischer Projektleiter die Vorgehensweise, den Einsatz der Werkzeuge und Klassen sowie die Aufgabenverteilung organisieren und pruefen. Die Erfahrungen mit den komplexen Entwicklungswerkzeugen zeigen auch, dass in den Projekten ein objekt- und werkzeugerfahrener Realisierer mitwirken und als Coach waehrend der Projektlaufzeit zur Verfuegung stehen sollte.

Die Modelle und Methoden sind entsprechend ihrem Projekteinsatz zu behandeln und in einer durchgaengigen Uebung im Team zu vertiefen und dies in zwei bis vier Tagen. Miteinbezogen werden sollte auch der Werkzeugeinsatz fuer die Modellierung. Je nach Werkzeugumfang sind hierfuer weitere zwei bis fuenf Tage einzuplanen.

Nach der Aufstellung der ersten "stabilen" Version des Objektmodelles empfiehlt sich ein dynamisches Prototyping der Geschaeftsvorgaenge, die aus der Aufgabendefinition abgeleitet wurden. Die Prototypen zeigen die an der grafischen Oberflaeche sichtbaren Ablaeufe der Geschaeftsvorgaenge. Dadurch koennen, in Zusammenarbeit mit den kuenftigen Anwendern und der Fachabteilung, Probleme erkannt und Ungereimtheiten ausgeraeumt werden.

Die dynamische Modellierung der Geschaeftsvorgaenge, der Prozesse, der Ablaeufe beziehungsweise der Funktionalitaeten beginnt fruehestens nach dem alle Umfeldklassen, die fuer einen Vorgang noetig sind, geprueft wurden. Zur Modellierung werden typische Szenarien durchgespielt und sowohl verbal als auch in Ereignis- Folge-Diagrammen festgehalten. Dadurch wird der Botschaftsfluss beziehungsweise die Kommunikation zwischen den Objekten aufgezeigt.

Auch Manager sollten OO-Denkweise kennen

Nach einem Praktikum kann die Modellierung direkt im Projekt erfolgen. Ein erfahrener Systemanalytiker (fachlich, objektorientiert) moderiert das Modellierer-Team und steuert als Coach den Einsatz und die Nutzung der objektorientierten Methoden.

Die Modellierung und Implementierung objektorientierter Systeme setzt ausser geeigneten Werkzeugen, vor allem motivierte und ausgebildete Mitarbeiter voraus. In vielen Diskussionen und Planungen sind einige Mitarbeiterjahre in der Technikauswahl geeigneter Werkzeuge zur Modellierung und zur Realisierung enthalten.

Mit der Ausbildung der Software-Entwickler und Systemanalytiker allein ist das Ziel jedoch nicht zu erreichen. Darueber hinaus muessen die Mitarbeiter aus dem Fachbereich und die Manager die objektorientierte Denkweise verinnerlichen und in die Praxis umsetzen (wollen).

Literatur:

[Coplien 92] Coplien, J.O.; Advanced C++ Programming Styles and Idioms; Addison Wesley, 92.

[Letters 95] Letters, F.; Wie macht der Praktiker 1995 objektorientiert Client/Server-Systeme? In: ObjektSpektrum Nr. 6/Jan/95, S. 36-39.

[Wanner 95] Wanner, G.; Objektorientierte Entwicklung mit relationalen Datenbanksystemen; In: Theorie und Praxis der Wirtschaftsinformatik Nr. 183/Mai 1995, S.101-119.

* Dr. sc. ind. Diplomingenieur Fritz Letters ist Gruender und Geschaeftsfuehrer der IBL Ingenieurbuero Letters GmbH und haelt als Lehrbearuftragter der FHT Esslingen Vorlesungen zu den Themen Datenmodellierung und objektorientierte (OO) Software-Entwicklung.