EA Add-In für die CASE Tool-basierte Generierung von Geodatenbankschemas: Beispiel INSPIRE 119 Enterprise Architect Add-In für die CASE Tool-basierte Generierung von Geodatenbankschemas: am Beispiel des INSPIRE Consolidated UML Models Rico Vogel Zusammenfassung Mit der zunehmenden Etablierung von Geodateninfrastrukturen auf unterschiedlichen Ebenen der Verwaltung und der Wirtschaft zielt das Geoinformationswesen verstärkt auf harmonisierte und standardisierte Geodaten und Geoprozesse, deren Austausch interoperabel und automatisiert erfolgt. Neben Initiativen, wie der Infrastructure for Spatial Information in the European Community (INSPIRE), die auf internationalen Normen und Standards basieren, ist für Deutschland unter anderem die Geodateninfrastruktur Deutschland (GDI-DE) bedeutsam. Durch diese Initiativen ergibt sich für geodatenhaltende Stellen neben der standardisierten Abgabe eigener Daten zunehmend der Bedarf, diese Daten persistent in Datenmodellen ausgewählter GDI-Initiativen vorzuhalten und diese Modelle in Bezug auf eigene Datenmodelle zu erweitern. Externe Datenmodelle, wie sie unter anderem durch INSPIRE in plattformunabhängiger, aber maschinenlesbarer Form zur Verfügung gestellt werden, lassen sich bedarfsorientiert erweitern und können über plattformspezifische Modellausprägungen in Quelltextform transformiert werden, um beispielsweise Datenhaltungskomponenten zu generieren. Der vorliegende Beitrag zeigt am Beispiel eines von Vogel (2011) entwickelten Ansatzes, wie das INSPIRE Consolidated UML Model unter Erweiterung des Softwareentwicklungswerkzeuges Enterprise Architect weitgehend automatisiert in PostgreSQL/PostGIS-Datenbanken abgebildet werden kann. Neben der Erzeugung strukturorientierter Skripte wird explizit auch die Generierung inhaltsmodifizierender Quelltextstrukturen adressiert. 1 Hintergrund Geodaten, wie sie durch terrestrische oder satellitengestützte Vermessungsverfahren, Digitalisierung, oder Geoprozessierungen abgeleitet werden, sind häufig persistent zu speichern, um sie für weitere Analysen oder kartographische Darstellungen vorzuhalten. Neben dateibasierten Techniken eignen sich insbesondere Geodatenbanksysteme für die dauerhafte Speicherung (Brinkhoff 2013). Zahlreiche Datenmodelle konnten sich in verschiedenen Fachdisziplinen etablieren, um Strukturen für die Ablage der Geodaten anzubieten. Zur Abbildung häufig Entity Relationship (ER)-basierter Datenmodelle in Datenbanken hat sich insbesondere die Data Definition Language (DDL) durchgesetzt. Jüngere Entwicklungen im Bereich der Datenverarbeitung zielen dagegen auf eine generische Modellierung von Datenstrukturen, häufig auf Basis der Unified Modeling Language (UML). Im Hinblick auf eine persistente Datenhaltung besteht zudem ein Erfordernis zur Abbildung von UMLStrukturen in Datenbanken. Diesbezügliche Ansätze und Automatisierungsbestrebungen resultieren insbesondere im Model Driven Development (MDD, z. B. Beydeda et al. 2005), welches zunächst auf die Unterstützung der objektorientierten Softwareentwicklung fokussierte, indem Klassenstrukturen in Quelltexten ausgewählter Programmiersprachen abgebildet werden. Durch Mechanismen zur Transformation zwischen unterschiedlichen Modellausprägungen erweist sich der MDD-Ansatz auch für die Generierung von DDL-Skripten aus visuellen Modellen, wie UML-Klassendiagrammen, die einer standardisierten Notation folgen, als praktikabel. 120 Rico Vogel Enterprise Architect (EA) ist eine Software, welche ursprünglich insbesondere auf die UML-basierte Modellierung abzielte und die in der von Vogel (2011) eingesetzten Version 7.5 auch MDDFunktionalitäten anbietet. Als Computer-Aided Software Engineering (CASE)-Werkzeug bietet EA beispielsweise Templates zur Generierung von DDL-Code aus UML-Klassendiagrammen. Die Funktionalität der genannten Version weist hinsichtlich der Transformation jedoch Einschränkungen auf, insbesondere dann, wenn das exportierte DDL-Skript ohne zusätzliche Interaktionen in einem Prozess durchlaufen werden soll, um ein vollständiges Datenbankschema zu generieren. Zur Erreichung dieses Automatisierungsgrades wurde durch Vogel (2011) ein Prototyp eines EAAdd-Ins vorgestellt, welcher vollständig prozessierbare SQL-Skripte erzeugt. Neben DDL-Code können diese Skripte auch um DML-Artefakte angereichert sein, um vordefinierte Literale der UMLStereotypen enumeration und codeList unmittelbar in die initiale Datenbankinstanz zu integrieren. Die Abbildung von Multiplizitäten ist dagegen ein Beispiel für noch zu implementierende Funktionalität des Prototyps. Im Rahmen des Projektes ZENON (sZENarien ONline; Vogel 2013) ist der Einsatz dieses Add-Ins in unterschiedlichen Phasen der Entwicklung eines webbasierten Entscheidungsunterstützungssystems (Web-based spatial decision support system – WebSDSS) zum Aufbau von Testdatenbanken vorgesehen. Ziel ist die Abbildung der vom WebSDSS repräsentierten Anwendungsdomäne parametrisierter regionaler Zukünfte (Parameterized Regional Futures – PRFs; Schanze & Sauer 2011) in einer Datenbank. Bei den PRFs handelt es sich um einen fragestellungs- und gebietsspezifischen Szenarioansatz, der den regionalen und klimatischen Wandel umfasst und der exemplarisch für den Freistaat Sachsen operationalisiert wird. Zentral ist die Formulierung und Parametrisierung sogenannter Szenarien und strategischer Handlungsalternativen, welche zu Zukünften (Futures) kombiniert werden. Der vorliegende Beitrag basiert überwiegend auf Vogel (2011). Er geht zunächst auf Grundsätze der modellgetriebenen (Software-)Entwicklung ein und identifiziert einen technologischen Alternativansatz (Abschnitt 2). In Abschnitt 3 wird das vereinfachend als ICUM bezeichnete INSPIRE Consolidated UML Model vorgestellt. Abschnitt 4 stellt eine Implementierung des alternativen Transformationsansatzes in Form eines Add-Ins für das CASE-Tool EA vor. Eine beispielhafte Transformation des ICUM unter Anwendung des EA-Add-Ins in PostgreSQL/PostGIS-spezifisches SQL ist Inhalt des 5. Abschnitts. Abschnitt 6 schließt den Beitrag mit einem Fazit und einem Ausblick, der Perspektiven für die WebSDSS-Entwicklung im Projekt ZENON einschließt. 2 Model Driven Development und Enterprise Architect Gemäß Balzert (2009: 80) werden Anforderungen und Entwürfe bei der klassischen Softwareentwicklung durch abstrakte Modelle beschrieben. Anschließend erfolgt die Umsetzung der Modelle in Quellcode durch Softwareentwickler. In der modellgetriebenen Entwicklung (MDD) werden die Modelle zunächst formal beschrieben. Danach erfolgt eine automatisierte Generierung des Programmcodes. Im Allgemeinen basiert MDD auf drei Komponenten, einem Modell, einer Notation und CodeGeneratoren. Die Notation dient der formalen Beschreibung des Modells. Ein prominentes Beispiel ist die UML, wobei im MDD insbesondere Klassendiagramme zum Einsatz kommen (z. B. Brown et al. 2005: 3 & 12). Die Transformation des Modells in programmiersprachenspezifische Quelltexte erfolgt mit Hilfe von Code-Generatoren. UML-Klassendiagramme, die sich vor allem für die objektorientierte Modellierung eignen, lassen sich mit Hilfe spezifischer Generatoren in objektorientierte Programmiersprachen wie Java oder C# überführen. In der MDD stehen unterschiedliche Modelltypen im Vordergrund. Ausgehend von Computational Independent Models (CIMs), die von Rechnern im Allgemeinen nicht (eindeutig) interpretiert werden können, werden vor allem plattformunabhängige Modelle (Platform independent model – PIM), plattformspezifische Modelle (Platform specific model – PSM) und Code-Modelle (Code model – CM) unterschieden. EA Add-In für die CASE Tool-basierte Generierung von Geodatenbankschemas: Beispiel INSPIRE 121 Entsprechend werden verschiedene Transformationsschritte differenziert, im Speziellen CIM2PIM, PIM2PSM und PSM2CM. Transformationen der Kategorie CIM2PIM erfolgen weitgehend interaktiv (z. B. Najar 2006: 42), oder sie erfordern den Einsatz ergänzender Technologien, wie Optical Character Recognition (OCR) zur Texterkennung oder Ontologien zur Erfassung von Zusammenhängen in einem Fachvokabular, und können nur bedingt automatisiert werden. Auf Grund des meist hohen Formalisierungsgrades der PIMs sind PIM2PSM-Transformationen und PSM2CM-Transformationen überwiegend automatisierbar. Derartige Funktionalität wird insbesondere durch CASE-Tools angeboten. Gemäß Balzert (2009: 80) können hinsichtlich der automatisierten Code-Generierung folgende Vorteile identifiziert werden: x Abstraktere Entwicklung (gegenüber Quelltextebene) x Synchronisation zwischen Modell und Quelltext x Wiederholbarkeit durch Automatisierung (der Quelltexterzeugung) x Geringe Fehleranfälligkeit (gegenüber manueller Umsetzung). Nachteilig werden dagegen nachstehende Aspekte angesehen (ebenda: 80): x Rentabilität des Aufwandes erst bei wiederholter Quelltexterzeugung x Erschwerte Fehlersuche (Debugger i. d. R. für Quelltexte) x Höhere Effizienz manuell erzeugter Quelltexte. (a) PIM 122 Rico Vogel (b) PSM CREATE TABLE Integer (integerID integer NOT NULL); CREATE TABLE Decimal (decimalID integer NOT NULL); CREATE TABLE Real (realID integer NOT NULL); CREATE TABLE Number (numberID integer NOT NULL); ALTER TABLE Integer ADD CONSTRAINT PK_Integer PRIMARY KEY (integerID); ALTER TABLE Decimal ADD CONSTRAINT PK_Decimal PRIMARY KEY (decimalID); ALTER TABLE Real ADD CONSTRAINT PK_Real PRIMARY KEY (realID); ALTER TABLE Number ADD CONSTRAINT PK_Number PRIMARY KEY (numberID); ALTER TABLE Integer ADD CONSTRAINT FK_Integer_Number FOREIGN KEY (integerID) REFERENCES Number (numberID); ALTER TABLE Decimal ADD CONSTRAINT FK_Decimal_Number FOREIGN KEY (decimalID) REFERENCES Number (numberID); ALTER TABLE Real ADD CONSTRAINT FK_Real_Number FOREIGN KEY (realID) REFERENCES Number (numberID); (c) CM Abbildung 2.1: MDD-Modellvarianten am Beispiel des ISO-Datentyps Number (gemäß ISO 19103:2005) in EA-spezifischer UML-Notation (a und b) sowie als exportiertes Code model in SQL-Notation (c). EA Add-In für die CASE Tool-basierte Generierung von Geodatenbankschemas: Beispiel INSPIRE 123 Enterprise Architect bietet als etabliertes CASE-Tool Werkzeuge zur MDD-Unterstützung. Gemäß Sparks et al. (2010: 7) wird insbesondere die Model Driven Architecture (MDA) als MDD-Spezifikation unterstützt, die als offener Standard unter anderem auf UML aufsetzt und die plattformunabhängige Entwicklung von Applikationen spezifiziert. Beispielsweise werden im CASE-Tool Enterprise Architect (EA) für PIM2PSM-Transformationen native built-in transformations angeboten, die das Generieren plattformspezifischer Klassendiagramme unterstützen. Unter Einsatz von UML-Profilen, wie sie beispielsweise für DDL, C#, Java, Enterprise JavaBeans (EJB), oder XML Schema Definition (XSD) verfügbar sind, können je PIM mehrere PSMs erzeugt werden. PSM2CM-Transformationen werden in EA dagegen in Form des Code engineering realisiert. Wie exemplarisch aus Abbildung 2.1 ersichtlich, bietet EA für die PIM2PSM-Transformation Funktionalität zur Auflösung von Generalisierungen sowie von Multiplizitäten in Relationstabellen. Auch die Generierung von Primär- und Sekundärschlüsseln als typische Artefakte relationaler Datenbanken erfolgt bei Transform Current Package (MDA-Transformation) standardmäßig durch EA. Darüber hinaus werden enumeration- und codeList-Literale transformiert. Aus Abbildung 2.1 geht weiterhin hervor, wie PSMs (b) in Skriptform (c) repräsentiert werden können. Die dazu eingesetzte EA-Funktion Generate DDL … ist insbesondere für komplexe Modelle, wie sie beispielsweise auf europäischer Ebene durch das ICUM an Bedeutung gewinnen, auf Grund eingeschränkter Automatisierungsunterstützung der zu Grunde liegenden EA-Version unzureichend. Da die Erzeugung von DDL-Fragmenten durch die Reihenfolge der Objekte im EA-Projekt Explorer bestimmt wird, können folgende Defizite im erzeugten DDL-Skript identifiziert werden: x eingeschränkte Berücksichtigung von Abhängigkeiten zwischen Klassen (z. B. Erzeugung von abhängigen vor unabhängigen Klassen) x dadurch begrenzte Möglichkeit zur automatisierten Erstellung der Datenbank x Aufwand für erforderliche manuelle Modifikation der Reihenfolge der DDL-Fragmente x eingeschränkte Praktikabilität insbesondere bei wiederholter Erstellung von Datenbankschemas (z. B. bei neuen Modellversionen). Als Alternative zum EA-basierten Code Engineering kann ein EA – Add-In dienen. Durch Nutzung einer der EA-Programmierschnittstellen und der damit verbundenen Flexibilität zur Bereitstellung individueller Lösungen lassen sich die aufgeführten Defizite unmittelbar adressieren. Bevor auf die gewählte Variante eingegangen wird, erfolgt zunächst eine Vorstellung des ICUM. 3 INSPIRE Consolidated UML Model als Repräsentant komplexer Domänenmodelle Auf Grund der Vielfalt adressierter Themen sowie der referenzierten Komponenten, die komplexe Strukturen aufweisen, werden die wesentlichen Aspekte des ICUM vorgestellt. In diesem Artikel wird auf Release uml_model_r937.zip Bezug genommen, da diese Version als Referenz im Rahmen der Entwicklung des in Abschnitt 4 vorgestellten Add-Ins dient. Hinsichtlich der Themen der Annexe II und III der Infrastructure for Spatial Information in the European Community (INSPIRE) gibt es inzwischen essenzielle Weiterentwicklungen. Für die Entwicklung des Add-Ins ist dies jedoch unerheblich, da die Prozessierung veränderter oder erweiterter Schemas explizit als Anforderung formuliert wurde. Beim ICUM handelt es sich um eine formale Beschreibung der Struktur der Geodaten der auf europäischer Ebene zu etablierenden Geodateninfrastruktur INSPIRE, welche auf internationalen Normen und Standards, insbesondere des Geoinformationswesens, basiert. Entsprechend werden unter dem Begriff INSPIRE Consolidated UML Model die in Abbildung 3.1 dargestellten Komponenten verstanden: x Foundation schemas, x Generic Conceptual Model und x Themes (INSPIRE application schemas). Bei Foundation schemas (INSPIRE 2010: 49) handelt es sich um Container für Schemas externer Anbieter. In der diskutierten ICUM-Version handelt es sich lediglich um das Harmonised Model des 124 Rico Vogel Technischen Komitees 211 der ISO, welches die Schemas der ISO 19100er-Serie veröffentlicht. In Abhängigkeit von sich verändernden thematischen Anforderungen können weitere Schemas ergänzt werden. Das Generic Conceptual Model (GCM; INSPIRE 2010: 32) des ICUM enthält 5 Pakete. Dabei handelt es sich um abstrakte Basiskomponenten für die Modellierung thematischer INSPIREDatenspezifikationen. Diese Komponenten adressieren normative Regeln für Geometrien, Topologien, temporale Repräsentationen, eindeutige Objekt-IDs, sowie Bezugssysteme (Spatial Reference Systems – SRSs). Abbildung 3.1: Hauptkomponenten des INSPIRE Consolidated UML Models. Abbildung 3.2: Abhängigkeiten zwischen Klassen der INSPIRE application schemas am Beispiel des Paketes Addresses (veränd. nach INSPIRE 2009: 18). EA Add-In für die CASE Tool-basierte Generierung von Geodatenbankschemas: Beispiel INSPIRE 125 Die INSPIRE-Themes (INSPIRE 2010: 50, European Parliament 2007: 11–14) umfassen Anwendungsschemata für die Datenthemen der Annexe I, II & III der INSPIRE-Direktive. Die Entwicklung dieser Schemata erfolgt durch Thematic Working Groups (TWGs). In der vorgestellten ICUM-Version existieren lediglich Pakete für die Themen des Annexes I (z. B. für Addresses). Zwischen den Paketen Themes, Generic Conceptual Model und Foundation Schemas bestehen Importbeziehungen (Stereotyp import; INSPIRE 2010: 52). Weitere Beziehungen existieren zwischen den Komponenten innerhalb der drei Pakete. Abbildung 3.2 zeigt beispielhaft die Abhängigkeiten des Paketes Addresses von den Paketen Cadastral Parcels, Geographical Names und Administrative Units, des Themes-Paketes sowie von diesen zu Base Types des Generic Conceptual Models. Bei den INSPIRE application schemas (ISO 19136, INSPIRE 2010: 10, 41 & 45) handelt es sich um abstrakte Beschreibungen räumlicher Objekte und möglicher Inhalte INSPIRE-relevanter Geodaten. Verschiedene Stereotypen charakterisieren unterschiedliche Klassen. Bei einem dataType handelt es sich um einen strukturierten Datentyp und ein featureType beschreibt ein raumbezogenes Objekt gemäß ISO 19136. Zudem handelt es sich bei einer Kodierung von Werten in Form von Literalen im Falle unveränderlicher Listen um enumerations und im Falle modifizierbarer (i. d. R. erweiterbarer) Listen um codeLists. Abbildung 3.3 zeigt neben Abhängigkeiten zwischen Klassen innerhalb des Paketes Administrative Unit Repräsentanten für Klassen unterschiedlicher Stereotypen. Beispielsweise wird die Klasse AdministrativeUnit als featureType modelliert und ResidenceOfAuthority als dataType. Im Falle vordefinierter Literalwerte wird beispielsweise LegalStatusValue als unveränderliche enumeration und AdministrativeHierarchyLevel als veränderliche codeList modelliert. Letztgenannte Klasse lässt sich bei Bedarf um 7thOrder und weitere Werte ergänzen. Weitere Details und Modellierungsprinzipien finden sich in der Literatur (z. B. Lutz & Friis-Christensen 2012). Abbildung 3.3: INSPIRE Consolidated UML Model am Beispiel der Administrative Units mit möglichen Stereotypen (veränd. nach INSPIRE 2009: 18). 126 4 Rico Vogel Enterprise Architect – Add-In Die in Abschnitt 2 genannten Defizite der in EA integrierten MDA-Technologie führen zu der Überlegung einer verstärkten Automatisierung der Erzeugung von DDL/DML-Skripten (SQL-Skripten) aus (komplexen) UML-Modellen. Ausgangspunkt ist die Nutzung der von Sparks et al. (2010: 1769– 1824) beschriebenen Automatisierung in Form des EA Add-In-Models als Alternative zur PSM2CMTransformation, wie sie als MDA-Funktionalität in EA zur Verfügung steht. Für WindowsBetriebssysteme eignet sich die Enterprise Architect-API für .NET als Basis der Entwicklung, wobei die Implementierung beispielsweise in der Programmiersprache C# erfolgen kann. Die Option der Umsetzung in einer anderen Programmiersprache wie Java wurde verworfen, da lediglich APIKomponenten älterer EA-Versionen verfügbar waren. Als Entwicklungsumgebung wurde Visual C# 2010 Express gewählt, da es sich um eine frei verfügbare Software handelt, welche die Entwicklung graphischer Benutzungsoberflächen (Graphical User Interface – GUI) unterstützt. Der als Inspire2Postgis bezeichnete Prototyp des EA-Add-Ins besteht aus zwei Paketen, InspirePostgisEaAddIn und InspirePostgisLib. Wie aus Abbildung 4.1 hervorgeht, verwendet das als InspirePostgisEaAddIn bezeichnete Add-In Komponenten der Programmbibliothek InspirePostgisLib. Beide Pakete referenzieren zudem Komponenten der im Projektkontext als EA bezeichneten EA-API. Als Kern des Add-Ins stellt InspirePostgisLib die Klasse MainAlgorithm zur Verfügung, die sich insbesondere der Klassen SortedElementList und PlatformSpecificCodeModel bedient. SortedElementList dient in erster Linie der Generierung einer Liste von Klassen eines übergebenen UML-Modells wie dem in Abschnitt 3 vorgestellten ICUM, wobei die Sortierung einem rekursiven Ansatz folgt, bei dem sämtliche Assoziationen im Modell traversiert werden, um die jeweils unabhängigen Klassen zu identifizieren und in der Elementliste entsprechend früh zu positionieren. Die Aufgabe der Klasse PlatformSpecificCodeModel liegt dagegen primär in der Generierung von DDLund DML-Ausdrücken für die einzelnen Elemente der Liste sortierter Klassen. Dies umfasst neben x der Erzeugung von Datenbanktabellen (z. B. CREATE TABLE icum.CadastralParcel();), x das Hinzufügen von Tabellenspalten (z. B. ALTER TABLE icum.CadastralParcel ADD COLUMN cadastralParcelID integer NOT NULL;), x das Setzen von Primär- und Sekundärschlüsseln (z. B. ALTER TABLE icum.CadastralParcel ADD CONSTRAINT PK_CadastralParcel PRIMARY KEY (cadastralParcelID);), x die Indexerzeugung (z. B. CREATE INDEX idx_CadastralBoundary_geometry ON icum.CadastralBoundary USING GIST (geometry GIST_GEOMETRY_OPS);), x die Eintragung von enumeration- oder codeList-Literalen (z. B. INSERT INTO icum.AdministrativeHierarchyLevel (value, administrativeHierarchyLevelID) VALUES ('2ndOrder', 2);) oder x das Einfügen von Geometriespalten (z. B. SELECT public.addgeometrycolumn ('icum', 'cadastralboundary', 'geometry', 25833, 'LINESTRING', 2);). Zudem ermöglicht die Klasse PlatformSpecificCodeModel das Exportieren von SQL-Skripten, wobei neben der Sortierung der Elemente des UML-Modells explizit die Reihenfolge der DDL/DMLAusdrücke Berücksichtigung findet. Beispielsweise erfordert die Modifikation einer Tabelle mittels ALTER TABLE x die Existenz dieser Tabelle, was ein vorheriges Ausführen von CREATE TABLE x impliziert. Auf Grund der multiplen Sortierung lassen sich die exportierten und häufig komplexen SQLSkripte vollständig ohne zusätzliche Interaktionen prozessieren und somit komplette (Geo-)Datenbanken erzeugen. EA Add-In für die CASE Tool-basierte Generierung von Geodatenbankschemas: Beispiel INSPIRE 127 Abbildung 4.1: Pakete, Klassen und Abhängigkeiten des Prototyps des Inspire2Postgis-EA-Add-Ins. Die Klassen InspirePostGisEaAddIn und ElementResourceForm des Paketes InspirePostgisEaAddIn fungieren als Clients für die soeben beschriebenen Klassen. Die Hauptklasse des Add-Ins, InspirePostGisEaAddIn, dient primär der Herstellung der Verbindung zwischen dem Add-In und der EA-Instanz. Dagegen stellt die auf System.Windows.Forms.Form basierende Klasse ElementRessoureForm eine simple Windows-basierte GUI als Schnittstelle zwischen Nutzer und Add-In bereit. Durch das Add-In werden folgende Menüpunkte angeboten: x Define resource elements, x Create sorted element list, x Read sorted element list und x Export to code model. Define resource elements dient der Auswahl der verwendeten Ressourcen (PSM-Pakete im EAProjekt-Explorer). Im Falle der häufig gewünschten Einschränkung der Datenbankerzeugung für ausgewählte Klassen eines komplexen Klassendiagramms ist ein Separieren dieser Klassen in ein spezifisches Paket (Primärressource) erforderlich, welches explizit anzugeben ist. Create sorted element list kapselt einen komplexen Algorithmus zur rekursiven Traversierung aller Elemente der Primärressource, wobei die Klassen der Sekundärressourcen bei Bedarf, d. h. im Falle der Referenzierung insbesondere in Form von Assoziationen, Aggregationen und Kompositionen, einbezogen und ebenso traversiert werden. Ziel dieses Arbeitsschrittes ist die Erstellung einer commaseparated values (CSV)-Datei, welche alle erforderlichen Klassen in ihrer Sortierung, beginnend mit den unabhängigen und gefolgt von den abhängigen, auflistet. Bei Bedarf können diese CSV-Dateien mittels Read sorted element list später wieder eingelesen werden. Export to code model erstellt für die noch im Speicher befindliche oder neu eingelesene Klassenliste DDL/DML-Ausdrücke und fasst diese in einem SQL-Skript zusammen. Die gekapselte Funktionalität berücksichtigt die o. g. Reihenfolge von DDL-Ausdrücken (z. B. Listung von ALTER TABLE x nach CREATE TABLE x). Die allgemeine Anwendung des Add-Ins folgt der oben aufgeführten Reihenfolge der Menüeinträge. Dabei wird ein bereits in EA geladenes (EA-Projektdatei – EAP) oder importiertes (z. B. per XML Metadata Interchange – XMI) Klassenmodell der Anwendungsdomäne vorausgesetzt. 5 INSPIRE-Beispieltransformation Die Anwendung des EA-Add-In Prototyps erfolgte beispielhaft im Kontext der Projekte Hereplus (http://www.hereplusproject.eu/) und EO2HEAVEN (http://www.eo2heaven.org/) und soll am Beispiel des ICUM verdeutlicht werden. Dabei wird auf die Transformation der PIM-Variante des ICUM in eine SQL-Variante als CM-Pendant abgestellt. Vorbereitend erfolgt die PIM2PSM-Transformation mittels Transform current package mit einem modifizierten DDL-Code-Template (Sparks et al. 2010: 1169– 128 Rico Vogel 1203). In dem nicht näher beschriebenen Schritt erfolgt beispielsweise eine Transformation der in Abbildung 3.3 dargestellten PIM-Variante der Administrative Units in die PSM-Form der Abbildung 5.1. Diese bildet die Basis der durch das EA-Add-In (Abschn. 4) realisierten PSM2CM-Transformation. Abbildung 5.1: PSM des Paketes Administrative Units. Für die persistente Datenhaltung im ICUM-Schema ist eine PostgreSQL/PostGIS-Datenbank vorgesehen. Gemäß Brinkhoff (2013) handelt es sich um ein voll funktionsfähiges Geodatenbanksystem, welches auf Basis der Simple Feature Access Specification (SFA) Konformität zu den Entwicklungen des Open Geospatial Consortiums (OGC) aufweist. Zudem bietet die PostGISErweiterung Unterstützung von Geography Markup Language (GML), Koordinatentransformationen und geometrische Aggregatfunktionen, Indexierung per Generalized Search Tree (GiST). Zentral sind die Tabellen geometry_columns zur Erfassung von Geometrien und spatial_ref_sys für geodätische Bezugssysteme (Spatial Reference System – SRS). Unter der Voraussetzung, dass im EA-Projektexplorer eine PSM-Variante des ICUM verfügbar ist, wird zunächst das zu transformierende Paket Themes selektiert. Sollte lediglich eine Auswahl von Klassen transformiert werden, sind diese in einem neuen Paket (z. B. Selection) zu separieren. Anschließend werden in einer durch Define resource elements geöffneten Eingabemaske das zu transformierende Paket (Default resource package) ausgewählt und zusätzliche Ressourcen festgelegt (Additional resource package). Im Beispiel sind dies Themes als Primärressource sowie ergänzend ISO TC211 und Generic Conceptual Model als von Themes verwendete Sekundärressourcen. Im Anschluss erfolgt per Create sorted element list die Erstellung einer CSV-Datei mit einer Liste sortierter Klassen, die zunächst unabhängige und später abhängige Klassen enthält (Abb. 5.2). Gemäß EA Add-In für die CASE Tool-basierte Generierung von Geodatenbankschemas: Beispiel INSPIRE 129 den Abhängigkeiten in Abbildung 3.1 werden im Allgemeinen zunächst Klassen des ISO TC211Paketes gelistet, gefolgt von Klassen aus Generic Conceptual Model und schließlich Klassen der INSPIRE-Themes. Die Reihenfolge ergibt sich dabei unter anderem aus den Abhängigkeiten zwischen einzelnen Themen, wie sie aus Abbildung 3.2 resultieren. Klassen abhängiger Pakete können jedoch auch früh gelistet werden, wenn die Klassen keine Abhängigkeiten zu komplexen Klassen aufweisen. Beispiele hierfür sind enumerations und codeLists (z. B. AdministrativeHierarchyLevel des Paketes Administrative Units). Counter,Name,ID,Stereotyp,GUID 1,CharacterSetCode,5020,table,{23AAA8D0-0AD6-496b-9010-C75D67E7614C} 2,Character,5019,table,{495329CA-61CB-48c5-891D-A776B7E38A18} 3,Sequence<Character>,5023,table,{E3E2A4DC-08CA-4a71-931B-3CF7A79B15C0} 4,CharacterString,5021,table,{A5449847-B0C6-4ae4-9F09-8DA156B7B4FB} 5,Identifier,5155,table,{9C933D33-E056-4180-98DB-2F65BD7AFE2D} 6,AdministrativeHierarchyLevel,5723,table,{C7CB8B48-AB89-43dd-98F2-B4100B41ABE9} 7,PT_FreeText,3244,table,{28C524F7-4DD6-48c8-9E8E-4B4EF752557C} 8,LanguageCode,3072,table,{493BCC64-545A-461b-B7E8-8853479F9D5D} 9,CountryCode,3055,table,{B928FE8C-CAF7-4c9f-987B-E8D68D4989C7} ... 21,CI_RoleCode,4462,table,{3F3FD6D6-69F1-4575-A361-F4F62E2424CC} 22,CI_ResponsibleParty,4461,table,{36078373-A82D-4db6-AF65-F2E28042367C} 23,PT_LocaleContainer,3246,table,{FCA86CF4-EE8A-4677-8075-BE0BAEC7CA88} 24,LocalisedCharacterString,3243,table,{4443F791-0D1F-4116-A215-32A3BDBC4E53} 25,NativenessValue,5773,table,{F5893E7E-40DA-4692-9820-1C2FAE75633A} 26,NameStatusValue,5772,table,{2511D490-2FCE-423c-BA15-5306E5E1DCA3} 27,URI,3176,table,{F3AAD0FB-4D1A-482c-AF05-DEF76F8C205C} 28,PronunciationOfName,5774,table,{63752544-C99D-4977-9007-51D9972AC2E6} 29,SpellingOfName,5775,table,{19A3564C-8FB7-48d3-83E8-EA402E7CF9CB} ... 43,AddressLocator,5704,table,{4028DA2F-D2EB-4966-A010-C480EDBE4E8B} 44,AddressRepresentation,5705,table,{2F2158A5-BAEB-4fdd-96AB-3BA8A60644A7} 45,Address,5701,table,{DE3D10FE-2CBC-40ca-8467-835068A06D43} 46,AddressComponent,5703,table,{53121139-CF1D-4ce3-9D0C-6320A22D5CA9} 47,AdminUnitName,5706,table,{66EAB370-529F-4a9f-84AC-84B18CE362A7} ... 51,UnitOfMeasure,4963,table,{D62CA841-51F3-49e2-B12F-849DD375B97D} 52,UomArea,4967,table,{8FAA3CD4-D23A-4b1c-A228-BE696AAE4B42} 53,Measure,4957,table,{5A40874A-E999-4197-8A27-087C9AAD7059} ... 57,CadastralBoundary,5734,table,{EEFE77DE-DF21-431a-B18A-1217E0636DE5} 58,CadastralParcel,5731,table,{A0BF3FC0-90F3-4f90-9065-DA9D144A9E23} 59,BasicPropertyUnit,5733,table,{E7BF8605-72E3-44a4-B749-9F29FBB7A9BB} 60,AdministrativeUnit,5724,table,{A19FFC08-A500-4a16-917D-772EEFDF9B5E} Abbildung 5.2: Sorted element list am Beispiel des ICUM (Auszug). Mit Read sorted element list können die CSV-Dateien erneut eingelesen werden, falls das EA-Projekt zu einem späteren Zeitpunkt neu geladen wird. Anschließend, beziehungsweise wenn sich die Sorted Element List noch im Arbeitsspeicher befindet, lässt sich mit Export to code model eine SQL-Datei erzeugen, in der neben der Element-Sortierung die Reihenfolge von DDL- und DML-Ausdrücken Berücksichtigung findet (s. o.). Abbildung 5.3 verdeutlicht den Aufbau dieser Ergebnisdatei. Diese repräsentiert die CM-Variante des ICUM und kann ohne zusätzliche Interaktionen als SQL-Skript mit einem Kommandozeilen-Client oder einem GUI-basierten Client, zu dem pgAdmin III zählt, zur Erzeugung von PostgreSQL/PostGIS-Datenbanken eingesetzt werden. 130 Rico Vogel CREATE TABLE icum.CharacterSetCode(); CREATE TABLE icum.Character(); CREATE TABLE icum.SequenceCharacter(); CREATE TABLE icum.CharacterString(); CREATE TABLE icum.Identifier(); CREATE TABLE icum.AdministrativeHierarchyLevel(); ... CREATE TABLE icum.AdminUnitName(); CREATE TABLE icum.MeasureType(); CREATE TABLE icum.Number(); CREATE TABLE icum.Real(); ... CREATE TABLE icum.CadastralBoundary(); CREATE TABLE icum.CadastralParcel(); CREATE TABLE icum.BasicPropertyUnit(); CREATE TABLE icum.AdministrativeUnit(); ... ALTER TABLE icum.SequenceCharacter OWNER TO icum; ... COMMENT ON COLUMN icum.CharacterSetCode.value IS 'Reference to complex data type: CharacterString'; ... SELECT public.addgeometrycolumn ('icum', 'residenceofauthority', 'geometry', 25833, 'POINT', 2); SELECT public.addgeometrycolumn ('icum', 'geographicposition', 'geometry', 25833, 'POINT', 2); SELECT public.addgeometrycolumn ('icum', 'cadastralboundary', 'geometry', 25833, 'LINESTRING', 2); SELECT public.addgeometrycolumn ('icum', 'cadastralparcel', 'geometry', 25833, 'GEOMETRY', 2); SELECT public.addgeometrycolumn ('icum', 'cadastralparcel', 'referencePoint', 25833, 'POINT', 2); SELECT public.addgeometrycolumn ('icum', 'administrativeunit', 'geometry', 25833, 'MULTIPOLYGON', 2); ... CREATE INDEX idx_ResidenceOfAuthority_geometry ON icum.ResidenceOfAuthority USING GIST (geometry GIST_GEOMETRY_OPS); CREATE INDEX idx_GeographicPosition_geometry ON icum.GeographicPosition USING GIST (geometry GIST_GEOMETRY_OPS); CREATE INDEX idx_CadastralBoundary_geometry ON icum.CadastralBoundary USING GIST (geometry GIST_GEOMETRY_OPS); ... ALTER TABLE icum.Identifier ADD CONSTRAINT PK_Identifier PRIMARY KEY (identifierID); ALTER TABLE icum.AdministrativeHierarchyLevel ADD CONSTRAINT PK_AdministrativeHierarchyLevel PRIMARY KEY (administrativeHierarchyLevelID); ... ALTER TABLE icum.Length ADD CONSTRAINT PK_Length PRIMARY KEY (lengthID); ALTER TABLE icum.CadastralBoundary ADD CONSTRAINT PK_CadastralBoundary PRIMARY KEY (cadastralBoundaryID); ALTER TABLE icum.CadastralParcel ADD CONSTRAINT PK_CadastralParcel PRIMARY KEY (cadastralParcelID); ALTER TABLE icum.BasicPropertyUnit ADD CONSTRAINT PK_BasicPropertyUnit PRIMARY KEY (basicPropertyUnitID); ALTER TABLE icum.AdministrativeUnit ADD CONSTRAINT PK_AdministrativeUnit PRIMARY KEY (administrativeUnitID); ... ALTER TABLE icum.CadastralParcel ADD CONSTRAINT FK_CadastralParcel_cadastralBoundaryID_integer FOREIGN KEY (cadastralBoundaryID) REFERENCES icum.integer (integerID); ALTER TABLE icum.BasicPropertyUnit ADD CONSTRAINT FK_BasicPropertyUnit_inspireId_Identifier FOREIGN KEY (inspireId) REFERENCES icum.Identifier (identifierID); ALTER TABLE icum.BasicPropertyUnit ADD CONSTRAINT FK_BasicPropertyUnit_nationalCadastralReference_CharacterString FOREIGN KEY (nationalCadastralReference) REFERENCES icum.CharacterString (characterStringID); ALTER TABLE icum.BasicPropertyUnit ADD CONSTRAINT FK_BasicPropertyUnit_areaValue_Area FOREIGN KEY (areaValue) REFERENCES icum.Area (areaID); ... INSERT INTO icum.AdministrativeHierarchyLevel (value, administrativeHierarchyLevelID) VALUES ('1stOrder', 1); ... Abbildung 5.3: Code model mit DDL- und DML-Ausdrücken am Beispiel des ICUM (Auszug). EA Add-In für die CASE Tool-basierte Generierung von Geodatenbankschemas: Beispiel INSPIRE 6 131 Fazit und Ausblick Der vorliegende Beitrag verdeutlicht, wie mit Hilfe eines CASE-Tools, ausgehend von der konzeptuellen Modellierung, eine weitgehend automatisierte Erzeugung von Geodatenbanken realisiert werden kann. Basierend auf UML-Klassendiagrammen und unter Anwendung des verbreiteten CASETools EA sowie durch die Entwicklung eines Prototyps für eine EA-Extension wird dargelegt, inwiefern MDD-basierte Transformationen einen hohen Automatisierungsgrad zur Erzeugung von Geodatenbanken unterstützen können. Um eine Abbildung des gesamten (ICUM-)Schemas zu vermeiden, wurde auf die Realisierung des Mindesterfordernisses an Klassen fokussiert. Dies bedeutet, dass bei Bedarf lediglich die von Referenzierungen betroffenen Bestandteile des Datenbankschemas einbezogen werden und die nicht benötigten Klassen (bzw. Tabellen) im CM keine Berücksichtigung finden. Damit lässt sich die Komplexität der Datenbank unter Umständen erheblich reduzieren. Hinsichtlich des Einsatzes des EA-Add-Ins besteht trotz erfolgreicher Tests ein Erfordernis für Weiterentwicklungen. Anpassungsbedarf besteht insbesondere im Hinblick auf die Abbildung von Multiplizitäten, welche in der Generierung zusätzlicher Relationstabellen resultiert. Grundsätzlich eignet sich die Extension für die Transformation weiterer (raumbezogener) Datenmodelle, wie dem 3A-Modell. Das von der Arbeitsgemeinschaft der Vermessungsverwaltungen der Länder der Bundesrepublik Deutschland (AdV) veröffentlichte Modell (AdV 2009), welches ebenso als EA-Projekt verfügbar ist, repräsentiert AFIS-ALKIS-ATKIS. XPlanGML ist ein weiteres Beispiel, welches unter anderem auf den interoperablen Austausch von Bebauungsplänen abzielt. Darüber hinaus kann das EA-Add-In WebSDSS-Entwicklungsprozesse forcieren. Unterschiedliche ZENON-Entwicklungsphasen (z. B. Vogel im vorliegenden Band) werden beispielsweise durch die Verfügbarkeit von PRF-Daten geeigneter Data Concretization States (DCSs) unterstützt, wobei die Abstraktionsgrade abstract, arbitrary, mockup und genuine unterschieden werden (Vogel et al. 2015: 108). In der Domänenmodellierung (AP2) dienen abstrakte Testdaten in Objektdiagrammen der Validierung von Klassendiagrammen. Eine futureB lässt sich als Kombination aus scenarioA und strategicAlternativeB definieren und eine futureC kombiniert scenarioA mit strategicAlternativeC (ebenda: 107). Zudem können Datenhaltungskomponenten, wie sie von Vogel (2013) vorgesehen sind, für PRF-Daten unterschiedlicher DCSs vorbereitet werden. In frühen Entwicklungsphasen kann bereits der funktional eingeschränkte Prototyp des EA-Add-Ins eingesetzt werden. Dazu wird das von Vogel et al. (in Vorb.) in AP2 formalisierte PRF-Domänenmodell als PIM-Variante über eine PostgreSQL/PostGIS-spezifische PSM-Variante in ein SQL-Skript transformiert, welches als CM zur Erzeugung eines Schemas einer PRF-Datenbank dient. Während der Systementwicklung (AP3) können mittels Factory-Klassen Objektinstanzen wie futureB oder futureC einer Klasse Future erzeugt werden, um die PRF-Datenbank zu füllen und Datensätze im Rahmen von Tests (AP5) abzurufen. CASE-Tools wie EA wurden seit den hier vorgestellten Arbeiten von Vogel (2011) erheblich weiterentwickelt. Neue EA-Versionen, aber auch Extract, Transform and Load (ETL)-Tools, wie Feature Manipulation Engine (FME), verfügen ebenfalls über Komponenten, die hohe Automatisierungsgrade bei der Erzeugung von Datenbanken erzielen. Entsprechende Werkzeuge sind gegebenenfalls weitere Optionen zur Datenbankerzeugung, unter anderem weil sie in der Lage sind, weitere Ausgabeformate beziehungsweise PSMs und CMs zu generieren. Gemäß Kirchenbauer (2009: 28) lassen sich beispielsweise mit Rational Rose aus dem 3A-UML-Diagramm XML (GML) Schemadateien erstellen. 132 Rico Vogel Literatur AdV: Dokumentation zur Modellierung der Geoinformationen des amtlichen Vermessungswesens (GeoInfoDok). Version 6.0.1, Arbeitsgemeinschaft der Vermessungsverwaltungen der Länder der Bundesrepublik Deutschland, 2009, Im Internet: URL: http://www.advonline.de/icc/extdeu/binarywriterservlet?imgUid=8f830072-8de8-9221-d5ad8f138a438ad1&uBasVariant=11111111-1111-1111-1111-111111111111 [Stand 12. März 2015]. Balzert, H.: Lehrbuch der Softwaretechnik: Basiskonzepte und Requirements Engineering. 3. Aufl., Lehrbücher der Informatik, Spektrum, Akad. Verl., Heidelberg 2009. Beydeda, S.; Book, M.; Gruhn, V. (Eds.): Model-Driven Software Development. Springer, Berlin, Heidelberg 2005. Brinkhoff, T.: Geodatenbanksysteme in Theorie und Praxis: Einführung in objektrelationale Geodatenbanken unter besonderer Berücksichtigung von Oracle Spatial. 3., überarb. und erw. Aufl., Wichmann, Berlin 2013. Brown, A.W.; Conallen, J.; Tropeano, D.: Introduction: Models, Modeling, and Model-Driven Architecture (MDA). In: Beydeda, S.; Book, M.; Gruhn, V. (Eds.): Model-Driven Software Development. Springer: Berlin, Heidelberg 2005, 1–16. European Parliament: Directive 2007/2/EC of the European Parliament and of the Council of 14 March 2007 establishing an Infrastructure for Spatial Information in the European Community (INSPIRE). Off. J. Europ. Union 50 (2007) L 108, 1–14. INSPIRE: INSPIRE Data Specification on Administrative units – Guidelines. INSPIRE Thematic Working Group Administrative units, Data Specification D2.8.I.4, 2009, Im Internet: URL: http://inspire.jrc.ec.europa.eu/documents/Data_Specifications/INSPIRE_DataSpecification_AU_ v3.0.pdf [Stand 08. Januar 2015]. INSPIRE: INSPIRE Generic Conceptual Model. Tech. Rep. D2.5, Version 3.3, Drafting Team Data Specifications, 2010, Im Internet: URL: http://inspire.jrc.ec.europa.eu/documents/Data_Specifications/D2.5_v3_3.pdf [Stand 22. Juli 2014]. ISO 19103:2005: Geographic information – Conceptual schema language. International Organization for Standardization, 2005. ISO 19136:2007: Geographic information – Geography Markup Language (GML). International Organization for Standardization, 2007. Kirchenbauer, V.: Evaluierung und Überführung von Bebauungsplänen des Digitalen Informationssystems Planrecht (DIP) in die Geodateninfrastruktur der Freien und Hansestadt Hamburg unter Berücksichtigung des Standards XPlanung. Diplomarbeit, Hochschule Karlsruhe, 2009, Im Internet: URL: http://www.iai.fzk.de/wwwextern/fileadmin/Image_Archive/Bauwerke/GeoInformationssysteme/XPlanung/XPlanung/Dokumente/Diplomarbeit_Kirchenbauer_Vera.pdf [Stand: 09. April 2015]. Lutz, M.; Friis-Christensen, A.: Tutorial: Using Enterprise Architect with a central UML repository. INSPIRE Consolidation Team, JRC, 2012, Im Internet: URL: https://www.seegrid.csiro.au/wiki/pub/AppSchemas/ConfiguringUMLToolForHollowWorld/INS PIRE_uml_howtopdf__EN_2.0.pdf [Stand 18. Februar 2015]. Najar, C.R.: A Model-Driven Approach to Management of Integrated Metadata – Spatial Data in the Context of Spatial Data Infrastructures. PhD thesis, ETH Zürich, 2006, Im Internet: URL: http://www.igp-data.ethz.ch/berichte/Blaue_Berichte_PDF/90.pdf [Stand 09. April 2015]. Schanze, J.; Sauer, A.: Dokumentation des fragestellungs- und gebietsspezifischen Szenarioansatzes. REGKLAM Ergebnisbericht Produkt 2.4a (Konzept), 2011, unveröffentlicht. EA Add-In für die CASE Tool-basierte Generierung von Geodatenbankschemas: Beispiel INSPIRE 133 Sparks, G.; O'Bryan, D.; McNeilly, S.; Capey, N.; Mancarella, S.; Redfern, J.; Kumar, V.; Britten, H.; Maxwell, B.; Meagher, S. (Eds.): Enterprise Architect User Guide. Sparx Systems, 2010, Im Internet: URL: http://www.sparxsystems.com/bin/EAUserGuide.pdf [Stand 16. Juni 2010]. Vogel, R.: Automatisierte Generierung von Geodatenbankschemata aus dem INSPIRE Consolidated UML Model. 1. Workshop der GDI Sachsen: INSPIRE-Umsetzung im Freistaat Sachsen, SMI Dresden, Präsentation, 2011, Im Internet: URL: http://www.gdi.sachsen.de/inhalt/info/archiv2011/110516/110510_GDIWS_8_RicoVogel.pdf [Stand 09. April 2015]. Vogel, R.: ZENON – Entwicklung eines WebSDSS zur Abschätzung der Folgen des Klimawandels und des gesellschaftlichen Wandels. In: Strobl, J.; Blaschke, T.; Griesebner, G.; Zagel, B. (Eds.): Angewandte Geoinformatik 2013: Beiträge zum 25. AGIT-Symposium Salzburg, Wichmann: Berlin, Offenbach, 2013, 227–232, Im Internet: URL: http://gispoint.de/fileadmin/user_upload/paper_gis_open/537533082.pdf [Stand 12. März 2015]. Vogel, R.: Prototypische Technologieintegration für ein WebGIS-basiertes Entscheidungsunterstützungssystem auf der Basis aktueller Softwarekomponenten und Frameworks. 18. Workshop „Modellierung und Simulation von Ökosystemen“, Kölpinsee 2014, im vorliegenden Band. Vogel, R.; Neubert, M.; Sauer, A.: Data Concretization States as Metadata of Parameterized Regional Futures in a WebSDSS Development Context. In: Rückemann, C.-P.; Doytsher, Y. (Eds.): GEOProcessing 2015, The Seventh International Conference on Advanced Geographic Information Systems, Applications, and Services, IARIA: Lisbon, 2015, 106–109, Im Internet: URL: http://www.thinkmind.org/download.php?articleid=geoprocessing_2015_6_10_30031 [Stand 12. März 2015]. Vogel, R.; Sauer, A.; Schanze, J.: Object-Oriented Domain Modeling of a Regional Climate Change Scenario Approach as a central WebSDSS Development Artifact. N.N., in Vorbereitung.