Standardsoftware/Auf dem Weg zu Lösungslandschaften

Komponententechnik soll Anwendungs- und Systemgrenzen überwinden

05.11.1999
Komponentenorientierte Software-Entwicklung ist in. Auf der Basis einer mehrstufigen Client-Server-Architektur entstehen modular aufgebaute Softwarelösungen; sie lassen allerdings häufig die Anwenderperspektive außer acht. Achim Maier* skizziert den Stand der Dinge.

Flexible und überschaubare Softwarekomponenten waren bis vor kurzem ein lang ersehntes Desiderat von Anwendern. Mittlerweile existieren modular aufgebaute Softwarepakete, die spezifische Aufgaben übernehmen, gleichzeitig aber in eine Gesamtlösung eingebunden bleiben. Die Entwicklung von solchen Softwaremodulen ist mit vertretbarem Aufwand jedoch erst möglich, seit die Hersteller verschiedene Basisschnittstellen anbieten: Die konsequente Weiterentwicklung der Schnittstellen Component Object Model/Distributed Component Object Model (COM/DCOM) in den Microsoft-Betriebssystemen und der Common Object Request Broker Architecture (Corba) schufen die Grundlage für einen normierten Datenaustausch zwischen Softwarekomponenten.

Damit ließen sich Client-Server-Modelle, die drei oder mehr Schichten unterstützen, sehr viel einfacher realisieren. Die Vorteile liegen auf der Hand: Die Objekttechnologie, die bisher schon im Inneren umfangreicher Programme zur Anwendung kam, konnte jetzt an die Oberfläche treten. Darüber hinaus läßt sich die Software jederzeit mit zusätzlichen Modulen erweitern. Und auch Software-Updates können nun gezielt für jedes einzelne Modul eingespielt werden.

Über welche Eigenschaften muß eine Komponentensoftware verfügen, damit sie dem Anwender Dienste effektiv zur Verfügung stellen und selbst wieder Dienste adaptieren kann? An erster Stelle steht hier die Integrierbarkeit. Die Praxis hat gezeigt, daß selbst zwischen völlig unterschiedlichen Anwendungen Berührungspunkte bestehen können - sei es hinsichtlich der gemeinsamen Datengrundlage, sei es durch voneinander abhängende Aufgaben.

Genau diese Gemeinsamkeiten aber bereiten dem Anwender entweder heftiges Kopfzerbrechen oder führen zu enormen Arbeitserleichterungen. Als erfolgreiche Integration über die Standard-COM-Schnittstelle arbeitet beispielsweise Excel in Winword beziehungsweise umgekehrt.

Ein weiterer Punkt ist die Kontrolle des Funktionsumfangs. Der Anwender muß immer noch das Funktionsspektrum verschiedener Programme kennen. Die komponentenorientierte Softwareherstellung setzt auf hohe Anpassungsfähigkeiten, damit sich Anwendungen auf die Bedürfnisse des Benutzers zuschneiden lassen. Komponentensoftware sollte daher die Möglichkeit bieten, die Funktionen auf das notwendige Maß einzuschränken. Darüber hinaus müssen sie sich im Bedarfsfall erweitern lassen und auch die Dienste von anderen Programmen übernehmen können.

In der Softwareproduktion existieren derzeit verschiedene Ansätze. Folgenden Möglichkeiten sind zu unterscheiden:

-Monolithische Anwendungen,

-File-Server-Lösungen,

-Mail-basierende Lösungen,

-Client-Server-Lösungen.

Monolithische Anwendungen und File-Server-Lösungen verfügen nur über geringe Skalierungsmöglichkeiten bei der Datenhaltung und hinsichtlich der Software-Architektur. Mail-basierende Anwendungen arbeiten zumeist mit einem proprietären Dateiformat und ermöglichen den Zugang zu Geschäftsprozessen nur über firmenspezifische Schnittstellen. Viele Client-Server-Anwendungen basieren auf einem zweistufigen Applikationsmodell. Sie sind nicht mehr zeitgemäß, weil sie das Client-Server-Prinzip fast ausschließlich auf die Datenbankzugriffe reduzieren. Zudem verfügen sie nur über wenige Anknüpfungspunkte, was Integrierbarkeit und Skalierbarkeit anbelangt.

Integrierbarkeit und Skalierbarkeit lassen sich in der beschriebenen Weise am besten in einer n-tier-, das heißt mehrstufigen Client-Server-Architektur realisieren. Diese Umgebung bietet eine besonders hohe Zugänglichkeit auf Daten- und Geschäftsprozeßebene, sowohl für den internen als auch für den externen Zugriff. Bei der Applikationsmodellierung mit Hilfe von Business Objects werden die physikalischen Schichten einer Client-Server-Architektur in logische Schichten überführt. Auf diese Weise läßt sich die Anwendung in beliebig viele Schichten (n-tier) aufteilen.

Wesentlich größere Bewegungsfreiheit

Beim klassischen Dienstemodell wird die Applikation analog zu der dreistufigen Client-Server-Architektur in drei Bereiche gegliedert. Die Vorteile einer solchen Vorgehensweise liegen auf der Hand: Schon bei der Softwareplanung und -entwicklung achtet man bei den verschiedenen Stufen auf Komponentenentwicklung und Skalierbarkeit.

Da das Modell nicht auf einem physikalischen, sondern einem rein logischen Prinzip beruht, besteht eine wesentlich größere Bewegungsfreiheit, was die verwendete Datenbanktechnik, die Präsentation der Anwendung und die Einsatzmöglichkeiten der Softwarelösung anbelangt.

Damit ist prinzipiell jede Schicht trennbar und nochmals in sich teilbar, was die Austauschbarkeit von Softwaremodulen deutlich erhöht. An die Stelle der klassischen, "monolithischen" EXE-Datei tritt eine virtuelle Anwendung, deren Dienste auf verschiedene Art und Weise kombinierbar sind und damit dem Anwender einen größtmöglichen Nutzen bieten.

Eine n-tier-Client-Server-Architekur besteht im wesentlichen aus drei Ebenen:

Der Präsentations-Client umfaßt die komplette Oberfläche sowie die "Benutzerdienste". Er dient der Informationsdarstellung, der Programmnavigation sowie der Informationsaufbereitung ohne physikalische Datenzugriffe. Die Benutzerdienste greifen auf die angebotenen Dienste der Applikations-Server zu. Da der Präsentations-Client auf einem rein logischen Modell beruht, das der Applikations-Server zur Verfügung stellt, ist es jederzeit möglich, unterschiedliche Clients für verschiedene Verwendungszwecke zu entwickeln. Schon heute existieren viele Anwendungen, die neben der Desktop-Oberfläche auch Internet-Browser für den Datenzugriff nutzen. In gleicher Weise kann das Datenbankmanagementsystem ausgetauscht werden, ohne daß man Änderungen am Client vornehmen muß.

Die Applikations-Server enthalten die wesentlichen Elemente der Geschäfts- und Anwendungslogik und kapseln die Softwarefunktionalität und das Datenbanksystem. Applikations-Server, die selbst wieder von Standardschnittstellen wie ActiveX Data Objects (ADO) oder Collaboration Data Objects (CDO) abgeleitet sind, können von einem versierten Anwender für die Entwicklung eines einfachen Präsentations-Clients genutzt werden.

Die Datenbank-Server übernehmen die Verwaltung, die Bereitstellung und die Speicherung der Daten. Sie sind auch verantwortlich für die Datensicherheit. Das Besondere der mehrstufigen Komponententechnologie besteht darin, daß jede Ebene wiederum aus verschiedenen Komponenten und Diensten besteht, die unabhängig voneinander agieren und sich gegenseitig wiederum Dienste zur Verfügung stellen können.

Verschiedene Perspektiven

Die komponentenorientierte Software-Entwicklung beruht auf der objektbasierenden Vorgehensweise. Aus der Sicht eines Software-Entwicklers sind Objekte programmierbare "black boxes" mit eindeutigem Verhalten und klar definierten Ein- und Ausgabeparametern. Für den Anwender bilden mehrere Objekte zusammen eine "Dienstleistungsbox" als Komponente. Solche Komponenten stellen dem Anwender Dienstleistungen eines Programms zur Verfügung. Jede Komponente könnte auch als eigenständiges Programm laufen, wobei die Entwicklung in kleine, überschaubare Schritte unterteilt ist. Jeder Schritt ist für sich genommen mit der Entwicklung, dem Test und der Serienherstellung eines Miniprogrammes vergleichbar.

Mit der Komponententechnologie entstehen ausgetestete, überschaubare und wartbare Teile, deren Gesamtheit eine Anwendung bildet. Daraus ergeben sich mehrere Vorteile für die Entwicklung und die Anwender:

Aus Entwicklungssicht wird die Softwareherstellung transparenter. Zudem entstehen von Anfang an lauffähige, robuste und stabile Anwendungen. Die Wiederverwendung der Komponenten beschleunigt die Softwareproduktion, da frühzeitig Anwendungsdienste zur Verfügung stehen, die sukzessive weiterentwickelt werden können. Bestehende Parameter bleiben davon unbeeinträchtigt. Auf das Ganze betrachtet verkürzen sich nicht nur die Entwicklungs- und Testzyklen, sondern auch die Reaktionszeiten, da sich die Software schneller an spezifische Kundenwünsche angepassen läßt.

Ein Vorteil aus Anwendersicht ist die Erweiterbarkeit oder Veränderbarkeit einzelner Programmteile. Die verschiedenen Funktionen einer Software können in Übereinstimmung mit den spezifischen Anforderungen eines Arbeitsplatzes komponentenweise freigeschaltet werden. Zudem lassen sich Sonderfunktionalitäten und Anpassungswünsche leichter in die Software integrieren. Robustheit und Wartbarkeit erhöhen sich, da man im Fehlerfall immer nur einzelne Komponenten austauschen muß. Offene Schnittstellen stehen sofort für andere Anwendungen - etwa Individual- und Branchenlösungen Dritter - zur Verfügung.

Fazit: In der Software-Entwicklung hat sich die Komponententechnologie auf der Basis einer mehrschichtigen Client-Server-Architektur weitgehend durchgesetzt. Um den Arbeitsalltag des Anwenders zu erleichtern, muß man jedoch dafür sorgen, daß Schnittstellen-Standards wie COM/DCOM, COM+ in Windows 2000 oder Corba noch mehr berücksichtigt werden. Mit Datenschnittstellen wie ActiveX Data Objects (ADO) und Datenbeschreibungsformaten wie Extensible Markup Language (XML) oder Wireless Application Protocol (WAP) befindet sich die Software-Industrie sicherlich auf dem richtigen Weg, um die Nutzbarkeit und Vernetzung von Komponenten zu erhöhen. Die wachsenden Anforderungen an Softwareprodukte und ihre zunehmende Komplexität lassen kaum einen anderen Weg zu..

Angeklickt

Mit dem Internet und damit den Intranets ist ein dynamischer Informationsraum entstanden, auf den sich theoretisch zu jedem Zeitpunkt und von jedem Ort aus zugegreifen läßt. Gleichzeitig stellte sich jedoch heraus, daß die weltweite Verfügbarkeit von Informationen eine Utopie bleibt, solange die Datenströme die Grenzen zwischen Anwendungen oder Systemen nicht überwinden können. Im Zuge der informationstechnischen Globalisierung zeigt sich zudem, daß klassische Programme den Anforderungen einer vernetzten Welt nicht mehr entsprechen.

An die Stelle von monolithischen Softwaregiganten tritt eine Vielzahl von kleinen und mittelgroßen Softwaredienstleistern, die flexibel auf die Entwicklungen des Marktes reagieren und überschaubare Softwarekomponenten anbieten können. Der Vorteil einer komponentenorientierten Technologie liegt in der Möglichkeit, verschiedene Anwendungen zu verbinden und Datenbestände und Dienste intelligent miteinander zu verknüpfen.

*Achim Meier ist Diplomingenieur (FH) für Nachrichtentechnik und Entwicklungsleiter Groupware der CAS Software AG in Karlsruhe.