Fuer komplexe Client-Server-Anwendungen unersetzlich Das Software-Engineering hat noch lange nicht ausgedient

07.07.1995

Mit den vom Client aus konzipierten GUI-Buildern allein laesst sich der Bedarf eines grossen Anwenderbetriebs nicht decken. Fuer unternehmensweite Applikationen sind maechtigere Werkzeuge notwendig. Paul Versteeg* bricht eine Lanze fuer das vielgeschmaehte Computer-aided Software Engineering (CASE).

Fruehere IT-Schlagworte entwickeln sich spaeter nur zu oft zu Unworten. So auch CASE. Der Begriff geriet derart in Verruf, dass mancher das Kind (Software-Engineering) gleich mit dem Bade (den Tools) ausschuettete. Bestehen bleibt aber die Notwendigkeit, Software-Erstellung in einer immer komplexeren Umwelt (Corba, DCE, ODBC, Middleware, Transaktions- und Parallelverarbeitung etc.) zu unterstuetzen.

Die Urspruenge computergestuetzter Softwarehilfen reichen weit zurueck. Hochsprachen-Compiler, Editoren oder Linker gehoerten dazu. In den 70er Jahren formulierte Dijkstra die zugehoerige Methodik. Die "Strukturierte Programmierung" war der Ansatz zu einem neuen Denken in der Software-Entwicklung. Codieren mit Papier und Bleistift ist schon seit damals "mega-out".

Zugegeben, CASE war anfangs weniger Realitaet als These. Computerunterstuetztes Software-Engineering wurde damals mit Modellierung gleichgesetzt. Damit erhielt jedoch nur ein kleiner Teil der Entwickler eine Antwort auf seine Probleme.

Der CASE-Markt zerfaellt in vier Teile. Derzeit macht die modellorientierte Entwicklung nur etwa ein Fuenftel davon aus. Die reine codezentrierte Programmierung - also die Source-Erstellung - besetzt heute fast 80 Prozent des Markts, verliert jedoch an Gewicht. Noch klein, aber stetig wachsend sind die Anteile der Komponenten- oder Re-use-basierten Methoden sowie der GUI- zentrierten Werkzeuge.

Die als modellorientiert klassifizierten Werkzeuge stellen Modelle in den Vordergrund, ueberfuehren diese in ein Repository und generieren daraus den Code sowie die Dokumentation. Bei den codezentrierten Tools werden die Bewaeltigung von Masse sowie das Thema Reverse Engineering immer wichtiger. Hier sind visualisierende, auf hoeherer Ebene grafisch abstrahierende Werkzeuge gefragt. Damit OO-Komponenten - gekaufte Klassenbibliotheken oder auch selbstentwikkelte Softwareteile - sinnvoll wiederverwendbar sind, muessen sie sich mit Werkzeugen "verdrahten" lassen.

Eine moderne CASE-Umgebung sollte zudem Tools anderer Hersteller, etwa GUI-Builder, integrieren koennen. Ein weiterer wichtiger und bislang oft unberuecksichtigter Faktor ist das Management von Entwicklung und Wartung bestehender Programmkomplexe.

Als wenig hilfreich erwiesen sich die Marketing-Parolen, die bei geringer Muehe hohe Leistung versprachen - das Computer-aided Schlaraffenland. Um so groesser waren die Enttaeuschung der Anwender und als Folge die Zurueckhaltung gegenueber CASE.

Computergestuetzte Hilfen lassen sich nur dann effektiv einsetzen, wenn eine Reihe von technischen und unternehmenspolitischen Faktoren erfuellt sind. Beispielsweise erfordert die Entscheidung fuer CASE in erster Linie die Bereitschaft zur Investition in die Mitarbeiter.

Zudem muss sich die Softwarephilosophie des betreffenden Unternehmens aendern. Anders als bisher sollte der Wettbewerbsfaktor Software als eine Form des Eigenkapitals betrachtet werden, das sich eigentlich auch in den Bilanzen bewerten lassen muesste.

Auf diese Weise koennte auch der jetzige, aus der Not heraus geborene Trend zur Standardanwendung wieder kippen, denn Loesungen von der Stange verschaffen dem Anwender und seinen Produkten keine Alleinstellungsmerkmale. Qualitativ gute Software schnell und flexibel zu erzeugen ist jedoch nur mit CASE-Werkzeugen moeglich. Aber deren Anbieter sollten sich darueber im klaren sein, dass sie nicht mehr nur Produkte verkaufen koennen, sondern auch Know-how vermitteln muessen: Education statt Training.

Durch die schnelle Verbreitung von Client-Server-Architekturen und objektorientierten Methoden haben sich die Anforderungen von seiten der Anwender erhoeht. Zum Problem des Entwicklungs-Gap gesellen sich nun die ueberbordende Groesse der Programme und die immer schwerer handhabbare Komplexitaet. Nur mit geeigneten Werkzeugen lassen sich die vielschichtigen Technologien und die Architektur neuer Anwendungen ohne allzugrossen Aufwand beherrschen. CASE ist heute notwendiger denn je.

Wer das leugnet, verkennt die Zeichen der Zeit. Gefordert sind Offenheit, Skalierbarkeit, paralleles Entwickeln in auch geografisch verteilten, grossen Teams, heterogene Loesungen, Wartbarkeit, Flexibilitaet und Produktivitaet. In der Vergangenheit war das Methodenangebot oft zu einseitig. Ausserdem enthielt es kaum offene Interfaces fuer ergaenzende Produkte von Drittherstellern; niemand kann alles - von GUIs ueber Codegenerierung bis Dokumenten-Management - allein machen.

Die gleichen Schwierigkeiten haben auch die Anbieter von Datenbanken (DB) mit ihren drumherum konstruierten, meist proprietaeren Tools. Die Entwicklungen sind nicht portierbar oder lassen sich schlecht durch andere Produkte ergaenzen. Ein weiterer Negativpunkt ist, dass diese Werkzeuge nur fuer DB-Applikationen, nicht aber fuer eine allgemeine Entwicklung brauchbar sind.

Aehnlich verhalten sich die fuer begrenzte Zwecke geeigneten, doch nicht beliebig skalierbaren 4GL-Sprachen. Ihr Einsatz gleicht einer Ehe: Scheiden tut weh. Nur Standardprogrammiersprachen von C und C++ ueber Ada bis Cobol versprechen Unabhaengigkeit.

Modellierung ist heute wichtiger und weiter verbreitet als vor 20 Jahren - schon bei der strukturierten Vorgehensweise, viel mehr noch beim Umgang mit Objekten. Der Bedarf fuer Softwarewerkzeuge explodiert hier geradezu. Allerdings haben sich die Schwerpunkte verschoben. Im kommerziellen Bereich konzentrieren sie sich auf die Generierung verteilter C/S-Applikationen. Herkoemmliche 3GL- Sprachen sind hier allerdings ebenso vertreten wie die unterschiedlichen OO-Methoden.

Auch auf Anwenderseite aenderte sich das Denken: Mit eher fuer Clients tauglichen GUI-Buildern allein ist es nicht getan. CASE- Tools eignen sich einfach besser fuer die Modellierung komplexer Prozesse, und sie decken bis zur automatischen Codegenerierung das ganze Entwicklungsspektrum ab.

Vor allem im C/S-Markt sind skalierbare Werkzeuge und die Unterstuetzung grosser Entwicklerteams wichtige Bestandteile einer Entwicklungsloesung. Geeignete Software-Architekturen ermoeglichen einen breiten Einsatz unterschiedlicher Middleware sowie Komponenten und damit eine optimale Unterstuetzung der verschiedenen Anwendungsbereiche - von Personal bis Enterprise.