Ein Ansatz zur formatneutralen Verwaltung von Metadaten in komponentenorientierten Softwareprozessen
Abstract
Der Wiederverwendung von Lösungsbausteinen, wie z.B. fertiger Softwarekomponenten oder anderer Softwareartefakte, wird im Rahmen der Softwareentwicklung eine hohe ökonomische Bedeutung beigemessen. Eine notwendige Voraussetzung für praktikable Wiederverwendungsprozesse bilden Komponentenspeicher. Die existierenden Ansätze zur Komponentenspeicherung sind jedoch häufig an Vorbedingungen bezüglich bestimmter Beschreibungsformate, Vorgehensmodelle oder eines bestimmten Wiederverwendungsansatzes geknüpft. Der inhärenten He- terogenität von Softwareartefakten wird dabei nur selten Rechnung getragen, was die allgemeine Akzeptanz von Komponentenspeichern beeinträchtigt. Das hier vorgestellte Metaschema für einen generischen Komponentenspeicher adressiert dieses Problem durch die Unterstützung der formatneutralen Beschreibung, strukturierten Speicherung und des Wiederauffindens von Softwareartefakten. Es unterscheidet zwischen den drei Dimensionen Artefakttyp, Format und Informationsaspekt. Im Rahmen der Arbeit wird aufgezeigt, wie das Metaschema zur flexiblen Beschreibung von Softwarekomponenten eingesetzt werden kann. Dazu werden die Architektur des Komponentenspeichers und ein Anfragemechanismus vorgestellt. Abschließend erfolgt eine Bewertung des präsentierten Ansatzes. 181 Komponentenorientierte Ansätze in der Softwareentwicklung dienen zur Steigerung der Wiederverwendung von Softwarebausteinen sowie zur effizienten Gestaltung von Entwicklungsprozessen (siehe z.B. [CD00, ABB01, Ko01]). Im Allgemeinen wird unter dem Begriff der Komponente eine in sich abgeschlossene Kompositionseinheit mit fest definierten Schnittstellen und ausschließlich expliziten Kontextabhängigkeiten verstanden [Sz02]. Komponenten setzen sich aus einer Vielzahl von Softwareartefakten zusammen, die sowohl zu ihrer Spezifikation als auch zu ihrer Realisierung dienen. Umgekehrt können sie ihrerseits wieder als Softwareartefakte aufgefasst werden. Obwohl komponentenorientierte Architekturen verbreitet sind, ist die Wiederverwendung von Softwarekomponenten und -artefakten aus innerund überbetrieblichen Komponentenspeichern bis heute hinter den ursprünglichen Erwartungen zurückgeblieben [Sz02, FK05]. Neben aufbauund ablauforganisatorischen Fragestellungen [CW94] ist auf technischer Ebene insbesondere die Repräsentation, also die geeignete Abstraktion der Softwareartefakte ein zentrales Problem und stellt somit eine essenzielle Gestaltungsdimension für Wiederverwendung dar [BR89, Kr92]. Sowohl für das Auffinden als auch für die Anpassung und Integration ist eine bedarfsorientierte Beschreibung der Komponente von entscheidender Bedeutung. Zu diesem Zweck müssen die Softwareartefakte mit Metadaten angereichert und in einen logischen Zusammenhang gestellt werden. Eine dabei bisher noch unbeantwortete Frage ist, wie ein Metaschema so gestaltet werden kann, dass es von konkreten Beschreibungen abstrahiert und die Aufgaben eines Komponentenspeichers bestmöglich unterstützt. Im Rahmen dieser Arbeit wird deshalb ein flexibles Metaschema zur Komponentenbeschreibung für den Aufbau eines heterogenen Komponentenspeichers entworfen. Dazu werden zunächst bestehende Ansätze zur Repräsentation von Softwarekomponenten analysiert. Im Anschluss werden das Metaschema abgeleitet und die technische Realisierung des Komponentenspeichers in Form eines Prototyps erörtert. Schließlich werden die Ergebnisse diskutiert und die sich daraus ergebenden Möglichkeiten für einen umfassenden Wiederverwendungsansatz aufgezeigt. 2 Ansätze zur Repräsentation von Softwarekomponenten Die Aufgabe eines Komponentenspeichers (Component Repository, Library) als wichtigem Bestandteil einer Infrastruktur zur Wiederverwendung von Softwarekomponenten besteht darin, die Verfügbarkeit, Auffindbarkeit und Verständlichkeit von Komponenten zu verbessern [FK05]. Komponentenspeicher lassen sich somit eindeutig von Repositorys im Sinne des Konfigurationsmanagements [IEEE04] abgrenzen, deren primäre Funktion in der Versionierung klar definierter Artefakte liegt. Mili et al. [MMM98] unterscheiden drei zentrale Abstraktionsebenen von Komponentenspeichern, die in Abbildung 1 dargestellt werden: der Nutzen für die Anwender, das Artefakt, das den gewünschten Nutzen liefern soll, sowie die Repräsentation des Artefakts. Die ersten beiden Abstraktionsebenen betreffen die grundlegenden Operationen 182 eines Komponentenspeichers: der Abruf von Artefakten durch einen Komponentennut- zer sowie die Speicherung von Artefakten durch einen Komponentenverwalter. Weil es sich hierbei um Aktivitäten handelt, die getrennt voneinander durchgeführt werden, fällt dem Komponentenspeicher eine Mittlerrolle zu. Diese Vermittlung geschieht auf Basis der Repräsentation von Artefakten. Sie enthält Informationen über ein Artefakt (d.h., Meta-Informationen), die mit den Anfragen des Nutzers abgeglichen werden. Eine eigenständige Repräsentation wird deshalb benötigt, weil Artefakte sich entweder aufgrund ihrer Natur nicht in die Sprache des Nutzers abbilden lassen, oder weil ein direkter Zugriff aufgrund ihrer Komplexität nicht praktikabel ist [MMM98]. Verbreitete Ansätze zur Abbildung eines Artefakts auf eine Repräsentation sind Indizierung und Klassifikation [VZJ03, FK05]. Bei der Klassifikation definiert der Verwalter des Komponentenspeichers Stichworte zu einer gegebenen Menge so genannter Facetten [Pri91], die ein Artefakt beschreiben. Dagegen erfolgt eine Indizierung automatisch. Mili et al. unterscheiden sechs grobe Klassen von Komponentenspeichern, die sich primär im Modus der Abbildung von Artefakten auf eine assoziierte Repräsentation unterscheiden. Dabei fällt auf, dass die meisten existierenden Komponentenspeicher zwar eine Vielzahl von Artefakttypen vorsehen, aber lediglich ein bestimmtes Repräsentationsformat und eine bestimmte Nutzerrolle voraussetzen. Viele konventionelle Komponentenspeicher vernachlässigen demzufolge die in der Praxis relevante Vielfalt von Sichten (Informationsaspekten) und Repräsentationen (vgl. [VZJ03]). Dafür sind aus historischer Sicht mehrere Gründe denkbar. So hat in jüngerer Zeit eine Ausdifferenzierung von Softwareprozessen stattgefunden, die zu einer Zunahme spezialisierter Rollen im Entwicklungsprozess geführt hat (vgl. [Kr00]). Diese Rollen haben spezifische, sich unterscheidende Informationsbedarfe und sind an verschiedenen Stufen des Entwicklungsprozesses beteiligt. Gleichzeitig fällt im Laufe des Entwicklungsprozesses eine größere Menge (semi-) strukturierter Artefakte (z.B. Testfälle, Modelle, Code etc.) an. Insbesondere ist in den vergangenen Jahren die Bedeutung, die Modellen in der Softwareentwicklung beigemessen wird, gestiegen. Dies wird durch die Entwicklung ausgehend von objektorientierten Analyseund Designmethoden bis hin zu aktuellen Ansätzen der modellgetriebenen Softwareentwicklung belegt (siehe z.B. [HK04]). Mit einer größeren Anzahl unterschiedlicher Nutzer und semi-strukturierter Daten ergeben sich neue Anforderungen an die Gestaltung von Komponentenspeichern. Die Arbeit Abbildung 1: Abstraktionsebenen eines Komponentenspeichers (angelehnt an [MMM98]) 183 von Vitharana et al. [VZJ03] trägt diesen Anforderungen teilweise Rechnung, indem sie verschiedene Nutzergruppen und die Repräsentation strukturierter und semistrukturierter Daten unterscheidet. Weiteres Wissen über die Art der semi-strukturierten Daten sowie mögliche Abfragearten wird jedoch nicht genutzt. Orso et al. [OHR00] schlagen hierzu die Definition von Schemata (DTDs) vor. Allerdings beschränken sie sich dabei auf ein Schema pro Informationsaspekt. Zudem bleiben Speicherung und Abfrage der Metadaten in ihrem Ansatz unklar. Problematisch ist auch die Wiederverwendung von Metadaten, da diese stets an eine bestimmte Komponente gebunden sind. Mit der zunehmenden Komponentenorientierung in der Softwareentwicklung haben sich Spezifikations-Frameworks zur umfassenden Beschreibung von Softwarekomponenten herausgebildet. So nimmt UnSCom eine eindeutige Trennung der Spezifikationsaspekte in vertragliche Ebenen vor [Ov04]. Dabei werden sowohl maschinenlesbare als auch informelle Beschreibungen verwendet, die in einer Vielzahl von Artefakten resultieren. Der vereinheitlichte Spezifikationsrahmen für Fachkomponenten des GI-Arbeitskreises 5.10.3 schlägt darüber hinaus mehrere Notationen für eine Standardisierung vor [ABC02]. Eine technische Realisierung in Form eines Komponentenspeichers setzt voraus, dass diese vielfältigen Informationsarten parallel verwendet werden können. Daraus resultiert ein Bedarf an flexiblen Komponentenspeichern, in die neben ausführbaren Komponenten auch Entwicklungsund Spezifikationsartefakte integriert werden. Um den bestehenden Problemen bei der strukturierten Verwaltung von Spezifikationsund Realisierungsartefakten zu begegnen, erlaubt das nachfolgend präsentierte Metaschema eines generischen Komponentenspeichers die Verwaltung dieser unterschiedlichen Informationen. Dabei liegen dem Entwurf des Metaschemas drei zentrale Gestaltungsdimensionen für die Beschreibung von Softwarekomponenten zugrunde, die sich unmittelbar aus den beschriebenen prinzipiellen drei Abstraktionsebenen von Komponentenspeichern nach Mili et al. ableiten lassen und nachfolgend genauer erläutert werden (siehe Abbildung 2): Vielfalt der Artefakte. Auf den ersten Blick stellen Softwarekomponenten ein abgeschlossenes Paket von binären Softwareartefakten dar. Tatsächlich werden in einem komponentenorientierten Softwareprozess jedoch sehr unterschiedliche Artefakte erzeugt, die jeweils eine bestimmte Funktion erfüllen. Dies können z.B. Anforderungen, Testfälle, Konfigurationsdateien, Modellund Schnittstellenbeschreibungen sein. Das Beschreibungsschema eines Komponentenspeichers sollte daher in der Lage sein, beliebige heterogene Softwareartefakte zu integrieren. Vielfalt der Informationsaspekte. An einem Softwareentwicklungsprojekt sind i.d.R. nicht nur Softwareentwickler, sondern auch Tester, Installateure, Systemadministratoren und Projektmanager beteiligt, die unterschiedliches Wissen für ihre Arbeit benötigen und in den Entwicklungsprozess einfließen lassen. Je nach Rolle benötigen Benutzer andere Lösungsbausteine zur Erfüllung ihrer Aufgaben. Darüber hinaus kann die Anfrageart an einen Komponentenspeicher je nach Informationsaspekt variieren, z.B. Volltextsuche und strukturierte Suche. Vielfalt der Formate. Für viele Aspekte einer Komponente, wie die Schnittstelle oder die Bindung, gibt es bereits breit akzeptierte Beschreibungsansätze. Vor allem im Be- reich der Schnittstellenspezifikation haben sich mit IDL [OMG02], UML [OMG05] und 184 WSDL [W3C01] gleich mehrere komplementäre Ansätze etabliert. Diese Notationen sind in der Regel partiell und decken nicht alle relevanten zu beschreibenden Aspekte einer Komponente ab, während sie sich andererseits aber zum Teil auch überlappen. Ein mächtiger und somit praxistauglicher Komponenten-Beschreibungsansatz wird diese Notationen aufgreifen und sinnvoll kombinieren, nicht aber ersetzen. Als Beispiel für diese parallele Verwendung mehrerer Beschreibungsformate sei der vereinheitlichte Spezifikationsrahmen für Fachkomponenten genannt [ABC02]. Die Aufgabe des hier vorgestellten Metaschemas ist es, die Informationsaspekte und Formate in Relation zur Repräsentation eines Softwareartefakts zu setzen. Diese flexible Ausgestaltung eines Metaschemas trägt dazu bei, den Komponentenspeicher entlang des gesamten komponentenorientierten Entwicklungslebenszyklus einsetzen zu können. Nachfolgend wird unser Metaschema beschrieben, welches direkt auf den oben beschriebenen Gestaltungsdimensionen aufbaut. Artefakte $\cdots $Testfälle Modelle Komponenten IDL UML WSDL $\cdots $Formate Lizenzierung Integration Betrieb $\cdots $Aspekte Abbildung 2: Gestaltungsdimensionen eines Komponentenspeichers 3 Ein Metaschema zur Komponentenbeschreibung 3.1. Grundlegende Struktur Wie die vorangegangenen Ausführungen aufgezeigt haben, deckt die konkrete Beschreibung einer Softwarekomponente eine Reihe von Informationsaspekten ab, die für die am Softwareentwicklungsprozess beteiligten Akteure relevant sind. Abhängig vom Ziel und Entstehungshintergrund einer Beschreibungstechnologie handelt es sich dabei um ein variierendes Spektrum von Aspekten. Eine umfassende Beschreibung einer Komponente ist daher i.A. eine Kombination mehrerer konkreter Beschreibungen, die auf diversen Beschreibungstechnologien basieren. Das hier vorgestellte Metaschema soll die reibungslose Kombination von Beschreibungstechnologien zur Charakterisierung von Softwareartefakten als Bestandteil einer Softwarekomponente abbilden. Abbildung 3 zeigt den Aufbau des Metaschemas als UML-Klassendiagramm. Artefakte und Metadaten sind die zentralen Komponenten des Schemas. Ein Artefakt besitzt stets genau einen Artefakttyp. Auf der Grundlage des Metaschemas werden die Artefakttypen 185 Identität Verweis AngeboteneSchnittstelle Komponente Domänenmodell Domänenmodell Lizenz Schnittstelle $\cdots \cdots $beschreibbare anwendbare Typ Typen Aspekte Aspekt (0,n) (0,n) id : U : RI id : URI be b ze z ic i h c nung : Strin : Stri g beze b ic eze h ic nung : Str : ing Str besch c reibung : String beschriebene be b sc e h sc rei e bung b : Stri r ng Aspekte (1,n) beschreibbare Artefakttyp Aspekte (1,1) (0,n) (0,n) (0,n) Gegenstand Art Ar efakt (1,1) Met Me ada d ten id : U : RI inhalt : XM : L XM (0,n) anwendbare (0,n) Formate (0,n) Identitätsformat benutztes Form r at m Verweisformat Format WSDL id : URI (1,1) IDL beze b ic eze h ic nung : Str : ing Str SimpleDomainFormat be b sc e h sc rei e bung b : Stri r ng SimpleLicenceFormat schem sc a hem : XML M $\cdots $. istGültig(i istG\"$ultig( nhal i t nhal )$ : ) boo : l boo Abbildung 3: Metaschema zur formatneutralen Beschreibung von Softwareartefakten definiert, z.B. Komponente für Softwarekomponenten und Domänenmodell für Softwaremodelle. Jedes Artefakt kann mit beliebig vielen Artefaktbeschreibungen (Metadaten) versehen werden. Jede Beschreibung hat genau ein Artefakt zum Gegenstand und deckt beliebig viele Informationsaspekte ab (im Gegensatz zu einer fest vorgegebenen Menge an Facetten [Pri91]). Ähnlich den Artefakttypen werden auf Basis unseres Schemas eine Reihe vordefinierter Informationsaspekte bereitgestellt, wie z.B. Angebotene- Schnittstelle für Beschreibungen, die die Schnittstelle eines Artefakts charakterisieren, Lizenz für Beschreibungen, die vertragliche Nutzungsbedingungen festlegen usw. Nicht jede Kombination eines Artefakttyps mit einem Informationsaspekt ist sinnvoll. Das Metaschema sieht daher eine Verträglichkeitsrelation vor, die für jeden Artefakttyp die Menge der relevanten Informationsaspekte definiert. Die Kodierung der konkreten Beschreibungen kann auf unterschiedlichen Beschreibungstechnologien basieren, wie das o.a. Beispiel der unterschiedlichen Ansätze zur Schnittstellenspezifikation bereits andeutet. Im Metaschema werden sie durch Formate repräsentiert. Eine zweite Verträglichkeitsrelation gibt an, welche Formate zur Beschreibung eines Informationsaspekts eingesetzt werden können. Die Anwendung des Metaschemas auf die Schnittstellenspezifikation einer Softwarekomponente wird in Abbildung 4 beispielhaft dargestellt. Für einen Informationsgegenstand vom Typ Komponente können dabei mehrere Schnittstellenbeschreibungen in unterschiedlichen Formaten existieren, z.B. wenn eine Softwarekomponente sowohl einen CORBA-Dienst als auch eine Web-Service Schnittstelle zur Verfügung stellt. 186 Schnittstelle : Aspekt beschriebene Aspekte Komponente : Typ Artefakttyp : Metad e at tad en inhalt =
Full Text: PDF