Projektmanagement und SiSy

Transcription

Projektmanagement und SiSy
Berufsakademie Sachsen
Laser & Co. Solutions GmbH
Staatliche Studienakademie Bautzen
Promenadenring 8
Studienrichtung Wirtschaftsinformatik
02702 Löbau
Entwicklung einer prototypischen Schnittstelle zwischen dem
SiSy-Repository und externen Datenformaten
Diplomarbeit zur Erlangung
des Grades Diplom-Wirtschaftsinformatiker
der Studienrichtung Wirtschaftsinformatik
eingereicht von
Renè Platzk
Seminargruppe BW 00 WI
Studien-Nr. 00WI26
am 08.08.2003
Prüfer und Gutachter:
Herr Prof. Dr. rer. nat. Ralph Großmann, Staatliche Studienakademie Bautzen
Herr Dipl.-Ing. Päd Alexander Huwaldt, Laser & Co. Solutions GmbH
2
3
Thesen
Platzk, René: Entwicklung einer prototypischen Schnittstelle zwischen dem
SiSy-Repository und externen Datenformaten, Berufsakademie Sachsen,
Staatliche Studienakademie Bautzen, Studienrichtung Wirtschaftsinformatik,
Diplomarbeit, 2003. - 73 Seiten, 19 Literaturquellen, 9 Onlinequellen, 1
Softwareprodukt, 7 Anlagen.
-
Eine Schnittstelle des Softwareprodukts SiSy zu externen Datenformaten
erweitert dessen Kompatibilität.
-
Als Exportformate wurden CSV, XML und MySQL gewählt, da diese
moderne Techniken darstellen und von SiSy-Nutzern als Exportformate
gefordert werden.
-
In SiSy existieren bereits einige Schnittstellen, durch die ein Datenexport
in andere Systeme realisiert wurde.
-
Für den Entwurf der Schnittstelle in SiSy, ist der Entwurf weiterer
SiSyBasic-Klassen mit Funktionen notwendig.
-
Die SiSyBasic-Klassen werden in der Programmiersprache C++ realisiert
und durch die „Assi.exe“ bereitgestellt.
-
Beim Datenexport in die Formate CSV und XML werden jeweils Dateien
mit konformem Inhalt erzeugt.
-
Die Schnittstelle zur MySQL-Datenbank wird über eine ODBCSchnittstelle in Visual C++ realisiert.
-
Für die Verwendung der Schnittstelle sollte das Augenmerk auf die
Verwendung der Daten gelegt werden.
4
Autorenreferat
Platzk, René: Entwicklung einer prototypischen Schnittstelle zwischen dem
SiSy-Repository und externen Datenformaten, Berufsakademie Sachsen,
Staatliche Studienakademie Bautzen, Studienrichtung Wirtschaftsinformatik,
Diplomarbeit, 2003. - 73 Seiten, 19 Literaturquellen, 9 Onlinequellen, 1
Softwareprodukt, 7 Anlagen.
Die Schnittstellen zwischen verschiedenen Softwareprodukten gewinnen für
Unternehmen immer mehr an Bedeutung, um die Kompatibilität ihres
Programms zu Standardsoftware und somit zu Standards der Industrie zu
erweitern. Diese Arbeit soll die Entwicklung einer Schnittstelle zwischen dem
Softwareprodukt SiSy und externen Datenformaten CSV, XML und MySQL
darlegen.
In einem einleitenden Kapitel wird das Ziel dieser Arbeit spezifiziert und die
Firma Laser & Co. Solutions GmbH mit Ihrem Produkt SiSy vorgestellt.
Danach folgt Vorbetrachtung der thematischen Grundlagen. Hierbei wird u.a.
auf Datenbanken und deren Modelle eingegangen, und die Exportformate
CSV, XML und MySQL näher erläutert.
Anschließend erfolgt die Analyse des Softwareprodukts SiSy und dessen
Schnittstellen. Danach wird auf die Entwicklung der Schnittstelle einer
ODBC-Schnittstelle unter Visual C++ analysiert.
Aus Anforderungen der Analyse wird im darauf folgenden Kapitel ein Entwurf
für die Schnittstelle abgeleitet und die Realisierung kurz erläutert.
In einem abschließenden Kapitel wird der Entwicklungsstand der
Schnittstelle bewertet und ein Ausblick auf weitere, daraus folgende
Entwicklungen gegeben.
5
Inhalt
Abkürzungsverzeichnis .......................................................................................6
1
Einleitung ................................................................................................7
1.1
Ziel ..........................................................................................................7
1.2
Die Laser & Co. Solutions GmbH und SiSy®..........................................8
1.3
Vorgehen ................................................................................................9
2
Theoretische Vorbetrachtung ................................................................11
2.1
Begriffe..................................................................................................11
2.2
Datenbanktheoretische Grundlagen......................................................14
2.3
MySQL ..................................................................................................18
2.4
XML.......................................................................................................21
2.5
CSV.......................................................................................................27
3
Analyse .................................................................................................30
3.1
Simple Systems®..................................................................................30
3.2
Beispiel der Organisationssicht in SiSy® ..............................................37
3.3
ODBC unter Visual C++ ........................................................................39
3.4
Anforderungen ......................................................................................45
4
Entwurf und Realisierung der Schnittstelle............................................48
4.1
Die Skript-Ebene ...................................................................................51
4.2
Die Dialog-Ebene ..................................................................................54
4.3
Die Klassen-Ebene ...............................................................................59
4.4
Realisierung ..........................................................................................62
5
Schlussbetrachtungen...........................................................................64
5.1
Ergebnisse ............................................................................................64
5.2
Ausblick.................................................................................................65
Literaturverzeichnis...........................................................................................67
Onlinequellen ....................................................................................................69
Softwareprodukte..............................................................................................69
Abbildungsverzeichnis ......................................................................................70
Tabellenverzeichnis ..........................................................................................71
Anlagenverzeichnis...........................................................................................72
6
Abkürzungsverzeichnis
ANSI
American National Standards Institute
CASE
Computer Aided Software Engineering
CSV
Comma Separated Values
DB
Database
DBMS
Datenbankmanagementsystem
DCL
Data Controll Language
DDE
Dynamic Data Exchange
DDL
Data Definition Language
DIN
Deutsche Industrie Norm
DML
Data Manipulation Language
DTD
Dokumententyp-Definition
DV
Datenverarbeitung
EDV
Elektronische Datenverarbeitung
ERD
Entity-Relationship-Diagram
GPL
General Public Licence
GUI
Graphical User Interface
ISO
International Standard Organisation
HTML
Hypertext Markup Language
MS
Microsoft
ODBC
Open Database Connectivity
SiSy
Simple System
SQL
Structured Query Language
UML
Unified Modelling Language
URL
Uniform Resource Locator
URR
User Requirements Review
XML
Extensible Markup Language
7
1 Einleitung
Bis vor einigen Jahren zeichneten sich Software-Lösungen durch ihre
Eigenständigkeit und Inkompatibilität aus, um jegliche direkte Konkurrenz zu
vermeiden. Mittlerweile hat man erkannt, dass diese Inkompatibilität der ITBranche schadet. So wurde die Forderung nach offenen Systemen und
herstellerunabhängigen Standards immer größer. Dabei ist wichtig, dass eine
Anwendung auf Daten in einem Netzwerk auf beliebige Rechner zugreifen und
sogar Daten transferieren kann. Um dies umzusetzen, sind standardisierte
Schnittstellen zwischen Anwendungen und Daten von immenser Bedeutung.
1.1 Ziel
Die Firma Laser & Co. Solutions GmbH hat die Bedeutung von Schnittstellen zu
anderen Systemen erkannt und ist zu dem Schluss gekommen ihr SoftwareProgramm SiSy® flexibler zu gestalten. Das Unternehmen möchte nun
Schnittstellen zum Export von Daten in andere Systeme zur Verfügung stellen.
Speziell soll eine Schnittstelle entwickelt werden, mit dessen Hilfe modellierte
Daten, aus SiSy®, in externe Datenformate exportiert werden können, wie das
Komponentendiagramm in der Abbildung 1 verdeutlicht.
Das Komponentendiagramm ist ein Diagramm der Unified Modelling Language,
kurz UML. Es verwendet verschiedene Objekte und ist in Anlage 1 genauer
erklärt. Die Würfel stellen Systeme dar, in denen sich verschiedene
Komponenten befinden.
Nutzer
externe
Datenformat
SiSy
Schnittstelle
Abbildung 1 Grobentwurf der Schnittstelle
8
Diese Arbeit soll die Entwicklung der Schnittstellen zwischen dem SoftwareSystem SiSy® und externen Datenformaten darlegen. Die dabei in Betracht
gezogenen Datenformate sind XML, MySQL und CSV. Diese Formate wurden
gewählt, da sie den Fortschritt verschiedener Techniken repräsentieren und
somit einerseits eine Umstellung auf diese Techniken in SiSy® notwendig
machen, andererseits die Verarbeitung bzw. die Bereitstellung dieser Formate
von Nutzern gefordert wird.
1.2 Die Laser & Co. Solutions GmbH und SiSy®
Die Firma Laser & Co. Solutions GmbH, in welcher der Autor seine
Praxissemester absolvierte, kann auf mehr als zehn Jahre erfolgreiches Wirken
in der IT-Branche zurückblicken. Sie beschäftigt ca. sieben Mitarbeiter und
zusätzlich eine differierende Anzahl von Studenten und Praktikanten.
Die Leistungserstellungsprozesse der Laser & Co. Solutions GmbH reichen von
der Entwicklung des Software-Produktes SiSy®, über die Realisierung von
Individuallösungen bis hin zur Schulung. Im Bereich der Entwicklung wird mit
dem Qualitätsmanagementsystem nach ISO 9001:2000 gearbeitet, das mit Hilfe
des eigenen Software-Produktes SiSy® erarbeitet wurde.
Das Software-System SiSy® ist ein universelles Modellierungstool, mit dessen
Hilfe es möglich ist nicht nur ein Qualitätsmanagementsystem nach ISO
9001:2000 zu erstellen, sondern kann es auch unterstützend bei der
Strukturierten und der Objektorientierten Systementwicklung verwendet werden.
Die strukturierte Vorgehensweise der Systementwicklung unterstützt SiSy® u.a.
mit der Strukturierten Analyse, dem Strukturierten Design, dem ERD und mit
dem Struktogramm. Durch die Diagramme der UML, die in SiSy® realisiert
wurden, ist es möglich mit SiSy® die Objektorientierte Systementwicklung
durchzuführen.
Ebenfalls bietet SiSy® die Möglichkeit Netzwerke zu modellieren und zu planen
mit dem Vorgehensmodell zum Netzwerkentwurf.
9
1.3 Vorgehen
Das Vorgehen in dieser Arbeit selbst richtet sich am Wasserfallmodell von
Boehm1) aus. Es ist ein klassisches Vorgehensmodell des SoftwareEngineerings. Das Wasserfallmodell beschreibt den organisatorischen Ablauf
der Entwicklung eines Systems durch die Einteilung in verschiedene und
aufeinander aufbauende Phasen, wie z.B. Analyse-, Entwurfs- und
Realisierungsphase, anhand eines Wasserfalls Die Abbildung 2 zeigt das
klassische Wasserfallmodell.
Analyse
Entwurf
Realisierung
Test
Einführung
Abbildung 2 Das Wasserfallmodell
Bei diesem Modell wird in jeder Phase ein Teilergebnis erarbeitet, welches der
sich anschließenden Phase übergeben wird. Es wird also jede Phase
sequentiell nacheinander abgearbeitet. Dies ist aber für die Praxis unrealistisch,
und so wurden dem Wasserfallmodell Rücksprünge von einer Phase auf die
vorangegangene hinzugefügt, wie ebenfalls in der Abbildung 2 zu sehen ist. In
der Arbeit wurde der Schwerpunkt auf die Phasen der Analyse, des Entwurfs
und der Realisierung gesetzt.
Nachdem nun einleitende Worte gesagt sind, wird im Folgenden eine
theoretische Vorbetrachtung stattfinden, um thematische Grundlagen für das zu
bearbeitende Thema zu schaffen. Hierbei sollen zunächst Begriffe erläutert und
1)
Vgl. [3]
10
der Aufbau von Schnittstellen kurz dargestellt werden. Weiterhin werden die
ausgewählten Datenformate betrachtet.
Danach folgt eine Analyse des Softwaresystems SiSy® und der darin
vorhandenen Schnittstellen. Dabei wird auf den Aufbau dieser Schnittstellen
näher eingegangen.
Nachdem das System SiSy® mit seinen Schnittstellen analysiert wurde, erfolgt
der Entwurf der Schnittstelle zu den externen Datenformaten XML, MySQL und
CSV.
Anschließend wird auf die Realisierung der Schnittstelle gemäß dem
Wasserfallmodell eingegangen. Zum Schluss erfolgt die Schlussbetrachtung
Auswertung der Arbeitsergebnisse. Die Perspektiven und
Verbesserungsvorschläge bezüglich der prototypischen Schnittstelle werden
ebenfalls aufgezeigt
11
2 Theoretische Vorbetrachtung
Dieses Kapitel dient dazu Grundbegriffe im zu betrachtenden Themengebiet zu
klären und die einzelnen Datenformate näher zu erläutern. Dabei wird zunächst
auf den Begriff „Schnittstelle“ näher eingegangen und Datenbanktheoretische
Grundlagen erläutert.
2.1 Begriffe
2.1.1 Schnittstelle
Schnittstellen werden in der EDV oft eng mit den Begriffen Integration,
Vereinheitlichung, Kompatibilität, Nutzung von Standards oder Interoperabilität
verknüpft. Diese Stichworte geben eine Zielrichtung der Verwendung von
Schnittstellen an, definieren den Begriff einer Schnittstelle, engl. Interface, aber
nicht:
„Nach DIN 44300, Teil 1, versteht man generell unter einer Schnittstelle
den Übergang an der Grenze zwischen zwei gleichartigen Einheiten mit
vereinbarten Regeln für die Übergabe von Daten und Signalen“, „zitiert
nach 2)“
Die Abbildung 3 zeigt und verdeutlicht das Prinzip einer Schnittstelle.
Einheit
Schnittstelle
Einheit
Abbildung 3 Prinzip einer Schnittstelle
Die Einheiten können alle verschiedenen Ebenen einer DV-Anwendung sein,
beispielsweise die Benutzeroberfläche oder Daten bzw. Datenbank.
Da diese Arbeit sich mit Schnittstellen der Ebene der Datenbank beschäftigt soll
im folgenden Kapitel nun auf die Datenbankschnittstellen näher eingegangen
werden.
2)
Vgl. [7] S. 6
12
2.1.2 Datenbankschnittstelle
Bei einer Spezifikation einer Schnittstelle für den Datenaustausch zwischen
zwei Systemen oder Anwendungen ist die Vereinbarung der Modalitäten der
Datenübergabe ein grundlegender Aspekt. Dabei soll die Anwendung sich auf
die auszutauschenden Daten beschränken.
Datenbankschnittstellen haben die Aufgabe Informationen bzw. Daten zu
transportieren, sie gegebenenfalls zu transformieren und zu kontrollieren3).
Die Betrachtungsweise der Schnittstellen für den Datenaustausch kann sowohl
aus physischer als auch aus logischer Sicht erfolgen. Die physische
Schnittstelle definiert die programmtechnischen Möglichkeiten bzw.
Einschränkungen für den Datenaustausch, d.h. dass man die Semantik und die
Syntax der kommunizierenden Anwendungen exakt bestimmen kann. Damit
sich die Komplexität, die zwischen den Anwendungen herrscht, verringert
wurde eine Schicht entworfen, die Middleware. Sie liegt zwischen Basissystem
und Anwendung, wie in Abbildung 4 Einordnung der Middleware verdeutlicht ist.
Gleichzeitig wird durch die Middleware die Flexibilität der Anwendung
vergrößert.
Netzwerk mit
Standardprotkoll
Anwendung
Middleware
Middleware
Betriebssystem
Datenbank
Abbildung 4 Einordnung der Middleware
Der Datenaustausch zwischen den funktionellen Teilsystemen wird durch die
logische Sicht einer Schnittstelle beschrieben. Sie sichert die Integrität der
Anwendung und beschreibt die Anforderungen an den Datenaustausch.
3)
Vgl. [15]
13
Dieser ist heutzutage auf verschiedenste Weise möglich. Zu nennen wäre dabei
der Datenaustausch über DDE(Dynamic Data Exchange), OLE (Object Linking
Embedding), der Datenaustausch über EDI (Electronic Data Interchange) und
über ODBC. Auf den Standard ODBC soll in weiteren Ausführungen nun näher
eingegangen werden.
2.1.3 ODBC
Die Open Database Connectivity (ODBC) ist eine Standardschnittstelle für den
Datenzugriff unterschiedlicher Datenquellen. Sie beruht auf dem Client-ServerModell und ist eine typische Middleware-Komponente.
ODBC macht es möglich die gewünschte Datenquelle zu lokalisieren, in einem
Netzwerk die Verbindung zu einem Datenbanksystem aufzubauen, spezielle
Zugriffsbefehle überflüssig zu machen und Abfragen im SQL-Format
abzusetzen.
Die Architektur von ODBC besteht aus mehreren Ebenen, damit die DBMSUnabhängigkeit gewährleistet wird. Dabei sind vier Komponenten besonders zu
nennen:
-
Anwendung
-
Treiber-Manager
-
Treiber
-
Datenquellen.
Die einzelnen Komponenten sollen an dieser Stelle nicht näher erläutert
werden. Der Autor verweist hier auf seine Studienarbeit4), in der das Thema
konkretisiert wurde.
4)
Vgl. [12]
14
2.2 Datenbanktheoretische Grundlagen
Nach der Definition des Begriffes Datenbank sollen in diesem Kapitel
Grundlagen über verschiedene Modelle des Datenbankentwurfes erläutert und
auf die Datenbanksprache SQL näher eingegangen werden.
2.2.1 Datenbank-Definition
Eine Datenbank (engl. data base) ist ein System von strukturiert gespeicherten
Daten. Zwischen diesen Daten besteht eine Vielzahl von Beziehungen5).
Die Motivation der Organisation in Datenbanken besteht darin Daten konsistent
und redundanzfrei zu speichern, so dass ein Vielfachzugriff durch
unterschiedliche Benutzer und Programme möglich ist. Dadurch wird die flexible
Auswertungs- und Verarbeitungsmöglichkeit der Daten bei kürzeren
Zugriffzeiten für die Benutzer bzw. kürzere Verarbeitungszeiten für die
Programme ermöglicht.
Um die Daten einer Datenbank zu verwalten, ist ein
Datenbankmanagementsystem, kurz DBMS, nötig. Es kontrolliert die
Datenbank auf Konsistenz und ist für die Modifikation der Daten zuständig.
Die Datenbank und das Datenbankmanagementsystem bilden zusammen das
Datenbanksystem.
Um nun Daten zu modellieren bzw. zu beschreiben, wurde 1975 durch die
ANSI-Gruppe ein Architekturmodell eingeführt. Dabei wird die Vorgehensweise
bei der Beschreibung der Daten in drei Sichten6) unterteilt:
-
externe (Daten-)Sicht
-
konzeptionelle (Daten-)Sicht
-
interne (Daten-)Sicht
Die externe Sicht ist die Sicht des Nutzers, auch oft Benutzersicht genannt. Sie
beschreibt die Sicht, aus der jeder einzelne Nutzer die Datenbank sieht. Die
externe Sicht beschäftigt sich mit der Frage, auf welche Weise die Nutzer auf
die von ihnen benötigten Daten zugreifen und diese logisch verknüpfen können.
5)
Vgl. [On4]
6)
Vgl. [6]
15
Die konzeptionelle Sicht beschreibt die logische Struktur der Daten, die in der
Datenbank gespeichert sind, und zwar unabhängig von der tatsächlichen
physischen Speicherung und der einzelnen Anwendungen aus Benutzersicht.
Die logische Struktur der Daten wird im sogenannten semantischen Modell
beschrieben. Das entworfene Modell wird je nach DBMS in verschiedene
Datenbankmodelle überführt. Die Sicht, die sich mit der physischen
Speicherung der Daten aus dem logischen Datenmodell beschäftigt, ist die
interne Sicht. Die physische Speicherung wird dabei vom DBMS
übernommen7).
2.2.2 Datenbankmodelle
Ein Modell ist ein Ausschnitt der Realität. Dabei werden Objekte der realen Welt
abstrahiert.
Die verschiedene Modelle der Datenmodellierung werden klassifiziert in
klassische und semantische Datenmodelle.
Zu den klassischen Datenmodellen gehören:
•
das hierarchische Datenmodell
•
das Netzwerkdatenmodell und
•
das relationale Datenmodell.
Semantische Datenbankmodelle wurden mit dem Ziel entwickelt, den
interessierenden Informations- bzw. Datenausschnitt noch genauer als in den
klassischen Modellen abzubilden. Dabei sollte der Verlust der Semantik bzw.
Bedeutung der Daten so gering wie möglich sein. Zu den Semantischen
Modellen gehören:
•
das Entity-Relationship-Modell
•
semantische Netze und
•
das Object-Role-Modell.
Das Entity-Relationship-Modell ist dabei das wichtigste und bedeutendste
Modell8).
Beim Datenbankentwurf wird oft aufgrund von aufwandtechnischen Gründen
zuerst das Entity-Relationship-Diagramm entwickelt, und danach wird aus
7)
Vgl. [6]
8)
Vgl. [17]
16
diesem das relationale Datenmodell abgeleitet, bzw. das Entity-RelationshipModell wird in das relationale Datenmodell überführt. Deshalb soll auf das
Entity-Relationship-Modell und das relationale Modell in den folgenden Kapiteln
näher eingegangen werden.
2.2.2.1
ERM
Das Entity-Relationship-Modell, kurz ERM, wurde 1976 von P.P. Chen
entwickelt. Es wird hauptsächlich zum Datenbankentwurf als Analysemethode
verwendet, da hier nur ein semantisches Datenmodell festgelegt und visualisiert
wird. Es ist also nur eine Entwurfs- bzw. Modellierungshilfe9).
Das ERM wird im Entity-Relationship-Diagramm visualisiert. Im ERM werden
dabei die Elemente „Entity“, „Relationship“ und „Kardinalität“ verwendet. Die
Enities stellen die abstrahierten Objekte der realen Welt dar und werden als
Rechtecke abgebildet. Ihnen sind Attribute bzw. Eigenschaften zuzuordnen. Die
Relationships sind die Beziehungen zwischen den Entities. Sie werden als
Rauten dargestellt. Die Beziehungen besitzen bestimmte Ausprägungen, die
Kardinalität. Sie sind Mengenbeziehungen, die auf bzw. an der Kante im ERD
Abteilung
1
gehört zu
n
Person
Abbildung 5 Beispiel eines ERM
abgebildet werden. Die Abbildung 5 zeigt ein ERM in Chen-Notation.
2.2.2.2
Relationales Datenbankmodell
Das relationale Modell, oder auch Relationenmodell, wurde 1970 von E.F.
CODD veröffentlicht. Eine zweite Version wurde 1990 veröffentlicht, wobei darin
die wichtigsten Veröffentlichungen aus diesem Gebiet zusammengefasst sind
und ergänzt wurden10)11).
9)
Vgl. [9]
10)
Vgl. [18]
11)
Vgl. [8]
17
Im Gegensatz zu anderen Modellen wird auf die grafische Darstellung
verzichtet. Es werden, vereinfacht gesagt, alle Daten in zweidimensionalen
Tabellen dargestellt, die aus einer festen Anzahl von Spalten und einer beliebig
großen Anzahl von Zeilen bzw. Tupeln bestehen. Der Hauptbegriff des
relationalen Modells ist die Relation. Sie wird als Teilmenge (=Tabelle) eines
kartesischen Produkts von vorgegebenen Wertebereichen definiert.
Das relationale Modell besteht aus der Definition von Objekten, Operationen
und Regeln. Die Objekte des relationalen Modells werden im Folgenden
beschrieben und den Begriffen des Entity-Relationship-Modells
gegenübergestellt:
Die Relation ist eine zweidimensionale Tabelle und beschreibt im ERM einen
Entitätstyp12). Die Entität aus dem ERM wird durch ein Tupel im relationalen
Modell beschrieben. Das Tupel entspricht der Zeile in der zweidimensionalen
Tabelle. Weiterhin entsprechen die Spalten im relationalen Modell den
Attributen im ERM. Die Entitäten werden durch die Ausprägung der Attribute
beschrieben. Die Anzahl der Attribute wird Grad der Relation genannt. Die
Zusammenfassung aller möglichen Attributwerte eines Attributs wird als
Domäne bezeichnet.
2.2.3 Die Datenbanksprache SQL
Das relationale Modell findet sich in einem sprachlichen Rahmen wieder, der
Datenbanksprache SQL (engl. Structured Query Language, strukturierte
Abfragesprache)13). Sie ist das sprachliche Mittel für die Definition, die
Manipulation und die Kontrolle von Relationen.
SQL ist eine mengenorientierte Sprache, d. h. es wird angegeben, welche
Datenmenge gebraucht wird, jedoch nicht wie die Daten ermittelt werden.
Erstmals wurde SQL 1986 von der ANSI genormt. Seitdem wurden mehrere
SQL-Standards festgelegt, die neueste Version ist SQL-99. Er ist gleichzeitig
Standard für objektrelationale Datenbanken. Trotz Standardisierung durch ANSI
und ISO existieren verschiedene SQL-Dialekte, die sich z. T. erheblich von den
12)
Vgl. [17]
13)
Vgl. [9]
18
aktuellen Normen unterscheiden. Hier ist vor allem MySQL zu nennen, das
einen weit verbreiteten SQL-Dialekt darstellt.
Mit Hilfe von SQL kann der Anwender Befehle formulieren, die danach durch
ein DBMS verarbeitet werden. Dabei übernimmt das DBMS das Eingeben,
Speichern, Ausgeben und Löschen der Daten. Betrachtet man die SQL-Befehle
genauer, so kann man sie in folgende Klassifizierung einteilen14):
•
Datendefinitionsanweisungen (DDL)
•
Datenmanipulationsanweisungen (DML) und
•
Datenkontrollanweisungen (DCL).
Die DDL übernimmt das Erstellen bzw. Definieren von Objekten der Datenbank,
wie z.B. Tabellen und Spalten. Hier finden wir Befehle wie „CREATE“, „ALTER“
und „DROP“.
Das Verändern und Manipulieren der Daten einer Datenbank kann mit Hilfe der
DML vorgenommen werden. DML-Anweisungen sind „SELECT“-, „INSERT“-,
„UPDATE“- und „DELETE“-Befehle.
Mit Hilfe der DCL können die Rechte, ob ein Nutzer bestimmte Befehle
ausführen kann und darf, vergeben werden. Der „GRANT“- und der „REVOKE“Befehl sind solche Anweisungen.
2.3 MySQL
MySQL ist ein relationales Datenbankmanagementsystem, das im Jahr 1995
von Michael Widenius entwickelt wurde. Aus wirtschaftlichen Gründen heraus
entstand die Idee eine Middleware für mittlere und kleine Unternehmen, sowie
für kleinere Anwendungen zu entwickeln. Da MySQL frei und kostenlos
erhältlich ist, ist es eine Alternative zu den bekannten Datenbanksystemen, wie
Oracle, Microsoft SQL Server oder DB2. MySQL ist ein Open Source Produkt
und besitzt eine GPL (General Public Licence). D. h. der Einsatz einer MySQLDB ist unter bestimmten Vorrausetzungen ohne eine Lizenz möglich. Dazu
muss man nur seine Entwicklung mit der MySQL-DB der Öffentlichkeit
zugänglich machen.
14)
Vgl. [1]
19
MySQL unterstützt die Datenbanksprache SQL nach dem ANSI-SQL/92Standard jedoch mit gewissen Einschränkungen. So kennt MySQL bestimmte
SQL-Befehle nicht oder sind nur zum Teil möglich. MySQL bietet aber auch
eine Reihe von anderen Datentypen an. Durch den geringeren Befehlsumfang
kann es eine hohe Performance bieten. Da MySQL eine Client/Server
Anwendung ist, können die Anfragen bzw. Zugriffe mehrerer Anwendungen,
z.B. per Internet, bearbeitet werden, das bedeutet es ist Multi Thread fähig.
Somit ist MySQL eine sichere, robuste Anwendung, die eine hohe Performance
liefert15).
Ein weiterer großer Vorteil von MySQL ist die Plattformunabhängigkeit, das
bedeutet es gibt nahezu zu jedem Betriebssystem Distributionen von MySQL,
z.B. Windows, MAC oder OS/2. Bekannt wurde MySQL durch die Integration in
das Betriebsystem Linux.
MySQL-Anwendungen bzw. Client-Programme können in vielen verschiedenen
Programmiersprachen entwickelt werden, so z.B. unter C, C++ oder PHP, da
viele API`s, Application Programming Interfaces, für MySQL existieren.
Zusätzlich bietet MySQL eine ODBC-Schnittstelle für Windows übliche
Programmiersprachen (Delphi, Visual Basic, usw.) an. Diese Schnittstelle heißt
MyODBC und existiert in der Version 3.5.
2.3.1 Geschichte
Die Geschichte von MySQL beginnt mit der Doktorarbeit von David Hughes, die
er an der Bond Universität in Australien schrieb. Eine Schlüsselkomponente
davon war ein DBMS zur Speicherung von Informationen. Da eine kommerzielle
Datenbank zu teuer war, nutzte Hughes die damals freie Datenbank Postgres,
mit der Abfragesprache PostQUEL. Da zur damaligen Zeit SQL verbreiteter war
als PostQUEL, entwickelte Hughes mSQL, einen Übersetzer, der SQL in
PostQUEL übersetzte. Jedoch wurde die Arbeit mit der Datenbank immer
langsamer, je größer sie wurde.
15)
Vgl. [13]
20
Zur gleichen Zeit entwickelte die Firma TCX eine webbasierende Anwendung
zur Verwaltung von Datenbanken mit dem Namen UNIREG. Aufgrund der o.g.
Probleme mit mSQL entwickelte Michael Widenius im Jahr 1994 eine eigene
Middleware Datenbank auf der Basis von mSQL und UNIREG. Die erste
Version von MySQL war 1995 fertig, nannte sich MySQL 1.0 und wurde als
Open Source veröffentlicht.
Da MySQL für viele Betriebssysteme verfügbar und Open Source war, also frei
erhältlich, wuchsen die Marktanteile bis zum Jahr 2000 von MySQL, und immer
mehr Nutzer wendeten MySQL an. Ebenfalls zur Verbreitung von MySQL trägt
der Boom von Linux bei, da MySQL ein Bestandteil von Linux-Distributionen ist.
So wird geschätzt, dass es ca. 4 Millionen Installationen weltweit gibt und mehr
als 25.000-mal heruntergeladen wird16).
Die aktuellste Version von MySQL ist MySQL 4.1 alpha. Die Version MySQL
5.0 ist mit einigen Erweiterungen geplant17).
2.3.2 Einschränkungen von SQL unter MySQL
Wie bereits erwähnt, benutzt MySQL in der Version 4.0 den ANSI-SQL/92Standard, aber mit Einschränkungen. Auf diese soll im Folgenden näher
eingegangen werden.
MySQL ist nicht in der Lage SubSelects in der Form des folgenden Beispiels
durchzuführen:
SELECT * FROM Tabelle1 WHERE x IN (SELECT y FROM Tabelle2)
Dies kann durch das anlegen einer temporären Datei oder durch zusätzlichen
Code in einer externen Programmiersprache umgangen werden.
Ein großes Problem ist, dass MySQL nicht die referentielle Integrität umsetzen
kann. MySQL kennt zwar Fremdschlüssel, welche die Verbindung zweier
Tabellen möglich machen, ist aber nicht in der Lage dadurch die referentielle
16)
Vgl. [On8]
17)
Vgl. [On2]
21
Integrität zu sichern. Wenn eine Tabelle gelöscht wird und ein Fremdschlüssel
dieser Tabelle noch in einer anderen existiert, kümmert sich MySQL nicht
darum und lässt den Verweis auf die gelöschte Tabelle stehen, wie ein Link
dessen Quelle nicht mehr existiert. Das ist ein Problem bei Abfragen, die über
diesen Fremdschlüssel gemacht werden. Da die Tabelle des Fremdschlüssels
nicht mehr existiert, kann es dabei zu erheblichen Problemen kommen. Hierbei
muss der Programmierer beim Anwenden von Änderungs- und Löschbefehlen
die Integrität der Daten sicherstellen und ggf. solche Beziehungen zwischen
einzelnen Tabellen prüfen.
Weiterhin unterstützt MySQL keine Views, Stored Procedures, Trigger, und es
sind keine Transaktionen in MySQL möglich, diese Begriffe sollen aber an
dieser Stelle nicht näher erläutert werden.
2.4 XML
Kein anderes Stichwort wurde in den letzten Jahren häufiger in der IT-Branche
genannt wie XML, die Extensible Markup Language („erweiterte
Auszeichnungssprache“). XML gehört zu den Auszeichnungssprachen. Diese
definieren und beschreiben die Struktur von Text bzw. Daten mit Hilfe von sog.
Tags, nicht aber dessen Formatierung. Dabei zeichnet sich XML durch seine
Erweiterbarkeit aus, was bedeutet, dass es in XML möglich ist eine eigene
Struktur von Daten durch Definition von Tags festzulegen.
Dabei ist die wichtigste Anwendung von XML die Speicherung von
strukturierten Daten.
2.4.1 Geschichte
Die Idee der Auszeichnungssprachen stammt aus dem Druck- und
Verlagswesen. Sie existiert bereits seit etwa 50 Jahren. Damals wurden
Textpassagen zur Layoutbeschreibung ausgezeichnet. In den sechziger Jahren
wurde an einer Sprache zur Beschreibung der Struktur und des Inhaltes von
Dokumenten gearbeitet. Es entstand die SGML („Standard Generalized Markup
Language“). 1986 wurde eine Version des entwickelten Standards von der ISO
übernommen. Jedoch stand einem breiten Einsatz von SGML die hohe
Komplexität und der Mangel an entsprechenden Editoren entgegen.
22
Erst mit der Entwicklung des WorldWideWeb und HTML („Hyper Text Markup
Language“) als Anwendung von SGML wurde ein Meilenstein in der
Entwicklung der Auszeichnungssprachen geschaffen. HTML war zwar leicht zu
handhaben, jedoch konnten die Daten nicht von der Formatierung getrennt
werden. Eine Alternative war die Entwicklung von XML18) 19).
2.4.2 Aufbau und Struktur
XML zeichnet durch die Schaffung einer eigenen Struktur in einem Dokument
aus. Jedes XML-Dokument besitzt eine logische und eine physische Struktur.
Die logische Struktur definiert die einzelnen Elemente eines Dokuments und in
welcher Reihenfolge sie vorkommen sollen. Hingegen beinhaltet die physische
Struktur die Daten, die verwendet werden sollen.
Die logische Struktur eines XML-Dokumentes drückt sich also in dem Aufbau
des Dokuments aus. Das erste Element in einem XML-Dokument ist ein
Dokumentenkopf, der zwei optionale Elemente enthält, die XML-Deklaration
und die Dokumententyp-Deklaration. Die XML-Deklaration identifiziert die
Version der XML-Spezifikation, die in dem Dokument benutzt wird. Diese Zeile
muss klein geschrieben werden, wie im folgenden Beispiel zu sehen ist:
<?xml version="1.0"?>
Nach der XML-Deklaration folgt die Dokumenttyp-Deklaration. Sie definiert die
grammatischen Regeln bzw. die Document Type Definition (DTD) des
Dokuments. Die Definition der Regeln einer DTD soll an späterer Stelle erläutert
werden. Die Dokumententyp-Deklaration kann auch auf eine externe Datei
verweisen, wie das folgende Beispiel zeigt:
<!DOCTYPE Musik Katalog "Musik.dtd">
Die Dokumententyp-Deklaration muss immer nach der XML-Deklaration und vor
dem Dokument-Element stehen. Das Dokument-Element, auch Root-Tag oder
Wurzelelement genannt, kann in weitere Unterelemente zergliedert werden. Es
18)
Vgl. [2]
19)
Vgl. [11]
23
verhält sich wie bei einem Buch, welches in Komponenten, wie z.B. Kapitel
zergliedert, werden kann. Diese Komponenten können wiederum weiter in
Überschriften, Absätze oder Abbildungen zerlegt werden. So entsteht eine
Baumstruktur des Dokuments. Die Elemente in der Baumstruktur können noch
zusätzliche Attribute besitzen, die spezielle Eigenschaften bezeichnen.
<SONGLIST KATEGORIE=”Pop”>
<SONG>
<TITLE>Hot Cop</TITLE>
<COMPOSER>Jacques Morali</COMPOSER>
<COMPOSER>Henri Belolo</COMPOSER>
<COMPOSER>Victor Willis</COMPOSER>
<PUBLISHER>PolyGram Records</PUBLISHER>
<LENGTH>6:20</LENGTH>
<YEAR>1978</YEAR>
<ARTIST>Village People</ARTIST>
</SONG>
<SONG>
...
</SONG>
...
</SONGLIST>
Diese Baumstruktur wird in der XML-Syntax durch das Prinzip der
Verschachtelung realisiert. Die Verschachtelung ist die Einbettung eines
Objekts in ein anderes. Beispielsweise kann ein Wurzelelement weitere
Elemente bzw. Dokumente enthalten. Diese Dokumente können wiederum
weitere Elemente besitzen, usw. So wird durch die Verschachtelung eine
Erbschaftsbeziehung hergestellt20).
Die physikalische Struktur definiert den gesamten Inhalt eines Dokuments.
Dabei werden kleine Speichereinheiten definiert, die Entities. Sie werden durch
einen eindeutigen Name identifiziert und enthalten ihren Wert. In der logischen
Struktur werden die Entities in der Dokumententyp-Definition, kurz der DTD,
deklariert und werden dann im Wurzelelement referenziert. Dabei wird dem
XML-Prozessor durch die Entitydeklaration mitgeteilt, mit welcher Art von Inhalt
das Entity gefüllt werden soll. Das Definieren einer Entitydeklaration wird im
Kapitel 2.4.3 Dokumententyp-Definition erläutert. Das Abrufen und das
20)
Vgl. [11]
24
Verwenden des Inhalts des Entities wird dem Prozessor durch die
Entityreferenzierung mitgeteilt.
Eine Entityreferenzierung besteht aus einem kaufmännischem Und („ & “), dem
Namen des Entities und abschließendend aus einem Semikolon („ ; “), so dass
im folgenden Bespiel ein Entity mit dem Namen „Compbest“ referenziert wird:
<BESTCOMP>Der beste Komponist ist &Compbest;</ BESTCOMP>
Bestimmte Zeichen (<,>, &, “, /) werden in XML für die Markierung des
Dokumentes benötigt und können nicht für den Inhalt verwendet werden. Für
die Nutzung dieser Zeichen als Inhalt sind speziell vordefinierte Entities
vorhanden. So ist für eine öffnende spitze Klammer die Zeichenkette &lt; als
Entityreferenzierung definiert. Weitere vordefinierte Entities befinden sich in der
Tabelle 1 Vordefinierte Entities.
Tabelle 1 Vordefinierte Entities
2.4.2.1
Markup
Bisher wurde auf die logische und physische Struktur eines XML-Dokumentes
eingegangen. Es wurde aber noch nicht erläutert wie die logische und
physische Struktur zusammengeführt werden. Dies soll nun erklärt werden.
Die in der DTD deklarierten Elemente werden in der Struktur von XML in so
genannte Tags eingeschlossen. Tags beinhalten also den Elementennamen
und werden durch spitze Klammern begrenzt. Zu jedem Element gehören ein
Start- und ein End-Tag. Dabei wird im End-Tag dem Elementennamen ein
Slash („/“) vorangestellt. Ein Elementenname muss mit einem Buchstaben
beginnen, und danach kann jedes beliebige Zeichen folgen. Dabei ist aber die
Groß- und Kleinschreibung zu beachten, da die XML-Prozessoren diese
unterscheiden. Zwischen den Tags der logischen Struktur wird dann der Inhalt
der physischen Struktur eingefügt. Dies geschieht durch vordefinierte Entities
25
oder durch Entityreferenzierung, wie bereits oben erwähnt wurde. Das folgende
Beispiel zeigt ein Element mit Inhalt, Start- und End-Tag:
<COMPOSER>Jacques Morali</COMPOSER>
Start-Tag
Inhalt
End-Tag
Eine besondere Form des Tags in XML nimmt das Empty-Element-Tag an.
Dieses Tag fasst Start- und Eng-Tag zusammen und es enthält keinen Inhalt.
Das Empty-Element besteht nur aus einem Tag, bei dem auf den Tagnamen
ein Slash („/“)folgt, so dass sich folgendes allgemeines Beispiel ergibt:
<Elementname/>
XML erlaubt zusätzlich das Definieren von Attributen zu einem Element. Sie
stellen eine Verknüpfung mit einem Element dar. Ein Attribut wird im Start-Tag
eines Elementes definiert. Dabei folgt auf den Attributsnamen ein
Gleichheitszeichen („=“). Anschließend steht der Attributswert, der in
Hochkommas eingeschlossen wird. Im Folgenden wird ein allgemeines Beispiel
eines Elementes und eines Empty-Elementes mit einem Attribut dargestellt:
<Elementname Attribut=”Attributswert”>Elementeninhalt</Elementname>
<Elementname Attribut=”Attributswert”/>
In XML sind auch Kommentare erlaubt. Diese werden nicht als Inhalt erkannt.
Sie werden aber zum Markup dazugezählt. Ein Kommentar wird wie folgt
dargestellt:
<!-- Kommentare -->
Die so entstandene Abbildung der logischen Struktur und dessen entstandene
Verbindung mit der physischen Struktur nennt man Markup. Es ist die
Gesamtheit aller Tags. Wenn die Tags die Beschreibung für den Inhalt liefern,
so spricht man von deskriptivem Markup (deskriptiv=beschreiben).
26
2.4.2.2
Wohlgeformtheit und Gültigkeit
Jede Sprache hat Regeln, nach der sie aufgebaut ist, und aus der sich eine
Grammatik bildet. Ein Dokument, das ein verständliches Markup besitzt, nennt
man ein wohlgeformtes Dokument. Dabei unterstützt die Wohlgeformtheit ein
Prinzip von XML: das einfache Erzeugen von XML, da hier keine Definition
einer DTD notwendig ist. Die Wohlgeformtheit zielt vor allem auf die logische
Struktur ab. Dabei wird auf das Prinzip der Verschachtelung zurückgegangen,
wobei jedes Dokument ein Wurzelelement besitzt, in dem alle anderen
Elemente verschachtelt sind. Bei der Verschachtelung im Wurzelelement muss
beachtet werden, dass ein Element einer Ebene zunächst durch ein End-Tag
geschlossen wird, bevor eine anderes Element der gleichen Ebene geöffnet
wird. So ergibt sich, dass jedes Element genau ein Elternelement besitzt, und
dass jedes Element kein, ein oder mehrere Unterelemente haben kann.
Ein Dokument besitzt dann Gültigkeit, wenn es wohlgeformt ist und eine
Markup-Deklaration, für das Dokument, in einer DTD vorliegt.
Dabei wird von einem gültigen XML-Dokument die Deklaration in der DTD
streng beachtet, das bedeutet ein Dokument, das als gültig bezeichnet wird,
nach einer DTD validiert sein muss. Die Validisierung wird durch einen XMLProzessor vorgenommen. Auf die Definition einer DTD soll im folgenden Kapitel
näher eingegangen werden.
Der XML-Prozessor, auch Parser genannt, ist eine Application, welche die
Hauptaufgabe hat XML-Dokumente zu parsen und zu validieren, wie bereits
erläutert. Der XML-Prozessor kann auch den Inhalt von Dokumenten in ein
Format bringen, das von Anwendungen verwendet werden kann. Somit fungiert
der XML-Prozessor als eine Art Vermittlungsschicht zwischen den Daten und
der GUI21) 22).
2.4.3 Dokumententyp-Definition
Die DTD ist eine Art Regelwerk. Sie definiert Elementtypen, Attribute, Entities
und Notationen. Dabei deklariert sie, welche von diesen Komponenten
21)
Vgl. [5]
22)
Vgl. [11]
27
innerhalb eines Dokumentes und an welchen Stellen diese zur Verfügung
stehen bzw. vorkommen dürfen.
Eine DTD ist für eine organisatorische Standardisierung für ein Dokument von
großer Bedeutung, da sie eine zuverlässige Verarbeitung eines Dokumentes
gewährleistet. Sie kann direkt in dem XML-Dokument oder in einer externen
Datei, einer *.dtd-Datei, definiert werden.
Wie die einzelnen Komponenten eines Dokumentes in einer DTD deklariert
werden, soll an dieser Stelle nicht näher erläutert werden. Stattdessen wird auf
die Anlage 2 verwiesen.
2.5 CSV
CSV ist die Abkürzung für „comma separated values“, das heißt soviel wie
„durch Komma unterteilte Werte“. Das CSV-Format ist ein einfaches TextFormat für den Austausch von Daten zwischen verschiedenen Systemen, wie
z.B. Datenbanken u.ä. Dabei ist kein Datenbanksystem nötig, um dieses
Format einzuhalten, und um Daten aus diesem Format zu lesen und zu
schreiben. Das CSV-Format kann also für den Export und Import von Daten
zwischen verschiedenen Systemen genutzt werden23)24).
Die Speicherung der Daten in einer CSV-Datei erfolgt zeilenweise. In der ersten
Zeile sind die Spaltennamen zu finden, danach folgen zeilenweise die einzelnen
Datensätze. Die Daten sind dabei durch Seperatoren (=Trennzeichen) getrennt.
Gültige Seperatoren sind in der folgenden Tabelle 2 aufgeführt:
Tabelle 2 CSV-Seperatoren
23)
Vgl. [On3]
24)
Vgl. [On4]
Name
Beschreibung
Tab
Tabulatorsprung nach jedem Dateninhalt
Komma (,)
Komma zwischen den Daten
Semikolon (;)
Semikolon zwischen den Daten
Leerzeichen
Leerzeichen zwischen den Daten
28
Da die Daten Leerzeichen oder auch Kommas enthalten können, wird oft das
Semikolon als Seperator eingesetzt. Zusätzlich können die Daten mit Hilfe von
Textbegrenzungszeichen gekennzeichnet werden, sodass folgende Semantik
entsteht, wie in Tabelle 3 zu sehen ist.
Tabelle 3 Beispiele für Textbegrenzungszeichen
Textbegrenzungszeichen Beispiel
Anführungszeichen
"Datenfeld 1";"Datenfeld 2"; … ;"Datenfeld n"
Apostroph
`Datenfeld 1';'Datenfeld 2'; … ;'Datenfeld n'
{kein}
Datenfeld 1;Datenfeld 2; … ;Datenfeld n
Eine CSV-Datei kann man selbstständig erstellen oder aus einer MicrosoftExcel-Tabelle exportieren. Da das CSV-Format leicht zu lesen ist, es
weitestgehend standardisiert wurde und somit viele Anwendungen dieses
Format unterstützen, ist es möglich die Daten aus den verschiedensten
Datenbank-Systemen in eine CSV-Datei zu exportieren und Daten einer CSVDatei in andere Systeme, wie z.B. in eine MySQL-Datenbank oder in XMLDokumente, zu importieren.
Ein weiterer Vorteil ist, dass eine CSV-Datei einem Entity aus dem ERD
entspricht. Somit wird das Exportieren und das Importieren der Daten
vereinfacht.
Dem stehen einige Nachteile entgegen:
•
Es ist nur ein exklusiver Zugriff auf die Daten möglich, das bedeutet, man
hat beim Schreiben und Lesen Zugriff auf alle Daten und nicht nur auf
bestimmte Datenmengen.
•
Weiterhin ist ein großes Problem, dass beim Erstellen einer CSV-Datei
redundante Daten entstehen können, und so die Konsistenz der Daten nicht
mehr gegeben ist.
•
Für CSV-Dateien werden auch keine Funktionen bereitgestellt, sodass z.B.
keine Suche von Daten in der CSV-Datei durchgeführt werden kann.
•
Ebenfalls ist kein Datenschutz vor unberechtigtem Zugriff auf die Daten
einer CSV-Datei vorhanden.
29
•
Da die Daten zeilenweise durch Seperatoren getrennt sind, ist der Umgang
mit einer CSV-Datei teilweise umständlicher als mit einem DatenbankManagementsystem.
•
Durch die Speicherung in einem Text-Format erfolgt keine Komprimierung
der Daten bei der Speicherung.
30
3 Analyse
In diesem Kapitel erfolgt die Analyse des Softwaresystems SiSy® und dessen
vorhandenen Schnittstellen zu anderen Systemen. Weiterhin soll die
Entwicklung einer ODBC-Schnittstelle unter Visual C++ analysiert werden.
Abschließend werden Anforderungen aus den vorangegangenen
Betrachtungen abgeleitet und definiert.
3.1 Simple Systems®
Simple Systems, kurz SiSy®, wurde durch die Firma Laser & Co. Solutions
GmbH entwickelt. Es handelt sich dabei um ein CASE-Tool. CASE bedeutet
Computer Aided Software Engineering, d.h. es unterstützt die
Softwareentwicklung. Es bietet verschiedene Möglichkeiten der Anwendung. So
beinhaltet SiSy® u. a. die Strukturierte Analyse, Struktogrammtechnik und die
Modellierung mit Hilfe der UML. Neben der Unterstützung der
Softwareentwicklung kann SiSy® zur Modellierung von Geschäftsprozessen,
zur Dokumenterstellung nach DIN ISO 9000ff und zur Darstellung von
Aufbauorganisationen genutzt werden.
Diese vielfältigen Möglichkeiten der Modellierung verschiedener Modelle
werden in diversen Vorgehensmodellen zur Verfügung gestellt. So gibt es u. a.
die Vorgehensmodelle der UML, der Strukturierten Techniken, der
Programmierung, des Projektmanagement, des Qualitätsmanagements und das
Vorgehensmodell der Geschäftsprozessmodellierung. Ein Vorgehensmodell der
Geschäftsprozessmodellierung, die „Strategiepyramide“, ist in Abbildung 6
Simple System25) aufgeführt. Hier ist auch der grundsätzlichen Aufbau des
Softwaresystems SiSy® zu sehen. Am oberen Rand befindet sich die
Menüleiste, die verschiedene Funktionen bereitstellt, z. B. das Öffnen des
Navigators oder des Assistenten. Der Navigator, auf der linken Seite, ist eine
Art Explorer. Er zeigt die Projektstruktur in einem Ordnerbaum. Darunter
befindet sich der Assistent. Er ist eine statische Hilfe, die Tipps und Vorlagen
zur jeweiligen Sicht in SiSy® anbietet. Das Diagrammfenster ist hier das größte
25)
Vgl. [So1]
31
Fenster. In diesem kann der Nutzer Objekte anlegen, die in der Objektbibliothek
auswählbar sind. Zu jedem Objekt kann eine Beschreibung hinzugefügt werden,
die beim Anklicken des Objekts im Beschreibungsfenster angezeigt wird.
Abbildung 6 Simple System
Zur Erweiterung des Tools SiSy® können zusätzlich Add-Ons erworben
werden, die spezielle Funktionen für SiSy® anbieten, so z.B. den HTML-Export.
Es sind bereits Schnittstellen vorhanden, um Daten aus SiSy® in andere
Systeme zu transferieren, wie z.B. zu MS Word 2000, MS Project 2000 und in
die Sprache HTML. Um eine eindeutige Identifizierung eines Add-Ons zu
ermöglichen, wurde durch die Laser & Co. Solutions GmbH eine
Namenskonvention eingeführt. Es wurde festgelegt, dass sich die Namen der
Dateien eines Add-Ons aus zwei Teilen zusammensetzen, dem Add-On-Namen
und dem Sichtnamen. Der Add-On-Name bezieht sich meist auf das
Vorgehensmodell, in dem die Funktionalität des Add-Ons installiert wird. So
wurde beispielsweise für das Add-On „Projektmanagement“ das Kürzel „pm“
und für die Sicht des „Netzplanes“ das Kürzel „npt“ eingeführt, so dass sich für
die Dateien der Sicht „Netzplan“ im Vorgehensmodell „Projektmanagement“ der
Dateiname „pm_npt.*“ ergibt.
32
3.1.1 Repository von SiSy®
Ein Repository ist eine spezielle Datenbank für Modellierungs- bzw. CASETools, dessen Hauptaufgabe es ist die Modellinformationen und
Entwicklungsdaten zu speichern. Das Repository von SiSy® besitzt
objektorientierte Merkmale; d.h. die strukturierte Speicherung der Objekte wird
besser unterstützt als in relationalen Datenbanken. Die Speicherung der
Objekte erfolgt in einem Objektkern. Dieser Kern enthält Informationen über
Nummer, Typ und Subtyp des Objekts, Name, Beschreibung und Datum der
Erstellung, verschiedene Flags, Links auf Vorgänger- Nachfolger-Strukturen
(VG/NF-Strukturen) und Links auf objektspezifische Daten. Dabei ist im
Repository auch die Bildung von Referenzen der Objekte möglich, wobei die
Referenzen existentiell vom Original abhängig sind. In einem Objekt werden
auch diagrammspezifische Daten abgelegt, da es in mehreren Diagrammen
auftreten kann. Diese Daten werden strukturiert abgespeichert. In den VG/NFStrukturen werden Informationen zu Beziehungen zwischen den Objekten
gespeichert. Diese Beziehungen umfassen z.B. die Hierarchisierung von
Diagrammen oder die Verbindung von Objekten durch Kanten. Die Abbildung 7
zeigt eine Grobstruktur des Repository von SiSy®.
Auf die Objekte und deren Daten im Repository kann mit Hilfe der internen
Sprache SiSyBasic und den SiSy-Basic-Klassen zugegriffen werden.
Objektreferenzen
Strukturierte
Objektdaten
VG/NF-Strukturen
Abbildung 7 Grobstruktur des Repository von SiSy®
Objektdaten
33
3.1.2 SiSyBasic
SiSyBasic ist die interne Programmiersprache für SiSy®. Sie ist anwenderorientiert, das bedeutet, dass SiSyBasic so konzipiert wurde, dass Anwender,
z.B. die Kompetenzpartner der Laser & Co. Solutions GmbH, mit Hilfe von
SiSyBasic schnell und einfach eigene Add-Ons für SiSy® realisieren können.
SiSyBasic wird durch SiSyBasic-Klassen interpretiert, die durch die Datei
“Assi.exe“ bereitgestellt werden. Diese Klassen stellen eine Art Interpreter dar,
der die Struktur des SiSyBasic verarbeitet, ohne es vorher in
Maschinensprache umzuwandeln. Die SiSyBasic-Klassen wurden in der
Sprache C++ entwickelt. Sie enthalten auch Funktionen zur Verarbeitung der,
im Repository (siehe Kapitel 3.1.1) gespeicherten Daten. Die SiSyBasic-Skripte
werden in FLD- und in FLQ-Dateien hinterlegt. Die in SiSyBasic entwickelten
Funktionen können durch den Dialog eines Objekts in SiSy® angesprochen
werden bzw. unterstützen die Funktionalität des Dialoges.
3.1.3 Schnittstellen in SiSy®
In das Softwaresystem SiSy® sind bereits einige Schnittstellen integriert. So
gibt es Schnittstellen zum Softwareprodukt MS-Word, zu diversen Compilern
und eine Schnittstelle zu DBMS die SQL-Statements umsetzen können.
Ausgewählte Schnittstellen sollen im Folgenden näher analysiert werden.
3.1.3.1
Schnittstelle zu SQL-Standard konformen DBMS
Die Schnittstelle zu Datenbankmanagementsystemen, die SQL-Statements
verarbeiten können, wurde mit Hilfe der ODBC-Schnittstelle von Windows in der
Sprache C realisiert. Dabei modelliert der SiSy®-Nutzer zunächst ein
Datenmodell im ERD in SiSy®, wie ein Beispiel in Abbildung 8 zeigt.
34
Computer
Computer
Abteilung
n
wird
zugeordnet
1
Abteilung
Abbildung 8 Beispiel Entity-Relationship-Diagramm
Bevor durch den Nutzer die Datenbank generiert wird und der SiSy-ODBCDialog geöffnet wird, wird eine Prüfung des erstellten Entity-RelationshipDiagrammes vorgenommen. Bei einem Fehler oder semantisch unkorrekter
Modellierung erscheint eine Meldung. Danach wird automatisch der SiSyODBC-Dialog geöffnet. Im SiSy-ODBC-Dialog kann man die Datenquelle, in die
das ERD überführt werden soll, auswählen. Die Auswahl der Datenquelle bzw.
des Datenbankformates wird über den Dialog der ODBC-Schnittstelle von
Windows vorgenommen. Weiterhin können im SiSy-ODBC-Dialog Tabellen-,
Feldnamen und die zugehörigen Typen, die in der zu erzeugenden Datenbank
verwendet werden sollen, über jeweilige Schalter festgelegt werden. Die
Abbildung 9 26) zeigt den SiSy-ODBC-Dialog analog zum genannten Bespiel.
Abbildung 9 Der SiSy-ODBC-Dialog
26)
Vgl. [So1]
35
Nachdem die Datenquelle ausgewählt und die Bezeichner und Typen festgelegt
wurden, können die SQL-Statements mit Datendefinition- und
Datenmanipulationsanweisungen generiert werden. Die Anweisungen
erscheinen dann in einem editierbaren Dialogfeld, so dass die Statements
durch den Nutzer an dieser Stelle noch einmal bearbeitet werden können.
Zuletzt kann man die Statements ausführen und somit eine Datenbank erstellen
bzw. verändern.
Bei dieser Schnittstelle werden aber nur SQL-Statements nach dem ANSISQL/92-Standard erzeugt, so dass auch nur Systeme bearbeitet werden
können, die SQL-Statements verstehen. Wenn man eine Datenquelle, z.B.
CSV-Dateien, auswählt die keine SQL-Statements verarbeiten können, so
können diese auch nicht erstellt werden.
3.1.3.2
Schnittstelle zum Compiler „DJGPP“
SiSy® ermöglicht es kleine bis mittelgroße Programme in den Sprachen C,
C++, C#, Java, Pascal und Assembler zu erstellen. Diese Programme können
mit Hilfe von Compilern kompiliert und gelinkt werden. Für die Sprache C und
C++ wird in SiSy® der Compiler „DJGPP“ verwendet.
Das Programmieren ist im Struktogrammeditor und im Vorgehensmodell
„Programmierung“ möglich. Im Vorgehensmodell „Programmierung“ kann man
für jedes einzelne Programm ein Objekt erstellen. Auf diesem Objekt hinterlegt
man den Quelltext zu dem Programm, in der jeweiligen Sprache.
36
Im Dialog des Objekts kann dessen Name festgelegt und die gewünschte
Sprache ausgewählt werden. Daraus werden mit Hilfe von SiSyBasicSkripten
Dateiname, Programmname und Speicherort generiert.
Abbildung 10 Dialog zum Programmieren
Über die Schalter im Dialog jedes Objekts kann man eine Datei mit dem
angegebenen Quellcode erzeugen, kompilieren und gegebenenfalls mit
anderen Dateien zu einem ausführbaren Programm linken, wie man in der
Abbildung 10 sehen kann. Die in diesem Dialog benutzten Dialogelemente
werden für den Dialog des Datenexport in Betracht gezogen, da u.a. die
Auswahl der Sprache durch SiSyBasic-Skript aus einer INI-Datei generiert wird.
3.1.3.3
Das Objekt „Aufzählung“
Mit Hilfe des Objekts „Aufzählung“ kann man Informationen von Objekten,
welche in SiSy® modelliert sind, u.a. in Form von Tabellen in das Programm
MS Word überführen. Dieses Objekt befindet sich unter dem Objekt
„Dokumenteninhalt“ in SiSy®. Dort können Dokumente modelliert und in MS
Word generiert werden. Dazu zieht man ein Objekt, unter dem sich die
aufzuzählenden Daten befinden, als „Aufzählung“ in das Diagrammfenster. Im
Dialog dieses „Aufzählen“-Objekts kann man festlegen nach welchen
Objekttypen bzw. in welchen Objekttypen gesucht werden soll. Dieser Dialog ist
ein Wizard-Dialog, in dem der Nutzer sequentiell alle Informationen eingeben
37
muss. Hier kann auch bestimmt werden, welche Eigenschaften der Objekttypen
in den Tabellen gespeichert werden sollen. Dazu wird im Dialog der
„Aufzählung“ die in der Abbildung 11 dargestellte Dialogseite verwendet.
Abbildung 11 Dialogseite des "Aufzählen" Objektes
Beim Generieren des Dokuments aus SiSy® heraus werden, mit Hilfe eines
SiSyBasic-Skripts und unter Verwendung von SiSyBasic-Klassen, die
Informationen aus den Objekten gelesen und dann in die festgelegte Struktur
einer Tabelle gespeichert. Hier sei besonders die Funktion „ScanTree“ der
Klasse „Repo“ erwähnt. Diese Methode sucht nach den gewünschten
Objekttypen, die dann aufgelistet werden.
3.2 Beispiel der Organisationssicht in SiSy®
In diesem Kapitel soll kurz der Aufbau der Sichten und deren Objekte am
Beispiel der Organisationssicht gezeigt werden, und dargelegt werden wie ein
Export von Stellen mit deren Eigenschaften durchgeführt werden könnte.
Die Organisationssicht befindet sich im Vorgehensmodell der
Geschäftsprozessmodellierung. Zur Modellierung der Organisation eines
Unternehmens kann das Objekt „Organisationssicht“ benutzt werden. Dieses
38
Objekt kann man durch ein Organigramm verfeinern. Dort kann man die
Organisation einer Unternehmung modellieren, in dem man
Organisationseinheiten, Stellen, interne und externe Personen und Rollen
anlegt, wie ein Beispiel in Abbildung 12 Beispiel der Organisationssicht27) zeigt.
Abbildung 12 Beispiel der Organisationssicht
Beim Anlegen der einzelnen Objekte, wie „Stelle“, „Organisationseinheit“ u.s.w.,
ist es möglich Daten zu speichern. So kann man beispielsweise in einer Stelle
neben dem Namen, einer Abkürzung und der Beschreibung, auch
Telefonnummer u.s.w. im Dialog des Objektes hinterlegen. Den Dialog mit den
verschiedenen Eigenschaften des Objektes „Stelle“, welche möglich zu
definieren sind, sehen Sie in der Abbildung 13.
27)
Vgl. [So1]
39
Abbildung 13 Dialogseite "zusätzliche Informationen" der
Stelle
Diese Informationen können durch SiSyBasic-Skript, z.B. durch das
„Aufzählen“-Objekt, aus den Objekten ausgelesen und bearbeitet bzw.
verarbeitet werden.
Bei einem Export von Stellen und deren Eigenschaften müsste man zuerst ein
Objekt festgelegt werden auf dem die Suche nach Stellen begonnen werden
soll. Das wäre in diesem Bespiel das Objekt der „Organisationssicht“. Hier kann
man in das Organigrammen „Abtauchen“ und nach dem Objekttyp „Stelle“
suchen. Wenn man alle Objekte des Typs „Stelle“ gefunden hat, könnten die
Eigenschaften dieser exportiert und gespeichert werden.
3.3 ODBC unter Visual C++
Da durch SiSyBasic-Skript keine Verbindung zu eine Datenquelle hergestellt
werden kann bzw. es nicht durch SiSyBasic-Funktionen möglich ist Daten direkt
in eine Datenbank zu generieren muss diese Funktionalität durch eine
SiSyBasic-Klasse bereitgestellt werden. Diese Klasse muss in C++ entwickelt
werden.
Dieses Kapitel soll kurz die Möglichkeiten des Einsatzes von ODBC unter
Visual C++ darlegen. Der Programmierer hat grundsätzlich zwei Möglichkeiten
mit Hilfe der Bibliothek „ODBC32.LIB“ oder den MFC-ODBC-Klassen.
40
3.3.1 Die Bibliothek „ODBC32.LIB“
In der Bibliothek „ODBC32.LIB“ wird über drei verschiedene Handles mit der
Verbindung zu ODBC gearbeitet. Ein Handle ist eine Anwendungsvariable in
der das System Informationen über eine Anwendung oder ein Objekt ablegen
kann. Die Bibliothek „ODBC32.LIB“ verwendet Umgebungshandles,
Verbindungshandles und Anweisungshandles, die hierarchisch angeordnet
sind, wie in Abbildung 14 zu sehen ist.
Umgebungshandle
Verbindungshandle
Verbindungshandle
Anweisungs-
Anweisungs-
Anweisungs-
Anweisungs-
handle
handle
handle
handle
Abbildung 14 Die Hierarchie der Handles
ODBC verwendet das Handle-Konzept, um eine widerstandsfähige
Fehlerbehandlung sicherzustellen. Dabei haben die einzelnen Handles folgende
Funktionen28):
1. Umgebungshandle (henv – Handle to Enviroment):
Dies ist ein globales Kontext-Handle und muss als erstes allokiert werden.
Am Ende der Verbindung wird das Handle wieder freigegeben. Es stellt
einen globalen Platzhalter für alle anderen Handles dar und besitzt darüber
hinaus folgende Funktionalität:
28)
-
übergibt alle Felder in der Umgebung an die Funktion „SQLError()“
-
Kontext-Handle für die Methode „SQLDataSources()“
-
Kontext-Handle für die Methode „SQLDrivers()“
-
verwaltet die Transaktionen
[4]
41
2. Verbindungshandle (hdbc – Handle to Database Connection):
Dieses Handle verwaltet alle Informationen über eine Verbindung. Dabei
wird mit Hilfe der Funktion „SQLAllocConnect( henv, &hdbc )“ ein
Verbindungshandle einem Umgebungshandle zugeordnet und mit
„SQLFreeConnect()“ wieder freigegeben. Weiterhin wird dieses Handle
benötigt für:
-
das Einrichten einer Verbindung durch „SqlConnect()“ und
„SQLBrowseConnect()“
-
den Abbau der Verbindung durch „SQLDisconnect()“
-
die Übergabe aller aufgetretenen Fehler an „SQLError()“
-
das Setzen der Verbindungsoptionen mit der Funktion
„SQLSetConnectOption()“
-
die Verwaltung der Transaktionen und
-
als Argument für die Informationsfunktion „SQLGetInfo()“ und
„SqlGetFunctions()“
3. Anweisungshandle (hstmt – Handle to Statement):
Das Anweisungshandle ist für die Verarbeitung der SQL-Anweisungen und
Katalogfunktionen zuständig. Es wird durch die Methode „SQLAllocStmt()“
erzeugt und durch „SQLFreeStmt()“ wieder freigegeben. Jedes
Anweisungshandle ist hierarchisch unter dem Verbindungshandle
angeordnet und wie deshalb nur einem Verbindungshandle zugeordnet. Es
wird u.a. dazu verwendet um Statusinformationen zu verwalten.
Aus dieser Arbeit und der Hierarchisierung der Handles folgt ein grundsätzlicher
Ablauf zum Verbindungsaufbau zu einer Datenquelle in einer Anwendung, der
in der Abbildung 15 verdeutlicht ist:
42
Anwendung
Allokation der
Umgebungs- und
Verbindungshandles
Aufruf einer
Verbindungsfunktion
Aufruf der
Treiberfuntionen
zur Allokation der
Handles
Laden des Treibers
Einrichten der
Verbindung zum
Server
Ausführung der
SQL-Anweisung
Freigabe der
Handles
Abbildung 15 Ablauf eines Verbindungsaufbaus
Zuerst werden das Umgebungshandle und das Verbindungshandle durch die
Funktionen „SQLAllocEnv()“ und „SQLAllocConnect()“ allokiert. Dies ist nur eine
Interaktion zwischen der Anwendung und dem Treibermanager.
Die Entwicklung von ODBC sah eine maximale Flexibilität vor. Deshalb macht
ODBC es möglich die Verbindungsoptionen in einem separaten
Konfigurationsprozess oder dynamisch zur Laufzeit zu bestimmen. Dazu
werden drei verschiedene Methoden zum Aufbau einer Verbindung angeboten:
die Funktionen „SQLConnect()“, „SQLDriverConnect()“ und
„SQLBrowseConnect()“.
Die Funktion „SQLConnect()“ verlangt als Inputparameter den Namen der
Datenquelle, einen User-ID und ein Passwort. Daraus folgt, das man in der
Anwendung Sicherheitsinformationen abfragt bzw. müssten diese in der
Anwendung kodiert sein. Diese Funktion wird für den Aufbau einer direkten
43
Verbindung von einem PS zu einem DBMS genutzt und ist die einzige Funktion,
die im Call Level Interface des ISO-Standards enthalten ist.
„SQLDriverConnect()“ ist die gebräuchlichste Art des Verbindungsaufbaus.
Diese Funktion übernimmt den gesamten Verbindungsprozess und fragt alle
nötigen Informationen vom Benutzer mit Hilfe eines Dialoges ab. Hier steht dem
Entwickler frei, wie viele Informationen kodiert werden, denn die fehlenden
Informationen werden vom Benutzer abgefragt.
Die Funktion „SQLBrowseConnect()“ stellt dieselben Möglichkeiten zur
Verfügung wie „SQLDriverConnect()“. Zusätzlich kann mit dieser Funktion das
visuelle Erscheinungsbild während der Interaktion mit dem Nutzer beeinflusst
werden. Dabei kann die Anwendung Ihr eigenes Dialogfeld benutzen und die
von „SQLBrowseConnect()“ spezifizierten Informationen benutzen. Diese
werden als Attribut-Wert-Paar zurückgeliefert. Wenn die Anwendung alle
Informationen ermittelt hat, kann „SQLBrowseConnect()“ mit diesen erneut
aufgerufen und die Verbindung aufgebaut werden.
Das Ausführen der SQL-Befehle bietet ebenfalls drei verschiedene
Möglichkeiten:
1. ExecDirect:
Das Modell „ExecDirect“ fasst alle Schritte in einem einzigen
Funktionsaufruf von SQLExecDirect zusammen. Dabei werden die SQLAnweisungen spezifiziert, an den Server gesendet und danach ausgeführt.
Es ist deshalb besonders gut für solche Anweisungen, die nur einmal
ausgeführt werden, geeignet. Nach der Ausführung der SQL-Anweisung
werden die verwendeten Optimierungsinformationen vom DBMS
verworfen.
2. Prepare/Execute- Vorbereiten/Ausführen-Modell:
Dieses Modell unterteilt die Schritte in zwei Teile. Im ersten Teil wird die
SQL-Anweisung vorbereitet; das bedeutet, sie wird an den Server
geschickt, geparst und optimiert (SQLPrepare). Zeitlich unabhängig kann
dann in einem zweiten Schritt die so vorbereitete Anweisung ausgeführt
werden (SQLExecute). Dabei wird nicht die eigentliche SQL-Anweisung an
den Server gesendet, sondern ein Verweis der Anweisung, so dass der
44
vorhandene Zugriffsplan unmittelbar ausgeführt werden kann. Erst wenn
die Anwendung beendet wurde, wird der Zugriffsplan im DBMS gelöscht.
Dieses Modell findet Anwendung bei Anweisungen, die mehrmals
ausgeführt werden oder wenn diese dynamisch zur Laufzeit generiert
werden.
3. Gespeicherte Prozeduren:
Diese Modell ist dem Prepare/Execute-Modell sehr ähnlich. Hier kann
jedoch der Vorbereitungsschritt abgekoppelt von der Anwendung erfolgen
und die gespeicherte Prozedur über die Laufzeit der Anwendung erhalten
bleiben. Zugriffsberechtigungen erfolgen in diesem Modell nur anhand der
User-ID, im Gegensatz zu statischem SQL, wo dies auch
anwendungsabhängig möglich ist.
Bei der Ausführung der Anweisungen unterscheidet man noch in zwei
verschiedene Modi, in die asynchrone und die synchrone Ausführung. Bei der
synchronen Ausführung, die standardmäßig eingestellt ist, wird die Steuerung
erst nach dem Beenden der Funktion an die Anwendung zurückgegeben. Die
asynchrone Ausführung gibt der Anwendung vor der Ausführung der Funktion
die Steuerung zurück, und diese muss dann in gewissen Zeitabständen prüfen,
ob die Funktion bereits beendet ist. Der Modus kann mittels der Funktion
SQLSetConnectOption oder SQLSetStmtOption durch das Setzen des Flags
SQL_ASYNC_ENABLE erfolgen.
3.3.2 MFC-ODBC-Klassen
Die MFC-ODBC-Klassen bieten ebenfalls die Möglichkeit der ODBCProgrammierung. Dabei wird die Funktionalität von ODBC in Klassen
„CDatabase“ und „CRecordset“ gekapselt29).
Durch die Klasse „CDatabase“ kann die Verbindung zu einer Datenbank über
die Funktion „Open()“ hergestellt und mit der Funktion „Close()“ beendet
werden. Dabei nimmt das Attribut „m_hdbc“ das ODBC-Verbindungshandle auf.
Zusätzlich enthält die Klasse „CDatabase“ Operationen zur
Verbindungseinstellung. Dazu verwendet die Klasse einen asynchronen Modus.
29)
Vgl. [On9]
45
Mit Hilfe der Methode „Cancel()“ kann die laufende Abarbeitung unterbrochen
werden. Ebenfalls enthält die Klasse „CDatabase“ Funktionen zur
Transaktionsbearbeitung, wie z.B. die Funktionen „BeginTrans()“ und
„CommitTrans()“. Durch die Operation „ExecuteSQL()“ können SQLAnweisungen abgesetzt werden.
Die Klasse „CRecordSet“ wird durch die Funktion „Open()“ mit einem SQLStatement verbunden und repräsentiert somit diese Anweisung. Die Attribute
dieser Klasse kapseln das Anweisungshandle. Sie enthalten u.a. die Nummern
der Felder und die Parameter im Datensatz. Die Memberfunktion „Open()“, der
Klasse „CRecordSet“, öffnet einen Datensatz. Dabei stehen zwei
Datensatztypen zur Verfügung, Dynasets und Snapshots:
•
Snapshots: Dies ist eine statische Ansicht der Daten. Sie werden in der
Form zum Zeitpunkt ihrer Erstellung dargestellt. Dabei werden
zwischenzeitliche Änderungen nicht berücksichtigt.
•
Dynasets: Dynasets sind die dynamische Ansicht der Daten. Hierbei
werden alle Änderungen von Anwendern berücksichtigt.
Die Methode „Close()“ schließt den Datensatz und somit das
Anweisungshandle. Ebenso stehen in der Klasse „CRecordSet“ zur Ermittlung
der Parameter des Datensatzes weitere Funktionen zur Verfügung, u.a.
„GetStatus()“ und „GetTableName()“. Durch die Operationen „Move()“,
„MoveNext()“, „MoveLast()“ und „MovePrev()“ kann man die einzelnen
Datensätze selektieren. Das Löschen, Bearbeiten, Aktualisieren und
Hinzufügen von Datensätzen kann mit Hilfe der Funktionen „Delete()“, „Edit()“,
„Update()“ und „AddNew()“ durchgeführt werden.
3.4 Anforderungen
In diesem Kapitel wird aus der Analyse des Softwaresystems SiSy® und
dessen Schnittstellen heraus die Funktionalität und die Anforderungen an die
Schnittstelle zu den externen Datenformaten beschrieben.
Die Schnittstelle soll modellierte Daten aus einem oder mehreren Modellen, die
in SiSy® bereitgestellt werden, in ein externes Datenformat überführen. Kurz
gesagt, mit Hilfe der Schnittstelle soll ein Datenexport durchgeführt werden
können.
46
Die Funktionalität der Schnittstelle soll in SiSy® integriert werden und als AddOn in SiSy® installierbar sein. Beim erstellen des Add-Ons müssen auf die
Namens- und Dateikonventionen in SiSy® geachtet werden. Die Anlage 3
enthält diese Dateikonventionen.
Um dem Nutzer die Schnittstelle zugänglich zu machen, muss eine
Benutzeroberfläche bereitgestellt werden. Dazu sollen SiSy-Basic-Dialoge
entworfen werden, die sich an bestehenden Dialogoberflächen und der
Nutzerführung in SiSy® orientieren. Dieser Dialog muss an zentraler Stelle in
SiSy® aufrufbar sein. Er soll die Möglichkeit zur Auswahl des Exportformats
haben. Hier muss auch das Exportverzeichnis bzw. die Exportdatei durch den
Nutzer festgelegt werden können. Des weiteren muss der Dialog eine Liste
bereitstellen in der die zu exportierenden Objekttypen und die Objekttypen, in
welchen nach den zu exportierenden Objekttypen gesucht werden soll,
ausgewählt werden können. Zusätzlich muss der Nutzer in den Dialogen
bestimmen können welche Eigenschaften der Objekte exportiert werden sollen.
Zu den Eigenschaften muss ebenfalls der jeweilige Datentyp durch den Nutzer
bestimmt werden. Um die Handhabung für den Nutzer zu vereinfachen, soll im
Dialog ein Möglichkeit zur Auswahl einer Vorlage gegeben werden. Durch eine
solche Vorlage sollen alle Angaben, wie zu exportierende Objekttypen und zu
exportierende Eigenschaften, bereits voreingestellt sein. Die Einstellungen,
welche der Nutzer vornimmt, sollen auch als Vorlage gespeichert werden
können.
Um die Daten im Dialog einzustellen und zu verarbeiten, muss ein SiSyBasicSkript bereitgestellt werden, welches die Funktionalität des Dialoges
unterstützen muss. Die Funktionen des Skripts müssen die Daten, welche
durch den Nutzer im Dialog festgelegt wurden, in einem geeigneten Format wie
XML, CSV oder MySQL zur Weiterverarbeitung speichern. Hier ist eine
eindeutige Definition der Daten erforderlich.
Um den Export möglich zu machen, müssen Klassen erstellt werden, welche
die zu exportierenden Daten zusammenstellen und sie in das gewählte
Exportformat formatieren und speichern. Die Klassen müssen in der Sprache
47
C++ erstellt werden. Für den Export sollen die Klassen die Daten aus dem
SiSy-Repository auslesen und zwischenspeichern. Die Daten sollen auch durch
diese Klassen in das durch den Nutzer gewählte Format formatiert und
gespeichert werden. Dabei sollen jeweils für die Formate CSV und XML eine
Datei erzeugt werden. Die XML-Dokumente sollen wohlgeformt und gültig
generiert werden, dazu soll zu jedem Dokument eine DTD erstellt werden. Um
Daten in einer MySQL-Datenbank zu speichern soll zusätzlich eine ODBCSchnittstelle genutzt werden. Dazu sollen die durch die MFC bereitgestellten
Klassen genutzt werden. Durch diese ODBC-Schnittstelle soll eine Datenbank
und deren Spalten erzeugt werden und die Daten des Exportes in dieser
gespeichert werden. Dabei sollen konforme Dateien bzw. Statements erzeugt
werden.
So ergeben sich aus den Anforderungen für die Schnittstelle die in der Tabelle
4 folgenden Qualitätsanforderungen.
Tabelle 4 Qualitätsanforderungen
Produktqualität
sehr gut
gut
Funktionalität
x
Zuverlässigkeit
x
befriedigend nicht relevant
Benutzbarkeit
x
Effizienz
x
Änderbarkeit
x
Übertragbarkeit
x
48
4 Entwurf und Realisierung der Schnittstelle
In diesem Kapitel wird der Entwurf der Schnittstelle zwischen dem SiSyRepository und externen Datenformaten aus den Anforderungen der Analyse
abgeleitet und erläutert. Dabei wird zunächst auf die Architektur der
Schnittstelle eingegangen und anschließend die einzelnen Komponenten, wie
z.B. der Dialog, näher betrachtet.
Die Schnittstelle soll als ein Add-On in SiSy® installierbar sein. Da durch die
Schnittstelle ein Datenexport durchgeführt werden soll, wird anhand der SiSyNamenskonvention der Dateiname „Dat_exp.*“ festgelegt. Dabei steht das
Kürzel „Dat“ für Daten und das Kürzel „exp“ für Export, „Datenexport“. Somit ist
eine eindeutige Identifizierung der zugehörigen Dateien zum Add-On
gewährleistet.
Bei dem groben Entwurf der Schnittstelle wurde darauf geachtet, dass die
Schnittstelle leicht zu pflegen und anzupassen ist. So wurde eine Drei-EbenenArchitektur gewählt, welche aus der Betrachtung der Umgebung in SiSy®
hervorgegangen ist. Sie ist in Abbildung 16 sehen.
SiSyBasic-Klassen-Ebene
Assi.exe
SiSyBasic-Dialog-Ebene
Dat_exp.flq
und
Dat_exp.fld
SiSyBasic-Skript-Ebene
Abbildung 16 Die Schichtenarchitektur der Schnittstelle
Die erste Ebene ist die SiSyBasic-Skript-Ebene. Sie erzeugt die Dialog-Ebene
und stellt ihr Funktionen bereit, welche im bzw. durch den Dialog aufgerufen
werden und somit die Funktionalität des Dialoges unterstützen. Die SiSyBasicDialog-Ebene beschränkt sich auf die Schnittstelle zum SiSy®-Nutzer in Form
von den SiSy®-Dialogen. Die Skript-Ebene ist eine Art Schnittstelle zwischen
49
der Dialog-Ebene und der SiSyBasic-Klassen-Ebene. Die Klassen-Ebene
besitzt SiSyBasic-Klassen mit Funktionen, welche die Verarbeitung der
Exportdaten aus dem Repository von SiSy® übernehmen. Dazu werden in der
Klassen-Ebene mehrere Klassen zur Verfügung gestellt, welche den Export der
Daten durchführen. Die wichtigsten Klassen sind dabei die Klasse
„CImportExportDat“ und die Klasse „CTableObj“. Sie werden in der „Assi.exe“
bereitgestellt und benutzen u.a. andere Klassen, die bereits in die „Assi.exe“
implementiert wurden.
Zur besseren Veranschaulichung des Zusammenwirkens der einzelnen
Komponenten wurde das Problem der Schnittstelle zwischen dem SiSy®Repository und ausgewählten externen Datenformaten in einem
Komponentendiagramm, der UML, visualisiert. Der Entwurf der
Komponentenarchitektur der Schnittstelle sehen Sie in der Abbildung 17 Der
Entwurf der Schnittstelle.
SiSy
SiSyBasic-Skript
benutzt
SiSyBasic-Klassen
ruft auf
benutzt
TableObj
benutzt
ImportExportDat
Dialog
liest in
SiSy-Repository
Schnittstelle_1
Schnittstelle_2
externe Datenformate
Nutzer
Schnittstelle_1
XML
Schnittstelle_2
CSV
Schnittstelle_2
SQL
Schnittstelle_2
Abbildung 17 Der Entwurf der Schnittstelle
Hier sehen Sie die Komponente SiSy®, die Komponente der externen
Datenformate und den Nutzer, der hier als Knoten dargestellt wurde. Die
Komponenten besitzen weitere Unterkomponenten, die wichtig für den Entwurf
50
der Schnittstelle sind. Der Nutzer besitzt die „Schnittstelle 1“, die zur
Komponente „Nutzer-Dialog„ führt. Der Nutzerdialog der SiSyBasic-DialogEbene benutzt das SiSyBasic-Skript und dessen Funktionen. Die SiSyBasicKlassen werden durch das SiSyBasic-Skript angesprochen. Sie benutzen sich
gegenseitig und stehen somit auch in Beziehung zueinander. Mit Hilfe der
Komponente „Klasse ImportExportDat“ wird die Schnittstelle zu den externen
Datenformaten, wie XML, CSV und MySQL, hergestellt. Die Klassen-Ebene
wird in Kapitel 4.3 erläutert.
Die Schnittstelle soll über den „Definieren Dialog“ des Projektes aufgerufen
werden können. Dazu wird die Dialogseite „Datenexport“ diesem Dialog beim
installieren des Add-Ons hinzugefügt. Auf dieser Seite befindet sich ein Schalter
über den der „Datenexport“ aufgerufen werden kann. Die Abbildung 18 zeigt
diesen Dialog.
Abbildung 18 Die Dialogseite Datenexport
Durch den Schalter „Datenexport starten“ wird die Skript-Ebene der
Schnittstelle aufgerufen. Diese soll im folgenden Kapitel erläutert werden.
51
4.1 Die Skript-Ebene
Die Skript-Ebene wird durch die Funktion „Dlg_DatExportWizard()“ in der Datei
„dat_exp.flq“ angesprochen. Diese Funktion erzeugt den Dialog und somit die
Schnittstelle des Datenexports zum Nutzer. Die Abbildung 19 zeigt den Ablauf
SiSyBasic
WizardDialog
SiSyPfad holen
Dialog erzeugen
INI-Datei
initialiseren
Dialog aus
INI-Datei holen
Ablauf
Wizard-Dialog
Prüfen ob Export
durchgeführt wurde
[Export durchgeführt]
[Export abgebrochen]
Meldung
erfolgreiche
Durchführung
Meldung Export
abgebrochen
Abbildung 19 Der Ablauf des SiSyBasic-Skripts
dieser Funktion in einem Aktivitätsdiagramm. Durch die Aktion „Ablauf des
Wizard-Dialoges“ wird der Ablauf des Dialoges symbolisiert. Die Dialog-Ebene
und dessen Ablauf wird im Kapitel 4.2 erläutert.
Nachdem der Dialog erzeugt wurde, wird durch die Skript-Ebene eine Instanz
der SiSyBasic-Klasse „ImportExportDat“ erzeugt, die durch die Klassen-Ebene
bereitgestellt wird. Damit kann die Skript-Ebene während der Laufzeit des
Dialoges auf Funktionen der Klassen-Ebene zugreifen. So können alle
Exporteinstellungen des Dialoges, parallel zu dessen Laufzeit, durch Methoden
der Klasse „ImportExportDat“ in der Klassen-Ebene gespeichert werden.
52
Nachdem alle Exportinformationen im Dialog festgelegt wurden und dieser
durch den Schalter „Export starten“ beendet wird, ruft die SiSyBasic-SkriptEbene die Funktion „startExport()“ der SiSyBasic-Klasse „ImportExportDat“ auf
und startet somit den eigentlichen Datenexport. Die Abbildung 20 soll die
Interaktion der Skript-Ebene bei diesem Aufruf deutlich machen.
WizardDialog
Schalter "Export
starten" betätigt
SiSyBasic
Prüfen ob der
Export gestartet
werden soll
ImportExportDat
[Export starten]
Variablen
aufbereiten
setTabellenName
setExportFormat
Prüfen ob
Eigenschaft zum
Exportieren
vorhanden
setExportZiel
[Eigenschaft vorhanden]
Daten einer
Spalte aufbereiten
addSpalte
[keine weitere
Eigenschaft vorhanden]
Prüfen ob weitere
Eigenschaft
vorhanden
Repo.ScanTree
[Export nicht starten]
Prüfen ob Objekte
gefunden
Dialog beenden
[keine Objekte gefunden]
[Objekte gefunden]
Export starten
startExport
Abbildung 20 Der Ablauf der Skript-Ebene beim Starten des Exports
Zunächst werden die Exportdaten wie der Tabellenname, das Exportformat und
das Exportziel in der Klasse „ImportExportDat“ gespeichert. Anschließend
werden die Daten der Exportspalten, wie z.B. Spaltenname, Datentyp und
Primärschlüsseleigenschaft, aufbereitet. Die Spalten mit diesen Daten werden
dann mit Hilfe der Aktion „addSpalte“ einer Tabelle hinzugefügt, dies soll in
Kapitel 4.3 näher erläutert werden.
53
Durch die Aktion „Repo.Scantree“ wird das SiSy®-Repository nach dem zu
exportierenden Objekttyp durchsucht, den der Nutzer im Dialog definiert. Dabei
werden alle Nummern der Objekte dieses Objekttyps in einem Feld gespeichert.
Dieses Feld wird beim Starten des Exports an die Methode „startExport()“ der
Klasse „ImportExportdat“ übergeben.
Die Aktion „startExport“ in der Klasse „ImportExportDat“ repräsentiert den
Ablauf, durch den der Export unter Verwendung weiterer Klassen, der KlassenEbene, durchgeführt wird. Die Klassen-Ebene soll in Kapitel 4.3 näher erläutert
werden.
Desweiteren unterstützt die Skript-Ebene den Dialog u.a. mit Funktionen die
ListBoxen generiert. Dazu soll eine INI-Datei definiert werden. INI-Dateien
können zur Speicherung von systemweiten Daten genutzt werden. Sie
bestehen aus Sektionen und Einträgen in den Sektionen. Die Sektionsnamen
sind in eckige Klammern eingeschlossen. Darunter stehen die zu Sektion
gehörigen Einträge, denen durch ein Gleichheitszeichen ein Wert zugewiesen
wird. Um die Skript-Ebene zu unterstützen und um einfacher diesen
Datenexport um neue, weitere Formate zu erweitern, sollen Format-bezogene
Daten in der „Dat_exp.ini“ gehalten werden. In dieser Datei stehen die
auszuwählenden Formate in einer Sektion „[Formate]“. In einer Sektion
„[DatTyp]“ sollen die auszuwählenden Datentypen der jeweiligen Formate
hinterlegt werden. Dabei werden die Eintrage nummeriert. Die Nummern der
Datentypen entsprechen den Nummern der zugehörigen Formate. Diese
Informationen werden dann zur Laufzeit des Dialoges auf den jeweiligen Seiten
durch Funktionen der Skript-Ebene in den Dialog ausgelesen und dort zur
Auswahl in einer ListBox angeboten. Somit sollen auch neue Formate besser
und einfacher in das Modul eingepflegt werden können.
Weiterhin soll die Skript-Ebene das Laden und Speichern von Vorlagen im
Dialog ermöglichen. Dazu werden *.FLK-Dateien im INI-Format angelegt, wie
es in SiSy® bereits angewendet wird. Diese besitzen die Sektionen „[Setup]“
und „[Werte]“. Die Sektion „[Setup]“ enthält alle allgemeinen Informationen zur
Vorlage, wie z.B. den Vorlagentyp, den Titel der Vorlage und eine Beschreibung
der Einstellungen. In der Sektion „[Werte]“ werden alle Daten bzw.
54
Einstellungen zum Export abgelegt, u.a. Exportobjekttyp und zu exportierende
Eigenschaften mit Datentypen.
Der Dialog, der durch diese Funktionalitäten unterstützt wird, und dessen
Aufbau soll im folgenden Kapitel erläutert werden.
4.2 Die Dialog-Ebene
Beim Entwurf des Dialoges wurde darauf geachtet, dass sich dieser, an der
Nutzerführung und dem Dialogaufbau anderer SiSy®-Komponenten orientiert.
Hier fand vor allem der Dialog des Objekts „Aufzählen“ in SiSy® Beachtung.
Beim Export von Daten aus SiSy® herausmüssen viele Daten erfasst und
aufbereitet werden. Neben dem Festlegen eines Exportformates muss der
Nutzer auch die zu exportierenden Objekte, deren Eigenschaften usw.
bestimmen. Die Tätigkeiten, die der Anwender bzw. Nutzer durchführen muss,
wurden in einem Anwendungsfalldiagramm, das in der Abbildung 21 zu sehen
ist, dargestellt.
Schnittstelle Datenexport
Exportformat
festlegen
Speicherort und
-name festlegen
ODBC-Datenquelle
bestimmen
StartObjekt
festlegen
"Abtauch"-Objekttypen
festlegen
Export-Objekttyp
festlegen
Nutzer
zu exportierende
Eigenschaften der
Objekte festlegen
Export-Eigenschaften
festlegen
Auswahl Vorlage
Vorlage speichern
Export starten
Abbildung 21 Anwendungsfalldiagramm der Schnittstelle
55
Bei dem Entwurf eines Prototypen der Schnittstelle zwischen dem SiSy®Repository und externen Datenformaten wurde festgelegt, dass nur ein
Objekttyp mit dessen Eigenschaften exportiert werden kann. So kann auf der
Seite der Auswahl der zu exportierenden Objekte in der prototypischen
Umsetzung nur ein Objekttyp ausgewählt werden.
Damit der Nutzer alle nötigen Daten richtig und vollständig eingibt, und dazu
eine einfache Nutzerführung bereitgestellt bekommt, wurde ein Wizard-Dialog
für die Schnittstelle gewählt. Der Wizard-Dialog, in SiSy®, ist ein Dialog mit
einer beliebigen Anzahl von Dialogseiten, die durch den Nutzer sequentiell
nacheinander abgearbeitet werden müssen. Beim Entwerfen des Dialoges
wurden weitere ergonomische Aspekte, wie der übersichtliche Aufbau und
Erläuterung der Dialoge, beachtet. Auf jeder Seite des Dialoges können
verschiedene Daten, die für den Export nötig sind, festgelegt werden. Die Daten
jeder einzelnen Seite werden beim Verlassen der Seite durch Funktionen des
SiSyBasic-Skripts auf Korrektheit und Vollständigkeit geprüft. Falls durch den
Nutzer inkonsistente Daten eingegeben werden, erscheint beim Versuch des
Verlassen der Dialogseite eine Meldung, dass die Daten nicht korrekt oder
unvollständig eingegeben wurden. Der Nutzer bleibt dann auf der aktuellen
Dialogseite und kann erst nach korrekter Eingabe der Daten auf der nächsten
Seite mit der Eingabe fortfahren.
Alle Dialogseiten sind in der Anlage 4 zu finden und sind dort komplett
dargestellt. Der Ablauf des Dialoges ist in der Abbildung 22 zusehen. Diese
Abbildung zeigt die Abfolge der Dialogseiten in einem Aktivitätsdiagramm und
verdeutlicht den Ablauf der Eingabe der Exporteinstellungen im Dialog.
56
WizardDialog
Dialog-Seite Tipp
Dialog-Seite
Ausgabeform
[Format MySQL]
Dialog-Seite
ODBCVerbindung
[Format XML oder CSV]
Dialog-Seite Start
Dialog-Seite
Startobjekt
[Vorlage auswählen]
Dialog-Seite
Vorlagenauswahl
[Manuell einstellen]
Dialog-Seite
Abtauchen
Dialog-Seite
Manuell
Dialog-Seite
Exportieren
Dialog-Seiten
Spalten
Dialog-Seite
Speichern als
Vorlage
Dialog-Seite
Übersicht
Abbildung 22 Der Ablauf des Dialoges
Auf der Seite „Tipp“ erhält der Nutzer eine kurze Erläuterung zur Durchführung
des Datenexports. Bei der sequentiellen Abarbeitung des Wizard-Dialoges kann
der Nutzer mit Hilfe de Schalter „Weiter“ und „Zurück“ zwischen den einzelnen
Dialogseiten vor und zurück wechseln. So kommt er zur nächsten Dialogseite
mit dem Schalter „Weiter“. Hier kann der Nutzer das gewünschte Exportformat
und einen Namen für den Export wählen. Dieser Dialog ist in Abbildung 23 zu
sehen. Anhand dieses Dialoges sollen die ergonomischen Aspekte deutlich
gemacht werden. Der Dialog ist einfach und leicht überschaubar aufgebaut.
Der Nutzer arbeitet den Dialog von oben nach unten ab, so wie die bevorzugte
Leserichtung eines Menschen ist. Zuerst wählt der Nutzer das Exportformat aus
57
einer Listbox aus und vergibt anschließend einen Namen für den Export. Aus
diesen Daten werden Dateiname und das Verzeichnis des Exportes generiert.
Durch den Schalter „Verzeichnis wählen“ kann der Nutzer das Verzeichnis
manuell festlegen.
Abbildung 23 Die Dialogseite-"Ausgabeform"
Wenn der Nutzer das Exportformat „MySQL“ gewählt hat, kommt er durch den
Schalter „Weiter“ zur Seite „ODBCVerbindung“. Dort kann die Datenquelle
ausgewählt werden. Bei der Auswahl eines anderen Formats gelangt der
Nutzer sofort zur Seite „Startobjekt“.
Auf dieser Seite muss ein Startobjekt festgelegt werden, auf dem die Suche
nach dem zuexportierenden Objekttyp begonnen werden soll.. Hierzu wird eine
Listbox mit der Auswahl des Objekttyps erzeugt. Bei dieser Auswahl aus einer
generierten Listbox werden alle Objekte in einer weiteren Listbox zur Auswahl
des Startobjektes gegeben.
Danach hat der Nutzer die Möglichkeit eine Vorlage zu laden oder selbst die
weiteren Einstellungen zu bestimmen. Auf der Seite der „Vorlagenauswahl“
können Vorlagen aus einer Liste geladen werden, durch die alle weiteren
Festlegungen der Exportdaten in den folgenden Dialogen voreingestellt sind. Zu
den einzelnen Vorlagen kann der Nutzer auch Informationen und
Beschreibungen aus dem Dialog heraus aufrufen und abfragen.
58
Von der Dialogseite der Vorlagenauswahl kommt der Nutzer zur Seite
„Manuell“, in der man durch Schalter zu Dialogseiten „Abtauchen“ und
„Exportieren“ gelangt. Auf der Seite „Exportieren“ kann der zu exportierende
Objekttyp bestimmt werden. Auf der Seite „Abtauchen“ kann der Nutzer
festlegen in welchen Objekttypen nach den zu exportierenden Objekttypen
gesucht werden soll.
Nachdem durch den Nutzer die jeweiligen Objekttypen definiert wurden, legt er
die Eigenschaften mit zugehörigen Datentypen fest die beim Export den
Tabellen entsprechen.. Hier wird auch namentlich festgelegt wie Spalten bzw.
Eigenschaften des Exports benannt werden sollen. Die Eigenschaftsnamen
bzw. Spaltennamen in der Exportdatei sollen in einem Editfeld angegeben
werden. Die zu exportierenden Eigenschaften der Objekte stehen in einer
Listbox zur Auswahl. Hier sollen Eigenschaften, welche jedes Objekt besitzt, zu
wählen sein. Die Auswahl der Datentypen wird über eine Listbox realisiert.
Dazu sollen die Datentypen von MySQL und die Elementtypen von XML
genutzt werden. Für das Format CSV werden Datentypen von MS Excel
genutzt, wie z.B. Text, Zahl oder Datum. Zusätzlich sollen bei Auswahl des
Formates „MySQL“ festgelegt werden welche Eigenschaft als Primärschlüssel
dienen soll. Dazu wird eine CheckBox zu jeder Eigenschaft im Dialog erzeugt.
Die Einstellungen dieser Dialogseite werden ebenfalls durch eine Funktion auf
Konsistenz und Integrität der Daten überprüft. So wird gewährleistet, dass der
Nutzer stets konsistente Daten exportiert.
Zum Schluss erscheint eine Übersicht der Einstellungen, in der alle festgelegten
Daten noch einmal anführt werden. Hier hat der Nutzer die Möglichkeit die
Einstellungen in einer Vorlage zu speichern.
59
4.3 Die Klassen-Ebene
Die Klassen-Ebene soll die durch den Nutzer gewählten Daten aus dem SiSy®Repository in eine virtuelle Tabelle importieren und anschließend diese
Informationen in das gewünschte Format exportieren.
Dazu wurde die SiSyBasic-Klasse „ImportExportDat“ entworfen, die dem
SiSyBasic-Skript Funktionen bereitstellt, mit denen der Export der Daten
durchgeführt werden kann. Der Funktionsumfang dieser Klasse beschränkt sich
u.a. auf das Festlegen des Exportformats, das Hinzufügen von Spalten einer
Tabelle der Klasse „CTableObj“ und das Starten des Exports. Die SiSyBasicKlasse „ImportExportDat“ wird durch die Interpreterklasse
„CInterp_ImportExportDat“ interpretiert. Das bedeutet, die Funktion „WorkMember()“ dieser Klasse prüft, welche Funktion in der SiSyBasic-Klasse
angesprochen wurde und startet die entsprechende Funktionen der Klasse
„CImportExportDat“. Somit erzeugt die Interpreterklasse
„CInterp_ImportExportdat“ die C-Klasse „CImportExportDat“. Dieser
Sachverhalt soll kurz an einem Beispiel verdeutlicht werden:
In SiSyBasic wird die Funktion „startExport()“ der SiSyBasic-Klasse
„ImportExportDat“ aufgerufen. Der SiSy® -Interpreter prüft durch die
Interpreterklasse „CInterp_ImportExportDat“, ob diese Funktion vorhanden ist,
und ruft die Methode „startExport()“ der C-Klasse „CImportExportDat“ auf.
Die Klasse „CImportExportDat“ ist die eigentliche Export-Klasse. Sie wurde
„CImportExportDat“ genannt, da mit Hilfe dieses Entwurfs eventuell ein Import
von Daten in SiSy® realisiert werden soll. Der Entwurf des Klassendiagramms,
der in der Abbildung 24 zu sehen ist, soll sich jedoch auf den Export von Daten
aus SiSy® beschränken.
60
CImportExportDat
SiSyBasic::ImportExportDat
# m_akt_db : CDatabase
# tabName : CString
# exportFormat : CString
# exportZiel : CString
# tabObj : CTableObj
# interp : CInterp_ImportExportDat
+ startExport(CString objNrArray) : void
+ setTabellenName(String tabName) : void
+ setExportZiel(String exportZiel) : void
+ addSpalte(String exportQuelle_Eigensc...) : void
+ setExportFormat(String exportFormat) : void
+ setAllParameter(String allParameter) : void
+ getAllParameter() : String
+ getTabName() : String
+ getExportFormat() : CString
+ getExportVerzeichnis() : String
+ firstConnect() : void
1
1
interpretiert durch
1
benutzt
+ startExport(CString objNrArray) : int
+ setTabname(CString tabName) : void
+ setAllParameter(CString allParameter) : void
+ getAllParameter() : CString
+ setExportFormat(CString exportFormat) : void
+ setExportVerzeichnis(CString exportVerzeichnis) : void
+ getTabName() : CString
+ getExportFormat() : CString
+ getExportVerzeichnis() : CString
1
1
CDatabase
benutzt
1
1
# akt_dsn : CString
+ firstConnect() : BOOL
+ changeODBCConnect() : BOOL
+ executeSQL() : void
+ getConnect() : CString
erzeugt
erzeugt
1
1
CInterp_ImportExportDat
CStmtDialog
1
# impExpDat : CImportExportDat
# stmts : CString
CTableObj
+ Work_Member(CString para1, CString para...) : void
# rows : CPtrArray
# header : CTableObj_Header
+ addRowsFromRepo(CDWordArray* objnrlist) : int
+ getContentCSV() : CString
+ getContentSQL(CString exportName, CString...) : CString
+ getContentXML(CString exportName, CString...) : CString
1
besitzt
CSOVObjekt
1
besitzt
1
1
1
n
CTableObj_Header
CTableObj_Row
# headerFelder : CPtrArray
+ addColumnFeld(CString spaltenQuelle, CStr...) : int
+ getFirstHeaderFeld() : CTableObj_HeaderFeld*
+ getNextHeaderFeld() : CTableObj_HeaderFeld*
kennt
1
1
# sov : CSOVObjekt
# rowFelder : CPtrArray
# header : CTableObj_Header*
+ initFromRepo(Long objNr, CTableObj_Heade...) : int
+ getContentRowCSV() : CString
+ getContentRowSQL(CString tabName) : CString
+ getContentRowXML(CString tabName) : CString
1
besitzt
1
besitzt
n
CTableObj_HeaderFeld
n
# spalte : CString
# datentyp : CString
# primarykey : BOOL
# spaltenQuelle : CString
+ setSpalte(CString spaltenname) : void
+ setDattyp(CString dattyp) : void
+ getSpalte() : CString
+ getDattyp() : CString
+ setPrimarykey(BOOL primarykey) : void
+ getPrimarykey() : BOOL
+ setSpaltenQuelle(CString spaltenQuelle) : void
+ getSpaltenQuelle() : CString
CTableObj_RowFeld
kennt
1
1
# feldInhalt : CString
# hFeld : CTableObj_HeaderFeld*
+ initFromRepo(CSOVObjekt* sovObj, CTableO...) : void
+ getContentFeldCSV() : CString
+ getContentFeldSQL() : CString
+ getContentFeldXML() : CString
Abbildung 24 Entwurf des Klassendiagramms
Die Klasse „CImportExportDat“ erzeugt die Klasse „CTableObj“. Mit Hilfe dieser
Klasse wird eine virtuelle Tabelle mit einem Tabellenkopf, dem „Header“, und
mit mehreren Reihen, den „Rows“, erzeugt. Bevor der Datenexport gestartet
wird, müssen die Spalten der Tabelle durch die Funktion „addSpalte()“ der
SiSyBasic-Klasse erzeugt werden. Durch den Aufruf dieser Funktion wird die
Funktion „addColumnFeld()“ der Klasse „CTableObj_Header“ aufgerufen und
eine Spalte mit Namen, Datentyp, Primärschlüsseleigenschaft und der
Quelleigenschaft erzeugt.
Nachdem alle Spalten der Tabelle generiert wurden, kann der Export gestartet
werden. Der Ablauf der Funktion „startExport()“ ist in Abbildung 25 zu sehen.
Dabei ruft die Funktion „startExport()“ die Methode „initFromRepo()“ der Klasse
61
„CTableObj“ auf. Der Operation „initFromRepo()“ wird als Parameter eine Liste
aller zu exportierenden Objekte übergeben.
ImportExportDat
CTableObj
export==OK
CTableObj_Row
initFromRepo
initFromRepo
CTableObj_RowFeld
initFromRepo
Prüfung ob
Tabelle gefüllt
[Tabelle gefüllt]
Prüfung des
Formats ob
"MySQL"
CODBC
[Format ist MySQL]
Aufbau einer
ODBC-Verbindung
getContentSQL
CODBCDialog
Prüfen ob Format
XML
erzeuge
ODBC-Dialog mit
generierten
Statements
[Format XML]
[Format CSV]
getContentXML
getContenCSV
SQL-Statements
absenden
Abbau der
ODBC-Verbindung
speichern in Datei
Abbildung 25 Der Ablauf des Exports in der Klassen-Ebene
Diese Methode wiederum erzeugt für jedes Objekt eine Instanz der Klasse
„CTableObj_Row“. Im Konstruktor dieser Klasse wird die Methode
„initFromRepo()“ aufgerufen und eine Objektnummer und ein Pointer auf die
Klasse „CTableObj_Header“ als Parameter übergeben. Die Operation
„initFromRepo()“ der Klasse „CTableObj_Row“ initialisiert das „CSOVObjekt“
mit der Objektnummer und ruft für jedes „HeaderFeld“ eine Instanz der Klasse
„CTableObj_RowFeld“ auf. Somit wird für jede vorhandene Spalte bzw.
„HeaderFeld“ ein Zeilenfeld bzw. „RowFeld“ erzeugt.
62
Der Konstruktor der Klasse „CTableObj_RowFeld“ ruft wiederum dessen
Funktion „initFromRepo()“. Diese bekommt als Parameter jeweils einen Pointer
auf das „CSOVObjekt“ und auf ein Objekt der Klasse „CTableObj_HeaderFeld“.
Sie holt sich aus dem „HeaderFeld“ die zu exportierende Eigenschaft mit der
Methode „getSpaltenQuelle()“ und exportiert diese aus dem „CSOVObjekt“ in
den Feldinhalt der Tabelle.
Wenn die Tabelle komplett mit allen zu exportierenden Daten gefüllt ist, wird
das Format geprüft und die entsprechende „getContent()“-Methode der Klasse
„CTableObj“ aufgerufen. Diese ruft dann die „getContent()“-Methode der Klasse
„CTableObj_Row“ usw. Durch jene Funktionen werden die Daten der virtuellen
Tabelle in das jeweilige Exportformat generiert werden. Beim Export in die
Formate CSV und XML werden gültige und konforme CSV- bzw. XMLDokumente erzeugt. Beispiele solcher Dokumente werden in Anlage 5 und
Anlage 6 gezeigt. Beim Format MySQL werden gültige SQL-Statements nach
dem ANSI-SQL/92-Standard generiert. Diese Dokumente bzw. Statements
werden anschließend gespeichert.
Bei den Formaten CSV und XML erfolgt das Speichern jeweils in einer Datei.
Anders beim Format MySQL, hier sollen die Informationen über eine ODBCVerbindung in eine Datenbank gespeichert werden. Dabei soll zuerst eine
ODBC-Verbindung hergestellt und ein Dialog mit den generierten SQLStatements erzeugt werden. Darin soll der Nutzer die Möglichkeit haben die
SQL-Statements zu bearbeiten und anschließend über einen Schalter
absenden zu können. Abschließend wird die ODBC-Verbindung abgebaut. Für
die Funktionalität dieser ODBC-Schnittstelle sollen Methoden der MFC-Klasse
„CDatabase“ genutzt werden.
4.4 Realisierung
Das Kapitel der Realisierung soll einen Überblick über Implementierung des
Entwurfs der Schnittstelle geben.
Die Skript- und die Dialog-Ebene wurden in SiSyBasic-Skript realisiert. Dazu
wurden die beschriebenen Dialoge und Aktivitätsdiagramme des Entwurfs der
63
Schnittstelle verwendet und realisiert. Für die Entwicklung der beiden Ebenen
wurden Editoren wie das Notepad und HTML-Editoren verwendet, da für die
Entwicklung von SiSyBasic-Skript keine Entwicklungsumgebung existiert, und
die Arbeit mit den Editoren ausreichend ist. Der vollständige Quellcode der
Dialog-Ebene und dessen SiSyBasic-Funktionen befinden sich in der Datei
„dat_exp.fld“, die auf dem Datenträger in Anlage 7 hinterlegt ist. Dort ist auch
die Datei „dat_exp.flq“ zu finden, in welcher der Quelltext der Skript-Ebene zu
finden ist.
Die entworfenen Klassen der SiSyBasic-Klassen-Ebene wurden mit Hilfe des
MS-Visual Studios 6.0 in der Sprache C++ entwickelt. Dabei wurde das
Klassendiagramm des Entwurfs umgesetzt.
Zur Realisierung wurde das Softwareprodukt SiSy® dokumentierend eingesetzt.
Hierbei wurde im Vorgehensmodell der UML in SiSy® das grobe
Fachklassenkonzept modelliert und daraus auch generiert. Die so erzeugten
Quellcode- und Headerdateien wurden anschließend in das MS Visual Studio
eingebunden. Die einzelnen Methoden der verschiedenen Klassen wurden
dann nur noch im Visual Studio um die eigentliche Fachlogik erweitert.
Der vollständige Quellcode der realisierten Klassen befindet sich auf dem
Datenträger der Anlage 7.
Zusätzlich wurde zum Add-On ein HTML-Seite, die „dat_exp.htm“, entwickelt.
Sie öffnet sich nach dem installieren des Add-Ons und gibt dem Nutzer
Informationen zum Aufruf und der Handhabung des Datenexportes. Diese
HTML-Seite ist ebenfalls auf dem Datenträger in der Anlage 7 zu finden.
64
5 Schlussbetrachtungen
Dieses Kapitel fasst die Ergebnisse zusammen und gibt einen Ausblick über die
mögliche Erweiterung des entwickelten Prototyps der Schnittstelle.
5.1 Ergebnisse
Anhand dieser Arbeit wurde gezeigt wie eine Schnittstelle zwischen dem
SiSy®-Repository und den externen Datenformaten CSV, XML und MySQL
umgesetzt wurde. Beim Betrachten des vorliegenden Prototyps dieser
Schnittstelle wird deutlich, dass die im Kapitel 3.4 gestellten Anforderungen an
das Modul zum größten Teil umgesetzt wurden. Somit wurde die
Vorraussetzungen für die Weiterentwicklung dieses Prototyps geschaffen.
Die entwickelte Schnittstelle wurde als installierbares Add-On realisiert und liegt
auf dem Datenträger in Anlage 7 zur Installation in SiSy® vor. Hierbei wurden
Namens- und Dateikonventionen von SiSy® beachtet und dem Add-On der
Name „Dat_Exp“ gegeben.
Bei dem vorliegenden Prototyp wird durch das SiSyBasic-Skript das Repository
nach dem zu exportierenden Objekttyp durchsucht bzw. gescannt. Diese
Funktionalität könnte man in die Klassen-Ebene mit aufnehmen. Da sich aber
dadurch keine wesentliche Verbesserung der Performance ergeben würde, hat
sich der Autor dazu entschieden das „Durchsuchen“ nach dem Objekttyp in die
Skript-Ebene zu verlagern.
Die realisierte Schnittstelle lässt sich ebenfalls leicht pflegen. So muss ein
neues Format nur in der Konfigurationsdatei „dat_exp.ini“ hinzugefügt und
Funktionen in der Klassen-Ebene zum Zusammenstellen der Daten in dem
Format entwickelt werden. Die Anpassung der Klassen-Ebene an neue Formate
kann nur der Entwickler des Produkts SiSy® durchführen, nicht der Benutzer
selbst.
Beim Entwurf der Schnittstelle wurde ein ergonomischer Dialog entwickelt, der
sich an der bestehenden Nutzerführung in SiSy® orientiert. Dazu wurde ein
65
SiSyBasic-Skipt geschaffen, welches den Dialog unterstützt und die
Schnittstelle zur SiSyBasic-Klassen-Ebene herstellt. Die Klassen-Ebene wurde
in der Sprache C++ realisiert und exportiert die Daten aus dem SiSy®Repository in ein gewähltes Datenformat. Dabei werden gültige und konforme
Dokumente in den Formaten CSV und XML erzeugt. Die Schnittstelle zu einer
MySQL-Datenbank wurde in Ansätzen über eine ODBC-Schnittstelle realisiert,
jedoch konnte diese zum Zeitpunkt der Abgabe nicht fertiggestellt werden.
Damit ist mit dem Prototyp dieser Schnittstelle auf dem Datenträger in der
Anlage 7 nur ein Export in die Formate CSV und XML möglich.
Der Wizard-Dialog wurde gewählt, da dieser bereits im Objekt der „Aufzählung“
umgesetzt wurde und sich somit an der bestehenden Nutzerführung in SiSy
orientiert. Beim Abarbeiten dieses Dialogs muss der Nutzer nacheinander alle
nötigen Exportdaten festlegen, da die Einstellungen beim Verlassen auf
Vollständigkeit geprüft werden. So konnten Fehler bei der Eingabe durch den
Nutzer minimiert werden.
Der Prototyp der Schnittstelle bringt eine Einschränkunge mit sich:
Er kann zunächst nur einen Objekttyp exportieren, da dadurch die Realisierung
des Prototypen vereinfacht werden sollte. Bei einer Weiterentwicklung muss an
dieser Stelle zuerst angesetzt werden, da ein Export von verknüpften Daten
bzw. Objekttypen für den Nutzer weitaus interessanter ist und für die
Entwicklungsabteilung der Laser & Co. Solutions GmbH erstrebenswert sein
sollte.
Der entwickelte Prototyp stammt aus der Phase der Realisierung und muss
einer Testphase unterzogen werden. Dazu müssen Testchecklisten entworfen
werden, dessen Entwicklung im Rahmen dieser Arbeit sich zu umfangreich
gestalten würde.
5.2 Ausblick
Wie in Kapitel 5.1 bereits erwähnt, sollte bei der Erweiterung der entwickelten
Schnittstelle zunächst der Export von Daten mehrerer verschiedener
Objekttypen und eventuell dessen Verknüpfung entwickelt werden. Dazu
könnten mehrere virtuelle Tabellen erzeugt und exportiert werden.
66
Dieser Datenexport könnte für die Überführung kompletter SiSy®-Projekte in
verschiedene Datenformate genutzt werden. Somit besteht die Möglichkeit ein
Archiv anzulegen und dadurch den Export kompletter Projektdaten in ein
Exportformat, wie z.B. XML, zu realisieren.
Weiterhin könnten mit Hilfe dieses Datenexports komplette Webapplikationen
erstellt werden, ähnlich wie es im Add-On „HTML-Export“ umgesetzt wurde.
Folglich würden Daten durch den Export in ein Datenformat, wie z.B. MySQL,
transferiert und durch eine aus SiSy® erzeugte Applikation genutzt. Auf diese
Weise kann man z.B. Intranet-Plattformen für Firmen realisieren, wobei diese
zunächst ihre Unternehmung z.B. aufbau- und ablauforganisatorisch abbilden
und anschließend beispielsweise einen Intranetbereich mit sämtlichen
Prozessen des Unternehmens und dessen Verantwortlichen erzeugen können.
Neben dem Export von Daten aus SiSy® in verschiedene Datenformate soll der
Entwurf dieser Schnittstelle auch Daten verschiedener Formate in SiSy®
importieren, wie in Kapitel 4.3 bereits erwähnt. Dazu muss die Funktionalität
eines Import von Daten implementiert werden. Dies sollte als weiterer Schritt
der Entwicklung dieser Schnittstelle aufgenommen werden.
Somit könnten beispielsweise Projektdaten, die mit Hilfe der Schnittstelle
exportiert wurden, wieder in SiSy® importiert werden. So könnte u.a. das
Einlesen von Archiven in SiSy® realisiert werden.
67
Literaturverzeichnis
[1]
ACHILLES, Dr. Albrecht: SQL: Standardisierte Datenbanksprache vom
PC bis zum Mainframe.- 5., durchges. Auflage.- München; Wien:
Oldenbourg, 1995
[2]
ARCHINIEGAS, Fabio: XML Developer’s Guide: Erstellen effizienter
XML-Anwendungen – Aktuelle Standards – Mobiles XML – Web
Publishing – Ergänzende Technologien. Poing: Franzis Verlag GmbH,
2001
[3]
BÖHM, Rolf; Wenger, Sven: Methoden und Techniken der SystemEntwicklung, 2. überarb. Und erweiterte Auflage – Zürich: vdf
Hochschulverlag AG, 1996
[4]
GEIGER, Kyle: Inside ODBC: Der Entwicklerleitfaden zum
Industriestandard für Datenbank-Schnittstellen – Unterschleißheim:
Microsoft Press Deutschland, 1995
[5]
GOLDFARB, Charles F.; Prescod, Paul: Das XML-Handbuch:
Anwendungen, Produkte, Technologien, 2. aktualisierte und erweiterte
Auflage. – München: Addison-Wesley, 2000
[6]
GROSSMANN, Ralph: Aufzeichnungen aus einer Vorlesungen über
Datenbanksysteme, 2001
[7]
GRÄFE, Gunter: Studienheft BSI 5 – Datenaustausch über
Schnittstellen. Darmstadt: Private Fern Fachhochschule Darmstadt
[8]
HEUER, Andreas: Datenbanken: Konzepte und Sprachen / Andreas
Heuer; Gunter Saake, 2. aktualisierte und erweiterte Auflage. – Bonn:
mitp-Verlag, 2000
[9]
MOOS, Alfred; Daues, Gerhard: Datenbank-Engineering: Analyse,
Entwurf und Implementierung relationaler Datenbanken mit SQL, 2.
überarbeitete Auflage. – Braunschweig; Wiesbaden: Vieweg, 1997
[10]
MÜLLER, Christian: persönliche Gespräche: Löbau, 2003
[11]
PARDI, William J.: XML in Action: Dynamische und datengestützte
Webseiten mit der neuesten Web-Technologie -Redmond, Washington:
Microsoft Press, 2000
[12]
PLATZK, René: Studienarbeit: Analyse und Entwurf einer Schnittstelle
zwischen dem SiSy-Repository und einer MySQL-Datenbank.- Bautzen:
2003
68
[13]
RAYMANS, Heinz-Gerd: MySQL im Einsatz – Mit ODBC, JDBC, PHP
und Perl. – München: Addison-Wesley, 2001
[14]
RIEDEL, Toralf: persönliche Gespräche: Löbau, 2003
[15]
RUF, Walter: Ein Software-Entwicklungs-System auf der Basis des
Schnittstellen-Management-Ansatzes – Für Klein- und Mittelbetriebe.
Berlin: Springer-Verlag, 1988
[16]
SCHUBERT, Daniel: Diplomarbeit – Realisierung eines SQL-Generators
mit ODBC-Schnittstelle für universaleditorbasierende Entity-RelationshipDiagramme im Softwaresystem SiSy.- Bautzen: 2001
[17]
STAHLKNECHT, Peter: Einführung in die Wirtschaftsinformatik / Peter
Stahlknecht; Ulrich Hasenkamp. 9., vollständig überarbeitete Auflage;
Berlin: Springer, 1999
[18]
TRAUTLOFT, Rainer: Datenbanken: Entwurf und Anwendung. – Berlin:
Verlag Technik, 1990
[19]
Firmeninterne Dokumente der Laser & Co. Solutions GmbH, Löbau:
2003
69
Onlinequellen
[On1] World Wide Web Consortium: XML (16.01.2003) [Online],
http://www.w3.org
[On2] MySQL: Produkte (16.01.2003) [Online], http://www.mysql.de
[On3] VIP7: CSV-Format (Infoblatt) (07.05.2003) [Online],
http://www.vip7.de/info/develop/csv-format.htm
[On4] PCtip: Helpdesk (07.05.2003) [Online]
http://www.pctip.ch/helpdesk/kummerkasten/archiv/office/23651.asp
[On5] Tformer:Aufbau einer CSV-Datei (07.05.2003) [Online],
http://www.tformer.com/HelpDE/Dokumentation/Externe_Daten/ExtDaten
_CSVImport.htm
[On6] Galileobusiness: Glossar – Datenbank (18.06.2003) [Online],
http://www.galileobusiness.de/glossar/gp/anzeige-50
[On7] Universität Magdeburg: UML – Unified Modelling Language (24.06.2003)
[Online], http://ivs.cs.uni-magdeburg.de/sweng/us/CAME/tools/UML/Komponentendiagramm.htm
[On8] LinuxDay: MySQL (02.07.2003) [Online],
http://www.linuxday.at/upload/MySQL_Kompaktseminar_200211.pdf
[On9] IT-Academy: ODBC-Programmierung (01.08.2003) [Online],
http://www.it-academy.cc/content/article_browse.php?ID=271
Softwareprodukte
[So1] Laser & Co. Solutions GmbH : Softwaresystem SiSy® – Simple Sytem
Version PFFH 2.16d. Löbau, 2003
70
Abbildungsverzeichnis
Abbildung 1 Grobentwurf der Schnittstelle ..........................................................7
Abbildung 2 Das Wasserfallmodell .....................................................................9
Abbildung 3 Prinzip einer Schnittstelle..............................................................11
Abbildung 4 Einordnung der Middleware ..........................................................12
Abbildung 5 Beispiel eines ERM .......................................................................16
Abbildung 6 Simple System ..............................................................................31
Abbildung 7 Grobstruktur des Repository von SiSy®........................................32
Abbildung 8 Beispiel Entity-Relationship-Diagramm .........................................34
Abbildung 9 Der SiSy-ODBC-Dialog .................................................................34
Abbildung 10 Dialog zum Programmieren ........................................................36
Abbildung 11 Dialogseite des "Aufzählen" -Objektes........................................37
Abbildung 12 Beispiel der Organisationssicht ...................................................38
Abbildung 13 Dialogseite "zusätzliche Informationen" der Stelle ......................39
Abbildung 14 Die Hierarchie der Handles .........................................................40
Abbildung 15 Ablauf eines Verbindungsaufbaus...............................................42
Abbildung 16 Die Schichtenarchitektur der Schnittstelle...................................48
Abbildung 17 Der Entwurf der Schnittstelle.......................................................49
Abbildung 18 Die Dialogseite Datenexport .......................................................50
Abbildung 19 Der Ablauf des SiSyBasic-Skripts ...............................................51
Abbildung 20 Der Ablauf der Skript-Ebene beim Starten des Exports ..............52
Abbildung 21 Anwendungsfalldiagramm der Schnittstelle ................................54
Abbildung 22 Der Ablauf des Dialoges .............................................................56
Abbildung 23 Die Dialogseite-"Ausgabeform" ...................................................57
Abbildung 24 Entwurf des Klassendiagramms..................................................60
Abbildung 25 Der Ablauf des Exports in der Klassen-Ebene ............................61
71
Tabellenverzeichnis
Tabelle 1 Vordefinierte Entities .........................................................................24
Tabelle 2 CSV-Seperatoren ..............................................................................27
Tabelle 3 Beispiele für Textbegrenzungszeichen..............................................28
Tabelle 4 Qualitätsanforderungen.....................................................................47
72
Anlagenverzeichnis
Anlage 1:
Das Komponentendiagramm
Anlage 2:
Die Dokumententyp-Definition
Anlage 3:
Dateikonventionen in SiSy
Anlage 4:
Die Dialoge der Schnittstelle
Anlage 5:
Das erzeugte CSV-Dokument
Anlage 6:
Das erzeugte XML-Dokument
Anlage 7:
Die Arbeitsergebnisse auf Datenträger
73
Eidesstattliche Erklärung
Ich erkläre an Eides Statt, dass ich die vorliegende Arbeit selbstständig und nur
unter Verwendung der angegebenen Quellen und Hilfsmittel angefertigt habe.
Die Zustimmung der Firma zur Verwendung betrieblicher Unterlagen habe ich
eingeholt. Die Arbeit wurde bisher in gleicher oder ähnlicher Form weder
veröffentlicht noch einer anderen Prüfungsbehörde vorgelegt.
Bautzen, den 08.08.2003
Unterschrift des Verfassers
74
Anlage 1
Das Komponentendiagramm
Das Komponentendiagramm, engl. component diagramm, ist ein Diagramm der
UML. Es stellt die Zusammenhänge einzelner Komponenten von
Softwaresystemen her, unabhängig von Compiler- und Laufzeitumgebung.
Die Komponente ist ein physisches Stück Programmcode, welches ein Stück
Quellcode, Binärcode oder ein Teil eines Softwaresystems sein kann. Sie
werden als Rechteck dargestellt und enthalten Namen und den Typ der
Komponente. Am linken Rand des Rechtecks befinden sich eine Ellipse und
zwei kleinere Rechecke. Eine Komponente kann wiederum Objekte und
Komponenten enthalten und Schnittstellen besitzen.
Schnittstellen werden als Kreise dargestellt und enthalten eine eindeutige
Bezeichnung30).
Die Komponenten können zusätzlich auf (Hardware-)Knoten abgebildet werden.
Knoten werden als dreidimensionale Rechtecke(Würfel) dargestellt, und sind
die Hardware auf denen sich die Komponenten befinden. Die folgende
Abbildung zeigt ein Beispiel eines Komponentendiagramms.
KomponenteA:KompTypA
KomponenteB
Schnittstelle
:KompTypA
Schnittstelle
Schnittstelle
Abbildung 26 Beispiel eines Komponentendiagramms
30)
[On9]
:KompTypB
75
Anlage 2
Blatt 1
Die Dokumententyp-Definition
Die DTD ist eine Art Regelwerk. Sie definiert Elementtypen, Attribute, Entities
und Notationen. Dabei deklariert sie, welche von diesem Komponenten
innerhalb eines Dokumentes und an welchen Stellen diese zur Verfügung
stehen bzw. vorkommen dürfen.
Eine DTD ist für eine organisatorische Standardisierung für ein Dokument von
großer Bedeutung, da sie eine zuverlässige Verarbeitung eines Dokumentes
gewährleistet. Sie kann direkt in dem XML-Dokument oder in einer externen
Datei, einer *.dtd-Datei, definiert werden.
Wie werden nun die einzelnen Komponenten eines Dokumentes in einer DTD
deklariert? Wie bereits oben genannt können in einer DTD Elementtypen,
Attribute, Entities und Notation deklariert werden.
Alle Komponenten werden in Tags mit spitzen Klammern dargestellt. Der
öffnenden Klammer folgt ein Ausrufezeichen.
Die Deklaration eines Elementtyps enthält das Wort ELEMENT, welches das
Tag als Elementtyp-Deklaration kennzeichnet, den Elementnamen und die Art
der Daten, die das Element enthält. Der Name des Elements muss ein gültiger
XML-Name sein, das bedeutet dass der Name mit einem Buchstaben, einem
Semikolon oder einem Unterstrich, gefolgt von einer beliebigen
Namenszeichen, beginnen muss. Die Art der Daten kann aus einen der
folgenden Typen bestehen:
•
Dem Schlüsselwort EMPTY – Durch dieses Schlüsselwort wird das
Element als leer deklariert, es sind keine Inhalte für dieses Element
erlaubt. Das folgende Beispiel zeigt eine Deklaration eines leeren
Elementes:
<!ELEMENT Test EMPTY>
•
Dem Schlüsselwort ANY – Durch dieses Schlüsselwort kann das
Element jedes beliebige Element oder Zeichendaten in jeder beliebigen
Reihenfolge enthalten. Ein folgendes Beispiel zeigt ein solches Element:
<!ELEMENT TITLE ANY>
76
Anlage 2
Blatt 2
•
Dem Schlüsselwort (#PCDATA) – PCDATA ist das Kürzel für Parsed
Character DATA. Für die Elemente mit diesem Schlüsselwort sind nur
Zeichendaten zulässig. Das folgende Beispiel zeigt eine Deklaration
eines Element mit Zeichendaten als zulässigem Inhalt:
<!ELEMENT COMPOSER (#PCDATA)>
•
Einer Liste von untergeordneten Elementen – Die Deklaration eines
Elementes mit untergeordneten Elementen, darf nur dem Element
untergeordnete, deklarierte Elemente besitzen. Dabei kann eine
bestimmte Spezifikation durch Struktursymbole vorgenommen werden,
diese sind in der xxx erläutert. Das Beispiel zeigt eine ElementtypDefinition mit einer Liste von untergeordneten Elementen:
<!ELEMENT SONG (TITLE?,COMPOSER+,ARTIST+)>
•
Aus gemischten Inhalt – In dieser Deklaration dürfen jede Art von
Daten verwendet werden: Zeichendaten oder untergeordnete Elemente.
Hier werden zur Spezifikation der Daten ebenfalls Struktursymbole und
Modifizierer verwendet.
Das folgende Beispiel ist eine Deklaration mit gemischten Daten. Das
Element SONG muss als Daten Zeichendaten und die Elemente TITLE,
COMPOSER, ARTIST in verschiedenen Ausprägungen genau in dieser
Reihenfolge besitzen:
<!ELEMENT SONG (#PCDATA,TITLE?,COMPOSER+,ARTIST+)>
Es wurde bereits erwähnt das XML eine Spezifikation der Struktur der Daten,
durch einen Satz von Symbolen, verwendet. Sie haben in einigen Beispielen,
solche Symbole gesehen. Die Struktursymbole, die in XML verwendet werden
sehen sie in Tabelle 5 Die Struktursymbole:
77
Anlage 2
Blatt 3
Tabelle 5 Die Struktursymbole
Die Deklaration von Attributen enthält das Schlüsselwort ATTLIST, den
Elementnamen zu dem das Attribut gehört, den Attributsnamen, den
Attributstyp und eine Vorgabe für das Attribut. Eine allgemeine
Attributsdeklaration sehen Sie im folgenden Beispiel:
<!ATTLIST Elementname Attributsname Attributstyp Vorgabe>
Die Attributstypen die in einer DTD verwendet werden können sehen Sie in der
folgenden Tabelle:
Tabelle 6 Die Attributstypen der DTD
Attributtyp
CDATA
ENTITY
ENTITIES
ID
IDREF
IDREFS
NMTOKEN
NMTOKENS
NOTATION
Aufzählung
Bedeutung
In dem Attribut können nur Zeichenkettendaten
verwendet werden.
Die Attributswerte müssen sich auf ein externes, binäres
Entity beziehen, das in der DTD deklariert wurde.
Beispiel
<!ATTLIST SONG Quality CDATA #IMPLIED>
Wie Entity, jedoch sind mehrere, durch Leerzeichen
getrennte Werte möglich.
Der Attributwert muss ein eineindeutiger Identifier sein.
Der Wert muss ein Verweis/ Referenz auf eine anderswo
deklarierte ID sein.
Wie IDREF, hier sind jedoch mehrere, durch Leerzeichen
getrennte, Werte erlaubt.
Der Attributswert ist jede belibiege Zusammenstellung
aus Namenstokenzeichen, die Buchstaben, Ziffern,
Punkte, Bindestriche, Semikolons oder Unterstriche sein
müssen.
Wie NMTOKEN, jedoch sind mehrere, durch Leerzeichen
getrennte, Werte erlaubt.
Der Attributswert muss auf eine Notation verweisen, die
an einer anderen Stelle in der DTD deklariert ist.
Der Attributwert mus mit einer der aufgeführten Werte
übereinstimmen.
<!ATTLIST SONG Quality ENTITIES #IMPLIED>
<!ATTLIST SONG Quality ENTITY #IMPLIED>
<!ATTLIST SONG Quality ID #IMPLIED>
<!ATTLIST SONG Quality IDREF #IMPLIED>
<!ATTLIST SONG Quality IDREFS #IMPLIED>
<!ATTLIST SONG Quality NMTOKEN #IMPLIED>
<!ATTLIST SONG Quality NMTOKENS #IMPLIED>
<!ATTLIST SONG Quality NOTATION #IMPLIED>
<!ATTLIST SONG Quality (good | bad) #IMPLIED>
78
Anlage 2
Blatt 4
Die Vorgaben für Attribute, auch Attributsvorgaben genannt, ist die letzte
Eigenschaft der Attributdeklaration. Die Formen dieser Deklaration sind
folgende Schlüsselwörter:
•
#REQUIRED – Das Attribut ist vorgeschrieben, es wird benötigt. Jede
Instanz des einschließenden Elements muss dieses Attribut besitzen. Im
Folgenden sehen Sie ein solches Bespiel:
<!ATTLIST SONG SongID ID #REQUIRED>
•
#IMPLIED – Das Attribut ist für das benannte Element nicht nötig. Es
kann weggelassen werden. Das folgendes Beispiel zeigt ein Attribut das
nicht unbedingt benötigt wird:
<!ATTLIST SONG Quality #IMPLIED>
•
#FIXED Wert – Wenn dieses Schlüsselwort angegeben wird, muss das
Attribut den Wert besitzen, der auf das Schlüsselwort folgt. Das folgende
Beispiel zeigt ein Attribut mit einem festen Wert:
<!ATTLIST SONG ImArchiv #FIXED “yes“>
•
Vorgabe – Mit Hilfe einer Vorgabe, kann man einen Standardwert für ein
Attribut definieren. Wenn das Element nicht dieses Attribut besitzt, wird
der XML-Prozessor diesen Standardwert des Attributs nehmen. Im
folgenden sehen Sie ein solches Beispiel:
<!ATTLIST SONG (Pop|Rock|Hip Hop|Techno) “Pop“>
Die Attributsdeklaration mit einer Vorgabe von Werten für ein Attribut ist ein
Aufzählungstyp. Aufzählungstypen legen die möglichen Werte, die ein Attribut
annehmen kann, explizit fest. Eine weitere Form von Aufzählungstypen ist der
Deklarationstyp NOTATION. Dabei beschreiben Notationen die Dateninhalte für
andere Deklarationen, die dann beispielsweise in einer Attributsdeklaration als
Aufzählungstyp verwendet werden können.
79
Anlage 2
Blatt 5
Notationen werden in XML zur Definition von XML-fremden Formaten benutzt.
Dabei wird der XML-Prozessor über ein bestimmten Datentyp aufgeklärt und
gesagt wie damit mit einer Hilfsapplikation umzugehen ist. Beispielsweise wird
der XML-fremde Datentyp einer GIF-Notation definiert und die Verarbeitung
durch die Anwendung „MS InternetExplorer“ deklariert, wie in dem folgenden
Beispiel erkennen kann:
<!NOTATION GIF SYSTEM “Iexplore.exe“>
Die Deklaration einer Notation wird durch das Schlüsselwort NOTATION
eingeleitet. Darauf folgen der Notationsname, der Bezeichner und in
Hochkommatas die Hilfsapplikation. Der Bezeichner bezieht sich auf eine
externe Information. Es gibt zwei Typen von Bezeichner: Systembezeichner
und öffentliche Bezeichner. Der Systembezeichner benutzt das Schlüsselwort
SYSTEM, wie im oben gezeigt Beispiel. Er verwendet eine URL, um auf die
Position eines Objektes zu verweisen.
Der öffentliche Bezeichner kann, neben der URL, zusätzlich auch über einen
Namen auf eine DTD-Komponente oder ein externes Entity verweisen, die als
eine Art Standardbibliothek zu sehen ist. Hierbei wird das Schlüsselwort
PUBLIC verwendet, gefolgt von einer DTD-Komponente bzw. einem externen
Entity und anschließend der URL. Ein folgendes Beispiel zeigt ein Deklaration
mit einem öffentlichen Bezeichner:
<!NOTATION SONG PUBLIC “-//SOURCE//EN“
“http://www.xmlsources.com/dtd/song.dtd“>
Die Angabe der URL bezieht sich immer auf relative Pfade des Speicherorts der
Ressource. Notationen können in Attributs- und Entitydeklarationen verwendet
werden.
Entities werden in der DTD definiert und im XML-Dokument referenziert, wie
bereits erläutert wurde. Sie können verschiedene Arten von Daten bzw. Inhalten
aufnehmen. Dabei werden sie in verschiedene Arten unterschieden. Nach Art
und Weise der Verarbeitung durch den XML-Prozessor werden Entities in
geparste und ungeparste unterteilt.
80
Anlage 2
Blatt 6
Weiterhin kann man Entities nach ihrer Funktion unterscheiden, in
Parameterentities und allgemeine Entities. Darüber hinaus können die
allgemeinen Entities, die innerhalb eines Dokumentes benutzt werden, in
interne und externe Entitäten unterteilt werden. Die Abbildung 272) zeigt die
Klassifizierung der Entitätstypen.
Entitäten
Ungeparst
Geparst
Parameter
Intern
Allgemein
Extern
Abbildung 27 Die Entitätstypen
Die Deklaration eines Entities wird immer durch das Wort ENTITY eingeleitet,
gefolgt vom Namen des Entities. Danach folgen Schlüsselwörter, Inhalte und
Referenzzierungen auf Notationen, die bei den verschiedenen Entity-Typen
verwendet werden.
Ungeparste Entities werden oft auch als binäres Entity bezeichnet, da deren
Inhalt in einer Binärdatei vorliegt, die vom XML-Prozessor nicht direkt geprüft
und interpretiert wird. Ein ungeparstes Entity benötigt eine Notation, da diese
Entities andere Informationen als geparste Entities benötigen. Das folgende
Beispiel zeigt ein ungeparstes Entity mit der zugehörigen Notation:
<!ENTITY Booklet SYSTEM “Image001.gif“ NDATA GIF>
<!NOTATION GIF SYSTEM “Iexplore.exe”>
2)
ARCHINIEGAS, Fabio: XML Developer’s Guide: Erstellen effizienter XML-Anwendungen –
Aktuelle Standards – Mobiles XML – Web Publishing – Ergänzende Technologien. Poing:
Franzis Verlag GmbH, 2001
81
Anlage 2
Blatt 7
Geparste Entities können durch den XML-Prozessor interpretiert werden. Dabei
wird der Inhalt des Entities aus der DTD herausgezogen und erscheint als Teil
des Dokumentes am Ort der Entityreferenzierung. Die internen geparsten
allgemeinen Entities sind die einfachsten Entity-Typen. Dieser Entity-Typ wird
auch Textentity genannt, da dieser Typ Textdaten enthält. Sie werden Teil des
Dokumentes sobald Sie verarbeitet sind. Das Textentity wird durch den Namen,
gefolgt vom Inhalt, der in Hochkommata steht, spezifiziert. Textentity mit dem
Namen “KAT“ und dem Inhalt “Kategorie: Pop“ könnte z.B. wie folgt dargestellt
werden:
<!ENTITY KAT “Kategorie: Pop“>
Die externen geparsten allgemeinen Entities enthalten ebenfalls Textdaten, die
aber in einer externen Datei, im System, vorliegen, z.B. in einer Textdatei oder
einer HTML-Datei. Ein externes allgemeines Entity kann auf folgende Weise
deklariert werden:
<!ENTITY entityname SYSTEM “SystemID“>
<!ENTITY entityname PUBLIC “PublicID“ “SystemID“>
Der “SystemID” verweist auf die URL oder den Namen der externen Datei. Der
“PublicID“, wie bereits erläutert, verweist auf eine Standardbibliothek, die
verwendet werden kann. Ein Beispiel mit einem “SystemID“ stellt sich wie folgt
dar:
<!ENTITY SONG SYSTEM “song.txt“>
Ein weiteres allgemeines Entity ist das Parameterentity. Sie sind für gute
Lesbarkeit und der Wiederverwendung in einer DTD verantwortlich.
Parameterentities benennen Textabschnitte die in der DTD verwendet werden,
nicht aber im Dokument. Damit machen sie das Benennen von XML-Typen und
die
82
Anlage 2
Blatt 8
Wiederverwendung von Teilen von Inhaltsmodellen bzw. Deklarationen
möglich, laut Quelle 3). Die Deklaration von Parameterentity hat folgenden
Syntax:
<!ENTITY % Entityname “Ersetzungstext“>
Bei der Deklaration ist zu beachten das vor dem Entitynamen ein
Prozentzeichen („%“) voransteht. Parameterentities können nur innerhalb einer
DTD verwendet bzw. referenziert werden. Die Referenzzierung eines
Parameterentities wird durch ein Prozentzeichen eingeleitet und ein Semikolon
abgeschlossen, dazwischen steht der Entityname der referenziert wird. Ein
Beispiel einer Deklaration eines Parameterentities und deren Referenzzierung
stellt sich wie folgt dar:
<!ENTITY % auswahlkategorie “(Pop|Rock|Hip Hop|Techno)“>
<!ATTLIST Kategorie %auswahlkategorie; “Pop“>
3)
ARCHINIEGAS, Fabio: XML Developer’s Guide: Erstellen effizienter XML-Anwendungen –
Aktuelle Standards – Mobiles XML – Web Publishing – Ergänzende Technologien. Poing:
Franzis Verlag GmbH, 2001
83
Anlage 3
Dateikonventionen in SiSy
Dateierweiterung Beschreibung
Beispiele aus
Add-On PM
VG*
Sicht-Steuerungsdateien für
Vorgehensmodelle (VGM =
Eintrittsebene)
*.vgm, *.vgd,,
*.vgi, *.vgt, *.vgx
FL*
Sicht-Steuerungsdateien für
Diagramme (außer VGM)
*.flc, *.fld, *.flt
VGM, FLC
Logik und Objektlayout der Sicht
pm_vgm.vgm;
pm_mindm.flc;
pm_npt.flc
VGD, FLD
Defnieren-Dialoge für die Objekte der
Sicht
pm_vgm.vgd;
pm_mindm.fld;
pm_npt.fld
VGT, FLT
Tipps zu den Objekten der Sicht
pm_vgm.vgt;
pm_mindm.flt;
pm_npt.flt
VGX, FLX
temporäre Übersetzung der VGM/FLC Addon.vgx
VGI, FLI
Standard-Inhalt der Objekte der Sicht
pm_vgm.vgi
VGQ, FLQ
SiSy-Basic-Quelltexte
pm_npt.flq
EMF
Sichtvorschau für das VGM bei
Anlegen eines neuen Projektes
pm_vgm.emf
TXT
First Aid = Erste Hilfe zur Sicht
(wird angezeigt, wenn die Sicht noch
leer ist)
pm_vgm.txt;
pm_mindm.txt;
pm_npt.txt
ASI
Assistentendateien
pm_vgm.asi;
pm_mindm.asi;
pm_npt. asi
CHM, HTML, GIF
Hilfedateien mit Quellen
pm_vgm.chm;
pm_npt.vgm;
org_hpt.htm;
org_hpt1.gif
EXP
Add-On Datei, die zur Installation des
Add-On’s benötigt wird
pm.exp
FLK
Vorlagendatei für das Objekt
„Aufzählung”
(Dokumentengenerierung)
pm_npt1.flk
SEX
Vorlagendatei für Sichten, bei der
Objekte geladen werden
pm_vgm.sex;
pm_mindm.sex;
pm_npt1.sex
84
Anlage 4
Blatt 1
Die Dialoge der Schnittstelle
Abbildung 28 Die Dialogseite "Tipp"
Abbildung 29 Die Dialogseite
"Ausgabeform"
Abbildung 30 Die Dialogseite
"ODBCVerbindung"
Abbildung 6 Die Dialogseite "StartObjekt"
85
Anlage 4
Blatt 2
Abbildung 7 Die Dialogseite "Start"
Abbildung 8 Die Dialogseite „Vorlage“
Abbildung 9 Die Dialogseite "Manuell"
Abbildung 10 Die Dialogseite "Abtauchen"
86
Anlage 4
Blatt 3
Abbildung 11 Die Dialogseite "Exportieren"
Abbildung 12 Die Dialogseite "Spalten"
Abbildung 13 Die Dialogseite
Abbildung 14 Die Dialogseite "Übersicht"
"Einstellungen für Vorlage"
87
Anlage 5
Das erzeugte CSV-Dokument
Stellnr;Stellenname;Telnr1;Telnr2;Faxnr
int;string;string;string;string
TRUE;FALSE;FALSE;FALSE;FALSE
1;QM-Beauftragter;0190123456;0190654321;01901234567
2;Projektleiter;0190147258;0190258147;01901234567
3;Sekretärin;0190666666;0190111111;01901234567
88
Anlage 6
Das erzeugte XML-Dokument
<?xml version="1.0"?>
<!DOCTYPE test [
<!ELEMENT Stelle ( Stellennr, Stellennmae, Telnr1, Telnr2,
Faxnr )>
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
]>
Stellennr (ID) >
Stellennmae (#PCDATA) >
Telnr1 (#PCDATA) >
Telnr2 (#PCDATA) >
Faxnr (#PCDATA) >
<test>
<Stelle>
<Stellennr>1</Stellennr>
<Stellennmae>QM-Beauftragter</Stellennmae>
<Telnr1>0190123456</Telnr1>
<Telnr2>0190654321</Telnr2>
<Faxnr>01901234567</Faxnr>
</Stelle>
<Stelle>
<Stellennr>2</Stellennr>
<Stellennmae>Projektleiter</Stellennmae>
<Telnr1>0190147258</Telnr1>
<Telnr2>0190258147</Telnr2>
<Faxnr>01901234567</Faxnr>
</Stelle>
<Stelle>
<Stellennr>3</Stellennr>
<Stellennmae>Sekretaerin</Stellennmae>
<Telnr1>0190666666</Telnr1>
<Telnr2>0190111111</Telnr2>
<Faxnr>01901234567</Faxnr>
</Stelle>
</test>
89
Anlage 7
Die Arbeitsergebnisse auf Datenträger
Der vorliegende Datenträger enthält den kompletten Quelltext der in der Arbeit
beschriebenen Schnittstelle in Form C++ - Quellcode- und Headerdateien.
Weiterhin liegt das installationsfähige Add-On „Dat_Exp“ auf dem Datenträger
vor. Dieses Add-On kann über den Menüpunkt „Einstellungen/Add-On
hinzufügen...“ installiert werden.
Zum Datenexport durch das Add-on „Dat_Exp“ muss die im SiSy-Ordner
befindliche „Assi.exe“ mit der bereitgestellte „Assi.exe“ auf dem Datenträger
ersetzt werden.
Die vollständige Installationsanweisung ist auf dem Datenträger in der Datei
„readme.txt“ zu finden.
Link zur CD