intermed: bakk msteger decompose-isar
authorWalther Neuper <neuper@ist.tugraz.at>
Thu, 23 Jun 2011 11:29:53 +0200
branchdecompose-isar
changeset 4205771306eda8e1c
parent 42056 bd5fee885ecc
child 42058 edf2abb6e007
child 42059 fc537b152330
intermed: bakk msteger
doc-src/isac/msteger/official_docu/Doku.tex
doc-src/isac/msteger/official_docu/thesis-appendix.tex
doc-src/isac/msteger/official_docu/thesis-preamble.tex
     1.1 --- a/doc-src/isac/msteger/official_docu/Doku.tex	Thu Jun 23 10:17:15 2011 +0200
     1.2 +++ b/doc-src/isac/msteger/official_docu/Doku.tex	Thu Jun 23 11:29:53 2011 +0200
     1.3 @@ -135,19 +135,25 @@
     1.4  
     1.5  Der Scala-Layer verbindet die Java Virtual Maschine (JVM) und den in Standart-ML (SML) geschriebenen Isabelle-Kern. Dabei wird ein internes Protokoll verwendet, dass den Datenaustausch zwischen jEdit und Isabelle/Isar erm\"oglicht. Dieses Protokoll ist im Moment noch (bewusst) ohne API ausgef\"uhrt. Aus diesem Grund musste eine Schnittstelle definiert werden, um den Datenaustausch des SD-Plugins (JVM) mit dem SD-Interpreter m\"oglich zu machen. Siehe dazu den Absatz "Verbindung zum Isabelle-Pure Plugin herstellen". Man kann aus diesem Umstand ableiten, dass die Isabelle-Entwickler mit diesem eingezogenen Scala-Layer und dem damit verbundenen internen Protokoll, auf eine konsistente Verwaltung der Theorie-Bibliotheken abzielen. Mit anderen Worten wird dem Anwendungsprogrammierer der direkte Zugriff auf die Isabelle/Isar-Komponente verwehrt. Der Anwender sollten hier also nicht angreifen sonder die Isabelle-Theorien entsprechend erweitern.
     1.6  
     1.7 -\chapter{Aufbau des SD-Plugins}
     1.8 -Dieses Kapitel soll nun anhand der bereits gewonnen Erkenntnise illustrieren, wie die wichtigsten Schritte zum SD-Plugin f\"{u}r jEdit wahrscheinlich aussehen werden.
     1.9 -Wobei einige Schritte parallel und dadurch nat\"{u}rlich sehr gut im Team umgesetzt werden k\"{o}nnen.
    1.10 -Eine genaue Aufstellung aller beteiligten Files k\"onnen dem Anhang D entnommen werden.
    1.11 +\chapter{Konfiguration und Implementation der Komponenten}
    1.12 +Dieses Kapitel soll nun anhand der bereits gewonnen Erkenntnise illustrieren, wie die Entwicklungsumgebung vom Isabelle-Team kopiert wurde und wie wichtigsten Schritte zum SD-Plugin f\"{u}r jEdit wahrscheinlich aussehen werden. Wobei einige Schritte parallel und dadurch nat\"{u}rlich sehr gut im Team umgesetzt werden k\"{o}nnen. Eine genaue Aufstellung aller beteiligten Files k\"onnen dem Anhang D entnommen werden.
    1.13  
    1.14 -\section{Erstellen des Plugin-Ger\"{u}sts}
    1.15 +\section{Konfiguration des Netbeans Projektes}
    1.16 +Um in k\"unftigen Entwicklungsvorhaben effizient kooperieren zu k\"onnen, wurde das Netbeans-Projekt genau nach den Vorgaben des Isabelle-Teams konfiguriert. 
    1.17 +
    1.18 +TODO
    1.19 +
    1.20 +
    1.21 +\section{Implementation der jEdit Komponenten}
    1.22 +
    1.23 +\subsection{Erstellen des Plugin-Ger\"{u}sts}
    1.24  Hier gilt es, erstmal den Umfang der gew\"{u}nschten Anforderungen an das Plugin so genau wie m\"{o}glich zu identifizieren. Hat man eine sehr genaue Vorstellung, wie das GUI des Plugins aussehen wird und welche Zusatz-Features angeboten werden sollen so kann man gezielt unter den bereits bestehenden Plugins f\"{u}r jEdit nach n\"{u}tzlichen Plugins suchen, die in das SD-Plugin (m\"{o}glicherweise durch kleine Modifikationen) integriert werden k\"{o}nnen. Dies spart einerseits sehr viel Zeit und ist nebenbei genau die Art von Programmierung, die durch die offnene Plugin-Struktur von jEdit gef\"{o}rdert wird. 
    1.25  
    1.26  Hat man nun die Planung abgeschlossen und m\"{o}glicherweise n\"{u}tzliche Plugins gefunden, kann mit der Programmierung des GUIs begonnen werden. Man sollte hier beachten, dass man von Beginn an festlegt, ob mit Scala- oder Java-Swing Komponenten gearbeitet werden soll. Es ist zwar m\"{o}glich, beide Formen zu mischen, doch aus Klarheitsgr\"{u}nden sollte man sich doch f\"{u}r eine Art entscheiden. Wobei hier die Empfehlung im Moment eher noch Richtung Java-Swing geht, da man hier eigentlich f\"{u}r jede Art von Problem bzw. Aufgabe bereits HowTo's im Web finden kann. Da bei Scala-Swing nur Wrapper auf die Java-Swing-Libraries gesetzt wurden, entsteht dadurch auch keinerlei Performance-Verlust.
    1.27  
    1.28  Es existiert bereits ein beispielhaftes Plugin am \sisac-Repository. Da der grunds\"{a}tzliche Aufbau eines jEdit-Plugins soweit umgesetzt wurde und bereits lauff\"{a}hig ist, sollte man dieses wohl als Ausgangspunkt verwenden. Die direkte Verwendung eines Isabelle-Klons ist wohl zu Beginn nicht zu empfehlen bzw. sollte meiner Meinung nach die Integration von Isac in Isabelle bzw. die Verwachsung der beiden Plugins das Fernziel sein und dadurch w\"{u}rde der Klon-Vorgang wohl eher Probleme schaffen als sie zu l\"{o}sen.
    1.29  
    1.30 -\section{Erzeugung des Plugins}
    1.31 +\subsection{Erzeugung des Plugins}
    1.32  Hat man die Planung des Plugin-Ger\"{u}sts abgeschlossen und die eigentliche Implementationsphase begonnen, kann dieses Plugin getestet bzw. erzeugt und via jEdit ausgef\"{u}hrt werden. Dazu muss zuerst das jar-File erzeugt und danach in den jEdit-Pluginsordner verschoben werden. Die Erzeugung kann nat\"{u}rlich direkt mittels NetBeans durchgef\"{u}hrt werden. Doch es ist auch m\"{o}glich dies via Kommandline durchzuf\"{u}hren. Folgende Schritte illustrieren wie die Erzeugung und der Kopiervorgang des Plugins durchgef\"{u}hrt werden k\"{o}nnen(Ausschnitt aus dem Skript isac\_jedit):
    1.33  \begin{enumerate}
    1.34  \item Das Plugin kann mittels Kommandline folgenderma{\ss}en erstellt werden: \\ \textit{cd ISABELLE\_HOME/src/Tools/isac/jEdit} $\rightarrow$ \textit{ant jar}
    1.35 @@ -155,7 +161,7 @@
    1.36  \item jEdit ausf\"{u}hren und testen
    1.37  \end{enumerate}
    1.38  
    1.39 -\section{Verbindung zum Isabelle-Pure Plugin herstellen}
    1.40 +\subsection{Verbindung zum Isabelle-Pure Plugin herstellen}
    1.41  Der n\"{a}chste Schritt sieht nun die Versorgung des GUIs mit Daten vor. Da das jEdit-Plugin selbst nicht rechnen/interpretieren kann, m\"{u}ssen Daten an den Isabelle-Kern, also das Isabelle-Pure-Plugin weitergegeben werden. Dort k\"{o}nnen die Daten verwertet und aufbereitet zur\"{u}ck an das Frontend gereicht werden. 
    1.42  
    1.43  \begin{figure}
    1.44 @@ -190,6 +196,45 @@
    1.45  Daneben kann an der Weiterentwicklung des GUIs gearbeitet werden und die ersten Schritte zur Ann\"{a}herung an das Isabelle-Plugin k\"{o}nnen hier erfolgen. 
    1.46  
    1.47  \chapter{Zusammenfassung und R\"{u}ckblick}
    1.48 +Zusammenfassend wird nun ein \"Uberblick gegeben, welche Milestones erledigt wurden und welche nicht; Details dazu finden sich in Anhang A. %TODO
    1.49 +Abschlie{\ss}end gebe ich einen R\"uckblick auf meine pers\"onlichen Erfahrungen aus dieser Bakkalaureats-Arbeit.
    1.50 +
    1.51 +\section{Zusammenfassung}
    1.52 +Folgende Milestones wurden erfolgreich abgeschlossen:
    1.53 +\begin{enumerate}
    1.54 +\item Relevante Isabelle Komponenten dokumentiert
    1.55 +
    1.56 +\item Installation der Standard-Komponenten:
    1.57 +  \begin{itemize}
    1.58 +  \item Mercurial Versioncontrol
    1.59 +  \item NetBeans IDE
    1.60 +  \item Standard Isabelle Bundle
    1.61 +  \end{itemize}
    1.62 +  
    1.63 +\item Entwicklungsumgebung vom Isabelle-Team kopieren
    1.64 +  \begin{itemize}
    1.65 +  \item Isabelle-Sources vom Repository M\"unchen (Java, Scala, ML)
    1.66 +  \item jEdit als NetBeans Projekt definiert
    1.67 +  \end{itemize}
    1.68 +  
    1.69 +\item Relevante Komponenten implementieren
    1.70 +  \begin{itemize}
    1.71 +  \item jEdit Plugin f\"ur SD
    1.72 +  \item Verbindung des Plugins zu Isabelle
    1.73 +  \item zugeh\"origen Parser: nur ein Test in SML
    1.74 +  \end{itemize}
    1.75 +\end{enumerate}
    1.76 +
    1.77 +\noindent Aus Zeitgr\"unden war {\em nicht} m\"oglich, ein komplettes SD-Plugin zu implementieren; dazu w\"are auch ein Interpreter f\"ur SD auf der ML-Seite n\"otig gewesen.
    1.78 +
    1.79 +\paragraph{Voraussetzungen f\"ur k\"unftige Entwicklung} geschaffen:
    1.80 +\begin{enumerate}
    1.81 +\item f\"ur die Implementation von ``structured derivations'' in Isabelle \dots
    1.82 +\item \dots als Vorarbeit f\"ur jEdit als k\"unftiges \isac-Frontend
    1.83 +\item f\"ur Mitarbeit an k\"unftiger Integration von Isabelle in Entwicklungswerkzeuge (Testcase-Generation etc).
    1.84 +\end{enumerate}
    1.85 +
    1.86 +\section{R\"uckblick}
    1.87  Isabelle ist ein sehr gro\ss es Softwarepacket mit mehreren Millionen LOC. Daher gestaltete sich die Einarbeitungsphase sehr schwierig und kostet sehr viel Zeit. Erschwerend kam hinzu, dass ich von Beginn an mit mehreren, f\"{u}r mich noch ganz neue, Technologien arbeiten musste. Diese Herausforderungen schon zu Beginn machten die Arbeit an \sisac{ }von Beginn an spannend. Hier ist mir vorallem die gemeinsam mit meinem Betreuer Herrn Walther Neuper durchgef\"{u}hrte Installationsarbeit von Isabelle in Erinnerung geblieben. Nie zuvor hatte ich f\"{u}r eine Installation von Software so lange gebraucht - eine ganz neue, wichtige Erfahrung.
    1.88  
    1.89  Einer der bedeutensten Milesteine war r\"{u}ckblickend wohl, die Verzeichnisstruktur von Isabelle grunds\"atzlich verstanden zu haben. Bei einem Softwarepacket von dieser Gr\"{o}{\ss}e war es wichtig zu wissen, wo man Files suchen/modifizieren/einf\"{u}gen muss, um den gew\"{u}nschten Effekt erreichen zu können.
    1.90 @@ -198,9 +243,9 @@
    1.91  
    1.92  Bis jetzt hatte ich eigentlich noch nicht wirklich mit der Programmierung des Plugins begonnen doch es waren schon zig Arbeitsstunden rein f\"{u}r Einarbeitungs- und Vorbereitungsaufgaben verstrichen - wieder eine neue Erfahrung f\"{u}r mich. Nach einigen Test- bzw. Beispielprogrammen um die Sprache Scala etwas kennenzulernen, begann die wohl spannenste Phase im Projektverlauf. Das in Java geschriebene Beispielplugin "Quick-Notepad" wurde in Scala \"{u}bersetzt und etwas abge\"andert. 
    1.93  
    1.94 -Der letzte wirklich bedeutende Schritt war Herstellung der Verbindung zwischen Isabelle-Pure und \sisac. Dieser Punkt ist sehr wichtig, da ohne diese Schnittstelle die Planung des SD-Parser nicht m\"oglich gewesen w\"are. Der letzte Schritt, also die Implementation des SD-Parsers wurde aufgeschoben, da es derzeit seitens des Isabelle-Teams ebenfalls Bestrebungen gibt, einen neuen Scala-Parser zu designen und wir von diesen Erkenntnissen mit Sicherheit profitieren k\"onnen.
    1.95 +Der letzte wirklich bedeutende Schritt war Herstellung der Verbindung zwischen Isabelle-Pure und \sisac. Dieser Punkt ist sehr wichtig, da ohne diese Schnittstelle die Planung des SD-Parser nicht m\"oglich gewesen w\"are. Der letzte Schritt, also die Implementation des SD-Parsers wurde aufgeschoben, da es derzeit seitens des Isabelle-Teams ebenfalls Bestrebungen gibt, einen neuen Scala-Parser zu designen und wir von diesen Erkenntnissen mit Sicherheit in der Zunkft profitieren k\"onnen.
    1.96  
    1.97 -Abschlie{\ss}end m\"ochte ich mich bei meinem Betreuer Herrn Walther Neuper sehr herzlich f\"{u}r die gute Betreuung und die spannenden Entwicklungsstuden bedanken. Es war eine sehr lehrreiche und interessante Projektarbeit!
    1.98 +%Abschlie{\ss}end m\"ochte ich mich bei meinem Betreuer Herrn Walther Neuper sehr herzlich f\"{u}r die gute Betreuung und die spannenden Entwicklungsstuden bedanken. Es war eine sehr lehrreiche und interessante Projektarbeit!
    1.99  
   1.100  %\chapter{Milestones und Arbeitsprotokolle}
   1.101  %\section{Inhaltliche Voraussetzungen erarbeitet: beendet am 27.09.2010} 
     2.1 --- a/doc-src/isac/msteger/official_docu/thesis-appendix.tex	Thu Jun 23 10:17:15 2011 +0200
     2.2 +++ b/doc-src/isac/msteger/official_docu/thesis-appendix.tex	Thu Jun 23 11:29:53 2011 +0200
     2.3 @@ -1,4 +1,4 @@
     2.4 -\chapter{Milestones und Arbeitsprotokolle}
     2.5 +\chapter{Milestones und Arbeitsprotokolle}\label{milestones} %\ref doesnt work outside this file ?!?
     2.6  \section{Inhaltliche Voraussetzungen erarbeitet: beendet am 27.09.2010} 
     2.7  \begin{itemize}
     2.8  \item Kenntnis der Grundlagen und Anwendung von CTP: beendet am 03.08.2010 
     3.1 --- a/doc-src/isac/msteger/official_docu/thesis-preamble.tex	Thu Jun 23 10:17:15 2011 +0200
     3.2 +++ b/doc-src/isac/msteger/official_docu/thesis-preamble.tex	Thu Jun 23 11:29:53 2011 +0200
     3.3 @@ -14,6 +14,7 @@
     3.4  ]{geometry}
     3.5  
     3.6  \usepackage{times}                   % use PostScript fonts
     3.7 +%\usepackage{ngerman}                % causes ! Illegal parameter number in definition of \grmn@originalTeX. <to be read again> \penalty l.53 \selectlanguage{austrian}
     3.8  \usepackage{relsize}                 % relative font sizes \smaller \larger
     3.9  
    3.10  \usepackage[iso-8859-1]{inputenx}    % so can use Umlaut chars  �, �