% Studienarbeit von Markus Breilmann
%
% Universitaet Hamburg
% Fachbereich Informatik
% Arbeitsbereich DBIS
%
% Kapitel 1: Einleitung und Motivation


\chapter{Einleitung und Zielsetzung}
\label{Kap. Einleitung und Zielsetzung}

\section{Einleitung }
\label{Einleitung }

In allen Bereichen der Wirtschaft und somit auch in der Software-Branche ist eine Zunahme des Kostendruckes zu beobachten. Er bedingt die Forderung nach geringen Entwicklungszeiten und einfacher Wartbarkeit von Software-Produkten.

Dieser Forderung kann durch den Einsatz von Mehrzweckprogrammiersprachen begegnet werden. Sie machen den Einsatz mehrerer spezialisierter Sprachen in einer Softwarelösung "uberfl"ussig und reduzieren damit die Komplexität eines Systems. Die Folge sind leichtere Erweiterbarkeit und Wartung der Produkte und einfachere Anforderungsprofile an die beteiligten Entwickler. Die Wiederverwendbarkeit von Code ist von ebenso gro"ser Bedeutung: viele Programmteile z.B. f"ur Benutzerschnittstellen, Dateiverwaltung und "ahnliches k"onnen in Folgeprojekten erneut eingesetzt werden und senken dadurch die Kosten.

Ein bedeutender Teil heutiger Software operiert mit gro"sen Datenmengen. Dies f"uhrt zu einem steigenden Bedarf an Entwicklungswerkzeugen mit Datenbankausrichtung, die eine effiziente Software-Entwicklung vor allem f"ur heterogene Systemumgebungen erlauben und den Programmierer in gr"o"serem Ma"se als bisher unterstützen. Diese Tatsache und die vorher genannten Punkte motivierten die Entwicklung sogenannter polymorpher persistenter Programmiersprachen. Sie integrieren verschiedene Aspekte bekannter Mehrzweckprogrammiersprachen mit solchen zur Datenverwaltung in Datenbanken. Sie l"osen dadurch typische Probleme wie den ``Impedance Mismatch'' und schaffen eine für den Programmierer einheitliche semantische und syntaktische Programmierumgebung f"ur die Erstellung datenintensiver Anwendungen \cite{MMuS94}. Das Konzept der Polymorphie \cite{CaWe85} erm"oglicht generische Funktionsbibliotheken und damit die flexible Wiederverwendung von Programmcode. Die strikte Typisierung von Daten in solchen Systemen ist geeignet, die Korrektheit und Sicherheit von Software zu erh"ohen.

Die Sprachumgebung Tycoon \cite{MaSc92a}, \cite{Matt93}, \cite{MMM93} ist ein Beispiel f"ur eine polymorphe persistente Programmiersprache. Sie ist das Ergebnis von Forschungsprojekten des Arbeitsbereiches Datenbanken und Informationssysteme (DBIS) am FB Informatik der Universit"at Hamburg . In Programmiersystemen wie Tycoon hat sich eine Schichtenarchitektur als sinnvoll erwiesen. Augenf"alliges Merkmal ist die Ausf"uhrung von Anweisungen eines kleinen syntaktischen Sprachkernes durch einen Interpreter. Neben dem ausf"uhrbaren Programmcode und dem eigentlichen Quelltext existiert eine Zwischenrepr"asentation f"ur Reflexion und damit Optimierungen, wie sie aus Datenbanksystemen bekannt sind. Ein wichtiger Aspekt des Tycoon-Systems ist die Eigenschaft der Selbstimplementation der Hochsprache: die Sprachprozessoren, Type-Checker usw. sind in Tycoon selbst realisiert.

Investitionen f"ur Anschaffung und Wartung von Software und die Schulung von Personal stellen einen beachtlichen Kostenfaktor dar. Ein wirksamer Investitionsschutz für Softwaresysteme wird zum einen durch Vertr"aglichkeit mit anderen Produkten, zum anderen durch Einsetzbarkeit solcher Systeme in unterschiedlichen Hardware- und Betriebssystemumgebungen erm"oglicht. Die Vertr"aglichkeit mit anderen Software-Produkten kann durch offene Programmiersysteme mit wohldefinierten Schnittstellen erreicht werden. Anpassungsf"ahigkeit ist vornehmlich bei portabler Software gegeben, deren Struktur eventuelle "Anderungen antizipiert.

Die Forderung nach portabler Software ist unter Kostengesichtspunkten offensichtlich. Neben dem Argument sich schnell weiterentwickelnder Hard- und Betriebssystem-Software gewinnt dar"uber hinaus ein weiteres zunehmende Bedeutung: das Interesse an der computergest"utzten Verwaltung von Gesch"aftsprozessen. Der sinnvolle Einsatz von sogenannten ``Workflow-Management-Systemen'' erfordert nicht nur den Austausch von Daten "uber die Grenzen von Betriebssystemen, Netzwerken und Hardware hinweg, sondern auch den Transfer ganzer Prozesse, also von Programmen in Ausf"uhrung. Damit wird Portabiltit"at zu einem zentralen Bewertungskriterium von Software.

Das Tycoon-System stellt die Basistechnologie für ``Workflow-Managment-Systeme'' zur Ver\-f"ugung und kommt der Forderung nach Portabilit"at durch seine interne Struktur entgegen: der weitaus gr"o"ste Teil des Systems ist in Tycoon selbst implementiert, Gegenstand einer Portierung ist lediglich der Interpreter. Der Anwendungsprogrammierer wird dadurch v"ollig von Fragen der Portabilit"at entlastet. Bei der Entwicklung des Interpreters kamen zahlreiche Konzepte zum Einsatz, die dessen Portabilit"at erm"oglichen oder verbessern. 

\section{Zielsetzung}
\label{Abs. Zielsetzung}

Hauptziel der vorliegenden Arbeit ist die Portierung des Tycoon-Systems auf das Apple Macintosh Betriebssystem. Gegenstand der Portierung sind zum einen die Tycoon-Maschine (Interpreter) \footnote{Das Tycoon Laufzeitsystem wurde zum "uberwiegenden Teil von Bernd Mathiske, DBIS, FB Informatik, entwickelt und implementiert. Der Byte-Code-Interpreter (Modul {\sf tmexec}) wurde haupts"achlich durch Andreas Gawecki, DBIS, konzipiert. Die Entwicklung fand auf Sun Sparc Rechnern unter den Betriebssystemen SunOS und Solaris statt.}, zum anderen der DBIS-eigene Einzelbenutzerobjektspeicher ``Tycoon Memory'' (TYMEM) \footnote{Entwickelt von Bernd Mathiske, DBIS.}.

Diese Arbeit soll die Eignung der verwendeten Konzepte f"ur Portabilit"at untersuchen. Dabei stellt die Portierung einer Unix-Applikation dieser Komplexit"at auf das Macintosh Betriebssystem eine besodere Herausforderung dar, da in zentralen Bereichen starke Unterschiede in den Betriebssystemen vorliegen. Es wird zum einen die Schichtenarchitektur des Tycoon-Systems, zum anderen der modulare Aufbau der Tycoon-Maschine dargestellt. Die Ausf"uhrlichkeit soll dabei einen Einblick in das Zusammenspiel der Komponenten, den Daten- und Kontrollflu"s erm"oglichen. Auf dieser Grundlage kann ein Vergleich mit dem Verhalten des Apple Betriebssystems angestellt werden, aus dem sich notwendige Anpassungen direkt ergeben.

Neben der Funktionalit"at des ``Tycoon-Top-Level'', der Terme der ``Tycoon Language'' (TL) evaluiert, sollen auch die Funktionen der Tycoon-Standardbibliotheken zur Verf"ugung gestellt werden. Einige Tycoon-Funktionen sind durch Einbinden von C-Funktionsaufrufen realisiert.  Diese C-Funktionen befinden sich in speziellen C-Modulen der jeweiligen Standardbibliothek; sie m"ussen auf ihre Lauff"ahigkeit "uberpr"uft und gegebenenfalls angepa"st werden. 

Die Weiterentwicklung der Apple Hardware hat neben den bekannten Ger"aten mit Motorola 68xxx-Prozessoren zu einer neuen Generation von Rechnern gef"uhrt. Sie verwenden die sogenannten PowerPC-Prozessoren auf RISC-Basis (Reduced Instruction Set Computer). F"ur diese neuen Ger"ate wurden "Anderungen des Apple Betriebssystemes und der Entwicklungsumgebungen notwendig, die sich auf die Portierung auswirken. So existieren unterschiedliche Compiler und es gibt eine ge"anderte Runtime-Architektur f"ur PowerPC-basierte Apple-Modelle. Die neuen Compiler orientieren sich st"arker am ANSI-C Standard, was in Einzelf"allen zu unterschiedlichen Implementationen f"ur die beiden Apple-Plattformen f"uhren kann.

Die Kommunikation zwischen Tycoon und Benutzer wird auf Unix-Systemen "uber zeichenorientierte Terminals abgewickelt. Das Apple Betriebssystem kennt keine solchen Konsolen und basiert auf einer rein graphischen Benutzeroberfl"ache. Dieser Umstand erfordert bei der Apple-Portierung eine spezielle L"osung, die die ben"otigte Funktionalit"at nachbildet. Weitere gravierende Unterschiede bestehen im Dateisystem, so da"s auch hier Anpassungen notwendig werden. 

Die Kommunikation mit anderen Systemen ist in der Unix-Welt unter anderem "uber RPC (Remote Procedure Call) oder Sockets (zeichenorientierte Datenstr"ome) m"oglich. Beide Konzepte stehen unter zahlreichen Unix-Derivaten zur Verf"ugung und sind dann nahtlos in das Betriebssystem integriert. Sie werden im Gegensatz dazu durch das MacOS nicht unterst"utzt. Eine Public-Domain-L"osung f"ur Socket-Kommunikation bietet f"ur Apple-Rechner einen Gro"steil der bekannten Funktionen. Sie wird in dieser Arbeit auf ihre Eignung gepr"uft und f"ur den Datenaustausch mit anderen Rechnersystemen eingesetzt.

\section{Aufbau}
\label{Aufbau}

Der modulare Aufbau des Tycoon-Systems bedingt, daß lediglich an wenigen Teilen "Anderungen notwendig wurden. Zum besseren Verst"andnis der Funktionsweise und des Zusammenspiels aller Komponenten werden aber auch solche vorgestellt, die nicht direkt von Anpassungen betroffen waren. 
 
Das folgende Kapitel gibt einen "Uberblick "uber den Aufbau des Tycoon-Systems.

Im Abschnitt \ref{Portabilitaet} werden m"ogliche Problembereiche bei der Portierung und ad"aquate Programmiertechniken vorgestellt.

Der Aufbau der ``Tycoon Virtual Machine'' und das Zusammenspiel ihrer Komponenten ist Gegenstand des Kapitels \ref{Kap. Die Funktionsweise der Tycoon-Maschine}.

Schlie"slich werden im Kapitel \ref{Portierung auf Apple Macintosh} die Besonderheiten des Apple Macintosh Betriebssystems und notwendige Anpassungen and der ``Tycoon Virtual Machine'' dargelegt. Dieses Kapitel beschreibt den implementatorischen Beitrag dieser Arbeit zum Tycoon-System.
