Leipziger Beiträge zur Informatik | Band XXX
Integration betrieblicher Informationssysteme
und modellgetriebene Entwicklung
Heiko Kern
Stefan Kühne (Hrsg.)
Integration betrieblicher Informationssysteme
und modellgetriebene Entwicklung
Herausgeber
Heiko Kern
Universität Leipzig
Institut für Informatik
Abteilung Betriebliche Informationssysteme
Johannisgasse 26
04103 Leipzig
Stefan Kühne
Institut für Angewandte Informatik e.V.
an der Universität Leipzig
Johannisgasse 26
04103 Leipzig
Integration betrieblicher Informationssysteme und
modellgetriebene Entwicklung/
Heiko Kern, Stefan Kühne (Hrsg.). – Leipzig, 2012
ISBN: 978-3-941608-17-7
Vorwort
In der „Reihe Leipziger Beiträge zur Informatik“ erscheinen Forschungsberichte aus Forschungsvorhaben, Herausgeberbände im Bereich innovativer und sich etablierender Forschungsgebiete,
Habilitationsschriften und Dissertationen sowie herausragende Beiträge von Studenten. Die Arbeiten sind in der Angewandten Informatik und der Wirtschaftsinformatik angesiedelt. Schwerpunkte liegen dabei in den Bereichen betriebliche Informationssysteme, Content- und Wissensmanagement sowie IT-gestützte intra- und interorganisationale Kooperation mittels Internet-Technologien.
Thematisch wird im vorliegenden Band die Integration von betrieblichen Informationssystemen
sowie die Anwendung der modellgetriebenen Softwareentwicklung in diesem Bereich adressiert.
Die Beiträge basieren auf den Ergebnissen der folgenden Forschungsprojekte.
Ein Framework für das Integration Engineering im E-Business (EFIE) Ziel des Projekts
war die Entwicklung eines Framework für das Integration Engineering im E-Business. Zu diesem Zweck wurde ein modellgetriebenes Integrationsframework – spezifisch für die Domäne
E-Business – konzipiert und prototypisch implementiert. Die Projektergebnisse bilden die Grundlage für eine effizientere Erstellung von Integrationslösungen und damit eine verbesserte Erbringung von Integrationsdienstleistungen.
Automatisierte Anpassung, Integration, Evolution und Migration von Full-Service-Anwendungen im E-Commerce (AutoFuSA) Im Forschungsprojekt autoFuSA wurde eine IT-Referenzlösung für die Umsetzung einer Full-Service-Strategie im Anwendungskontext E-Commerce
konzipiert und realisiert. Full-Service bezeichnet dabei eine Geschäftsstrategie, bei der Anpassung, Einführung, Betrieb und Wartung eines E-Business-Systems vollständig von einem Anbieter übernommen werden. Somit wird der Full-Service-Anbieter in die Lage versetzt, Full-ServiceAnwendungen anzubieten.
Advanced Model Repository (AMOR) Fragen der effizienten Verwaltung modellgetriebener Artefakte in komplexen, verteilten Entwicklungsprozessen sind bisher ungelöst. Im Projekt wurde
ein Modell-Repository entwickelt, um Artefakte und Assets der modellgetriebenen Softwareentwicklung in geeigneter Form zu speichern, zu verwalten, zu versionieren, wiederzufinden und
wiederzuverwenden.
Die Forschungsvorhaben EFIE (Förderkennzeichen: 01IS08029D), AutoFuSA (Förderkennzeichen: 01IS08010B) und AMOR (Förderkennzeichen: 01IS08038C) wurden durch das BMBF im
Rahmen der Fördermaßnahme „KMU-innovativ: Informations- und Kommunikationstechnologie
(IKT)“ gefördert und vom Projektträger Softwaretechnik des Deutschen Zentrums für Luft- und
Raumfahrt e.V. (DLR) betreut. Die Projektteams bedanken sich herzlich für die gebotene Möglichkeit, in diesem interessanten Forschungsbereich arbeiten zu können. Weiterhin bedanken sich
die Herausgeber bei allen Autoren für die qualitativ hochwertigen Beiträge.
Klaus-Peter Fähnrich
Professur Betriebliche Informationssysteme
Direktor Institut für Angewandte Informatik e. V. an der Universität Leipzig
Sprecher des Leipziger Informatik-Verbund
Leipzig, April 2012
Inhaltsverzeichnis
Fred Stefan, Martin Gebauer
Realität der Integration – eine empirische Bestandsaufnahme . . . . . . . . . . . . . . . . . 1
Martin Gebauer, Johannes Schmidt
Problemadäquate Klassifikation und Systematisierung von Integrationsmustern . . . . . . . 21
Peter Hänsgen, Heiko Kern
Softwareentwicklung im Full-Service E-Commerce . . . . . . . . . . . . . . . . . . . . . . 43
Rolf-Helge Pfeiffer und Peter Hänsgen
Erweiterung eines MDSD-Systems zur Unterstützung von Produktlinien durch
Feature-Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Peter Hänsgen, Heiko Kern
Modellbasierte Schichtenarchitektur zur Komposition von Geschäftsanwendungen . . . . . . 65
Heiko Kern
Interoperabilität mittels M3-Level-basierter Transformationen . . . . . . . . . . . . . . . . 77
Peter Hänsgen, Stefan Kühne
Anforderungen an ein Modell-Repository im Kontext eines
MDSD-Entwicklungsprozesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Steffen Dienst, Stefan Kühne
Graph-basierte Speicherung und Versionierung von Modellen . . . . . . . . . . . . . . . . 101
Steffen Dienst, Steffen Stundzig
MTF – Modeling Team Framework zur effizienten Unterstützung modellgetriebener
Softwareentwicklungsprozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
vii
Realität der Integration - eine empirische Bestandsaufnahme
Fred Stefan, Martin Gebauer
Universität Leipzig, Institut für Informatik,
Abteilung Betriebliche Informationssysteme
Johannisgasse 26
04103 Leipzig
{stefan | gebauer}@informatik.uni-leipzig.de
Kurzfassung: Die wissenschaftliche Literatur liefert nur wenige Erkenntnisse über das praktische Vorgehen bei Integrationsprojekten. Um diese Diskrepanz zu beseitigen, hat die Universität Leipzig eine qualitative, empirische Untersuchung mit Integrationsdienstleistern durchgeführt. Dieser Beitrag beschreibt die Konzeption, Durchführung sowie erste Ergebnisse. Die
Untersuchung wurde in Form von 30 Experteninterviews realisiert. Das Ziel war, zu überprüfen, ob einige im akademischen Bereich hoch gelobte Methoden auch wahrhaftig in der Praxis
Anwendung finden und letztendlich herauszufinden, wie Integrationsdienstleistungen heute
erbracht werden. Da bis zum heutigen Zeitpunkt keine vergleichbaren Untersuchungen in diesem Bereich bekannt sind, werden die einleitenden theoretischen Betrachtungen ebenso wie
die angewandte Forschungsmethode ausführlicher beschrieben. Die durchgeführten Interviews
hatten eine Dauer von ein bis drei Stunden und ergaben insgesamt 52 Stunden Audiomaterial,
welches transkribiert, extrahiert und reduziert wurde. Circa zwei Drittel der Auswertung sind
zum gegenwärtigen Zeitpunkt bereits abgeschlossen.
1 Einleitung
Integration ist ein fortlaufendes, mit vielen Problemen behaftetes [Sum00, LF02, PM08] Forschungsthema. Neben Gefahren [MA08], Risiken [PPS07] und Herausforderungen [SOO10] werden auch verschiedene Architekturen untersucht [CDV08]. Aus technischer Sicht wurde Integration augenscheinlich umfassend untersucht, jedoch gibt es nur wenige Versuche zu verstehen wann
und warum gewisse Methoden angewandt werden [LS04, TI06]. Überdies stammen die Ergebnisse noch aus dem akademischen Bereich. Durch viele Investitionen in den letzten Jahren ging man
zahlreiche Lock-in-Effekte ein, sodass die Praxis von Mischarchitekturen vieler Architekturarten
geprägt ist. In der Tat sind beispielsweise serviceorientierte Architekturen (SOA) eine technisch
sehr gut verstandene Methode, um mit Integrationsproblemen umzugehen. Fragt man jedoch Praktiker, wer von ihnen über eine reine SOA-Architektur verfügt, so kann dies keiner bejahen. Diese
Diskrepanz zwischen Forschung und Praxis führte uns zu der zentralen Forschungsfrage:
• Wie wird gegenwärtig Integration durchgeführt?
– Wenn mehr als eine Lösung existiert, aus welchen Gründen entscheidet man sich für
eine bestimmte?
1
– Welche Schritte eines Integrationsprojektes, werden durch welche Methoden und Werkzeuge unterstützt?
Im Folgenden stellen wir die angewandte Untersuchungsmethode in Form qualitativer Experteninterviews, die durchgeführten theoretischen Vorüberlegungen zur Forschungsmethode, die Auswahl der Untersuchungsteilnehmer sowie den Aufbau der Studie vor. Darin sind neben Erläuterungen zu den untersuchten Variablen, auch erste wesentliche Ergebnisse enthalten.
Zum gegenwärtigen Zeitpunkt ist die Auswertung der Studie noch nicht vollständig abgeschlossen. Allein die Transkription der Interviews schlug mit Faktor sechs zur Interviewzeit zu Buche.
Nachdem eine Reduktion der Ergebnisse erfolgte, sind gegenwärtig circa zwei Drittel der Auswertung abgeschlossen. Auf diesem Stand basieren die präsentierten Ergebnisse.
2 Studienaufbau
2.1
Untersuchungsmethode
Die von uns adressierte Forschungsfrage ist auf das Wissen von Praktikern angewiesen. Daher
sind empirische Methoden ein probates Mittel. Da wir mit dieser Studie untersuchen wollen, wie
und warum Integration auf eine bestimmte Art und Weise gemacht wird, sind quantitative Erhebungsmethoden keine geeignete Wahl. Um die zugrundeliegenden Konzepte zu erheben, fiel die
Wahl daher auf qualitative Methoden, obgleich sie keine weite Verbreitung in der Informatikforschung besitzen (unterhalb von 10 Prozent [WH07]). Bestehende Untersuchungen konzentrieren
sich auf Fallstudien [SOO10] oder Fokusgruppeninterviews [PPS07]. Aus folgenden Gründe wurden diese beide Ansätze verworfen: Eine Fallstudie umfaßt das Problem eines einzelnen Unternehmens. Um für eine Vielzahl von Problemen eine Entscheidungsgrundlage zu schaffen, ist die
Betrachtung vieler verschiedener Fallstudien nötig. Somit waren Fallstudien keine angemessene
Methode für unsere Zwecke. Gleiches gilt für Fokusgruppeinterviews. Da sie ungefähr acht bis
zwölf Teilnehmer benötigen und Integrationsexperten sehr beschäftigt sind, war die Organisation
nicht realisierbar.
Unsere Wahl fiel letztendlich auf geleitete Experteninterviews. Da jeweils nur eine Person gleichzeitig befragt wird. Darüber hinaus ist – im Gegensatz zu Fokusgruppeninterviews – eine gegenseitige Beeinflussung der Teilnehmer ausgeschlossen. Methodisch sind wir nach der aus den
Sozialwissenschaften stammenden Methode von Glaeser und Laudel [GL09] vorgegangen, welche für die Rekonstruktion von unbekannten, kausalen Zusammenhängen Vorteile gegenüber der
von Mayring [May04] besitzt. Die Schrittfolge stellt sich wie folgt dar:
• theoretische Vorüberlegungen
– Forschungsfrage aufstellen,
– State-of-the-art aufnehmen,
– Hypothesen formulieren,
– Variablen (abhängige und unabhängige) konstruieren,
2
– hypothetisches Modell aufstellen,
– Fragebogen erstellen,
• Interviewpartner ermitteln
• Pre-test
– Test mit einer Testperson,
– Fragebogen anpassen,
• Interviews durchführen
• Transkription
• Extraktion
• Analyse
• Auswertung
Die gegenwärtige Situation im Bereich Integration wurde in Abschnitt 1 kurz umrissen. Darauf
aufbauend wurde die Forschungsfrage formuliert. Der weitere Beitrag gliedert sich wie folgt:
Entsprechend der zuvor genannten Methodik schließt sich in Abschnitt 2.2 ein Überblick über
einige Hypothesen an. Sie bilden den Ausgangspunkt um abhängige und unabhängige Variablen
abzuleiten und sie in einem hypothetischen Modell einzuordnen. Im Anschluss daran wird in
Abschnitt 2.3 der entwickelte Fragebogen kurz vorgestellt sowie unter 2.4 beschrieben, wie die
Auswahl geeigneter Unternehmen erfolgte. Ein zeitlicher Überblick über die Untersuchungen
ist in Abschnitt 2.5 enthalten, bevor unter 3 einige Ergebnisse vorgestellt werden. Der Beitrag
schließt im Abschnitt 4 mit einer Zusammenfassung und gibt darüber hinaus einen Ausblick auf
weitere interessante Forschungsthemen.
2.2
Hypothesen und hypothetisches Modell
Die ausgewählte Forschungsmethode setzt einige theoretische Vorüberlegungen voraus. Dazu
zählt das Formulieren von Hypothesen sowie das Ableiten von abhängigen und unabhängige Variablen. Diese Zusammenhänge werden in ein hypothetisches Modell überführt, welches vermutete kausale Zusammenhänge beinhaltet. Ziel der Vorüberlegungen ist es die Formulierung der
Fragen anzuleiten. Das bestätigen oder Falsifizieren steht nicht im Zentrum, vielmehr soll das
Modell modifiziert und ergänzt werden. Die folgende Aufzählung umfasst einen Auszug unserer
Hypothesen.
1. Je mehr die Integrationsdienstleister unter Zeitdruck gesetzt werden, desto unstrukturierter
ist das Vorgehen.
2. Kurzfristige Ziele stehen bei Integrationslösungen im Vordergrund.
3
unternehmensbezogene
Faktoren
Gewichtigkeit
und Invasivität
kundenspezifische
Faktoren
Integrationsprojekte
Integrationsverständnis
Integrationslösung
persönliche
Faktoren
Mainframefaktoren
Faktoren der
Wiederholbarkeit
Produktportfolio
Abbildung 1: Hypothetic model
3. Je leichtgewichtiger das Integrationsvorgehen ist, um so schneller ist die Lösung erstellt
und um so höher die Akzeptanz.
4. Zu Projektbeginn sind nicht alle Anspruchsgruppen der Lösung bekannt.
5. Integrationsmuster sind weitgehend unbekannt.
6. Domänenspezifische Konzepte (Systemklassen, Prozesse etc.) treten wiederholt in Integrationsprojekten auf, ohne Eingang in die Lösungsgestaltung zu finden.
7. Hostsysteme sind in vielen Integrationsszenarien großer Unternehmen zu finden. Da deren
Ablösung nur selten eine Option ist, müssen Integrationsdienstleister diese Legacy-Systeme
bei der Integration besonders berücksichtigen.
Für ein besseres Vertändnis erläutern wir das hypothetische Modell als Ganzes (Abbildung 1)
und beschreiben daran anknüpfend dann die einzelnen Variablen und deren Bezug zu den Hypothesen. Das bedeutet, dass die Darstellung in diesem Beitrag in umgekehrter Reihenfolge zum
Forschungsprozess erfolgt, bei dem die Erstellung des hypothetischen Modells am Ende der Vorüberlegungen steht. Die Integrationslösung – unser eigentlicher Interessensbereich – befindet sich
als abhängige Variable im Zentrum der Darstellung. Da Integrationsdienstleistungen in Projekten
erbracht werden, stellt das umschließende Integrationsprojekt den vermittelnden Handlungsbereich dar. Um zu verstehen, warum eine bestimmte Lösung verwendet wird, müssen demzufolge
die Einflussfaktoren eines Integrationsprojektes abgeleitet werden, um dann Kausalketten ermitteln zu können. Der äußere Teil der Abbildung stellt die von uns identifizierten unabhängigen
Variablen dar, wobei jede einzelne aus mehreren Einflussfaktoren besteht. Die Abhängigkeit oder
Unabhängigkeit einer Variable ist dabei eine analytische Setzung, welche durch unser Forschungsziel bestimmt wird. Selbstverständlich hängen diese unabhängigen Variablen auch wiederum von
anderen Variablen ab. In den folgenden Abschnitten werden die Variablen näher erläutert.
4
2.2.1
Unternehmensfaktoren
Die Variable stellt den Einfluss dar, den der Integrationsdienstleister auf das Projekt und indirekt
auch auf die Integrationslösung hat. Die eigene Größe des Dienstleisters ist möglicherweise ein Indiz für die Größe der Projekte, welche er realisieren kann. Ein Fokus auf eine bestimmte Branche
könnte ein Hinweis auf branchentypische Integrationsprobleme liefern. Ebenso hilft ein festgelegtes Rollenmodell, einzuschätzen, welche Rollen im Integrationsprojekt durch den Dienstleister
besetzt werden können. Das Geschäftsmodell der Dienstleister deckt den Fokus auf spezifische
Integrationsprojekte auf. Hersteller eines ERP-Systems bieten häufig Integrationsdienstleistungen
rund um ihr Standardprodukt an. Ebenfalls interessierte uns ob Vorgehens-, Rollen- oder Referenzmodelle bei Integrationsprojekten zum Einsatz kommen.
2.2.2
Persönliche Faktoren
Dieses Teil der Studie beschäftigt sich mit den demographischen Basisfaktoren der Interviewteilnehmer und klärt unter anderem die folgenden Punkte: gegenwärtige Position im Unternehmen,
Dauer der Unternehmenszugehörigkeit, Ausbildung sowie Erfahrungen im Bereich der Integration. Damit soll neben dem Expertenstatus auch ein breites Spektrum an Wissen und Erfahrungen
im Integrationsbereich untermauert werden. Ein Ziel der Studie besteht darin, vorzugsweise Personen mit leitenden Aufgaben zu befragen, da sie zukünftige Entwicklung ihrer Produkte, sowie
Werkzeuge und Hilfsmittel1 unterscheiden zu können.
2.2.3
Integrationsverständnis
Das Verständnis von Integration und Integrationsobjekten ist sehr heterogen. Es reicht von technischer Integration, über Anwendungsintegration, Prozessintegration bis hin zur Unternehmensintegration. Dieses gemeinsame Unternehmenswissen, was in den Köpfen aller Angestellten eines
Dienstleisters verankert ist, hat einen Einfluss darauf, wie Integrationsprojekte durchgeführt werden. Bedeutet Integration die technische Verbindung von Systemen, werden Projekte mit einer
sehr ausgeprägten Geschäftsprozessanalyse seltener angestrebt.
2.2.4
Kundenspezifische Faktoren
Ein wichtiger Punkt, welcher entscheidend für die Auswahl der Integrationslösung ist, sind die
Anforderungen der Kunden. Wir nehmen an, dass es im Wesentlichen eine Hand voll Anforderungen oder Ziele gibt, welche in jedem Projekt von Relevanz sind. Ebenso wird unter dieser Variable
die typische Kundengröße untersucht, mit denen sich die Dienstleister auseinandersetzen. Kleine
1 Der Ausdruck Integrationswerkzeug wird benutzt, um eindeutig zwischen z. B. einer Entwicklungsumgebung (die
ausschließlich für Entwicklungszwecke gedacht ist) und einem Integrationshilfsmittel, wie beispielsweise einem Broker
(der installiert und betrieben werden muss, in die Lösung eingeht) zu unterscheiden.
5
und mittlere Unternehmen benötigen andere Integrationslösungen als große Unternehmen. Außerdem sind je nach Kundenstruktur auch die durch sie besetzen Rollen in den Integrationsprojekten
verschieden.
2.2.5
Produktportfolio
Die Festlegung auf bestimmte Werkzeughersteller oder die Partizipation an einem Partnernetzwerk führt zu einer Spezialisierung in den Integrationsprojekten. Eine Spezialisierung auf einen
Hersteller kann durchaus erfolgreich sein. In solch einem Fall setzt der Dienstleister bei der
Lösungserstellung vorzugsweise – häufig auch ausschließlich – auf Produkte dieses Herstellers.
Ebenso werden unter dieser Variable die Werkzeuge betrachtet, welche einzelne Schritt des Integrationsprojektes unterstützen.
2.2.6
Wiederholbarkeit
Eines unserer Forschungsgebiete ist es, Integration zu automatisieren. Hierfür kommen modellgetriebene Technologien zum Einsatz. Wie in der Industrie bekannt, ist es nur nützlich, Dinge zu
automatisieren, die wiederholt vorkommen. Andernfalls sind die Automatisierungsbemühungen
unbrauchbar. Daher interessierte uns an dieser Stelle, welche Probleme wiederkehrend in Integrationsprojekten auftreten und eine Automatisierung lohnenswert wäre. Der nächste Schritt der Wiederverwendung ist es, diesen wiederkehrenden Problemen mit Mustern zu begegnen. Wie in der
Softwaretechnik haben sich Muster auch im Integrationsbereich in Form von Integrationsmustern
etabliert [HW03]. Die Verwendung von Integrationsmustern wäre ein Indiz für wiederkehrende
Integrationsprobleme. Eine unserer Hypothesen ist, dass Integrationsmuster auf einem sehr groben Niveau existieren, welche nicht den Anforderungen des Integrationsprojektes entsprechen, da
sie für gewöhnlich in einer geschäftlichen Sprache formuliert sind.
2.2.7
Gewichtigkeit und Invasivität
In der Softwaretechnik gibt es eine lange Diskussion über die Gewichtigkeit von Vorgehensmodellen. So stehen sich schwergewichtige (z. B. Wasserfallmodell) und leichtgewichtige (z. B.
SCRUM) Vertreter gegenüber. Integrationsprojekte sind ähnlich wie Softwareentwicklungsprojekte hinsichtlich ihrer Größe, Komplexität und den verwendeten Technologien sehr unterschiedlich.
Da die Vorgehensmodelle unterschiedliche Merkmale hinsichtlich Zeitbedarf, Qualität, Flexibilität, Invasivität oder Gewährleistung besitzen, stellt sich uns die Frage, welches Vorgehensmodell
sich am besten für welche Art von Integrationsproblem eignet.
In letzter Zeit ist auch immer häufiger im Integrationskontext von der Terminologie Invasivität
die Rede. Seinen Ursprung hat der Begriff in der Medizin. Zu Beginn der 1990er Jahre kam die
minimal-invasive Chirurgie auf, welche Eingriffe ohne große Operationswunden anstrebt. Da im
Bereich der integration dafür bisher keine einheitliche Begriffsdefinition besteht, wollten wir von
6
den Experten wissen, was sie darunter verstehen und anhand welcher Größen Invasivität gemessen
werden kann.
2.2.8
Mainframefaktoren
Entgegen gängiger Vorurteile sind Großrechner aus vielen Unternehmen nicht wegzudenken. Besonders in sicherheitskritischen Branchen und in Unternehmen mit großen Datenmengen sind
Mainframes von entscheidender Bedeutung und müssen folglich auch integriert werden. Da bisher
keine Untersuchungen existieren, die der Rolle von Mainframes in Integrationsprojekten nachgehen, betrachten wir diesen Aspekt in der Studie gesondert. Wir wollten von den Befragten wissen,
welche Probleme diese Plattform in Integrationsprojekten aufwirft und wie letztendlich damit
umgegangen wird.
2.3
Interviewleitfaden
Um sicherzustellen, dass alle Fragen in jedem Interview in gleicher Reihenfolge gestellt werden,
haben wir einen 34-seitigen Interviewleitfaden entwickelt. Die Fragen wurden in die folgenden
sechs Abschnitten kategorisiert: demografische Basisdaten, Verständnis zum Thema Integration,
Integrationsproduke / -werkzeuge / -hilfsmittel, Integrationsmuster und Automatisierung, Gewichtigkeit / Invasivität sowie das Integrationsobjekt Mainframe. Umrahmt wurden die Fragen durch
einen anfänglichen Prolog sowie einen abschließenden Epilog. Einleitend wurden den Teilnehmern der Interviewverlauf und der ungefähre Zeitbedarf geschildert, als auch die Erlaubnis zur
Aufzeichung gebeten. Im Epilog bot sich den Teilnehmern die Möglichkeit, Anmerkungen zum
Interview zu geben, sowie weitere zusätzliche Teilnehmer vorzuschlagen.
Um den Interviewteilnehmern die Möglichkeit zu geben, sich einen Überblick über die Fragen
zu verschaffen, übersandten wir ihnen vorab den Leitfaden. Einige Teilnehmer waren dann zum
Interviewtermin derartig gut vorbereitet, dass sie vorab Definitionen mit ihrem Firmen-Wording
abstimmten. Während der Befragung notierte sich der Interviewleiter im Fragebogen handschriftliche Notizen. Zusätzlich wurde ein digitales Protokoll angefertigt. Beides floss in die spätere
Transkription der Interviews ein.
2.4
Auswahl der Firmen
Wir befragten ausschließlich Integrationsdienstleister, in der Annahme, dass sie aufgrund ihrer
vielen durchgeführten Projekte, über hinreichende Erfahrungen in diesem Bereich verfügen. Ein
solch umfangreiches Wissen ist von Anwendern einer Integrationslösung nicht zu erwarten, da
die Integrationslösung typischerweise einmal – möglicherweise von einem Integrationsdienstleister – erstellt wird und dann fortwährend zum Einsatz kommt. Somit verfügen Anwender lediglich
über spezifisches Lösungswissen aber nicht über breites Know-how, um verschiedenartige Integrationsprobleme zu lösen.
7
Um potentielle Integrationsdienstleister zu identifizieren, nutzen wir die Unternehmensdatenbank
Hoppenstedt [Hop11], die ca. 85% der deutschen Wirtschaft abdeckt. Darüberhinaus wird die
Geschäftstätigkeit der Unternehmen in dieser Datenbank redaktionell klassifiziert. Um sicherzustellen, dass die potentiellen Unternehmen über ein umfangreiches Erfahrungswissen verfügen,
beschlossen wir Integrationsdienstleister ab einer Mitarbeiterzahl von 10 Personen zu befragen.
In wenigen Fällen reichten die Angaben der Datenbank nicht aus (z. B. fehlende Firmengröße,
Gründungsjahr oder Ansprechpartner) und wurden aus anderen Datenbanken manuell ergänzt.
Insgesamt konnten 544 Unternehmen identifiziert werden, deren Fokus auf der Erbringung von
Integrationsdienstleistungen liegt. Letztendlich wählten wir 35 Unternehmen für eine Befragung
aus. Da in fünf Fällen der Expertenstatus der Befragten nicht gegeben war, bzw. ein gravierend
anderes Integrationsverständnis vorherrschte, konnte die Auswertung nur für 30 Interviews durchgeführt werden.
2.5
Zeitliche Einordnung der Befragung
Die Informationstechnologie ist eine der schnelllebigsten Industrien, die wir heute kennen. Um
dem Leser eine Einordnung in unsere Forschungsbemühungen zu geben, erfolgt an dieser Stelle
eine kurze Schilderung des zeitlichen Ablaufs. Im Frühjahr 2010 wurden die 544 identifizierten Integrationsdienstleister per E-Mail angeschrieben. Zur gleichen Zeit erfolgte der Pre-Test.
Daraufhin wurde der Fragebogen geringfügig angepasst und die Terminvereinbarungen für die
Befragungen begann. Zwischen März und August 2010 wurden schließlich die 35 Interviews vorrangig in den Räumen der Unternehmen durchgeführt. Daran schloss sich die Transkription der
gesammelten 52 Stunden Audiomaterials an. Der Zeitbedarf erwies sich mit Faktor sechs als eine
nicht zu vernachlässigende Größe. Die 553 DIN-A4 seitige Transkription wurde gemäß der angewandten Methode auf 378 Seiten reduziert. Zum jetzigen Zeitpunkt sind ca. zwei Drittel davon
ausgewertet.
3 Erste Ergebisse
In diesem Abschnitt geben wir erste Einblicke in die Resultate der Studie. Dieser Abschnitt ist für
eine leichtere Lesbarkeit entsprechend den analysierten Variablen gegliedert. Auf diese Art kann
unser Untersuchungsaufbau unkompliziert mit den Resultaten verglichen werden.
3.1
Unternehmensbezogene Faktoren
Wie bereits eingangs beschrieben, adressieren wir Integrationsdienstleister aller Größen. Da wir
jedoch davon ausgehen, dass erst ab einer bestimmten Unternehmensgröße eine hinreichend große
Zahl an Projekten durchgeführt werden kann und die Experten genügend Erfahrungen sammeln
konnten, beschränkten wir uns auf Unternehmen mit mehr als 10 Mitarbeitern. Abbildung 2 gibt
einen Überblick über die Größe der befragten Integrationsdienstleister. Grundlage dieser Einord-
8
nung bildet der jährliche Umsatz und die Mitarbeiterzahl gemäß der KMU-Definition der Europäische Gemeinschaften [Eur06].
kleines
Unternehmen
3
großes
Unternehmen
17
mittleres
Unternehmen
10
Abbildung 2: Größe der untersuchten Integrationsdienstleister
Demnach fallen 90% der befragten Integrationsdienstleister in die Kategorien mittlere und große
Unternhemen. Unsere These, dass das Anbieten von Integrationsdienstleistungen erst ab einer bestimmten Unternehmengröße interessant wird, scheint sich somit zu bestätigen. Gleichfalls sind
zahlreiche befragte Unternhemen bereits seit vielen Jahren am Markt etabliert. Deren Gründungsjahre liegen zwischen 1964 und 2004.
Um sicherzustellen, dass die Unternehmen auch über ein profundes Integrationswissen verfügen,
fragten wir sie, seit wann sie sich mit Integration beschäftigen. Demnach sind mehr als 73% seit
über 10 Jahren mit Integraionsthemen konfrontiert. Zusammenfassend handelte es sich bei allen
Unternehmen ausnahmslos um erfahrene Integrationsdienstleister.
Damit ebenfalls gewährleistet ist, dass sich die Integrationsdienstleister selbst auch als solche sehen, baten wir die Teilnehmer um eine Selbsteinordnung ihrer Tätigkeitsschwerpunkte in die vorgegebenen Kategorien:
Integrationsdienstleister, Standardprodukthersteller, Anwender und Werk‐
zeughersteller. Die Ergebnisse (Abbildung 3) bestätigen unsere Firmenauswahl, da sich nahezu
alle Teilnehmer als Integrationsdienstleister einordnen. Aufschlussreich sind auch die Eingruppierungen als Standardprodukt, bzw. Werkzeug und Hilfsmittelhersteller, welche auf produktbegleitende Dienstleistungen hinweisen.
Anwender
4
Standardprodukthersteller
10
Integrationsdienstleister
29
Werkzeug‐ und Hilfsmittelhersteller
13
0
10
20
30
Selbsteinordnung
(Mehrfachnennung möglich)
Abbildung 3: Selbsteinordnung der Unternehmen
In unseren Hypothesen haben wir die Ansicht vertreten, dass es je nach Branche Unterschiede im Maß des IT-Einsatzes zur Unterstützung der Geschäftstätigkeit gibt. Je nach Grad der ITDurchdringung unterscheidet sich demnach auch der Bedarf an Integrationsdienstleistungen (Banken und Versicherungen haben eine höhere IT-Durchdringung als Einzelhändler). Dieser Umstand
9
könnte wiederum dazu führen, dass sich Integrationsdienstleister ausschließlich auf besonders lukrative Branchen konzentrieren. Um dies zu überprüfen wurden die Interviewteilnehmer nach
dem Branchenfokus Ihres Unternehmens befragt. Fast die Hälfte der Unternehmen (14 Integrationsdienstleister) bevorzugen Kunden einer speziellen Branche, wobei die Branchen divergieren. Die restlichen Unternehmen adressieren Schwerpunktbranchen (acht Integrationsdienstleister) oder haben keinen Branchenfokus (acht Integrationsdienstleister).
Ausblick auf die Studie: Neben den besonderen Eigenschaften der verschiedenen adressierten
Branchen, werden die Geschäftsmodelle der befragten Integrationsdienstleister näher erläutert.
Ebenso werden die Phasen eines Integrationsprojektes mit den jeweiligen Ergebnissen, sowie das
Rollenmodell der Integrationsdienstleister genauer analysiert. Letztendlich sind wir somit in der
Lage ein ausführliches Vorgehensmodell für Integrationsdienstleister zu beschreiben.
3.2
Persönliche Faktoren
Nachdem im vorangegangenem Abschnitt Angaben zum Unternehmen untersucht wurden, beschäftigt sich dieser Teil der Studie mit demographischen Faktoren der Interviewteilnehmern. Abbildung 4 veranschaulicht die Position der Studienteilnehmer in ihren Unternehmen. Darin wird
sehr gut deutlich, dass die Mehrheit der Befragten im mittleren bzw. oberen Management verankert ist. Somit wurde die avisierte Zielgruppe von Personen mit leitender Tätigkeit weitgehend
erreicht. Von allen 30 Teilnehmern nehmen vier die Rolle des des Geschäftsführers, Gesellschafters, Eigentümers oder Miteigentümers ein. Weitere 15 Interviewteilnehmer besetzen sonstige
leitende Positionen (wie z. B. Bereichs-, Gruppen-, Abteilungs- oder Entwicklungsleiter). Diese
hochrangige Teilnahme ist für uns ein Indiz für die Brisanz des Integrationsthemas.
Geschäftsführung / Gesellschafter /
Eigentümer / Miteigentümer
4
Entwicklungsleiter / Produktmanager
5
Bereichs‐/Gruppen‐/Abteilungsleiter
10
Berater
4
Integrations‐/Systemarchitekt
7
0
4
8
12
Antworten
Abbildung 4: Verteilung der befragten Experten nach ihrer Position im Unternehmen
Fast die Hälfte der Teilnehmer weist eine Unternehmenszugehörigkeit zum gegenwärtigen Unternehmen von über 10 Jahren auf (14 Teilnehmer). Die Befragten hatten im aktuellen Unternehmen
und in vorangegangenen Positionen verschiedene Funktionen und Rollen inne und waren in verschiedenen Bereichen tätig. Dabei konnten sie viel praktisches Wissen sowie zahlreiche wertvolle
und nützliche Erfahrungen sammeln. Letztendlich haben alle das Integrationsgeschäft von der Pike auf gelernt.
10
Der Ausbildungsweg der interviewten Experten war Gegenstand der Untersuchung, da ein einschlägiges Studium auf eine fundierte theoretische Wissensbasis hindeuten würde. Abbildung 5
zeigt eine grafische Darstellung der jeweils höchsten Abschlüsse der Befragten. Die Umfrageteilnehmer weisen ein breites Spektrum an akademischen und nicht-akademischen Abschlüssen
auf.
Lehre 3
Ausbildung
(mit Informatik Bezug)
Studium 14
Promotion 3
Lehre 5
Studium 4
Promotion 1
Quereinsteiger
(ohne Informatik Bezug)
0
5
10
15
Antworten
Abbildung 5: Höchster Abschluss der befragten Teilnehmer
Insgesamt haben zwei Drittel eine Ausbildung mit IT-Bezug (wie z. B. Informatik, Wirtschaftsinformatik, Mathematik oder Fachinformatiker Systemintegration) durchlaufen. Einige von Ihnen
besitzen sogar mehrere Hochschulabschlüssen. Gleichwohl, wird das restliche Drittel, welches
über keine IT-bezogene Ausbildung verfügt (z. B. Elektrotechnik, Maschinenbau oder Germanistik), ihrem Expertenstatus ebenfalls gerecht, da nahezu alle Teilnehmer auf eine mehr als 10 jährige Erfahrung im Bereich Systemintegration zurückgreifen können. So schilderten zwei Personen,
dass sie bereits seit über drei Jahrzehnten in diesem Bereich aktiv sind. Insgesamt beschäftigt sich
die Mehrheit der Befragten (83%) seit über 10 Jahren mit Integrationsthemen.
Ausblick auf die Studie: Das breite Spektrum der Teilnehmer bildet eine solide Basis um den
einleitenden Hypothesen und Forschungsfragen nachzugehen. In der Studie wird die Gruppe der
Befragten detaillierter betrachtet und genauer auf ihre jeweiligen Spezialisierungen eingegangen.
3.3
Kundenbezogene Faktoren
Dieser Abschnitt betrachtet die typischen Kundensituationen, mit denen die befragten Integrationsdienstleister tagtäglich bei ihren Kunden konfrontiert werden. Zu Beginn werfen wir einen
nähren Blick darauf, was die eigentliche Motivation der Kunden ist, Integrationsprojekte durchzuführen. In unseren Annahmen vermuten wir eine starke Abhängigkeit von der Branche sowie
der IT-Durchdringung der Kunden.
Im Folgenden stellen wir einen kleinen Ausschnitt unserer – im Übrigen bestätigten – Vermutungen vor. Je nachdem wie die Kunden strukturiert sind und wo die IT im Unternehmen angesiedelt ist, besteht eine unterschiedliche Sichtweise auf Integrationsprojekte. Branchen mit hoher
IT-Durchdringung ihrer Wertschöpfung (z. B. Banken, Versicherungs- oder Telekommunikationssektor) betrachten ihre IT als Kerngeschäft. Entsprechend hoch sind die Chief Information Officer
(CIO) in den Unternehmen angesiedelt (meist auf der Vorstandsebene). Deren gesamte Wertschöpfungskette ist in großem Maße von ihrer IT abhängig, da es sich in diesen Bereichen letztendlich
11
um rein virtuelle Produkte wie beispielsweise Anlagen, Kredite und Versicherungen handelt. Die
Folgen eines Systemausfalls wären fatal. Aus diesem Grund sind Integrationsprojekte oft auf der
Managementebene aufgehangen, wodurch die Ziele anders gewichtet sind als bei normalen Mittelständlern.
Auch Unternehmen mit hoher IT-Durchdringung werden häufig mit der Herausforderung konfrontiert, sich schnell an geänderte Marktanforderungen, Gesetze und Kundenwünsche anpassen zu
müssen. Eine schnelle Anpassung der Geschäftsprozesse bedeutet eine Anpassung der IT Systeme und damit auch der Integrationsarchitektur. Gerade in den wirtschaftlich angespannten letzten
Jahren, wurde versucht die IT-Kosten zu verringern. Die einheitliche Meinung der Experten ist,
dass dieser Kundenstamm zunehmend erkennt, dass der Weg zu einer größeren Zufriedenheit ihrer eigenen Kunden und effizienteren internen Prozessabläufen nicht ohne eine Integration der
Anwendungssysteme erfolgen kann.
Drei Experten schilderten, dass mit zunehmender Größe dieser Kunden eine stark segmentierte
Aufstellung der IT vorzufinden ist. Da in den Unternehmen oftmals nur der Business Value der
einzelnen Fachbereiche im Vordergrund steht, besitzt jeder Fachbereich eine auf diesen spezialisierte IT-Abteilung. Diese Spezialisierung liegt in der zunehmenden Komplexität der Produkte begründet, welche IT-technisch realisiert werden müssen. Demzufolge fehlt diesen Unternehmen oft ein einheitliches Gesamtbild ihrer IT-Landschaft. Weiterhin tragen frühere OutsourcingBemühungen, durch die viel Know How verloren gegangen ist, zu dieser Entwicklung bei.
Ein anderes Bild ergibt sich bei mittelständischen Kunden. Vier Teilnehmer gaben an, dass in
diesem Bereich vorrangig problemgetrieben gehandelt wird. Stehen diese Unternehmen vor der
Herausforderung neue oder geänderte Geschäftsanforderungen abbilden zu müssen (z. B. wenn
ein neuer Lieferant angebunden werden soll), dann besteht die Herausforderung der Integrationsdienstleister oft darin, die neuen Funktionalitäten in die bereits vorhandene IT-Infrastruktur zu
integrieren. Somit sind Integrationsprobleme lediglich ein Baustein eines Gesamtproblems. Geht
es nur darum, Prozesse durch Integration „schöner“ zu gestalten, sinkt die Bereitschaft der mittelständischen Kunden für zusätzliche Investitionen schnell.
An dieser Stelle werden aus Platzgründen nur die fünf meistgenannten Kriterien vorgestellt, die
bei den Kunden die Auswahl der Integrationslösung beeinflussen. Wie aus Abbildung 6 ersichtlich, hat der Kostenfaktor, gefolgt von der Flexibilität der Lösung sowie die Zeit bis zur Erstellung
der Integrationslösung (time-to-market) den größten Einfluss.
Die Mehrheit der Befragten gab an, dass Kosten ein wichtiger Faktor sind, wenn nicht gar der entscheidende. Kleine und mittelständische Unternehmen achten dabei besonders auf die anfallenden
Projektkosten, wohingegen Unternehmen mit einer langfristigen und strategischen Ausrichtung
(also vorzugsweise Unternehmen mit hoher IT-Durchdringung) auf die Gesamtkosten der Integrationslösung achten. Knapp ein drittel der Experten gab an, dass ihre Kunden auch sehr auf
die Zeit achten, die für die Erstellung der Lösung beansprucht wird. Ergänzend veranschaulicht
Abbildung 7 alle weiteren genannten Kriterien.
Ausblick auf die Studie: Die kundenbezogenen Faktoren werden in der Studie im Detail untersucht. Folgende Themen spielen daher eine wichtige Rolle: Umgang der Integrationsdienstleister
mit der mangelnden Investitionsbereitschaft des Mittelstandes. Wer trifft auf Kundenseite die Entscheidungen in Integrationsprojekten? Wie wird mit Wachstumsbestrebungen der Kunden umgegangen? Welche Rolle spielt das Management für Integrationsprojekte? Einige Standardprodukt, wie auch Werkzeug- und Hilfsmittelhersteller versuchen neue Wege der Benutzbarkeit ihrer
12
20
20
15
15
10
5
project costs
11
8
8
7
TCO
Anzahl der Nennungen
(Mehrfachnennung möglich)
25
0
1.
Kosten
2.
Flexibilität,
Änderbarkeit,
Skalierbarkeit
3.
Zeit
4.
5.
Betreib‐,
Zuverlässigkeit,
Bedienbarkeit
Stabilität
Abbildung 6: Top 5 die bei der Auswahl der Integrationslösung im Vordergrund stehen
Produkte einzuschlagen. Wir gehen diesem Gedanken nach und schildern, wie die Lösung von
Integrationsproblemen von einem reinen Programmierthema, hin zur Konfiguration ganzer Integrationsstrecken verlagert wird. Weiterhin wird in der Studie betrachtet, inwieweit die zukünftig
zu erwartende Unternehmensentwicklung bei der Auswahl der Integrationslösung Berücksichtigung findet. Als Gegenpol zu den Rollen, welche auf Dienstleisterseite bei den unternehmensbezogenen Faktoren ermittelten wurden, werden geläufige Rollen auf der Kundenseite identifiziert.
Ebenso werden auch Rollen aufgedeckt, die typischerweise bei Integrationsprojekten vernachlässigt, bzw. ganz vergessen werden.
3.4
Gewichtigkeit und Invasivität
Integrationsprojekte sind ähnlich wie auch Softwareentwicklungsprojekte häufig mit zahlreichen
technischen, unternehmerischen und politischen Herausforderungen konfrontiert. Sie verlangen
von einer Integrationslösung neben eine sorgfältige Planung auch die nötige Agilität, um auf im
Integrationsprojekt auftretende Veränderungen reagieren zu können. In der Softwareentwicklung
hat diese offensichtliche Dichotomie zwischen sorgfältiger Planung und und der Bestrebung mögliche Veränderungen abzufangen, viele Diskussionen hervorgerufen. In diesem Bereich begegnete man dieser Problematik mit agilen, oder auch leichtgewichtig genannten Vorgehensmodellen
z. B. Adaptive Software Development, Extreme Programming oder SCRUM. Genau diese agilen,
leichtgewichtigen Softwareentwicklungsmethoden bilden das Fundament, derartige Paradigmen
auch im Integrationskontext zu untersuchen, da die Herausforderungen beider Bereiche sehr ähnlich sind.
Ein weiterer wichtiger Aspekt im Integrationskontext ist die Veränderung von Integrationsobjekten. Unterscheidungen können diesbezüglich zwischen invasiven und nicht-invasiven Vorgehen
getroffen werden [Fin99]. Im angloamerikanischen Sprachgebrauch wird diese Unterscheidung
auch oft als „intrusive integration“ und „non-intrusive integration“ bezeichnet. Das grundlegende
Verständnis eines nicht-invasiven Ansatzes besteht darin, das Anwendungssysteme verknüpft wer-
13
Anzahl der Nennungen
(Mehrfachnennung möglich)
7
6
6
5
5
5
5
4
4
4
3
3
3
2
2
2
1
1
1
0
Abbildung 7: Weitere Kriterien die die Auswahl der Integrationslösung beeinflussen
den, ohne dass die Notwendigkeit besteht, diese ändern oder erweitern zu müssen. Der Aspekt der
Invasivität gewinnt besonders im Kontext von Großrechnersystemen und Legacy-Anwendungen
an Bedeutung, da in diesem Bereich die Veränderung von Integrationsobjekten häufig ausgeschlossen ist (3.5).
Da keine befriedigende Definition zu den Begriffen Gewichtigkeit und Invasivität existiert, versuchen wir zu klären, was in der Praxis darunter verstanden wird und wie letztendlich damit
umgegangen wird. Eingangs wollten wir von den Teilnehmern wissen, ob ihnen eine Unterscheidung zwischen leicht- und schwergewichtigen Vorgehen im Integrationskontext bekannt ist. Wie
Abbildung 8 zeigt, ist mehr als drei Viertel der Befragten diese Unterscheidung geläufig.
sind nicht
bekannt, nie
gehört
6
ist bekannt
24
Abbildung 8: Unterscheidung leicht- und schwergewichtiger Integrationsvorgehen
Um unser Begriffsverständnis zu schärfen, fragten wir die 24 Experten, die mit diesem Ausdruck
vertraut sind, welche charakteristischen Eigenschaften sie mit leichtgewichtigen Integrationsansätzen verbinden (Abbildung 9).
Die Mehrzahl der Befragten sieht ein inkrementelles und iteratives Vorgehen als wichtige Eigenschaft der Leichtgewichtigkeit. Sie schilderten uns, dass eine Ursache darin liegt, dass eine
sog. Big-Bang-Integration [BNM10] meistens nicht gelingt. Ein inkrementelles und iteratives
14
inkrementelles und iteratives Vorgehen
13
(exploratives) Prototyping
9
kurze Zyklen
7
verzicht auf langwierige Planungsphase
6
Problemlösung in einem eingegrenzten Bereich
5
0
5
10
Antworten
(Mehrfachnennung möglich)
15
Abbildung 9: Charakteristische Eigenschaften leichtgewichtiger Integrationsvorgehen
Vorgehen wurde mit mehreren Argumenten begründet. Die Reduktion der Gesamtkomplexität
ist eine davon. Um auch unter komplexen Rahmenbedingungen optimale Integrationsergebnisse
zu erreichen, wird das Gesamtprojekt in verschiedene Phasen aufgeteilt. Diese Phasen werden
in mehreren Schleifen nacheinander durchlaufen, sodass man sich durch verschiedene Inkremente (Teilintegrationen) mit jeder Schleife an das angestrebte Integrationsziel annähert. Gelingt es,
einen kontinuierlichen Verbesserungsprozess zu etablieren, so verbessert sich mit jeder neuen
Schleife auch die Integrationslösung.
Wie bereits in der Einleitung zu diesem Abschnitt dargestellt, beschäftigt sich die Studie auch mit
dem Thema Invasivität. Von den 30 Befragten ist 28 diese Begrifflichkeit im Integrationskontext
geläufig (Abbildung10).
nie gehört, nicht
bekannt
2
ist bekannt
28
Abbildung 10: Bekanntheit des Invasivitätsbegriffs im Integrationskontext
Analog zum Gewichtigkeitsbegriff, baten wir die Experten, uns genauer zu beschreiben, was sie
unter Invasivität verstehen. Letztendlich kann Invasivität auf verschiedenen Ebene auftreten. So
beschrieben uns 26 Teilnehmer Invasivität auf technischer Ebene (z. B. durch Veränderungen im
Code der Integrationsobjekte oder durch hinzufügen neuer Systeme). Außerdem beschrieben 18
Befragte, wie Invasivität auch auf Geschäftsprozessebene auftreten kann. Hier liegt die Invasivität
in der Veränderung von Geschäftsprozessen und Arbeitsabläufen begründet, was zu gravierenden
Akzeptanzproblemen führen kann. Weiterhin beschrieben neun Personen Invasivität auf organisatorischer Ebene. Damit verbunden sind Veränderungen von Ablauf- und Organisationsstrukturen
und letztendlich der Härtegrad, mit welchen man sich im Organismus des Kunden bewegt (z. B.
einfaches Abschalten alter Systeme gegenüber einem gleitenden Übergang).
Ausblick auf die Studie: Die Verständlichkeit der Begriffe Invasivität und Gewichtigkeit werden
in der Studie weiter geschärft. Neben Vor- und Nachteilen von Lösungen mit besonders geringer
Invasivität, werden auch Möglichkeiten aufgezeigt, wie Integrationslösungen möglichst leichtge-
15
wichtig entstehen können. Abgerundet wird dieser Fragenkomplex mit dem Aufzeigen möglicher
Metriken um Invasivität und Gewichtigkeit zu messen.
3.5
Das Integrationsobjekt Mainframe
In dieser Studie bilden Mainframefaktoren eine eigene Untersuchungsvariable, da diese Systeme
unserer Auffassung nach besondere Integrationsobjekte darstellen. Aufgrund ihrer Zuverlässigkeit, Leistungsfähigkeit, Sicherheit und Unabkömmlichkeit sind sie weit davon entfernt, als Dinosaurier der IT abgestempelt zu werden [Ste08]. Vertreter dieser Gattung sind beispielsweise neben
den IBM /360, /370 und zSeries Systemen, auch HPs Superdome oder Fujitsu Siemens’ BS/2000
Systeme [HKS04]. Entgegen der weitläufigen Annahme sind sie aus der betrieblichen Anwendungslandschaft nicht mehr wegzudenken. Glaubt man den Spezialisten, so befinden sich gegenwärtig zwischen 60 und 70% der weltweiten Geschäftsdaten auf diesen Maschinen [HKS04]. Für
gewöhnlich laufen darauf geschäftskritische Anwendungen von Banken, Versicherungen, Versorgungsunternehmen, Behörden und einer Vielzahl anderer öffentlicher und privater Unternehmen
[EKOO09]. Manche dieser – oft auch als Legacy Anwendungen bezeichneten – Applikationen
sind bereits seit 10, 20 oder mehr Jahren im Einsatz. Daher sind sie oft in Programmiersprachen
wie Cobol, JCL oder PL/I geschrieben. Im Laufe der Jahre wurden sie ständig verändert, sodass
sich neue Modifikationen zunehmend schwerer gestalten. Diese Anwendungen können deshalb
nicht einfach ersetzt werden, da dies mit hohen Kosten und Risiken behaftet ist. Die Weiterverwednung und Integration sind unausweichlich. Das gab den Ausschlag, Integrationsprobleme dieses
Bereichs separat zu untersuchen.
Als erstes wollten wir von den Integrationsdienstleistern wissen, wer von ihnen in seinem täglichen Integrationsgeschäft mit Mainframes konfrontiert ist (Abbildung11). Die Hälfte der Integrationsdienstleister (15) trifft oft bei Integrationsprojekten auf diese Systeme. Demgegenüber
stehen acht Integrationsdienstleister, die nie Kontakt mit diesen Maschinen hatten. Der Rest der
Befragten wird nur selten oder indirekt (Mainframe dient nur als Datenlieferant) vor diese Herausforderung gestellt. Zusammenfassend lassen die Ergebnisse den Schluss zu, dass vorzugsweise
große mittelständische sowie große Integrationsdienstleister mit Mainframes und ihren speziellen
Problemen konfrontiert sind.
häufig
selten
2
2
1
nur indirekt
nie
9
5
1
1
1
1
kleines Unternehmen
2
mittleres Unternehmen
5
großes Unternehmen
Abbildung 11: Konfrontation der befragten Integrationsdienstleister mit Mainframes
16
Zusammenfassend formuliert liegen die Probleme beim Umgang mit diesem Integrationsobjekt
vor allem bei: fehlenden Schnittstellen, einem monolithischen Aufbau, unzeitgemäßem Programmierstil, ausgelasteten Mainframeabteilungen, nebulösen Verantwortlichkeiten, dem Fachkräftemangel oder in einer schlechten Dokumentation. Die Invasivität der Integrationslösung gewinnt in
diesem Zusammenhang an besonderer Bedeutung. Da die zu integrierenden Anwendung für die
Kunden einen gewissen Wert darstellen, sollen sie möglichst nicht, oder nur minimal verändert
werden.
Ein häufig diskutiertes Thema bei der Mainframeintegration ist eigentlich kein echtes Integrationsthema, sondern eher eines, welches zu Integrationsfragen führt. Auf Grund der Kostenproblematik des Mainframes steht das Thema Right-Sizing gegenwärtig im Vordergrund. Für welche
Aufgabenstellungen ist der Mainframe notwendig – Stichwörter an der Stelle sind große Datenmengen, hohe Transaktionsszahlen, Ausfallsicherheit und Desaster-Recovery – und an welchen
Stellen lässt sich eine gefahrlose Verlagerung von Funktionalität auf andere Systeme erreichen
(bei denen z. B. Entwicklerressourcen nicht so knapp sind, wie im Mainframebereich)?
Eine weiterer wichtiger Gesichtspunkt liegt in der zukünftigen Perspektive dieser Systeme. Daher
fragten wir die 22 Teilnehmer, die mehr oder weniger oft mit diesen Maschinen zu tun hat, ob ihre
Kunden über eine Ablösung dieser Systeme diskutieren. Schließlich ergab sich, dass zwar nahezu
alle darüber diskutieren, aber nur sehr wenige es tatsächlich in die Tat umsetzen. Denn eine Vielzahl von Faktoren spricht dagegen: Kritikalität, Stabilität und Zuverlässigkeit sowie Komplexität
und Aufwand der Ablösung.
Ein Teilnehmer schilderte uns, dass Vorbehalte gegenüber Mainframes oft durch junge Manager
hervorgerufen werden. Die heutigen IT-Leiter haben vor 10 oder 15 Jahren ihr Studium abgeschlossen. Da die Mainframesystemarchitektur inzwischen an nahezu allen Universitäten nicht
mehr gelehrt wird, keine Kenntnisse über Mainframes vor, was die Vorteile der Systeme einschließt.
Ausblick auf die Studie: Wir untersuchen detailliert, welche Integrationsdienstleister in welchen
Branchen auf das Integrationsobjekt Mainframe treffen. Ebenso werden die in diesem Zusammenhang auftretenden Probleme, Lösungen und Werkzeuge näher untersucht. Abschließend werden
Vor und Nachteile der Mainframes beleuchtet, sowie die Überlegungen reflektiert, die viele Kunden im Zusammenhang mit einer Ablösung tätigen.
3.6
Bis dato nicht ausgewertete Variablen und Korrelationen
Wie bereits erläutert beschreibt dieser Beitrag die bis dato ausgewerteten Variablen. Die folgende
Aufzählung legt dar, welche Bereiche noch auszuwerten sind.
• Produktportfolio-Variable: Welche Werkzeuge und Hilfsmittel benutzen die Integrationsdienstleister? Gibt es firmeninterne Werkzeuge und Hilfsmittel, die für Integrationsprojekte
eingesetzt werden. Was sind die Alleinstellungsmerkmale der verwendeten Produkte?
• Wiederholbarkeits-Variable: Existieren wiederkehrende Integrationsprobleme? Welche
Methoden und Werkzeuge werden verwendet um damit umzugehen? Wie erfolgt die Do-
17
kumentation? Letztendlich zielen wir mit dieser Untersuchungsvariable darauf ab, hochstehende Integrationsmuster abzuleiten.
• Integrationsverständnis-Variable: Das Integrationsverständnis ist sehr heterogen, jedoch
von essentieller Bedeutung für unsere Studie. Da wir uns durch diese Variable ein besseres
Integrationsverständnis von den Teilnehmern verschaffen konnten, waren wir in der Lage,
die Fragen im Interview besser zu unterlegen und die Teilnehmer mit ihrem Verständnis
einzubeziehen. Im Epilog hoben einige Teilnehmer dies als äußerst positiv hervor.
• Korrelationen: Sobald die Auswertung aller Untersuchungsvariablen abgeschlossen ist,
werden verschiedene Korrelationen zwischen den Variablen gezogen und die Studie abgerundet.
4 Zusammenfassung
Auch wenn die Studie zum gegenwärtigen Zeitpunkt nicht vollständig ausgewertet ist, lassen
sich weitergehende Forschungsfragen mit Praxisbezug ableiten. So hat sich gezeigt, dass Integration eine Dienstleistung ist, welche von Integrationsdienstleistern erbracht wird. Weiterer
Forschungsbedarf besteht dahingehend, beispielsweise die Ergebnisse der Service-Science und
des Service-Engineerings – insbesondere der Servicemodellierung [BK11] – einzubeziehen. Gemeinsam mit den Ergebnissen aus der Studie würde sich somit die Möglichkeit ergeben, ein
Service-Referenzmodell für Integrationsdienstleistungen zu definieren. Somit wird eine systematische Planung, Durchführung und Anpassung von Integrationsdienstleistungen aus technischer,
Dienstleister- sowie Kundensicht ermöglicht.
Integration findet immer in einer gewachsenen Architektur statt und ist letztendlich die Veränderung der Unternehmensarchitektur von einem Zustand in einen anderen. Der Forschungsbereich
der Unternehmensarchitektur stellt Methoden und Werkzeuge bereit, um Architekturen zu beschreiben und zu planen. Im Hinblick auf die von den Interviewteilnehmern geschilderte Analysephase, könnten Unternehmensarchitekturmodelle die Basis für eine automatische Integrationsanalyse bilden.
Ebenfalls können die Definitionen von Gewichtigkeit und Invasivität, sowie die zugrunde liegenden Metriken, verwendet werden, um besonders leichtgewichtige und minimal-invasive Integrationskonzepte zu beschreiben.
Weiterhin zeichnt sich ab, dass Cloud-Computing basierte Integrationslösungen bisher kaum eruiert wurden. Eine Vermeherte Nutzung dieses Prinzips für geschäftliche Anwendungen führt jedoch eine herkömmliche Integration ad absurdum. Besonders der Migration zwischen herkömmlichen und cloud-basierten Integrationsplattformen wird beachtung zu schenken sein.
Da die Studie auf den deutschen Raum limitiert war, ist deren Aussagekraft eingeschränkt. Zur
Erhöhung der Repräsentativität, sollten ähnliche Untersuchungen in anderen Ländern erfolgen.
18
Literatur
[BK11]
Boettcher, Martin ; Klingner, Stephan: The Basics and Applications of Service Modeling. In:
Annual SRII Global Conference (2011)
[BNM10]
Bygstad, B. ; Nielsen, P.A. ; Munkvold, B.E.: Four integration patterns: a socio-technical
approach to integration in IS development projects. In: Information Systems Journal 20 (2010),
Nr. 1, S. 53–80
[CDV08]
Chen, D. ; Doumeingts, G. ; Vernadat, F.: Architectures for enterprise integration and interoperability: Past, present and future. In: Computers in Industry 59 (2008), Nr. 7, S. 647–659
[EKOO09] Ebbers, M. ; Kettner, J. ; O’Brien, W. ; Ogden, B.: Introduction to the New Mainframe:
z/OS Basics. IBM, 2009 (IBM Redbook SG24-6366-01). http://www.redbooks.ibm.com/
abstracts/sg246366.html
[Eur06]
Europäische Gemeinschaften: Die neue KMU-Definition. (2006), 52. http://ec.europa.
eu/enterprise/policies/sme/files/sme_definition/sme_user_guide_de.pdf
[Fin99]
Fincham, Martin: Application integration: to invade ... or not to invade? In: MiddlewareSpectra
(1999), 22-27. http://www.mitem.com/resources/analyst/MidSpecToInvade.pdf. –
ISSN 1356–9570
[GL09]
Glaeser, J. ; Laudel, G.: Experteninterviews und qualitative Inhaltsanalyse: Als Instrumente
rekonstruierender Untersuchungen. VS Verlag, 2009
[HKS04]
Herrmann, P. ; Kebschull, U. ; Spruth, W. G.: Einfuehrung in z/OS und OS/390. 2., korrigierte
Auflage. Muenchen : Oldenbourg, 2004. – ISBN 3–486–27393–0
[Hop11]
Hoppenstedt:
Version: 2011
[HW03]
Hohpe, Gregor ; Woolf, Bobby: Enterprise integration patterns: Designing, building, and deploying messaging solutions. Boston, MA, USA : Addison-Wesley Professional, 2003. – ISBN
0321200683
[LF02]
Lublinsky, Boris ; Farell, Michael J.: Top 10 Reasons why EAI fails. In: EAI Journal (2002)
[LS04]
Lam, Wing ; Shankararaman, Venky: An Enterprise Integration Methodology. In: IT Professional 06 (2004), Nr. 2, S. 40–48. – ISSN 1520–9202
[MA08]
Moll, J.H. ; Ammerlaan, R.W.M.: Identifying Pitfalls of System Integration – An Exploratory
Study. In: Software Testing Verification and Validation Workshop, IEEE International Conference on 0 (2008), S. 332–338. ISBN 978–0–7695–3388–9
[May04]
Kapitel QuaIitative Content AnaIysis. In: Mayring, Phillip: A companion to qualitative research. Sage Publications Ltd, 2004, S. 266 – 269
[PM08]
Panetto, Hervé ; Molina, Arturo: Enterprise integration and interoperability in manufacturing systems: Trends and issues.
In: Computers in Industry 59 (2008), Nr. 7,
641 - 646. http://www.sciencedirect.com/science/article/B6V2D-4SJ9504-1/2/
bc0c65595577f763181899d3874c16bb. – ISSN 0166–3615. – Enterprise Integration and
Interoperability in Manufacturing Systems
[PPS07]
Purao, S. ; Paul, S. ; Smith, S.: Understanding enterprise integration project risks: A focus
group study. In: Database and Expert Systems Applications, 2007. DEXA’07. 18th International
Conference on, 2007, S. 850–854
Hoppenstedt Firmeninformationen.
http://www.hoppenstedt.de/.
19
[SOO10]
Schmidt, A. ; Otto, B. ; Oesterle, H.: Integrating information systems: case studies on current
challenges. In: Electronic Markets (2010), S. 1–14. – ISSN 1019–6781
[Ste08]
Stephens, D.: What On Earth is a Mainframe? Longpela Expertise, 2008. – ISBN 978–1–4092–
2535–5
[Sum00]
Sumner, Mary: Risk factors in enterprise wide information management systems projects. In:
SIGCPR ’00: Proceedings of the 2000 ACM SIGCPR conference on Computer personnel research. New York, NY, USA : ACM, 2000. – ISBN 1–58113–212–X, S. 180–187
[TI06]
Themistocleous, M. ; Irani, Z.: Towards a methodology for the development of integrated IT
infrastructures. In: Proceedings of the 39th Hawaii International Conference on System Sciences
(2006)
[WH07]
Wilde, T. ; Hess, T.: Forschungsmethoden der Wirtschaftsinformatik. In: Wirtschaftsinformatik
49 (2007), Nr. 4, S. 280–287
20
Problemadäquate Klassifikation und Systematisierung von
Integrationsmustern
Martin Gebauer, Johannes Schmidt
Universität Leipzig, Institut für Informatik,
Abteilung Betriebliche Informationssysteme
Johannisgasse 26
04103 Leipzig
{gebauer | jschmidt}@informatik.uni-leipzig.de
Kurzfassung: Integrationsdienstleister stehen vor der Aufgabe, für unterschiedliche Kunden
gleiche oder ähnliche Integrationsoperationen durchführen zu müssen. Integrationsmuster könnten diesen Anbietern helfen, methodisches und technisches Wissen aus bereits erfolgreich abgeschlossenen Integrationsprojekten auf ähnlich gelagerte Aufgabenstellungen zu übertragen.
Eine Studie der Universität Leipzig hat jedoch gezeigt, dass diese Art der Wiederverwendung
in der Praxis kaum Anwendung findet. Dies ist u. a. auf die große Anzahl und eine bislang
fehlende praxisorientierte Systematisierung der Muster zurückzuführen.
Dieser Beitrag möchte die Verwendung von Mustern im Rahmen von Integrationsprojekten
motivieren. Dazu wird der Begriff des Integrationsmusters diskutiert und verschiedene Ansätze
zur Klassifikation derartiger Muster vorgeschlagen.
1 Motivation
Integrationsdienstleister geraten – bedingt durch Kundenwünsche – zunehmend unter Kosten- und
Zeitdruck und müssen Integrationslösungen in immer kürzeren Zyklen entwickeln. Daraus resultieren Anstrengungen, die Erstellung von Integrationslösungen zu rationalisieren. In den Wirtschaftswissenschaften können zwei Arten der Rationalisierung unterschieden werden. Die eine
ist die tayloristische Betrachtung im Sinne der Optimierung von Bewegungsabläufen. Auf der
anderen Seite kann Rationalisierung auch aus Investitionssicht betrachtet werden. Dabei steht die
Ablösung des Menschen durch eine Maschine im Vordergrund. Der Prozess einer Integration, den
wir im Weiteren als Integrierung nach Thränert bezeichnen, kann nur schwer mit Bewegungsabläufen verglichen werden. Bei einer weiten Auslegung des tyloristischen Rationalisierungsbegriffes
können Vorgehensmodelle als derartige Optimierungen interpretiert werden, da sie die notwendigen Schritte und deren Reihenfolge festlegen. Eine wesentlich größere Bedeutung haben die
investitionsgetriebenen Überlegungen, welche prüfen, ob eine Automatisierung effizienter ist als
eine manuelle Lösung. Insbesondere im Software Engineering haben sich mit der Generierung
von Software derartige Ansätze herausgebildet. Eine abgeschwächte Form der Automatisierung
ist die Verwendung einer Blaupause einer Lösung für ein vorliegendes Problem. Dieser Ansatz
soll den individuellen Lösungsentwurf in einen strukturierten Lösungsentwurf – unter der Verwendung vorgefertigter Lösungsschemata – überführen. Gängige Mittel, welche wiederkehrende
21
Problemlösungen konservieren und dadurch den Grad der Wiederverwendung erhöhen und gleichzeitig Effizienzgewinne versprechen, sind Muster und Referenzarchitekturen.
Im Bereich der Softwareentwicklung sind Muster – insbesondere Entwurfs- und Architekturmuster – ein anerkanntes Mittel der Wiederverwendung. Bei der Erstellung von Integrationslösungen
haben sie sich jedoch nicht durchgesetzt, was auf der Basis einer Studie der Universität Leipzig
nachgewiesen werden kann. Die Ergebnisse der Untersuchung zeigen, dass Muster den Integrationsdienstleistern zwar – häufig auf Grund einer IT-Ausbildung – bekannt sind, jedoch nicht
bewusst eingesetzt werden. Daraus kann geschlussfolgert werden, dass der Zusammenhang zwischen Analyse der Problemstellung, Identifikation eines geeigneten Musters und der letztendlichen Implementierung des Musters – also der Abbildung in konkrete Lösungen – nicht hergestellt
wird.
Dieser Beitrag geht davon aus, dass es sich dabei um ein Problem des Zuganges zu vorhanden
Mustern handelt. Diese sind in der Literatur bekannt, aber verstreut über eine große Menge an Publikationen. Darüber hinaus sind ähnliche Muster – besser Lösungsalternativen – auf Grund der
unterschiedlichen Darstellungen in den verschiedenen Publikationen nicht als solche zu erkennen.
Deshalb wird in diesem Beitrag zunächst eine Definition von Integrationsmustern entwickelt, welche geeignet ist, Integrationsmuster zu identifizieren, auch wenn diese nicht als solche ausgewiesen sind. Unter Nutzung dieser Definition wird anschließend eine Auswahl an Mustern auf Basis
der vorhandenen Literatur zusammengestellt. Diese dient als Grundlage, um eine Klassifikation
der Muster zu entwickeln, welche einen besseren Zugang und die Erkennbarkeit von Lösungsalternativen gewährleistet. Da es sich bei einer Klassifikation um eine Art der Abstraktion handelt,
kann der vorliegende Beitrag auch als ein Ansatz zur Entwicklung abstrakterer – hochstehender –
Integrationsmuster gewertet werden.
2 Grundlagen
Betrachtungsgegenstand dieser Arbeit sind Integrationsmuster zur Unterstützung von Integrationsdienstleistern bei der Integrierung von betrieblichen Informationssystemen. Dieser Abschnitt
gibt zunächst einen Überblick zum Integration Engineering. Anschließend wird eine Definition
des Begriffs Integrationsmuster hergeleitet und diskutiert. Abschließend werden prinzipiell geeignete Ordnungssysteme beschrieben, die in Kapitel 3 für die Ordnung der Integrationsmuster
eingesetzt werden.
2.1
Integration betrieblicher Informationssysteme
Betriebliche Informationssysteme stellen den Rahmen der Betrachtungen in diesem Beitrag dar,
wobei eine systemtheoretische Sichtweise vertreten wird, welche in diesem Zusammenhang nicht
ungewöhnlich ist (vgl. [Thr08, Fis08]). Ein betriebliches Informationssystem umfasst demnach
alle Informationssysteme eines wirtschaftlichen Betriebes. Ein Informationssystem umfasst nach
Gabriel im engeren Sinne „ein computergestütztes Anwendungssystem, d. h. ein Programmsystem zur Ausführung betrieblicher Aufgaben“ [Gab08]. Im weiteren Sinn werden Menschen und
22
die für die Ausführung der Anwendungssysteme notwendige Hardware mit unter diesen Begriff
subsummiert (vgl. [Gab08]).
Die Ausführung der Geschäftsprozesse oder der untergeordneten Teilfunktionen wird verschiedenen ausführenden Einheiten – Aufgabenträgern – zugewiesen. Handelt es sich bei diesen Aufgabenträgern um Anwendungssysteme, so kann es sein, dass zwischen diesen Integrationsbeziehungen zu realisieren sind. Dies ist immer dann der Fall, wenn die Abwicklung der Aufgaben
ein Überschreiten der Systemgrenzen notwendig macht. Das Themengebiet der Integration befasst sich mit dem dazu notwendigen Handwerkszeug. In der Vergangenheit standen dabei oft
technische Lösungen für spezifische Probleme im Vordergrund, weshalb häufig bemängelt wurde,
dass es kein methodisches Vorgehen gibt, welches bei der zielgerichteten Auswahl einer Lösungsstrategie hilfreich ist. Das Integration Engineering (IE) ist bemüht, ein derartiges Vorgehen mit
zugehörigen Werkzeugen und Methoden im Sinne einer Ingenieurswissenschaft zu liefern.
Für Industrieunternehmen ist es ökonomisch nicht sinnvoll, Wissen über die Erstellung von Integrationslösungen aufzubauen. Aus der Sicht des Industrieunternehmens gibt es nach der Lösung
des Integrationsproblems keine Verwendung für diese Spezialkenntnisse mehr. Im Vergleich zum
Einkauf einer Dienstleistung ist die Lösung auf Basis eigener Ressourcen vergleichsweise unrentabel. Diese Nachfrage hat dazu geführt, dass sich hochspezialisierte Integrationsdienstleister am
Markt etablieren konnten. Für diese stellt das Lösen von Integrationsproblemen den Kern ihrer
Geschäftstätigkeit – und damit eine wiederkehrende Aufgabe – dar.
2.2
Integrationsmuster
Muster – im Englischen Patterns genannt – haben ihren Ursprung in den Arbeiten von Christopher
Alexander, welcher sie verwendete, um erprobte Lösungen für eine bautechnische Architektur zu
konservieren. Mit den Arbeiten zu Entwurfsmustern wurde dieses Konzept unter anderem von
Gamma et al. auf die Softwareentwicklung übertragen (vgl. [GHJV95]). Neben einer Vielzahl
an Mustern in unterschiedlichen Bereichen der Informatik gibt es auch Referenzarchitekturen
(vgl. [EHH+ 08, EV08]) oder Architektur-Blaupausen (vgl. [LSL+ 08]), welche einen analogen
Effizienzsteigerungsansatz verfolgen. In den folgenden Betrachtungen werden wir uns auf das
Konzept der Muster beschränken. Diese werden auf einem bestimmten Abstraktionsniveau als
Ausschnitte einer Architektur gesehen und können zu vollständigen Architekturen kombiniert
werden. Damit ist zu erwarten, dass sich die Ergebnisse dieser Arbeit auf Referenzarchitekturen
übertragen bzw. mit diesen kombinieren lassen.
In einem ersten Schritt soll nachfolgend eine Definition für Integrationsmuster hergeleitet werden, welche explizit die qualifizierenden Merkmale dieser Musterart berücksichtigt. Ziel ist es,
auf der Basis einer Definition möglichst auch diejenigen Muster als Integrationsmuster zu identifizieren, die nicht explizit als solche charakterisiert sind. Dazu soll die Prüfung der Existenz der
entsprechenden Merkmale herangezogen werden.
Im Rahmen einer Literaturanalyse wurden zahlreiche Definitionen untersucht, welche hier aus
Platzgründen nicht im Einzelnen vorgestellt werden können. Stattdessen konzentrieren wir uns
auf die extrahierten Merkmale.
23
Die Art der Elemente, welche in einem Integrationsmuster enthalten sind, werden wie folgt beschrieben. Der wesentliche Gegenstandsbereich der Integrationsmuster sind Komponentenarchitekturen (vgl. [EV08]). Damit wird implizit eine Grundvoraussetzung für die Notwendigkeit von
Integration, die Verteilung, benannt. In den Musterbeschreibungen werden neben Integrationsmustern noch domainspezifische bzw. Business-Komponenten unterschieden (vgl. [Mul95, S. 443],
[AKGV01]). Im Gegensatz zu den Business-Komponenten automatisieren Integrationsmuster keinerlei Geschäftsfunktionalität ([AKGV01], [ZMAV08, S. 1273]).
Die Relationen der Elemente zueinander lassen sich aus dem Beschreibungsumfang eines Integrationsmusters ablesen, welcher das Verhalten der beschriebenen Komponenten enthalten muss,
sowie deren Beziehungen untereinander, als auch die relative Positionierung in der Architektur
(vgl. [Mul95, S. 443]) darlegen soll.
Der Abstraktionsgrad von Integrationsmustern wird derart charakterisiert, als dass derartige Muster erprobte Lösungen für Integrationsprobleme (vgl. [JLSJ07, S. 52]), welche auch als Integrationskonflikte (vgl. [Mul95, S. 443] bezeichnet werden, darstellen.
Die Granularität der Beschreibung wird widersprüchlich charakterisiert. Integrationsmuster werden auf der einen Seite als Architekturmuster bezeichnet (vgl. [Mul95, S. 443]), auf der anderen
Seite aber auch als Standard-Integrationsarchitekturen (vgl. [EV08]).
Da Integrationsmuster als Vertreter der Musterart Architekturmuster beschrieben werden, wurden
in einem zweiten Schritt Definitionen von Architekturmustern untersucht, um weitere charakteristische Merkmale zu extrahieren. Auch hier stellen wir nur die extrahierten Merkmale vor.
Ein Architekturmuster beinhaltet als Bestandteile sogenannte Architekturelemente (vgl. [Fie00,
S. 13]), welche Rechenkomponenten oder einfach Komponenten (vgl. [GS93, S. 2]) darstellen.
Komponenten können von unterschiedlicher Granularität sein, weshalb zu den vermutlich atomaren Komponenten noch vordefinierte Subsysteme (vgl. [BMR+ 96]) und Konnektoren (vgl. [GS93,
S. 2]) gezählt werden. Mit dieser Eigenschaft wird die Parallelität zu den oben angeführten Eigenschaften von Integrationsmustern deutlich, wobei die Definitionen der Integrationsmuster die Art
der Komponenten präziser eingeschränkt haben.
Eine weitere Parallelität wird durch die Aussage deutlich, dass das Wesen eines Architekturmusters darin besteht, die strukturelle Organisation eines Systems in Form eines Schemas zu konservieren (vgl. [GS93, S. 2], [GAO95, S. 180], [BMR+ 96], [Has06, S. 48]). Diese Aussage steht
in perfekter Übereinstimmung mit der Definition eines Integrationsmusters, welches die Komponenten, deren Beziehungen untereinander und die relative Positionierung in einer Architektur
darlegen soll. Dies kann als weiterer Nachweis der Tatsache gewertet werden, dass es sich bei
Integrationsmustern um Architekturmuster handelt. Die Beziehungen untereinander werden im
Fall von Architekturmustern als die Beschreibung der Kombinationsmöglichkeiten der Elemente
genannt. Dabei werden Restriktionen in Form von Rollen, Eigenschaften und den zwischen den
Elementen erlaubten Beziehungen festgelegt (vgl. [GS93, S. 2], [Fie00, S. 13], [BMR+ 96]).
Ein Architekturmuster beschreibt keine Lösung eines singulären Problems, sondern eine Lösung
für eine Familie von Applikationen (vgl. [GAO95, S. 180]). Es wird also ein prinzipieller Lösungsansatz (vgl. [Fac09]) für Probleme dargestellt, die mehrfach vorkommen (vgl. [Heu07, S. 8]).
Da wir aus den bisherigen Ausführungen Integrationsmuster auf eine Abstraktionsebene mit Architekturmustern gestellt haben, ist der Zusammenhang zu anderen Mustern interessant. Diesen
24
stellen Winter et al. her. Architekturmuster werden in einer Hierarchie eingeordnet, in der Entwurfsmuster eine einzelne objektorientierte Anwendung, Architekturmuster die Komposition von
Komponenten zu Anwendungen und wiederum Architekturmuster für Unternehmensanwendungen die Vernetzung von Anwendungen (vgl. [WBF+ 09, S. 536]) beschreiben.
Bisher konnten die Schlussfolgerungen gezogen werden, dass es sich bei Integrationsmustern um
Architekturmuster handelt und dass ein Integrationsmuster und demzufolge auch ein Architekturmuster einen Ausschnitt oder eine vollständige Integrationsarchitektur beschreibt. Deshalb wird
im Folgenden der Gestaltungsgegenstand, also Definitionen von Integrationsarchitekturen, untersucht, um im Umkehrschluss festlegen zu können, was ein Integrationsmuster als Lösungsbereich
beschreiben darf.
Für Integrationsarchitekturen wird durch mehrere Autoren bekräftigt, dass sich die beschriebenen
Elemente einer Integrationsarchitektur auf der Abstraktionsebene von Softwarekomponenten bewegen (vgl. [KG98, S. 2], [DG02, S. 70], [PGKD00, S. 4]). Die Elemente werden des Weiteren als
Systeme für die Präsentations-, Daten- und Funktionsintegration (vgl. [Gei06, S. 122]), Services
(vgl. [EHH+ 08, S. 195]) bzw. als jede Technologie, Ressource oder Erweiterung beschrieben, die
für die Erreichung der Integration notwendig sind (vgl. [Erl09, S. 28]). Dabei werden die Hauptfunktionen von Integrationselementen in der Überbrückung von Inkompatibilitäten (vgl. [KG98,
S. 2]) bzw. von Heterogenität gesehen. Heterogenität kann in multiplen Formen auftreten und
von Systemplattformen (vgl. [Heu07, S. 10]), Technologien und Organisationen [VAC+ 09, S. 55]
ausgehen. Zusammenfassend dienen Integrationselemente der Lösung von Interoperabilitätsproblemen (vgl. [DG02, S. 70], [PGKD00, S. 4]). Darüber hinaus dienen die Elemente einer Integrationsarchitektur der Organisation einer transparenten Kommunikation (vgl. [Dou07, S. 176]).
Verteilte Funktionen und Daten (vgl. [Heu07, S. 10]), Datenbanken (vgl. [Gei06, S. 122]), Anwendungen (vgl. [Dou07, S. 176]) bzw. Systeme eines Unternehmens (vgl. [VAC+ 09, S. 55], [Erl09,
S. 28]) werden durch die Integrationsarchitektur, im Sinne der Verfeinerung einer Kopplungsarchitektur (vgl. [EHH+ 08, S. 195]), verbunden.
Die Relationen der Elemente untereinander werden nicht detailliert beschrieben, es wird lediglich
auf die Kombinierbarkeit der Elemente zu einer vollständigen Integrationsarchitektur hingewiesen (vgl. [KG98, S. 2], [PGKD00, S. 4]). Als Ziel wird die Schaffung einer integrierten Lösung
bzw. eines Megakonnektors genannt (vgl. [PGKD00, S. 4]).
Das Ausmaß der Konkretheit einer Integrationsarchitektur wird widersprüchlich beschrieben. Einige Definitionen verweisen darauf, dass es sich bei den beschriebenen Elementen um Middlewarekomponenten oder -dienste auf Basis standardisierter Schnittstellen und Protokolle handelt
(vgl. [Dou07, S. 176], [Heu07, S. 10], [HS06, S. 276], [Gei06, S. 122], [Erl09, S. 28], [EHH+ 08,
S. 207]), welche durch die Architektur geordnet werden (vgl. [Lut00, S. 66]).
Im Wiederspruch dazu stehen Aussagen, welche betonen, dass eine Integrationsarchitektur sich
von einer Middleware dahingehend unterscheidet, dass sie keine Funktionen beschreibt, welche
über die Lösung des Konflikts hinausgehen. Diese Abstraktion – im Vergleich zu einer konkreten
Realisierung – wird dadurch untermauert, dass die Elemente als Strategien und Pattern bezeichnet
werden (vgl. [PGKD00, S. 4]). Diese Argumentation wird durch Hepner et al. unterstützt, die eine
Integrationsarchitektur ebenfalls als Abstraktion hinsichtlich der Kernfunktionalität, die für eine
Integrationsstrategie benötigt wird, sehen. Dabei wird dies auf funktionale Elemente heruntergebrochen (vgl. [HGK+ 06, S. 538]).
25
Hagen und Schwinn definieren Integrationsarchitekturen auf den Ebenen a) Infrastruktur, b) Methoden und Prozesse und c) Steuerungsmaßnahmen zur Verbesserung der Applikationslandschaft
(vgl. [HS06]). Damit wird der Abstraktionsgedanke ebenfalls zum Ausdruck gebracht, der Gestaltungsbereich jedoch im Vergleich zu den anderen Definitionen wesentlich erweitert. Engels
et al. tragen einen zusätzlichen Gesichtspunkt zur Abstraktion bei, indem sie eine Integrationsarchitektur als Verfeinerung einer Kopplungsarchitektur im Sinne einer Konkretisierung sehen
(vgl. [EHH+ 08, S. 195]).
Die Ergebnisse der Literaturrecherche und die extrahierten Eigenschaften der untersuchten Begriffe sind in der nachfolgenden Tabelle 1 zusammengefasst.
Eigenschaft
Integrationsmuster
Architekturmuster
Integrationsarchitekturen
Art der Elemente
Integrations- und Businesskomponenten
Komponenten, Konnektoren, Subsysteme
Softwarekomponenten für die
Organisation von Kommunikation, Überbrückung von Heterogenität
Umfang
Verhalten der Komponenten, Beziehungen untereinander, relative Position in der Architektur
Rollen, Eigenschaften,
erlaubte Beziehungen
zw. den Elementen
Systeme für die Präsentations-,
Daten- und Funktionsintegration, Services, alles zur Erreichung von Integration notwendige
Funktion
Lösung für Integrationskonflikt
Beschreibung d. Organisation eines Systems
in Form eines Schemas
Überbrückung von Heterogenität, Organisation transparenter Kommunikation
Abstraktionsgrad
Architekturmuster oder
Standard-Integrationsarchitektur
Lösung für eine Familie von Applikationen,
prinzipieller Lösungsansatz
Middlewarekomponenten und
-dienste i.G.z. beschreibt nur
Funktionen zur Lösung von Integrationskonflikten, Verfeinerung einer Kopplungsarchitektur
Tabelle 1: Zusammenfassung der Eigenschaften von Integrations- und
Architekturmustern sowie Integrationsarchitekturen
Quelle: Eigene Darstellung
Die vorgestellten Eigenschaften lassen nun als Zusammenfassung die folgende Definition zu:
Integrationsmuster sind Architekturmuster, welche ausschließlich Komponenten, deren Eigenschaften, Beziehungen untereinander, sowie die relative Positionierung in einer Architektur beschreiben, welche zur Organisation der Kommunikation und Überbrückung von Heterogenität benötigt werden. Je nach Abstraktionsgrad des Musters können die Komponenten
Softwarekomponenten, Applikationen oder Subsysteme eines Systems sein. Eine Integrationsarchitektur entspricht der Komposition von Integrationsmustern bezüglich einer gegebenen
Problemstellung. Die Problemstellung wird vornehmlich durch die Anforderungen des betrieblichen Informationssystems an seine digitalen Aufgabenträger formuliert.
26
2.3
Ordnungssysteme
Grundsätzlich lassen sich Klassifikationen anhand der Anzahl der Wurzelelemente in monohierarchische und polyhierarchische Klassifikationen unterscheiden (vgl. [Uml99]). Weiterhin ist eine Unterscheidung in Präkombination bzw. Präkoordination und Postkoordination möglich, je
nachdem, ob die Klassifikation vom Allgemeinen zum Besonderen oder vom Besonderen zum
Allgemeinen ausgerichtet wird. Die erste Variante wird auch als analytisch und die zweite als
synthetisch bezeichnet (vgl. [Uml99]). Es lassen sich verschiedene Ordnungssysteme nach Fettke
und Loos unterscheiden. Dies sind Klassifikation ohne Überlagerung, Klassifikation mit Überlagerung, monohierarchische Klassifikation, polyhierarchicsche Klassifikation, Register, Facettenklassifikation, Begriffskombination, Schlagwortvergabe usw. (vgl. [FL00, S. 58]).
3 Problemadäquate Integrationsmusterklassifikation
Im vorherigen Kapitel wurden verschiedene Ordnungssysteme vorgestellt. Dieser Abschnitt befasst sich mit der Auswahl eines Ordnungsansatzes für die Systematisierung von Integrationsmustern. Im Folgenden werden zunächst in Musterpublikationen eingesetzte Ordnungssysteme
analysiert und ein Ansatz für unser Vorhaben ausgewählt. Anschließend wird der Ansatz im Detail vorgestellt und auf eine Auswahl von Integrationsmustern angewendet. Abschließend wird an
einem Beispiel gezeigt, wie Integrationsmuster anhand des Ordnungssystems ausgewählt werden
können.
3.1
Klassifikationsansatz
Da wir uns im Bereich künstlicher Systeme befinden und uns mit der Klassifikation von Lösungsmustern für Integrationsprobleme befassen, ist damit zu rechnen, dass zu den vorhandenen Lösungsansätzen weitere hinzukommen werden. Aus diesem Grund stellt sich die Anforderung der
Erweiterbarkeit an den zu wählenden Klassifikationsansatz. Da es sich bei der Klassifikation von
Mustern um einen Ansatz der Wiederverwendung handelt, kann auf die Erfahrung der Nutzung
von Klassifikationen im Bereich des Software-Reuse zurückgegriffen werden. Dort sind bereits
Ansätze auf Basis von Facettenklassifikationen umgesetzt (vgl. [PD91]).
Bereits in dem grundlegenden Werk von Gamma et al., welches Muster im Bereich des Software
Engineering bekannt machte, sind Überlegungen zur Ordnung des auf diese Art dokumentierten
Wissen enthalten (vgl. [GHJV95]). Fettke und Los vergleichen die angewandten Ordnungssysteme für eine Auswahl von Musterpublikationen (vgl. [FL01], Tabelle 2).
Dabei fällt auf, dass eine Facettenklassifikation überproportional häufig eingesetzt wird. Die einzelnen Klassifikationen weichen jedoch in den Klassenanzahlen deutlich voneinander ab, auch
gibt es keine publikationsübergreifende Klassifikation.
Die Basis der Facettenklassifikation wurde von S. R. Ranganathan im Rahmen der Colon-Klassifikation zuerst publiziert (vgl. [Ran67]). Grundlegender Ansatz ist es, ein Objekt nach mehreren
27
Quelle
Klassifikationsprinzip
Anzahl Klassen
[QC99]
Facettenklassifikation mit 4 Facetten
576
[Bus94]
Facettenklassifikation mit 3 Facetten
48
[GHJV95]
Facettenklassifikation mit 2 Facetten
6
[CS95], [VCK96],
[MRB98], [HFR99]
Klassifikation ohne Überlagerung
8-10
[GHJV93]
Hierarchische Klassifikation
7
[BMR 96]
Facettenkalssifikation mit 2 Facetten
42
[Tic97]
Hierarchische Klassifikation
111
[SRSS00]
Facettenklassifikation mit 2 Facetten
21
[Ris00]
Klassifikation mit Überlagerung
65
+
Tabelle 2: Bestehende Klassifikationsansätze in Patternpublikationen
Quelle: [FL01]
Begriffssystemen (Facetten) einordnen zu können. Es werden also mehrere Konstruktionsprinzipien (Klassifikation und Facettierung) zusammengeführt (vgl. [SS08, S. 275]). „Jeder Focus einer
jeden Facette wird durch eine Notation benannt, innerhalb der Facetten besteht – soweit sinnvoll
und notwendig – eine hierarchische Ordnung und die Facetten werden in einer bestimmten Reihenfolge (Citation order) abgearbeitet.“ [SS08, S. 275] Die Kombinationsmöglichkeiten, die sich
durch das Kombinieren von Foci der ersten mit denen der zweiten und weiteren Facetten ergeben, sind die Stärke dieses Ansatzes. Die Verknüpfung der Facetten entsteht erst, wenn man mit
Hilfe einer solchen Klassifikation klassiert. Vickery beschreibt fünf Schritte, die zum Aufbau einer derartigen Klassifikation bzw. für eine Facettenanalyse des Gegenstandsbereiches notwendig
sind: 1) Festlegen des Gegenstandsbereiches, 2) Formulierung von Facetten, 3) Strukturierung der
Facetten, 4) Dokumentation der Entscheidungen und Niederschrift offener Punkte und 5) Bestimmen der Reihenfolge der Facetten (vgl. [Vic66] zitiert nach [LB06, S. 185]).
3.2
Facetten der Klassifikation
Da wir uns für eine Facettenklassifikation entschieden haben und in der Einleitung der Gegenstandsbereich mit der Integration von Anwendungssystemen im Rahmen von betrieblichen Informationssystemen bereits festgelegt wurde, sind nun die einzelnen Facetten zu klären. Die Anforderungen an eine Facette bzw. die Facetten untereinander sind, dass sie disjunkt sind und dass
jede Facette für sich ein homogenes System darstellt (vgl. [SS08, S.286]). Wir können im Wesentlichen zwei Typen von Facetten unterscheiden, welche sich aus der im Software Engineering
allgemein üblichen Trennung in funktionale und nicht-funktionale Anforderungen herleiten und
dem Umstand geschuldet sind, dass wir den Zugang der Integrationsarchitekten und -entwickler
zu verfügbarem Lösungswissen verbessern wollen. Ebert unterscheidet funktionale Anforderungen, nicht-funktionale Anforderungen – auch Qualitätsanforderungen – sowie Randbedingungen
28
(vgl. [Ebe08, S. 28]). Demzufolge unterscheiden wir zum einen die Gruppe der funktionalen Facetten und zum anderen die Gruppe der nicht-funktionalen Facetten. Diese Differenzierung findet
sich auch bei Wagner in den Ausführungen zu den Gestaltungsmerkmalen von Integrationslösungen (vgl. [Wag06]). Randbedingungen klammern wir in den folgenden Betrachtungen aus.
3.2.1
Funktionale Facetten
Funktionale Anforderungen, die an eine Integrationslösung gestellt werden, lassen sich im Wesentlichen aus unserer Analyse der charakteristischen Merkmale von Integrationsmustern herleiten. An ein Integrationsmuster werden die Anforderungen der Überbrückung von Heterogenität
und die Anforderung der transparenten Organisation der Kommunikation gestellt. Aus diesem
Grund unterscheiden wir die Facette des Heterogenitätskonfliktes und die Facette der Kommunikation. Die funktionalen Gestaltungsmerkmale zur Kommunikation sind in Tabelle 3 dargestellt.
Merkmal
Ausprägungen
Interaktionsschicht,
Integrationsebene
Benutzerschnittstelle
Anwendungsfunktionalität
Datenhaltung
Beziehung zwischen den
Integrationsobjekten
Client/Server
Peer-to-Peer
push-pull
publish and subscribe
Kommunikationsmodell
synchron
asynchron
verbindungsorientiert
verbindungslos
one to one
many to one
one to many
many to many
Interaktionsmechanismus
Dateien
Nachrichten
Prozeduraufrufe
verteilte Objekte
Tabelle 3: Funktionale Gestaltungsmerkmale der Kommunikation
Quelle: [Wag06, S. 53ff.]
Die Merkmale der Interaktionsschicht können in eine eigene Facette übernommen werden. Das
Merkmal Kommunikationsmodell kann in die drei Facetten Synchronität, Verbindungsorientierung und Kardinalität aufgespalten werden. Die Beziehung zwischen den Integrationsobjekten
stellt aus unserer Sicht eine Kombination der Kardinalität der Kommunikationsteilnehmer in Verbindung mit der Interaktionsauslösung dar und wird deshalb nicht in die Klassifikation übernommen. Das Merkmal des Interaktionsmechanismus kann als Facette in die Klassifikation übernom-
29
men werden. Diese Aufspaltungen werden in Tabelle 4, welche die Facetten mit den zugehörigen
Foci enthält, zusammengefasst dargestellt.
Facette
Foci
Interaktionsschicht,
Integrationsebene
Benuzerschnittstelle
Anwendungsfunktionalität
Datenhaltung
Synchronität
synchron
asynchron
snyc.+async.
Verbindungsorientierung
verbindungsorientiert
verbindungslos
Kardinalität
one to one
many to one
one to many
many to many
Interaktionsmechanismus
Dateien
Nachrichten
Prozeduraufrufe
verteilte Objekte
Tabelle 4: Facetten und Foci der Kommunikation
Quelle: Eigene Darstellung
Zusätzlich benötigen wir noch weitere Facetten, die wir im Folgenden herleiten. Die Eigenschaft
der Heterogenitätsüberbrückung erfassen wir hier in dem Fokus auf Transformation. Dabei sind
als Ausprägungen nur Y für unterstützt und N für nicht unterstützt zulässig. Dies ist relativ ungenau, da in der wissenschaftlichen Literatur eine Vielzahl an differenzierten Heterogenitätskonflikten bekannt sind (vgl. [Vog06], [ABW+ 09]). Die Facette der Anbindung symbolisiert die Eignung eines Anwendungssystems an ein Integrationshilfsmittel o. ä. anzukoppeln. Ebenso wie bei
der Transformation werden nur die Foci Y und N für unterstützt bzw. nicht unterstützt verwendet. Gleiches gilt für die folgenden Facetten. Die Facette der Kommunikationsindirektion kennzeichnet, ob die Kommunikation zwischen Quellen und Empfänger – bei Einsatz des Musters –
nun immer über das durch das Muster eingefügte Architekturelement abgewickelt wird. Unter
Kenntnis der Kommunikationspartner wird verstanden, ob – dies gilt auch bei Vorliegen einer
Kommunikationsindirektion – der eigentliche Kommunikationspartner bekannt sein muss. Die
dynamische Registrierung dokumentiert, ob es möglich ist, die Kommunikationspartner zur Laufzeit zu verändern, indem z. B. ein Kommunikationspartner durch einen Neuen ersetzt wird. Die
Facette Abstraktionsart weist die Abstraktionsebene aus, auf der das Muster in der entsprechenden Quelle beschrieben wird und ist nur besetzt, wenn dies explizit genannt oder erkennbar ist.
Streng genommen stellt Konstruktionsprinzip keine Facette im eigentlichen Sinne dar, sondern
dient dem Aufbau einer solchen. Sofern in der Quelle dokumentiert wird hier das Konstruktionsprinzip des Musters festgehalten. Die Intention ist es, auf dieser Basis alle potentiellen Foci dieser
potentiellen Facette zu erfassen. Tabelle 5 fasst die weiteren Facetten zusammen.
30
Facette
Foci
Transformation
Y
N
Anbindung
Y
N
Kommunikationsindirektion
Y
N
Kenntnis der Kommunikationspartner
Y
N
dynamische Registrierung
Y
N
Abstraktionsart
Explorativ zur Erfassung
der Foki der Facette
Konstruktionsprinzip
Explorativ zur Erfassung
der Foki der Facette
Tabelle 5: Weitere funktionale Facetten
Quelle: Eigene Darstellung
3.2.2
Nicht-funktionale Facetten
Ein Ergebnis einer empirischen Untersuchung zu Integrationsdienstleistungen (vgl. [SG11]) ist
die Auflistung der Top 5 Gründe für die Auswahl einer Integrationslösung. Es ist festzustellen,
dass es sich dabei im Wesentlichen um nicht-funktionale Eigenschaften und Kostenfaktoren handelt. Die Kostenfaktoren können aus den Betrachtungen ausgeklammert werden, da sie auf der
Abstraktionsebene von Mustern nicht entscheidbar sind, sondern von konkreten Hilfsmitteln und
weiteren Faktoren abhängen. Die restlichen Qualitätsanforderungen lassen sich jedoch auf qualitativem Niveau auf der Ebene der Muster feststellen. Dabei können zwar nur Aussagen zur positiven
oder negativen Beeinflussung jedoch keine quantitativen Aussagen getroffen werden, es ist jedoch
so möglich, eine Auswahlentscheidung zu treffen, die auf der gezielten Selektion anhand dieser
Merkmale beruht. In der Literatur existieren eine Vielzahl an Qualitätsbegriffen und Ausprägungen einzelner Facetten. Aus diesem Grund haben wir uns auf die ISO 9000 Norm als Standard
fokussiert. Qualität ist die „Gesamtheit von Merkmalen einer Einheit bezüglich ihrer Eignung,
festgelegte und vorausgesetzte Erfordernisse zu erfüllen“ [SDW+ 10, S. 110]. Als Qualitätsmerkmale nach ISO/IEC 9126 lassen sich Funktionalität (Functionality), Zuverlässigkeit (Reliability),
Benutzbarkeit (Usability), Effizienz (Efficiency), Änderbarkeit (Maintainability) und Übertragbarkeit (Portability) mit entsprechenden Qualitätseigenschaften identifizieren. Bei der Analyse
der Muster wurden die beschriebenen Qualitätseigenschaften auf die ISO Definition abgebildet.
Dabei konnten nicht alle Qualitätseigenschaften in den Patternbeschreibungen wieder gefunden
werden (vgl. [Sch10, S. 18ff.]).
31
3.3
Auswahl bekannter Integrationsmuster
Muster haben sich im Rahmen der Entwicklung von Softwarelösungen seit längerer Zeit etabliert.
Die Anzahl an Publikationen, die sich mit der Beschreibung und Systematisierung von Mustern
befasst, ist hoch. Zudem befassen sich unterschiedliche Konferenzen mit diesem Thema (vgl.
PLoP [CS95, VCK96, MRB98, HFR99, MVN06] oder EuroPLoP [Mar05, LZ06, ZH07, NJ09,
NJZ+ 11]). Aus der Vielzahl an Musterbeschreibungen sollen die Muster identifiziert werden, die
für die Lösung eines Integrationsproblems relevant sind. Das Ergebnis der Literaturanalyse ist
der Tabelle 6 zu entnehmen. Darin sind ausgewählte Quellen inklusive der Anzahl der beschrieben Muster zusammengefasst. Einige Muster sind in verschiedenen Patternsystemen beschrieben,
was Quervergleiche zwischen verschiedenen Autoren ermöglicht. Zudem enthalten verschiedene
Publikationen Patternbeschreibungen, die im Rahmen der Integrierung nicht relevant sind. Somit
ist eine Aussage über die gesamte Anzahl von Integrationsmustern nicht möglich und die Zahlen
haben hinweisenden Charakter auf die Menge der zu analysierenden Muster.
Publikation Anzahl
Patterns
Anmerkungen
[HWB04]
[TRH+ 04]
[Lut00]
[AJ01]
[Mul95]
65
18
5
6
4
[HGRZ06]
56
[Fow03]
[TMQ+ 03]
[Erl09]
[HZ06]
[AZ05]
51
19
78
11
24
[Sch06]
4
[SRSS00]
[BHS07a]
17
114
Patternsystem für Integrationsmuster, nachrichtenorientiert
Patternbeschreibungen Integrationsmuster, nachrichtenorientiert
Musterbeschreibungen für EAI
Beschreibung von Integrationsstilen für große verteilte Anwendungen
Kein Bezug zu Mustern im Titel, aber Definition von Integrationsmuster enthalten
Patternkatalog im Anhang des Buches, Auflistung von Mustern aus anderen
Patternsystemen.
Muster für die Entwicklung von Enterprise Applications
Muster für die Entwicklung von Enterprise Applications
Muster für service-orientierte Architekturen
Muster für service-orientierte Architekturen
Klassifikation von bestehenden Architekturmustern basierend auf dem
Architektur-Sichtenmodell
Betrachtung der Design-Patterns aus [GHJV95] aus Sicht der Anwendungsintegration, Ableitung von vier neuen Integrationsmustern
Patternsystem für vernetzte Objekte
Patternsystem für verteilte Systeme
Tabelle 6: Übersicht der analysierten Patternliteratur
Quelle: eigene Darstellung
3.4
Klassifikation der gewählten Muster
Die folgenden Tabellen stellen die Klassifikation einer Auswahl an Mustern vor. Tabelle 7 bezieht
sich auf die funktionalen undTabelle 8 auf die nicht-funktionalen Facetten. Eskonnten nicht alle
Muster der zur Analyse vorgeschlagenen Literaturberücksichtigt werden, da dies aus Platzgründen nicht möglich ist.
32
Kenntnis der Kommunikationspartner
dynamische Registrierung
N
OOP
Y
N
N
OOP
Y
N
N
Y
N
N
Y
Y
Y
N
N
N
N
N
N
Y
Y
Y
N
N
N
Y
N
Y
Y
Y
Y
Y
Y
Y
N
Y
Y
Y
N
N
N
N
N
Y
Y
Y
Y
Y
1:1
Y
[BMR+ 96] FK
[TRH+ 04] FK
1:1
1:1
Y
Y
divide large Y
tasks
in
small steps
divide tasks Y
divide tasks Y
[TMQ+ 03] FK
1:n
N
1:n
N
Wrapper Facade
FK
sync.
Wrapper
[SRSS00,
S. 47ff.]
[Mul95]
FK
sync.
Wrapper
[Lut00]
FK
sync.
Integration Mediator
Mediator
Mediator Style
[Lut00]
[BHS07a]
[AJ01]
FK
FK
Message Router
Message Router
Message Router
[AJ01]
[HWB04]
[BHS07b]
FK
FK
FK
Broker
[BMR+ 96] FK
Broker
Direct Broker
Indirect Broker
Message Broker
Message Broker
[TMQ+ 03]
[TRH+ 04]
[TRH+ 04]
[TRH+ 04]
[HWB04,
S. 322ff.]
FK
FK
FK
FK
FK
Pipes and Filter
[HWB04,
S. 322ff.]
FK
Pipes and Filter
Pipes and Filter
Observer
Publish and Subscribe [TRH+ 04]
FK
Transformation
sync.
Anbindung
FK
Y
Y
m:1 Func.
calls
m:1 Func.
calls
m:1 Func.
calls
m:1 Func.
calls
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
N
Y
Kardinalität
[GZ02]
Synchronität
Component Wrapper
1:1
m:1
m:n versch.
m:n versch.
asyn.v.los 1:n
asyn.v.los 1:n
asyn.v.los 1:n
Nachr.
Nachr.
Nachr.
m:n Func.
calls
m:n
m:n
m:n
asyn.v.los m:n Nachr.
asyn.v.los m:n Nachr.
Kapselung,
Entkopplg.
Kapselung,
Entkopplg.
Kapselung,
Entkopplg.
Kapselung,
Entkopplg.
Entkopplg.
Entkopplg.
Entkopplg.
N
N
N
Entkopplg.
notify state N
changes
one way pro- Y
pagation
Abstraktionsart
Kommunikationsindirektion
N
FK
Konstruktionsprinzip
Y
[AJ01]
Interaktionsmechanismus
N
Adapter Style
Verbindungsorientierung
N
Quelle
Interaktionsschicht
Y
Muster
OOP
N
N
N
OOP
N
N
OOP
N
(Y)
Tabelle 7: Funktionale Klassifikation der Integrationsmuster
Quelle: Eigene Darstellung
33
Mediator
Integration Mediator
Mediator
Mediator
Mediator Style
[GHJV95, S. 277]
[Lut00, S. 71]
[BHS07a, S. 411]
[KG08]
[AJ01, S. 230]
Broker
Broker
Broker
Broker
Broker
[BMR+ 96, S. 119ff.]
[TMQ+ 03, S. 207f]
[KJ04, S. 581]
[HA07, S. 267f]
[MAR10]
Message Broker
[TRH+ 04, S. 240f]
Pipes and Filters
Pipes and Filters
Pipes and Filters
Pipes and Filters
Pipes and Filters
Pipes and Filters
Pipes and Filters
[GS93, S. 7f]
[Meu95, S. 437]
[BMR+ 96, S. 67ff.]
[HWB04, S. 70ff.]
[TRH+ 04, S. 292f]
[HA07, S. 267f]
[MAR10, S. 459]
+
Observer
Publish/Subscribe
[TMQ+ 03, S. 129f]
[TRH+ 04, S. 280f]
+
Message Router Style
Message Router
Message Router
[AJ01, S. 231]
[HWB04, S. 81]
[BHS07a, S. 232]
-
+/-
+
-
+
+
+
-
-
+
+
+/-
+
+
-
-
-
+
+
+
+
+/-
+
+
-
+/+
-
+/+/-
+
+
-
+/-
+
+
+
+
+
+
+
+
+
+
+/-
+/-
+
+
+
-
+/+
+
-
-
+
-
+
-/+
-
-
+
-
+
+
Tabelle 8: Nicht-funktionale Klassifikation der Integrationsmuster
Quelle: [Sch10]
34
+
+
+/+/+/+/-
-
-
+
+
+
+
-
-
-
+
Maintainability
[BMR+ 96, S. 274f]
[KG08]
Security
Proxy
Proxy
Interoperability
[GZ02, S. 7ff.]
[SRSS00, S. 47ff.]
[KG08]
Efficiency
Component Wrapper
Wrapper Facade
Facade
-
Reusability
[KG08]
[AJ01, S. 229]
Portability
Adapter
Adapter Style
Analyzability
Quelle
Reliability
Testability
Muster
-/+
3.5
Patternauswahl mit Hilfe der Klassifikation
Dieser Abschnitt dokumentiert das wesentliche Ergebnis dieses Beitrags und stellt den Nutzen
der erarbeiteten Klassifikation dar. Nehmen wir an, ein Integrationsdienstleister steht im Rahmen
seiner Tätigkeit vor der Aufgabe, ein Integrationsproblem zu lösen, welches eine Kommunikationsindirektion und eine Entkopplung der Kommunikationspartner beinhalten soll, so dass diese
sich wechselseitig nicht kennen müssen. Basierend auf unserer Klassifikation ergäbe sich eine
Vielzahl an potentiellen Lösungen, die von einem Wrapper bis zu Publish and Subscribe reichen.
Deshalb erscheint eine Verfeinerung der Suche geboten. Wird keine dynamische Registrierung
der Kommunikationspartner benötigt, so kommt immer noch das Wrapper Muster in Frage, als
Alternative aber auch ein Mediator. Beide Muster weisen jedoch unterschiedliche Qualitätseigenschaften auf. So bekommt ein Wrapper in der Effizienz eine negative Bewertung, wohingegen ein
Mediator indifferent – von einem Autor positiv und von einem anderem negativ – bewertet wird.
Bemerkenswert an dem Ergebnis ist die Tatsache, dass Muster als Lösungsalternativen erscheinen, die unter normalen Umständen nicht direkt miteinander verglichen worden wären. Auf der
Basis der vorgestellten Klassifikation ist es nun möglich, den Auswahlprozess besser zu strukturieren und Muster gezielt anhand von Qualitätsmerkmalen zu selektieren und ihre funktionalen
Eigenschaften zu vergleichen.
4 Zusammenfassung und Ausblick
In diesem Beitrag wurde der Einsatz von Integrationsmustern im Anwendungsbereich betrieblicher Informationssysteme motiviert, da diese in der Literatur zwar existieren, jedoch in der Praxis
nur unzureichend genutzt werden. Als Ursache wurde ein problematischer Zugang identifiziert,
welcher durch eine problemadäquate Klassifizierung behoben werden soll. Auf der Basis einer
merkmalsbasierten Definition wurde eine Auswahl von Integrationsmustern aus gängigen Publikationen getroffen. Diese wurden entsprechend der erarbeiteten Facetten mit Hilfe einer Facettenklassifikation klassiert. Auf Basis dieser Klassierung konnte eine problemadäquate Auswahl von
Mustern demonstriert werden. Die Suche nach Mustern hat eine größere Menge, als die hier klassierten Muster, ergeben. Für eine Erweiterung der hier vorgestellten Ergebnisse bieten sich zwei
Ansatzpunkte. Erstens, die aus den Betrachtungen ausgeklammerten aber identifizierten Muster
können in die Betrachtungen einbezogen werden. Zweitens, kann die Suche nach Integrationsmustern auf der Basis der vorgestellten Definition ausgeweitet werden, um die Grundgesamtheit der
Muster weiter zu erhöhen. Die Klassierung der Muster bezüglich der einzelnen Facetten lässt sich
verdichten, indem die unterschiedlichen Klassierungen identischer Muster durch unterschiedliche
Autoren zusammengeführt werden. Darüber hinaus lassen sich der Klassifikation auf Grund der
Tatsache, dass es sich um eine analytisch-synthetische Klassifikation handelt, weitere Facetten
hinzufügen, um die Auswahl von Mustern auf dieser Basis zu verbessern. Die bereits enthaltenen
Muster müssen dann bezüglich dieser Facette klassifiziert werden. Wie bereits angedeutet, lassen sich auf der Basis dieser Klassifikation unter Erweiterung um das Grundsätzliche Konstruktionsprinzip die Variabilitätspunkte der einzelnen Muster identifizieren. Diese können in einer
separaten Systematik zusammengeführt werden. Als Beispiel sei stellvertretend das Konzept der
Kommunikationsindirektion genannt, welches bei einer Vielzahl an Mustern Anwendung findet.
35
Literatur
[ABW+ 09] Agt, Henning ; Bauhoff, Gregor ; Widiker, Jürgen ; Kutsche, Ralf-D. ; Milanovic, Nikola:
Model-based semantic conflict analysis for software and data integration scenarios / TU Berlin,
Professoren der Fak. IV. Berlin, 2009. – Forschungsbericht
[AJ01]
Andersson, Jonas ; Johnson, Pontus: Architectural Integration Styles for Large-Scale
Enterprise Software Systems. In: 5th International Enterprise Distributed Object Computing
Conference (EDOC 2001), 4-7 September 2001, Seattle, WA, USA, Proceedings, IEEE
Computer Society, 2001. – ISBN 0–7695–1345–X, S. 224–236
[AKGV01] Adams, Jonathan ; Koushik, Srinivas ; Galambos, George ; Vasudeva, Guru: Patterns for
e-business: A Strategy for Reuse. IBM Press, 2001
http://www.ibm.com/developerworks/patterns/. – ISBN 1–931182–02–7
[AZ05]
Avgeriou, Paris ; Zdun, Uwe: Architectural Patterns Revisited - A Pattern Language. In:
[LZ06], S. 431–470
[BHS07a] Buschmann, Frank ; Henney, Kevlin ; Schmidt, Douglas: Wiley Software Patterns Series. Bd. 4:
Pattern-Oriented Software Architecture: A Pattern Language for Distributed Computing. John
Wiley & Sons, 2007. – ISBN 978–0–470–05902–9
[BHS07b] Buschmann, Frank ; Henney, Kevlin ; Schmidt, Douglas: Wiley Software Patterns Series. Bd. 5:
Pattern-Oriented Software Architecture: On Patterns and Pattern Languages. John Wiley &
Sons, 2007. – ISBN 978–0–471–48648–0
[BMR+ 96] Buschmann, Frank ; Meunier, Regine ; Rohnert, Hans ; Sommerlad, Peter ; Stal, Michael:
Wiley Software Patterns Series. Bd. 1: Pattern-Oriented Software Architecture: A System of
Patterns. John Wiley & Sons, 1996. – ISBN 0–471–95869–7
[Bus94]
Buschmann, Frank: Software architecture and reuse-an inherent conflict? In: Software Reuse:
Advances in Software Reusability, 1994. Proceedings., Third International Conference on
IEEE, 1994, S. 218–219
[CS95]
Coplien, James O. (Hrsg.) ; Schmidt, Douglas C. (Hrsg.): Pattern Languages of Program
Design. Bd. 1. Addison-Wesley, 1995 . – ISBN 0–201–60734–4
[DG02]
Davis, L. ; Gamble, Rose: Identifying evolvability for integration. In: Dean, John C. (Hrsg.) ;
Gravel, Andrée (Hrsg.): COTS-Based Software Systems, First International Conference,
ICCBSS 2002, Orlando, FL, USA, February 4-6, 2002, Proceedings Bd. 2255. Berlin,
Heidelberg : Springer-Verlag, 2002 (Lecture Notes in Computer Science). – ISBN
3–540–43100–4, S. 65–75
[Dou07]
Dous, Malte: Kundenbeziehungsmanagement für interne IT-Dienstleister: Strategischer
Rahmen, Prozessgestaltung und Optionen für die Systemunterstützung. Duv, zugl. Dissertation
Universität St. Gallen, 2007
[Ebe08]
Ebert, C.: Systematisches Requirements-Engineering und Management: Anforderungen
ermitteln, spezifizieren, analysieren und verwalten. dpunkt-Verl., 2008
[EHH+ 08] Engels, Gregor ; Hess, Andreas ; Humm, Bernhard ; Juwig, Oliver ; Lohmann, Marc ; Richter,
Jan-Peter ; Voss, Markus ; Willkomm, Johannes: Quasar Enterprise: Anwendungslandschaften
serviceorientiert gestalten. dpunkt.verlag, 2008. – ISBN 978–3–89864–506–5
[Erl09]
36
Erl, Thomas: SOA Design Patterns. Prentice Hall International, 2009. – ISBN
0–13–613516–1
[EV08]
Engels, Gregor ; Voss, Markus: Quasar Enterprise. In: Informatik-Spektrum 31 (2008), Nr. 6,
S. 548–555
[Fac09]
Fachgruppe Software Architektur: Glossar.
http://sdqweb.ipd.kit.edu/mediawiki-fg/index.php/Kategorie:Glossar.
Version: 2009
[Fie00]
Fielding, Roy T.: Architectural styles and the design of network-based software architectures.
Irvine, University of California, Diss., 2000
[Fis08]
Fischer, Daniel.: Unternehmensübergreifende Integration von Informationssystemen:
Bestimmung des Integrationsgrades auf elektronischen Marktplätzen. Gabler Verlag, zugl.
Dissertation TU Ilmenau, 2008
[FL00]
Fettke, Peter ; Loos, Peter: Komponentendokumentationen - Eine systematische Bewertung
von Ordnungssystemen aus formaler Sicht. In: Turowski, Klaus (Hrsg.): Modellierung und
Spezifikation von Fachkomponenten: Workshop im Rahmen der MobIS 2000 Modellierung
betrieblicher Informationssysteme, Siegen, Deutschland, 12. Oktober 2000, Tagungsband.
Siegen. Siegen, 2000, S. 51–70
[FL01]
Fettke, Peter ; Loos, Peter: Zur Klassifikation von Patterns. Version: 2001.
http://archiv.tu-chemnitz.de/pub/2001/0076. In: Net.ObjectDays, Organisatoren
der (Hrsg.): Net.ObjectDays 2001 - Tagungsband, 10. - 13. September 2001,
Messekongresszentrum Erfurt. 2001. – ISBN 3–00–008419–3, 251–252. – Erfurt
[Fow03]
Fowler, Martin: Patterns of Enterprise Application Architecture. Boston, MA, USA :
Addison-Wesley, 2003. – ISBN 0–321–12742–0
[Gab08]
Gabriel, Roland: Informationssystem. In: Kurbel, Karl (Hrsg.) ; Becker, Jörg (Hrsg.) ;
Gronau, Norbert (Hrsg.) ; Sinz, Elmar (Hrsg.) ; Suhl, Leena (Hrsg.): Enzyklopädie der
Wirtschaftsinformatik – Online-Lexikon. 4. Auflage. München : Oldenbourg
Wissenschaftsverlag, 2008. – http://www.oldenbourg.de:
8080/wi-enzyklopaedie/lexikon/informationssysteme/uebergreifendes/
Kontext-und-Grundlagen/Informationssystem, Abruf: 26.07.2011
[GAO95]
Garlan, David ; Allen, Robert ; Ockerbloom, John: Architectural mismatch or why it’s hard
to build systems out of existing parts. (1995). – ISSN 0270–5257
[Gei06]
Geib, Malte: Kooperatives Customer-Relationship-Management Fallstudien und
Informationssystemarchitektur in Finanzdienstleistungsnetzwerken. Springer-Verlag, zugl.
Dissertation Universität St. Gallen, 2006
[GHJV93] Gamma, Erich ; Helm, Richard ; Johnson, Ralph ; Vlissides, John: Design patterns: Abstraction
and reuse of object-oriented design. In: Nierstras, Oscar M. (Hrsg.): ECOOP’ 93 Object-Oriented Programming: 7th European Conference Kaiserslautern, Germany, July
26-30, 1993 Proceedings Bd. 707. Berlin, Heidelberg, New York : Springer-Verlag, 1993
(Lecture Notes in Computer Science). – ISBN 978–3–540–57120–9, S. 406–431
[GHJV95] Gamma, Erich ; Helm, Richard ; Johnson, Ralph ; Vlissides, John: Design patterns: elements of
reusable object-oriented software. Boston, MA, USA : Addison-Wesley, 1995. – ISBN
0–201–63361–2
[GS93]
Garlan, David ; Shaw, Mary: An introduction to software architecture. In: Advances in
software engineering and knowledge engineering 1 (1993), S. 1–40
[GZ02]
Goedicke, Michael ; Zdun, Uwe: Piecemeal legacy migrating with an architectural pattern
language: a case study. In: Journal of Software Maintenance and Evolution: Research and
Practice 14 (2002), Nr. 1, S. 1–30
37
[HA07]
Harrison, Neil B. ; Avgeriou, Paris: Leveraging architecture patterns to satisfy quality
attributes. In: Oquendo, Flavio (Hrsg.): Software Architecture: First European Conference,
ECSA 2007 Madrid, Spain, September 24-26, 2007 Proceedings Bd. 4758. Berlin, Heidelberg :
Springer-Verlag, 2007 (Lecture Notes in Computer Science). – ISBN 3–540–75131–9, S.
263–270
[Has06]
Hasselbring, Wilhelm: Software-Architektur. In: Informatik-Spektrum 29 (2006), Nr. 1, S.
48–52
[Heu07]
Heutschi, R.: Serviceorientierte Architektur: Architekturprinzipien und Umsetzung in die
Praxis. Springer-Verlag, 2007
[HFR99]
Harrison, Neil (Hrsg.) ; Foote, Brian (Hrsg.) ; Rohnert, Hans (Hrsg.): Pattern Languages of
Program Design. Bd. 4. Addison-Wesley, 1999 . – ISBN 0–201–31011–2
[HGK+ 06] Hepner, M. ; Gamble, R. ; Kelkar, M. ; Davis, L. ; Flagg, D.: Patterns of conflict among
software components. In: J. Syst. Softw. 79 (2006), Nr. 4, S. 537–551. – ISSN 0164–1212
[HGRZ06] Herden, Sebastian ; Gómez, Jorge M. ; Rautenstrauch, Claus ; Zwanziger, André:
Software-Architekturen für das E-Business: Enterprise-Application-Integration mit verteilten
Systemen. Berlin Heidelberg : Springer-Verlag, 2006. – ISBN 10 3–540–25821–3
[HS06]
Hagen, Claus ; Schwinn, Alexander: Measured Integration - Metriken für die
Integrationsarchitektur. In: Schelp, Joachim (Hrsg.) ; Winter, Robert (Hrsg.):
Integrationsmanagement - Planung, Bewertung und Steuerung von Applikationslandschaften.
Berlin, Heidelberg : Springer-Verlag, 2006. – ISBN 978–3–540–20506–7, S. 267–292
[HWB04]
Hohpe, Gregor ; Woolf, Bobby ; Brown, Kyle: Enterprise integration patterns: Designing,
building, and deploying messaging solutions. Boston, MA, USA : Addison-Wesley
Professional, 2004. – ISBN 0–321–20068–3
[HZ06]
Hentrich, Carsten ; Zdun, Uwe: Patterns for Process-Oriented Integration in Service-Oriented
Architectures. In: [ZH07], S. 141–198
[JLSJ07]
Juric, M.B. ; Loganathan, R. ; Sarang, P. ; Jennings, F.: SOA Approach to Integration - XML,
Web services, ESB, and BPEL in real-world SOA projects. Birmingham - Mumbai : Packt
Publishing, 2007
[KG98]
Keshav, R. ; Gamble, R.: Towards a taxonomy of architecture integration strategies. In: ISAW
’98: Proceedings of the third international workshop on Software architecture. New York, NY,
USA : ACM, 1998. – ISBN 1–58113–081–3, S. 89–92
[KG08]
Khomh, Foutse ; Guéhéneuc, Yann-Gaël: An empirical study of design patterns and software
quality. Montreal, Quebec, Canada : University of Montreal, Januar 2008 (1315). –
Forschungsbericht
[KJ04]
Kircher, Michael ; Jain, Prashant: Wiley Software Patterns Series. Bd. 3: Pattern-Oriented
Software Architecture: Patterns for Resource Management. John Wiley & Sons, 2004. – ISBN
0–470–84525–2
[LB06]
La Barre, Kathryn: The use of faceted analytico-synthetic theory as revealed in the practice of
website construction and design, faculty of the University Graduate School in partial
fulfillment of the requirements for the degree Doctor of Philosophy in the School of Library
and Information Science, Indiana University, Diss., 2006
[LSL+ 08]
Liebhart, D. ; Schmutz, G. ; Lattmann, M. ; Heinisch, M. ; Welkenbach, P. ; Könings, M. ;
Pakull, P.: Integration Architecture Blueprint: Leitfaden zur Konstruktion von
Integrationslösungen. Hanser Verlag, 2008
38
[Lut00]
Lutz, Jeffrey C.: EAI Architecture Patterns. In: EAI Journal (2000)
[LZ06]
Longshaw, Andy (Hrsg.) ; Zdun, Uwe (Hrsg.): EuroPLoP’ 2005, Tenth European Conference
on Pattern Languages of Programs, Irsee, Germany, July 6-10, 2005. UVK Universitätsverlag Konstanz, 2006 . – ISBN 978–3–87940–805–4
[Mar05]
Marquardt, Klaus (Hrsg.): EuroPLoP’ 2004, Proceedings of the 9th European Conference on
Pattern Languages of Programs, 2004. UVK - Universitätsverlag Konstanz, 2005 . – ISBN
3–87940–796–7
[MAR10]
Majidi, E. ; Alemi, M. ; Rashidi, H.: Software Architecture: A Survey and Classification. In:
Communication Software and Networks, 2010. ICCSN’10. Second International Conference
on IEEE, 2010, S. 454–460
[Meu95]
Meunier, Regine: The Pipes and Filters Architecture. In: [CS95], S. 427–440
[MRB98]
Martin, Robert (Hrsg.) ; Riehle, Dirk (Hrsg.) ; Buschmann, Frank (Hrsg.): Pattern Languages
of Program Design. Bd. 3. Addison-Wesley, 1998 . – ISBN 0–201–43304–4
[Mul95]
Kapitel Pattern-based integration architectures. In: Mularz, Diane E.: Pattern Languages of
Program Design. Addison-Wesley, 1995, S. 441 – 452
[MVN06]
Manolescu, Dragos (Hrsg.) ; Völter, Markus (Hrsg.) ; Noble, James (Hrsg.): Pattern
Languages of Program Design. Bd. 5. Pearson Education, 2006 . – ISBN 0–321–32194–4
[NJ09]
Noble, James (Hrsg.) ; Johnson, Ralph (Hrsg.): Lecture Notes in Computer Science. Bd. 5770:
Transactions on Pattern Languages of Programming I. Berlin, Heidelberg : Springer-Verlag,
2009. – ISBN 978–3–642–10831–0
[NJZ+ 11]
Noble, James (Hrsg.) ; Johnson, Ralph (Hrsg.) ; Zdun, Uwe (Hrsg.) ; Wallingford, Eugene
(Hrsg.) ; Avgeri, Paris (Hrsg.) ; Harrison, Neil B. (Hrsg.): Lecture Notes in Computer Science.
Bd. 6510: Transactions on Pattern Languages of Programming II: Special Issue on Applying
Patterns. Heidelberg, Dordrecht, London, NewYork : Springer-Verlag, 2011. – ISBN
978–3–642–19431–3
[PD91]
Prieto-Diaz, Ruben: Implementing faceted classification for software reuse. In:
Communications of the ACM 34 (1991), Nr. 5, S. 88–97
[PGKD00] Payton, Jamie ; Gamble, R. ; Kimsen, S. ; Davis, L.: The opportunity for formal models of
integration. In: 2nd IEEE International Conference on Information Reuse and Integration
(IRI-2000), 2000
[QC99]
Quibeldey-Cirkel, Klaus: Entwurfsmuster: Design Patterns in der objektorientierten
Softwaretechnik. Berlin, Heidelberg, New York : Springer-Verlag, 1999. – ISBN
3–540–65825–4
[Ran67]
Ranganathan, S. R.: A descriptive account of the colon classification. Asia Pub., 1967
[Ris00]
Rising, Linda: The pattern almanac 2000. Boston, MA, USA : Addison-Wesley, 2000. – ISBN
0201615673
[Sch06]
Schwinn, Alexander: Entwurfsmusterbasierter Ansatz zur Systematisierung von
Applikationsbeziehungen im Business Engineering. In: österle, H. (Hrsg.) ; Winter, R.
(Hrsg.) ; Brenner, W. (Hrsg.): Integrationsmanagement - Planung, Bewertung und Steuerung
von Applikationslandschaften, Springer-Verlag, 2006. – ISBN 978–3–540–29480–1, S. 31–59
[Sch10]
Schmidt, Johannes: Integrationsmuster: übersicht und Vorschlag einer übergreifenden
Systematisierung, Universität Leipzig, Diplomarbeit, 2010
39
[SDW+ 10] Schatten, Alexander ; Demolsky, Markus ; Winkler, Dietmar ; Biffl, Stefan ;
Gostischa-Franta, Erik ; östreicher, Thomas: Best Practice Software-Engineering: Eine
praxiserprobte Zusammenstellung von komponentenorientierten Konzepten, Methoden und
Werkzeugen. Heidelberg : Spektrum Akademischer Verlag, 2010. – ISBN
978–3–8274–2486–0
[SG11]
Stefan, Fred ; Gebauer, Martin: Stand der Integration aus der Sicht von
Integrationsdienstleistern - Ergebnisse einer qualitativen empirischen Untersuchung. (2011)
[SRSS00]
Schmidt, Douglas C. ; Rohnert, Hans ; Stal, Michael ; Schultz, Dieter: Wiley Software
Patterns Series. Bd. 2: Pattern-Oriented Software Architecture: Patterns for Concurrent and
Networked Objects. New York, NY, USA : John Wiley & Sons, Inc., 2000. – ISBN
0–471–60695–2
[SS08]
Stock, Wolfgang G. ; Stock, Mechtild: Wissenspräsentation: Informationen auswerten und
bereitstellen. München : Oldenbourg, 2008. – ISBN 3486584391
[Thr08]
Thränert, Maik: Integration-Engineering – Grundlagen, Vorgehen, Fallstudien, Universität
Leipzig, Diss., 2008
[Tic97]
Tichy, W.F.: A catalogue of general-purpose software design patterns. In: Technology of
Object-Oriented Languages and Systems, 1997. TOOLS 23. Proceedings IEEE, 1997. – ISBN
081868383X, S. 330–339
[TMQ+ 03] Trowbridge, David ; Mancini, Dave ; Quick, Dave ; Hohpe, Gregor ; Newkirk, James ;
Lavigne, David: Enterprise Solution Patterns Using Microsoft .NET - Version 2.0. Microsoft
Press, 2003 (Patterns & Practices).
http://msdn.microsoft.com/en-us/library/ms998469.aspx. – ISBN
0–7356–1850–X
[TRH+ 04] Trowbridge, David ; Roxburgh, Ulrich ; Hohpe, Gregor ; Manolescu, Dragos ; Nadhan, E.G.:
Integration Patterns. Microsoft Press, 2004 (Patterns & Practices).
http://msdn.microsoft.com/en-us/library/ms978729.aspx. – ISBN
0–7356–1850–X
[Uml99]
Umlauf, Konrad: Einführung in die bibliothekarische Klassifikationstheorie und -praxis.
http://www.ib.hu-berlin.de/~kumlau/handreichungen/h67/. Version: 1999
[VAC+ 09] Vogel, Oliver ; Arnold, Ingo ; Chughtai, Arif ; Ihler, Edmund ; Kehrer, Timo ; Mehlig, Uwe
; Zdun, Uwe: Software-Architektur Grundlagen - Konzepte - Praxis. Spektrum Akademischer
Verlag, 2009
[VCK96]
Vlissides, John M. (Hrsg.) ; Coplien, James O. (Hrsg.) ; Kerth, Norman L. (Hrsg.): Pattern
Languages of Program Design. Bd. 2. Addison-Wesley, 1996 . – ISBN 0–201–89527–7
[Vic66]
Vickery, B.C.: Faceted classification schemes. Bd. 5. Graduate School of Library Service,
Rutgers, the State University, 1966
[Vog06]
Vogler, P.: Prozess-und Systemintegration: Umsetzung des organisatorischen Wandels in
Prozessen und Informationssystemen. Deutscher Universitätsverlag, zugl. Habilitation,
Universität St. Gallen 2004, 2006
[Wag06]
Wagner, Holger: Der Entwicklungsaufwand der Anwendungssystemintegration: Eine
empirische Untersuchung der Einflussfaktoren, Universität zu Köln, Diss., 2006
[WBF+ 09] Winter, Robert ; Brocke, Jan v. ; Fettke, Peter ; Loos, Peter ; Junginger, Stefan ; Moser,
Christoph ; Keller, Wolfgang ; Matthes, Florian ; Ernst, Alexander: Patterns in der
Wirtschaftsinformatik. In: Wirtschaftsinformatik 51 (2009), Nr. 6, S. 535–542
40
[ZH07]
Zdun, Uwe (Hrsg.) ; Hvatum, Lise B. (Hrsg.): EuroPLoP’ 2006, Eleventh European
Conference on Pattern Languages of Programs, Irsee, Germany, July 5-9, 2006. UVK Universitätsverlag Konstanz, 2007 . – ISBN 978–3–87940–813–9
[ZMAV08] Zhao, L. ; Macaulay, L. ; Adams, J. ; Verschueren, P.: A pattern language for designing
e-business architecture. In: The Journal of Systems & Software 81 (2008), Nr. 8, S. 1272–1287
41
42
Softwareentwicklung im Full-Service E-Commerce
Peter Hänsgen1 , Heiko Kern2
1
Intershop Communications AG
Intershop Tower
07740 Jena
p.haensgen@intershop.de
2
Universität Leipzig, Institut für Informatik,
Abteilung Betriebliche Informationssysteme
Johannisgasse 26
04103 Leipzig
kern@informatik.uni-leipzig.de
Kurzfassung: E-Commerce ist ein komplexes Geschäftsmodell, welches in einem globalen
Maßstab für kleine und mittlere Unternehmen nur schwer alleine erfolgreich zu bewältigen ist.
Einen Ausweg bietet das Outsourcing der E-Commerce-Aktivitäten zu einem externen Dienstleister, dem Full-Service-Anbieter. Im Gegensatz zu herkömmlicher E-Commerce-Software,
welche jeweils speziell für einen einzelnen Kunden erstellt und betrieben wird, stellt ein solches Mandanten-Szenario besondere Anforderungen an die Entwicklung der Software für den
Full-Service-Anbieter, welche in diesem Artikel diskutiert werden.
1 Einleitung
E-Commerce, also der elektronische Handel mit Gütern und Dienstleistungen über das Internet,
ist ein aktuell mit enormem Tempo wachsender Wirtschaftszweig. Diese Entwicklung wird sich
nach aktuellen Prognosen auch in den nächsten Jahren fortsetzen [Hau10]. Dennoch darf nicht
darüber hinweggesehen werden, dass nach Erfahrung der Autoren die Einrichtung und der erfolgreiche Betrieb einer E-Commerce-Anwendung wie z. B. eines Online-Shops für B2C-Kunden oft
mit beträchtlichen Hürden verbunden ist. Dabei sind einerseits technische Probleme zu lösen, andererseits auch operative Tätigkeiten und Schwierigkeiten zu meistern. Im Folgenden werden,
ohne Anspruch auf Vollständigkeit, einige typische Bereiche exemplarisch benannt, die bei der
Umsetzung einer E-Commerce-Strategie zwingend betrachtet und umgesetzt werden müssen:
Shop-Technologie: Es wird eine Shop-Software benötigt, welche den Shop im Internet für die
Kunden zur Verfügung stellt. Grundsätzlich kann die Software komplett neu entwickelt
werden, aber oft ist es günstiger, ein existierendes Standardprodukt zu verwenden und anzupassen.
43
Implementierung: Die Software muss um fehlende Funktionen erweitert werden oder existierende Funktionen sind anzupassen. Die Integration mit einer bereits vorhandenen IT-Infrastruktur ist zu implementieren. Die Installation muss eingerichtet werden.
Design: Der Webauftritt muss grafisch gestaltet werden, so dass er für die angepeilte Zielgruppe
attraktiv ist. Ergonomie und Barrierefreiheit müssen gewährleistet werden.
Hosting: Die Shop-Software muss in einem Rechenzentrum betrieben werden. Dabei fallen typische administrative Tätigkeiten an, wie die Bereitstellung und Wartung der benötigten
Hardware, Betriebssysteme und weiteren Softwaresysteme wie Datenbanken usw. Weiterhin muss die Datensicherheit gewährleistet werden, es sind Backups zu erstellen usw.
Inhaltserstellung: Die Inhalte, welche im Shop dargestellt werden sollen, müssen erstellt werden. Dies beinhaltet die Beschreibungen von Produkten, Abbildungen, Testberichte, technische Datenblätter, Pflegeanleitungen, Aufbauanleitungen usw. Oft müssen Daten von verschiedenen Quellen (z. B. Lieferanten, Herstellern) aggregiert und aufbereitet werden. Die
Versionierung der Inhalte (z. B. für Sommer- und Winterkatalog) kann notwendig sein.
Online Marketing: Der Shop muss im Netz beworben werden, um potentielle Kunden zu erreichen. Die Angebote müssen in Suchmaschinen gefunden werden, es müssen MarketingMaßnahmen durchgeführt werden, die Webseite sollte personalisiertes Verhaltung aufweisen, Gutscheine müssen verwaltet werden, Affiliates müssen angebunden werden.
Fulfillment: Fulfillment bezeichnet die eigentliche logistische Abwicklung einer Bestellung. Es
umfasst Dinge wie die Auftragserfassung, -bearbeitung und -korrektur, Fakturierung, Bestandsverwaltung, Lagerhaltung, Auslieferung, Exportbearbeitung, Frachtkoordination und
Versand, Retourenannahme, Debitorenverwaltung und Inkasso.
Bezahlvorgänge: Gekaufte Artikel müssen bezahlt werden, dazu sind verschiedene Zahlungsmethoden zu unterstützen. Der Bezahlvorgang muss weitere Faktoren berücksichtigen, wie
Transportkosten, notwendige Bestellkorrekturen wegen Nichtlieferbarkeit, Rückbuchung
nach Stornierungen usw.
Validierungen und Bonitätsprüfungen: Angaben des Kunden wie z. B. Rechnungs- und Lieferadressen sind ggf. auf ihre Korrektheit zu überprüfen. Für bestimmte Zahlungsarten (z. B.
Ratenzahlung) sind Informationen über die Bonität der Kunden einzuholen.
Call Center: Für telefonische Rückfragen der Kunden nach einer Bestellung, z. B. zur Beratung,
Reklamation, Stornierung oder zur Beantwortung von anderen Fragen ist eine Kontaktmöglichkeit bereitzustellen.
Customer Relationship Management: Die Kundenbasis ist zu pflegen und zu analysieren, um
den Online-Umsatz zu steigern.
Multi-Channel Integration: Falls neben dem Online-Auftritt noch stationäre Niederlassungen
existieren, sind möglicherweise verschiedene Absatzkanäle miteinander zu synchronisieren
und zu vernetzen. Werbemaßnahmen zwischen der Online- und der Offline-Welt müssen
abgestimmt werden, online erworbene Artikel können möglicherweise im Laden abgeholt
oder zurückgegeben werden.
44
Business Intelligence: Der Erfolg des Auftritts ist zu messen, wichtige Kennzahlen sind zu erfassen und in geeigneten Reports auszuwerten. Mit den ermittelten Daten muss der gesamte
Online-Auftritt sowie der Rest des Prozesses optimiert werden. Dazu ist ein Reporting über
die gesamte Prozesskette notwendig.
Rechtliche Situation: Für den jeweiligen Zielmarkt existieren rechtliche Rahmenbedingungen,
welche einzuhalten sind. Dies betrifft Dinge wie AGB’s, Altersklassifikationen, Rückgabefristen usw.
Für jeden der genannten sowie die zahlreichen weiteren Bereiche ist durch den Betreiber der ECommerce-Anwendung technisches und fachliches Wissen aufzubauen. E-Commerce ist ein sich
ständig wandelndes Geschäft, so dass ein permanenter Aufwand zur Entwicklung und Pflege entsteht. Der Shop ist niemals „fertig“, sondern unterliegt einer ständigen Weiterentwicklung und
Verbesserung. Wenn man dabei noch berücksichtigt, dass wir im Zeitalter der Globalisierung leben und die genannten Punkte in der Zukunft auch auf einer globalen Ebene betrachtet und gelöst
werden müssen, wird verständlich, dass typische kleine oder mittlere Unternehmen, welche ECommerce betreiben und sich so einen neue Absatzkanal erschließen möchten, damit überfordert
sind.
2 Full-Service E-Commerce als Geschäftsmodell
Eine mögliche Lösung des Problems liegt in der Etablierung eines neuen Geschäftsmodells, bei
dem E-Commerce als Outsourcing-Prozess betrachtet wird. Dabei werden die komplette Einrichtung und der komplette operative Betrieb der E-Commerce-Seite (also des Online-Shops) von
einem Spezialisten, dem Full-Service-Anbieter übernommen. Das Modell stellt damit eine Fortsetzung des Outsourcing-Gedanken dar, welcher sich gegenwärtig unter dem Stichwort „Cloud
Computing“ besonderer Popularität erfreut [Ree09]. In der aktuellen Diskussion geht es dabei
vor allem um die Auslagerung von IT-Dienstleistungen in verschiedensten Formen wie Platformas-a-Service (PaaS), Infrastructure-as-a-Service (IaaS) oder Software-as-a-Service (SaaS). Das
Full-Service-Modell ist die konsequente Fortführung dieses Trends über den Rahmen von ITDienstleistungen hinaus, indem vollständige Geschäftsprozesse ausgelagert werden. Es stellt nicht
nur „weiche Dienste“ (also Software) bereit, sondern beinhaltet auch „harte Dienste“, wie Lagerhaltung, Transport usw. Jede E-Commerce-Anwendung ist einzigartig. Es gibt wesentliche
Unterschiede im „Look & Feel“ für den Kunden und den verfügbaren Funktionen. Diese Unterschiede lassen sich auch nicht eliminieren, denn sie sind ein wesentliches Alleinstellungsmerkmal
und ein grundlegender Bestandteil der Marketingstrategie jedes Unternehmens. Damit wird es immer erforderlich sein, eine Full-Service-Anwendung gemäß den Wünschen und den Bedürfnissen
des Mandanten anzupassen. Es entsteht also ein grundlegender Interessenskonflikt zwischen dem
Mandanten und dem Full-Service-Anbieter, für den ein geeigneter Kompromiss gefunden werden
muss:
Individualisierte Lösung: Der Mandant wünscht sich ein maßgeschneidertes System, welches
exakt auf ihn zugeschnitten ist und seine Bedürfnisse erfüllt. Gleichzeitig möchte er von
45
den Vorteilen des Outsourcing profitieren, d. h. seine E-Commerce Aktivitäten vollständig
auslagern, schnell online gehen und nach Bedarf skalieren können.
Standardisierte Lösung: Aus Sicht des Full-Service-Anbieters muss jedoch so ein System aus
möglichst vielen Standardkomponenten bestehen und möglichst wenig individuelle Merkmale enthalten, um die erforderlichen Implementierungsaufwände für ihn zu minimieren.
Er möchte möglichst viele Mandanten auf einer einheitlichen Plattform betreiben.
Der Full-Service-Anbieter kann in vielen Fällen selbst nicht die vollständige E-Commerce-Prozesskette aus einer Hand anbieten. Er tritt zwar gegenüber dem Mandanten als Generalunternehmer auf, ist aber gezwungen, selbst einzelne Bestandteile des Prozesses an andere Anbieter auszulagern bzw. von ihnen einzukaufen. Als Folge entsteht ein komplexes Geflecht von Integrationen
mit Systemen weiterer Anbieter, welches in Abbildung 1 beispielhaft dargestellt ist. Die Integration muss einerseits auf einer technischen Ebene erfolgen, andererseits sind entsprechende
organisatorische und vertragliche Voraussetzungen (z. B. Service Level Agreements) zu schaffen.
Im Gegensatz zum klassischen E-Commerce, bei dem ein Softwareunternehmen, welches an der
Programmierung und der Installation der Shop-Software beteiligt ist, vor allem über die Lizenzierung der Software und über Beratungsleistungen Umsatz generiert, ist bei einem Full-ServiceModell eine Beteiligung am Umsatz des Online-Shops üblich. Damit findet aus Sicht des Softwareunternehmens, welches als Full-Service-Anbieter auftreten möchte, eine Lastenumkehr statt:
die Implementierungskosten für die Anpassung der Software äußern sich nicht mehr als Einnahmen, sondern als Kosten. Für eine erfolgreiche Umsetzung des Geschäftsmodells sind also zur
klassischen Softwareherstellung völlig entgegengesetzte Ziele anzuvisieren:
Maximierung des Online-Umsatzes: Der Full-Service-Anbieter ist aufgrund seiner Umsatzbeteiligung daran interessiert, den Umsatz des Shops zu steigern.
Minimierung der Kosten: Der Full-Service-Anbieter muss gleichzeitig die Kosten für die Einführung neuer Mandanten und die Pflege existierender Systeme minimieren.
Aus diesen Rahmenbedingungen ergeben sich Anforderungen an die Software für Full-ServiceSysteme, welche im folgenden Kapitel 3 näher betrachtet werden. Die Betrachtung beschränkt
sich an dieser Stelle vorrangig auf nicht-funktionale Anforderungen, welche die wichtigsten Qualitätsmerkmale [Mic09] eines Full-Service-Systems betreffen. Die eigentlichen funktionalen Anforderungen bezüglich der konkreten E-Commerce-Prozesse würden den Rahmen dieses Beitrags
sprengen. Sie sind auch nicht allgemeingültig für andere Full-Service-Scenarien, so dass sie an
dieser Stelle nicht näher betrachtet werden können.
3 Anforderungen an Full-Service-Anwendungen
3.1
Integrationsfähigkeit
Ein Full-Service-Anbieter kann in der Regel nicht alle benötigten Schritte aus der E-CommerceWertschöpfungskette selber anbieten. Er ist daher gezwungen, zahlreiche andere Systeme von
46
Fulfillment
Versand
Lager
Warenwirtschaft
Rücksendung
Warenlieferung
Produktdaten
Berichte
Retouren
Lieferankündigung
Bestellstatus
Produktdaten
Lagerbestand
Kommunikation
Berichte
Mandant
Bestellungen
Buchhaltung
Geld
E-Mail
Waren
Kunde
Bestellung
E-Mail
Payment-Anbieter
Full-Service-Anwendung
Kundendaten
Shop Manager
Steuerung
Prüfung, Reservierung
Kataloge
Adressvalidierung
Adressprüfung
Produkte
Preise
Bonitätsprüfung
Bonitätsprüfung
Abbildung 1: Vereinfachtes Beispiel für ein Full-Service-E-Commerce-Szenario
externen Dienstleistern in seine Plattform zu integrieren. Weiterhin wird es notwendig sein, auch
die existierenden IT-Systeme der Full-Service-Mandanten zu berücksichtigen. Entsprechend der
jeweiligen Zielarchitektur müssen auch hier zahlreiche Systeme miteinander verbunden werden.
Es ist in Praxis in der Regel nicht möglich, die denkbaren Integrationen mit externen Systemen
auf eine kleine Menge von Standardprotokollen (z. B. XML-Webservices) zu beschränken. Ganz
im Gegenteil, in der Realität existieren oftmals eine große Zahl von proprietären Schnittstellen
und Protokollen, welche jeweils separat für jedes anzubindende System zu implementieren und
zu unterstützen sind.
Lösungsstrategien: Existierende Konzepte aus dem Bereich der Service-orientierten Architekturen (SOA) [Lie07] können aufgegriffen und genutzt werden. Typische Integrationsmuster sind zu identifizieren und umzusetzen, um die Variantenvielfalt einzudämmen und den
Pflegeaufwand zu reduzieren. Es muss eine Menge von Standardanbindungen entwickelt
werden, die projektübergreifend wiederverwendet werden können und aus der für neue Projekte eine Auswahl getroffen werden kann.
47
3.2
Anpassbarkeit
Die Individualisierung des Auftritts für einen Mandanten ist unumgänglich, also muss die Plattform so gestaltet sein, dass sie einfache Mechanismen zur Anpassung an spezifische Wünsche
und zur Erweiterung um fehlende Funktionalitäten erlaubt. Betroffen sind alle Anwendungsteile,
angefangen von der Präsentationsschicht bis hin zur Datenschicht oder zur Integration externer
Mandantensysteme.
Lösungsstrategien: Definition von expliziten Schnittstellen zur Anpassung. Klare Trennung von
Anpassungen und Standardprodukt. Ev. Nutzung von MDSD-Konzepten zur Modellierung
von Anpassungen [SV06].
3.3
Wiederverwendbarkeit
Die Kosten für die Einführung neuer Mandanten lassen sich nur minimieren, indem eine maximale Wiederverwendung von existierenden Software-Komponenten und Prozessen zwischen
verschiedenen Mandanten erreicht wird.
Lösungsstrategien: Ein gangbarer Weg ist es, für verschiedene Bereiche der Anwendung mehrere alternative Standardkomponenten anzubieten, aus welchen die für den Mandanten
am besten geeignete Kombination ausgewählt werden kann. Dabei ist zu beachten, dass
nicht alle Kombinationsmöglichkeiten zulässig sind. So kann beispielsweise nicht jeder
Fulfillment-Anbieter mit allen Zahlungsmethoden umgehen, oder ein Anbieter von Bonitätsüberprüfungen kann diese Dienstleistungen nur für ein bestimmtes Land oder eine bestimmte Region zur Verfügung stellen. Die Zulässigkeit von Kombinationen muss daher
vorab explizit ausgedrückt werden und bei der Planung des Systems überprüfbar sein. Abbildung 2 zeigt ein Beispiel für Abhängigkeiten bei der Komponentenauswahl.
3.4
Komposition zur Laufzeit
Das herkömmliche Produktlinienvorgehen, bei dem mittels Featuremodellen und Variantenmodellen kundenspezifische Softwareprodukte gemäß der ausgewählten Feature-Kombination erzeugt
werden [GCS04], kann in einer Full-Service-Anwendung oft nicht genutzt werden. Es soll schließlich nicht für jeden Mandanten ein völlig neues Softwareprodukt erzeugt werden, sondern er muss
aus Gründen des Resourcen-Sharings gemeinsam mit anderen Mandanten in der gleichen Umgebung („Shared Environment“) gehostet werden.
Damit ergibt sich die Notwendigkeit, aus der Gesamtheit der zur Verfügung stehenden Funktionalität eine spezifische Auswahl und Konfiguration für einen Mandanten erst zur Laufzeit zu
kombinieren. Ein Mandantensystem ist also nur durch eine logische Sicht repräsentiert, aber nicht
notwendigerweise durch eine physisch getrennte Installation.
48
Abbildung 2: Vereinfachtes Beispiel für ein Full-Service-E-Commerce-Szenario
Neben dem Betrieb von verschiedenen Mandanten auf einer geteilten Instanz gibt es noch weitere Gründe, welche die Nutzung verschiedener Komponenten zur Laufzeit erfordern. So kann
es beispielsweise notwendig sein, in einem System, welches eine globale Reichweite haben soll,
je nach Herkunft des Kunden verschiedene externe Dienstleister zu integrieren oder einen unterschiedlichen Funktionsumfang des Shops anzubieten. So müssen z. B. für die Adressvalidierung
von Kundenadressen je nach Region des Kunden verschiedene Dienstleister genutzt werden, weil
jeder nur eine bestimmte Region abdecken kann. Prinzipiell könnte dabei jeder beliebige Laufzeitparameter als Kriterium für die Auswahl einer zu nutzenden Software- bzw. Prozesskomponente
dienen.
Lösungsstrategien: Die Anwendung für einen Mandanten muss komplett zur Laufzeit beschrieben werden, d. h. es wird ein Anwendungsmodell in der Full-Service-Plattform benötigt.
Dies kann analog zu bekannten Konzepten aus Produktlinienvorgehen gestaltet sein, allerdings wird es zur Konfiguration des Systems zur Laufzeit benutzt und nicht zur Erzeugung
seiner Implementierung.
3.5
Portabilität
Ein primäres Ziel des Online-Shops ist sein Umsatzwachstum. Ausgehend von einem kleinen
System wird bei steigenden Umsätzen und damit steigender Last eine immer größere und aufwändigere Systemlandschaft benötigt. Folgendes Szenario ist vorstellbar:
• Shared Environment: Zu Beginn wird der Shop als ein neuer Mandant in einem „Shared
Environment“ eingerichtet, d. h. viele Mandanten teilen sich die gleichen Ressourcen.
49
• Dedicated Environment: Bei erfolgreichem Wachstum wird der Ressourcenbedarf des Mandanten irgendwann zu groß für eine geteilte Umgebung, so dass er in einen eigenen Bereich
(„Dedicated Environment“) umzieht.
• Insourcing: Theoretisch kann es bei weiterem Wachstum zu der Situation kommen, dass die
ursprünglichen Vorteile, die sich für den Mandanten durch das Outsourcing ergeben haben,
vollständig obsolet geworden sind. Damit kann es notwendig sein, dass gesamte System
zum Mandanten zurückzuholen und unter seiner eigenen Regie „inhouse“ zu betreiben.
Lösungsstrategien: Die Full-Service-Plattform kann aus Mandantensicht wie eine „virtual machine“ aufgefasst werden, welche die Laufzeitumgebung für seine spezifische Konfiguration darstellt. Ein Umzug würde damit die Instantiierung seiner Konfiguration (d. h. seiner
mandantenspezifischen Daten und Anpassungen) in einer anderen Laufzeitumgebung bedeuten. Wird die Full-Service-Plattform als eigenständiges Softwareprodukt angeboten, ist
ihr Betrieb auch außerhalb des Full-Service-Anbieters möglich.
3.6
Wartbarkeit
Ein Full-Service-System kann potentiell auf eine große Anzahl von Mandanten, die auf der gleichen Plattform betrieben werden, anwachsen (»100). Die Menge an Mandanten stellt besondere
Anforderungen und erfordert besondere Maßnahmen hinsichtlich der Migrationsfähigkeit und
Wartbarkeit der Plattform. Es muss möglich sein, innerhalb kürzester Zeiträume das System auf
eine neue Softwareversion zu heben, ohne den laufenden Betrieb der E-Commerce-Aktivitäten
signifikant zu beeinträchtigen.
Lösungsstrategien: Der Prozess der Migration kann in zwei Schritte zerlegt werden: in eine Vorbereitungsphase und in eine operative Phase. In der Vorbereitungsphase erfolgt zunächst die
Ermittlung notwendiger Korrekturen, die Anpassung des mandantenspezifischen Codes an
die neue Version, die Erprobung von automatischen Migrationsschritten mit Migrationswerkzeugen usw. Die operative Phase umfasst anschließend die eigentliche Migration des
laufenden Systems.
Die Migration lässt sich durch verschiedene Maßnahmen vereinfachen:
• API-Stabilität: Das System sollte grundsätzlich eine stabile API besitzen. Neue Versionen
sollten abwärtskompatibel sein, sofern möglich. Veraltete API’s müssen markierbar sein,
um ihre weitere Nutzung schrittweise zu reduzieren.
• Erweiterungskonzept: Das System sollte genau definierte Erweiterungspunkte bereitstellen,
welche für Anpassungen genutzt werden können. Damit können die durchgeführten Anpassungen später sehr leicht identifiziert werden. Definierte Erweiterungspunkte sind auch
einfacher noch langfristig zu unterstützen.
• Differenzberechnung: Änderungen zwischen Versionen müssen genau ermittelbar sein, um
Migrationsaufwände und potentielle Risiken rechtzeitig abschätzen zu können.
50
• Werkzeugunterstützung: Die Migration sollte möglichst durch automatische Werkzeuge unterstützt werden, welche Code- und Datenmigrationen durchführen können.
3.7
Verfügbarkeit
Im Online-Handel, insbesondere im B2C-Handel, stellt die Verfügbarkeit des Shops eine zunehmend wichtigere Kenngröße dar. Einerseits steigen die erzielten Umsätze permanent, so dass der
Shop immer wichtiger wird und Ausfallzeiten immer weniger toleriert werden können. Andererseits gibt es im Zuge der Globalisierung immer weniger Zeiträume, in denen Wartungsmaßnahmen durchgeführt werden können und das System zu diesem Zwecke einfach „offline“ geschaltet
werden kann. Die Sicherstellung einer maximalen Verfügbarkeit ist damit ein primäres Entwurfsziel für Full-Service-Anwendungen.
Lösungsstrategien: Die Gesamtverfügbarkeit eines Systems ergibt sich aus dem Produkt der
Einzelverfügbarkeiten der Subsysteme. Um die Gesamtverfügbarkeit aus Sicht des Kunden, der einen Online-Shop benutzt, zu maximieren, muss also die Anzahl der Systeme, die
an der Bearbeitung seiner Aktionen unmittelbar beteiligt sind, minimiert werden, sowie die
Einzelverfügbarkeit maximiert werden. Dem gegenüber steht allerdings die Notwendigkeit
der Integration zahlreicher externer Systeme, welche die Gesamtverfügbarkeit verschlechtern.
• Redundanz: Mehrfache Auslegung aller Systeme, erhöht allerdings die Kosten. Eine Abwägung muss stattfinden, ob die erhöhten Einnahmen die erhöhten Kosten rechtfertigen.
• Entkoppelung: Entkoppelung von nachgelagerten Systemen durch asynchrone Verarbeitung.
• Erhöhung der Fehlertoleranz: Fehlertolerantes Design der Anwendung, so dass sie auf Fehler reagieren kann, ohne den kompletten Prozess abbrechen zu müssen. Beispielsweise kann
eine Retry-Logik versuchen, einen Vorgang mehrfach zu wiederholen, bis er irgendwann
erfolgreich war.
3.8
Skalierbarkeit
Skalierbarkeit aus technischer Sicht bezeichnet die Fähigkeit des Systems, durch das Hinzufügen
weiterer Ressourcen seine Verarbeitungskapazität zu erhöhen. Sehr oft wird dabei an die Erhöhung der Hardwarekapazität zur Erhöhung der möglichen Anzahl paralleler Nutzer gedacht, aber
diese Sichtweise ist nicht ausreichend.
Im E-Commerce existieren zahlreiche verschiedene Geschäftsmodelle, welche jeweils durch verschiedene Mengengerüste charakterisiert werden können. Im B2C-Umfeld sind beispielsweise
sehr große Nutzerzahlen und „Page Impressions“ typisch, während im B2B-Bereich oft zahlreiche externe Systeme von Lieferanten und Geschäftspartnern zu integrieren sind. Große Unterschiede gibt es auch in den verschiedenen Industriebereichen. So sind in dem einen Online-Shop
51
mehrere Millionen verschiedene Produkte zu verwalten, während ein anderer Shop vielleicht nur
wenige Hundert Produkte im Sortiment hat. Das Full-Service-System muss also hinsichtlich jeder denkbaren Größe skalieren können: von wenigen Nutzern bis zu Millionen von Nutzern, von
wenigen Produkten bis zu Millionen von Produkten, von wenigen Artikeln pro Bestellung bis zu
Hunderten von Artikeln pro Bestellung usw.
Lösungsstrategien: Die typischen Maßnahmen zur technischen Skalierung (Redundanz, Load
Balancing usw.) müssen natürlich unterstützt werden. Es ist aber nicht ausreichend, Skalierbarkeit nur als einen Parameter der Ausbaufähigkeit des Systems durch das Hinzufügen von
neuer Hardware zu betrachten. Es muss auch eine funktionale Anpassung der Applikation
an die jeweiligen Zielgrößen stattfinden. Dabei ist es oft nicht möglich, eine Lösung zu finden, die alle Kriterien gleichzeitig gleich gut erfüllen kann. Stattdessen muss die Plattform
es erlauben, aus verschiedenen Alternativen, die jeweils für unterschiedliche Kennzahlen
optimiert wurden, eine für den jeweiligen Mandanten geeignete Auswahl zu treffen.
3.9
Performance
Der gleichzeitige Betrieb mehrere Mandanten auf der gleichen Laufzeitumgebung kann zu Performance-Interferenzen zwischen ihnen führen. Wenn einer oder mehrere Mandanten zugleich
rechen- oder datenintensive Prozesse starten, kann sich dies auch negativ auf die Performance des
Shops für andere Mandanten auswirken. Insbesondere für die Storefront, also das Web-Interface
für die Online-Kunden, müssen solche Effekte vermieden werden.
Lösungsstrategien:
• Hardware-Skalierung: Einsatz von mehr Hardware zur Erhöhung der Verarbeitungskapazität, bedeutet aber auch höhere Kosten.
• Offline-Processing: Durchführung von rechen- oder datenintensiven Vorgängen in separaten Backend-Systemen, Entkopplung der Online-Last von der Backend-Last.
3.10
Sicherheit
Das Vertrauen der Kunden in die Sicherheit eines Shops ist essentiell für den Online-Handel. Daneben muss auch der Full-Service-Mandant darauf vertrauen können, dass seine Geschäftsdaten
beim Full-Service-Anbieter in guten Händen sind. Die Full-Service-Plattform muss darum sicherstellen, dass sämtliche Daten und Funktionen nur für authorisierte Personen sichtbar und ausführbar sind, um Datenverluste, Datendiebstahl oder Datenmanipulationen auszuschließen. Mandanten müssen voneinander isoliert werden.
52
4 Zusammenfassung
Full-Service E-Commerce ist ein neues Geschäftsmodell, welches besondere Herausforderungen
an die Erstellung der Software hinsichtlich ihrer Qualitätsmerkmale, ihres Funktionsumfangs, ihres Entwicklungsprozesses und ihres Einsatzes stellt. Im Beitrag wurden einige wesentliche Punkte beschrieben und mögliche Lösungsstrategien aufgezeigt. Existierende Techniken wie SOA,
Produktlinien-Technologien oder Modellgetriebene Softwareentwicklung sind für die Lösung der
Teilprobleme zwar hilfreich, aber oftmals nicht ausreichend, weil sie sich vor allem auf die traditionelle Entwicklung von statischen Softwareanwendungen konzentrieren.
Im Full-Service-Bereich tritt aber die Komposition von Anwendungen zur Laufzeit einer FullService-Plattform in den Vordergrund. Es ist daher notwendig, dieses Verhalten näher zu untersuchen und Softwarearchitekturen und Methoden zu entwickeln, welche die Dynamik und die spezifischen Anforderungen von Full-Service-Anwendungen in geeigneter Weise berücksichtigen.
Neue Anwendungen müssen durch die Rekombination existierender Komponenten auf Basis einer einheitlichen Plattform als Laufzeitumgebung möglichst ohne jeglichen Programmieraufwand
erstellbar sein.
Literatur
[GCS04] Greenfield, Jack ; Cook, Steve ; Short, Keith: Software factories: Assembling applications with
patterns, models, frameworks, and tools. Indianapolis, Ind : John Wiley & Sons, 2004. – ISBN
978–0471202844
[Hau10] Hauptverband des Deutschen Einzelhandels: E-Commerce-Umsatz 2010: HDE erwartet 23,7
Mrd. Euro. http://www.ebusiness-handel.de/pb/site/eco/node/142076/Lde/index.
html. Version: 2010. – letzter Aufruf 10.1.2011
[Lie07] Liebhart, Daniel: SOA goes real: Service-orientierte Architekturen erfolgreich planen und einführen. München : Hanser Fachbuchverlag, 2007. – ISBN 978–3446410886
[Mic09] Microsoft Application Architecture Guide. 2nd edition. [Redmond, Wash.] : Microsoft Press, 2009.
– ISBN 978–0735627109
[Ree09] Reese, George: Cloud Application Architectures: Building Applications and Infrastructure in the
Cloud]. Sebastopol, CA : O’Reilly Media, Inc., 2009. – ISBN 978–0596156367
[SV06] Stahl, Thomas ; Völter, Markus: Model-Driven Software Development – Technology, Engineering, Management. John Wiley & Sons Inc., 2006. – ISBN 978–0470025703
53
54
Erweiterung eines MDSD-Systems zur Unterstützung von
Produktlinien duch Feature-Modelle∗
Rolf-Helge Pfeiffer, Peter Hänsgen
Intershop Communications AG
Intershop Tower
07740 Jena
h.pfeiffer@uni-jena.de, p.haensgen@intershop.de
Kurzfassung: Featuremodelle sind eine Schlüsseltechnologie für die Modellierung von Softwareproduktlinien. Sie können als höchste Abstraktionsstufe in der modellgetriebenen Softwareentwicklung eingesetzt werden. Besteht schon eine Infrastruktur zur modellgetriebenen
Softwareentwicklung, d. h. Modelltransformatoren und Codegeneratoren existieren bereits, so
wirft die Einführung von Softwareproduktlinien in eine solche Infrastruktur Probleme auf.
Diese Arbeit beschreibt eine bestehende Infrastruktur zur modellgetriebenen Softwareentwicklung, mögliche Änderungen daran zur Unterstützung von Softwareproduktlinien und stellt eine
Lösung mittels Aspektmodellen vor.
1 Einleitung
Softwareproduktlinien werden bisher auf Quellcodeebene [pur08] oder auf einzelnen Modellen
[AC04], die zur Quellcodegenerierung genutzt werden, implementiert.
Das Konzept der Modellgetriebenen Softwareentwicklung (MDSD) wurde in den letzten Jahren
so verbessert, dass es in der Praxis mehr und mehr akzeptiert und zur Softwareentwicklung eingesetzt wird. Im Zuge dieser Fortentwicklung sind Werkzeuge wie das Eclipse Modeling Framework
(EMF) [emf08] oder openArchitectureWare (oAW) [oaw08b] entstanden und stehen für den Entwickler zur Verfügung. Das Hauptaugenmerk der Softwareentwicklung verschiebt sich deshalb
von der Entwicklung von Quellcode hin zur Entwicklung von Modellen. Softwarehersteller wie
Intershop tätigten hohe Investitionen, z. B. für die Entwicklung von Metamodellen, Modelltransformatoren und Codegeneratoren, um MDSD in den Softwareentwicklungsprozess zu integrieren.
Aufgrund der Tatsache, dass Intershop Softwareprodukte herstellt, die eine Systemfamilie formen, und da einzelne Produkte einer Systemfamilie effizient duch den Einsatz von Produktlinien
hergestellt werden können, ist der folgerichtige Schritt die Einführung der Unterstützung von
Produktlinien in die bestehende MDSD-Infrastruktur.
Diese Arbeit beschreibt, wie eine bestehende MDSD-Infrastruktur angepasst werden kann, um
Softwareproduktlinien zu unterstützen. Dazu werden um Aspektmodelle angereicherte Feature∗ Publiziert in Proceedings of the Second Workshop on MDSD Today 2008, Hrsg.: Peter Friese, Simon Zambrovski,
Frank Zimmermann. Shaker Verlag GmbH, Oktober 2008.
55
modelle genutzt. Es stellt sich die Frage, wie die Informationen über Variabilität, die in den Featuremodellen ausgedrückt sind, in den Prozess der automatischen Softwaregenerierung einbezogen
werden können.
Diese Arbeit ist wie folgt strukturiert: Im Abschnitt 2 werden wichtige Begriffe und Definitionen eingeführt. Abschnitt 3 stellt eine bestehende MDSD-Infrastruktur vor. Im darauffolgenden
Abschnitt wird erklärt, wie Feature- und Aspektmodelle dazu genutzt werden können, um das
Verhalten eines MDSD-Systems zu verändern. Anschließend werden themenbezogene Arbeiten
in Abschnitt 5 vorgestellt und die Arbeit mit einem Fazit in Abschnitt 6 abgeschlossen.
2 Begriffe und Definitionen
2.1
Modellgetriebene Softwareentwicklung
Modellgetriebene Softwareentwicklung (MDSD) ist der Einsatz von Computerprogrammen zur
Softwareentwicklung, welche Modelle ineinander transformieren oder beliebige textuelle Artefakte aus Modellen erzeugen. Modelle können u. a. verschiedene Abstraktionsebenen und technische Domänen beschreiben. Textuelle Artefakte sind Einheiten ohne ein präzise definiertes Metamodell, z. B. Quellcode in einer Programmiersprache, Konfigurationsdateien, Dokumentationen,
usw.
2.2
Feature-Modellierung
Wir benutzen den Begriff der Featuremodelle analog zu [CA05]. Featuremodelle sind Featurediagramme plus zusätzliche Informationen. Unter Features verstehen wir Systemeigenschaften, die
Gemeinsamkeiten und Unterschiede von Systemen einer Familie ausdrücken und die für bestimmte Parteien von Bedeutung sind. Variantenmodelle sind Instanzen von Featuremodellen, die eine
gültige Auswahl von Features enthalten. Featurediagramme sind grafische Repräsentationen von
Features und deren Relationen. Zur Darstellung von Featurediagrammen gibt es eine Vielzahl von
Notationen, z. B. [KCH+ 90, KLD02, Rie03, GFd98, KC04].
2.3
Aspektorientierte Modellierung
Aspektmodelle sind Modelle, die sich auf ein anderes Modell beziehen, nämlich auf ein Basismodell. Sie können als Differenzenmodelle verstanden werden. Sie beschreiben eine Differenz
zwischen einem Basismodell und dem Modell, das beim Mischen von Aspektmodellen in ein
Basismodell entsteht. Aspektmodelle können also positive und negative Variabilität in Bezug auf
ein Basismodell ausdrücken. Dabei bedeutet positive Variabilität das Hinzufügen von Modellelementen und negative Variabilität das Entfernen von Modellelementen eines Basismodells. Wir
nennen den Prozess der Anwendung von positiver und negativer Variabilität auf ein Basismodell,
56
anders als in aspektorientierten Programmiersprachen, nicht weben, sondern mischen, da aspektorientierte Programmiersprachen im Allgemeinen nicht das Entfernen von Programmkonstrukten
erlauben. Analog zu [GV07] und da wir XWeave zur Implementierung der Transformation des
Mischens von Modellen verwenden, werden in unserer Arbeit Aspekte asymmetrisch in Basismodelle gemischt, d. h. die Operation des Mischens von Modellen (Operator: ⊗) ist unidirektional.
Beispiel: B ⊗ A = B’, wobei B ein Basismodell und A ein Aspektmodell ist. Die umgekehrte
Reihenfolge der Operanden ist ungültig.
3 Ein existierendes MDSD-System
Intershop ist ein führender Hersteller von E-Commerce-Software. MDSD wird als Schlüsseltechnologie zur Effizienzsteigerung in der Softwareentwicklung angesehen, darum wurde eine
MDSD-Infrastruktur entwickelt, welche aus domänenspezifischen Modellen sowie kaskadierenden Modelltransformations- und Codegenerierungsschritten besteht. Abbildung 1 zeigt den schematischen Aufbau der aktuell verwendeten MDSD Infrastruktur. Die bunten Kästchen stellen domänenspezifische Modelle auf jeweils einem bestimmten Abstraktionsniveau dar. Die verschiedenen Abstraktionsniveaus werden in dieser Arbeit Modellierungsebenen genannt. Alle dargestellten Modelle wurden mit dem Eclipse Modeling Framework (EMF) entwickelt und basieren auf
dem Metametamodell Ecore [emf08].
Abbildung 1: Ein MDSD System mit kaskadierender Transformation domänenspezifischer Modelle. Modelltransformatoren (vertikale Pfeile) und Codegeneratoren (horizontale Pfeile) wurden mittels openArchitectureWare [oaw08b] implementiert.
Im Folgenden werden die verschiedenen Modellierungsebenen genauer beschrieben:
DBM-Ebene: Auf dieser Modellierungsebene werden im Database Model (DBM) die Strukturen
von Datenbanken definiert. Modelle dieser Ebene besitzen den geringsten Abstraktionsgrad
innerhalb der Hierarchie, d. h. sie sind plattformspezifisch. Datenbankmodelle beschreiben
z. B. Tabellen mit ihren Spalten und Constraints.
ORM-Ebene: Modelle der Object Relational Mapping (ORM)-Ebene dienen der Modellierung
von persistenten Geschäftsobjekten. Sie bieten einen höheren Abstraktionsgrad als Modelle
57
auf DBM-Ebene. Die zentralen Modellierungselemente sind ORM Beans und deren Relationen. Auf dieser Ebene sind z. B. Konzepte wie Vererbung von ORM Beans und 1-zu-n
Relationen vorhanden.
BOM-Ebene: Die Modelle der Business Object Model (BOM)-Ebene dienen der plattformunabhängigen Modellierung von persistenten Geschäftsobjekten und deren Relationen. BOMModelle bieten eine Sicht auf die darunter liegenden ORM-Modelle und eine Erhöhung des
Abstraktionsgrades. So existieren z. B. Konzepte wie n-zu-m Relationen zwischen BOM
Beans und Assoziations-BOM Beans.
UML-Ebene: Zur Modellierung und Präsentation der Struktur von Softwaresystemen werden
Unified Modeling Language (UML)-Klassendiagramme verwendet. Für Modelltransformationen von UML- auf BOM-Ebene werden die Modellelemente verwendet, die durch entsprechende Stereotypen, z. B. «BOM Bean», gekennzeichnet sind.
Die Modelltransformatoren der bestehenden MDSD-Infrastruktur wurden mittels XTend [oaw08a]
implementiert. Codegeneratoren zur automatischen Generierung von Java Quellcode, Dokumentationen, Konfigurationsdateien und anderer textueller Artefakte wurden mittels XPand [oaw08a]
umgesetzt. Der in Abbildung 1 dargestellte Prozess von kaskadierenden Modelltransformationen und Codegenerierungsschritten wird durch einen openArchitectureWare-Workflow definiert.
Die beschriebene MDSD-Infrastruktur ist zur Entwicklung verschiedenartiger, heterogener Softwaresysteme geeignet, welche die gleiche Architektur besitzen. Diese Infrastruktur ist folglich
nicht dazu geeignet, verschiedene Produkte einer Softwaresystemfamilie, also Produkte, die viele
Gemeinsamkeiten besitzen und sich nur in bestimmten Eigenschaften unterscheiden (homogene
Systeme), effizient herzustellen. Intershop stellt E-Commerce-Systeme her, die alle Systeme einer Softwaresystemfamilie sind. Dadurch wird ein Produktlinienansatz zur Softwareherstellung
interessant. Wie kann aber nun die bestehende MDSD-Infrastruktur verändert werden, um Variabilitäten zwischen einzelnen Produkten einer Familie zu berücksichtigen? Wie kann die existierende Infrastruktur angepasst werden, um Produktlinien zu unterstützen? Die folgenden Abschnitte
stellen einen möglichen Lösungsansatz vor.
4 Steuerung eines MDSD-Systems durch Features
Zur Modellierung von Gemeinsamkeiten und Unterschieden von Softwaresystemen einer Softwaresystemfamilie können Featuremodelle eingesetzt werden. Soll ein Featuremodell ein bestimmtes Softwaresystem definieren und soll weiterhin die bestehende MDSD-Infrastruktur verwendet
werden, so muss ein Featuremodell in der Art angewendet werden, dass es alle nötigen Informationen zur automatischen Generierung eines Softwaresystems in Form von Modellen enthält, und es
muss in der Lage sein, ein MDSD-System so zu steuern, dass die in Aspektmodellen ausgedrückte
Variabilität berücksichtigt wird.
Wir haben uns dazu entschieden, Features entsprechend der Definition von Featuremodellen mit
zusätzlichen Informationen zu hinterlegen. Es sind unserer Ansicht nach zwei Arten von Features
notwendig, um ein MDSD-System für die Entwicklung von Softwareproduktlinien einzusetzen.
Das sind:
58
Aspektfeatures: Ein Feature, welches mit einem Aspektmodell hinterlegt wurde, ist ein Aspektfeature. In unserer Arbeit werden Aspektmodelle dazu verwendet, um Variabilität zwischen
Softwaresystemen einer Familie zu kapseln. Weiterhin steuern Aspektfeatures die neu in
das MDSD-System eingefügte Modelltransformation des Mischens von Modellen. Diese
Transformation ist durch den Operator ⊗ in Abbildung 2 markiert.
Steuerfeatures: Features, die steuern, ob ein bestimmter Modelltransformator oder Codegenerator in einem MDSD-System aufgerufen wird, heißen Steuerfeatures. In Abbildung 2 sind
sie durch graue Kreise über Modelltransformatoren und Codegeneratoren symbolisiert.
Zentral für die Umsetzung des Produklinienansatzes ist in unserem Fall die Implementierung einer Modelltransformation, die es erlaubt, Aspektmodelle, welche Informationen über Variabilität
enthalten, in ein Basismodell zu mischen. Damit kann ein maßgeschneidertes Modell erzeugt
werden, aus dem anschließend das Softwaresystem generiert werden kann. Der Ansatz der Einführung einer neuen Transformation zum Mischen erlaubt die Wiederverwendung bereits bestehender Modelltransformatoren und Codegeneratoren.
4.1
Implementierung des Mischens von Aspektmodellen
Wie Abbildung 2 zeigt, nutzt unsere Implementierung zum Mischen von Modellen die oAW Komponenten XVar und XWeave. Im Folgenden wird erklärt, wie das Mischen von Modellen genau
funktioniert.
4.1.1
Notation von Aspektmodellen
Um das Modellieren von Aspekten auf UML-Ebene zu ermöglichen, wurde ein UML Profil um
Stereotypen, die das Ausdrücken von Regeln zum Mischen von Aspekt- und Basismodellen und
das Ausdrücken von positiver und negativer Variabilität erlauben, erweitert. Alle im Folgenden
vorgestellten Stereotypen sind auf die UML-Modellelemente Class und Property anwendbar. Weiterhin ist es möglich, sie parallel zu der Notation, die von XWeave [GV07] bereitgestellt wird, zu
verwenden.
«BOMBaseElement» Ein Modellelement mit diesem Stereotypen bezieht sich auf genau ein Modellelement
in einem Basismodell, das den gleichen Namen besitzt. Es wird genutzt, um einen Pointcut zu definieren, der genau einem Joinpoint im Basismodel entspricht.
«BOM XVar» Der Stereotyp besitzt die Property nameOfOwningFeature. Er dient der Spezifikation eines
Elements im Basismodel, welches aus diesem entfernt wird, sobald das in nameOfOwningFeature
angegebene Feature nicht im entsprechenden Variantenmodel enthalten ist.
«BOM XWeave» Der Stereotyp besitzt die Property pointcutSpec. Er markiert Modellelemente, die zum
Basismodell hinzugefügt werden sollen. Die Property pointcutSpec enthält die Deklaration einer
Pointcutspezifikation. Ist diese Property leer, so wird das markierte Element im Basismodell zu dem
59
Abbildung 2: Erweiterung des MDSD-Systems aus Abbildung 1 zur Unterstützung von Produktlinien.
60
Modellelement hinzugefügt, welches den gleichen Namen besitzt. Ist in der Property ein Stern (*)
enthalten, so wird das markierte Modellelement zu allen Beans des Basismodells hinzugefügt. Zur
beliebigen Deklaration von Pointcutspezifikationen wird der Property der Name einer Pointcutfunktion gegeben, die mittels der XWeave-spezifischen Syntax manuell definiert werden muss.
4.1.2
Feature Dependency Model
Ein Feature Dependency Model (FDM) ist ein Modell, welches von XVar benötigt wird, um negative Variabilität auf ein Basismodell anzuwenden. Ein FDM stellt Abhängigkeiten zwischen
einem Feature und einem oder mehren Modellelementen eines Basismodells dar. Für alle vorhandenen Aspektmodelle wird ein FDM genau einmal automatisch generiert. Dazu extrahiert eine
Modelltransformation alle Elemente der Aspektmodelle, die mit dem Stereotyp «XVar» markiert
sind, und erstellt aus dem Wert, der in der Property nameOfOwningFeature enthalten ist, einen
entsprechenden Eintrag im FDM.
XVar bekommt als Eingabe ein Basismodell auf BOM-Ebene, ein Variantenmodell und ein FDM
und generiert daraus ein temporäres Basismodell auf BOM-Ebene. Die Anwendung von XVar
hängt nicht von den Metamodellen der entsprechenden Modelle ab, sondern setzt nur voraus,
dass diese auf Ecore basieren.
4.1.3
Generierung von Pointcuts
Im Gegensatz zu aspektorientierten Programmiersprachen können alle Modellelemente eines Basismodells als Joinpoints fungieren. Dies wird durch die Nutzung von XWeave zur Implementierung des Mischens von Modellen möglich. Die Namen von Modellelementen in Aspektmodellen
werden genutzt, um auf Pointcutspezifikationen zu verweisen, siehe dazu [oaw08a].
Für jedes Aspektmodell auf UML-Ebene wird automatisch eine Datei mit den entsprechenden
Pointcutspezifikationen erstellt. Dies geschieht in Abhängigkeit zur Property pointcutSpec des Stereotyps «BOM XWeave». Ist diese leer, so wird eine Pointcutspezifikation generiert, die das markierte Modellelement zu genau dem Modellelement des Basismodells hinzufügt,
welches den gleichen Namen besitzt. Ist in der Property pointcutSpec ein Stern (*) enthalten, so wird eine Pointcutspezifikation generiert, die das markierte Element des Aspektmodells zu allen Klassen des Basismodells hinzufügt. Ist eine beliebige Zeichenfolge angegeben, so muss die Pointcutspezifikation manuell in einer extra Datei unter diesem
Namen implementiert werden. Unsere Transformation bezieht automatisch generierte und manuell implementierte Pointcutspezifikationen bei der Anwendung von XWeave ein.
4.1.4
Transformation von Aspekmodellen auf BOM-Ebene
Alle Aspektmodelle werden einzeln von UML auf die BOM-Ebene transformiert. Dazu wurden
die existierenden Transformatoren so erweitert, das aus der in Abschnitt 4.1.1 eingeführten Notation automatisch die von XWeave geforderte Notation erstellt wird.
61
Anschließend bekommt XWeave jeweils ein temporäres Basismodell auf BOM-Ebene, ein Aspektmodell auf BOM-Ebene sowie eine Datei mit Pointcutspezifikationen als Eingabe. Nachdem nacheinander, entsprechend ihrer Abhängigkeiten und wie vom Variantenmodell gefordert, die Aspektmodelle in das temporäre Basismodell gemischt wurden, ist der Prozess des Mischens von Modellen beendet und es ist ein Basismodell auf BOM-Ebene entstanden, das durch ein Variantenmodell
definiert ist und welches für weitere Transformations- und Generierungsschritte verwendet wird.
XWeave setzt ebenso wie XVar nur voraus, dass die Modelle, auf denen es angewandt wird, Ecore
als Metametamodell besitzen.
4.1.5
Steuerfeatures
Steuerfeatures werden mittels if -Komponenten in oAW-Workflows implementiert. So wird es
möglich, den Aufruf von bestimmten Transformatoren und Generatoren in Abhängigkeit von den
ausgewählten Features eines Variantenmodells zu steuern. In Abbildung 2 symbolisieren die vier
grauen Kreise Steuerfeatures.
5 Themenbezogene Arbeiten
5.1
pure::variants
pure::variants [pur08] ist ein Framework zum Variantenmanagement für Eclipse. Es bietet Möglichkeiten zur Erstellung von Featuremodellen und zur automatischen Generierung von Software
aus bestimmten Variantenmodellen. Dazu werden textuelle Artefakte, z. B. Pakete, Klassen, Methoden und Aspekte einer Programmiersprache an bestimmte Features gekoppelt. Ein Transformator mischt die Artefakte entsprechend der Featureauswahl eines Variantenmodells. Wir benutzen
pure::variants zur Erstellung von Featuremodellen und Variantenmodellen sowie einen entsprechenden Adapter, um Variantenmodelle in einem oAW-Workflow nutzen zu können.
5.2
FeaturePlugin
FeaturePlugin [AC04] ist ein Eclipse Plug-In zum Modellieren von Featuremodellen. Es besteht
die Möglichkeit, es mit dem Rational Software Modeler (RSM) zu koppeln und so Software, die
in RSM modelliert wurde, entsprechend ausgewählter Features automatisch zu generieren. Dazu
werden Teile von UML-Modellen auf Features gemappt. In [CA05] wird dieses Verfahren genauer beschrieben. Im Gegensatz zu pure::variants wird eine Modellebene zwischen Features und
generierter Software eingefügt. Es wird aber nur negative Variabilität unterstützt.
62
5.3
openArchitectureWare
oAW [oaw08b] ist ein modulares MDSD-Framework. Es bietet eine Sprachfamilie zur Implementierung von Modeltransformatoren, Codegeneratoren und Modellvalidierern. Zur Verarbeitung
von Workflows steht eine sogenannte „Workflow Engine“ zur Verfügung. Diese ist beliebig erweiterbar, um proprietäre Workflowkomponenten zu unterstützen.
oAW ist in der Lage, Modelle verschiedenster Metametamodelle, wie z. B. Ecore, XML und UML2
zu verarbeiten. Außerdem bietet es die Komponenten XWeave und XVar, um positive und negative
Variabilität von Modellen auszudrücken.
6 Fazit
Mit dieser Arbeit haben wir gezeigt, dass es möglich ist, eine existierende MDSD-Infrastruktur, welche auf Ecore basierende domänenspezifische Modelle verarbeitet, so anzupassen, dass
Softwareproduktlinien unterstützt werden. Dazu kann die Variabilität der einzelnen Systeme der
Familie in Aspektmodelle gekapselt werden. Momentan unterstützt die neu implementierte Modelltransformation zum Mischen von Modellen nur die von uns genutzten domänenspezifischen
Modelle. Allerdings ist diese Transformation leicht so anpassbar, dass alle auf Ecore basierenden
Modelle unterstützt werden können.
Unser Ansatz kann auch zur Versionierung von Softwaresystemen verwendet werden, indem eine
neue Version eines Systems durch die darin enthaltenen Features definiert wird.
Der von uns verfolgte Ansatz kapselt Variabilität von Softwaresystemen in Aspektmodellen. Dies
ist günstig, wenn feinkörnige Variabilität durch Features ausgedrückt werden soll. Für den Fall,
dass Features nur grobkörnige Variabilität beschreiben, könnte Variabilität in Komponentenmodelle gekapselt werden, und die Aufgabe des Mischens von Modellen entfällt.
Die Entscheidung, ob ein Feature ein Aspektfeature oder ein Steuerfeature ist und mit welchen
Aspektmodellen ein Aspektfeature assoziert ist, wird momentan noch manuell vom Entwickler
getroffen. Weiterhin werden Workflows wie in Abbildung 2 manuell implementiert. Zukünftig
müsste untersucht werden, inwieweit oAW-Workflows automatisch generiert werden können. Gegenwärtig werden Basis- und Aspektmodelle unabhängig voneinander entwickelt. Der Entwicklungsprozess würde verbessert werden, wenn es möglich wäre, Features und Aspektmodelle während der Entwicklung miteinander zu verbinden, wie es z. B. FeatureMapper [HKW08] erlaubt.
Zur Entwicklung von „großen“ Softwaresystemfamilien, bei denen Aspektmodelle viele Abhängigkeiten untereinander besitzen, wäre eine Visualisierung dieser, vielleicht mittels [vis08], hilfreich.
Momentan wird nur eine Teilmenge von UML-Modellelementen für die Aspektmodellierung unterstützt. Diese Teilmenge ist ausreichend für unsere Zwecke, sie müsste allerdings noch für den
allgemeinen Fall, z. B. für Verhaltensmodelle, angepasst werden.
63
Literatur
[AC04]
Antkiewicz, Michal ; Czarnecki, Krzysztof: FeaturePlugin: Feature Modeling Plug-In for Eclipse. In: eclipse ’04: Proceedings of the 2004 OOPSLA workshop on eclipse technology eXchange.
New York, NY, USA : ACM, 2004, S. 67–72
[CA05]
Czarnecki, K. ; Antkiewicz, M.: Mapping Features to Models: A Template Approach Based
on Superimposed Variants. In: Glà 41 ck, Michael Robert; L. Robert; Lowry (Hrsg.): Generative
Programming and Component Engineering Bd. Volume 3676/2005, Springer Berlin / Heidelberg, 2005 (Lecture Notes in Computer Science), S. 422–437
[emf08]
Eclipse
Modeling
Framework
http://www.eclipse.org/modeling/emf/
[GFd98]
Griss, M. ; Favaro, J. ; d’Alessandro, M.: Integrating Feature Modeling with the RSEB. In:
Proceedings of theFifthInternational Conference on Software Reuse. Vancouver, BC, Canada,
1998, 76–85
[GV07]
Groher, Iris ; Voelter, Markus: XWeave: Models and Aspects in Concert. In: AOM ’07:
Proceedings of the 10th international workshop on Aspect-oriented modeling. New York, NY,
USA : ACM, 2007. – ISBN 978–1–59593–658–5, S. 35–40
(EMF)
June
website.
2008.
–
[HKW08] Heidenreich, Florian ; Kopcsek, Jan ; Wende, Christian: FeatureMapper: Mapping Features to
Models. In: ICSE Companion ’08: Companion of the 30th international conference on Software
engineering. New York, NY, USA : ACM, 2008. – ISBN 978–1–60558–079–1, S. 943–944
[KC04]
K. Czarnecki, U. E. S. Helsen H. S. Helsen: Staged Configuration Using Feature Models. In:
Software Product Lines Bd. Volume 3154/2004, Springer Berlin / Heidelberg, 2004 (Lecture
Notes in Computer Science), S. 266–283
[KCH+ 90] Kang, K. C. ; Cohen, S. G. ; Hess, J. A. ; Novak, W. E. ; Peterson, A. S.: FeatureOriented Domain Analysis (FODA) Feasibility Study / Software Engeneering Institue, Carnegie Mellon University. 1990 (CMU/SEI-90-TR-21 ESD-90-TR-222). – Forschungsbericht. –
http://selab.postech.ac.kr/
[KLD02]
Kang, Kyo C. ; Lee, Jaejoon ; Donohoe, Patrick: Feature-Oriented Product Line Engineering.
In: IEEE Software 19 (2002), Nr. 4, S. 58–65. – ISSN 0740–7459
[oaw08a]
openArchitectureWare
Documentation
http://www.eclipse.org/gmt/oaw/doc/
June
Website.
2008.
–
[oaw08b] openArchitectureWare Website. http://www.openarchitectureware.org/, June 2008
[pur08]
pure::variants
Website.
June
systems.com/Variant_Management.49.0.html
[Rie03]
Riebisch, M.: Towards a More Precise Definition of Feature Models. In: Modelling Variability
for Object-Oriented Product Lines, BookOnDemand Publ. Co., 2003, 64–76
[vis08]
The Visualizer Website. June 2008. – http://www.eclipse.org/ajdt/visualiser/
64
2008.
–
http://www.pure-
Modellbasierte Schichtenarchitektur zur Komposition von
Geschäftsanwendungen
Peter Hänsgen1 , Heiko Kern2
1
Intershop Communications AG
Intershop Tower
07740 Jena
p.haensgen@intershop.de
2
Universität Leipzig, Institut für Informatik,
Abteilung Betriebliche Informationssysteme
Johannisgasse 26
04103 Leipzig
kern@informatik.uni-leipzig.de
Kurzfassung: Durch den Einsatz modellgetriebener Entwicklungstechniken wie Codegenerierung können viele Vorteile bei der Softwareentwicklung erzielt werden. Im praktischen Einsatz
gibt es allerdings auch eine Reihe von Nachteilen. In diesem Beitrag wird eine modellbasierte
Schichtenarchitektur vorgeschlagen, welche eine flexible Komposition von Anwendungen aus
einzelnen generischen wieder verwendbaren Schichten erlaubt und die eine Verbesserung bzgl.
der im Beitrag beschriebenen Probleme bringen soll.
1 Einleitung
Modellgetriebene Softwareentwicklung (Model-Driven Software Development, MDSD) [SV06]
basiert auf den Konzepten Modellierung, Modellvalidierung, Modelltransformation und Codegenerierung. Ein Modell beschreibt dabei ein System auf einem abstrakten Niveau. Um die sog.
semantische Lücke im Abstraktionsniveau zwischen der Modellierungsebene und der Implementierungsebene zu überbrücken, können Modelltransformationen angewendet werden, welche jeweils aus einem Eingangsmodell ein Ausgangsmodell erzeugen und so schrittweise die Abstraktionsunterschiede reduzieren. Mit Hilfe von Codegeneratoren kann man aus Modellen statische
Implementierungsfragmente erzeugen wie z. B. Quellcode, Konfigurationsdateien, Dokumentationen usw. Modelle können durch ein Metamodell beschrieben werden, welches wiederum ein
Modell darstellt. Für die Meta-Meta-Ebene wird dabei oft ein standardisiertes Modell wie EMOF
bzw. Ecore verwendet. Vor der Verarbeitung durch Generatoren oder Transformatoren können
Modelle einer Validierung unterzogen werden, um die Korrektheit und Konsistenz des Generats
sicherzustellen.
Die Ziele dieses Vorgehens bestehen darin, eine Trennung von Konzept und Implementierung
zu erreichen, dabei das Abstraktionsniveau möglichst hoch anzusiedeln, Architekturen durch die
65
Wiederverwendung von einmal erstellten Transformatoren und Generatoren wieder verwendbar
zu gestalten, Redundanz in den Modellen zu reduzieren und eine höhere Implementierungsqualität durch eine Reduktion von manuell erstelltem Code zugunsten des generierten Anteils, der
weniger zufällige Fehler enthält, zu erreichen. Durch die Transformatoren und Generatoren kann
ein Hebeleffekt erzielt werden, d. h. aus einem einzelnen Modellelement lassen sich potentiell
viele Implementierungsartefakte automatisiert ableiten. Da die Generierungstemplates die Erzeugung des schematischen Codes übernehmen und das Modell nur noch aus den variablen Anteilen
besteht, ist es kompakter und daher schneller durch einen Entwickler zu erstellen.
2 Probleme mit modellgetriebener Softwareentwicklung
Trotz der verschiedenen Vorteile, die sich durch den Einsatz von MDSD ergeben, wurde eine
Vielzahl an Problemen auf Basis von Erfahrungen der Autoren mit der Entwicklung von komplexen E-Commerce-Anwendungen und anderen Arbeiten (beispielsweise in [Uhl08]) identifiziert.
Diese Probleme werden im Folgenden näher beschrieben.
Werkzeugzentrierung: MDSD ist ein werkzeugzentrierter Ansatz. Um eine Anwendung zu entwickeln, ist zunächst die Entwicklung einer komplexen Werkzeuginfrastruktur notwendig,
welche aus den benötigten Metamodellen, Modelleditoren, Modellvalidierern, Modelltransformatoren, Codegeneratoren und Transformationsworkflows besteht. Ohne diese Komponenten kann keine Anwendung entwickelt werden. Dadurch entstehen u. a. große Anfangsinvestitionen, die nur durch eine maximale Wiederverwendung der einzelnen Komponenten
in verschiedenen Softwareprojekten gerechtfertigt werden kann.
Synchronisierung Die Herauslösung der Architektur aus einem Softwareprojekt in ein Entwicklungswerkzeug führt zu Problemen, wenn Entwickler zwar die gleiche Codebasis bearbeiten, aber dabei verschiedene Versionen des MDSD-Werkzeugs benutzen, also in Folge aus
dem gleichen Modell verschiedenen Code generieren. Dies muss ausgeschlossen werden,
d. h. es muss ein synchronisiertes Update aller beteiligten Entwickler erzwungen werden,
sobald sich in einer der MDSD-Komponenten und damit dem Entwicklungswerkzeug etwas geändert hat. Dieses kann, abhängig von der Anzahl der Entwickler und insbesondere
bei Einbeziehung von externen Partnerfirmen oder Offshoring-Partnern, äußerst aufwändig
sein.
Wiederholbarkeit: Eine besondere Schwierigkeit entsteht bei der Weiterentwicklung von (älteren) Kundenprojekten. Es ist oft nicht möglich die Generierungsinfrastruktur auf Basis
der alten Modelle und der inzwischen veralteten und nicht mehr verfügbaren Werkzeuge
wiederherzustellen.
Stabilität Generierter Code entspricht einer statischen Momentaufnahme der aktuellen Kombination der Modelle, Transformatoren und Generatoren. Änderungen in einer dieser Komponenten haben meistens globale Auswirkungen und erfordern eine (aufwändige) Neugenerierung des gesamten Systems.
66
Korrigierbarkeit: Wenn Codegenerierung genutzt wird, können Änderungen im generierten Code (z. B. nach einem Bugfix in einem Generatortemplate) nicht einfach als kompilierter binärer Patch an den Kunden ausgeliefert werden. Stattdessen erfordert jegliche Änderung
ein aufwändiges Upgrade der MDSD-Werkzeuginstallationen aller beteiligten Entwickler,
die Neugenerierung aller darauf aufsetzenden Projekte, jeweils mit den kompletten Zyklen
zum Kompilieren, Testen und Installieren. Dieser Aufwand ist enorm und praktisch nicht
mehr durchführbar. In Konsequenz muss jeglicher generierter Code möglichst trivial (und
damit wahrscheinlich fehlerfrei) sein, um überhaupt wartbar zu bleiben. Komplexe Abläufe
sind also als Teil des Plattformcodes generisch und manuell zu implementieren.
Anpassbarkeit: Werden im generierten Code manuelle Änderungen oder Ergänzungen durchgeführt, muss auch der generierte Code im Versionierungssystem für das Softwareprojekt
verwaltet werden, welches wiederum den Verwaltungsaufwand erhöht. Weiterhin kann es
später schwierig werden, manuelle Änderungen in der Masse an Code wiederzufinden wiederzufinden oder ihre weitere Wirksamkeit sicherzustellen, nachdem sich im Generator etwas geändert hat und vielleicht manuell geänderte Methoden überhaupt nicht mehr aufgerufen werden. Es sollte daher möglichst auf manuelle Änderungen im Generat verzichtet
werden.
Redundanz: Die Erhöhung des Abstraktionsniveaus in der MDSD soll dazu dienen, Redundanzen im Code zu vermeiden bzw. zu verringern. Dies kann dadurch erreicht werden, dass
ein Modellelement auf verschiedene Subsysteme abgebildet wird, die miteinander in Beziehung stehen bzw. „korrelieren“. So könnte beispielsweise der Name eines Attributs eines Datentyps sich einerseits in entsprechenden Zugriffsmethoden einer Java-Klasse und
andererseits im Spaltennamen einer Datenbanktabelle wiederfinden. Eine Änderung des
Namens würde bei manueller Programmierung Modifikationen in potentiell zahlreichen
Subsystemen erfordern (also im Beispiel: in der Java-Klasse und im Datenbankschema).
Dies wird im MDSD-Ansatz durch Codegeneratoren bzw. Modelltransformatoren erleichtert. Das bedeutet aber nicht, dass diese Korrelationen nun tatsächlich verschwunden sind.
Im Gegenteil, sie sind immer noch vorhanden, nur sind sie jetzt in die Codegeneratoren
bzw. Modelltransformatoren gewandert. Das Sicherstellen der Konsistenz von Generatoren
und Transformatoren bei Änderungen stellt dabei ein Problem dar, da oftmals komplexe
Abhängigkeiten zwischen den verschiedenen Transformationen bestehen.
Neben den genannten Problemen gibt es noch zahlreiche weitere Schwierigkeiten, die aber aus
Platzgründen nicht weiter diskutiert werden können. Um die Probleme zu lösen, wurde ein alternatives Konzept entwickelt, welches die Vorteile von MDSD beibehält, aber die Nachteile vermeidet.
Dieses Konzept wird im folgenden Kapitel 3 erläutert.
3 Konzept für eine modellbasierte Schichtenarchitektur
3.1
Lösungsansatz
Ausgangspunkt bei der Entwicklung des Lösungsansatzes sind die folgenden vier Prinzipien:
67
Ausnutzung von Selbstähnlichkeit: Unabhängig vom Abstraktionsgrad sind Metamodelle für
ein bestimmtes Problemfeld (Daten, Prozesse, . . . ) strukturell ähnlich. Es ist also möglich,
für ein bestimmtes Problemfeld (z. B. die Datenmodellierung) ein einheitliches Metamodell
zu entwickeln, welches für verschiedene Abstraktionsstufen wiederverwendet werden kann.
Das Schichten-Konzept soll so ein vereinheitlichtes Metamodell verwenden Damit verliert
man zwar an Semantik, gewinnt aber an Universalität.
Problemzerlegung: Komplexe Probleme können in einfache Probleme zerlegt werden. Technische Probleme können von fachlichen Problemen getrennt werden. Jedes dieser Teilprobleme soll durch eine spezielle Schichtenimplementierung auf Basis einer einheitlichen
Infrastruktur gelöst werden.
Modellinterpretierung: Statt auf statischem generiertem Code soll der Schichten-Ansatz auf
der Interpretierung von Modellen basieren.
Wiederverwendung von Infrastruktur-Code: Verschiedene Schichten benötigen immer wieder den gleichen Infrastruktur-Code, z. B. für die Initialisierung, für die Erzeugung und
Abfrage von Objekten, für die Bereitstellung von Metainformationen usw. Das neue Konzept soll eine einheitliche Infrastruktur beinhalten, auf der die verschiedenen Abstraktionsebenen aufsetzen können.
3.2
Schichtenarchitektur
Auf Basis dieser Entwicklungsziele wurde ein Konzept entwickelt, welches auf einer Schichtenarchitektur [Fow03] beruht, bei der die einzelnen architektonischen „Bausteine“ übereinander
gestapelt und über Domänenmodelle [Eva04] konfiguriert werden können. Dabei findet keine Generierung von Code aus Modellen statt, sondern die gesamte Implementierung des Traversierens
durch die Modelle und der Steuerung des Verhaltens einer Schicht wird aus dem Entwicklungswerkzeug in die Anwendung verlagert. Eine Schicht kann somit als ein Interpreter für ein Modell
einer bestimmten Abstraktionsstufe betrachtet werden [V0̈7].
Zunächst wurde eine einheitliche Schnittstelle (Core-API) definiert, welche für die verschiedenen
Schichten genutzt werden kann und durch diese implementiert wird. Im Fokus stand dabei die
Abbildung und Verarbeitung von Daten. Die API besteht aus den folgenden fünf Elementen:
Layer: Repräsentiert eine Schicht und erlaubt den Zugriff auf Node Spaces.
Node Space: Stellt die Menge aller Nodes eines bestimmten Typs dar und dient ihrer Verwaltung.
Node: Stellt ein konkretes Objekt dar. Ein Node hat einen Typ, eine eindeutige ID sowie beliebig
viele Properties und Relationen mit anderen Nodes.
Property: Ist ein einfaches atomares Attribut eines Nodes.
Relation: Ist eine Beziehung zwischen Nodes.
68
Weil es für die Anwendungsprogrammierung ungünstig ist, nur reflexiv auf die Datenstrukturen
der Core-API zuzugreifen, wurde zusätzlich ein Mapping eingeführt, welches Typen aus der Anwendungsdomäne in Form von Java-Interfaces ausdrückt und diese über Proxies automatisch auf
die Core-API, also auf Nodes, Properties und Relations, abbildet. Zusätzlich gibt es eine generische Factory, welche zur Erzeugung, zum Entfernen und zur Suche von Domänenobjekten dient
und die dazu auf dem jeweiligen Node Space des entsprechenden Typs operiert.
Die Core-API wird von verschiedenen Schichten (Layers) implementiert (siehe Abbildung 1),
welche jeweils ein bestimmtes Verhalten bereitstellen. Eine Schicht löst dabei genau ein einzelnes Teilproblem, welches entweder technischer Natur (z. B. Übertragung über ein Kommunikationsprotokoll) oder fachlicher Natur (z. B. Unterstützung von Mehrsprachigkeit) sein kann. Das
Problem wird dabei immer bezüglich der Core-API gelöst. So kann beispielsweise eine Schicht
implementiert werden, welche die Versionierung von Node Spaces und Nodes sowie ihren Relations und Properties implementiert. Dadurch ist die Schicht in der Lage, die Versionierung für
jegliche Domänenobjekte zu übernehmen. Dabei kann die Schicht wiederum einer bestimmten
Problemdomäne zugeordnet werden, d. h. sie besitzt selbst ein schichtenspezifisches Domänenmodell. Im Beispiel der Versionierungsschicht könnte dies Begriffe wie „Branch“, „Revision“,
„VersionedObject“ oder „ObjectVersion“ umfassen. Dieses Domänenmodell wird, wie bereits für
die oberste Ebene geschildert, in genau der gleichen Weise mittels Java-Interfaces implementiert
und kann damit generisch auf die Core-API der nächsten unterliegende Schicht abgebildet werden.
3.3
Komposition von Anwendungen
Aufgrund der einheitlichen Core-API können Schichten beliebig miteinander kombiniert und
übereinander gestapelt werden. Eine Schicht kann dabei entweder die oberste Schicht (top layer),
eine Zwischenschicht (intermediate layer) oder die unterste Schicht (bottom layer) in einem Stapel bilden. Je nach ihrer Funktion kann sie Aufrufe an unterschiedlich viele andere Schichten
delegieren. Das Verhalten der gesamten Applikation ergibt sich damit aus der Gesamtheit des
Verhaltens der einzelnen übereinander gestapelten Schichten.
Neben der eigentlichen Implementierung des Verhaltens durch eine Schicht wird eine Beschreibung der Datenstrukturen auf einer Metaebene benötigt. Zum Start des Systems wird dazu das
Anwendungsdomänenmodell in ein solches Modell umgewandelt und der Top-Layer damit initialisiert. Dieser Layer transformiert das Modell und kombiniert es mit einem Modell seiner eigenen
ausgehenden Domänen-API. Das transformierte Modell dient als Input für die nächsten unterliegenden Schichten, welche sich auf die gleiche Weise rekursiv initialisieren.
Eine Schicht stellt also die Implementierung für verschiedene Transformationen dar:
Datentransformation: Diese stellt das eigentliche Verhalten der Schicht dar. Eingehende Daten
werden entsprechend der beabsichtigten Funktion und unter Einbeziehung von Kontextinformationen umgeformt und an die unterliegenden Schichten weitergeleitet.
Datenmodelltransformation: Das Datenmodell stellt die Metaebene der eigentlichen Daten dar
und beschreibt ihre Struktur. Wenn die Schicht eine strukturelle Veränderung der Daten
69
Domain Model
(Java Interfaces with Annotations)
generic mapping
Core API
Layer
Node Space
Node
Relation
outbound
Layer
Domain
Model
Property
Layer Implementation
Abbildung 1: Core-API und Layer-Implementierung
Application Code
Application Domain API
Layer Stack
Node Descriptions
Layer Instance
delegate
Context
Objects
delegate
Node Descriptions
Layer Instance
...
delegate
...
...
Abbildung 2: Layer Stack
70
(Language,
Currency,
User,
Transaction,
...)
vornimmt, kann dies durch eine Datenmodelltransformation beschrieben werden. Das eingehende Datenmodell wird dabei umgewandelt; mit dem transformierten Modell werden
die unterliegenden Schichten konfiguriert.
Query-Transformation: Abfragen auf Daten können entweder durch eine Schicht selbst beantwortet werden, oder sie können durch eine unterliegende Schicht bearbeitet werden. Im
Falle von strukturellen Unterschieden der Datenmodelle und zur Einbeziehung von Kontextinformationen in die Abfrage müssen die Queries ebenfalls transformiert werden. Die
umgewandelte Abfrage kann dann an die unterliegende Schicht weitergeleitet werden und
wird von dieser beantwortet.
Welche dieser Transformationen notwendig sind und durch die Schichtenimplementierung bereitgestellt werden müssen, hängt von der jeweiligen Funktionalität der Schicht ab. Einige Schichten
werden überhaupt keine Strukturänderungen vornehmen, weil sie lediglich ein technisches Verhalten bereitstellen. In diesem Falle sind keine Transformationen notwendig, sondern die eingehenden Daten, Metadaten oder Abfragen können einfach durchgereicht werden. Andere Schichten
lösen vielleicht ein fachliches Problem und stellen dabei eine Veränderung des Abstraktionsniveaus dar. In diesem Falle könnten alle drei genannten Transformationen notwendig sein. Weiterhin
gibt es Schichten, welche die unterste Ebene der Kette darstellen, wie z. B. eine Persistenzschicht
für die Datenhaltung in einer relationalen Datenbank. Diese Schichten müssen Features wie Abfragen unterstützen und können sie nicht mehr an einen Delegate weiterleiten. Dabei kann eine
Übersetzung der Datenmanipulationen, der Metabeschreibungen und der Abfragen in eine andere
Form notwendig sein, z. B. nach SQL.
3.4
Anwendungsbeispiel
Um das vorgestellte Schichtenkonzept zu testen, wurden mehrere Schichten aus verschiedenen
Bereichen sowie eine gemeinsame Infrastruktur zur Verwaltung der Schichten implementiert. Mit
den Schichten wurde eine Beispielanwendung für ein Online-Shopping-System umgesetzt. Dabei können die benötigten Schichten gemäß den gewünschten Features der Anwendung aus der
zur Verfügung stehenden Bibliothek ausgewählt und zusammengesetzt werden. Dafür ist keinerlei Codegenerierung notwendig, sondern es werden lediglich fertige Komponenten miteinander
verschaltet und konfiguriert. Im Folgenden sollen zwei konkrete Layer-Implementierungen und
deren Kombination genauer beschrieben werden.
Currency Layer: Der Currency Layer ist eine Schicht, welche eine zusätzliche Währungsdimension für Properties einführt, d. h. sie erlaubt die Speicherung von währungsspezifischen
Werten. Dies könnte z. B. der Preis eines Produktes sein, der in Euro und in US-Dollar anzugeben ist. Im Prototyp werden nur wenige verschiedene Währungen erwartet, die sich
nicht zur Laufzeit ändern, darum werden entsprechend markierte Properties einfach in
separate Properties im Delegate-Layer gemappt, welche den ISO-Code der repräsentierten Währung als Bestandteil des Property-Namens enthalten (siehe Abbildung 3). Nichtwährungsspezifische Properties bleiben unverändert.]
71
Product_CU
Product
price_USD:double
<<Currency>> price:double
price_EUR:double
Abbildung 3: Strukturveränderung durch den Currency Layer
Product_OL
Product
Product_LO
*
<<Localized>> name:String
locale:Locale
name:String
Abbildung 4: Strukturveränderung durch den Localization Layer
Localization Layer: Der Localization Layer erlaubt die Einführung von mehrsprachigen Properties, wie z. B. dem Namen oder der Beschreibung eines Produkts. Im Prototyp wurde
angenommen, dass eine große Zahl von Sprachen unterstützt werden muss, darum werden
lokalisierte Properties auf eine andere Art behandelt als durch den Currency Layer. Sie werden in eine zusätzliche Klasse ausgelagert, welche alle Werte einer bestimmten Sprache
enthält (siehe Abbildung 4).
Kombination von Schichten: Die beiden Schichten können nun in einer konkreten Anwendung
alleine oder gemeinsam benutzt werden. Sollen in der Zielanwendung sowohl mehrere
Währungen als auch mehrere Sprachen unterstützt werden, so werden beide Schichten
miteinander kombiniert (siehe Abbildung 5). Durch die sequentiellen Transformationen ergibt sich eine resultierende Datenstruktur, welche am unterliegenden Delegate-Layer registriert wird (z. B. einer Persistenzschicht). Das Domänenmodell der Anwendung ist von der
Schichtenkombination selbst nicht betroffen und muss nicht geändert werden. Die LayerImplementierungen bleiben ebenfalls unverändert und können auch für andere Anwendungen benutzt werden.
4 Zusammenfassung und Diskussion
Im Beitrag wurden verschiedene Probleme genannt, welche beim praktischen Einsatz von MDSD
zur Entwicklung komplexer Softwaresysteme auftreten. Als Lösung wurde die Komposition von
Anwendungen auf Basis einer modellbasierten Schichtenarchitektur vorgeschlagen, bei der die
einzelnen Schichten mit Modellen konfiguriert werden können und interpretativ arbeiten.
Das vorgestellte Schichtenkonzept wurde in einer Beispielanwendung für ein Online-ShoppingSystem umgesetzt. Dabei können die benötigten Schichten gemäß den gewünschten Features der
Anwendung aus einer zur Verfügung stehenden Bibliothek ausgewählt und zusammengesetzt werden. Dafür ist keinerlei Codegenerierung notwendig, sondern es werden lediglich fertige Komponenten miteinander verschaltet und konfiguriert.
72
Product_CU
Product
<<Localized>> name:String
<<Localized>> name:String
price_USD:double
<<Currency>> price:double
Application
Domain Model
Currency Layer
Product_CU_LO
price_EUR:double
Localization Layer
*
...
Product_CU_OL
price_USD:double
locale:Locale
price_EUR:double
name:String
Abbildung 5: Kombination von Currency Layer und Localization Layer
Das Konzept bewirkt eine Verlagerung des Schwerpunktes von der Werkzeugentwicklung zurück
in die Anwendungsentwicklung. Dabei findet eine Wiederverwendung von Applikationscode anstelle der Wiederverwendung von Werkzeugen statt. Durch eine einheitliche Core-API der Schichten und eine gemeinsam genutzte Infrastruktur kann eine beliebige Kombination der Schichten
miteinander erfolgen, d. h. aufgrund ihrer Selbstähnlichkeit bildet ein solches System letztendlich
eine fraktale Struktur. Die Entwicklung der Anwendungslogik kann, sofern sie sich nicht weiter in
wieder verwendbare Schichten verlagern lässt, mittels einer konkreten domänenspezifischen API
auf einem hohen Abstraktionsniveau durchgeführt werden, welches durch die Schichtenbausteine
schrittweise reduziert wird.
Bezugnehmend auf die in der Einleitung geschilderten Probleme, konnten diese mit der Schichtenarchitektur verbessert werden.
Werkzeugzentrierung: Für eine Umsetzung des Konzeptes sind keine speziellen Werkzeuge
notwendig, d. h. der Entwicklungsaufwand für MDSD-Werkzeuge entfällt vollständig. Die
Beispielanwendung wurde komplett in Java mit den dafür verfügbaren ausgereiften Entwicklungswerkzeugen umgesetzt.
Stabilität: Eine Anpassung der Anwendung an geänderte Anforderungen kann sehr leicht durch
Neukombination oder Austausch einzelner Schichten erreicht werden. Dazu ist keinerlei
Änderung im eigentlichen Domänenmodell der Anwendung notwendig. Anderseits führen
73
Änderungen im Domänenmodell zu keinen weiteren Änderungsaufwänden in den unterliegenden Schichten, denn die Schichtenimplementierungen bleiben davon unberührt.
Synchronisierung: Die Entwicklung von Anwendungen oder Schichten ist unabhängig vom verwendeten Entwicklungswerkzeug. Jeder Entwickler kann eine eigene Umgebung nutzen.
Wiederholbarkeit: Ältere Projekte können einfach weiterentwickelt werden, weil keine komplexen Werkzeuge gebraucht werden.
Korrigierbarkeit: Schichtenbausteine können in binärer Form ausgeliefert werden. Sie können
jederzeit durch das Einspielen von Patches korrigiert werden. Dabei ist keinerlei Neugenerieren der Kundenprojekte notwendig.
Anpassbarkeit: Schichten sind generisch, d. h. sie können derzeit nicht an Spezialfälle angepasst
werden. Es ist aber möglich, eine Schicht komplett durch eine andere Schicht zu ersetzen.
Optimierbarkeit: Für die gleiche fachliche oder technische Funktionalität können alternative
Schichtenimplementierungen erstellt werden, welche das gleiche Problem auf unterschiedliche Weise lösen. Die verschiedenen Lösungen können sich dabei hinsichtlich ihres Optimierungsziels unterscheiden. Beispielsweise könnte eine Implementierungsvariante optimal für sehr große Datenmengen sein, während eine andere Implementierung für geringe
erwartete Datenmengen besser geeignet ist. Dabei kann, je nach Projektanforderungen, die
für das aktuelle Projekt optimale Variante ausgewählt und verwendet werden.
Redundanz: Redundanz kann vermieden werden, indem oft benötigte Features als einzelne Schicht implementiert werden. Diese Schicht kann dann in unterschiedlichen Konstellationen
wiederverwendet werden. Weiterhin kann eine gemeinsame Infrastruktur für alle Schichten
benutzt werden und muss nicht mehrfach implementiert werden.
Im Moment wurde vorrangig die Bearbeitung und Speicherung von Daten betrachtet. Es wird
aber angenommen, dass sich auch in anderen Bereichen wie z. B. in der Prozessmodellierung
ein ähnliches Prinzip anwenden lässt, welches Prozessmodelle verschiedener Abstraktionsstufen
abbilden kann. Wenn es gelingt, auch in diesem Feld eine generische API zu definieren, könnten
darauf ebenfalls generische Werkzeuge aufsetzen.
Literatur
[Eva04] Evans, Eric: Domain-driven design: Tackling complexity in the heart of software. Boston , AddisonWesley, 2004. – ISBN 0321125215
[Fow03] Fowler, Martin: Patterns of Enterprise Application Architecture. Boston, MA, USA : AddisonWesley, 2003. – ISBN 0–321–12742–0
[SV06]
Stahl, Thomas ; Völter, Markus: Model-Driven Software Development – Technology, Engineering, Management. John Wiley & Sons Inc., 2006. – ISBN 978–0470025703
[Uhl08] Uhl, Axel: Model-Driven Development in the Enterprise. In: IEEE Software Vol. 25 (2008), S.
46–49. – ISSN 0740–7459
74
[V0̈7]
Völter, Markus: Generieren vs. Interpretieren – Die andere Seite von MDSD. Vortrag auf der OOP
2007. http://www.voelter.de/data/presentations/GenerierenVsInterpretieren.
pdf. Version: 2007. – Letzter Aufruf 14.06.2010
75
76
Interoperabilität mittels M3-Level-basierter Transformationen
Heiko Kern
Universität Leipzig, Institut für Informatik,
Abteilung Betriebliche Informationssysteme
Johannisgasse 26
04103 Leipzig
kern@informatik.uni-leipzig.de
Kurzfassung: Die Transformation von Modellen und dazugehörigen Metamodellen stellt in
verschiedenen Anwendungsbereichen eine Herausforderung dar. Ein häufig verwendeter Ansatz zur Lösung dieses Transformationsproblems kann in der M3-Level-basierten Transformation (M3T) gesehen werden. Dieser Beitrag definiert eine Formalisierung des M3T-Ansatzes,
beschreibt verschiedenen Eigenschaften und diskutiert Vor- und Nachteile.
1 Einleitung
Die Transformation von Modellen und dazugehörigen Metamodellen stellt in verschiedenen Anwendungsbereichen eine Herausforderung dar. Ein häufig verwendeter Ansatz zur Lösung dieses
Transformationsproblems kann in der M3-Level-basierten Transformation (M3T) gesehen werden. Typische Beispiele für M3Ts sind u. a. die Integration von relationalen Datenbanken und
objektorientieren Systemen, die Entwicklung von Cross-Compilern zwischen verschiedenen Programmiersprachen oder der Austausch von Modellen zwischen Modellierungswerkzeugen.
Eine konkrete M3T-Anwendung im Bereich von Modellierungswerkzeugen ist bspw. der Modellaustausch zwischen Microsoft Visio und dem Eclipse Modeling Framework [KK09]. Visio ist ein
Modellierungswerkzeug, das die Konfiguration von Modellierungssprachen erlaubt. Das Eclipse
Modeling Framework (EMF) [SBPM09] ist eine Implementierung der von der Object Management Group propagierten Meta Object Facility im Kontext der Model-Driven Architecture. EMF
bietet mit Ecore die Möglichkeit Metamodelle zu definieren und entsprechende Modelle zu erstellen. Die implementierte M3T erlaubt die Transformation von Stencils und Visio-Modellen nach
EMF. Dadurch können Visio-Modelle mit Hilfe von EMF-Werkzeugen verarbeitet werden.
Bisher wurde der M3T-Ansatz in den verschiedenen Anwendungsbereichen isoliert betrachtet
(bspw. in [KK09, KK07, Ker08, Wim08, BCC+ 10]) und Anwendungsübergreifende Untersuchungen vernachlässigt. Dieser Beitrag widmet sich genau dieser Problematik. Aufbauend auf
verschiedenen M3T-Ausprägungen wird zunächst eine formalisierte Beschreibung erstellt (siehe
Kapitel 2.1 und 2.2). Aufbauend darauf werden Eigenschaften des M3T-Ansatzes untersucht (siehe Kapitel 2.3 bis 2.5) sowie Vor- und Nachteilen des M3T-Ansatzes diskutiert (siehe Kapitel
4).
77
2 M3-Level-basierte Transformation
2.1
Modellhierarchie
Das adressierte Problem einer M3T besteht in der Transformation von Modellen und Metamodellen auf Basis der zugrunde liegenden Metametamodelle. Die Menge aller Modelle bzw. Modellelemente werden zu einem Modellraum M zusammengefasst. Alle Modelle eines Modellraumes
M können hinsichtlich ihrer Hierarchie und ihrer Modellebene klassifiziert werden.
Hierfür führen wir zwei Funktionen ein, wobei die erste Funktion
h : M → {q, z}
(1)
jedes Modellelement der Menge M auf eine der beiden Modellhierarchien Quelle q und Ziel z
abbildet. Durch die Zuordnung von Modellelementen zu einer Hierarchie ergibt sich eine Äquivalentrelation ∼H mit e1 , e2 ∈ M : e1 ∼H e2 ⇔ h(e1 ) = h(e2 ) .
Die zweite Funktion
l : M → {1, 2, 3}
(2)
bildet jedes Modellelement der Menge M auf eine von drei Modellebenen ab. Durch die Zuordnung von Modellelementen zu einer Ebene ergibt sich eine Äquivalentrelation ∼L mit e1 , e2 ∈
M : e1 ∼L e2 ⇔ l(e1 ) = l(e2 ).
Durch die Definition der beiden Äquivalenzrelationen ∼L und ∼H ergibt sich die Äquivalenzrelation ∼ M mit e1 , e2 ∈ M : e1 ∼L e2 ∧ e1 ∼H e2 . Die Relation ∼ M partitioniert somit
M in Äquivalenzklassen M/ ∼ M . Durch die beiden Hierarchien Quelle q und Ziel z und den
ndrei Ebenen ergeben sich 2 · 3 =o 6 Äquivalenzklassen. Diese Äquivalenzklassen sind M/ ∼ M :=
Mq,3 , Mz,3 , Mq,2 , Mz,2 , Mq,1 , Mz,1 .
Weiterhin definieren wir die Funktion
type : M x → M x+1 mit M x ∈ M/ ∼L und x = 1, 2.
(3)
Diese Funktion ordnet jedem Modellelement (M1-Ebene) ein Metamodellelement (M2-Ebene) zu.
Analog zur nächst höheren Ebene, wird jedem Metamodellelement (M2-Ebene) ein Element aus
dem Metametamodell (M3-Ebene) zugeordnet. Somit wird die Ist-Typ-Modell [K0̈6] zwischen
Modell und Metamodell abgebildet.
Bezogen auf das Visio-EMF-Beispiel aus der Einleitung kann der Modellraum M in die beiden
Hierarchien Visio und EMF sowie den einzelnen Ebenen aufgeteilt werden. Das Metametamodell von Visio ist nicht explizit beschrieben kann aber aus der Definition von Stencils extrahiert
werden. Metamodelle in Visio sind Stencils und Modelle sind Visio-Dokumente. In EMF ist das
Metametamodell explizit durch Ecore definiert. Metamodelle sind demnach Ecore-Modelle und
Modelle sind Instanzen dieser Ecore-Modelle. Es ergeben sich somit beispielhaft (siehe Abbildung 1) die folgenden Mengen:
MVisio,3 := {Master} , MEMF,3 := {EClass},
′
′
MVisio,2 := {Event, Function} , MEMF,2 := {Event
, Function
o },
n
MVisio,1 := {E1 , E2 , F1 , F2 }, MEMF,1 := E1′ , E2′ , F1′ , F2′ .
78
Visio (Quelle)
Metametamodell
Master
Metamodell
Event
E1
E2
Function
F1
Modell
F2
M3T
EMF (Ziel)
Metametamodell
M3-Mapping
(M3T)
M2-Transformation
(M2T)
Transformation
(M1T)
EClass
Metamodell
Event’
E’1
Function’
E’2
Modell
F’2
F’1
Abbildung 1: M3-Level-basierte Transformation zwischen Visio und EMF
2.2
Transformationsansatz
Eine M3-Level-basierten Transformation setzt sich aus zwei Teilen zusammen. Der erste Teil ist
die Transformation der Metamodelle. Allgemein besteht eine Transformation aus einer Definition
und einer Ausführung. Die Definition wird in Form von Regeln beschrieben, welche Elemente der
Metametamodelle in Beziehung zueinander setzen. Die Ausführung wertet diese Regeln aus und
setzt entsprechend konkrete Elemente des Quellmetamodells und des Zielmetamodells miteinander in Beziehung. Sind die Elemente noch nicht vorhanden, dann werden neue Elemente erzeugt.
Bezogen auf die zuvor eingeführten Äquivalenzklassen kann eine Relation für die Transformationsdefinition zwischen Elementen der Metametamodelle wie folgt definiert werden:
M3 T ⊆ Mq,3 × Mz,3 .
(4)
Bei der Ausführung dieser Transformation werden konkrete Quellmetamodelle in Zielmetamodelle transformiert. Das Ergebnis dieser Transformation kann wiederum in Form der folgenden
Relation angeben werden:
M2 T := {(a, b) ∈ Mq,2 × Mz,2 | (type(a), type(b)) ∈ M3 T }.
(5)
Typischerweise besteht die Herausforderung bei der Metamodelltransformation semantisch äquivalente Konzepte aufeinander abzubilden. Nur so kann ein Verlust von Modellstruktur und -inhalt
während der Transformation vermieden werden.
Der zweite Teil der Transformation transformiert Modelle des Quellraums in Modelle des Zielraums. Die Transformationsregeln sind durch die Transformation auf M2-Ebene (M2T) vorgegeben. Die Ausführung lässt sich wiederum durch die folgende Relation beschreiben:
M1 T := {(a, b) ∈ Mq,1 × Mz,1 | (type(a), type(b)) ∈ M2 T }.
(6)
Bei der Transformation auf M1-Ebene sind die Abbildungsregeln bereits aus der M2-Transformation vorgegeben und müssen lediglich implementiert werden.
79
Bezogen auf die Visio-EMF-Transformation (siehe Abbildung 1) kann eine Transformationsregeln definiert werden, die Master auf EClass abbildet. Beide Konzepte sind semantisch gleich,
da sie die Definition einer Klasse von eigenständigen Modellierungselementen ermöglichen. Aus
diesem Grund wird eine Transformationsregel definiert, die alle Master in EClass transformiert,
was die Relation M3 T := {(Master, EClass)} ergibt. Die Ausführung der Transformation erzeugt
darauf hin auf M2-Ebene die folgenden Tupel:
M2 T := (Event, Event′ ), (Function, Function′ ) .
(7)
Die Transformation auf M1-Ebene erzeugt die Tupel:
M1 T := (E1 , E1′ ), (E2 , E2′ ), (F1 , F1′ ), (F2 , F2′ ) .
2.3
(8)
Transformationsrichtung
Eine entscheidende Eigenschaft von M3Ts sind die unterstützten Transformationsrichtungen. Die
einfachste Variante ist in Abbildung 2(a) dargestellt. Diese ermöglicht den Export von Metamodellen und Modellen von der Quell- zur Zielhierarchie. Der Import von Metamodellen und Modellen
ist nicht möglich.
Die zweite Variante (siehe Abbildung 2(b)) erlaubt zusätzlich zur ersten Varianten den Re-import
von Modellen unter der Voraussetzung, dass diese konform zu einem vorher exportierten Metamodell sind:
∃Mq,2 : (Mq,2 , type(Mz,1 )) ∈ M2 T.
(9)
Diese Variante kann auch kombiniert werden, so dass Metamodelle und Modelle in beide Richtungen transformiert werden können, allerdings muss die zuvor definierte Bedingung erfüllt sein.
Die dritte Variante erlaubt die Transformation der Metamodelle in beide Richtungen. Anders
als Variante 2 können somit Modelle ohne Einschränkungen in beide Richtungen transformiert
werden.
type
type
type
type
type
type
type
type
type
type
type
type
(a) Export von Metamodellen
und Modellen
(b) Bedingter Re-Import von
Modellen
Abbildung 2: Transformationsrichtung
80
(c) Vollständiger Modellaustausch
2.4
Vollständigkeit
Die Betrachtung von Vollständigkeit bezieht sich auf die Transformation auf M2-Ebene. Sie
gibt an inwieweit ein Quellmetamodell in ein Zielmetamodell transformiert werden kann und
wie verschiedenen Konzepte aufeinander abgebildet werden können. Bei der Definition von M2Transformationen gibt es im Wesentlichen vier Möglichkeiten. (1) Konzepte der Metametamodelle können direkt 1-zu-1 aufeinander abgebildet werden. (2) Elemente des Quellmetamodells
können mit Hilfe der vorhandenen Metametamodellkonzepte in der Zielhierarchie nachgebildet
werden. (2.1) Hierbei können alle Eigenschaften abgebildet werden. (2.2) Es können aber auch
Eigenschaften der Metamodelle verloren gehen. (3) Die letzte Möglichkeit besteht darin, dass
Konzepte der Metametamodelle nicht aufeinander abgebildet werden können.
Die Vollständigkeit der Transformation hängt somit davon ab, ob die Konzepte und Eigenschaften
bei einer Transformation erhalten bleiben können. Eine Transformation zwischen ein und demselben Metametamodell ist somit vollständig, da jedes Konzept 1-zu-1 abgebildet werden kann. In
der Praxis ist dies oftmals nicht möglich. Hier können nicht immer alle Konzepte und deren Eigenschaften aufeinander abgebildet werden.
2.5
Abbildung auf ein spezifisches Zielmetamodell
Da die Abbildungsregeln einer M3T auf Basis der Metametamodelle definiert werden, ist die
Transformation zwar generisch, so dass jedes mögliche Metamodell und dazugehörige Modell
transformieren werden kann, allerdings kann dabei nicht auf ein spezifische Zielmetamodell eingegangen werden. Dies kann bspw. der Fall sein, wenn bereits ein Metamodell in der Zielhierarchie besteht und die Modelle in dieses Zielmetamodell transformiert werden sollen. Als Lösung hierfür kann eine Modelltransformation zwischen dem exportierten und bereits vorhanden
Zielmetamodell definiert werden (siehe Abbildung 3(a)). Eine andere Möglichkeit ist die Konfiguration der M3T. Hierbei können die definierten Abbildungsregeln in eingeschränkten Maß
angepasst werden. Somit können bspw. bestimmte Elemente des Quellmetamodells auf Elemente des Zielmetamodells abgebildet werden. Eine M3T kann diese Eigenschaft unterstützen bzw.
nicht unterstützen.
Quelle
M3T
Ziel
Quelle
Metametamodell
M3-Mapping
(M3T)
Metametamodell
Metamodell
M2-Transformation
(M2T)
Modell
Transformation
(M1T)
Metamodell
Metamodell
M3T
Ziel
Metametamodell
M3-Mapping
(M3T)
Metametamodell
Metamodell
M2-Transformation
(M2T) + Konfiguration
Metamodell
Modell
Transformation
(M1T)
Modell
Transformation
Modell
(a) Anschließende Modelltransformation
Modell
(b) Konfiguration
Abbildung 3: Abbildung auf ein spezifisches Metamodell
81
3 Implementierungsaspekte
3.1
Werkzeugintegration
Für die Implementierung einer M3T muss der Zugriff auf Modelldaten möglich sein. Hierzu gibt
es im Wesentlichen zwei Möglichkeiten. Es kann ein Zugriff auf Datenebene über Dateiaustausch
oder über Funktionsebene über ein Application Programming Interface (API) geben. Prinzipiell
können über beiden Ebenen alle Modelldaten ausgetauscht werden, allerdings gibt es verschiedene Vor- und Nachteile. Der Austausch über Datenebene hat gegenüber der Funktionsebene
einen entscheidenden Nachteil. Es müssen entsprechende Funktionen für die Abfrage von Modellen und das Erstellen von Modellelementen nachgebildet werden. Dies kann kompliziert werden,
wenn ein Modellelement mit mehreren Daten korreliert. Weiterhin kann es sein, dass Modellelemente eine eindeutige ID besitzen, die global vom Werkzeug verwaltet wird. Die Erstellung von
IDs außerhalb des Werkzeuges stellt ein Problem dar. Somit ist die Funktionsebene vorzuziehen,
wobei allerdings die Funktionsebene eine stärkere Abhängigkeit zum Werkzeug bedeutet.
Neben der Integrationsebene ist die Wahl einer geeigneten Integrationstopologie von Bedeutung.
Davon hängt auch die Wahl eines geeigneten Austauschformates ab. Man kann zwei sinnvolle Topologien unterscheiden: eine Punkt-zu-Punkt-Topologie und eine Stern-Topologie. Bei einer Punkt-zu-Punkt Topologie können Modelle direkt transformiert werden. Bei einer Punkt-zuPunkt-Struktur wird für jedes Format eine Konvertierung zu jedem anderen Format definiert. Hier
kann bei den einzelnen Konvertierungen sichergestellt werden, dass der größtmögliche Informationsumfang tatsächlich konvertiert wird, allerdings werden n(n − 1)-Konvertierungen benötigt.
Diese Zahl reduziert sich auf 2n, wenn eine Stern-Topologie mit einem zentralen Intermediärformat definiert wird, über das sämtliche Konvertierungen vorgenommen werden. Hierbei bestimmt
das Intermediärformat, inwiefern die Abbildungen zwischen den Formaten verlustfrei realisierbar
werden können.
3.2
Transformationen
Für die Umsetzung einer M3-Level-basierten Transformation ist ein detailliertes Verständnis über
die Implementierung einer Modellhierarchie notwendig. Konkret bedeutet dies, dass der Zugriff
auf Metamodelle und Modelle von Interesse ist. Aus diesem Grund haben wir verschiedene Modellhierarchien untersucht und sind zu einem einheitlichen Ergebnis bekommen.
Die in Kapitel 2.1 definierten Modellhierarchie stellt eine logische Sicht dar. Diese muss noch
um eine physische Sicht ergänzt werden, die sich mehr auf die Implementierung bezieht und
den Zugriff der Modelle betrachtet. Im Wesentlichen ist die Datenstruktur der Metamodelle und
Modelle von Interesse. Aus diesem Grund führen wir eine zweite Typ-Beziehung ein, die das
konkrete Element der Datenstruktur zurückliefert.
Betrachtet man zunächst die Beziehung zwischen Metametamodell und validen Instanzen, sprich
Metamodellen, kann feststellt werden, dass die physische Typ-Beziehung gleich der logischen
Typ-Beziehung ist. Dies bedeutet, dass das Metametamodell die Datenstruktur zur Speicherung
82
von Metamodellen vorgibt. Die Transformation der Metamodelle kann auf dieses spezifische Format bzw. API aufbauen.
Bei Modellen ist dies nicht der Fall. Die physisch implementierte Datenstruktur für Modelle entspricht nicht notwendigerweise der Struktur der Metamodelle. Dies kann es auch nicht, da zur
Implementierung der Datenstruktur die konkreten Metamodelle nicht feststehen. Vielmehr gibt
es eine generische Datenstruktur, die von dem Metametamodell abgeleitet wird. Das Metametamodell gibt im Wesentlichen die Menge aller Modelle vor, welche durch die Metamodelle weiter
eingeschränkt werden können. Somit ist die physische Typ-Beziehung nicht gleich der logischen
Typ-Beziehung. Der physische Typ zeigt auf ein Element der Datenstruktur zur Modellspeicherung. Dies kann auch wiederum das Metametamodell sein. Oftmals gibt es aber noch zusätzliche
Elemente zur Strukturierung von Modellen (Projekte oder Gruppen). Somit kann man Modellelemente unabhängig von konkreten Metamodellen zugegriffen werden. Eine Transformation baut
somit auf der generischen Speicherstruktur auf und muss entsprechende Elemente durchlaufen.
Bezogen auf das Visio-EMF-Beispiel kann die Transformation von Masters in EClasses mit dem
Quellcode aus Listing 1 realisiert werden. Es werden alle Master-Elemente durchlaufen und entsprechende EClasses erzeugt. Auf Modellebene muss auf die generische Speicherstruktur zugegriffen werden (siehe Listing 2). Somit werden alle Shapes (korreliert zu Master) durchlaufen und
entsprechende EObjects (korreliert zu EClass) erzeugt.
Listing 1: Transformation von Master nach EClass (M2-Ebene)
for ( IVMaster v i s i o M a s t e r : v i s i o M a s t e r s ) {
EClass emfMaster = createEmfMaster ( v i s i o M a s t e r ) ;
}
Listing 2: Transformation von Shape nach EObject (M1-Ebene)
f o r ( IVShape v i s i o S h a p e : v i s i o S h a p e s ) {
EObject emfVisioShape = createEmfElement ( visioShape ) ;
}
4 Diskussion
In diesem Kapitel werden einige Vor- und Nachteile des M3T-Ansatzes gegenüber einer einfachen
Modelltransformation diskutiert.
4.1
Implementierungsaufwand
Die Anzahl und Komplexität von Transformationsregeln schlägt sich auf den Entwicklungsaufwand und der Komplexität der Transformation nieder. Bei einer M3T werden maximal vier Transformationen benötigt. Zwei dienen zur Transformation der Metamodelle, wobei eine die Hinrichtung und die andere die Rückrichtung realisiert. Analog ist dies für die Transformationen auf
Modell-Ebene. Diese vier decken alle Metamodelle und dazugehörige Modelle ab. Würde man
83
eine einfache Modelltransformation verwenden, dann bräuchte man für jedes Metamodell eine
Transformation in Hin- und Rückrichtung. Betrachtet man lediglich die Anzahl der Transformationen, würde sich der Aufwand zur Implementierung einer M3T ab einer Transformation von
zwei Metamodellen lohnen.
Betrachtet man anstatt der Transformation die zu implementierenden Transformationsregeln, dann
kommt man zu einem ähnlichen Ergebnis. Bei einer M3T wird mindestens für jedes Element des
Metametamodells eine Transformationsregel für die zwei Modellebenen benötigt. Somit ist die
Anzahl der Transformationsregeln konstant. Bei einer einfachen Modelltransformation wird für
jedes Element eines Metamodells eine Transformationsregel benötigt. Die Transformationsregeln
steigen somit mit jeder Transformation für ein spezifisches Metamodell an.
4.2
Abstraktionsgrad
Eine M3T ist gegenüber einer einfachen Modelltransformation ein generischer Ansatz. Grund
hierfür ist, dass die Regeln auf einer abstrakteren Ebene, der Metametamodell-Ebene, als bei einer
einfachen Modelltransformation definiert werden. Vorteil ist das alle Metamodelle und somit auch
alle Modelle transformiert werden können. Nachteil ist, dass eine M3T nicht ohne weiteres auf
spezifische Abbildung zwischen Metamodellen eingehen kann. Dies ist bspw. notwendig, wenn
ein spezielles Zielmetamodell erreicht werden soll. Damit eine M3T dennoch auf spezifische
Metamodelle angewendet werden kann, gibt es die im Kapitel 2.5 beschriebenen Möglichkeiten.
4.3
Wiederverwendung und Qualität
Da die M3T auf einer hohen Abstraktionsebene ansetzt, ist auch der Grad der Wiederverwendung höher als bei einer auf ein bestimmtes Metamodell zugeschnitten Modelltransformation.
Durch eine erhöhte Wiederverwendung ist dadurch letztendlich die Qualität höher, da Fehler bei
mehrmaliger Verwendung behoben werden können. Des Weiteren wird durch die einheitliche
Transformation der Metamodelle eine höhere Qualität erreicht.
5 Zusammenfassung
In diesen Beitrag wurde der Ansatz der M3-Level-basierten Transformation vorgestellt, welche
die Transformation von Modellen und Metamodellen zwischen Modellräumen ermöglicht. Bisher wurde der M3T-Ansatz in den verschiedenen Anwendungsbereichen nur unzureichend und
oftmals in Abhängigkeit der zu integrierenden Werkzeuge betrachtet. In diesem Beitrag haben
wir eine technologisch unabhängige Beschreibung gegeben, verschiedenen Eigenschaften sowie
Vor- und Nachteile diskutiert.
Entscheidend für den M3T-Ansatz ist Definition von Abbildungen auf einer höheren Abstraktionsebenen als bei einer normalen Modelltransformation. Entsprechend kann die Transformation
84
lediglich nur generisch Modelle abbilden. Für die reine Übernahme von Modelldaten ist dies unproblematisch. Wird allerdings eine Transformation auf ein spezielles vorgegebenes Metamodell
benötigt, muss man von der generischen Transformation wieder zu dem spezifischen Metamodellformat kommen. Dies kann durch eine entsprechende Metamodell-Migration erreicht werden.
Bisher gibt es keine Transformationssprache bzw. -system, was diese Transformationsart direkt
unterstützt. Dies stellt einen Ansatzpunkt für weitere Arbeiten dar.
Literatur
[BCC+ 10] Brunelière, Hugo ; Cabot, Jordi ; Clasen, Cauê ; Jouault, Frédéric ; Bézivin, Jean: Towards
Model Driven Tool Interoperability: Bridging Eclipse and Microsoft Modeling Tools. In: Kühne,
Thomas (Hrsg.) ; Selic, Bran (Hrsg.) ; Gervais, Marie-Pierre (Hrsg.) ; Terrier, Francois (Hrsg.):
Modelling Foundations and Applications 6th European Conference, ECMFA 2010, Paris, France,
June 15-18, 2010. Proceedings Bd. 6138, Springer-Verlag, 2010 (LNCS), S. 32–47
[K0̈6]
Kühne, Thomas: Matters of (Meta-) Modeling. In: Software and Systems Modeling 5 (2006), Nr.
4, S. 369–385
[Ker08]
Kern, Heiko: The Interchange of (Meta)Models between MetaEdit+ and Eclipse EMF Using
M3-Level-Based Bridges. In: Tolvanen, Juha-Pekka (Hrsg.) ; Gray, Jeff (Hrsg.) ; Rossi, Matti
(Hrsg.) ; Sprinkle, Jonathan (Hrsg.): 8th OOPSLA Workshop on Domain-Specific Modeling at
OOPSLA 2008, 2008
[KK07]
Kern, Heiko ; Kühne, Stefan: Model Interchange between ARIS and Eclipse EMF. In: Tolvanen,
Juha-Pekka (Hrsg.) ; Gray, Jeff (Hrsg.) ; Rossi, Matti (Hrsg.) ; Sprinkle, Jonathan (Hrsg.): 7th
OOPSLA Workshop on Domain-Specific Modeling at OOPSLA 2007, 2007
[KK09]
Kern, Heiko ; Kühne, Stefan: Integration of Microsoft Visio and Eclipse Modeling Framework
Using M3-Level-Based Bridges. In: 2nd ECMDA Workshop on Model-Driven Tool & Process
Integration, 24 June 2009, at Fifth European Conference on Model-Driven Architecture Foundations and Applications 2009. Enschede, Netherlands, 2009
[SBPM09] Steinberg, Dave ; Budinsky, Frank ; Paternostro, Marcelo ; Merks, Ed: EMF: Eclipse Modeling Framework. 2. Boston, MA : Addison-Wesley, 2009. – ISBN 978–0–321–33188–5
[Wim08]
Wimmer, Manuel: From Mining to Mapping and Roundtrip Transformations – A Systematic
Approach to Model-based Tool Integration, Vienna University of Technology, Diss., 2008
85
86
Anforderungen an ein Modell-Repository im Kontext eines
MDSD-Entwicklungsprozesses
Peter Hänsgen1 , Stefan Kühne2
1
2
Intershop Communications AG
Intershop Tower
07740 Jena
p.haensgen@intershop.de
Institut für Angewandte Informatik e.V. an der Universität Leipzig
Johannisgasse 26
04103 Leipzig
kuehne@infai.org
Kurzfassung: Die modellgetriebene Software-Entwicklung basiert auf den Prinzipien formale Modellierung und Ausnutzung von Modellen durch Modelloperationen wie beispielsweise Modelltransformationen und Code-Generierung. Modelle tragen damit im Gegensatz zu
herkömmlichen modellbasierten Vorgehensweisen verstärkt den Charakter eines Implementierungsartefakts. Im industriellen Kontext ergibt sich hieraus die Anforderung, modellgetriebene
Artefakte versioniert zu verwalten. Im Beitrag werden exemplarisch am Beispiel des Vorgehens bei der Entwicklung des E-Commerce-Systems Intershop Enfinity Suite die typischen
benötigten Entwicklungswerkzeuge und die üblichen Arbeitsläufe erläutert, um daraus die Anforderungen an ein Modell-Repository abzuleiten.
1 Einleitung
Der elektronische Handel mit Gütern und Dienstleistungen über das Internet, der auch als ECommerce bezeichnet wird, ist ein Wirtschaftszweig, welcher derzeit einem rasanten Wachstum
unterliegt. Nach aktuellen Prognosen wird sich diese Entwicklung auch in den nächsten Jahren
fortsetzen [Hau10]. Für Intershop als einen der führenden Hersteller von Software für dieses
Marktsegment ist es daher notwendig, schnell auf wechselnde Anforderungen des Marktes reagieren zu können und mit geeigneten und innovativen Produkten die Bedürfnisse seiner Kunden
zu erfüllen.
Software für E-Commerce-Systeme muss es üblicherweise erlauben, für jeden Shop eines Kunden
ein einzigartiges „Look & Feel“ zu erzeugen sowie spezifische Funktionen zur Verfügung zu
stellen. Jedes System muss auf die Bedürfnisse des Kunden maßgeschneidert werden und die
speziellen Anforderungen erfüllen, die sich beispielsweise aus der Integration in nachfolgende
Prozessketten ergeben. Dabei ist zu beachten, dass es kein endgültig fertiges System gibt. Jedes
E-Commerce-System unterliegt einer permanenten Pflege, Weiterentwicklung, Umgestaltung und
Optimierung.
87
Um die Implementierungsaufwände für solche Shop-Systeme zu minimieren und die Wiederverwendung von bereits erstellten Software-Komponenten und bewährten Architekturen in verschiedenen Anwendungen zu maximieren, wurde bei Intershop in der Vergangenheit der Einsatz
der modellgetriebenen Softwareentwicklung (engl. model-driven software development, MDSD)
[SV06] intensiv untersucht. Dabei entstand eine umfangreiche Infrastruktur zur Modellierung, Validierung, Transformation und Generierung von Modellen. Die grundsätzliche Machbarkeit einer
MDSD-basierten Entwicklung von E-Commerce-Systemen wurde dabei festgestellt [HB08].
Im praktischen Einsatz dieser Methodik bei der Entwicklung realer Produkte gibt es aber trotzdem noch ernsthafte Hindernisse, die sich insbesondere aus der Verwaltung der Modellartefakte
und ihrer Handhabung in einem typischen Entwicklungsprozess ergeben. Die bisher existierenden Werkzeuge zur Verwaltung von traditionellem textbasiertem Programmcode sind dafür nur
bedingt geeignet. Stattdessen wird zur Speicherung, Versionierung und Verwaltung von Modellen
ein besonderes Modell-Repository benötigt [GH08]. Welche Anforderungen sich an ein solches
Repository aus Sicht der Entwicklungstätigkeiten bei Intershop ergeben, wird im Folgenden näher
beschrieben.
2 Entwicklung des E-Commerce-Systems Intershop Enfinity Suite
2.1
Modelle und Modelltypen
Bei der Entwicklung von Enfinity kommen verschiedene Arten von Modellen zum Einsatz, die
auf unterschiedlichen Technologien beruhen [Int10]. Exemplarisch sollen zwei Typen näher vorgestellt werden, welche den größten Anteil bei der Entwicklung ausmachen.
Enfinity-Pipeline-Modelle
Enfinity Pipelines sind Modelle von Programmabläufen, die durch den Server zur Laufzeit interpretiert werden können. Die Entwicklung von Pipelines erfolgt mit einem grafischen Editor im
Enfinity Studio, der Entwicklungsumgebung für Enfinity (siehe Abbildung 1).
Pipelines sind sowohl Bestandteil des Standardproduktes Enfinity als auch von darauf basierenden
kundenspezifischen Lösungen. Die Standardpipelines sind in der Installation von Enfinity enthalten. Die projektspezifischen Pipelines sind in den jeweiligen Cartridges für das Kundenprojekt
enthalten. Sie können entweder Standardpipelines ersetzen, ergänzen oder diese benutzen (z. B.
als Subpipeline aufrufen).
Die Speicherung von Pipeline-Modellen erfolgt in XML-Dateien. Für jede Pipeline existieren
dabei mindestens zwei Dateien – eine zur Definition der eigentlichen Pipeline-Struktur und mindestens eine weitere zur Lokalisierung von Bezeichnern und Kommentaren in verschiedenen Sprachen.
Die darstellungsbezogenen Daten (z. B. die Koordinaten von visuellen Abbildungen im Diagramm)
werden ebenfalls in der Strukturdatei gespeichert.
Das Metamodell der Pipelines ist proprietär und basiert auf Intershop-Technologien, d. h. es
liegt derzeit kein standardkonformes EMF-Modell o. ä. vor [emf08]. Der XML-Serialisierungs-
88
Abbildung 1: Pipeline Editor
bzw.-Deserialisierungsmechanismus der Pipeline-Dateien ist ebenfalls Intershop-spezifisch, d. h.
es werden derzeit keine EMF-Resourcen verwendet.
UML-Modelle
Eine weitere Enfinity-typische Art von Modellen sind UML-Modelle [Groa]. Hierzu wurde auf
Basis des Eclipse-UML2-Frameworks ein grafischer UML-Editor entwickelt, der die Erstellung
von UML-Modellen und ihre Konfiguration mit UML-Profilen ermöglicht (siehe Abbildung 2).
Es existieren UML-Profile für die Modellierung von verschiedenen Elementen, die als Eingabe
für einen Code-Generator dienen. So wird beispielsweise die komplette Persistenzschicht aus den
Modellen generiert.
UML-Modelle sind ebenfalls in Enfinity-Cartridges abgelegt. Die Modelle des Standardproduktes sind Teil der binären Distribution von Enfinity, d. h. sie stehen in der Enfinity-Installation zur
Verfügung und können durch Modelle aus Kundenprojekten referenziert werden, um z. B. Vererbungsbeziehungen zu allgemeinen Superklassen einrichten zu können.
Typischerweise enthält eine Cartridge eine UML-Datei, die das Hauptmodell repräsentiert, welches dann weiter in UML-Packages zerlegt ist. Jede UML-Package wird in einer extra UML-Datei
gespeichert. Damit können mehrere Entwickler verschiedene Packages parallel bearbeiten, ohne
89
miteinander in Konflikt zu geraten. Die Modelle werden konform zum UML2-Metamodell im
XMI-Format abgespeichert [Grob].
Abbildung 2: Intershop UML-Editor
2.2
Werkzeuge zur Entwicklung von Intershop Enfinity Suite
Die Entwicklung der E-Commerce-Software Intershop Enfinity Suite basiert auf einer umfangreichen Werkzeugkette. Im Folgenden werden einige der für die fokussierte Problemstellung relevanten Werkzeuge aufgeführt. Die Darstellung der Werkzeuge dient dem Problemverständnis und
dokumentiert den Integrationsbedarf eines noch zu entwickelnden Modell-Repositories.
Feature-Management
Eingehende Feature- und Erweiterungswünsche werden zunächst in einer Feature-Request-Datenbank gesammelt und gespeichert. Die Einträge können mit wichtigen Informationen angereichert
werden, z. B. mit ausführlichen Beschreibungen in Textform, Use-Case-Beschreibungen, Abbildungen, Diagrammen, Links auf andere Quellen usw. Featurewünsche werden durch ein Gremium bewertet, priorisiert und gegebenenfalls in der Projektplanung berücksichtigt.
Projektplanung
90
Die Projektplanung erfolgt mit einem spezialisierten Werkzeug. Dabei werden einzelne Arbeitspakete identifiziert und Ressourcen (Entwicklern) zugeteilt. Mit dem Tool können die tatsächlich
geleisteten Aufwände der Mitarbeiter erfasst und ihre Auswirkungen auf den geplanten Fertigstellungstermin ermittelt werden. Die Projektplanung unterliegt gewissen Unsicherheiten und muss
regelmäßig dynamisch den aktuellen Erfordernissen angepasst werden. Geplante Features können
beispielsweise gekürzt, neue Features müssen aufgenommen werden.
Versionierungssystem
Zur Speicherung und Versionierung aller Entwicklungsergebnisse (Dokumente, Quelltext, Modelle, u. ä.) wird ein Source-Code-Management-System (SCM) verwendet. Die zentralen Konzepte
von SCM-Systemen, wie z. B. Locking, Branches, Mergen von Branches usw. haben sich in den
vielen Jahren der Nutzung bei Intershop bewährt. Problematisch aus Sicht von Intershop sind
Schwächen im Rechte-Management, welches insbesondere für die Steuerung des Zugriffs von
externen Entwicklern benötigt wird, und bei der Versionierung von Modellen.
Wie mit einem Versionierungssystem gearbeitet wird, hängt erheblich von der Art des Entwicklungsvorhabens ab. So ist bei einer Standardsoftware wie Intershop Enfinity Suite von einer mehrjährigen Pflege und Wartung mit vielen verschiedenen Versionen in eigenständigen Zweigen auszugehen, während vielleicht in einem kleineren Vorhaben im Rahmen eines Kundenprojektes die
Weiterentwicklung tendenziell auf einem einfachen linearen Hauptstamm erfolgt.
Entwicklungsumgebung
Bei Intershop kommt die Entwicklungsumgebung Enfinity Studio zum Einsatz. Sie stellt eine Erweiterung von Eclipse um zahlreiche Enfinity-spezifische Editoren, Views usw. dar. Dabei werden
die Enfinity-Architektur und die Besonderheiten bei der Entwicklung von Enfinity-Anwendungen
(z. B. Teile der Modelle liegen in der Enfinity-Installation vor, andere Teile in den Projekt-Cartridges) voll unterstützt.
Enfinity Studio kommt sowohl bei der Entwicklung von Enfinity selbst als auch in Kundenprojekten zum Einsatz. Es ist dabei nicht Bestandteil einer Enfinity-Installation, sondern wird separat
ausgeliefert. Damit kann es bei der Entwicklung von verschiedenen Zielsystemen (z. B. gleichzeitige Arbeit an verschiedenen Enfinity-Versionen, je nach aktuellem Projekt) eingesetzt werden,
ohne es mehrfach installieren zu müssen.
Typischerweise wird durch die Entwickler im Enfinity Studio ein zusätzliches Plugin installiert,
um den Zugriff auf im SCM versionierte Dateien zu erleichtern. Weitere Eclipse-Erweiterungen
können verwendet werden.
Bug-Tracking
Fehler werden in einem Bug-Tracking-Werkzeug erfasst. In diesem Tool werden ausschließlich
Fehler verwaltet, aber keine neuen Features oder ungeplante Erweiterungswünsche organisiert.
Ein Bugeintrag beinhaltet beschreibende Informationen zu den Umständen des Fehlers, um eine
Reproduzierbarkeit zu erreichen. Weiterhin ist ersichtlich, ob und wann der Fehler durch wen
in welcher Release beseitigt wurde und welche Änderungen in der Codebasis dazu notwendig
waren.
Build-Werkzeuge
Neben der Verwaltung der Quelltexte und Quellmodelle ist eine umfangreiche Werkzeugunterstützung für den Build-Prozess notwendig. Dabei müssen Teilprojekte in ihre binäre Form übersetzt,
91
abgelegt und als auslieferbare Distribution zusammengefügt werden. Hierbei muss nachvollziehbar bleiben, in welcher Distribution welche Änderungen enthalten sind.
2.3
Typische Arbeitsabläufe
Im Folgenden werden zwei für die Entwicklung bzw. Weiterentwicklung von Enfinity typische
Arbeitsabläufe vereinfacht geschildert, um die notwendigen Interaktionen mit einem ModellRepository zu verdeutlichen.
Entwicklung eines neuen Features
Der folgende Ablauf schildert die exemplarische modellgetriebene Entwicklung eines neuen Enfinity-Features.
1. Feature-Request: Ein Auftraggeber (z. B. ein Entwickler, Kunde, Support-Mitarbeiter) wünscht sich ein neues Feature. Das Feature wird in Textform beschrieben und in der FeatureRequest-Datenbank abgelegt.
2. Feature-Auswahl: Bei der Planung der Entwicklung einer neuen Enfinity-Version werden
durch ein Planungsgremium die zu entwickelnden Features ausgewählt.
3. Task: Ein Entwickler erhält den formalen Auftrag, das Feature zu entwickeln. Dazu wird
im Projektplanungstool eine Task angelegt und dem Entwickler zugewiesen.
4. Feature-Branch: Es wird ein neuer Branch im Repository angelegt, der das neue Feature enthalten soll. Der Branch zweigt vom Integrationsbranch der gewählten Enfinity-Ausgangsversion ab. Die Konfiguration des Branches wird dem Entwickler mitgeteilt, der seine Arbeitsumgebung so anpasst, dass er auf diesem Branch arbeiten kann.
5. Implementierung des Features: Der Entwickler führt die notwendigen Arbeiten im FeatureBranch durch. Dazu werden existierende Modellelemente geändert und/oder neue Modellelemente hinzugefügt. Die Arbeitszeit wird im Projektplanungstool eingetragen.
6. Fertigstellung des Features: Der Entwickler ist mit der Arbeit fertig und hat alle Arbeitsergebnisse in das Repository eingecheckt. Ein Feature-Review durch ein entsprechendes
Gremium hat stattgefunden und die Entwicklungsergebnisse wurden akzeptiert.
7. Merge des Feature-Branches in den Release-Branch: Das Feature kann nach seiner Fertigstellung in den Integrationsbranch der neuen Enfinity-Release übernommen werden. Dazu
müssen die veränderten Elemente ermittelt und mit dem Zielbranch zusammengeführt werden. Konflikte während des Merges sind manuell zu lösen.
8. Build der Release: Der automatische Buildprozess liest den Repository-Inhalt für den Integrationsbranch aus und erzeugt eine neue Enfinity-Release. Das entstandene Produkt wird
automatisch getestet.
92
9. Release: Bei erfolgreichem Abschluss und Test der Arbeiten erfolgt eine Release. Es werden alle Änderungen, die in der neuen Version enthalten sind, anhand der Checkin-Kommentare aus dem Repository automatisch ermittelt und zu einer Release-Dokumentation
(z. B. in HTML-Form) zusammengefasst.
10. Labeling: Die Revision, die zum erfolgreichen Bau der Release führte, wird mit einem
speziellen symbolischen Label versehen, um sie später eindeutig adressieren zu können.
11. Merge in den Hauptbranch: Alle Artefakte der Release werden vom Integrationsbranch in
den Hauptbranch überführt. Anschließend kann ein neuer Branch für die nächste Release
abgezweigt werden.
Entwicklung eines Bugfixes
Der folgende Ablauf schildert (vereinfacht) die Korrektur eines Fehlers eines existierenden Features.
1. Bug-Report: Es wird ein Fehlverhalten des Systems festgestellt. Die Symptome werden
in einem Bug-Report beschrieben und im Bugtracker abgelegt. Weiterhin werden Informationen zu den Umständen des Bugs (z. B. betroffene Produktversion) und Hinweise zur
Nachvollziehbarkeit gegeben.
2. Bug-Priorisierung: Die Notwendigkeit eines Fixes wird festgestellt.
3. Task: Ein Entwickler erhält den Auftrag, das Problem zu lösen. Eine entsprechende Task
wird im Projektmanagement-Tool angelegt. Der Bug wird dem Entwickler zugewiesen.
4. Ursachenforschung: Der Entwickler stellt sich eine geeignete Umgebung (z. B. eine Enfinity-Installation der spezifischen Version) zusammen, um den Bug nachvollziehen zu können.
Die Ursache wird identifiziert.
5. Bugfix-Branch: Es wird eine Enfinity-Release ausgewählt, in der der Fehler behoben werden soll. Typischerweise ist dies der Integrationsbranch für eine in der Entwicklung befindliche Release. Der Entwickler passt seine Arbeitsumgebung an, so dass er auf diesem
Branch arbeiten kann.
6. Implementierung des Fixes: Das Problem wird gelöst und der Fix in das Repository eingecheckt. Beim Checkin wird ein Bezug zum Bug hergestellt.
7. Dokumentation des Fixes: Die gefundenen Ursachen werden im Bugtracker im Bugeintrag
dokumentiert. Die im Fix veränderten versionierten Objekte werden aufgelistet bzw. referenziert.
Der weitere Ablauf entspricht dem ersten Szenario ab Punkt 8).
Der weitere Ablauf entspricht dem ersten Szenario ab Punkt 8). Um die Beispielszenarien in der
genannten Weise durchführen zu können, ergeben sich aus Prozesssicht verschiedene Anforderungen an die Funktionalität des Modell-Repositories, die im Folgenden diskutiert werden.
93
3 Anforderungen an ein Modell-Repository
3.1
Berechnung von Modelldifferenzen
Das derzeit verwendete Versionierungssystem ist nicht in der Lage, Modelldateien als strukturierte Modelle zu verarbeiten. Es findet vielmehr immer ein Vergleich / Merge von Textfragmenten
statt. D.h. zum Vergleich wird nicht die abstrakte Syntax des Modells verwendet, sondern die konkrete syntaktische Ausprägung in Form von Text. Dabei kann es zur Feststellung von Differenzen
im Text kommen, die eigentlich keinerlei Unterschied in der Struktur oder Semantik des Modells
darstellen.
So werden unterschiedliche Whitespaces (Leerzeichen, Tabs) sowie veränderte Zeilenumbrüche
als Differenz zwischen zwei Texten wahrgenommen. Eine Veränderung der Reihenfolge von Modellelementen ist zwar textuell unterschiedlich, hat aber inhaltlich nicht unbedingt eine Auswirkung auf das Modell (allerdings gibt es auch Fälle, wo die Reihenfolge wichtig ist). Beispielsweise ist die Veränderung der Reihenfolge von Attributen in einem XML-Element inhaltlich irrelevant, als Text betrachtet aber ein signifikanter Unterschied.
Die Probleme treten auf, weil das Repository kein „Verständnis“ über die enthaltenen Strukturen
und Bedeutungen der Textdateien hat.
3.2
Repräsentation von Differenzen zwischen grafischen Modellen
Grundlage zur manuellen Auflösung von Merge-Konflikten ist die benutzeradäquate Darstellung
(Visualisierung) von Differenzen zwischen Modellen. Eine textuelle Darstellung führt insbesondere bei grafischen Modellen zu Problemen, da diese für den Entwickler eine ungewohnte Perspektive darstellt. Der dadurch nur unzureichend hergestellte Bezug zu den Artefakten erschwert
dem Entwickler die Identifikation von Konfliktursachen und deren Auflösung (siehe Abbildungen
3 und 4).
Bei den Modellen, die in Enfinity verwendet werden, sind die Informationen über die grafische
Darstellung des Modells Bestandteil der Modelldatei (z. B. als Annotationen in UML-Dateien, als
XML-Elemente in Pipeline-Dateien). Eine Änderung eines Modells erfolgt in einem grafischen
Editor und hat daher neben der Änderung in der abstrakten Syntax des Modells (z. B. Umbennennung einer Klasse) auch eine Änderung in der konkreten graphischen Syntax (z. B. Vergrößerung
der Figur für die Klasse wegen längerem Namen) zur Folge. Diese Unterschiede werden bei der
Differenzbildung auf Basis von Textdateien erkannt, können aber durch den Entwickler nicht visuell erfasst und richtig interpretiert werden.
3.3
Identifikation von Merge-Konflikten
Beim Mergen von zwei Versionen einer Textdatei (z. B. aus unterschiedlichen Branches) gibt es
verschiedene Fälle, die unterschieden werden können:
94
Trivialer Merge: Beide Versionen stimmen überein. Es sind keine inhaltlichen Veränderungen
notwendig.
Einfacher Merge: Das Element wurde in einem der Branches seit der Abzweigung nicht mehr
verändert, d. h. es erfolgten lediglich Änderungen in dem anderen Branch, die konfliktfrei
übernommen werden können. Alternativ können auch in beiden Branches Änderungen erfolgen, die sich aber nicht widersprechen und nicht die gleichen Bereiche der Textdatei
betreffen. Als Spezialfall können in beiden Branches auch die gleichen Änderungen parallel durchgeführt worden sein, so dass der textuelle Inhalt wieder übereinstimmt. Einfache
Merges können automatisiert werden.
Merge-Konflikt: Es wurden Änderungen durchgeführt, die überlappende Bereiche im Text betreffen. Solche Konflikte müssen durch einen Entwickler manuell und interaktiv im MergeWerkzeug aufgelöst werden.
Abbildung 3: Textuelle Differenz von Pipelines
Es ist zu beachten, dass die obigen Definitionen und Merge-Konflikte daraus resultieren, dass
die Differenzbildung und das Mergen bisher auf Textvergleichen beruhen. Bei einem ModellRepository, welches intern die Modellstrukturen versteht, könnten Merge-Konflikte anderweitig
verursacht werden. So hat beispielsweise die Art der Identifizierung von vergleichbaren Modellelementen einen großen Einfluss auf das Ergebnis der Operation. Durch die textuelle Verarbeitung
95
Abbildung 4: Textuelle Differenz von UML-Modellen
können, genau wie bei der Differenzbildung, Merge-Konflikte festgestellt werden, die eigentlich
aus Modellsicht keine sind, da sich inhaltlich nichts geändert hat, sondern es nur syntaktische
Unterschiede gibt.
3.4
Manuelle Auflösung von Merge-Konflikten
Zur Auflösung von Merge-Konflikten hat sich die Nutzung eines 3-Wege-Merge-Systems bewährt,
mit dem der Entwickler verschiedene Versionen einer Datei textbasiert zusammenführen und gegebenenfalls manuell korrigieren kann (siehe Abbildung 3).
Ein manueller Merge kann nicht nur der Auflösung von Konflikten dienen, sondern erlaubt auch
die selektive Übernahme von ausgewählten Änderungen in die Zielversion. Wenn beispielsweise
in einem Branch mehrere Features implementiert wurden, von denen aber nur eins in die Zielversion übernommen werden soll, kann dies selektiv durch die Übernahme von ausgewählten
Textpassagen erreicht werden. Bei den anderen Passagen behält man den originalen Inhalt bei.
Ein manueller Merge von Modellen ist auf diesem Wege derzeit aber praktisch nicht möglich.
96
3.5
Automatisierte Auflösung von Merge-Konflikten
Die weitgehend automatisierte Durchführung von Merges ist Voraussetzung für den effizienten
Umgang mit großen Datenmengen und einer großen Zahl von Dateien (6-stellige Anzahl). Ein
manueller Merge kann daher nur die Ausnahme sein, und nicht die Regel. Zur Vermeidung von
Merge-Konflikten müssen daher auch organisatorische Maßnahmen beitragen. Beispielsweise ist
es häufig einfacher, öfters kleinere Änderungen zusammenzuführen, als selten große.
„Echte“ Merge-Konflikte können nicht automatisiert behandelt werden, sondern erfordern immer
eine Entscheidung bzw. Maßnahmen des Entwicklers. Allerdings wäre eine Automatisierung der
gezielten Übernahme von Teiländerungen (z. B. Merge von einzelnen Features) denkbar. Dazu
müsste das Repository aber Änderungen in einen Zusammenhang stellen können, was derzeit
nicht möglich ist.
Abbildung 5: Manueller 3-Wege-Merge mit Rational Clearcase
3.6
Granularität von Artefakten
Um eine Änderung eines versionierten Elementes durchführen zu können und Merge-Aufwände
beim Commit zu vermeiden, muss es vorher explizit im aktuellen Branch für alle anderen Nutzer
97
gesperrt werden. Das Sperren erfolgt dabei auf den Elementen, die das SCM unterstützt, also auf
Dateien und Verzeichnissen. Die explizite Sperrung ist beabsichtigt, weil dadurch nachträgliche
ungewollte und möglicherweise aufwändige Merge-Operationen vermieden werden können.
Das Sperren kann sich nachteilig auf die parallele Entwicklung auswirken, wenn mehrere Entwickler Zugriff auf die gleichen Dateien benötigen. Dies verschärft sich insbesondere dann, wenn
wenige große Dateien (z. B. UML-Modelle) anstatt vieler kleiner Dateien bearbeitet werden müssen. Für eine hohe Parallelität bei der Entwicklung ist daher ein feingranulares Sperren notwendig.
Um trotz der expliziten Sperren wenigsten Teilmodelle durch verschiedene Entwickler parallel
bearbeitbar zu machen, wurden die Enfinity-UML-Modelle in kleinere Pakete zerlegt. Derzeit
wird jedes UML-Package (äquivalent zu einem Java-Package) in einer eigenen Datei gespeichert.
Dies erschwert jedoch den Umgang mit UML-Modellen, da aus der Zerlegung zahlreiche Verlinkungen zwischen abhängigen Dateien resultieren.
Zu einem möglichst konfliktfreien Sperren von Dateien können ebenfalls organisatorische Maßnahmen notwendig sein, z. B. die Aufteilung der Entwicklerkapazitäten auf verschiedene unabhängige Features.
3.7
Unterstützung von Refactoring-Prozessen
Refactoring, also die Umstrukturierung von Source-Code und Modellen, betrifft einerseits die Inhalte von Textdateien, als auch andererseits den Speicherort (z. B. bei Dateiverschiebungen) und
die Dateinamen (z. B. bei Umbenennung einer Java-Klasse). Bei Umbenennungen und Verschiebungen müssen daher Änderungen sowohl „außerhalb“ als auch „innerhalb“ der Datei synchronisiert durchgeführt werden. Oftmals sind mehrere Dateien betroffen, z. B. abhängige Java-Klassen.
Bei textuellen Sprachen, wie z. B. Java oder textuellen domänenspezifischen Sprachen (DSL), ist
ein Refactoring noch vergleichsweise einfach lösbar, weil es keine statische Verlinkung zwischen
den Dateien gibt. Es wird nur Text entwickelt, der erst zum Zeitpunkt des Compilierens einen
konsistenten Zustand haben muss. Die Bearbeitung des Textes ist jederzeit möglich, auch wenn
er beispielsweise inhaltlich zwischenzeitlich keinen gültigen Java-Code ergibt.
Bei UML-Modellen hingegen, insbesondere wenn sie in viele kleinere UML-Packages zerlegt
wurden, gibt es direkte Referenzen auf Modellelemente zwischen den Dateien, z. B. in Form von
URIs auf Objekte. Wenn ein UML-Modell umbenannt wird, müssen sämtliche abhängigen UMLModelle ebenfalls korrigiert werden, weil sie ansonsten – im Gegensatz zu textuellen Artefakten
– inkonsistent werden und nicht mehr vom UML-Editor geladen werden können. Darum ist das
Refactoring von Modellen auf Basis von XMI-Dateien derzeit ein gravierendes Problem, welches
durch ein Modell-Repository geeignet zu lösen ist.
3.8
Abbildung von Abhängigkeitsbeziehungen zwischen Modellen
Abhängigkeiten zwischen Modellen (also Modelldateien) sind derzeit, wie im obigen Beispiel
beschrieben, meist explizit ausgedrückt, z. B. durch URIs. Es gibt verschiedene Dimensionen, in
98
denen Abhängigkeiten bestehen können, z. B. die Kompositionsdimension von Gesamtmodellen
aus Teilmodellen, die Instance-of-Dimension bei Beziehungen eines Modells zu seinem Metamodell usw. Die Ablage von Modellen erfolgt nicht einheitlich in einem globalen Repository,
sondern es gibt verschiedene Medienbrüche. Beispielsweise ist das UML-Metamodell in einem
Eclipse-Plugin definiert, die Enfinity-UML-Modelle liegen hingegen in der Enfinity-Installation
oder in dem aktuellen Entwicklungsprojekt vor. Das erschwert die korrekte Auflösung von Abhängigkeiten.
Neben dem Refactoring (also der Umstrukturierung) von Modellen findet natürlich auch eine Evolution (also eine Weiterentwicklung) der Modelle statt, d. h. es entsteht zusätzlich ein Versionierungsproblem. Zur Lösung müssen Abhängigkeiten ggf. durch eine Migration korrigiert werden.
Derzeit gibt es keine geeignete Werkzeugunterstützung für Modellmigrationen.
3.9
Werkzeugintegration
Die Werkzeuge, die in Entwicklungsprojekten zum Einsatz kommen, stammen in der Regel von
verschiedenen Herstellern, basieren auf unterschiedlichen Architekturen, arbeiten autark und haben keine gemeinsame Plattform. Daraus ergeben sich Probleme bei der Integration der Werkzeuge miteinander. Für einen Entwickler wäre die Unterstützung eines ganzheitlichen „EntwicklungsWorkflows“ gemäß dem vordefinierten Entwicklungsprozess und eine einheitliche Sicht auf alle
relevanten Artefakte wichtig, bei der die Informationen aus den einzelnen Werkzeugen miteinander verknüpft werden und damit eine einfache Zuordnung von Aktivitäten, ihren Ursachen und
ihren Auswirkungen möglich ist (wer hat was wann warum gemacht und was hat die Änderung
für Seiteneffekte und Nachwirkungen?)
4 Zusammenfassung
Die modellgetriebene Software-Entwicklung basiert auf den Prinzipien formale Modellierung und
Ausnutzung von Modellen durch Modelloperationen wie z. B. Modelltransformationen. Modelle
tragen damit im Gegensatz zu herkömmlichen modellbasierten Vorgehensweisen verstärkt den
Charakter eines Implementierungsartefakts.
Im industriellen Kontext ergibt sich hieraus die Anforderung, modellgetriebene Artefakte versioniert zu verwalten. Die aufgezeigten Problemstellungen einer bisher praktizierten textuellen
Versionskontrolle für grafische Modelle führen dazu, dass sich die Potenziale modellgetriebener Entwicklung (insbesondere zur Verbesserung der Produktivität, Qualität, Wartbarkeit) schnell
relativieren. Eine adäquate Versionsverwaltung für modellgetriebene Artefakte wird damit zum
kritischen Erfolgsfaktor.
99
Literatur
[emf08] Eclipse Modeling Framework Project (EMF).
Version: June 2008. – Abruf: 27.4.2011
http://www.eclipse.org/modeling/emf/.
[GH08] Gebauer, Martin ; Hänsgen, Peter: Ein Repository für die modellgetriebene Softwareentwicklung. Version: September 2008. http://orvia.informatik.uni-leipzig.de/Projekt/
OrviaBuch2008. In: Fähnrich, Klaus-Peter (Hrsg.) ; Kühne, Stefan (Hrsg.) ; Thränert, Maik
(Hrsg.): Model-Driven Integration Engineering – Modellierung, Validierung und Transformation zur Integration betrieblicher Anwendungssysteme Bd. XI. Leipzig : Eigenverlag Leipziger
Informatik-Verbund (LIV), September 2008. – ISBN 978–3–941152–02–1, 291–300
[Groa]
Group, Object M.: Unified Modeling Language. Object Management Group. http://www.uml.
org. – Abruf: 27.4.2011
[Grob]
Group, Object M.: XML Metadata Interchange (XMI). Object Management Group. http://www.
omg.org/spec/XMI/index.htm. – Abruf: 27.4.2011
[Hau10] Hauptverband des Deutschen Einzelhandels: E-Commerce-Umsatz 2010: HDE erwartet 23,7
Mrd. Euro. http://www.ebusiness-handel.de/pb/site/eco/node/142076/Lde/index.
html. Version: 2010. – Abruf 27.4.2011
[HB08] Hänsgen, Peter ; Budich, Thomas: Konzept für die modellgetriebene Entwicklung von Geschäftsanwendungen. Version: September 2008. http://orvia.informatik.uni-leipzig.de/
Projekt/OrviaBuch2008. In: Fähnrich, Klaus-Peter (Hrsg.) ; Kühne, Stefan (Hrsg.) ; Thränert,
Maik (Hrsg.): Model-Driven Integration Engineering – Modellierung, Validierung und Transformation zur Integration betrieblicher Anwendungssysteme Bd. XI. Leipzig : Eigenverlag Leipziger
Informatik-Verbund (LIV), September 2008. – ISBN 978–3–941152–02–1, 171-187
[Int10]
Intershop Communications AG: Intershop Enfinity Suite 6.4 – Application Programming Guide.
Intershop Communications AG, 2010
[SV06] Stahl, Thomas ; Völter, Markus: Model-Driven Software Development – Technology, Engineering, Management. John Wiley & Sons Inc., 2006. – ISBN 978–0470025703
100
Graph-basierte Speicherung und Versionierung von Modellen
Steffen Dienst, Stefan Kühne
Institut für Angewandte Informatik e.V. an der Universität Leipzig
Johannisgasse 26
04103 Leipzig
{dienst | kuehne}@infai.org
Kurzfassung: Die Speicherung, Versionierung und Traversierung von Modellen mit herkömmlichen VCS ist nicht zureichend. Aufgrund ihrer inhärenten Graphstruktur bietet sich jedoch
eine Persistierung in native Graph-Datenbanken an. Dieser Beitrag untersucht die notwendigen
Abbildungen und betrachtet Graph-Transformationen, die verschiedene Arten der Speicherung
von Graphversionen erlauben.
1 Anforderungen an Modell-Persistierung und -versionierung
1.1
Grundbegriffe
Im Kontext dieses Beitrags werden Modelle im Sinne von automatisiert les- und inter-pretierbaren
Repräsentationen von Aspekten und Sichten von Anwendungdomänen gebraucht.
Nach Herbert Stachowiak [Sta73] ist ein Modell gekennzeichnet durch:
Abbildung: Ein Modell ist immer ein Abbild bzw. eine Repräsentation eines Originals
Verkürzung: Ein Modell erfasst nicht alle Attribute eines Originals, sondern nur diefür einen
Einsatzzweck relevanten.
Pragmatismus: Ein Modell wird vom Modellierer zu einem bestimmten Zweck statt des Originals eingesetzt.
Dabei wird im ISO-Standard 19502 [Int05] zwischen vier Ebenen unterschieden:
0: M0 - Elemente der Realität, im Allgemeinen unverkürzt.
1: M1 - Instanzmodelle, Abbildung der Realität
2: M2 - Metamodell, Sprachelemente zur Definition von M1-Modellen
3: M3 - Metametamodell, übergreifende Sprachkonzepte zur Definition von M2-Modellen
101
1.2
Versionierung auf Strukturebene
Die Struktur von Modellen unterscheidet sich deutlich von unstrukturierten Textdateien, welche
in herkömmlichen VCS verwaltet werden. Die Granularität, die bei Textdateien versioniert wird,
erstreckt sich über Verzeichnisstrukturen, Dateien bis hin zu einzelnen Textzeilen. Die Struktur
der Informationen, die in diesen Textzeilen enthalten ist, ist für die Versionierung im Allgemeinen
irrelevant.
Modelle lassen sich mit diesen Werkzeugen nicht ausreichend komfortabel verwalten. Textuelle
Repräsentationen von Modellen sind für Datenaustausch und maschinelle Interpretationen ausreichend, sind jedoch für Menschen nur schwer verständlich. Wird ein solches Modell nun konkurrierend verändert und muss manuell zu einem gemeinsamen Änderungsstand gemischt werden,
können auf Textzeilenebene Konflikte auftreten, die semantisch im Modell keine Entsprechung
haben und umgekehrt. Dazu ist eine textuelle Repräsentation eines Modells meist sehr detailliert
und umfangreich, so dass die Art der Änderungen im Modell durch Inspektion des Textes nicht
oder nur sehr aufwendig erkannt werden können.
Diese Problematik resultiert aus einer unangemessenen Repräsentation von Modellen für Versionierungszwecke. Es lassen sich folgende Anforderungen an ein Versionierungssystem erkennen:
• Die Granularität der Versionierung sind die Modellstrukturen (genauer: Elemente des M3/
M2-Modells).
• Beziehungen (Referenzen) zwischen Modellelementen und zwischen verschiedenen Modellen müssen versioniert werden.
• Beziehungen (Referenzen) zwischen Modellelementen und zwischen verschiedenen Modellen müssen versioniert werden.
• Unterschiede zwischen Modellversionen müssen
• Eine Unterstützung für automatisches Mischen von konfliktfreien konkurrierenden Modelländerungen soll unterstützt werden.
• Änderungen an Metamodellen sollen unterstützt werden.
1.3
Abgrenzung von Metamodellevolution
Ein spezielles Problem der Versionierung von Instanzmodellen ist die Notwendigkeit der Konformität zu einem fixen Metamodell. Sobald sich die Struktur dieses Metamodells ändert, werden
existierende Instanzmodelle meist ungültig. Existierende Werkzeuge, die versuchen, automatisiert
Änderungen des Metamodell in Instanzmodellen nachzuvollziehen, arbeiten meist auf der Ebene
der einzelnen Editieroperationen des Anwenders. Ein Beispiel dafür ist COPE [Her10]. Diese
Problematik lässt sich durch die Art der Speicherung von Versionsdaten nicht beheben und ist
deshalb nicht Bestandteil dieses Beitrags.
102
2 Existierende Persistierungs- und Versionierungssysteme für Modelle
2.1
Textbasiert: XML/MOF
Textuelle Repräsentation können unterschieden werden in domänenspezifische Sprachen und Serialisierungen, etwa in MOF1 bzw. XML. Während die Versionierung in herkömmlichen VCS
von DSLs im Allgemeinen problemlos möglich ist, stellt sich die Versionierung und vor allem die
konkurrierende Bearbeitung von XML problematisch dar. Einfache semantische Änderungen eines Modells können zu unübersichtlichen Änderungen der XML-Repräsentation führen. So ergibt
etwa die Umkehrung einer Beziehung zwischen zwei Klassen in einem UML-Klassendiagramm
mit dem Werkzeug Eclipse UML2 Änderungen an sechs verschiedenen XML-Elementen. Wenn
nun zwei Änderungen dieses Modells miteinander kombiniert werden sollen, ist selbst bei semantischer Konfliktfreiheit oftmals die Kombination der beiden XML-Dokumente nicht konfliktfrei
möglich.
Ein weiteres Problem ist, dass Referenzen zwischen Modellen aufwendig zu pflegen sind. Eine
Verletzung von Referenzen ist nur zu erkennen, indem alle beteiligten Modelle deserialisiert und
auf Konsistenz untersucht werden.
2.2
Relational
Das relationale Datenbankmodell eignet sich augenscheinlich gut für den Einsatz zur Persistierung von Modellen. Jede Klasse wird als Tabelle abgebildet, Attribute als Spalten, Modellreferenzen als Referenzen auf Tabellenzeilen. Praktisch ergeben sich jedoch eine Reihe von Problemen.
Das Metamodell ist in Form der Tabellenstruktur fixiert. Eine Änderung ist im Allgemeinen nicht
möglich. Die Tabellen selbst sind häufig nur sehr dünn besetzt, da Instanzmodelle nicht für alle im
Metamodell definierten Attribute Werte enthalten müssen. Dies führt zu einem hohen und unnötig aufgeblähten Speicherverbrauch sowie einer schlechteren Abfrageperformanz. Zuletzt ist der
Aufwand der Wiederherstellung eines Modells unter Umständen sehr hoch, da etwa für die Rekonstruktion von mehrwertigen Attributen mitunter sehr komplexe Join-Operationen notwendig
sind.
2.3
Objektorientiert
Objektdatenbanken erlauben die Serialisierung von konkreten Instanzen einer objektorientierten
Programmiersprache. Vorteilhaft ist die hohe Performanz bei Speicherung und Wiederherstellung
von Modellen. Es ist jedoch nicht bzw. nur aufwendig möglich (etwa durch Verwendung des
Proxy-Entwurfsmusters), Teile von Objekten zu deserialisieren. Auch die Iteration über serialisierte Modelle ist schwierig da stark von den konkreten binären Speicherstrukturen abhängig.
Die Austauschbarkeit von serialisierten Modellen ist ebenfalls stark beschränkt, da nur dieselbe
Programmiersprache genutzt werden kann, in der das Modell gespeichert wurde.
1
http://www.omg.org/spec/MOF/2.0/
103
2.4
Operationsbasiert
Eine weitere Möglichkeit, Modelle zu versionieren ist es, Änderungsoperationen, die bei der Bearbeitung verwendet werden, zu speichern. Zur Wiederherstellung einer Modellversion braucht
man die Ursprungsversion und eine Sequenz von Operationen, die sequentiell angewendet werden müssen.
Für die Aufzeichnung ist eine geeignete Editorunterstützung notwendig. Änderungen an Modellen außerhalb dieses Editors können nicht erfasst werden und führen zu Inkonsistenzen in der
Versionierung.
3 Graph-basierte Speicherung
3.1
Grundlagen
Ein Graph G ist ein Tupel (V, E), wobei V eine Menge von Knoten darstellt und E eine Menge
von Paaren von Elementen aus V, genannt Kanten. Diese Kanten stellen gerichtete Verbindungen
zwischen den Knoten aus V dar. Ein Graph heißt azyklischer, gerichteter Graph (directed acyclic
graph DAG), wenn er zusätzlich zu obiger Definition keine Zyklen hat. Es gibt also keinen Pfad,
der ausgehend von einem Knoten gerichtete Kanten verfolgt und zu demselben Knoten zurückführt.
3.2
Versionierungsinformationen
Ein Versionierungsverwaltungssystem muss neben den eigentlichen Inhalten, die versioniert werden, auch Informationen über Revisionen, Entwicklungszweige (Branches), Metadaten und den
Beziehungen zwischen diesen Konzepten verwalten. Abbildung 1 zeigt exemplarisch drei Entwicklungszweige mit den entsprechenden Revisionen.
Die enthaltenen Elemente sind im Einzelnen: Revisionen, Branches und Tags (benannte Zeiger
auf Revisionen). Revisionen enthalten Metainformationen über eine einzelne Version, wie etwa
Name des Commiters, einen Zeitstempel, eine Beschreibung der Änderungen und Informationen
darüber, welche Modelle in dieser Revision verändert wurden. Jede Revision, bis auf die erste,
hat mindestens einen Vorgänger. Stellt eine Revision die Wiedervereinigung zweier Branches
dar (Merge), hat sie zwei Vorgänger. Diese gesamte Struktur stellt einen gerichteten azyklischen
Graphen dar (siehe Abschnitt 4.1), lässt sich also direkt homomorph in einer graphbasierten Datenbank speichern.
104
HEAD
main
commit 11
Release 1
(Tag)
Branch3 HEAD
Branch 3
commit 8
(merge)
commit 10
commit 5
commit 9
Branch 2
commit 7
commit 4
commit 6
commit 3
commit 2
commit 1
author
...
date
...
Versionsbaum
Abbildung 1: Entwicklungszweige und Revisionen
3.3
Speicherungsstrukturen
Modelle sind konform zu einem Metamodell, dieses wiederum zu einem Meta-Metamodell (M3Modell, siehe [Int05]). Dieser Betrachtung soll ein hypothetisches, vereinfachtes M3-Modell zugrunde liegen: Es besteht aus Klassen mit Attributen und Referenzen auf andere Klassen. Attribute und Referenzen können geordnet sein, die Reihenfolge ihrer Elemente kann signifikant sein
oder nicht (Listensemantik). Damit ergeben sich folgende Abbildungen von Modellelementen auf
Graphstrukturen:
• Klassen/Instanzobjekte → Knoten
• Attributwerte → Eigenschaften von Knoten
• Referenzen → gerichtete Kanten
105
• Geordnete Attribute → verkettete Liste von Knoten, die jeweils einen Attributwert enthalten
und auf ihren Nachfolger verweisen
3.4
Komplettkopie
Die einfachste Variante der Versionierung ist die Speicherung vollständiger Modellversionen. Dazu werden in jeder Revision die aktuell gültige Version eines Modells mit Hilfe der Abbildungsvorschriften aus Abschnitt 4.3 graph-basiert gespeichert. Vorteilhaft ist dabei, dass die Wiederherstellung der einzelnen Modellversionen unproblematisch ist: jede Revision referenziert vollständige persistierte Modelle. Eine Rekonstruktion ist nicht notwendig.
Abbildung 2: Speicherung kompletter Modelle
Diese Vorgehensweise weist jedoch zwei gravierende Nachteile auf: Der Speicherverbrauch ist
hoch. Selbst bei geringen Unterschieden zwischen zwei Revisionen müssen die Modelle komplett
gespeichert werden. Außerdem ist es nur aufwendig möglich, diese Unterschiede zu rekonstruieren. Im Allgemeinen ist dazu ein externes dediziertes Werkzeug notwendig.
3.5
Mengenwertige Deltas
Um die Nachteile einer Komplettspeicherung von Modellen pro Revisionen auszugleichen, gibt
es die Möglichkeit, dediziert die Menge der Unterschiede pro Modell zwischen zwei Revisionen
zu speichern. Der notwendige Speicherplatz pro Revision ist dann nur noch proportional zum
Umfang der Änderungen und nicht zur Modellgröße. Auch lassen sich so die eigentlichen Änderungen problemlos ermitteln, etwa zwischen Revisionen, die zeitlich aufeinander folgen, jedoch
nicht unmittelbar. Dazu muss nur eine Vereinigung der beiden Änderungsmengen berechnet werden, wobei eventuell auftretende Konflikte zu berücksichtigen sind (etwa das Löschen eines zuvor
geänderten Elementes).
106
Nachteil dieser Speicherungsart ist jedoch der Aufwand, der notwendig ist, um ein Modell aus einer Revision zu rekonstruieren. Dazu sind, ausgehend von der initialen Komplettspeicherung des
Modells, die jeweiligen Änderungen in allen Vorgängerrevisionen auf dieses Modell anzuwenden.
Der Aufwand ist dabei proportional zur Länge der Historie und zum Umfang der Modelländerungen.
Wünschenswert ist also eine Kombination der beiden Speicherungsarten: Die unmittelbare Sicht
auf vollständige Modellversionen pro Revisionen bei gleichzeitiger Speicherung von Änderungen
pro Revision. Notwendig ist hierfür eine Datenstruktur, die die Wiederverwendung von Strukturen
erlaubt, um Speicherplatz zu sparen, dabei jedoch eine Sicht auf ein komplettes Modell erlaubt.
Datenstrukturen mit dieser Eigenschaft heißen „persistent“ und werden ausführlich in [Oka03]
beschrieben.
Die Abbildung 3 zeigt auf der rechten Seite beispielhaft zwei Modellversionen. In Version 2 wurde das Modellelement obj2 mitsamt allen beteiligten Referenzen entfernt. Um dies zu erreichen,
muss die den Modellen inhärente Graph-Struktur in einen DAG umgewandelt werden.
original graph
v1
obj2
in
obj1
out
in
v2
package
changed graph
package
package
subpackage
subpackage
out in
in
out
subpackage
obj1
obj2
obj1
out
Nested structures
Abbildung 3: Speicherung von geänderten Modellelementen
Die Umwandlung in einen DAG erfolgt durch die Auflösung von möglichen Schleifen, indem Referenzen zwischen Knoten nicht mehr als Kante gespeichert werden, sondern als eigenständige
Knoten mit min. zwei eingehenden Kanten, die typisiert sind mit einem der beiden Typen „in“
oder „out“. Um nun ein Modell in einer Revision zu rekonstruieren, müssen alle vom Revisionsknoten aus erreichbaren Knoten und Kanten des Graphen traversiert und markiert werden. Dabei
werden nur die Referenzknoten berücksichtigt, die über genau zwei Kanten erreichbar sind („in“
und „out“). Zur Verdeutlichung soll hier Abbildung 4 dienen:
Ausgehend von Revision v2 sind drei Objektknoten und vier Referenzknoten erreichbar. Dabei
sind jedoch nur bei zwei dieser Referenzknoten sowohl „in“ als auch „out“-Kanten markiert. Damit ergibt sich ein Modell mit drei Objekten, die linear zusammenhängen (siehe Abbildung 3
rechts).
107
original graph
v1
obj2
in
obj1
out
in
v2
package
changed graph
package
package
subpackage
subpackage
out in
in
out
subpackage
obj1
obj2
obj1
out
Nested structures
Abbildung 4: Rekonstruktion einer Modellversion
Analog dazu lässt sich Version v1 als geändertes Modell interpretieren, bei welchem ein Objekt
(ob j2 ) und zwei Referenzen (ob j1 ↔ ob j2 ) hinzugefügt wurden. Die Rekonstruktion erfolgt
analog zu dem im obigen Absatz spezifizierten Algorithmus.
3.6
Speicherung von vorwärtsgerichteten operationalen Deltas
Die in Abschnitt 4.5 beschriebene Speicherung von Modellversionen in Form von Modelländerungen erlaubt zwar eine schnelle Rekonstruktion von Modellen, jedoch ist die Analyse der Art
der Änderungen aufwendig. Um Herauszufinden, welche Elemente gelöscht oder hinzugefügt
wurden (Änderungen lassen sich prinzipiell als Kombination von Löschen und Hinzufügen darstellen), müssen beide Modellversionen betrachtet werden.
Ein alternativer Ansatz ist hier die explizite Speicherung von Änderungsoperationen, die notwendig sind, um eine Modellversion in eine Nachfolgerversion zu überführen. Dies wird demonstriert
in Abbildung 5.
Voraussetzung hierfür ist eine Editorunterstützung, die Änderungsoperationen bei der Editierung
eines Modells aufzeichnet bzw. einer robusten Erkennung von Modelländerungen und einer Überführung dieser Änderungen in äquivalente Änderungsoperationen. Pro Revision gibt es zwei Mengen von Änderungen: Neu hinzugefügte und gelöschte Modellelemente ([Ohs04]).
Zur Wiederherstellung eines Modells zum Zeitpunkt einer Revision ist eine Rekonstruktion aller Änderungsoperationen seit dem initial komplett gespeicherten Modell notwendig. Im obigen
Beispiel wird demnach ausgehend von der Zielrevision, die wiederhergestellt werden soll die
Vorgängerrevision ermittelt, in der das Modell vollständig vorlag. Von dieser Version ausgehend
werden nun für alle Nachfolgerrevisionen die gespeicherten Änderungsoperationen auf diesem
Modell ausgeführt. Das Endresultat stellt dann die gesuchte Modellversion dar.
108
v3
msg
v2
removed ref1
add
msg
del
v1
changed obj2
add
msg
del
obj2’
add
obj2
in in
initial checkin
del
obj1
out
Versions refer to former version contents+deletions+additions
Abbildung 5: Speicherung von Änderungsoperationen (vorwärts)
Vorteil der Speicherung von vorwärtsgerichteten operationalen Deltas ist der direkte Zugriff auf
die Unterschiede zwischen zwei Modellversionen zusammen mit der Information, welcher Art
diese Unterschiede sind. Nachteil ist die aufwendige Rekonstruktion des Modellinhaltes. In einem
VCS wird die jeweils aktuellste Revision am häufigsten ausgelesen. Wegen des so sehr häufig
anfallenden Aufwandes eignet sich diese Speicherungsart also im Allgemeinen nicht für einen
Einsatz in einem VCS.
3.7
Speicherung von rückwärts gerichteten operationalen Deltas
Alternativ zur Abschnitt 4.6 ist auch eine Speicherung von Operationen denkbar, die ausgehend
von der aktuellsten Modellversion die Vorgängerversionen wiederherstellt. Dazu müssen die tatsächlichen, in der korrekten chronologischen Reihenfolge durchgeführten Änderungsoperationen
entsprechend umgeschrieben werden. Voraussetzung hierfür ist, dass alle Operationen symmetrisch und bijektiv und daher umkehrbar sind.
v5
msg
v4
del obj2,del ref
del
msg
add
del
obj1
in
v3
added obj3+ref
msg
del
add
obj3
out
v2
changed obj2’
msg
add
del
obj2
out
in
v1
added ref
msg
add
initial checkin
del
add
obj2’
in
Abbildung 6: Speicherung von Änderungsoperationen (rückwärts)
109
Jede Version enthält damit die operationalen Änderungen, die notwendig sind, um die Modellversion aus der Nachfolgerversion zu rekonstruieren. Die gespeicherten Operationen sind also das
Gegenteil der tatsächlich erfolgten Änderungen des Benutzers.
Der Aufwand für die Rekonstruktion von Modellversionen entspricht dem Aufwand für die Speicherung von vorwärts gerichteten operativen Deltas, jedoch wächst der Aufwand mit dem Alter
der Version. Die jeweils aktuellste Version eines Entwicklungszweiges lässt sich nach dem in
Kapitel 4.4 beschriebenen Algorithmus direkt auslesen. Die Vorgängerversionen müssen iterativ
anhand der gespeicherten Änderungsoperationen rekonstruiert werden.
Problematisch ist bei dieser Vorgehensweise jedoch, dass gespeicherte Graphstrukturen bei einer neuen Revision im Gegensatz zu Kapitel 4.6 verändert werden müssen. Ein Einsatz dieser
Speicherungsart in dezentralen Repositories kommt daher nicht in Betracht.
3.8
Optimierung
Der Aufwand für die Rekonstruktion von Modellversionen bei Einsatz einer der Methoden aus
Kapitel 4.6 oder 4.7 steigt linear mit der Länge der Historie. Dieser Aufwand lässt sich begrenzen, indem an geeigneten Stellen in der Historie jeweils Komplettkopien der Modelle zum entsprechenden Zeitpunkt gespeichert werden. Zeitlich bieten sich hier Revisionen an, zu denen Entwicklungszweige erstellt werden bzw. wieder zusammengeführt werden. Der Speicherverbrauch
erhöht sich dadurch proportional zur Modellgröße. Der Performanzgewinn ist deshalb gegen diesen Mehrbedarf an Speicherplatz abzuwägen.
4 Zusammenfassung und Bewertung
Die Anforderung, Modelle kollaborativ und konkurrierend bearbeiten und versionieren zu können
ist mit herkömmlichen VCS nicht zufriedenstellend möglich. Die Graphenstruktur von Modellen
und Modellbeziehungen untereinander lässt sich nur umständlich auf hierarchische oder flache
Speicherstrukturen abbilden. Die Verwendung einer graph-basierten Nosql-Datenbank bietet hier
ein Werkzeug, um die Anforderungen an Modellversionierung aus Kapitel 2 optimal umzusetzen.
Dieser Beitrag beschreibt dafür Abbildungsstrukturen für Modelle, Referenzen zwischen Modellelementen, Änderungen von Modellen und Versionierungsmetadaten auf Graphen.
Diese graph-basierten Speicherungsformate erlauben eine direkte Navigation auf Modellstrukturen und ermöglichen damit weitergehende Mehrwertfunktionen. Hier sei etwa auf Anfragesprachen wie OQL [Cat00] verwiesen oder auch Indexierungswerkzeuge wie EMF Index2 die direkt auf Graphdatenbanken operieren könnten. Durch diesen reduzierten „impedance mismatch“
[IBNW09] ergeben sich eine Vielzahl von Anwendungsmöglichkeiten bei deutlich reduziertem
technischem Aufwand.
2
110
http://www.eclipse.org/emfindex/
Literatur
[Cat00]
Cattell, Roderic Geoffrey Galton: The object data standard: ODMG 3.0. San Francisco :
Morgan Kaufmann, 2000 (The Morgan Kaufman series in data management systems). – ISBN
978–1558606470
[Her10]
Herrmannsdoerfer, Markus: COPE - A Workbench for the Coupled Evolution of Metamodels and Models. In: Proceedings of the 3rd International Conference on Software Language
Engineering (SLE), 2010, S. 286–295
[IBNW09] Ireland, Christopher ; Bowers, David ; Newton, Mike ; Waugh, Kevin: A classification of
object-relational impedance mismatch. In: First International Conference on Advances in Databases, Knowledge, and Data Applications (DBKDA), 2009
[Int05]
International Organization for Standardization (ISO): ISO/IEC 19502:2005 / International
Organization for Standardization (ISO). 2005. – Forschungsbericht
[Ohs04]
Ohst, Dirk: Versionierungskonzepte mit Unterstützung für Differenz- und Mischwerkzeuge. Siegen, Univ., Diss., 2004
[Oka03]
Okasaki, Chris: Purely functional data structures. 1. paperback ed., transf. to digital printing.
Cambridge : Cambridge Univ. Press, 2003. – ISBN 978–0521663502
[Sta73]
Stachowiak, Herbert: Allgemeine Modelltheorie. Wien [u.a.] : Springer, 1973. – XV, 494
S. : graph. Darst. https://aleph.ub.uni-kl.de/F/?func=full-set-set&set_number=
002380&set_entry=000012&format=999. – ISBN 3–211–81106–0
111
112
MTF - Modeling Team Framework zur effizienten Unterstützung
modellgetriebener Softwareentwicklungsprozesse
Steffen Dienst1 , Steffen Stundzig2
1
Institut für Angewandte Informatik e.V. an der Universität Leipzig
Johannisgasse 26
04103 Leipzig
dienst@infai.org
2
itemis AG
Ludwig-Erhardt-Str. 51
04103 Leipzig
steffen.stundzig@itemis.com
Kurzfassung: Modellgetriebene Softwareentwicklung verspricht die Erstellung qualitativ hochwertiger Software mit geringer Fehlerdichte und preiswerter Erweiterbarkeit bei neuen Anforderungen bei gleichzeitig geringerer Komplexität und niedrigeren Kosten, als bei herkömmlichen Methoden. Dafür ist jedoch der konzertierte Einsatz einer Vielzahl von Werkzeugen in
verteilten Entwicklungsteams unabdingbar.
Speziell die konsistente Versionierung aller anfallenden Artefakte wie Modelle, Code, Konfigurationsdaten und besonders Werkzeugversionen ist ein nach aktuellem Stand der Entwicklung aufwendiger, vorwiegend manueller Prozessschritt. Auch die Sicherstellung der Integrität
dieser Artefakte und insbesondere ihrer Beziehungen und Abhängigkeiten erfolgt nur unzureichend automatisiert.
MTF bietet hier eine automatisierte Unterstützung, die es erlaubt, alle im Rahmen von
MDSD anfallenden Artefakte zentral zu versionieren. Die Speicherung erfolgt hierbei in dedizierten, für die Artefakttypen geeigneten Repositories. Zusammen mit einer Aufbereitung der
Abhängigkeiten und Beziehungen zwischen den versionierten Artefakten, etwa zur Analyse
von Fehlerursachen oder zur Konsistenzprüfung, sowie einer Unterstützung für die automatisierte Aktualisierung von Werkzeugkonfigurationen bei den beteiligten Entwicklern bietet
MTF einen wichtigen bisher fehlenden Open-Source-Baustein im Werkzeugmarkt.
MTF reduziert damit die technische Komplexität von MDSD und erschließt diese Vorgehensweise größeren Kundenkreisen.
1 Thema und Zielsetzung des Vorhabens
1.1
„Model Driven Software Development“ – Nutzen und Chance
Die Entwicklung von Software geschieht in einem Spannungsfeld aus der Forderung nach qualitativ hochwertigen Lösungen bei möglichst niedrigen Kosten. Zusammen mit Problemen wie
zunehmender technischer Komplexität, schnell wechselnden Technologien und dem Druck, sich
113
kontinuierlich ändernden Anforderungen gerecht zu werden, stellt sich nach wie vor die Frage,
wie diesen Herausforderungen begegnet werden kann.
Die Entwicklung des Softwareengineerings zeigt einen stetigen Trend zur Abstraktionserhöhung.
Angefangen von hardwarenahen Programmiersprachen über höherwertige Sprachen, Ansätze wie
strukturierte und objektorientierte Programmierung ist der Wunsch erkennbar, die Trennung von
inhärenter Domänenkomplexität („essential complexity“) von Komplexität, die durch Programmiersprachen und Werkzeuge verursacht werden („accidental complexity“ [Bro86]) zu trennen.
Modelle repräsentieren das eigentliche, für den Endkunden relevante, Domänenwissen ohne dass
technische Implementierungsdetails dem Verständnis im Wege stehen. Speziell durch die Verwendung von domänenspezifischen Sprachen lassen sich Anforderungen elegant erfassen und mit
Hilfe von technologiespezifischen Transformationen direkter in technische Lösungen überführen,
als durch klassische manuelle Softwareentwicklungsverfahren. Die Verwendung von Generatoren für die schrittweise automatische Überführung von Modellen in ausführbare Software führt
zusammen mit der automatischen Validierbarkeit von Modellen [BLW05] zu einer geringeren
Fehlerhäufigkeit und damit zu reduzierten Entwicklungs- und Wartungskosten sowie einer geringeren „Time to market“ [KDZ10]. Weitere Vorteile sind die Reduktion von Wartungsaufwänden
für Dokumentationen, da Modelle als kanonische Beschreibung dienen und immer mit den daraus generierten Produkten übereinstimmen. MDSD erlaubt einfachere Anpassung der Software
bei Änderungen an den Anforderungen und nicht zuletzt eine höhere Technologieunabhängigkeit
durch austauschbare Templates.
Die Einführung eines modellgetriebenen Ansatzes ist im Allgemeinen mit einem hohen Aufwand
verbunden. Schulungsaufwand für die einzusetzenden Werkzeuge ist nötig, die prototypische manuelle Erstellung von Anwendungen als Grundlage für die Ableitung von Templates, das Aufsetzen und die Konfiguration von Transformationsketten, Definition von Modelltransformationen
und die parallele Entwicklung von eigenen, domänenspezifischen Werkzeugen wie etwa Editoren
für DSLs. Ein prototypischer Prozess für MDSD wird in Abbildung 1 dargestellt.
Domain Engineering
Metamodelle
definieren
DSLs
definieren
Editoren
generieren
Templates
erstellen
Application Engineering
Modelle
definieren
Quellcode
generieren
Anwendung
ausliefern
Quellcode
anpassen
Editoren
anpassen
Legende:
Metamodelle
Domain Specific
Languages
Anwendungen
Templates
Modelle
Quellcode
Buildskripte
Werkzeuge
Abbildung 1: Prototypischer MDSD-Prozess
Ein großer Teil nichtdomänenspezifischer Komplexität von Softwareengineering wird durch modellgetriebene Ansätze in Werkzeuge auslagert. Diese Verlagerung bedeutet jedoch nicht notwendigerweise auch eine Reduktion der Komplexität selbst. Dies führt zu praktischen Fragestellungen
wie: Wie verwaltet und versioniert man etwa die Konfigurationen von Werkzeugen, die konzer-
114
tiert eingesetzt werden müssen? Oder: Wie findet man die Fehlerursache in Modellen, wenn der
Fehler selbst erst zur Laufzeit der resultierenden Software auftritt?
1.2
Unzureichende Werkzeugunterstützung
Trotz der umfangreichen Auswahl an Technologien und Werkzeugen für Kernaufgaben von MDSD
wie etwa Modellierung und Generierung sind essentielle Prozessbestandteile noch unzureichend
maschinell unterstützt. Die eindeutige semantische Versionierung anfallender Artefakte etwa erfolgt manuell in einzelnen dedizierten Repositories (siehe Beispiele in Abbildung 2). Da eine Vielzahl heterogener Artefakte entstehen und versioniert werden müssen, die zudem nicht zwingend
in nur einem Repository verwaltet werden, ergibt sich zusätzlicher Aufwand durch die Notwendigkeit der manuellen Synchronisation von Versionsnamen, Entwicklungszweigen, Konfigurationen,
Rollen und Rechten, Hooks etc. zwischen den einzelnen verwendeten Repositorien. Ebenso wird
die verzweigte Entwicklung, etwa für unterschiedliche Lebenszyklusphasen der Produkte oder
verschiedene Kunden erschwert. Es kann leicht geschehen, dass Änderungen an einem Modell zu
Inkonsistenzen etwa in darauf aufbauenden Editoren oder Templates führen, die erst zu einem wesentlich späteren Zeitpunkt erkannt werden können und damit im Allgemeinen nur mit höheren
Kosten auflösbar sind.
Wenn nun ein Fehler in einem finalen Softwareartefakt festgestellt wurde, stellt sich die Frage
nach der Lokalisation der Ursache desselben. Mit Hilfe klassischer Debuggingverfahren lässt sich
feststellen, an welcher Stelle des zugrundeliegenden Quellcodes der Fehler liegt. Da dieser Code selbst jedoch generiert wurde, müssen rekursiv alle Generierungsketten manuell nachverfolgt
werden, um herauszufinden, in welchem Template bzw. welcher Transformation der eigentliche
Fehler liegt. Diese Rückrichtung ist im Allgemeinen nur sehr aufwändig rekonstruierbar, die Fehlersuche selbst ist damit deutlich teurer als bei manuell geschriebenem Quellcode. Speziell für
Software, die als Produktlinie entwickelt wird, kann sich diese fehlende Traceability negativ auswirken, etwa wenn es darum geht, nach einem Fehler, der bei einem speziellen Produkt bei einem
Endkunden entdeckt wurde zu entscheiden, welche weiteren Produkte und Kunden davon ebenfalls betroffen sein könnten.
Wie in [GF94] beschrieben ist an dieser Stelle eine Unterstützung von „Post-requirements specification traceability“ wünschenswert, also einer Möglichkeit, Anforderungen durch alle technischen Artefakte hindurch nachverfolgen zu können. Aufgrund der Vielzahl von Werkzeugen am
Markt und der häufig unzureichenden Interoperabilität derselben ist keine durchgängige Unterstützung für die automatische Pflege von Beziehungen bzw. von Abhängigkeiten zwischen den
entstehenden Artefakten verfügbar.
MDSD und Softwareproduktlinien sind zwei Paradigmen, die speziell bei IT-Dienstleistern mit
einer großen Anzahl von Kunden häufig gemeinsam verwendet werden. Dabei werden ausgehend von einer gemeinsamen Grundplattform kundenspezifische Anforderungen modelliert und
in eigenständigen Entwicklungszweigen angepasste Produkte generiert. Neben der fehlenden Unterstützung von Traces ergeben sich in diesem Kontext weitere Probleme: Die unterschiedlichen
Entwicklungszweige pro Kunde werden zu unterschiedlichen Zeitpunkten angelegt. Damit ergibt
sich eine im Laufe der Zeit verschärfende Divergenz zwischen den verschiedenen Versionen und
115
Werkzeugketten zwischen der Hauptentwicklung und dem kundenspezifischen Zweig. Treten Fehler auf oder wünscht ein Kunde zu einem späteren Zeitpunkt eine Änderung, ist es aufgrund
der Werkzeugabhängigkeit von modellgetriebenen Entwicklungsansätzen notwendig, die entsprechenden Arbeitsumgebungen wiederherzustellen. Dafür ist es notwendig, komplette Werkzeugketten zu pflegen und zu versionieren [HK10].
1.3
Eclipse Modeling Project
Das Eclipse Modeling Project1 (EMP) bietet eine Alternative aus dem Open-Source-Bereich zu
proprietären Werkzeugketten. Dieses Umbrella-Projekt umfasst eine Vielzahl von robusten Werkzeugen zur Unterstützung von MDSD, angefangen von verschiedenen graphischen und textuellen
Modellierungswerkzeugen, Query- und Transformationssprachen, Validatoren bis hin zu einer
Reihe von Persistierungs- und Versionierungswerkzeugen. Alle Unterprojekte basieren auf einem
gemeinsamen Meta-modell, EMF [SBPM09], einem Modellierungsstandard ähnlich dem MOF
2.02 der OMG. Mit diesem gemeinsamen Datenformat zur Verarbeitung und Austausch von Modellen ist eine wesentliche Voraussetzung für Interoperabilität vorhanden.
2 Überblick zum Markt für MDSD-Werkzeuge
Trotz der Vielzahl von Einzelprojekten im Eclipse Modeling Project ist aufgrund der Open-SourceNatur desselben und der damit verbundenen informellen Projektverwaltung die Interoperabilität
unzureichend. Aus diesem Grund wurde Anfang 2010 die „Industry Working Group Eclipse Modeling Platform“ ins Leben gerufen, einem Zusammenschluss von namhaften Anwendern und
Werkzeugentwicklern, die sich in der Eclipse-Plattform engagieren. In diesem Rahmen wurde
eine Gap-Analyse durchgeführt [EMM+ 10], deren Ziel eine Darstellung der frei verfügbaren Modellierungswerkzeuge des EMP sowie der noch fehlenden Teile sein sollte. Neben dem wichtigsten Punkt der flexiblen Unterstützung für eine Vielzahl von Modellierungskonventionen und
-formaten (wie etwa UML, BPMN oder SysML) wurde als größte Lücke das Versionsmanagement von modellgetriebenen Artefakten sowie die fehlende Traceability dazwischen identifiziert.
Diese Beobachtung deckt sich mit unabhängigen Beobachtungen aus der Industrie, wie etwa bei
Motorola [BLW05].
Versionierung ist ein zentrales Anliegen von Softwareengineering. Es existieren dedizierte Implementierungen für die unterschiedlichen Artefakttypen: Texte, wie etwa Dokumentationen und
Quellcode werden durch klassische VCS wie CVS, SVN, GIT, Mercurial etc. verwaltet. Sie unterscheiden sich im Wesentlichen durch ihre Lokalisation (zentral oder verteilt) und ihre unterschiedliche Unterstützung für verzweigte Entwicklungsprozesse. Modelle lassen sich mit diesen VCS
nur unzureichend verwalten. Dedizierte Repositories wie etwa AMOR, CDO oder EMFStore für
EMF bzw. herstellerspezifische wie ARIS3 sind hier besser geeignet, da sie nicht auf einer textuellen Repräsentation agieren sondern auf der Struktur der Modelle. Alle Repositories unterscheiden
1
2
3
116
http://www.Eclipse.org/modeling/
http://www.omg.org/spec/MOF/2.0/HTML/
http://www.softwareag.com/corporate/products/aris_platform/default.asp
sich in den zugrundeliegenden Anforderungen, angebotenen Lösungen und Art der Benutzung.
Eine integrierte Verwendung, etwa für MDSD, ist nicht vorgesehen und manuell umzusetzen. Es
fehlt an koordinierenden Werkzeugen, die die Integrität von Beziehungen zwischen den einzelnen Artefakten sicherstellen, welche in verschiedenen Repositories verwaltet werden. Weiterhin
wird die Problematik des Aufwandes der Pflege von kompletten Arbeitsumgebungen etwa für verschiedene Kunden, die Produkte in verschiedenen Versionsständen nutzen, in der Literatur nicht
betrachtet. Es gibt nach unserem Erkenntnisstand keine frei verfügbare Lösung, die Unterstützung
hierfür bietet. Damit liegt ein erhebliches Kostenoptimierungspotenzial brach. Existierende Standards für Versionierung von Artefakten wie etwa JSR-1474 operieren auf Dateien und sind nicht
geeignet für den Einsatz zur Versionierung von Artefakten, die sich nur aufwendig auf Dateien
abbilden lassen, wie etwa verknüpfte Modelle.
Die Automatisierung von Buildprozessen, also die Transformation von Quellcode in ausführbare
und auslieferbare Artefakte sowie das Anstoßen von Tests und Deployment wird in Form von
„continuous integration“-Werkzeugen unterstützt. Dazu zählen etwa Open-Source wie Jenkins5
oder CruiseControl6 und kommerzielle Implementierungen, z. B. TeamCity7 . Da diese Werkzeuge
beliebige Skripte ausführen, ist ein Einsatz in modellgetriebenen Kontexten möglich, jedoch ist
eine durchgängige Unterstützung, wie etwa semantisch relevantes Feedback bei Fehlern im Build
und entsprechendes Zurückspielen z. B. in Entwickler-IDEs nur mit hohem Aufwand realisierbar.
Das Projekt Flowr8 beinhaltet eine prototypische Implementierung eines Metarepositories. Dabei
werden Quellcodeartefakte in ein SVN gespeichert und Modelle in eine Datenbank. Es werden
jedoch keine homogene Versionierung und Verzweigung unterstützt, weitere Artefakttypen sind
nicht vorgesehen. Die in MTF angestrebte Versionierung von z. B. generierten Editoren parallel
zu anderen Artefakten ist nicht möglich. Es zeigt allerdings deutlich den Bedarf für diese Art von
zentraler Verwaltung.
Es existieren verschiedene Ansätze zur Realisierung von Traceability. Traditionell geht es dabei
um die Rückverfolgbarkeit von Kundenanforderungen (pre-RS aus [GF94]). Aber auch die Generierung von Traces zwischen verschiedenen Artefakten der MDSD wird in der Literatur betrachtet,
wie etwa in [GK10]. Allen Ansätzen ist jedoch gemein, dass Traces jeweils paarweise für Artefakttypen implementiert werden, z. B. für die Generierung von Java-Quellcode aus UML2-Modellen
eines bestimmten Herstellers mit Hilfe einer proprietären Transformationssprache. Meist müssen
deshalb dedizierte Lösungen für einen Anwender erst individuell implementiert werden [WP10].
Insgesamt sind speziell im Technikraum EMF keine robusten industriell nutzbaren Implementierungen verfügbar. Der in diesem Projekt angestrebte Ansatz soll hier durch seine Umsetzung in
einem homogenen Technikraum Abhilfe schaffen.
Der in MTF verfolgte Ansatz, Traceability fest im Softwareentwicklungsprozess zu verankern,
indem es ohne kontinuierliche manuelle Intervention an einer zentralen Stelle umgesetzt wird,
wird in der Literatur als anzustrebende Lösung beschrieben [WP10].
4
5
6
7
8
http://jcp.org/en/jsr/detail?id=147
http://jenkins-ci.org/
http://cruisecontrol.sourceforge.net/
http://www.jetbrains.com/teamcity/
http://flowr.org/
117
3 MTF
In MTF ist ein Werkzeug für die integrierte Versionierung und Verwaltung von Modellen, EclipseWerkzeugen und modellgetriebenen Artefakten, wie Templates, Transformationen, manuellem
Code sowie der intrinsischen Beziehungen. Das Ziel ist dabei eine Reduktion der nicht domänenspezifischen Komplexität von MDSD-Prozessen durch ein zentrales, delegierendes Meta-Repository, welches kollaborative und verteilte modellgetriebene Softwarenentwicklungsprozesse vereinfacht, indem große Teile der technischen Komplexität durch einen integrierten Server gekapselt
werden. Eine schematische Darstellung des angestrebten Funktionsumfangs zeigt Abbildung 2.
Modeling Metarepository Team Framework
Abbildung 2: Schematische Darstellung von MTF
Die einzelnen Artefakte werden zur Speicherung an dedizierte, für den Artefakttyp spezialisierte
Repositories delegiert. Im Einzelnen sind hier traditionelle textorientierte Versionsverwaltungssysteme wie „SVN“ [PCSF09] oder „GIT“ [Loe09] für manuellen Quellcode oder Konfigurationsdaten geplant, für Modelle und DSLs ein Modellrepository wie „EMFStore“9 oder „CDO“10 ,
für generierte Artefakte Backupsysteme für Binärdaten (z. B. „bup“11 ), für verwendete Werkzeug9
10
11
118
http://emfstore.org
http://www.Eclipse.org/cdo/
https://github.com/apenwarr/bup
versionen Updatesites, etwa „P2“12 für Eclipse. Das Metarepository MTF ermöglicht die einheitliche Vergabe von Versionsnummern und -kennzeichnungen (Tags), Rechten und Rollen, ohne die
Notwendigkeit der manuellen Synchronisation zwischen den verschiedenen beteiligten konkreten
Repositories.
Aufbauend auf dieser integrierten Gesamtsicht auf alle Artefakte wird eine flexible semiautomatisierte Erkennung von Abhängigkeiten zwischen modellgetriebenen Artefakten implementiert.
Aufgrund der allen Teilprojekten des EMP gemeinsamen Technikbasis EMF kann an dieser Stelle auf eine Reihe von Trace-Beschreibungssprachen aus der Literatur zurückgegriffen werden.
Diese extrahierten Traces erlauben die Nachvollziehbarkeit der Auswirkungen von Änderungen
etwa an Modellen auf andere abhängige Artefakte und damit die automatisierte Validierung von
Transformationsketten. In einem zweistufigen Check-In-Verfahren können Fehler, die entlang der
Transformationskette auftreten so ursächlich einer Änderung zugeordnet werden und damit sichergestellt werden, dass die Konsistenz der modellierten Informationen konsistent bleibt.
Das Repository wird aufgrund von konfigurierbaren Erweiterungspunkten weiterhin in der Lage
sein, nachfolgende Teilprozesse der modellgetriebener Softwareentwicklung anzustoßen. Dazu
gehören automatische Validierungen (etwa von Konformitätsbeziehungen oder syntaktische Korrektheit von Templates nach Modelländerungen), Unterstützung von Reviews durch Einbindung
entsprechender Werkzeuge, Protokollierung der Urheberschaft von Änderungen für Auditingzwecke und das Anstoßen von Generierungsworkflows.
MTF wird weiterhin die Möglichkeit bieten, Werkzeugkonfigurationen (auf Eclipse-Basis) zu
versionieren. Zusammen mit einer geeigneten Hook-Implementierung zur automatischen Aktualisierung der Werkzeuginstallationen bei den Entwicklern lassen sich so verteilte Entwicklungsprozesse effektiver und robuster entwickeln, als bei herkömmlichen Herangehensweisen, die diesen
Aspekt manuell behandeln.
3.1
Nutzen
Es soll ein Open-Source-Werkzeug auf Basis von Eclipse geschaffen werden, welches die bestehende Werkzeuglandschaft des Eclipse Modeling Projects effektiv kombiniert und deren Zusammenspiel verbessert und vereinfacht. Damit wird die Einstiegshürde für die Umstellung von
Softwareentwicklungsprozessen von manuellen hin zu effizienten modellgetriebenen Ansätzen
reduziert. Durch die geringere Einstiegshürde werden auch mittelständische Unternehmen in die
Lage versetzt, kosteneffizient den Automatisierungsgrad ihrer Softwareentwicklungsprozesse zu
erhöhen. Aktuell verwendete, in industriellen Kontexten erprobte Werkzeuge für Versionierung
und Buildautomation können nahtlos integriert und durch Anreicherung um Abhängigkeitsinformationen sowie konsolidierte Sichten auf diese optimal genutzt werden.
MTF liefert einen wichtigen Baustein, um einen zentralen Vorteil von MDSD für Kunden zu
manifestieren: Reduktion von technischer Komplexität durch ein integriertes Werkzeug. Dieses
senkt sowohl die Kosten für die Einführung von MDSD als auch für den laufenden Betrieb des
Prozesses.
12
http://wiki.Eclipse.org/Equinox/p2
119
4 Marktpotenzial für MTF
Ein wesentliches Problem für den Erfolg von MDSD entsteht aus der fehlenden Interoperabilität
von Werkzeugen verschiedener Hersteller [KDZ10]. Trotz teilweise vorhandener Standards für
den Austausch von Modellen, etwa auf Basis von MOF13 , ergibt sich in der Praxis regelmäßig
die Notwendigkeit, Werkzeuge genau eines Herstellers zu verwenden, um einen durchgehenden
Prozess aufsetzen zu können. Durch diese Investition in einen einzigen Hersteller ergibt sich
jedoch auch eine Abhängigkeit von demselben, dessen Supportangeboten, dessen Angeboten zur
individuellen Anpassung seiner Software und nicht zuletzt auch von dessen Präsenz am Markt in
der Zukunft. Um diese Abhängigkeiten zu reduzieren bietet sich der Einsatz von Open-SourceProdukten an, da meist ein komplettes Ökosystem von Dienstleistern existiert und damit keine
Abhängigkeit vom wirtschaftlichen Fortbestand eines einzelnen Herstellers eingegangen werden
muss.
Selbst unter günstigen Umständen, d. h. bei MDSD-erfahrenen Entwicklungsteams, treten immer
wieder Fehler auf, die auf unzureichende Werkzeugunterstützung zurückzuführen sind. Ein Beispielszenario: Bei einer verzweigten Entwicklung besteht im Allgemeinen die Notwendigkeit, pro
Entwicklungszweig angepasste Editoren zu verwenden, da die zugrundeliegenden Metamodelle
oft divergieren. Allein die derzeit fehlende Werkzeugunterstützung zur Sicherstellung, dass jeder
Mitarbeiter die korrekte Editorenversion verwendet, führt zu etwa einer Stunde Produktivitätsverlust alle zwei Wochen. Bei einer angenommenen Teamgröße von 40 Entwicklern in einem KMU
und einem Tagessatz von 500 e pro Entwickler entsteht so ein Verlust von 60.000 e pro Jahr. Diese Zahl ist eine konservative Schätzung, die bei unerfahrenen Teams deutlich höher liegen kann.
Das Einsparungspotential, das durch die von MTF gebotene Komplexitätsreduktion realisiert werden kann, wird sich in einer niedrigeren Einstiegshürde für Kunden auswirken und damit MDSD
erweiterten und auch völlig neuen Kundenkreisen zugänglich machen.
In Gesprächen mit Kunden, die mit dem Wunsch nach Einführung von MDSD an die itemis
AG herantreten, werden häufig Sorgen über die Komplexität des Managements der beteiligten
Werkzeugketten als hauptsächlicher Hindernisgrund für die Nichteinführung genannt. Diese Kundenschicht ließe sich mit MTF zusätzlich erschließen.
Die Verwendung von MTF für die Kapselung und damit die Reduktion der Komplexität der Verwaltung und Versionierung von MDSD-Werkzeugen und -artefakten wird zu geringeren Einstiegskosten führen. Damit werden auch kleinere mittelständische Unternehmen in die Lage versetzt,
ihre internen Entwicklungsprozesse kosteneffizient auf modellgetriebene Vorgehensweisen umzustellen. Dies erschließt MDSD einem vergrößerten Anwenderkreis.
5 Aktueller Stand
5.1
Forschungsprojekt AMOR
Im vorgelagerten, vom BMBF geförderten Forschungsprojekt AMOR wurde wesentliche wissenschaftliche und technische Vorarbeiten für die Entwicklung von MTF gelegt. Dabei wurden die
13
120
http://www.omg.org/spec/MOF/2.0/
angrenzenden Technologien und Konzepte zu Traceability und performanter Speicherung untersucht. Ebenfalls wurde im Rahmen der Open-Source-Werkzeugplattform Eclipse untersucht, welche vorhandenen bestehenden Modellierungs- und Programmierwerkzeuge zu integrieren sind.
Fokus lag dabei auf der technischen Basis für den Datenaustausch zwischen den Werkzeugen.
Das Eclipse Modeling Framework EMF, dass bereits weltweit verbreitet und in verschiedenen
Projekten im Einsatz ist, hat sich als sehr vorteilhaft herausgestellt.
Abbildung 3: Logo Eclipse modeling PROJECT
5.2
Eclipse Projekt MTF
Im Rahmen der Arbeiten zum Forschungsprojekte wurde ebenfalls versucht ein möglichst breite
Community zu finden, die Interesse daran hat, MTF zu nutzen oder gar mit zu entwickeln. Dazu
wurde ein Proposal innerhalb der Eclipse Foundation eingereicht, um ein neues Projekt zu initiieren. Ein solches Projekt erreicht ein sehr große Sichtbarkeit innerhalb der ständig wachsenden
Eclipse Community. Die Initiierung eines solchen Projektes durchläuft auch einen stark qualitätsgetriebenen Prozess. Dieser läuft wie im Folgenden beschrieben ab.
5.2.1
Ideenfindung
Der erste Schritt ist natürlich die Entwicklung der Projektidee selbst. Diese war sehr leicht zu
finden, da aus den Vorarbeiten bereits bekannt war, was das Ziel von MTF ist. Das Proposal
selbst wurde in englischer Sprache verfasst, um weltweit Interessenten zu adressieren. Inhaltlich
wurde dargestellt, was das Ziel von MTF ist, welche weiteren Projekte integriert werden und wie
sich MTF von anderen Lösungen abgrenzt.
5.2.2
Projektpaten
Damit ein Projekt innerhalb der Eclipse Community überhaupt eingebracht werden darf, müssen
2 Projektpaten aus der Eclipse Community gefunden werden, die bereits erfolgreiche Projekte
führen. Im Falle von MTF sind dies:
121
• Ed Merks, Macromodeling Inc. Canada, Projekt EMF
• Sven Efftinge, itemis AG, Deutschland, Projekt Xtext, MWE, Xtend
Bereits das finden der Paten und überzeugen dieser von der Projektidee brachte insbesondere in
den Aspekten der Abgrenzung anderer Lösungen und Integration weiterer vorhandener Projekte
einen deutlichen Qualitätsvorteil und eine Schärfung des Projekproposals.
Im Anschluss an die Findung der Paten wurde das Proposal als Entwurf innerhalb einer größeren
Community vorgestellt
5.2.3
Interessenten
Basierend auf diesem Entwurf des Proposals wurden nur in den vorhandenen englischsprachigen
Kommunikationskanälen der Eclipse Foundation und auch innerhalb der vorhandenen Kundenkontakte der itemis AG potenzielle Interessenten gefunden.
Das Proposal wurde als Entwurf auf an die Eclipse Foundation übermittelt14 und über die Newsgroup Eclipse.technologie.emft15 verbreitet. Daraufhin meldeten sich die folgenden Interessenten,
die Interesse haben MTF zu nutzen oder gar in ihre Lösungen zu integrieren:
• Achievo Deutschland AG, Sven Krause
• CDO Model Repository, Eike Stepper (CDO project lead)
• itemis AG, Sven Efftinge (TMF PMC)
• Oracle Deutschland GmbH, Berthold Maier
• Institut für Angewandte Informatik e.V. an der Universität Leipzig, Stefan Kühne
• SOPERA GmbH, Zsolt Beothy-Elo
• Abteilung Betriebliche Informationssysteme an der Universität Leipzig, Martin Gebauer
• flowr.org, Helmar Behrends
• Javier Muñoz, leader of the MOSKitt project
• Raphael Faudou, Atos Origin and the MDT Papyrus project
• Igor Burilo, Polarion Software (Subversive team)
14
15
122
http://www.Eclipse.org/proposals/mtf
http://www.Eclipse.org/newsportal/thread.php?group=Eclipse.technology.emft
5.2.4
Proposal erstellen
Mit den gefundenen Interessenten, den Projektpaten und den bereits erhaltenen Verbesserungsvorschlägen und Hinweisen aus der Community wurde das Proposal finalisiert und an das Managementboard der Eclipse Foundation gesendet. Aufgrund der guten Vorarbeiten wurde der itemis
AG auch nach einigen Wochen die Erlaubnis erteilt, MTF als Projekt innerhalb der Eclipse Infrastruktur einzubringen. Notwendig dafür war allerdings noch, dass alle Entwickler am Projekt
schriftlich bescheinigen müssen, bzw. von ihren Arbeitgebern bestätigen lassen müssen, dass sie
in Zukunft genügend Freiraum haben, um das Projekt aktiv zu begleiten.
Somit stellt die Eclipse Foundation nicht nur inhaltliche Qualität sicher, sondern auch die aktive
Weiterentwicklung. Aktive Committer am Projekt sind:
• Michael Willig, itemis AG
• Sven Krause, Achievo AG
• Steffen Dienst, Institut für Angewandte Informatik e.V. an der Universität Leipzig
• Robert Wloch, itemis AG
• Steffen Stundzig, itemis AG
• Helmar Behrends, Achievo AG
5.2.5
Infrastruktur einrichten
Nach der Freigabe als Eclipse Projekt wurde die zur Durchführung notwendige Infrastruktur
aufgebaut. Zum Verfolgen von Fehlern, Aufgaben aber auch neuen Anforderungen wurde ein
Bugzilla16 eingerichtet. Für die Kommunikation mit der Community wird die Newsgroup Eclipse.technology.emft genutzt. Das Verwalten der Quellcodes wird zentral im CVS-System der Eclipse Foundation ein entsprechendes Verzeichnis eingerichtet17 . Abschließend wurden für die automatische Build und Testumgebung entsprechende Jobs aufgebaut. Die Entwickler diskutieren
über die Mailingliste mtf-dev18 .
5.2.6
Projektwebseite erstellen
Alle Daten und Verweise zur Infrastruktur, als auch Proposal, Ziele und weitere Dokumentationen
wurden in einer zentralen Webseite19 innerhalb der Eclipse Foundation zusammengefasst Das Projekt wurde als Incubation Projekt markiert, um allen Interessenten anzudeuten, dass das Projekt
im Entstehen, bzw. in Entwicklung ist. Vom Designer der itemis AG wurde auch ein ansprechendes Logo für MTF entwickelt.
16
17
18
19
https://bugs.Eclipse.org/bugs/buglist.cgi?quicksearch=EMFT.MTF
http://dev.Eclipse.org/viewcvs/viewvc.cgi/org.Eclipse.emf/org.Eclipse.emf.mtf/?root=Modeling_Project
https://dev.Eclipse.org/mailman/listinfo/mtf-dev
http://www.Eclipse.org/modeling/emft/mtf
123
Abbildung 4: Logo für das Eclipse Projekt MTF
5.2.7
Initialen Code einbringen
Als initiale Quellcodebasis brachten die Entwickler der Achievo AG Quellcode aus dem OpenSource-Projekt flowr.org in das Projekt ein. Dieser Quellcode wurde von den anderen Committern
refaktorisiert und entsprechend in das Layout vom MTF gebracht. Um den Quellcode überhaupt
in das Projekt einbringen zu können, mussten die Entwickler für alle Dateien eindeutig schriftlich
festhalten, dass die Quellen von ihnen selbst verfasst sind und keine anderen Kopierrechte oder
andere Rechte von Dritten verletzt werden.
Somit wurde rechtlich sichergestellt, dass die vorliegenden Basisquellcodes frei verwendet werden dürfen, was an einigen Stellen wieder zu einer weiteren Bereinigung und Qualitätsteigerung
der Software führte.
5.2.8
Automatisierte Builds aufbauen
Alle Projekte innerhalb der Eclipse Plattform werden zyklisch nach Änderungen bzw. zu festgelegten Zeitpunkten vollständig gebaut. Somit haben alle potenziellen Nutzer die Möglichkeit permanent die aktuellsten Versionen zu benutzen oder auch auf älteren Versionen, die entsprechend
vorgehalten werden, zurückzugreifen. Für MTF wurden dafür 3 entsprechende Jobs eingerichtet
die inhaltlich nach Funktion und Komponente strukturiert sind.
6 Weiteres Vorgehen
Für die Weiterentwicklung das Projekts MTF und der entsprechenden Vorarbeiten im Eclipse
Umfeld werden Sponsoren gesucht, die diese Entwicklung weiterfinanzieren möchten, um entsprechend die entstehende Lösung einsetzen zu können. Für die Arbeiten selbst wird wieder agil
und iterativ vorgegangen. Ein grober Arbeitsplan für diese Weiterentwicklung wurde ebenfalls
bereits entwickelt. Die Arbeitspakete werden für verschiedene Verfeinerungs- und Erweiterungsstufen durchgeführt. Die Interessenten werden aus dem vorhandenen Kundenkreis der itemis als
auch über die Eclipse Foundation versucht zu finden.
Das Projekt selbst wird, wenn möglich, mit Hilfe agiler Methoden, in dem Falle Scrum durchgeführt. Dabei entstehen innerhalb kurzer Sprintzyklen potenziell ausführbare Produktvarianten.
124
Abbildung 5: Scrum Prozess
6.1
Inhaltliche Schwerpunkte der Arbeitspakete
AP1 „Anforderungsanalyse“ beschäftigt sich mit der Auswahl und Evaluation von Repositories
und Werkzeugen aus dem Eclipse-Umfeld, die für eine Integration in MTF tatsächlich in Frage
kommen. Daneben wird die auf Seite 5 beschriebene Gap-Analyse reevaluiert mit dem besonderen Fokus auf Schnittstellen und Interoperabilität. Als Grundlage für AP2 werden relevante
Traceability-Metamodelle aus der Literatur auf ihre Eignung für den praktischen Einsatz in MTF
hin untersucht.
AP2 „DSL zur Deklaration von Abhängigkeiten“ beschäftigt sich aufbauend auf AP1 mit der
Definition einer domänenspezifischen Sprache, die es einem Anwender erlaubt, Beziehungen und
Beziehungstypen zwischen Artefakten zu definieren. Diese DSL wird später für die Konfiguration
des Repositories eingesetzt werden. Aufbauend auf dieser deklarativen Sprache werden Mappings
für verschiedene Eclipse-Modeling-Teilprojekte definiert, beispielsweise zwischen Modellen und
graphischen Editoren auf GMF-Basis. Dieses Arbeitspaket bildet den wissenschaftlichen Kern
des Projektes, die Leitung hierfür liegt deshalb beim InfAI.
AP3 „Architektur“ legt die grundlegende Softwarearchitektur des Metarepositories fest. Es werden Schnittstellen für die Integration der einzelnen dedizierten Repositories geschaffen und Erweiterungspunkte, etwa für Hooks definiert. Es wird ein generisches Rechte- und Rollenkonzept
entworfen sowie Anbindungen für Analysewerkzeuge, etwa für die Aufbereitung und Visualisierung von konsolidierten Sichten auf die Daten, die MTF auf dedizierte Repositories verteilt.
AP4 „Implementierung“ stellt die eigentliche Umsetzung der Erkenntnisse aus AP1 und AP2 sowie der Architektur aus AP3 dar. MTF selbst wird modelgetrieben entwickelt, um eine einfachere
Anpassbarkeit etwa für die Integration neuer Repository-Arten zu ermöglichen. Aufgrund ihrer
technischen Kompetenz liegt die Verantwortung dieses Arbeitspaketes bei der itemis AG
Im AP5 „Demonstratoren, Evaluation“ wird das MTF-Repository in prototypischen MDSD-Entwicklungen innerhalb der itemis AG sowie in praktischen Szenarien der assoziierten Partner angewendet und erprobt. Dabei werden Metriken zur Evaluation von Rationalisierungs- und Qualitätssteigerungseffekten definiert und ausgewertet. Die gewonnenen Erkenntnisse fließen in Form
von ergänzenden Anforderungen in nachfolgende Projektiterationen ein.
AP6 „Ergebnisverbreitung“ enthält sowohl die Veröffentlichung der gewonnenen Erkenntnisse
auf wissenschaftlichen Konferenzen als auch die Präsentation der entstehenden Software auf
125
Messen und Unternehmenspräsentationen. Die praktischen Ergebnisse sollen frühzeitig der OpenSource-Community zur Verfügung gestellt werden, um noch zur Projektlaufzeit externes Feedback in die Entwicklung von MTF einbringen zu können.
AP7 „Projektmanagement“ beinhaltet alle Aktivitäten, die dem Management und Controlling des
Projekts dienen, d. h. Mitarbeiterführung, Organisation und Durchführung von Projekttreffen, Erstellung von Zwischenberichten und dem Abschlussbericht.
Literatur
[BLW05]
Baker, Paul ; Loh, Shiou ; Weil, Frank: Model-Driven Engineering in a Large Industrial Context – Motorola Case Study. In: Briand, Lionel (Hrsg.) ; Williams, Clay (Hrsg.): Model Driven
Engineering Languages and Systems Bd. 3713. Berlin, Heidelberg : Springer Berlin / Heidelberg, 2005. – ISBN 978–3–540–29010–0, Kapitel 36, S. 476–491
[Bro86]
Brooks, Frederick P: No Silver Bullet – Essence and Accident in Software Engineering. In:
Proceedings of the IFIP Tenth World Computing Conference, 1986, S. 1069–1076
[EMM+ 10] Eberle, Stephan ; Mandischer, Martin ; McClean, Toby ; Redding, Simon ; Selic, Bran:
Gap Analysis of Eclipse Modeling Projects. http://wiki.Eclipse.org/images/4/4e/
MPIWG-GapAnalysis-Docs-20101001-final.zip. Version: 2010
[GF94]
Gotel, Orlena C. Z. ; Finkelstein, Anthony C. W.: An Analysis of the Requirements Traceability Problem. In: Proceedings of the First International Conference on Requirements Engineering,
1994, S. 94–101
[GK10]
Grammel, Birgit ; Kastenholz, Stefan: A generic traceability framework for facet-based traceability data extraction in model-driven software development. In: Proceedings of the 6th ECMFA
Traceability Workshop. New York, NY, USA : ACM, 2010 (ECMFA-TW ’10). – ISBN 978–1–
60558–993–0, S. 7–14
[HK10]
Hänsgen, Peter ; Kern, Heiko: Modellbasierte Schichtenarchitektur zur Komposition von Geschäftsanwendungen. In: Fähnrich, Klaus-Peter (Hrsg.) ; Franczyk, Bogdan (Hrsg.): GI Jahrestagung (1) Bd. 175, GI, 2010 (LNI). – ISBN 978–3–88579–269–7, 274-279
[KDZ10]
Kirstan, Sascha ; Dr. Zimmermann, Jens: Evaluating costs and benefits of model-based development of embedded software systems in the car industry – Results of a qualitative Case Study.
In: Modelling Foundations and Applications, 6th European Conference. Paris : Springer, 2010
[Loe09]
Loeliger, Jon: Version control with Git: Powerful tools and techniques for collaborative software development. 1st. Beijing, 2009 (Safari Tech Books Online)
[PCSF09]
Pilato, C. Michael ; Collins-Sussman, Ben ; Fitzpatrick, Brian W.: Versionskontrolle mit Subversion: [Software-Projekte intelligent koordinieren]. 3. Aufl., komplett überarb. u. aktual. Köln
u.a : O’Reilly, 2009. – ISBN 978–3–89721–897–0
[SBPM09] Steinberg, Dave ; Budinsky, Frank ; Paternostro, Marcelo ; Merks, Ed: EMF: Eclipse Modeling Framework. 2. Boston, MA : Addison-Wesley, 2009. – ISBN 978–0–321–33188–5
[WP10]
126
Winkler, Stefan ; Pilgrim, Jens: A survey of traceability in requirements engineering and
model-driven development. In: Softw. Syst. Model. 9 (2010), September, S. 529–565. – ISSN
1619–1366
127
128
In der Reihe „Leipziger Beiträge zur Informatik“ sind bereits erschienen:
Band I
FÄHNRICH , K.-P.; H ERRE , H. (Hrsg.): Content- und Wissensmanagement. Arbeiten
aus dem Forschungsvorhaben PreBIS und Beiträge auf den Leipziger Informatik-Tagen
2003. Leipziger Beiträge zur Informatik: Band I. Leipzig, 2003. – ISBN 3-934178-26X
Band II
FÄHNRICH , K.-P.; M EIREN , T. (Hrsg.): Computer Aided Engineering für IT-basierte
Dienstleistungen. Arbeiten aus dem Forschungsvorhaben ServCase. Leipziger Beiträge zur Informatik: Band II. Leipzig, 2004. – ISBN 3-934178-39-1
Band III
FÄHNRICH , K.-P.; T HRÄNERT, M.; W ETZEL , P. (Hrsg.): Umsetzung von kooperativen Geschäftsprozessen auf eine internetbasierte IT-Struktur. Arbeiten aus dem Forschungsvorhaben Integration Engineering. Leipziger Beiträge zur Informatik: Band
III. Leipzig, 2005. – ISBN 3-934178-52-9
Band IV
FÄHNRICH , K.-P.; K ÜHNE , S.; S PECK , A.; WAGNER , J. (Hrsg.): Integration betrieblicher Informationssysteme – Problemanalysen und Lösungsansätze des Model-Driven
Integration Engineering. Leipziger Beiträge zur Informatik: Band IV. Leipzig, 2006. –
ISBN: 978-3-934178-66-3
Band V
FÄHNRICH , K.-P.; H ÄRTWIG , J.; K IEHNE , D.-O.; W EISBECKER , A. (Hrsg.): Technologien und Werkzeuge für ein rollen- und aufgabenbasiertes Wissensmanagement.
Zusammenfassender Bericht aus dem Forschungsprojekt PreBIS. Leipziger Beiträge
zur Informatik: Band V. Leipzig, 2007. – ISBN: 978-3-934178-76-2
Band VI
FÄHNRICH , K.-P.; T HRÄNERT, M.; W ETZEL , P. (Hrsg.): Integration Engineering.
Motivation – Begriffe – Methoden – Anwendungsfälle. Leipziger Beiträge zur Informatik: Band VI. Leipzig, 2007. – ISBN: 978-3-934178-78-6
Band VII
AUER , S.: Towards Agile Knowledge Engineering: Methodology, Concepts and Applications. Dissertation an der Fakultät für Mathematik und Informatik der Universität
Leipzig. Leipziger Beiträge zur Informatik: Band VII. Leipzig, 2007. – ISBN: 978-3934178-73-1
Band VIII
FÄHNRICH , K.-P.; H EYER , G. (Hrsg.): Games Summer Camp 2007. Interdisziplinäres
Blockseminar zum Thema Digitale Spiele. Eine Dokumentation. Leipziger Beiträge zur
Informatik: Band VIII. Leipzig, 2007. – ISBN: 978-3-934178-77-9
Band IX
A SLAM , M. A.: Towards Integration of Business Processes and Semantic Web Services. Leipziger Beiträge zur Informatik: Band IX. Leipzig, 2008. – ISBN: 978-3934178-89-2
Band X
FÄHNRICH , K.-P.; M ÜLLER , R.; M EYER , K.; F REITAG , M. (Hrsg.): Entwicklung internationaler produktbezogener Dienstleistungen – Ein Handlungsleitfaden für kleine
und mittlere Unternehmen. Leipziger Beiträge zur Informatik: Band X. Leipzig, 2008.
– ISBN: 978-3-934178-98-4
129
Band XI
FÄHNRICH , K.-P.; K ÜHNE , S.; T HRÄNERT, M. (Hrsg.): Model-Driven Integration
Engineering. Modellierung, Validierung und Transformation zur Integration betrieblicher Anwendungssysteme. Leipziger Beiträge zur Informatik: Band XI. Leipzig, 2008.
– ISBN: 978-3-941152-02-1
Band XII
M AICHER , L.; G ARSHOL , L. M. (Hrsg.): Subject-centric Computing. Fourth International Conference on Topic Maps Research and Applications, TMRA 2008. Leipziger
Beiträge zur Informatik: Band XII. Leipzig, 2008. – ISBN: 978-3-941152-05-2
Band XIII
FÄHNRICH , K.-P.; S CHUMACHER , F. (Hrsg.): Digitale Spiele in Forschung und Lehre.
Beiträge zum Games Summer Camp 2008. Leipziger Beiträge zur Informatik: Band
XIII. Leipzig, 2009. – ISBN: 978-3-941608-00-9
Band XIV
H EYER , G. (Ed.): Text Mining Services – Building and applying text mining based
service infrastructures in research and industry. Proceedings of the conference on Text
Mining Services – TMS 2009 at Leipzig University. Leipziger Beiträge zur Informatik:
Band XIV. Leipzig, 2009. – ISBN: 978-3-941608-01-6
Band XV
T HRÄNERT, M.: Integration-Engineering – Grundlagen, Vorgehen und Fallstudien.
Leipziger Beiträge zur Informatik: Band XV. Leipzig, 2009. – ISBN: 978-3-94160802-3
Band XVI
FÄHNRICH , K.-P.; A LT, R.; F RANCZYK , B. (Eds.): Practitioner Track – International
Symposium on Services Science (ISSS’09). Leipziger Beiträge zur Informatik: Band
XVI. Leipzig, 2009. – ISBN: 978-3-941608-03-0
Band XVII
M EYER , K.: Software – Service – Co-Design: Eine Methodik für die Entwicklung komponentenorientierter IT-basierter Dienstleistungen. Leipziger Beiträge zur Informatik:
Band XVII. Leipzig, 2009. – ISBN: 978-3-941608-04-7
Band XVIII
AUER , S.; L AUENROTH , K.; L OHMANN , S.; R IECHERT, T. (Hrsg.): Agiles Requirements Engineering für Softwareprojekte mit einer großen Anzahl verteilter Stakeholder.
Leipziger Beiträge zur Informatik: Band XVIII. Leipzig, 2009. – ISBN: 978-3-94160805-4
Band XIX
M AICHER , L.; G ARSHOL , L. M. (Eds.): Linked Topic Maps. Fifth International Conference on Topic Maps Research and Applications, TMRA 2009. Leipziger Beiträge
zur Informatik: Band XIX. Leipzig, 2009. – ISBN: 978-3-941608-06-1
Band XX
H ÄRTWIG , J.: Konzept, Realisierung und Evaluation des semantischen Informationsraums. Dissertation. Leipziger Beiträge zur Informatik: Band XX. Leipzig, 2010. –
ISBN: 978-3-941608-07-8
Band XXI
M ORGENSTERN , U.; R IECHERT, T. (Hrsg.): Catalogus Professorum Lipsiensis. Konzeption, technische Umsetzung und Anwendungen für Professorenkataloge im Semantic Web. Leipziger Beiträge zur Informatik: Band XXI. Leipzig, 2010. – ISBN: 978-3941608-08-5
Band XXII
L EHMANN , J.: Learning OWL Class Expressions. Leipziger Beiträge zur Informatik:
Band XXII. Leipzig, 2010. – ISBN: 978-3-941608-09-2
130
Band XXIII
M EYER , K.; T HIEME , M. (Hrsg.): Vom Bedarf zum Innovationserfolg – In 6 Schritten gemeinsam Potentiale aktivieren. Leipziger Beiträge zur Informatik: Band XXIII.
Leipzig, 2010. – ISBN: 978-3-941608-10-8
Band XXIV
M AICHER , L.; G ARSHOL , L. M. (Eds.): Information Wants to be a Topic Map. Sixth
International Conference on Topic Maps Research and Applications, TMRA 2010.
Leipziger Beiträge zur Informatik: Band XXIV. Leipzig, 2010. – ISBN: 978-3-94160811-5
Band XXV
H EYER , G.; L UY, J.-F.; JAHN , A. (Hrsg.): Text- und Data Mining für die Qualitätsanalyse in der Automobilindustrie. Leipziger Beiträge zur Informatik: Band XXV.
Leipzig, 2010. – ISBN: 978-3-941608-12-2
Band XXVI
FÄHNRICH , K.-P.; S CHUMACHER , F.; T HIEME , M.; G ROSS , J. (Hrsg.): (Über)Leben in der Kreativwirtschaft – Beiträge zum Creative Summer Camp 2011. Leipziger Beiträge zur Informatik: Band XXVI. Leipzig, 2011. – ISBN: 978-3-941608-13-9
Band XXVII
AUER , S.; R IECHERT, T.; S CHMIDT, J. (Hrsg.): Studentenkonferenz Informatik Leipzig 2011. Leipziger Beiträge zur Informatik: Band XXVII. Leipzig, 2011. – ISBN:
978-3-941608-14-6
Band XXVIII
G EBAUER , M.; S TEFAN , F.: Systemintegration – Eine qualitative Erhebung aus der
Sicht von Integrationsdienstleistern. Leipziger Beiträge zur Informatik: Band XXVIII.
Leipzig, 2011. – ISBN: 978-3-941608-15-3
BAND XXIX
M EYER , K.; B ÖTTCHER , M.: Entwicklungspfad Service Engineering 2.0 – Neue Perspektiven für die Dienstleistungsentwicklung. Leipziger Beiträge zur Informatik: Band
XXIX. Leipzig, 2011. – ISBN: 978-3-941608-16-0
BAND XXX
K ERN , H., K ÜHNE , S.: Integration betrieblicher Informationssysteme und modellgetriebene Entwicklung. Leipziger Beiträge zur Informatik: Band XXX. Leipzig, 2012. –
ISBN: 978-3-941608-17-7
Weitere Informationen und Bestellungen über: liv@informatik.uni-leipzig.de
131