% ------------------------------------------------------------------ %
%                                                                    %
% Datei:        anbindg2.tex                                         %
% Autor:        Oliver Nietsch                                       %
%                                                                    %
% Universitaet Hamburg                                               %
% Fachbereich Informatik                                             %
% Arbeitsbereich DBIS                                                %
%                                                                    %
% Thema: Studienarbeit: "Gateway zwischen dem StP-Repository         %
%                        und Tycoon"                                 %
%                                                                    %
% Inhalt: LaTeX-Dokument: Studienarbeit,                             %
%                         Kapitel 5: Anbindung des Tycoon-Systems    %
%                                    an die StP Umgebung, Teil 2     %
%                                                                    %
% Version vom  19. 3.1996                                            %
% ------------------------------------------------------------------ %

\section{Die Tycoon StP Bibliothek stpenv}
\label{Sec:Modellierg}

Die Bibliothek {\sl stpenv} bietet auf der Tycoon-Ebene die gesamte Funktionalit"at des {\sf StP Application Program Interface}, um indirekt unter Verwendung der Funktionalit"at des {\sf StP Object Management Systems} auf Repositoryobjekte innerhalb des {\sf StP Repositorys} zugreifen zu k"onnen. Dabei finden die im Abschnitt~\ref{Sec:Umfang} dargestellten Anforderungen an die {\sf StP} Bibliothek ihre Ber"ucksichtigung in den unterschiedlichen, im Abschnitt~\ref{SubSec:BibUmf} wiedergegebenen, Modulen. 

\subsection{Modellierungsaspekte}
\label{SubSec:ModAspekt}

Eine Grundlage der Modellierung der Bibliothek {\sl stpenv} stellt das in der Abbildung~\ref{Fig:PDModell} wiedergegebene {\sf StP Persistent Data Model} dar. Einschr"ankend gilt aber, da"s die "`Kategorien"' \engl{CASE Type}, \engl{Annotated Object Type}, \engl{Reference Type} und \engl{SE Type} keine Ber"ucksichtigung im Rahmen der Modellierung der {\sf StP} Bibliothek finden, da nur ihre Subtypen, die ihrerseits keine Supertypen anderer PDM-Typen sind, im Repository abgelegt werden k"onnen.

Desweiteren basiert die Modularisierung der Bibliothek {\sl stpenv} auf den in der Abbildung~\ref{Fig:PDBeziehg} aufgef"uhrten Beziehungen zwischen den einzelnen Datentypen des PDM. Die Art der Auspr"agung der Beziehung zwischen zwei Repositoryobjekten ist dabei unterschiedlich zu ber"ucksichtigen. Handelt es sich um eine 1:1 Beziehung, ist dieses durch das Vorhandensein eines betreffenden Attributs des referenzierten Objekts darstellbar. 1:n Beziehungen sind durch die M"oglichkeit zur Bildung von "`Ansammlungen"' referenzierter Objekte, \engl{Collections} oder \engl{Big Collections}, darzustellen. Au"serdem sind die sonstigen \engl{CASE Type} Attribute und ihre Verwaltungs- und Manipulationsfunktionen in angemessener Weise zu ber"ucksichtigen. Eine Erl"auterung der \engl{Case Type} Attribute und deren Datentypen ist in \cite{StPoms94} enthalten.

Die im Abschnitt~\ref{Sec:Sicht} erl"auterte Anwendungssicht auf das {\sf StP Repository} mit ihrer Abbildung von Anwendungsdatentypen auf PDM-Datentypen wurde ebenfalls innerhalb der Implementierung der {\sf StP} Bibliothek ber"ucksichtigt.

\subsection{Bibliotheksumfang}
\label{SubSec:BibUmf}

In der Abbildung~\ref{Fig:Module} ist die Modulstruktur der entwickelten Tycoon {\sf StP} Umgebung {\sl stpenv} dargestellt. Die Umgebung umfa"st drei verschiedene Arten von Modulen, welche unterschiedliche Funktionalit"aten beinhalten:

\begin{figure}[hbt]
  \begin{center}
    \ 
    \epsfig{figure=module4.eps,width=12cm}  
  \end{center}    
  \caption{\label{Fig:Module} Tycoon {\sf StP} Bibliothek {\sl stpenv}}
\end{figure}

\begin{description}
  \item[Spezielle Funktionalit"at der StP API-Datentypen:] Die Module dieser Kategorie stellen im Zusammenhang mit dem Modul {\sl omsGeneric} die Funktionen der {\sf StP API} C-Datenstrukturen {\tt oms\_$<$pdm\_typ$>$\_tp} zur Verf"ugung. Sie bilden ausschlie"slich Operationen der C-Datenstrukturen {\tt oms\_cntx\_tp}, {\tt oms\_cntx\_ref\_tp}, {\tt oms\_file\_tp}, {\tt oms\_file\_hist\_tp}, {\tt oms\_file\_lock\_tp}, {\tt oms\_item\_tp}, {\tt oms\_link\_tp}, {\tt oms\_link\_ref\_tp}, {\tt oms\_node\_tp}, {\tt oms\_node\_ref\_tp}, {\tt oms\_note\_tp} und {\tt oms\_viewpoint\_tp} des {\sf StP Application Program Interface} ab.

Beispielsweise finden die Operationen des C-basierten {\sf StP API} PDM-Datentypen {\tt oms\_node\_tp} ihre ungef"ahre Entsprechung auf der Tycoon-Ebene im Modul {\sl omsNode}, wobei {\sl omsGeneric} generische Funktionen aller PDM-Datentypen umfa"st. Das Modul {\sl omsGeneric} wird ausschlie"slich in den Modulen dieser Kategorie importiert. Operationen im Rahmen von \engl{Collection} oder \engl{Big Collection} Typen sind in den Modulen der n"achsten Kategorie enthalten.
  \item[Allgemeine StP API Funktionalit"at:] Innerhalb dieser Kategorie kann zwischen zwei Arten von Modulen unterschieden werden. Die Module {\sl omsBigCollection} und {\sl omsCollection} stellen generische Funktionen zur Verf"ugung, mit deren Hilfe \engl{Big Collections} oder \engl{Collections} von mehreren Objekten eines zu spezifizierenden PDM-Datentypen erstellt werden k"onnen. Die restlichen Module stellen Funktionen auf den {\sf StP API} C-Datenstrukturen {\tt oms\_app\_type\_tp}, {\tt oms\_idlist\_tp}, {\tt oms\_pdm\_type\_tp}, {\tt oms\_object\_id\_tp}, {\tt oms\_repos\_tp}, {\tt oms\_status\_tp}, {\tt oms\_time\_tp} und {\tt oms\_txn\_tp} bereit.
  \item[Spezielle Tycoon Funktionalit"at:] Module dieser Kategorie erweitern die {\sf StP} Funktionalit"at um eine im Rahmen des {\sf StP API} nicht vorhandene Funktionalit"at, welche auf der Tycoon-Ebene ben"otigt wird, um die Realisierung der Repositoryanbindung "uberhaupt erstellen zu k"onnen.
\end{description}

\subsection{Aufgaben der Bibliotheksmodule}
\label{SubSec:BibAufg}

Grundlage s"amtlicher Module der Bibliothek {\sl stpenv} sind die in der Tabelle~\ref{Tab:ModTycoon} aufgef"uhrten Module {\sl omsError} und {\sl omsRep}. Das Modul {\sl omsQuery} kann bei Bedarf erweitert werden, um beispielsweise korrekte {\sf OMS} Anfragen in ein Tycoon {\sl String}-Format unzuwandeln.

\newpage

\begin{table}[hbt]
\begin{center}
\begin{tabular}{|l|l|}
\hline
{\bf Modul} & {\bf Beschreibung}\\
\hline\hline
{\sl omsError} & Spezifikation der auszuf"uhrenden Fehler-\\
               & routine beim Auftreten eines {\sf StP OMS}-\\
               & Fehlers.\\
\hline
{\sl omsQuery}  & Kapselung von {\sf StP OMS} Anfragen.\\
\hline
{\sl omsRep} & Enth"alt die Deklaration der wichtigsten Imple-\\
             & mentationsdatentypen.\\
\hline
\end{tabular}
\end{center}
\caption{Module mit Tycoon Funktionalit"at}
\label{Tab:ModTycoon}
\end{table}

Die in der Tabelle~\ref{Tab:ModPDM} wiedergegebenen Module entsprechen auf der Ebene des {\sf StP Application Program Interface} einer Anzahl von Operationen auf C-Datenstrukturen der Bezeichnung {\tt oms\_$<$pdm\_typ$>$\_tp}. Das Tycoon-Modul {\sl omsNode} umfa"st zum Beispiel Funktionen des {\sf StP API} Datentypen {\tt oms\_node\_tp}.\\

\begin{table}[hbt]
\begin{center}
\begin{tabular}{|l|l|}
\hline
{\bf Modul} & {\bf Beschreibung}\\
\hline\hline
{\sl omsGeneric} & Generische Hilfsfunktionen, Repositorymanagement-\\
                 & funktionen, Operationen zum Auffinden von Reposi-\\
                 & objekten und Attributzugriffs- und Zuweisungs-\\
                 & funktionen f"ur beliebige/alle PDM-Datentypen.\\
\hline
{\sl oms$<$pdm\_typ$>$}  & Operationen aus {\sl omsGeneric} und spezielle Funktionen\\
                         & zum Erstellen und Auffinden von Repositoryobjekten\\
                         & und Navigationsoperationen.\\
\hline
\end{tabular}
\end{center}
\caption{Module mit spezieller PDM-Datentyp Funktionalit"at}
\label{Tab:ModPDM}
\end{table}

Die weiteren in der Tabelle~\ref{Tab:ModStP} wiedergegebenen Module bilden eine Funktionalit"at im Rahmen der Operationen auf \engl{CASE Type} Attributen.

Von den Operationen der PDM-Datentypen sind auf der Tycoon-Ebene \engl{Collection} und \engl{Big Collection} Operationen getrennt und in separaten Modulen zusammengefa"st. Auf der C-Ebene sind einige dieser Operationen im Zusammenhang mit den C-Datenstrukturen {\tt oms\_coll\_tp} und {\tt oms\_bigcoll\_tp} im Rahmen der Operationen auf Objekten der Datenstruktur {\tt oms\_$<$pdm\_typ$>$\_tp} implementiert. 

\begin{table}[hbt]
\begin{center}
\begin{tabular}{|l|l|}
\hline
{\bf Modul} & {\bf Beschreibung}\\
\hline\hline
{\sl omsBigCollection} & Generische Operationen zum Generieren und\\
                       & Manipulieren von \engl{Big Collection} Objekten\\
                       & beliebiger/aller PDM-Datentypen.\\
\hline
{\sl omsCollection} & Generische Operationen zum Generieren und\\
                    & Manipulieren von \engl{Collection} Objekten\\
                    & beliebiger/aller PDM-Datentypen.\\
\hline
{\sl omsApplicationType} & Operationen entsprechend des {\sf StP API} Datentyps\\
                         & {\tt oms\_app\_tp} zur Abbildung von Anwendungs-\\
                         & datentypen auf PDM-Datentypen.\\
\hline
{\sl omsIdList} & Operationen entsprechend des {\sf StP API} Datentyps\\
                & {\tt oms\_idlist\_tp} zum Verwalten von ID-Listen.\\
\hline
{\sl omsPDMType} & Operationen entsprechend des {\sf StP API}\\
                 & Datentyps {\tt oms\_pdm\_type\_tp} zur Verwaltung\\
                 & der internen Darstellung der einzelnen PDM-Daten-\\
                 & typen.\\
\hline
{\sl omsObjectId} & Operationen entsprechend des {\sf StP API}\\
                  & Datentyps {\tt oms\_object\_id\_tp} zum Erstellen\\
                  & einer individuellen Objekt ID f"ur Objekte\\
                  & innerhalb des {\sf StP} Repositorys.\\
\hline
{\sl omsRepository} & Operationen entsprechend des {\sf StP API}\\
                    & Datentyps {\tt oms\_repos\_tp} zum Initialisieren\\
                    & der {\sf StP} Systemvariablen, "Offnen, Verwalten\\
                    & und Schlie"sen des {\sf StP} Repositorys.\\
\hline
{\sl omsStatus} & Operationen entsprechend des {\sf StP API}\\
                & Datentyps {\tt oms\_status\_tp} zum "Uberpr"ufen\\
                & ob eine {\sf API} Operation erfolgreich ausgef"uhrt\\
                & werden konnte.\\
\hline
{\sl omsTime} & Operationen entsprechend des {\sf StP API}\\
              & Datentyps {\tt oms\_time\_tp} zur Operation\\
              & auf Datums- und Zeitrepr"asentationen.\\
\hline
{\sl omsTransaction} & Operationen entsprechend des {\sf StP API}\\
                     & Datentyps {\tt oms\_txn\_tp} zum Verwalten\\
                     & von {\sf StP Repository} Transaktionen.\\
\hline
\end{tabular}
\end{center}
\caption{Module mit allgemeiner {\sf StP API} Funktionalit"at}
\label{Tab:ModStP}
\end{table}

\section{Realisierungsprobleme}
\label{Sec:Schwierig}

Bez"uglich der entwickelten {\sf StP} Tycoon-Bibliothek {\sl stpenv} sind einige kritische Aspekte anzumerken, welche haupts"achlich einen Einflu"s auf die vorgenommene Modellierung der {\sf StP} Umgebung auf der Ebene des Tycoon-Systems haben. Daraus ergibt sich zwangsl"aufig, da"s die gew"ahlte Modellierung auf der Tycoon-Ebene nicht deckungsgleich zu der auf der {\sf StP} Ebene ist.

Die haupts"achlichen Schwierigkeiten treten bei der Abbildung des {\sf StP Persistent Data Models} mit Hilfe der {\sf StP API} C-Funktionen auf Module, Datenstrukturen und Operationen der Bibliothek {\sl stpenv} und der Interpretation der Anwendungssicht auf das Repository mit der anschlie"senden Konvertierung der Anwendungsdatentypen auf PDM-Datentypen auf.

\subsection{Abbildung des StP Persistent Data Models}
\label{SubSec:AbbPDM}

Das in der Abbildung~\ref{Fig:PDModell} wiedergegebene {\sf StP Persistent Data Model} stellt den Zusammenhang der existierenden PDM-Datentypen auf der Grundlage von Vererbungsbeziehungen dar, wobei jeder PDM-Datentyp in einer Subtypbeziehung zu einem anderen Typen steht. Desweiteren besitzen alle PDM-Datentypen eine Anzahl von Attributen: spezielle oder, im Rahmen der Vererbungbeziehungen zwischen PDM-Datentypen, gemeinsame Attribute. Leider hat es die Firma {\sf IDE} jedoch vers"aumt, diesen Sachverhalt in der Systemdokumentation detailliert wiederzugeben, so da"s an dieser Stelle keine weiteren Aussagen "uber die genaue Auspr"agung der Vererbungsbeziehungen get"atigt werden k"onnen.

Entit"aten der PDM-Typen werden in der relationalen Datenbank {\sf Sybase} abgelegt und sind, wie im Abschnitt~\ref{Sec:CProgAPI} beschrieben, unter anderem durch den Einsatz der C-Funktionen des {\sf StP API} zugreifbar. Sowohl auf die gesamte Struktur eines PDM-Objekts als auch auf seine einzelnen Attribute kann zugegriffen werden. Allerdings liefern die {\sf API} Operationen keine R"uckschl"usse "uber Vererbungscharakteristika referenzierter Objekte, da der Repositoryzugriff mit Hilfe parallel zueinander stehender C-Funktionen realisiert wird.

Da die {\sf StP API} C-Funktionen keinen R"uckschlu"s zulassen, in welcher Weise das {\sf Persistent Data Model} auf sie abgebildet worden ist, ist es fraglich, ob man ausgehend von den {\sf StP API} Operationen im Rahmen eines \engl{Re-Engineering} Vorgehens die tats"achlich vorliegenden Modellierungskomponenten auf der {\sf StP} Ebene ausdr"ucken kann, um sie anschlie"send auf der Tycoon-Ebene zu "ubernehmen.

\subsection{Konvertierung von Anwendungs- auf PDM-Datentypen}
\label{Konvert}

Wie im Abschnitt~\ref{Sec:Sicht} erl"autert, wird die Verbindung zwischen Datentypen von Anwendungsprogrammen und denen des \engl{
Persistent Data Models} mit Hilfe der "`Anwendungstypendatei"' {\tt app.types} realisiert. Diese Datei enth"alt jedoch ausschlie"slich Eintr"age, die spezifizieren, auf welche CASE Objekttypen die Anwendungsdatentypen abzubilden sind. Die Semantik, die hinter dieser Abbildung steht, ist mit Hilfe der {\sf StP API} Funktionen nicht nachzuvollziehen und folglich nicht auf die Tycoon-Bibliothek {\sl stpenv} zu "ubertragen.

So k"onnen mit einem grafischen \engl{Editor} zum Beispiel, innerhalb des CASE-Werkzeugs {\sf StP/OMT} entwickelte Komponenten von Modellen mit Hilfe der Datei {\tt app.types} auf eine Anzahl g"ultiger Repositoryobjekte abgebildet werden. Die {\sf Application Program Interface} Operationen leisten diesen Dienst nicht, da sie es nur erm"oglichen, isolierte PDM-Objekte im Repository zu generieren oder auf sie zuzugreifen. Eine Modellierung von g"ultigen Anwendungsdatentypen kann deshalb auf der Tycoon-Ebene durch die {\sf API} Funktionen nicht erfolgen.

\clearemptydoublepage
