papierZumVortrag - bib International College

Werbung
MODERNE
SOFTWARE-ARCHITEKTUREN
IN DER ANWENDUNGSENTWICKLUNG
E R FA H R U N G E N
UND
E I N S C H ÄT Z U N G E N
AU S D E R
PROJEKTPRAXIS
Dr. Michael Löwe
Euroforum Konferenz Softwareentwicklung
München, Mai 2000
EINLEITUNG
Die Anforderungen an die Abteilungen zur Anwendungsentwicklung haben sich in den vergangenen Jahren stark
gewandelt. Die Erstellung individueller, auf das einzelne
Unternehmen zugeschnittener und optimierter Funktionen
nimmt ab. Statt dessen wird die Integration am Markt
angebotener fachlicher wie technischer Standardlösungen
gefordert.
Der Zugang zu den Anwendungen über das Internet, die
Integration der Individual-Software in eine Plattform zur
Bürokommunikation, der Anschluß eigener Komponenten
an eine Standardlösung für die Buchhaltung oder zum
Dokumenten- und Workflowmanagement, die Nutzung
von Office-Systemen auch aus den Anwendungen heraus,
der standardisierte elektronische Datenaustausch mit
fremden Unternehmen sind Beispiele für aktuelle Anforderungen an die Anwendungsentwicklung. Diesen Anforderungen erzwingen den Wandel von einer geschlossenen, stark spezialisierten, individuellen Richtlinien folgenden Systemlandschaft hin zu einer offenen, flexiblen,
internationalen Standards folgenden Infrastruktur.
Viele Unternehmen sind derzeit dabei, solche Infrastrukturen aufzubauen. Entscheidend für den langfristigen
Erfolg dieser Bemühungen ist die Wahl der richtigen
technischen und fachlichen Architektur für diese Infrastruktur. Die richtige Architektur erlaubt den schnellen
und unkomplizierten Austausch einzelner Bausteine, ohne
das gesamte Gebäude kostspielig komplett einreißen oder
umbauen zu müssen. Leider sind derzeit zur Wahl der
richtigen Architektur keine Patentrezepte auf dem Markt.
Und die Schnelligkeit der Entwicklung im DV-Bereich
nimmt weiter zu. Beispiele sind die raschen Fortschritte
des CORBA-Standards, die rasante Entwicklung und
Verbreitung der Technologie rund um Java oder die
schnelle Etablierung des XML-Standards. Nur mit einer
stabilen Architektur wird man zukünftig in der Lage sein,
dieser Geschwindigkeit zu folgen und sie zum Nutzen des
eigenen Unternehmen umzusetzen.
Ein großes deutsches Versicherungsunternehmen hat in
den vergangenen 4 Jahren den Aufbau einer solchen Ar-
chitektur auf der Basis objektorientierter Technologien
vorangetrieben. Daran war der Autor maßgeblich beteiligt. Auf der Grundlage dieser praktischen Projekterfahrungen beschreiben wir in diesem Papier die Bedeutung
der Architektur in einer modernen Anwendungslandschaft, erläutern die verschiedenen Ebenen der fachlichen
und technischen Architektur, diskutieren zentrale Probleme und Lösungsmöglichkeiten sowohl im Bereich der
fachlichen als auch der technischen Systemarchitektur
und resümieren den derzeitigen Stand-der-Kunst.
ZUR BEDEUTUNG DER ARCHITEKTUR
Die Rahmenbedingungen zur Entwicklung von Anwendungssystemen sind schon immer durch Software- und
Systemarchitekturen bestimmt worden. Allerdings waren
die Spielräume bis vor ein paar Jahren relativ eng. So
sahen z. B. alle klassischen Archtiketuren auf zentralen
Großrechner („Fat Server“) ähnlich aus, vgl. Abbildung 1.
Abbildung 1: Architektur "klassisch"
Sie waren wesentlich durch die Hardware- und Betriebsarchitektur des Großrechnersystems selbst geprägt.
Die Anwendungsentwicklung bewegte sich „zwischen“
eingesetzter Datenbank und Transaktionsmonitor.
Zur Kapselung dieser Systemteile wurden i.d.R. Programmschichten zum Zugriff auf die Datenbank und den
Transaktionsmonitor eingezogen, um so eine homogene
Entwicklungsumgebung in einer Programmiersprache
(i.d.R. Cobol) zu erhalten. Sämtliche weitere Architektur-
überlegungen betrafen dann „nur noch“ die funktionale
Zerlegung der Programme.
Die einzige praktikable Alternative zum zentralen Großrechner stellten bis vor kurzem die klassische Client/Server-Architektur dar, vgl. Abbildung 2.
Abbildung 2: Architektur "der Moderne"
Diese auch unter der Bezeichnung „Fat client“ bekannte
Architektur ersetzen das Terminal am Arbeitsplatz durch
einen PC. Dadurch sind graphische Oberflächen und die
Einbindung anderer PC-Standardsoftware möglich. Die
Server sind in diesem Szenario i.d.R. Datenbank-Server
und nur zu einem kleineren Teil Funktionsserver, wenn
die Transaktionen von „Legacy Systems“ eingebunden
werden. Anwendungsentwicklung spielt sich in hier fast
ausschließlich auf und für den Klienten ab.
Architektur ist hauptsächlich durch die Anstrengung bestimmt, die DBMS- und TM-Klienten sowie die Betriebssystemteile zur Oberflächengestaltung auf dem PC zu
kapseln und so wiederum zu einer Anwendungsentwicklung zu kommen, die sich in einem homogenen „Framework“ bewegt. Solche Frameworks werden entweder
durch die eingesetzten Entwicklungswerkzeuge, z.B.
durch Smalltalk-Systeme, oder durch marktgängige Standardbibliotheken bereitgestellt. Sämtliche weitergehenden
Architekturfragen sind in diesem Szenario „nur noch“
Fragen der Programm-Modularisierung.
Insofern unterscheidet sich die klassische Client/ServerArchitektur im Groben nur unwesentlich vom MainframeComputing. Die Offenheit und Flexibilität der Client/Server-Architektur ist allerdings wesentlich größer,
lassen sich in einer solchen Architektur doch mühelos
sämtliche Arbeitsplatzsysteme, wie Textverarbeitung,
Tabellenkalkulation oder Multimedia-Wiedergabe, und
sämtliche Client/Server-Systeme mit PC-Klienten, wie
Datenbank-, Workflow-, Dokumentenmanagement-, Bürokommunikations- und Groupware-Systeme einbinden.
Anwendungsentwicklung hatte sich also schon immer mit
Architekturfragen auseinanderzusetzen, allerdings in
relative überschaubaren und engen Grenzen. Wenige
zentrale Entscheidungen legten die Architektur komplett
fest. Diese Situation ändert sich derzeit und deswegen
kommt der Architektur in der Anwendungsentwicklung
heute eine besondere Bedeutung zu.
Die wesentlichen treibenden Faktoren für diese Veränderung sind:
1. Verteilungstechnologien. DCE, CORBA, DCOM,
Java BEANS etc. sind Verteilungstechnologien, die es
ermöglichen, kommerzielle Anwendungssysteme als
verteilte Systeme (mit voneinander komplett unabhängigen Laufzeitkomponenten) zu planen, zu entwickeln
und zu betreiben. Die hinter diesen Technologien stehenden internationalen bzw. Herstellerstandards bieten
die nötige Zukunftssicherheit für solche verteilte Architekturen.
2. Das Internet. Die Öffnung der Anwendungssysteme
für das Internet ist heute eine zentrale Anforderung an
die Anwendungsentwicklung. Die Standards des Internets bestimmen dadurch die Architekturen wesentlich
mit. Dazu gehören HTML, DHTML, XML, Scripting,
Applets, Servlets, Security-Standards und die Mechanismen des E-Business. Insbesondere erzwingt das Internet eine stringente Server-Orientierung in allen Architekturfragen, denn die Klienten sind StandardBrowser, die nur durch Scripting und Applets in engen
Grenzen1 adaptiert werden können. Die unbekannte
Anzahl der möglichen Benutzer der eigenen Anwendungen erzwingt neue Überlegungen zur Skalierbarkeit.
3. Groupware und Workflow Management. Diese
Systeme „elektrifizieren“ jeden Arbeitsplatz im Unternehmen. Unternehmensorganisation, Zusammenarbeit
und Managementprozesse sind Ziel dieser Systeme.
Durch ihre Integration in eine Anwendungslandschaft
verliert die DV den reinen Werkzeugcharakter. Die
Formalisierung der Aufbau- und Ablauforganisation,
die der Einsatz solcher Systeme voraussetzt, stellt ganz
neue Anforderungen insbesondere an die fachliche Architektur der IV-Infrastruktur. Darüber hinaus haben
diese Systeme weniger den Charakter einer Komponente, die sich in eine Infrastruktur einpaßt. Sie sind vielmehr selbst die Infrastruktur, die über reichhaltige
Schnittstellen die Anbindung von anderen Systemen
ermöglichen. Aus diesem Grund spielen diese Art von
Systemen in jeder Architektur eine Sonderrolle.
4. Objekttechnologie. Diese Technologie entwickelt sich
zur Basis sämtlicher moderner Entwicklungen. Sie ist
nicht nur die Grundlage graphische Oberflächen. Objekte sind auch die Einheiten der Analyse (OOA) des
Entwurfs (OOD), der Funktionsverteilung (Objekte als
Dienste) und der Softwareverteilung (Klassen als Applets). Objekttechnologie, wo immer eingesetzt, stellt
den Entwurf in das Zentrum sämtlicher Aktivitäten. So
wird die Objektorientierte Modellierung auch die Sprache zur Beschreibung von Architekturen sein.
5. Schwächen der existierenden Architekturen. Die
klassischen Architekturen erweisen sich in vielerlei
Hinsicht als unzureichend. Die zentrale Architektur auf
einen Mainframe-Rechner ist nicht offen genug, um
langfristig neue Systeme und Technologien integrieren
zu können. Die dezentrale Architektur des klassischen
Client/Server hat wesentliche Probleme im Bereich der
Software-Verteilung und der (Betriebs-)Sicherheit. Ins1
Die derzeitige Übertragungsraten im Internet lassen die Übertragung
großer Mengen Programmcodes noch nicht zu.
besondere ist sie nicht genug „Server-zentriert“ um
langfristig den Anforderungen der Integration ins weltweite Netz gerecht zu werden.
Die Vielzahl der Einflußfaktoren auf die moderne Anwendungsentwicklung und die Vielzahl der dort jeweils
angebotenen Lösungen oder Teillösungen führt zu einer
bisher nicht gekannten Anzahl möglicher Architekturvarianten. Aber nicht alles ist mit allem sinnvoll zu kombinieren. Viele Technologien sind sogar inkompatibel oder
werden erst kompatibel gemacht.2
In dieser Situation versprechen vorgefertigte Architekturen großer Hersteller Hilfe, wie etwa der „Application
Server“ von Oracle oder „Webshere“ von IBM. Hier
werden verschiedene Technologien zu einer Architektur
zusammengeführt, die den Herausforderungen der Zukunft an die Anwendungsentwicklung standhalten soll. Es
fällt aber i. A. schwer, den Nutzen solcher Standardlösung
für den geplanten Anwendungsbereich zu beurteilen,
wenn man noch keine eigenen Überlegungen zu seiner
zukünftigen Architektur angestellt hat. 3
tes schnell überfordert sein.4 Also sind Vorkehrungen
zur Skalierbarkeit der Server durch Mehrfachinstanziierung auf verschiedenen Rechnern zu treffen. Eine dynamische Lastverteilung zwischen diesen Instanzen ist
vorzusehen.
4. „Regionalisierbarkeit“ von Klienten und Servern.
Damit die Lastverteilung selbst nicht zum Nadelöhr der
Architektur wird, muß eine Mehrfachinstanziierung der
Lastverteilung möglich sein. Dadurch können Gruppen
von Klienten durch Gruppen von Servern bedient werden.5
Zusammenfassend läßt sich sagen: Die rasante Entwicklung der Informationstechnologie eröffnet nie gekannte
technische und kommerzielle Möglichkeiten und Optionen. Aber gerade dadurch ist eine stabile und zukunftssichere Architektur von zentraler Bedeutung für jede Anwendungsentwicklung.
Abbildung 3: Aus Klienten werden Server
BEISPIELARCHITEKTUR
Viele deutsche Versicherungs- und Finanzdienstleistungsunternehmen haben in den letzten Jahren einige
Systeme mit objektorientierter Technologie in der FatClient-Architektur entwickelt. Die neuen Anforderungen
(s.o.) machen einen Neuentwurf der Architektur mit einer
stärkeren Orientierung auf Server-basierte Dienste nötig.
Dabei kann die vorhandene Zerlegung der Systeme in
Programmkomponenten das Schema der DiensteArchitektur abgeben. Folgende Probleme müssen dabei
gelöst werden:
1. Multi-User-Fähigkeit. Sämtliche Programmkomponenten sind auf einen Benutzer (Thread-of-Control)
ausgerichtet. Als Server müssen sie mehreren Klienten
Dienste erbringen können.
2. Asynchrone Einbindung. Die Klienten dieser Server
sollten nicht blockieren, solange sie auf die Diensteerbringung warten. Denn ggf. sind sie in einer Serverzentrierten Architektur selber Server für andere Kunden, die in der Wartezeit für einen Kunden Sinnvolles
für andere Kunden tun können.
3. Skalierbarkeit. Wenn viele Klienten gleichzeitig einen
Dienst benötigen, kann eine einzelne Instanz des Diens-
Die von uns gewählte Architektur, die diese Probleme
löst, ist in Abbildung 3 dargestellt. Die Abbildung zeigt
wie aus Einzelplatzdiensten zur Funktionsberechnung mit
Excel selbständige multi-user-fähige Dienste werden,
ohne daß der Code der Komponente selbst geändert werden muß:6 Die Komponenten „Funktionsklient“ und
„Funktionsdienst“ sind durch eine einfache Client/ServerZerlegung aus dem Originalcode des Fat-Client-Systems
gewonnen worden. Die OLE-Einbindung von Excel über
eine COTS-Komponente7 „OLE-Access“ für Smalltalk
konnte 1:1 übernommen werden. Multi-user-Fähigkeit
erreichen wir durch einen selbst entwickelten Warteschlangenmechanismus (Message Queueing), der die
eingehenden Nachfragen nach Funktionsberechnung
serialisiert. Der Funktionsklient ist entsprechend um einen
Mechanismus zur Erstellung und Versendung eines Funktionsaufrufs (Message Sending) erweitert worden. 8 Die
Kommunikation dieser beiden Komponenten über das
Netz wird mit Hilfe eines kommerziellen CORBA Orb’s
ermöglicht.
4
In einer Fat-Client-Architektur steht für einen Benutzer ein leistungsfähiger Arbeitsplatzrechner exklusiv zur Verfügung. Performanzprobleme auf diesen Rechnern für einen Benutzer gibt es heute kaum noch.
5
Dabei muß es egal sein, ob die Klienten- und Servergruppen disjunkt
sind oder nicht.
6
2
Ein Beispiel ist IIOP, ein Protokoll, das CORBA-Systeme verschiedener Anbieter interoperabel macht. Einige Hersteller sind schon dabei,
XML zum Austauschformat für Object Request Broker zu machen.
3
Es ist dann ebenfalls kaum möglich zu beurteilen, ob ggf. nicht integrierte oder integrierbare Technologiekomponenten für den eigenen
Bereich wirklich verzichtbar sind.
Zur Berechnung von Tarifen und anderer komplizierter Funktionen
haben wir in unsere Systeme Excel als Funktionsdienst über OLE eingebunden. Dadurch können die Fachabteilungen selbst Funktionen definieren, auf einem zentralen Server versioniert ablegen und über definierte
Prozesse in die Anwendungen einbinden.
7
COTS = Customer-of-the-shelves.
8
Das Format der Nachrichten ist in der IDL von CORBA beschrieben.
Die Messaging-Komponenten sind so gestaltet, daß Funktionsaufruf und Rückgabe des Ergebnisses asynchron
sind. Das bedeutet, daß der Funktionsklient nicht bis zur
Rückgabe des Ergebnisses blockiert und insbesondere in
der Wartezeit weitere Funktionsaufrufe absetzen kann.
 Einen Statistikdienst zur Aktualisierung der statistischen Daten bei Bestandsänderungen.
Skalierbarkeit erhalten wir dadurch, daß sich mehrere
Funktionsdienste unter einer Lastverteilung (Load Balancing) konfigurieren lassen.9 Die Lastverteilung selbst
benimmt sich den Klienten gegenüber wie ein einzelner
Funktionsdienst, verteilt jedoch den Funktionsaufruf an
den aktuell schnellsten Funktionsdienst. 10 Der Funktionsdienst liefert das Ergebnis selbst an den Klienten und
informiert den Lastverteiler über die Dauer der Berechnung. Damit aktualisiert der Lastverteiler sein statistisches Leistungsprofil zu den Funktionsdiensten.
Wie diese Architekturbeispiele zeigen, sind relativ komplizierte Mechanismen und die Beherrschung eine Reihe
von Technologien nötig, um den aktuellen Herausforderungen gerecht zu werden. Zudem sind eine Vielzahl von
Alternativen in jedem Detail möglich. Hier sind einige
Beispiele:
Im Dienst zur Lastverteilung konnten dieselben Komponenten zur Nachrichtenvermittlung wiederverwendet
werden wie im Funktionsdienst.
Mit den Mitteln von CORBA ist es möglich, mehrere
Lastverteilungsdienste zu starten und so zu einer „Regionalisierung“ der Klienten und Server zu kommen.11 Das
ist insbesondere dann nötig, wenn die Lastverteilung
selbst bei einer sehr großen Anzahl von Klienten und
Servern zum Nadelöhr der Architektur wird.
Alle Komponenten in dieser Systemarchitektur sind wiederverwendbar. So werden wir auf dieselbe Weise weitere
Programmkomponenten zu Diensten umbauen, u. a.:
 Einen Persistenzdienst zur Speicherung von Objekten
in relationalen Datenbanken.
 Einen Transaktionsdienst zur Verwaltung langer Transaktionen.
 Einen Sperrendienst zur Verwaltung pessimistischer
und optimistischer Synchronisationsmechanismen.
 Einen Benutzer- und Rechtedienst zur Prüfung der
Bearbeitungsrechte.
 Eine Textkomposition zur Erzeugung, Drucken, Archivieren und Versenden von RTF-Dateien aus sogenannten Steuerdateien, i.e. Textbausteinlisten mit Variablenbelegungen.
 Einen Auftragsdienst zur Erstellung und Zustellung von
Aufträgen im existierenden Workflow-System.
 Einen Abrechnungsdienst zum Erzeugen und Verbuchen von Beitragsrechnungen.
 Einen Führungs- und Beteiligungsdienst zum Erzeugen
und Abrechnen von Abrechnungen in Versicherungskonsortien.
9
Es ist möglich, weitere Funktionsdienste hochzufahren und in eine
Lastverteilung einzubringen, während das System läuft. Auch das Herunterfahren ist zur Laufzeit möglich.
10
In einem Szenario mit mehreren Funktionsdiensten können die Berechnungen für einen Klienten wesentlich schneller werden als in der
Fat-Client-Version, wenn dieser viele unabhängige Funktionsaufrufe
absetzt, deren Abarbeitung durch die Lastverteilung parallelisiert wird.
11
Ein Funktionsdienst kann so konfiguriert werden, daß er einem oder
mehreren Lastverteilern zur Verfügung steht.
Wir werden so schrittweise die gesamte KomponentenZerlegung unserer Programme in eine Dienstestruktur
umbauen.
 CORBA wird hier im wesentlichen zur Kommunikation
eingesetzt. Dazu lassen sich natürlich auch RMI oder
RPC’s pur verwenden.
 Das Thema Lastverteilung könnte durch Einbindung
eines kommerziellen Transaktionsdienstes für CORBA
angegangen werden.
 Die Nachrichtendienste könnten auch durch marktgängige Produkte ersetzt werden.
 Das Thema Persistenz kann durch die Einbindung einer
objektorientierten Datenbank erledigt werden.
Welche Entscheidungen im Einzelfall getroffen werden,
hängt ganz wesentlich von (1) der Gesamtschau auf die
zukünftige Systemlandschaft des jeweiligen Anwenders
(Architektur), (2) den Wünschen zur Integration von
Altanwendungen und (3) dem vorhandenen und herstellbaren Know-how in der Entwicklung ab.
Im Rest dieses Papiers schildern wir unsere Erfahrungen
und Ergebnisse zu diesen Themen und arbeiten die hauptsächlichen Fragestellungen heraus, die beim Aufbau einer
neuen Architektur beachtet werden müssen.
ARCHITEKTUREBENEN
Die oben dargestellte
Beispielarchitektur löst
vorrangig systemtechnische Probleme, wie
Mehrbenutzerfähigkeit,
Verteilung und Skalierbarkeit. Wir bezeichnen
sie deshalb als Systemarchitektur.
Davon
lassen sich Architekturen auf anderen Ebenen
unterscheiden,
vgl.
Abbildung 4: Architekturebenen
Abbildung 4. In diesem
Abschnitt wollen wir
alle Arten von Architekturen kurz charakterisieren und
von einander abgrenzen.
Die Technische Architektur beschreibt die Prinzipien und
Regeln, wie im Unternehmen Rechensysteme und Netze
sowie die grundlegenden Betriebs- und Kommunikationsmittel, auf denen die Anwendungsentwicklung und die
Produktion beruhen, aufgebaut sind und eingesetzt werden. Neben der reinen Hardware umfaßt diese Architektur
auch die eingesetzten Betriebssysteme, Datenbanksysteme, Netzprotokolle, Sicherheitsmechanismen, Verteilungs- und Kommunikationsplattformen sowie Verfahren
zur Softwareinstallation und -freigabe.
Die Systemarchitektur beschreibt die Prinzipien und Regeln, mit denen im Unternehmen systemtechnische Fragestellungen gelöst werden. Dazu gehören u. a.: Technisches Objektmodell, Verteilung, Persistenz, Transaktionssicherheit, Sperren, Nachrichten, Ereignisbehandlung,
Skalierbarkeit, Mehrbenutzerbetrieb, Rechteverwaltung,
Druck, Versand, Lastverteilung, Arbeitsverteilung, Lange
Transaktionen, Prozessmanagement, Fehlerbehandlung,
technische Datenformate (wie etwa XML oder RTF).
Die Anwendungsarchitektur beschreibt die Prinzipien und
Regeln, mit denen grundsätzliche fachliche Fragestellungen in den Anwendungssystemen gelöst werden. Dazu
gehören u. a.: Fachliches Objekt- oder Datenmodell, Zeitreihen und Versionsmanagement, Produktsteuerung, fachlich begründete Anwendungskomponenten, fachliche
Schnittstellen zwischen den Komponenten, Trennung der
Management- von der Ressourcenebene, Koordination
und Kooperation innerhalb des Unternehmens, Koordination und Kooperation mit anderen Unternehmen, fachliche Standards (wie etwa genormte fachliche Datenformate, z. B. das GDV-Format der Deutschen Versicherungswirtschaft).
Die Fachliche Architektur beschreibt die Geschäftsregeln,
Standards und Prinzipien des Aufbaus und der Abläufe in
einem Unternehmen, ohne Beschränkungen der konkret
eingesetzten Technik zu berücksichtigen (Annahme Idealer Technik).
Wie wir bereits in Abbildung 4 angedeutet haben, sind die
Architekturen auf den unterschiedlichen Ebenen nicht
unabhängig. Von oben nach unten definieren sie die Anforderungen und Probleme, die auf der nächst niedrigeren
Ebene gelöst werden müssen. Und umgekehrt definieren
sie von unten nach oben die Angebote, die auf der nächst
höheren Ebene genutzt werden können.
Ein stringentes „Top-down“-Szenarion sieht etwa so aus:
Die fachliche Architektur definiert durch eine WorkflowAnalyse sämtliche Prozesse so detailliert, daß eine Entscheidung möglich ist, welche Aktivitäten in den Geschäftsprozessen wie durch klar umrissene „Use-Cases“12
mit DV unterstützt werden können.
Die Anwendungsarchitektur wird durch eine objektorientierte Analyse (OOA) aus diesen „Use cases“ gewonnen.
Dazu wird ermittelt, welche „Use Cases“ gemeinsame
Objektstrukturen bearbeiten. Das führt zu einem fachlichen Objektmodell, zu einer Zusammenfassung der „Use
cases“ um gemeinsame Objekte zu fachlichen Komponenten und über die Beschreibung der Objektinteraktionen zu
einer Festlegung der fachlichen Schnittstellen. Neben
dieser qualitativen Beschreibung werden die Anforderungen nach Durchsatz und Sicherheit aus einer Betrachtung
der Häufigkeit der einzelnen „Use Cases“ gewonnen.
12
Im Sinne der UML (Unified Modelling Language)
Auf der Grundlage der Anwendungsarchitektur folgt die
Konzeption der Systemarchitektur, die nötig ist, um die
geforderten „Use Cases“ in der geforderten Menge und
Sicherheit abwickeln zu können. Das Ergebnis ist eine
Systemarchitektur, wie sie in Auszügen im Abschnitt
Beispielarchitektur beschrieben ist. Das fertige SoftwareSystem entsteht, wenn die einzelnen Anwendungskomponenten in der Systemarchitektur realisiert werden.
Das System wird schließlich auf einer HardwareLandschaft in Produktion gebracht, deren Technische
Architektur und Merkmale sich aus den qualitativen und
quantitativen Anforderungen der Systemarchitektur ergeben.
In der Praxis ist diese Vorgehensweise nicht möglich.
Denn heute ist ein Neubeginn „auf der grünen Wiese“
nicht praktikabel. Dazu sind zu viele Systeme bereits im
Einsatz und eine vollständige Migration in eine neue
Architektur in kurzer Zeit aus Kostengründen nicht
machbar. Deswegen finden in den Betrieben viele Veränderungen „Bottom-up“ statt: Neue, schnellere und preiswertere Rechentechnik wird eingesetzt, wo immer möglich. Um die neuen Optionen dieser Technik zu nutzen,
sucht man nach Systemarchitekturen, in denen die alten
Systeme und Neuentwicklungen koexistieren können.
Hier bekommt die Systemarchitektur einen besonders
hohen Stellenwert, Fragen der Anwendungsarchitektur
werden zurückgestellt, geht es doch um den Einsatz bereits vorhandener Anwendungen. Auf der fachlichen
Ebene wird nichts verändert.
Wir denken, daß langfristig weder der „Top-down“- noch
der „Bottom-up“-Ansatz Früchte tragen kann. Gegen den
ersten spricht die zu schnelle Entwicklung der Technologie. Gegen den zweiten sprechen die Altanwendungen,
die auch nach dem zweiten und dritten technischen „Face
Lifting“ ihr Alter und ihre Mängel nicht verbergen können.
Wir schlagen eine Art „inside-out“-Vorgehen vor. Durch
neue Systemarchitekturen müssen konsequent die fachlichen Architekturmängel der Anwendungen beseitigt werden und durch neue Überlegungen zur Anwendungsarchitektur müssen die existierenden Defizite in der Systemtechnik aufgezeigt und beseitigt werden. Dadurch erhält
man die gewünschten neuen Handlungs- und Entwicklungsmöglichkeit sowohl auf der fachlichen Seite als auch
bei der Erneuerung der Rechentechnik.
Ins Zentrum der Entwicklung sollte also die Erneuerung
der gesamten Software-Architektur gestellt werden. Unter
diesem Begriff fassen wir die Anwendungs- und die Systemarchitektur zusammen. Einige der Hauptprobleme, die
dabei zu lösen sind, diskutieren wir in den folgenden
beiden Abschnitten.
ANWENDUNGSARCHITEKTUR
Der Definition der richtigen Anwendungen in der richtigen Architektur kommt heute besondere Bedeutung zu.
Denn der Bedarf nach Integration der einzelnen Anwendungen zu einer Plattform „aus einem Guß“, auf der sämtliche Geschäftsprozesse einheitlich und ohne Brüche
abgewickelt werden können, steigt weiter an. 13
Abbildung 5 zeigt das Schema einer solchen Anwendungsarchitektur am Beispiel einer Versicherungsanwendung.
Hier wollen wir anhand von Beispielen einige Themen
diskutieren, die besondere Einfluß auf die Gestaltung der
Anwendungsarchitektur insgesamt haben:
(1) Erweiterbarkeit.
(2) Integration von Standardlösungen und „Legacy Systems“.
(3) Integration in Standardlösungen.
(4) E-Business.
Abbildung 5: Produktzentrierte Anwendungsarchitektur
(1) Erweiterbarkeit. Moderne Anwendungen sollen
flexibler werden. Möglichst ohne Programmieraufwand
sollen neue Produkte in den Systemen zur Verarbeitung
bereitgestellt werden können.14 Dafür reichen die klassischen Mittel der Anpassung über Einstellungen in Tabellen15 nicht mehr.
Im Zentrum steht das Paar Produkt/Vertrag. Die Beziehung zwischen diesen beiden Objekten entspricht einer
Klasse/Instanz-Beziehung aus der objektorientierten Modellierung. Das Produkt definiert den Aufbau und das
Verhalten jedes als Instanz dieses Produkts ausgefertigten
Vertrages.
Ein Höchstmaß an Flexibilität wird erreicht, wenn das
Objektmodell, daß den Anwendungen zugrunde liegt, zur
direkten Manipulation offengelegt wird. In zukünftigen
produktgetriebenen Systemen wird das der Fall sein. Die
Fachabteilungen können dann selbst die Attribut- und
Aggregationsstruktur der Objekte definieren, Spezialisierungshierarchien aufbauen und verändern, eigenständig
Funktionen (über Excel, s.o.) definieren und integrieren
sowie den Anschluß sämtlicher weiter verarbeitender
Systeme konfigurieren. Eine solche Konzeption hat weitreichende Konsequenzen für die Anwendungsarchitektur:
Große Teile des Verhaltens eines Vertrages werden durch
seine „Nachverarbeitung“ in den umliegenden Systemen,
wie etwa „Schadenbearbeitung“ oder „Statistik“ bestimmt. Damit auch hier die Produktsteuerung zum Tragen kommt, haben wir die Anbindung dieser Systeme
über das „Model/View-Pattern“ konzipiert. Produkt/Vertrag ist das Modell, daß aus verschieden Sichten
(View) betrachtet und weiterverarbeitet wird: Z. B. legt
das Produkt fest, wie das Prozeßschema zur „vorläufigen
Deckungszusage (klassisch die Doppelkarte in der Autoversicherung)“ aussieht und zwar unter Nutzung einer
Definitionskomponente für Prozesse aus dem WorkflowSystem. Sobald ein Vertrag angelegt wird, muß die Workflow-Komponente für die entsprechende Abwicklung des
Prozesses sorgen. Das Klasse/Instanz-Muster auf der
Modellseite spiegelt sich im „Process View“ über das
Klasse/Instanz-Paar „Prozeßschema/Prozeß“ wieder.
 Neue DV-gestützte Arbeitsplätze zur Objekt- und Produktentwicklung entstehen in den Fachabteilungen.
 Dadurch entstehen neue Geschäftsprozesse und Organisationsstrukturen.
 Alle vorhandenen Systeme müssen an die neue Flexibilität angepaßt werden.
 Durch den generischen Ansatz stecken die Fachlichen
Aspekte nicht mehr in den Systemen, sondern werden
erst durch die fachlichen Objekte und ihr Verhalten auf
der Systemplattform definiert.
Abbildung 6 zeigt das grundsätzliche Muster, wie in einer
weitgehend produktgetriebenen Anwendungsarchitektur
externe Komponenten und Systeme eingebunden werden.
 Typische Prozesse der Software-Entwicklung, wie Test,
Freigabe und Release-Management von neuen Versionen müssen unterstützt werden.
13
Es gibt wenig vorgefertigte Branchenlösungen. Vorstücke wie etwa
die Versicherungsanwendungsarchitektur VAA des Gesamtverbandes
der Deutschen Versicherungswirtschaft GDV werden auf der Ebene der
Fachlichen Architektur konkret, bleiben aber auf den unteren Ebenen
sehr skizzenhaft. Eine durchgängige Anwendungsarchitektur, in der z.
B. DV-Komponenten unterschiedlicher Hersteller als Lösung unterschiedlicher fachlicher Fragestellungen problemlos kombiniert und
integriert werden können, ist uns nicht bekannt.
14
Insbesondere dort, wo Produkte immateriell sind, z. B. bei Banken
und Versicherungen, nimmt diese Anforderung zu.
15
Tabellensteuerung wie wir sie in vielen Standardlösungen finden.
Abbildung 6: Architektureinfluß auf die Komponenten
Sie zeigt die Kombination des Klasse/Instanz-Musters mit
dem „Model/View-Pattern“, die zur durchgängigen Funktionsfähigkeit der Produktsteuerung im gesamten DVSystem durchgehalten werden muß. Es wird deutlich, daß
diese fachlich begründete Architekturentscheidung weitreichende Konsequenzen z. B. bei der Auswahl der einzusetzenden Workflow-Komponente oder bei der Art und
Weise wie „Legacy Systems“ „angeschlossen“ werden,
hat.
(2) Integration von Standardlösungen und „Legacy
Systems“. Die grundlegenden Entscheidungen zur Anwendungsarchitektur, wie z. B. im vorangegangenen
Abschnitt beschrieben, müssen bereits festliegen, wenn
man die Integration von „Fremdsystemen“ konzipiert.
(Unter dem Begriff „Fremdsysteme“ fassen wir Standardlösungen und „Legacy Systems“ zusammen, da sie sich
im Verhältnis zu einer Anwendungsarchitektur ähnlich
verhalten). Nur dann läßt sich entscheiden, ob die angebotenen Schnittstellen und Zugänge fachlich ausreichen oder
adaptiert werden können.
Wenn Daten mit den Fremdsystemen ausgetauscht werden sollen, empfiehlt es sich, das dafür zu verwendende
Typsystem16 unternehmensweit festzulegen. Denn Fremdsysteme bringen hier häufig unerwartete Beschränkungen
mit sich. Hier einige Beispiele:
 Ganze Zahlen in Excel sind nur 15 Stellen genau. Für
Währungsangaben reicht das nicht immer aus.
 Währungsfelder in „Legacy Systems“ sind häufig aus
Platzmangel in Tausend Währungseinheiten angegeben.
Rechnungen mit solchen Feldern führen schnell zu Ungenauigkeiten.
 Datumsformate sind in den verschiedenen Systemen
i.d.R. verschieden und bedürfen der Konvertierung
beim Transfer.
Im Falle von Legacy-Anwendungen empfiehlt sich unseres Erachtens nur die Client/Server-Zerlegung17 des Systems, die unveränderte Verwendung des Server-Teils und
die Entwicklung eines neuen graphischen Clienten im
Rahmen der anwendungsübergreifenden Oberflächenphilosophie.
Standardlösungen sind dann unproblematisch, wenn ihre
Oberflächen nur für den Definitionsteil an wenigen Arbeitsplätzen nötig sind, vgl. Abbildung 6. So kann z. B.
der Applikationsteil von Excel, i.e. die eigentliche Nutzung der definierten Funktionen, ohne sichtbare Oberfläche eingebunden werden.
(3) Integration in Standardlösungen. Bestimmte Standardsysteme sind weniger Komponenten, sondern selbst
Architekturen. Dazu gehören Workflow-ManagementSysteme, Groupware-Systeme und manche Standardanwendungssysteme wie SAP R/3. Mit diesen Systemen
importiert man eine Architektur, in die man seine Anwendungen integrieren kann. Gemeinsames Merkmal
dieser Systeme ist die hohe Erweiterbarkeit bis hin zu
einer eigenen Programmiersprache und Programmierumgebung, mit der sich eigene Komponenten realisieren und
integrieren lassen.
Der Griff zu solchen vorfabrizierten Architekturen entlastet von manch eigener Anstrengung. Bedeutet aber auch
das Einlassen auf die Architekturvorstellungen eines
Herstellers. Die Adäquatheit dieser Architekturen für die
eigenen Belange kann man z. B. dadurch prüfen, ob sich
die oben skizzierte produktgetriebene Philosophie mit der
Standardlösung umsetzen läßt.
Die Integration der Benutzeroberflächen von Fremdsystemen mit den Oberflächen der eigenen Systeme stellt ein
weiteres Problem dar, daß im Rahmen der Anwendungsarchitektur gelöst werden muß. Medienbrüche, z. B. Maskenemulationen der Altanwendungen neben wirklichen
Graphischen Oberflächen der neuen Anwendungen, sind
zu vermeiden.
(4) E-Business. Der Einfluß von E-Business auf die Anwendungsarchitektur ist eher gering, obwohl das Thema
derzeit einer der Motoren bei der Umgestaltung der Anwendungslandschaften ist. Modern aufgestellte Unternehmen mit einer offenen, Server-orientierten, hoch skalierbaren Systemarchitektur, haben wenig Schwierigkeiten ihre Systeme in das weltweite elektronische Geschäft
einzubinden.
Auch hier verhalten sich „Legacy Systems“ und Standardlösungen ähnlich. Reine GUI-fizierungen der Masken von
Altsystemen unter Windows bringen meist nicht die gewünschte Integration in ein Gesamtkonzept. Aber auch
die Philosophie bestimmter Standardlösungen wie etwa
die Oberflächen älterer Lotus Notes Versionen sind unter
Windows sehr gewöhnungsbedürftig.
Auf der fachlichen Seite bedeutet E-Business zum einen
erhöhte Anforderungen an die Einfachheit der angebotenen Produkte sowie die Klarheit und Attraktivität der
Darstellung dieser Produkte an der Oberfläche. Denn der
Kunde selbst bedient die Systeme und kann nicht auf die
Hilfe eines kompetenten Sachbearbeiters zurückgreifen.
16
In unserer Architektur haben wir z. B. als Basistypen Text (unbegrenzt
in RTF), String (255), Integer (15 Stellen), Datum/Zeit und sämtliche
Aufzählungstypen im vorhandenen Tabellenverwaltungssystem vorgesehen. Über den Basistypen lassen wir freie Konstruktionen von „Records“ und „Variants“ zu, d. h.: Rekursive Datentypen über „und“ und
„oder“. Auf der Grundlage dieses Typsystems konnten wir eine regelbasierte Standard-View-Komponente zum Transfer von Daten aus dem
Produkt/Objektmodell in die Fremdsysteme realisieren (vgl. Abbildung
6). Einzige Voraussetzung dafür ist, daß sich die an der Schnittstelle zu
einem Fremdsystem erwarteten Datenformate im Typsystem darstellen
lassen. Dazu lassen sich für jedes Fremdsystem spezifische „Wrapper“
schreiben, die die nötigen Anpassungen und Konvertierungen vornehmen.
Im Bereich der Unternehmensvernetzung erzwingt es zum
anderen, die konsequente Nutzung standardisierter Formate zum Datenaustausch und die Einhaltung unternehmensübergreifender Abläufe.
*****
Anwendungsarchitektur in dem hier verwendeten Sinn als
Zerlegung einer DV-Unterstützung in fachlich begründete
Komponenten und die Definition der fachlichen Prinzipien zum Aufbau und der Interaktion dieser Komponenten ist für viele Unternehmen ein neues Thema. Als Vorgabe zur Auswahl der richtigen Systemarchitektur – so
17
Separierung der Maskensteuerung von der Datenhaltung und Anwendungslogik.
hoffen wir in diesem Abschnitt deutlich gemacht zu haben
– ist die Auseinandersetzung mit diesem Thema aber
unerläßlich.
SYSTEMARCHITEKTUR
Wie wir oben bereits dargestellt haben, entwickeln sich
die Systemarchitekturen derzeit weg von „Fat-server“und „Fat-Client“-Lösungen hin zu Plattformen für verteilte Dienste.
Aus der Vielzahl der möglichen Wege zu einer solchen
Plattform, haben wir einen ausgewählt, der mit wenigen
kommerziellen Produkten18 auskommt und zu dem unsere
eigenen Lösungen optimal passen.
Vor dem Hintergrund der Erfahrungen, die wir bei der
Auswahl der Produkte und beim Aufbau der Architektur
gemacht haben, wollen wir in diesem Abschnitt auf die
Themen hinweisen, die beim Aufbau einer wie auch immer gearteten Diensteplattform von zentraler Bedeutung
sind:
(1) Beherrschung der Heterogenität,
(2) Übergreifendes Transaktionsmodell,
(3) Integration von Fremdsystemen,
(4) Adäquate Anwendungsarchitektur.
(1) Beherrschung der Heterogenität. Heterogenität ist
ein zentrales Thema, mit dem man durch die neuen Architekturen konfrontiert wird. Betrachten sie z. B. das Szenario in Abbildung 7.
Unsere Lösung für dieses Problem ist die „Flucht“ auf die
Meta-Ebene. Da wir ein Objektmodell zur freien Definition von fachlichen Objekten auf der Ebene der Anwendungsarchitektur zur Verfügung stellen (siehe letzten
Abschnitt), kennen wir die konkreten Objektstrukturen im
Endsystem nicht. Wir müssen also keine konkreten Objekte in die unterschiedlichen Formate bringen, sondern
das generische Objektmodell der Anwendungsarchitektur
auf die Objekt- und Datenmodelle der verschiedenen
Systeme abbilden. Die Umwandlung der Formate ineinander haben wir als Dienste gekapselt und so für die
Anwendung transparent gemacht. Nachdem das Objektmodell der Anwendungsarchitektur fixiert war, stellte die
Vielzahl der Formate kein Problem mehr dar.19
Die Herstellung solcher Lösungen zur Vermeidung oder
Überwindung von Heterogenität nimmt einen großen Teil
der Zeit zum Aufbau von Systemarchitekturen in Anspruch, zumal dafür Sorge getragen werden muß, daß die
benötigte Performanz durch solch einen Meta-Ansatz
nicht auf der Strecke bleibt. 20
(2) Übergreifendes Transaktionsmodell. Verteilung
bedingt Koordination. Ein zentrales Thema dabei sind
Dienste-übergreifenden Transaktionen. Wenn nicht nur
Datenbankaktualisierungen sondern auch der Druck und
Versand von Dokumenten aus MS-Word, die Berechnung
abgeleiteter Daten mit Excel, die Aktualisierung von
Terminen in einer Software zur Bürokommunikation und
die Versorgung von Altsystemen in solche Transaktionen
einbezogen werden muß, sind die kommerziellen Lösungen rar.21 Um die Sicherheit der Verarbeitung genau so
wie in den „Fat-Server“- und „Fat-Client“-Architekturen
bereitzustellen, muß ein Transaktionskonzept im Rahmen
der Systemarchitektur von der Anwendungsentwicklung
selbst entworfen und eingebunden werden.
Unsere Lösung sieht asynchrone Transaktionsobjekte für
lange Transaktionen (vgl. Abbildung 8) vor, die bis an die
Oberfläche der Benutzer sichtbar sind und setzt eine vollständig historische Führung der Datenbestände voraus:
Abbildung 7: Das Dasein der Objekte
Hier sind alle Metamorphosen dargestellt, die ein fachliches Objekt in unserem Zielsystem von der Datenbank bis
zur Oberfläche durchmachen muß, bevor es dort bearbeitet werden kann. Das heißt: Die fachlichen Objekte, die in
der UML entworfen und in Visual Age for Smalltalk
(VA) realisiert sind, existieren im System aus verschiedenen technischen Gründen in mindestens 10 unterschiedlichen technischen Formaten.
Jede Änderung am Objektmodell hat im schlimmsten Fall
eine Anpassung all dieser Formate zur Folge. Der Entwicklungszyklus wird dadurch natürlich entscheidend
verlängert, das angestrebte Ziel erhöhter Flexibilität wird
konterkariert.
18
Wir benötigen einen CORBA-Orb und die Server-Komponenten des
bei uns eingesetzten Visual Age for Smalltalk.
Jede Bestandsveränderung wird im Rahmen einer offenen Transaktion zunächst in den einzelnen Diensten als
lokale (DB-)Transaktion ausgeführt und mit einer logischen Sperre (Verweis auf die Transaktion) versehen.
Offene Transaktionen werden durch ein Bearbeitungsdatum im Jahr 9999 gekennzeichnet. Dadurch sind diese
Änderungen außerhalb der Transaktion noch nicht sichtbar. Das Commit für eine Lange Transaktion geschieht
explizit durch den Benutzer. Dann werden asynchrone
alle nötigen Folgeaktivitäten in den einzelnen Diensten
veranlaßt, zunächst ebenfalls durch die offene Transaktion gesperrt und zum Schluß die logischen Sperren
19
Die Vielzahl der verschiedenen teilweise nicht kompatiblen Objektmodelle sind ein wesentlicher Hemmschuh für die weitere schnelle
Durchsetzung der Objekttechnologie.
20
Unser Beispiel macht zudem deutlich, hier ganz neue Ansprüche an
die Qualifikation und die Fähigkeiten der Anwendungsentwicklung
gestellt werden.
21
Zudem sind die Zwei-Phasen-Commit-Transaktionen, die i.d.R.
angeboten werden, nicht performant genug.
dadurch entfernt, daß das Bearbeitungsdatum der Transaktion mit dem aktuellen Datum aktualisiert wird. Solch
eine Transaktion ist geschlossen. Da alle Dienste die
Bearbeitungsdaten für ihre Bestände von denen der
Transaktionen ableiten, werden so alle Änderungen
gleichzeitig sichtbar.22
Das bedeutet, daß die Erneuerung der technischen und der
fachlichen Architekturen in der Anwendungsentwicklung
Hand in Hand vorangehen muß, damit die neue Technologie ihre Vorteile im „Business“ entfalten und ein „Business Reengineering“ technisch adäquat umgesetzt werden
kann.
RESÜMEE
Abbildung 8: Lange Transaktionen
Die Komplexität der Lösung macht deutlich, wie schwierig die Bereitstellung eines befriedigenden und performanten Transaktionskonzepts in einer Verteilten Welt ist
und welche umfangreichen Voraussetzungen dafür nötig
sind, hier die historische Verwaltung der Daten.23
(3) Integration von Fremdsystemen. Die Integration
von Legacy Systems und Standardsoftware in eine Systemarchitektur ist ein meist mühevoller Prozeß. Schon
allein die Teilnahme dieser Systeme an Transaktionsprozessen, wie sie oben beschrieben wurden, erfordert umfangreiche „Wrapper“ um die Anwendungen, die die
geforderten Protokolle realisieren und sämtliche Fehlersituationen erkennen und geeignet signalisieren. Neben den
fehlenden Schnittstellen zur Einbindung in Transaktionen
weisen alte wie neue Fremdsysteme folgende Schwächen
auf, die bei der Integration beseitigt werden müssen: Unzureichende Datenformate, unzureichende Objektmodelle,
unzureichende Ereignismodelle, unzureichende Schnittstellen und die Präsupposition bestimmter Architekturen.
Die fortschreitende Durchdringung immer weiterer Arbeitsbereiche mit Informartions- und Kommunikationstechnologie macht in vielen Unternehmen die Reform der
grundsätzlichen System- und Anwendungsarchitekturen
nötig. Die eingefahrenen Pfade der Anwendungsentwicklung auf einem Zentralrechner (Fat-Server) oder auf dem
Arbeitsplatzrechner (Fat-Client) müssen dabei verlassen
werden. Insbesondere das Internet zusammen mit den
Mechanismen des E-Business zwingt dazu, beide Architekturen in einer Plattform für verteilte Dienste zu integrieren.
Dafür sind noch keine fertigen Standardarchitekturen
ausgearbeitet. Den Abteilungen zur Anwendungsentwicklung bleibt die Wahl, entweder auf Plattformen großer
Anbieter zurückzugreifen oder selbst einzelne Technologien in eine eigene Plattform zu integrieren. 24
Nach wie vor geht es dabei um die klassischen Probleme
der DV, z. B. Performanz, Skalierbarkeit, Transaktionssicherheit, das richtige Objektmodell, Evolution von Altanwendungen und Migration von alten Datenbeständen.
Diese alten Probleme in immer neuen Architekturen für
das Unternehmen zu lösen, wird die vorrangige Aufgabe
der Anwendungsentwicklung in den nächsten Jahren sein.
Ein Ende der Arbeit und der intellektuellen Herausforderungen ist hier noch lange nicht in Sicht.
(4) Adäquate Anwendungsarchitektur. Die Erneuerung
der Systemarchitektur ist nur dann sinnvoll, wenn die
Vorteile durch eine adäquate Anwendungsarchitektur
auch genutzt werden. Eine Systemarchitektur als Plattform für Verteilte Dienste macht nur Sinn, wenn auch
wirklich Dienste zu verteilen sind, wenn also die Anwendungsarchitektur in Form von interagierenden fachlichen
Dienste beschrieben ist.
Umgekehrt müssen, wie wir oben gesehen haben, bestimmte Eigenschaften der Systemarchitektur in den Anwendungen selbst sichtbar werden, um den sicheren Umgang mit solch einer DV-Landschaft gewährleisten zu
können.
22
Zur Beschleunigung des Zugriffs werden diese Bearbeitungsdaten
durch einen regelmäßig laufenden Denormalisierungs-Batch direkt in
die Bestände kopiert.
23
Historische Datenhaltung heißt: keine Aktualisierung und kein Löschen von Daten.
24
In beiden Fällen ist breiteres und tieferes Know-how in modernen ITtechniken nötig.
Herunterladen