\documentstyle[a4,twoside,german]{article}
%\pagestyle{headings}
 

%\parindent0cm

\title{\Large Systemunterst"utzung zur Gestaltung einer offenen grafischen
Entwicklungsumgebung f"ur Tycoon} 

%Werkzeuge in einer polymorphen persistenten Programmierumgebung}
%\title{\Large Eine reflektive Systemarchitektur zur Unterst"utzung grafischer
%Werkzeuge in einer polymorphen persistenten Programmierumgebung}


\author{Diplomarbeit von Andreas Geisler\\
	Universit"at Hamburg \\ Fachbereich Informatik\\ 
	Arbeitsbereich Datenbanken und Informationssysteme}


\begin{document}
\maketitle
\tableofcontents
\newpage

\section{Einf"uhrung und Aufgabenstellung}
	\subsection{Zur Entwicklungsgeschichte grafischer 
		    Programmierumgebungen}  
\begin{itemize}
\item Smalltalk
\item Interlisp
\item The Mjoellner Approch
\end{itemize}
	\subsection{Einordnung der Arbeit ins Tycoon-Projekt}

\section{Die persistente Programmierumgebung Tycoon}
	\subsection{Bisherige Compiler-Architektur}
	\subsection{Modulverwaltung}

\section{Ein typsicheres C++$\rightarrow$Tycoon-Gateway}
	\subsection{Aufgaben eines Gateways}
	\subsection{Abbildung der Typsysteme}
	   \begin{itemize}
	   \item Klassenhierarchie $\rightarrow$ Typhierarchie
	   \item Probleme mit Mehrfachvererbung
	   \end{itemize}
	\subsection{Abbildung von Sprachkonzepten}
	   \begin{itemize}
	   \item Methoden $\rightarrow$ Funktionen
	   \item Abbildung von overriding
	   \item Abbildung von Parameter"ubergabemechanismen
	   \end{itemize}
	\subsection{Benennungsschema}
	   \begin{itemize}
	   \item Behandlung von Overloading
	   \item s. Paper zu {\sl Interoperability}
	   \end{itemize}
	\subsection{Vorhandene Basismechanismen zur Implementierung}
	   \begin{itemize}
	   \item Bindungsmechanismen
	   \item Callbacks
	   \item Speicherverwaltung externer Objekte mittels
		       schwacher Referenzen
	   \item Unterprogrammf"ahigkeit des Tycoon-Systems
	   \end{itemize}
	\subsection{Sprachgesteuerte Generierung von Gateways}
		\subsubsection{Schnittstellenbeschreibungen}
		   \begin{itemize}
		   \item Anforderungen: Pragmatik, Vollst"andigkeit
		   \item Syntax 
		   \item Bezug zu IDLs
		   \end{itemize}
		\subsubsection{Der Gateway-Generator}
			\paragraph{Anforderungen}
			   \begin{itemize}
			   \item Effizienz (akzeptabler Speicher- und 
			   Laufzeitoverhead des generierten Gateways)
			   \item Modularit"at
			   \item Bewahrung der Charakteristiken des 
			   Quell-Typsystems
			   \item Parameterisierbarkeit
			   \end{itemize}
			\paragraph{Architektur und Implementierung}

\section{Nutzung des C++$\rightarrow$Tycoon-Gateways zur Anbindung der 
  GUI-Klassenbibliothek StarView$^{TM}$}
	\subsection{Vorz"uge}
	  - Plattformunabh"angigkeit als obligatorisches Merkmal von 
	  GUI-Bibliotheken 
	\subsection{Konzepte}
		\subsubsection{Typische GUI-Elemente}
		\subsubsection{Event-Handler}
	\subsection{Klassenschnittstellen}

\section{Objektorientierung in Tycoon}
	\subsection{Programmierstile}
	   \begin{itemize}
	   \item Modular vs. ``objektorientiert''
	   \item Vorteile durch funktionale Sprachmittel gegen"uber rein 
	   objektorientierten 
	   \end{itemize}
	\subsection{Vererbung in TL}
	   \begin{itemize}
	   \item Module als Klassen"aquivalent
	   \item Repeat, open
	   \end{itemize}

\section{Eine offene, reflektive Systemarchitektur}
  - Vorraussetzung zur Entwicklung einer Programmier-Werkbank als typische 
  Anwendung f"ur GUI-Dienste
	\subsection{Reflektion in persistenten Programmiersprachen: PS-Algol,
	  Napier88, ...}
	\subsection{Schnittstellen des Compilers}
	   \begin{itemize}
	   \item Funktion eval 
	   \item link, unlink
	   \item setStore
	   \item do Commands
	   \end{itemize}
	\subsection{Reflektion in Tycoon}
	\subsection{Der Compiler als Dienst im Gesamtsystem}

\section{Die Tycoon-Programmierwerkbank}
- Visualisierungswerkzeuge f"ur programmiersprachliche Objekte 
	\subsection{Ans"atze zur Konstruktion von Programmier-Werkb"anken}
	  \subsubsection{Beispiele grafischer Entwicklungsumgebungen}
	     \begin{itemize}
	     \item Napier88 (Hyper-Programming)
	     \item Visual-C++
	     \item O$_{2}$
	     \item Style
	     \end{itemize}
	   \subsubsection{Konzepte f"ur Benutzerschnittstellen}
	     \begin{itemize}
	     \item Hyper-Text
	     \end{itemize}
	\subsection{Vorteile einer Integrierenden Programmierwerkbank auf einer 
	offenen Compiler-Architektur gegen"uber eigenst"andigen Werkzeugen}
	\subsection{Werkzeuge}
	  \subsubsection{Umsetzung des Hyper-Programming-Paradigmas in Tycoon: 
	    Der Hyper-Source-Navigator}
	  \subsubsection{Symbolischer Debugger}

\section{Erfahrungen, Fazit und Ausblick}
	\subsection{Erfahrungen bez"uglich GUI-Programmierung}
	\subsection{Programmierwerkzeuge im praktischen Einsatz}
	\subsection{Vorteile einer offenen Programmierumgebung}
	   \begin{itemize}
	   \item nicht-monolitisch
	   \item Einsatz von Standardwerkzeugen, dadurch h"ohere 
	   Benutzerakzeptanz, gr"o"sere M"achtigkeit
	   \end{itemize}
	\subsection{Anbindung eines objektorientierten Analyse- und 
		    Designwerkzeuges zur durchg"angigen Unterst"utzung des
		    Software-Entwicklungsprozesses}


\end{document}

