
\chapter{Einleitung} \label{Einleitung}
Bei der Programmierung gro"ser Systeme m"ussen immer wieder
Design-Entscheidungen getroffen werden, Funktionalit"at in ein System
einzubauen oder sie durch einen auf Wiederverwendung und Systemschichtung
beruhenden Proze"s zur Verf"ugung zu stellen. Auch bei der Entwicklung von
Programmiersprachen steht der Sprachdesigner vor einer "ahnlichen Frage.
Datentypen k"onnen in die Sprache eingebaut ({\it Built-in}-Ansatz) oder wegen
der gr"o"seren Flexibilit"at in Form von  Softwarebibliotheken angeboten werden
({\it Add-on}-Ansatz) \cite{Mat91}.


Im Rahmen einer Dissertation \cite{DissFlorian} entstand am Arbeitsbereich DBIS
das Tycoon-System\footnote{{\bf Ty}ped {\bf c}ommunicating {\bf o}bjects in
{\bf o}pen e{\bf n}vironments} \cite{TycoonReport} als persistente polymorphe
Programmierumgebung zur Realisierung datenintensiver Anwendungen.
Das Tycoon-System verf"ugt "uber eine Softwarebibliothek, die unter anderem zur
Verwaltung von Massendatentypen \cite{AtkRicTri90} geeignet ist und in
TL\footnote{{\bf T}ycoon {\bf L}anguage} \cite{MaSc92}, der polymorphen
Programmiersprache des Systems, implementiert wurde.

Da die Bibliothek von einer gr"o"seren Gruppe "uber einen l"angeren Zeitraum
ohne eine zentrale, das Projekt steuernde Instanz entwickelt wurde, mangelt es
der Bibliothek historisch gewachsen an der notwendigen Einheitlichkeit. Mit der
Zahl der an der Bibliothek arbeitenden Personen stieg auch die Zahl der
unterschiedlichen Konzepte. Vor diesem Hintergrund wurde 1995 ein Projekt zur
Neugestaltung der Bibliothek des Tycoon-Systems ins Leben gerufen.
\cite{Jun95} untersuchte dabei die Bibliothek f"ur Standarddatentypen, w"ahrend
die vorliegende Arbeit die Weiterentwicklung der in der Bibliothek des
Tycoon-Systems zahlreich vorkommenden Module zur Verwaltung von
Massendatentypen darstellt.

Ein wesentliches Ziel der Entwicklung von Softwarebibliotheken ist es,
qualitativ hochwertige Software anzubieten. Fragen der Wiederverwendbarkeit, 
"Ubersichtlichkeit und Kombinierbarkeit von Software spielen dabei eine
besondere Rolle. Durch Wiederverwendbarkeit von Software, die im Falle von
Bibliotheken wesentlich auf "Ubersichtlichkeit und Kombinierbarkeit basiert, 
k"onnen nicht nur die Kosten von Softwareprojekten gesenkt, sondern auch die
Softwarequalit"at entscheidend erh"oht werden. Ein Grund hierf"ur ist die
steigende Lebensdauer der Softwarekomponenten, die das Auffinden und Beheben
von M"angeln beg"unstigt.

Ein modulorientierter Entwurfsansatz ist eine M"oglichkeit,
Wiederverwendbarkeit in Softwarebibliotheken zu realisieren. Module bieten dem
Benutzer "uber eine Schnittstelle Funktionalit"at an. Die interne Realisierung
dieser Funktionalit"at inklusive der internen Repr"asentation der Daten bleibt
dem Benutzer verborgen. 

Die in modulorientierten Sprachen h"aufig anzufindende Trennung von Definition
und Implementierung, verbunden mit dem Konzept der Kapselung, f"uhrt zu einem
typischen Vorgehen bei der Entwicklung von Bibliotheken f"ur Massendatentypen.
Durch das Konzept des abstrakten Datentyps wird die Kombination von
Funktionalit"at in modulorientierten Sprachen erheblich erschwert. Ein
typisches Modul einer Massendatentypen-Bibliothek realisiert seine
Funktionalit"at unter Verwendung eines anderen abstrakten Datentyps zur
Speicherung der Daten. Die Schichtenbildung aus abstrakten Datentypen
beschr"ankt sich in der Regel auf zwei Ebenen. Somit f"uhrt eine derartige
Organisation von Bibliotheken zu einer Vielzahl unverkn"upft nebeneinander
stehender Modulpaare. Die Wiederverwendung innerhalb einer modulorientierten
Bibliothek ist damit relativ gering. Eine Kombination der von den Modulen
angebotenen Funktionalit"at ist nicht effizient m"oglich. 

Objektorientierte Sprachen erweitern die M"oglichkeiten der Wiederverwendung
gegen"uber modulorientierten Sprachen um das Konzept der Vererbung. Neben
der aus modulorientierten Sprachen bereits bekannten Benutztbeziehung besitzen 
die Klassen einer objektorientierten Sprache auch die
M"oglichkeit der Wiederverwendung von Konzepten und Implementierungen innerhalb
einer Bibliothek durch die Vererbungsbeziehung. Vererbung gibt dem
Bibliotheksentwickler somit die M"oglichkeit, die zu implementierenden Klassen
zun"achst nur auf einer konzeptuellen Ebene zu modellieren und diese Konzepte
schrittweise zu spezialisieren. Durch die von manchen objektorientierten
Sprachen angebotene Mehrfachvererbung wird zus"atzlich die Kombination von
Funktionalit"at innerhalb der Bibliothek erm"oglicht.

Durch diese Erweiterung der Sprachkonzepte wird die Wiederverwendung auch
innerhalb der Bibliothek unterst"utzt, statt sie nur dem Benutzer der
Bibliothek zukommen zu lassen. Als wesentlicher Vorteil f"ur 
den Benutzer ergibt sich eine einheitliche und einfache Sicht auf komplizierte
Objekte sowie eine Hilfe bei der Auswahl der zu verwendenden Klassen, da
Klassen die Eigenschaften der von ihnen erbenden Klassen abstrakt
zusammenfassen und auf diese Weise die Eigenschaften der Klassen der
Bibliothek klassifizieren. 

Angesichts der erheblichen Vorteile objektorientierter gegen"uber
modulorientierten Bibliotheken wird von einer blo"sen "Uberarbeitung der
bestehenden modulorientierten Bibliothek zur Verwaltung von Massendaten im
Tycoon-System abgesehen. Ziel der Arbeit ist statt dessen die Entwicklung 
einer neuen, diese Vorteile nutzende Bibliothek. Um
Vorgehensweisen, St"arken aber auch Schw"achen bestehender Bibliotheken
erkennen zu k"onnen, erfolgt im Rahmen der Arbeit eine Untersuchung
mehrerer objektorientierter Sprachen und ihrer Bibliotheken zur Verwaltung von
Massendatentypen. Verglichen werden daher die Sprache C++ \cite{Strou92} und
die in C++ geschriebene Bibliothek NIHCL\footnote{{\bf N}ational {\bf
I}nstitute of {\bf H}ealth {\bf C}lass {\bf L}ibrary} sowie die Sprachen
Smalltalk \cite{GoRo83} und Eiffel \cite{Mey92} mit ihren Bibliotheken.

Die Analyse dieser objektorientierten Bibliotheken zeigt den erheblichen
Einflu"s von Spracheigenschaften auf die Gestaltung von Bibliotheken und deckt
einige Schw"achen auf, die aus einer unvorsichtigen Verwendung von Vererbung
resultieren. Der mit Hilfe von Objektorientierung erreichbare Vorteil einer
einheitlichen Sicht auf komplizierte Objekte wird von den Bibliotheken
verfehlt, was als wesentliche Schw"ache der untersuchten objektorientierten
Bibliotheken zu vermerken ist.

Ausgehend von gezeigten Vorteilen objektorientierter Modellierung wird
versucht, die objektorientierte Programmierung auch in der modulorientierten
Sprache des Tycoon-Systems zu realisieren. Wegen der geringen Unterst"utzung
objektorientierter Programmierung in der Sprache TL entstand als
Forschungsprojekt die objektorientierte TL-Variante TooL\footnote{{\bf T}ycoon
{\bf o}bject-{\bf o}riented {\bf L}anguage} 
\cite{GaMa95a}. Neben Klassen und Vererbung bietet das Typsystem von TooL die
M"oglichkeit zur kontravarianten Spezialisierung von Methodenparametern. Dies
wird durch die Integration einer weiteren Typrelation, der
"Ahnlichkeitsrelation ({\it type matching}) erreicht. 

Die im Rahmen dieser Arbeit geleistete vollst"andige Neuentwicklung,
Erweiterung und Implementierung der Tycoon-Bibliothek zur Verwaltung von
Massendatentypen erfolgt in der neuen, prototypischen Sprache TooL. Gesichtspunkte der Wiederverwendung innerhalb der Bibliothek sowie das Angebot 
einer einfachen Schnittstelle auch f"ur komplexe Objekte stehen hierbei im
Vordergrund. Durch die Entwicklung eines neuartigen Klassifizierungsschemas zur
Spezialisierung und Kombination der in der Bibliothek angebotenen
Funktionalit"at kann unter Ausnutzung der M"oglichkeiten des Typsystems der
Sprache TooL eine Bibliothek realisiert werden, welche die Schw"achen der 
untersuchten Bibliotheken vermeidet.

Kapitel \ref{SoftBibs} greift zun"achst die Abw"agung zwischen fest in das
System eingebundener Funktionalit"at und der Verwendung einer
Softwarebibliothek auf. Nach der Erl"auterung der Bedeutung von Bibliotheken
beschreibt Kapitel \ref{SoftBibs} die Qualit"atsanforderungen an Software und
zeigt, da"s an die Qualit"at von Softwarebibliotheken  besondere Anforderungen
zu stellen sind. Ausgehend von diesen Erkenntnissen vergleicht
Kapitel \ref{Grundstrukturen}, ob und inwieweit Modul- bzw. Objektorientierung
die Entwicklung qualitativ hochwertiger Bibliotheken unterst"utzt. Nach der
Beschreibung der Vorteile objektorientierter Bibliotheken erfolgt in Kapitel
\ref{OOProgs+Bibs} eine Analyse bestehender objektorientierter
Bibliotheken. Kapitel \ref{oointl} untersucht die
Eignung von TL, der urspr"unglichen Programmiersprache des Tycoon-Systems, f"ur
die Entwicklung einer die Vorteile der Objektorientierung realisierenden
Software-Bibliothek. Hierbei zeigt sich, welche M"oglichkeiten, aber auch
welche Grenzen die Sprache TL f"ur die objektorientierte Programmierung
aufweist. Eine Einf"uhrung in die f"ur die vollst"andige Neuentwicklung
verwendete Programmiersprache TooL findet sich in Kapitel
\ref{TooLSprach}. Kapitel \ref{TBehBib} beschreibt die im Rahmen der Arbeit
gestaltete und implementierte Beh"alterklassen-Bibliothek der Sprache TooL,
ihre Konzepte und das dabei verwendete Klassifzierungsschema. 