doc/add-content.tex
author wneuper
Wed, 31 Oct 2007 16:05:26 +0100
branchstart-work-070517
changeset 226 a1c345718020
parent 0 b9904f9e8bd1
permissions -rw-r--r--
finished review WK bakk (conflicts in content and titlepage handled in next go)
wneuper@226
     1
 legend to the reader's marks:
wneuper@226
     2
%
wneuper@226
     3
% [] the brackets enclose comments additional to,
wneuper@226
     4
%    and not belonging to the text
wneuper@226
     5
%
wneuper@226
     6
% {} the braces enclose exact proposals for new text,
wneuper@226
     7
%    which are embedded into comments.
wneuper@226
     8
%
wneuper@226
     9
% /  marks a character to be deleted in the line _above_
wneuper@226
    10
%
wneuper@226
    11
% ^  points to a certain position in the line above,
wneuper@226
    12
%    usually concerning a comment or an insertion
agriesma@0
    13
wneuper@226
    14
\part{Architectural Design Document}
wneuper@226
    15
wneuper@226
    16
\chapter{Surveys}
wneuper@226
    17
\section{Survey on the components}
wneuper@226
    18
wneuper@226
    19
Below there is a short description of the role of the modules shown in
wneuper@226
    20
Fig.\ref{all-modules}.
wneuper@226
    21
\begin{figure} [htb] 
wneuper@226
    22
\centerline{\psfig{figure=fig/soffice/RK-architecture.eps,width=11cm}}
wneuper@226
    23
\caption{\sisac s components} \label{all-modules}
wneuper@226
    24
\end{figure}
wneuper@226
    25
agriesma@0
    26
\begin{description}
agriesma@0
    27
wneuper@226
    28
 \item[Browsers] (Example Browser, Knowledge Browser) allow to browse
wneuper@226
    29
 through the content of \sisac s knowledge base. The browsers also allow dynamic views onto the knowledge, where an actual example is the starting point to find appropriate (types of) problem(s), theorems in use, etc.
agriesma@0
    30
wneuper@226
    31
%the \emph{KE-Store}. There are different types of informations (Problems, Methods, Examples, \dots) which can be accessed in a similar way.
agriesma@0
    32
wneuper@226
    33
%A Browser might also add dynamic information (i.e. to visualize if a problem matches a model) and is mainly accessed through browser-windows (delivers its content as HTML-pages).
agriesma@0
    34
wneuper@226
    35
%\item[Browser-window] Used to access the HTML-pages generated by \emph{knowledge browsers} and the \emph{example browser} (not shown in Fig.\ref{all-modules}).
wneuper@226
    36
%\item[Browser generators] transform knowledge held in SML-datastructures into an XML standard format which is augmented with metadata by use of the description editor. (Not displayed in Fig.\ref{all-modules}) %Interpretation of the internal SML structures to create a browseable hierarchy for Problem- and other Browsers.
agriesma@0
    37
wneuper@226
    38
 \item[Worksheet] is the learners main working place when calculating an example in interaction with \sisac. A calculation on this worksheet is intended to be like traditional paper-and-pencil work.
agriesma@0
    39
wneuper@226
    40
 \item [Dialog-guide] consists of two parts, the worksheet-dialog and the browser-dialog. The former is responsible for the interaction with the math-engine (appropriately detailed steps etc.), the latter for the views into the knowledge base (which might depend of which course the learner is member of, etc.)
agriesma@0
    41
wneuper@226
    42
\item[Dialog editor] allows to define dialog patterns and strategies, and to preset dialog states.
agriesma@0
    43
agriesma@0
    44
 \item [User-model] holds settings for the dialog-state and a (compressed) history of dialog-states.
agriesma@0
    45
wneuper@226
    46
 \item [Dialog-settings] are given for each learner in order to preset the dialog appropriately to the respective preferences (graphical representation etc.).
agriesma@0
    47
wneuper@226
    48
 \item[Explanation Editor] is used by a course designer or a teacher (no specific exptertise in computermathematics is required~!) (1) to prepare examples and (2) to extend \sisac s knowledge base with explanations.
wneuper@226
    49
%Used to gather information and extend the information stored in the descriptions records. Administrators as well as Course-leaders have to be assisted when they build up their curse or maintain existing informations. The description-editor acts as ``frontend'' for the \emph{description}
agriesma@0
    50
wneuper@226
    51
\item [Examples] are provided with with hidden formalisations for automated solving as \sisac s prerequisite for user guidance. They can exactly be formatted like example collections in traditional textbooks.
agriesma@0
    52
wneuper@226
    53
\item [Knowledge + explanations] is what the learner sees during problem solving:
wneuper@226
    54
\begin{enumerate}
wneuper@226
    55
\item Theories with axioms, definitions and theorems (proven with
wneuper@226
    56
Isabelle) \item Problems like types of equations, or problems of
wneuper@226
    57
applied math \item Methods to solve the problems.
wneuper@226
    58
\end{enumerate}
wneuper@226
    59
These three parts of knowledge have been imported from SML in a batch process, and this raw material can be augmented with multimedia explanations by the explanation editor, presumerably specific to courses.
agriesma@0
    60
wneuper@226
    61
\item [Math authoring] tools provide for the compilation of the knowledge, which \sisac{} requires for automated problem solving (as the prerequisite for user guidance). This task requires more or less expertise in computermathematics.
agriesma@0
    62
wneuper@226
    63
\item [Knowledge] comprises theories, problems and methods, and is held in the SML-core for efficient access by the math engine. This knowledge is exported to XML (in a batch process) for augmentation with explanations using the explanation editor.
agriesma@0
    64
wneuper@226
    65
 \item [Math engine] is a fairly small knowledge interpreter, which depends on the knowledge and some of Isabelles services (matching, parsing, pretty-printing etc.). Thus the math engine is written in the same language as Isabelle, in SML.
agriesma@0
    66
wneuper@226
    67
 \item[Calc-state] (short for state of a calculation) is held in a calc-tree for each calculation.
agriesma@0
    68
wneuper@226
    69
 \item [Isabelle] is an interactive theoremprover which lays the deductive foundation of \sisac.
agriesma@0
    70
wneuper@226
    71
\item [Bridge] wraps the SML-process of the math-engine as a Java-object, i.e. it provides for data-exchange between SML and Java, for multi-user facilities and for distributing work-load to several instances of the math-engine.
agriesma@0
    72
agriesma@0
    73
\end{description}
agriesma@0
    74
wneuper@226
    75
%WN050519---AK->isac-ADD-----------------BEGIN---please don't remove this line
wneuper@226
    76
\footnote{Begin of copy from \cite{AK04:thesis} p.53-57.}
wneuper@226
    77
\section{Basic Concepts for Separable User Interfaces}\label{AK:DESIGN:SYSTEM:BASIC}
wneuper@226
    78
Apart from the benefits of structuring complex systems, separable user interfaces provide adaptability of look-and-feel without the need of reworking the entire system. For our analysis, we will concentrate on the Seeheim and Model-View-Controller (MVC) basic architectures.
wneuper@226
    79
wneuper@226
    80
\subsection{The Seeheim Model}\label{AK:DESIGN:SYSTEM:BASIC:seeheim}
wneuper@226
    81
The Seeheim Model \cite{Seeheim}
wneuper@226
    82
%WN040619 \cite{...The Seeheim Model...}
wneuper@226
    83
%
wneuper@226
    84
%WN040619 vielleicht auch eine kurze Bemerkung dazu, dass das Modell bereits in den Urzeiten der Softwaretechnologie formuliert wurde (und heute nicht/trotzdem zitiert wird -- INSPEC auf der TUB macht 'forward searches')
wneuper@226
    85
%
wneuper@226
    86
splits the entire system into three components as follows:
wneuper@226
    87
\begin{description}
wneuper@226
    88
\item[The Presentation Layer] is responsible for translation of
wneuper@226
    89
physical representations, such as images, sounds, key-presses or
wneuper@226
    90
mouse events into the logical concepts of the system and vice
wneuper@226
    91
versa. Typical tasks of the Presentation Layer include rendering
wneuper@226
    92
data on the display and parsing user input. \item[The Dialogue
wneuper@226
    93
Controller] defines the structure of the interaction between user
wneuper@226
    94
and system. Typical tasks of the Dialogue Controller include
wneuper@226
    95
accepting events the user triggered on the Presentation Layer,
wneuper@226
    96
routing events to appropriate destinations and making decisions
wneuper@226
    97
whether and how to notify the user of changes in the state of the
wneuper@226
    98
system. In other words, the Dialogue Controller defines (and
wneuper@226
    99
enforces the use of) a language for the interaction between user
wneuper@226
   100
and application. \item[The Application Interface] is an
wneuper@226
   101
abstraction of the application's data and procedures from the user
wneuper@226
   102
interface's point of view. It maps objects and operations on the
wneuper@226
   103
user interface to actual data objects and code in the application,
wneuper@226
   104
thus representing the application's functionality in a concise and
wneuper@226
   105
consistent way.
wneuper@226
   106
\end{description}
wneuper@226
   107
agriesma@0
   108
\begin{figure} [htb]
wneuper@226
   109
\centerline{\includegraphics[width=\textwidth, keepaspectratio=true]{fig/AK-seeheim_basic}}
wneuper@226
   110
\caption{Interaction in the Seeheim Architecture}
wneuper@226
   111
\label{fig.seeheim_basic}
agriesma@0
   112
\end{figure}
agriesma@0
   113
wneuper@226
   114
Note that in figure \ref{fig.seeheim_basic}, the messages are named "notify" and "request" from the user's point of view. From the Dialogue Controller's point of view, the messages are distinguished by their direction in or out of the Dialogue Controller. Even more so, the Application and the Presentation Layer (representing the user) do not differ in a structural way. Both are merely objects generating events which might be of interest to other objects and have to be handled according to the Dialogue Controller's state and logic. It is the semantic in the Dialogue Controller's logic that makes a difference between user and application, if any.
wneuper@226
   115
wneuper@226
   116
wneuper@226
   117
\subsection{The MVC Architecture}\label{AK:DESIGN:SYSTEM:BASIC:mvc}
wneuper@226
   118
As opposed to the Seeheim Model, which structures the system as a whole, the MVC
wneuper@226
   119
%WN040619 \cite{}
wneuper@226
   120
architecture \cite{buschmann} is grouped around single data objects as follows:
wneuper@226
   121
%
wneuper@226
   122
%WN040619 wie oben: MVC kurz in die Landschaft einordnen (kurze Recherche mit Google hat mir auch schon die Augen ge�fnet ;-) ... super, dass Du auch einen (offenbar _sehr_) aktuellen Ansatz gefunden hast !!!
wneuper@226
   123
%
wneuper@226
   124
wneuper@226
   125
\begin{description}
wneuper@226
   126
\item[The Model] is any data object in the application requiring user interaction.
wneuper@226
   127
\item[The View] is an object providing a visual representation of the respective Model, thus enabling the Model to output its data.
wneuper@226
   128
\item[The Controller] is an object accepting user input and notifying the Model or the View accordingly, thus providing the user with a means of controlling the Model.
wneuper@226
   129
\end{description}
wneuper@226
   130
agriesma@0
   131
\begin{figure} [htb]
wneuper@226
   132
\centerline{\includegraphics[width=8cm, keepaspectratio=true]{fig/AK-mvc_collaboration}}
wneuper@226
   133
\caption{Interaction in the MVC Architecture}
wneuper@226
   134
\label{fig.mvc_collaboration}
agriesma@0
   135
\end{figure}
agriesma@0
   136
wneuper@226
   137
In a complex system, the link between application and user can contain several Model-View-Controller-triples, each grouped around a specific data item.
agriesma@0
   138
wneuper@226
   139
\subsection{Comparing the approaches}\label{AK:DESIGN:SYSTEM:BASIC:compare}
wneuper@226
   140
\begin{itemize}
wneuper@226
   141
\item Without the need to pass the Dialogue Controller on every interaction, the MVC model tends to be faster in runtime. This is particularly important for giving the user immediate feedback about his current actions and options.
wneuper@226
   142
% pl: Ich sehe nicht, warum das MVC Modell effizienter sein soll.
wneuper@226
   143
\item Being built around smaller units of single objects, MVC is more flexible and easier to develop and extend.
wneuper@226
   144
% pl: Das halte ich auch fuer Propaganda. Es ist nicht flexibler, wenn die
wneuper@226
   145
% Praesentation eines Elementsvon einem globalen Kontext abhaengt.
wneuper@226
   146
\item On the other hand, MVC lacks the clear separation between application and presentation layer, spreading the functionality across a multitude of interacting MVC triples. While this eases development, the resulting complex dependencies make it harder to understand or debug the system as a whole.
wneuper@226
   147
% pl: Eben, das ist doch wesentlich.
wneuper@226
   148
\end{itemize}
wneuper@226
   149
%WN040619 Der guten Eindruck (wenn nicht gar neu entfachtes Interesse), den Du mit dem Absatz bei Prof.Lucas machst, wird noch besser, wenn Du Artikel angibst, die diesen Vergleich auch machen (oder hat man das Seeheim-Model schon ganz vergessen ?)
wneuper@226
   150
wneuper@226
   151
\subsection{Implications for \isac{}}\label{AK:DESIGN:SYSTEM:BASIC:isac}
wneuper@226
   152
\label{seeheim-mvc}%...%WN040815
wneuper@226
   153
The design of \isac{} is based on the Seeheim Model, for the following reasons:
wneuper@226
   154
\begin{itemize}
wneuper@226
   155
\item A clear separation of Application, Dialogue Controller and Presentation layer is a design goal because:
wneuper@226
   156
\begin{itemize}
wneuper@226
   157
\item At present, the Application itself is written in SML, whereas the rest of the system is being implemented in Java. The necessity to interface the different worlds of different programming languages implicitly separates Application from User Interface.
wneuper@226
   158
% pl: Die Struktur waere auch sinnvoll, wenn alles in eneir Sprache
wneuper@226
   159
% implementiert waere.
wneuper@226
   160
\item The already-implemented Math Engine with the Isabelle system in the background uses more computing resources than a typical consumer machine can provide at present. This and the goal to centralise mathematical knowledge and example collections for groups of users suggests running the Application on a dedicated server.
wneuper@226
   161
\item To minimise effort and expenses on the side of the user, the part of the system running on the user's machine should be kept as small as possible, a Java-capable web browser being the aimed-at minimum. An ideal design would leave only the Presentation Layer running on the user's machine.
wneuper@226
   162
\item The goal to adapt \isac{}'s behaviour to the situation of the individual user's situation asks for a well-defined, configurable and exchangeable Dialogue Controller.
wneuper@226
   163
\item As it seems foreseeable that the design of \isac{}'s Dialogue Controller will pose questions going well beyond the scope of a single master's thesis, a separable Dialogue Controller component will ease independent research. We expect the development of new approaches to dialogue description languages as practical experience with a \isac{} prototype becomes available.
wneuper@226
   164
%WN040619 An dieser Stelle des theoretischen Zuganges zum isac-Dialog ist vielleicht taktisch klug vorzubemerken, dass _eine_ Diplomarbeit die Aufgabe nicht zu Ende bringen kann. Dann ergibt die deutliche Separation der Dialogkomponente nach Seeheim weitere Vorteile: die leichtere Weiterfhrung der Arbeit am Dialog (wobei im isac-Projekt damit gerechnet wird, dass die isac-Interaktionsm�licheiten 'between partners (user --- system) on an equal base' neuartige Ans�ze fr Dialog-Beschreibungs-Sprachen forcieren werden, sobald praktische Erfahrungen mit isac m�lich sind)
wneuper@226
   165
%AK danke, sehr wertvoll!!!!
wneuper@226
   166
\end{itemize}
wneuper@226
   167
\item The major drawback of the Seeheim Model, the difficulty to provide immediate feedback to the user, is not relevant to the design of \isac{}, as the complex mathematical knowledge involved requires consultation of the Math Engine for even basic feedbacks. With the present speed of the Math Engine, any additional delays from the use of the Seeheim Model will not be perceivable by the user.
wneuper@226
   168
% pl: Das verstehe ich auch nicht ganz. Z.B. syntaktisch falsch eingegebene
wneuper@226
   169
% Zahlen kann man doch sofort abfangen, oder nicht? Aber vielleicht auch
wneuper@226
   170
% nicht. Da muesste man den Design genauer kennen.
wneuper@226
   171
%WN040619 .. elegant ausgedrckt ;-)
wneuper@226
   172
wneuper@226
   173
Any operations not involving mathematical knowledge can be handled locally by the Presentation Layer, in a MVC manner, if desired.
wneuper@226
   174
wneuper@226
   175
\item The aforementioned goal of adapting \isac{}'s behaviour to the situation of the individual user can be easily adressed by augmenting a centralised Dialogue Controller with a User Model. The User Model would store preferences set by the course designer and the user himself. The Dialog Guide would report activities to the User Model, which would store these reports and process them into an abstraction of the user's preferences, experience and behaviour. The other way round, the User Model would be queried by the Dialog Guide for clues how to behave in a specific user-interaction situation.
wneuper@226
   176
\end{itemize}
wneuper@226
   177
wneuper@226
   178
% This makes a preliminary design for \isac{} look something like:
wneuper@226
   179
% pl: Warum "preliminary" und "something like this" ?
wneuper@226
   180
% Wie waere: "Based on these considerations, the top level design of \isac{}
wneuper@226
   181
% looks like this"
wneuper@226
   182
Based on these considerations, the top level design of \isac{} looks like this:
wneuper@226
   183
agriesma@0
   184
\begin{description}
wneuper@226
   185
\item[Math Engine or Kernel] In terms of the Seeheim Model, this is the Application. This component is already implementetd in SML and is intended to run on a centralisad dedicated server. All mathematical knowledge resides in this component,
wneuper@226
   186
%WN040819 All mathematical knowledge required for calculations by the kernel ...
wneuper@226
   187
all calculations are done here.
wneuper@226
   188
%WN040819 (while the (static~!) knowledge to be shown to the user is exported from SML to the KE-Store (XML) by a batch process).
wneuper@226
   189
%WN040819 ... wobei meine Bemerkungen an dieser Stelle ev.zu sehr ins Detail und daher woanders hin gehoeren; aber irgendein Bezug zwischen hier ('mathematical knowledge') und 6.4.1...Browsing the 'Knowledge Base' waere ev. hilfreich
wneuper@226
   190
The SML system communicates via the standard input and output text streams.
wneuper@226
   191
\item[Dialog Guide and User Model] In terms of the Seeheim Model, this is the Dialogue Conroller. This component is being implemented in Java. All user interaction is controlled by this component, and this is the only component aware of the individul user.
wneuper@226
   192
% pl: Ist die Implementierung Teil der Diplomarbeit?
wneuper@226
   193
\item[Worksheet] In terms of the Seeheim Model, this is the Presentation Layer. This component is being implemented in Java, with the additional goal of running in standard environments encountered on a consumer PC installations, as this component is intended to run locally on the user's machine.  The Worksheet is the only component aware of visual aspects of data, such as formatting, and the only component with direct user-interaction.
agriesma@0
   194
\end{description}
agriesma@0
   195
wneuper@226
   196
\begin{figure} [htb]
wneuper@226
   197
\centerline{\includegraphics[width=\textwidth, keepaspectratio=true]{fig/AK-isac_seeheim_um}}
wneuper@226
   198
\caption{Basic \isac{} architecture for calculations}
wneuper@226
   199
\label{fig.isac_seeheim_um}
wneuper@226
   200
\end{figure}
wneuper@226
   201
\footnote{End of copy from \cite{AK04:thesis} p.53-57.}
wneuper@226
   202
%WN050519---AK->isac-ADD-----------------END---please don't remove this line
agriesma@0
   203
wneuper@226
   204
\section{Survey on the architecture}\label{MH->isac-ADD1}
wneuper@226
   205
\cite{MH04:thesis} describes the architecture depictured in Fig.
wneuper@226
   206
\ref{fig.system_overview} on p.\pageref{fig.system_overview} as follows.
agriesma@0
   207
wneuper@226
   208
%WN040815---MH->isac-ADD1-----------------BEGIN---please don't remove this line
wneuper@226
   209
\begin{figure}[htb]
wneuper@226
   210
\centerline{\psfig{figure=fig/MH-system_overview.eps,width=7cm}}
wneuper@226
   211
%\centerline{\includegraphics[width=\textwidth, keepaspectratio=true]{system_overview}}
wneuper@226
   212
\caption{The current design of the \isac{} system}
wneuper@226
   213
\label{fig.system_overview}
agriesma@0
   214
\end{figure}
agriesma@0
   215
agriesma@0
   216
wneuper@226
   217
The system architecture is designed as a \emph{distributed system}. %WN040815\cite{coulouris}.
wneuper@226
   218
This means that the components described below are designed process
wneuper@226
   219
independently and they can be executed on different computers
wneuper@226
   220
concurrently. The thesis covers the design of the graphical user interface
wneuper@226
   221
component and the interfaces that are necessary to connect to the
wneuper@226
   222
other components of \sisac{}.
agriesma@0
   223
agriesma@0
   224
wneuper@226
   225
The components of \sisac{} are:
agriesma@0
   226
wneuper@226
   227
\begin{itemize}
agriesma@0
   228
wneuper@226
   229
  \item The \textbf{backend} of \sisac{} is responsible for doing
wneuper@226
   230
   the calculation and holding the mathematical knowledge also known
wneuper@226
   231
   as knowledge base. The mathematical engine can only do one calculation
wneuper@226
   232
   at a time.
wneuper@226
   233
   This is a restriction that needs to be bypassed.
agriesma@0
   234
wneuper@226
   235
  \item  Hence, the component called \textbf{Bridge}
wneuper@226
   236
   is designed as a \emph{multiuser} component. Multiuser in this
wneuper@226
   237
   context means that the Bridge distributes the simultaneous user
wneuper@226
   238
   requests over several instances of the mathematical machine.
wneuper@226
   239
   A more detailed description can be found in \cite{RG04:thesis}.
wneuper@226
   240
   Note that in this context the name Bridge has nothing to do with the
wneuper@226
   241
   structural software pattern ``Bridge'', described in
wneuper@226
   242
   Design Patterns by the ``Gang of Four''. %\cite{Gamma95}.
wneuper@226
   243
Rather, the
wneuper@226
   244
   component Bridge in the \sisac{} system architecture can be
wneuper@226
   245
   described as an ``Adapter'' in the meaning of a design pattern.
wneuper@226
   246
   It converts the interface of the mathematical engine
wneuper@226
   247
   into another interface that the other parts of \sisac{}, especially the
wneuper@226
   248
   \emph{WorksheetDialog}, expect.
wneuper@226
   249
   Moreover, the Bridge also ``converts'' the functional software
wneuper@226
   250
   design paradigm of the mathematical engine into an object-oriented
wneuper@226
   251
   design paradigm the other parts of \sisac{} expect; therefore, the Bridge lets
wneuper@226
   252
   components work together that could not otherwise because
wneuper@226
   253
   of incompatible interfaces.
wneuper@226
   254
wneuper@226
   255
  \item The \textbf{WorksheetDialog} acts as a middleman between the Worksheet
wneuper@226
   256
   and the Bridge. It is the central component while solving an example.
wneuper@226
   257
   The Worksheet provides the user with information during a calculation in
wneuper@226
   258
   cooperation with the WorksheetDialog. The WorksheetDialog decides how detailed
wneuper@226
   259
   the user should see the information, depending on the user history, experience
wneuper@226
   260
   of the user and role of the user. The WorksheetDialog can also
wneuper@226
   261
   restrict the access to parts of the knowledge to ensure that the
wneuper@226
   262
   user is not swamped with examples for which his experience level is not
wneuper@226
   263
   high enough and he is not meant to solve yet.
wneuper@226
   264
wneuper@226
   265
   The design of the WorksheetDialog at the moment concentrates on the
wneuper@226
   266
   solving part. User history, restricting access and different grades
wneuper@226
   267
   for showing information are scheduled in the design but not yet completely
wneuper@226
   268
   finished.
wneuper@226
   269
wneuper@226
   270
   Worksheet and WorksheetDialog stand in a 1:1 relation, which means that
wneuper@226
   271
   for each Worksheet a separate WorksheetDialog is necessary.
wneuper@226
   272
wneuper@226
   273
  \item The \textbf{BrowserDialog}\label{AG:BrowserDialog} is the component in charge as far as the
wneuper@226
   274
   knowledge base is concerned. Strictly speaking, the \emph{InformationProcessor}
wneuper@226
   275
   provides information about the knowledge base. Each part of the knowledge base
wneuper@226
   276
   (problem, method and theory, see section~\ref{knowledge base}) can be accessed and also
wneuper@226
   277
   the example collection can be accessed.
wneuper@226
   278
   Another task of the InformationProcessor is the authorization of the
wneuper@226
   279
   user that wants to connect to the \sisac{} system.
wneuper@226
   280
   Currently a username and a password are used to authorize
wneuper@226
   281
   the user. Security considerations like encryption
wneuper@226
   282
   have not been included in the design process so far.
wneuper@226
   283
wneuper@226
   284
   The InformationProcessor provides
wneuper@226
   285
   a well designed interface that can be used by a client and is described
wneuper@226
   286
   in more detail in section \ref{D:IP}.
wneuper@226
   287
wneuper@226
   288
   The \emph{SessionDialog}, which is also part of the BrowserDialog, is
wneuper@226
   289
   responsible for the (re-) identification of the user.
wneuper@226
   290
   A user might connect and log in several times
wneuper@226
   291
   (e.g. with different applications), then the SessionDialog has to ensure
wneuper@226
   292
   that all WorksheetDialogs for this user work on the same data.
wneuper@226
   293
   A deeper look into the design of the SessionDialog can
wneuper@226
   294
   be found in \cite{AG:thesis}.
wneuper@226
   295
wneuper@226
   296
   There is only one SessionDialog per \sisac{} system.
wneuper@226
   297
wneuper@226
   298
  \item The \textbf{Graphical User Interface} is responsible for
wneuper@226
   299
   establishing a connection to \sisac{}. It consists of two components, namely,
wneuper@226
   300
   the \emph{HierarchyBrowser} and the \emph{Worksheet}. The requirements
wneuper@226
   301
   for these components have already been described in sections \ref{REQ:WS} and
wneuper@226
   302
   \ref{REQ:HB}. The following sections describe the design of the
wneuper@226
   303
   graphical user interface and the communication interfaces to the
wneuper@226
   304
   WorksheetDialog and BrowserDialog.
wneuper@226
   305
\end{itemize}
wneuper@226
   306
%WN040815---MH->isac-ADD1-----------------END---please don't remove this line
wneuper@226
   307
wneuper@226
   308
wneuper@226
   309
\chapter{Session Management}
wneuper@226
   310
%WN040815---AG->isac-ADD1-----------------BEGIN---please don't remove this line
wneuper@226
   311
%WN040815---AG->isac-ADD1-----------------BEGIN---please don't remove this line
wneuper@226
   312
 \section{The Dialogs}
wneuper@226
   313
wneuper@226
   314
 \label{ADD:dialog}
wneuper@226
   315
wneuper@226
   316
 The \emph{dialog} is the ``heart'' of the system which controls the
wneuper@226
   317
 behavior of the different modules. It is responsible to adjust the
wneuper@226
   318
 reaction of the system to fit the learners (and teachers) demands.
wneuper@226
   319
 Among others, these demands contain:
wneuper@226
   320
wneuper@226
   321
 \begin{description}
wneuper@226
   322
 \item [record a learners success] by means of solved examples. This
wneuper@226
   323
   record can be used to create a set of proposed examples for a
wneuper@226
   324
   single user. Furthermore, the teacher can use this feedback to
wneuper@226
   325
   enhance the quality of his lecture (e.g if a single example causes
wneuper@226
   326
   problems for most students)
wneuper@226
   327
wneuper@226
   328
 \item [restrict access to parts of the knowledge] The set of
wneuper@226
   329
   available examples can vary depending on the already solved
wneuper@226
   330
   examples or the progress of the lecture to ensure, that the student
wneuper@226
   331
   is not swamped with examples he is not meant to solve yet.
wneuper@226
   332
   Furthermore, the available information have to be restricted while
wneuper@226
   333
   the learner writes a test. This also implies, that the access for
wneuper@226
   334
   not authenticated users can be restricted as well (by IP). (The
wneuper@226
   335
   user may not access the public information)
wneuper@226
   336
wneuper@226
   337
 \item [communication between different applications] \isac{} uses
wneuper@226
   338
   different applications to access the knowledge and mathematical
wneuper@226
   339
   capabilities of the system. For example: from the users point of
wneuper@226
   340
   view, the worksheet calculates while the KnowledgeBrowsers are used
wneuper@226
   341
   to select problems or methods for use within the calculation. In
wneuper@226
   342
   this case, worksheet and KnowledgeBrowser are just two
wneuper@226
   343
   access-points for the same application. The dialog establishes and
wneuper@226
   344
   controls the connection of these access-points.
wneuper@226
   345
wneuper@226
   346
 \item [manage the connected users] A user might be connected using
wneuper@226
   347
   several applications. For instance he can calculate an example and
wneuper@226
   348
   search a related \emph{problem} using a \emph{browser}. The dialog
wneuper@226
   349
   has to ensure, that these applications work on the same data.
wneuper@226
   350
   Therefore a \emph{session} is used which is aware of the different
wneuper@226
   351
   connections of a user.
wneuper@226
   352
wneuper@226
   353
 \end{description}
wneuper@226
   354
wneuper@226
   355
 Because of the various duties of the dialog, it is split up into a
wneuper@226
   356
 number of modules. Applications have an own ``peer'' which is used to
wneuper@226
   357
 communicate which them. These peers act as a kind of ``border'' --
wneuper@226
   358
 informations the user is not meant to get, may not cross this border
wneuper@226
   359
 but are filtered before. This filtering goes along with an possible
wneuper@226
   360
 transformation of the data.
wneuper@226
   361
%For instance -- as mentioned in previous
wneuper@226
   362
% subsections -- a \emph{KE-Object} is transferred to the internal
wneuper@226
   363
% object structure when it is loaded from the
wneuper@226
   364
% \emph{KE-Store}. The \emph{browser-dialog} is used to
wneuper@226
   365
% translate it to XML after all manipulations on the object are done.
wneuper@226
   366
%
wneuper@226
   367
% These considerations lead to the component-layout as given in figure
wneuper@226
   368
% \ref{fig.browser-masterdialog} on p.\pageref{fig.browser-masterdialog} which shows the dialog and its relations
wneuper@226
   369
% to the applications along the informations where they are located
wneuper@226
   370
% (server or client). Although the ``browser'' runs on the server, it
wneuper@226
   371
% is situated in the frontend-layer. The reason is that the Web-Based
wneuper@226
   372
% knowledge-browser as discussed in this state of development, could be
wneuper@226
   373
% replaced by an browser with an other interface. This may not affect
wneuper@226
   374
% the overall design of the system.
wneuper@226
   375
%
wneuper@226
   376
% \begin{figure} [htb]
wneuper@226
   377
%\begin{center}
wneuper@226
   378
%   \centerline{
wneuper@226
   379
%\psfig{figure=fig/browser-masterdialog.eps,height=11cm}
wneuper@226
   380
%%\includegraphics[width=11cm]{\extend{fig/browser-masterdialog}}
wneuper@226
   381
%}
wneuper@226
   382
%   \caption{Structure of the Dialog}
wneuper@226
   383
%
wneuper@226
   384
%%=\label{fig.browser-masterdialog}
wneuper@226
   385
%   \label{ADD:dialog-structure}
wneuper@226
   386
% \end{center}
wneuper@226
   387
% \end{figure}
wneuper@226
   388
wneuper@226
   389
 \subsection{Session-Dialog}\label{ADD:session_dialog}
wneuper@226
   390
 The \emph{session-dialog} governs the user-login and performs all
wneuper@226
   391
 necessary actions to build up a users dialog. It is started on
wneuper@226
   392
 system-startup and waits for connects by an
wneuper@226
   393
 \emph{session-controller}. There is only one session-dialog per
wneuper@226
   394
 \isac\/-System.
wneuper@226
   395
wneuper@226
   396
 The session-controller is a client-side program which performs the
wneuper@226
   397
 login and starts the \isac{} frontend-applications on a users
wneuper@226
   398
 machine.  Besides the authentication, the session-dialog is also
wneuper@226
   399
 responsible to instantiate and interlink the application dependent
wneuper@226
   400
 parts of the dialog-layer as there are the Browser-Dialog and the
wneuper@226
   401
 WorkSheet-Dialog.
wneuper@226
   402
wneuper@226
   403
 Although one user can log in twice at a time, only one application
wneuper@226
   404
 dialog is created to ensure that all user-dependent information are
wneuper@226
   405
 up to date. Therefore the session-dialog has to maintain lists of
wneuper@226
   406
 logged in users and their respective dialogs.
wneuper@226
   407
wneuper@226
   408
For the dialogs providing user-guidance see chap.\ref{DG} below.
wneuper@226
   409
wneuper@226
   410
%--- from AGs thesis ------------------------------------//WN060324
wneuper@226
   411
% \subsection{Browser-Dialog}\label{AG:Browser-Dialog}
wneuper@226
   412
% These requirements demand that the Dialog is involved in all
wneuper@226
   413
% user-activities. Therefore, the Dialog ``sticks'' behind the Browser
wneuper@226
   414
% and determines the way of information-representation. Nevertheless,
wneuper@226
   415
% the Browser has different ``modes'' which need more or less
wneuper@226
   416
% interference of the Dialog.
wneuper@226
   417
%
wneuper@226
   418
% \begin{figure} [htb]
wneuper@226
   419
%\begin{center}
wneuper@226
   420
%   \centerline{
wneuper@226
   421
%\psfig{figure=fig/browser-dialog.eps,width=11cm}
wneuper@226
   422
%%\includegraphics[width=11cm]{\extend{fig/browser-dialog}}
wneuper@226
   423
%}
wneuper@226
   424
%   \caption{Interaction with the Browser-Dialog}
wneuper@226
   425
%   \label{design}
wneuper@226
   426
%\end{center}
wneuper@226
   427
% \end{figure}
wneuper@226
   428
%
wneuper@226
   429
% \begin{description}
wneuper@226
   430
% \item[static knowledge-browsing] is access to the knowledge allowed -
wneuper@226
   431
%   determine and select additional informations (fitting explanations
wneuper@226
   432
%   and examples), log access.
wneuper@226
   433
%
wneuper@226
   434
% \item[search an item] determine the amount of help to give, log
wneuper@226
   435
%   access. The ``amount of help'' includes the representation of
wneuper@226
   436
%   additional information as well as the presentation of
wneuper@226
   437
%   ``match-results''. Matching is done through contacting the
wneuper@226
   438
%   \emph{WS-Dialog} which holds the necessary informations to perform
wneuper@226
   439
%   a match.
wneuper@226
   440
%
wneuper@226
   441
% \item[select an item] ``push it into the model'' contact the
wneuper@226
   442
%   responsible \emph{WS-Dialog} and ``offer'' the selected item
wneuper@226
   443
%   (Problem, Method, \dots). This Mode needs to know the responsible
wneuper@226
   444
%   worksheet in first place. The user could run more then one
wneuper@226
   445
%   worksheet at a time - so the Browser needs to know to which one the
wneuper@226
   446
%   selected item should be passed.
wneuper@226
   447
% \end{description}
wneuper@226
   448
%
wneuper@226
   449
% So, the browser-dialog acts as peer for the browser. It performs all
wneuper@226
   450
% communications with the rest of the \isac{} system and transform the
wneuper@226
   451
% data to a suitable format. It does not constrain the browsers mode
wneuper@226
   452
% (what the browser wants to do) or the presentation of the gathered
wneuper@226
   453
% informations.
wneuper@226
   454
%
wneuper@226
   455
% \subsection{WorkSheet Dialog}
wneuper@226
   456
% The worksheet-dialog contains the ``intelligence'' of the Worksheet, see chap.\ref{DG} below.
wneuper@226
   457
wneuper@226
   458
\subsection{Browser-Dialog and Worksheet-Dialogs}\label{WN-add-BDialog-WSDialog}Both dialogs are discussed in a separate chapter, in chap.\ref{DG}.
wneuper@226
   459
TODO.WN060705
wneuper@226
   460
wneuper@226
   461
 \section{Access Rights}
wneuper@226
   462
wneuper@226
   463
%WN000705---summerterm06------------BEGIN---please don't remove this line
wneuper@226
   464
\subsection{Dialog Guide and User Model}\label{WN-add-DG-UserModel}
wneuper@226
   465
wneuper@226
   466
wneuper@226
   467
%WN000705---summerterm06--------------END---please don't remove this line
wneuper@226
   468
wneuper@226
   469
 \subsection{User-Administration}
wneuper@226
   470
 \label{ADD:user_admin}
wneuper@226
   471
 The \emph{user-administration}\/-module helps the dialog to maintain
wneuper@226
   472
 the users and control the access for \emph{courses}.
wneuper@226
   473
wneuper@226
   474
 \subsubsection{user}
wneuper@226
   475
 Information stored in an user-module contain personal information
wneuper@226
   476
 like name and login, as well as important administrative information
wneuper@226
   477
 like the courses he is member of and a reference to the
wneuper@226
   478
 \emph{user-model} which contains all information which are relevant
wneuper@226
   479
 to build up an environment for the user (solved examples, history,
wneuper@226
   480
 ...)
wneuper@226
   481
wneuper@226
   482
 \begin{verbatim}
wneuper@226
   483
 user:
wneuper@226
   484
    FirstName:String
wneuper@226
   485
    LastName:String
wneuper@226
   486
    login: String
wneuper@226
   487
    password: String (encrypted)
wneuper@226
   488
    courses: {course*}
wneuper@226
   489
    solved_examples, history, ...
wneuper@226
   490
    temporary_environ: hierarchy_opt
wneuper@226
   491
 \end{verbatim}
wneuper@226
   492
wneuper@226
   493
 The field \emph{temporary\_environ} is used in case of an
wneuper@226
   494
 examination.  If this field is set to non-empty, a user has only
wneuper@226
   495
 permissions to the elements of the referenced hierarchy. This
wneuper@226
   496
 hierarchy typically contains the examples to solve and a few
wneuper@226
   497
 explanations which are permitted within the exam.
wneuper@226
   498
wneuper@226
   499
 \subsubsection{course}
wneuper@226
   500
\label{ADD:course}
wneuper@226
   501
 A \emph{course} is a object within \isac{} to define a learning
wneuper@226
   502
 environment for different users. Typically, a course contains
wneuper@226
   503
 explanations to the mentioned theories and examples which are
wneuper@226
   504
 organized within an hierarchy.  There are tools which help a
wneuper@226
   505
 course-designer to build up a hierarchy by e.g. copying a part of an
wneuper@226
   506
 other hierarchy. A typical reason for doing this is to copy a part of
wneuper@226
   507
 the problem-hierarchy and afterwards enrich the items with
wneuper@226
   508
 explanations and examples fitting the audience of the
wneuper@226
   509
 course
wneuper@226
   510
wneuper@226
   511
% \kommentar{gute moeglichkeit, die beschreibungen und beispiele an den
wneuper@226
   512
%   kurs anzupassen. examples koennen trotzdem noch fuer die
wneuper@226
   513
%   kursteilnehmer herausgefiltert werden.}.
wneuper@226
   514
 Additionally, examples and general explanations can be added.
wneuper@226
   515
wneuper@226
   516
 The hierarchy of a course is located within the \emph{KE-Store}
wneuper@226
   517
 while the object describing the actual \emph{course} is located
wneuper@226
   518
 within the \emph{user-management-module}. Permissions are handled based on the user and
wneuper@226
   519
 \emph{KE-Objects} (hierarchies, examples, explanations,
wneuper@226
   520
 knowledge)
wneuper@226
   521
wneuper@226
   522
 \begin{verbatim}
wneuper@226
   523
  course:
wneuper@226
   524
     metadata:
wneuper@226
   525
     name:string
wneuper@226
   526
     hierarchy: hierarchy-id
wneuper@226
   527
     members:{user-id, user-id, ...}
wneuper@226
   528
     admin: user-id
wneuper@226
   529
 \end{verbatim}
wneuper@226
   530
wneuper@226
   531
 There are tools which perform the tasks of adding an removing users
wneuper@226
   532
 to a course. While adding a user to a course is relatively simple --
wneuper@226
   533
 ensure the user has proper rights for all \emph{KE-Objects} within
wneuper@226
   534
 the used hierarchy -- the task of removing a user from a course is
wneuper@226
   535
 more complicated: the user might be member of more than one course
wneuper@226
   536
 which access the same example. Removing access-rights for such an
wneuper@226
   537
 example might collide with the course the user is still member of.
wneuper@226
   538
 Therefore, the tool has to check all courses of the user before
wneuper@226
   539
 removing any permissions.
wneuper@226
   540
wneuper@226
   541
 The data-structure is usable for another set of tools which can act
wneuper@226
   542
 on them -- like hide an example for all members of a course till they
wneuper@226
   543
 are able to solve them or contact all of the course-members.
wneuper@226
   544
wneuper@226
   545
%fuer commit
wneuper@226
   546
%object structure
wneuper@226
   547
%begin of dialog-description (has to be reviewed)
wneuper@226
   548
%user-state and relations (user defined hierarchy) are still missing
wneuper@226
   549
wneuper@226
   550
%\section{missing objects (temporary subsection)}
wneuper@226
   551
wneuper@226
   552
 \subsection{Permissions-module}
wneuper@226
   553
 The \emph{permissions-module} stores and maintains informations
wneuper@226
   554
 about which user might access to which \emph{KE-Objects}. The
wneuper@226
   555
 administration of the permissions is based upon the users stored
wneuper@226
   556
 within the \emph{user-administration}\/-module
wneuper@226
   557
wneuper@226
   558
 Permissions are applied, whenever an KE-Object is accessed. When
wneuper@226
   559
 informations ``leave'' the dialog -- e.g. when they are delivered to
wneuper@226
   560
 the \emph{browser}, the (browser-) dialog can remove links whose
wneuper@226
   561
 destinations are not accessible. Note, that the dialog can decide not
wneuper@226
   562
 to show an example to a user although he has the proper permissions
wneuper@226
   563
 -- in this case, the references are filtered out by an didactic filter.
wneuper@226
   564
%before they are delivered to the browser-dialog.
wneuper@226
   565
wneuper@226
   566
 Permissions can be set at once to a number of users using tools which
wneuper@226
   567
 can access the objects within the \emph{user-management-module}.
wneuper@226
   568
 E.g. a tool is used to to add and remove users from a course. These
wneuper@226
   569
 tools traverse the members of the course and set the proper
wneuper@226
   570
 permissions for them. There is a special mode to limit access, when
wneuper@226
   571
 the user participates to a exam. In this case access is limited to
wneuper@226
   572
 the environment given in the \emph{temporary\_environ} field of the
wneuper@226
   573
 user-object.
wneuper@226
   574
%WN040815---AG->isac-ADD1-----------------END---please don't remove this line
wneuper@226
   575
%WN040815---AG->isac-ADD1-----------------END---please don't remove this line
wneuper@226
   576
wneuper@226
   577
wneuper@226
   578
\chapter{Dialog Guide}\label{DG}
wneuper@226
   579
%WN050518---AK.p.61-62->isac-ADD--------BEGIN---please don't remove this line
wneuper@226
   580
\footnote{Begin of copy from Alan Krempler \cite{AK04:thesis} p.61-62 with updates by Georg Kompacher \cite{ba-GK07}.}
wneuper@226
   581
%\subsubsection{Browsing the Knowledge Base}
wneuper@226
   582
\section{Browser Dialogs and WorkSheet Dialog}\label{WN-add-BDialog-WSDialog}
wneuper@226
   583
%WN060324--->thesis.ML-----------------BEGIN---please don't remove this line
wneuper@226
   584
In contrast to most currently available algebra systems, \isac{} bases its
wneuper@226
   585
calculations entirely on rules and knowledge visible to the user. For
wneuper@226
   586
every step done in a calculation, there is a justification in \isac{}'s
wneuper@226
   587
knowledge base, which can be displayed on request. Even more importantly,
wneuper@226
   588
these justifications are meant to be understood by the user, as they are
wneuper@226
   589
expressed in terms of human mathematical reasoning, not in sophisticated
wneuper@226
   590
and optimised algorithms.
wneuper@226
   591
wneuper@226
   592
% GK070313- tag for quicksearch START
wneuper@226
   593
wneuper@226
   594
As \isac{}'s knowledge base can be understood by humans, it can be used as
wneuper@226
   595
a reference or even as a learning tool. Interaction with the knowlegde base is moderated by a dialogue controller (see also section \ref{AK:DESIGN:SYSTEM:BASIC:seeheim}), in a way similar to the interaction with the math engine in an ongoing calculation. Such a dialogue controller is responsible for the processing of actions coming from the math engine or the knowledge base and also for the response to user actions.
wneuper@226
   596
wneuper@226
   597
\begin{figure}[htb]
wneuper@226
   598
\centerline{\includegraphics[width=10cm, keepaspectratio=true]{fig/AK-sysdesign_draft}}
wneuper@226
   599
\caption{The first sketch for \isac{}'s architecture}
wneuper@226
   600
\label{fig.sysdesign_draft}
wneuper@226
   601
\end{figure}
wneuper@226
   602
wneuper@226
   603
% KE-Store heisst im Glossary "KE-base"? Die Bedeutung muss auch im Text
wneuper@226
   604
% erklaert werden.
wneuper@226
   605
wneuper@226
   606
As it was already discussed in UR.\ref{ur:4-data} the design took the designers of \sisac{} to 4 different browsers and guarantee a well designed abstraction every browser gets its own dialogue controller. Such a dialogue controller is one of the basic parts inside of \sisac{}. In the following paragraphs the term browsers will be used to describe the three knowledge browsers and the example browser. So these browsers with their corresponding dialogue controllers can be seen as one subsystem.
wneuper@226
   607
 
wneuper@226
   608
Mathematical knowledge is normally very static, but with \isac{} you can also make the current problem, method, theory or example available thru one of your browsers. So the basic design led to two subsystems which can be used separately, each with a presentation layer and a dialogue controller, but they can also access the actual context of each other.
wneuper@226
   609
wneuper@226
   610
The two subsystems interact in the following points:
wneuper@226
   611
\begin{itemize}
wneuper@226
   612
\item Both dialogue controllers share a common User Model, for a inventory of knowledge supposedly known to the user, be it from browsing the respective knowledge item, be it from having used specific knowledge in a calculation.
wneuper@226
   613
wneuper@226
   614
\item When browsing thru the knowledge base, an example illustrating the presented concept can be calculated.
wneuper@226
   615
wneuper@226
   616
\item When doing a calculation, items from the knowledge base justifying the correctness of the calculation can be displayed. This kind of context-based access to math knowledge is considered an efficient method of learning in \sisac.
wneuper@226
   617
%WN060324+++............................................................
wneuper@226
   618
The other reason for accessing the Knowledge Base from a calculation is, to explore the application of nearby knowledge-items to the calculation.
wneuper@226
   619
wneuper@226
   620
\item If the user is within a calculation and wants to apply a theorem to the current formula, he can switch to the theory browser and apply any formula of the knowledge base which matches. This communication between a browser and an active worksheet is done between their dialogue controllers.
wneuper@226
   621
wneuper@226
   622
%  \begin{itemize}
wneuper@226
   623
%  \item Which other theorem can be applied to the current formula~?
wneuper@226
   624
%  \item Which other rule-set can be applied to the current formula~? How does this rule-set behave with another rewrite-order~?
wneuper@226
   625
%  \item Which assumptions are generated by the rewrites on the current formula~?
wneuper@226
   626
%  \item Which other problem could match the model of the current calc-head~?
wneuper@226
   627
%  \item Which other method's guard could match the model of the current calc-head~?
wneuper@226
   628
%  \end{itemize}
wneuper@226
   629
wneuper@226
   630
Separate design considerations about the Browser Dialog see chap.\ref{WN-add-BrowserDialog}.
wneuper@226
   631
%............................................................+++WN060324
wneuper@226
   632
\end{itemize}
wneuper@226
   633
wneuper@226
   634
%For an in-depth discussion of the Knowledge Browser, see \cite{AG:thesis} and section \ref{AG:BrowserDialog} on p.\pageref{AG:BrowserDialog}.
wneuper@226
   635
wneuper@226
   636
\begin{figure}[htb]
wneuper@226
   637
\centerline{\includegraphics[width=\textwidth, keepaspectratio=true]
wneuper@226
   638
{fig/GK-sysdesign_seeheim}}
wneuper@226
   639
\caption{Design based on the Seeheim model and showing the separation of
wneuper@226
   640
browsing the knowledge and calculating}
wneuper@226
   641
\label{fig.sysdesign_seeheim}
wneuper@226
   642
\end{figure}
wneuper@226
   643
\footnote{End of copy from \cite{AK04:thesis} p.61-62.}
wneuper@226
   644
% GK070313- tag for quicksearch END
wneuper@226
   645
%WN050518---AK.p.61-62->isac-ADD--------END---please don't remove this line
wneuper@226
   646
wneuper@226
   647
%WN050518---AK.p.57-58->isac-ADD--------BEGIN---please don't remove this line
wneuper@226
   648
\footnote{Begin of copy from \cite{AK04:thesis} p.57-58.}
wneuper@226
   649
\section{Location of the Dialog Guide}\label{AK:DESIGN:SYSTEM:DISTRIBUTE:dialog}
wneuper@226
   650
wneuper@226
   651
With at least two machines involved - the user's computer with the
wneuper@226
   652
Worksheet and the server with the Math engine - the question where
wneuper@226
   653
to put the Dialog Guide remains. The Dialog Guide accesses the
wneuper@226
   654
Math Engine, the Worksheet and the User Model frequently. For
wneuper@226
   655
simplicity, mobility, security and centralisation reasons, the
wneuper@226
   656
User Model cannot reside on the user's machine. The same is true
wneuper@226
   657
for the Dialog Guide. The Dialog Guide with the persistent data of
wneuper@226
   658
the User Models could run on the server together with the Math
wneuper@226
   659
Engine or on an other server of his own. The Dialog Guide is
wneuper@226
   660
designed with the ability to run on a machine of its own in mind.
wneuper@226
   661
The final decision on the location of the Dialog Guide will be
wneuper@226
   662
based on tests with the prototype implementation.
wneuper@226
   663
%WN060324--->thesis.ML-----------------END---please don't remove this line
wneuper@226
   664
wneuper@226
   665
\footnote{End of copy from \cite{AK04:thesis} p.57-58.}
wneuper@226
   666
%WN050518---AK.p.57-58->isac-ADD--------END---please don't remove this line
wneuper@226
   667
wneuper@226
   668
wneuper@226
   669
wneuper@226
   670
wneuper@226
   671
%WN050518---AK.p.65-67->isac-SDD--------BEGIN---please don't remove this line
wneuper@226
   672
\footnote{Begin of copy from \cite{AK04:thesis} p.65-67.}
wneuper@226
   673
\section{The Interfaces to the WorkSheet Dialog Component}\label{AK:DESIGN:SYSTEM:ARCH:interface}
wneuper@226
   674
Data exchanged at the interfaces of the WorkSheet Dialog component include:
wneuper@226
   675
\begin{description}
wneuper@226
   676
\item[Examples to be started] When initialising the Dialog to
wneuper@226
   677
moderate a process of calculation, the starting point can be an
wneuper@226
   678
empty worksheet or an Example from the example collection. In case
wneuper@226
   679
of starting from an Example, the Example has to be passed to the
wneuper@226
   680
Dialog. \item[Notifications about updates in a calculation] With
wneuper@226
   681
present technology, calculations done by the Math Engine may take
wneuper@226
   682
longer than the average user would wait. Moreover, response times
wneuper@226
   683
are not easily predictable, so waiting for a call to return would
wneuper@226
   684
block the WorkSheet Dialog - hence user interaction  - for too
wneuper@226
   685
long a period of time. Therefore calls to the Math Engine return
wneuper@226
   686
immediately, with asynchronous notifications being sent when the
wneuper@226
   687
Math Engine completes a request. In addition to continuous
wneuper@226
   688
attention to the user, this approach allows for several users
wneuper@226
   689
watching one and the same calculation on their respective
wneuper@226
   690
Worksheets and being even notified of updates in the calculation
wneuper@226
   691
requested by other users. For efficiency reasons, the update
wneuper@226
   692
notifications contain hints about which parts of the Calc Tree may
wneuper@226
   693
be affected by the update. These notifications are passed from the
wneuper@226
   694
Math Engine to the Dialog and from the Dialog to the Presentation
wneuper@226
   695
Layer. \item[The calculation itself] The Dialog needs access to
wneuper@226
   696
the Calc Tree stored in the Math Engine and passes a filtered
wneuper@226
   697
version of the tree to the Worksheet for display. The Dialog
wneuper@226
   698
cannot understand the mathematical meaning of Formulas, but is is
wneuper@226
   699
interested in identifying Tactics. It is the Tactics which the
wneuper@226
   700
user is learning to apply and the WorkSheet Dialog has to provide
wneuper@226
   701
appropriate user guidance for. \item[Calc Head] As with the Calc
wneuper@226
   702
Tree during the Solving Phase, during the Specifying Phase a Calc
wneuper@226
   703
Head has to be shared between Math Engine, WorkSheet Dialog and
wneuper@226
   704
Worksheet. \item[Notifications about user requests] The Dialog has
wneuper@226
   705
to be informed about actions the user triggers on the Worksheet.
wneuper@226
   706
The Dialog in turn translates the user actions into internal state
wneuper@226
   707
changes or requests to the Math Engine. \item[Requests to the Math
wneuper@226
   708
Engine] As the Math Engine stores the only instance of the Calc
wneuper@226
   709
Tree significant to further processing, all manipulations of the
wneuper@226
   710
tree have to be done by the Math Engine. Request to edit the
wneuper@226
   711
calculation originating from the user are processed by the
wneuper@226
   712
WorkSheet Dialog and execution is requested from the Math Engine.
wneuper@226
   713
\item[Information touched] Records of the user's interaction with
wneuper@226
   714
\isac{}'s knowledge are kept in the User Model and abstracted to
wneuper@226
   715
\isac{}'s view of the user's knowledge and abilities. The User
wneuper@226
   716
Model is informed about every interaction of the user with the
wneuper@226
   717
calculation or the Knowlegde Base. The User Model's abstraction is
wneuper@226
   718
in turn queried by the WorkSheet Dialog to decide on details of
wneuper@226
   719
user guidance. \item[Dialog Atoms] Information about the Dialog
wneuper@226
   720
Atoms involved in user interaction is passed to the User Model to
wneuper@226
   721
record not only the fact that the user interacted witch certain
wneuper@226
   722
parts of knowledge but also the nature of the interaction.
wneuper@226
   723
\item[User settings] The user's preferences about the way he
wneuper@226
   724
wishes to be guided have to be communicated to the WorkSheet
wneuper@226
   725
Dialog, whereas preferences about the visual appearance of the GUI
wneuper@226
   726
are communicated directly to the Worksheet.
wneuper@226
   727
\end{description}
wneuper@226
   728
\footnote{End of copy from \cite{AK04:thesis} p.65-67.}
wneuper@226
   729
%WN050518---AK.p.65-67->isac-SDD--------END---please don't remove this line
wneuper@226
   730
wneuper@226
   731
wneuper@226
   732
wneuper@226
   733
%WN050518---AK.p.67-76->ADD-----------BEGIN---please don't remove this line
wneuper@226
   734
\footnote{Begin of copy from \cite{AK04:thesis} p.67-76.}
wneuper@226
   735
\section{Controlling the Course of Interaction}\label{AK:DESIGN:DIALOG:INTERACT}
wneuper@226
   736
The WorkSheet Dialog is responsible for guiding the user the way to obtaining a solution to a problem.
wneuper@226
   737
wneuper@226
   738
\subsection{Dialog Phases}\label{AK:DESIGN:DIALOG:INTERACT:phase}
wneuper@226
   739
On a coarse level, interaction goes through several phases with a fixed sequence, independent of the particular problem being solved (UR.\ref{COMMON:CALCDATA:phases}). These so-called Dialog Phases have been modelled on a state machine with well-defined states and transitions between the states. During each of these phases, the WorkSheet Dialog behaves differently and reacts to different requests. Regardless of mathematical context, the Dialog Phases provide a certain degree of error-robustness by recognising out-of-order events.
wneuper@226
   740
wneuper@226
   741
With the Dialog Phases and their relationships becoming more complex in future development, providing separate sub-classes for the Dialog's behaviour in different states may be appropriate, as described in the State pattern \cite{Gamma95}.
wneuper@226
   742
\subsubsection{Initialising}
wneuper@226
   743
To start interaction, the WorkSheet Dialog has to establish
wneuper@226
   744
connections with the components it interacts with, a Worksheet
wneuper@226
   745
representing the Presentation Layer and a Math Engine representing
wneuper@226
   746
the application (UC.\ref{START:contact-math}). In addition to
wneuper@226
   747
that, the WorkSheet Dialog needs information about the user it
wneuper@226
   748
deals with, to be able to adapt its behaviour accordingly
wneuper@226
   749
(UC.\ref{START:ident-user}, UR.\ref{COMMON:USERS:multi}). Only
wneuper@226
   750
after being provided with a CalcHead to act upon, optionally
wneuper@226
   751
filled in with a Formalization of a pre-defined Example
wneuper@226
   752
(UC.\ref{START:from-example}), the Dialog can enter the
wneuper@226
   753
Specification Phase.
wneuper@226
   754
\subsubsection{Specifying}
wneuper@226
   755
The goal of this phase is to gather enough - and consistent -
wneuper@226
   756
information to start solving (UC.\ref{SPECIFY}). During this
wneuper@226
   757
phase, the user can add information to a CalcHead, in arbitrary
wneuper@226
   758
order. After every item added, the CalcHead is checked with the
wneuper@226
   759
Math Engine for consistency and completeness
wneuper@226
   760
(UC.\ref{SPECIFY:check}, UR.\ref{DIALOG:GUIDE:model-feedback}).
wneuper@226
   761
wneuper@226
   762
Requests for help entering items cannot be answered by the WorkSheet Dialog because of lacking mathematical knowledge. Such requests are passed to the Math Engine, if allowed by the user's settings. The Specifying Phase can be finished only after the CalcHead is confirmed being complete and consistent by the Math Engine (UC.\ref{SPECIFY:COMPLETE:model}).
wneuper@226
   763
\subsubsection{Solving}
wneuper@226
   764
To enter the Solving Phase, a valid CalcHead is required.
wneuper@226
   765
Consequently, the mathematical situation initially described by the CalcHead is transformed towards a situation called result. The transformation is performed in steps (UR.\ref{COMMON:CALCDATA:stepwise}) which are recorded in a CalcTree (UR.\ref{COMMON:CALCDATA:calc-tree}). As opposed to the Specifying Phase, the steps are not cumulative, but sequential. This implies that while it is possible to change steps already taken, such an action is likely to render subsequent steps invalid (UC.\ref{SOLVE:MANUAL:FORMULA:replace}). The transformations are not performed by the WorkSheet Dialog itself but by the Math Engine. Requests to take a step are passed to the Math Engine and steps entered by the user are checked by the Math Engine (UR.\ref{COMMON:CALCDATA:correct}). Note that the WorkSheet Dialog does not know anything about mathematics, it knows only about the structure of interaction in problem-solving. As stated before, transformations can be done entirely by the user or by the Math Engine, or with combined effort of both. This opens up a spectrum of interactional possibilities how to take a step and the various possibilities are described as Dialog Atoms (see section \ref{AK:DESIGN:TECHUI:DIALOG:atom}).
wneuper@226
   766
wneuper@226
   767
\paragraph{}
wneuper@226
   768
With the concept of a state machine in mind, additional phases can be added easily in the course of future development to handle more complex sequences.
wneuper@226
   769
wneuper@226
   770
\subsubsection{Solving Subproblems}
wneuper@226
   771
Subproblems are calculations within calculations; in principle, they do not differ from top-level problems.
wneuper@226
   772
wneuper@226
   773
\begin{figure}[htb]
wneuper@226
   774
\centerline{\includegraphics[width=\textwidth, keepaspectratio=true]{fig/AK-dialog_phases}}
wneuper@226
   775
\caption{A state machine for the Dialog Phases}
wneuper@226
   776
\label{fig.states}
wneuper@226
   777
\end{figure}
wneuper@226
   778
wneuper@226
   779
\subsection{Dialog Atoms}\label{AK:DESIGN:DIALOG:INTERACT:atom}
wneuper@226
   780
As opposed to the high-level Dialog Phases, Dialog Atoms are basic building blocks of system-user interaction at the level of a single interaction. For configuring the WorkSheet Dialog's interactional behaviour (UR.\ref{DIALOG:FLEX:configure}), we aim at developing an abstract language with Dialog Atoms (UR.\ref{DIALOG:FLEX:atomic})as part of the vocabulary. The WorkSheet Dialog could contain an API for programming its behaviour, with a lower-level interface implementing an Interpreter pattern \cite{Gamma95} for Dialog Atoms and a high-level interface implementing the Strategy pattern.
wneuper@226
   781
wneuper@226
   782
Let us quote \cite{wn:diss} again:
wneuper@226
   783
\begin{quotation}
wneuper@226
   784
The dialog atoms are the following, ordered by descending 'activity' of the learner: All atoms concern a step from the current formula \currf applying a tactic \tac which yields the resulting formula \res(the derivation of \currf), i.e. $f\longrightarrow^{\it tac}\;f^\prime$.
agriesma@0
   785
\begin{enumerate}
wneuper@226
   786
\item \label{putres} given \currf, input the next formula \res
wneuper@226
   787
\item \label{fillres} given a partial \currf (supplied by \sisac), complete \currf such that it is a derivation of \currf
wneuper@226
   788
\item \label{puttac}given \currf, input a tactic \tac to be applied to \currf
wneuper@226
   789
\item given \currf, select \tac from a list (supplied by \sisac) to be applied to \currf
wneuper@226
   790
\item \label{filltac} given \currf and a partial \tac, complete the \tac (i.e. a theorem, a substitution, etc.) such that it can be applied to \currf
wneuper@226
   791
\item given \currf, \tac, and a partial \res, complete \res such that it is the result of applying \tac to \currf
wneuper@226
   792
\item given \currf and \res, input \tac such that \res is the result of \currf applying \tac
wneuper@226
   793
\item given \currf and \res, select \tac from a list (supplied by \sisac) such that \res is the result of \currf applying \tac
wneuper@226
   794
\item given \currf, \res and a partial \tac, complete \tac such that \res is the result of \currf applying \tac
wneuper@226
   795
\end{enumerate}
wneuper@226
   796
\end{quotation}
wneuper@226
   797
Note that exchanging the parts of the user and \isac{} in the above proposal yields another set of Dialog Atoms, which can be treated as equivalent from the Dialog's point of view.
wneuper@226
   798
Taking atom 1 as an example, it is essentially the same whether \currf is supplied by \isac{} and \res is expected to be input by the user or the user asks \isac{} to derive \res from \currf. In abstract terms, in both cases one part provides \currf and the other part is expected to supply \res. For this reason, the WorkSheet Dialog tries to provide symmetric Dialog Atoms and make use of this symmetry in the implementation.
wneuper@226
   799
wneuper@226
   800
\section{Sharing the Calculation with other Components}\label{AK:DESIGN:DIALOG:SHARE}
wneuper@226
   801
wneuper@226
   802
\subsection{Representing the Model and the Specification}\label{AK:DESIGN:DIALOG:SHARE:spec}
wneuper@226
   803
A Model (UR.\ref{COMMON:CALCDATA:formalization}) storing lists of formulas called Given, Find, Where, Relate and a Specification (UR.\ref{COMMON:CALCDATA:specification}) storing identifications of a Theory, a Method and a Problem comprise all data necessary to specify a calculation to the Math Engine. In the \isac{} system, this information is called a CalcHead, indicating that every calculation (a subproblem, too) has a header specifying a starting point. Once the Solving Phase of a calculation is started, this information does not change any more.
wneuper@226
   804
wneuper@226
   805
wneuper@226
   806
\subsection{Representing the Path to the Solution}\label{AK:DESIGN:DIALOG:SHARE:solve}
wneuper@226
   807
The path to the result is represented by a tree-like structure (UR.\ref{COMMON:CALCDATA:calc-tree}), alternating formulas and tactics (UR.\ref{COMMON:CALCDATA:tactic}). There is always exactly one Tactic being applied to a formula. In the course of calculating a result, the structure grows as new formulas are added by the user or the Math Engine.
wneuper@226
   808
wneuper@226
   809
\subsection{Treating Subproblems}\label{AK:DESIGN:DIALOG:SHARE:subprob}
wneuper@226
   810
A subproblem is a calculation within a calculation. As such, every subproblem is preceded by a CalcHead. Once specified by a CalcHead, a subproblem could be treated as a calculation of its own and solved independently of the enclosing calculation.
wneuper@226
   811
Two possibilities for treating subproblems and feeding their results back into the main calculation were explored.
wneuper@226
   812
\subsubsection{Independent CalcTrees}
wneuper@226
   813
Every subproblem could be stored in an independent CalcTree. This would emphasise the fact that a subproblem can be solved independently of the enclosing problem and reflect that fact in the data structure used. As an advantage, every calculation would have exactly one CalcHead and exactly one CalcTree associated with it, representing the data involved in the Specifying Phase and the Solving Phase, respectively. This would allow for clearly separating the CalcHead from the CalcTree thus reflecting the separation of the Specifying Phase from the Solving Phase in the storage of data. On the other hand, such an approach would complicate feeding back the results of a subproblem into the enclosing calculation.
wneuper@226
   814
\subsubsection{One Common CalcTree}
wneuper@226
   815
As an alternative, all data of a calculation, including associated subproblems, could be stored in a single data structure, subproblems being stored as branches of the tree. While this approach reflects the fact that a subproblem is part of the enclosing calculation, the distinction between Specifying Phase and Solving Phase becomes blurred, as the CalcHeads specifying subproblems must be stored within a CalcTree. Having subproblems tightly integrated into the enclosing calculation eases using their results.
wneuper@226
   816
wneuper@226
   817
This approach was chosen for implementation, in part due to the fact that the already-implemented Math Engine stores calculations in a single tree.
wneuper@226
   818
wneuper@226
   819
\subsection{Accessing Calculation Data}\label{AK:DESIGN:DIALOG:SHARE:access}
wneuper@226
   820
\subsubsection{CalcHead}
wneuper@226
   821
With the CalcHead having a fixed number of fields, all members can be accessed directly. Wherever components share a CalcHead, the object itself is referenced or passed.
wneuper@226
   822
\subsubsection{CalcTree}
wneuper@226
   823
For accessing data in the dynamically growing CalcTree, the Iterator pattern \cite{Gamma95} was chosen for its main advantage of hiding the internal representation of the data accessed.
wneuper@226
   824
Several reasons suggested hiding the internal representation:
wneuper@226
   825
\begin{itemize}
wneuper@226
   826
\item An Iterator can serve the additional purpose of referencing elements of a calculation.
wneuper@226
   827
\item An Iterator is likely to be a much smaller object than the calculation it points into.
wneuper@226
   828
\item Several components residing on different machines imply having to pass information about the calculation across the network. Using compact Iterators instead of the entire calculation would make efficient use of network bandwidth and save computing time needed for serializing large objects.
wneuper@226
   829
\item At an early stage in design, the final structure of a calculation as stored in the Java-implemented part of \isac{} was not yet decided upon. Using Iterators made it possible to start development of other components without knowing which data structure would be eventually implemented.
wneuper@226
   830
\item There was much debate about runtime efficiency versus ease of development in representing a calculation. Hiding the internal representation would allow for implementing efficient data structures at a later time without having to redesign the entire system.
wneuper@226
   831
\item Neither the WorkSheet Dialog nor the Presentation Layer need to know how a calculation is actually stored. On the other hand, both components are interested in the structure of a calculation as presented to the user. Using Iterators would allow traversing a calculation in a user-oriented manner independent of the actual implementation.
wneuper@226
   832
\end{itemize}
wneuper@226
   833
wneuper@226
   834
\subsection{Communicating Changes in the State of Calculation}\label{AK:DESIGN:DIALOG:SHARE:change}
wneuper@226
   835
As a component sitting between the Application and the Presentation Layer, one of the tasks of the WorkSheet Dialog is to propagate information about changes or events in one component to the other.
wneuper@226
   836
The WorkSheet Dialog intercepts the flow of information and modifies it by implementing \isac{}'s logic of user-interaction.
wneuper@226
   837
\subsubsection{Wrapper-based Design}
wneuper@226
   838
One approach is wrapping the objects representing the calculation
wneuper@226
   839
- the Calculation Tree and associated objects - into objects with
wneuper@226
   840
the same interfaces but different behaviour, following the
wneuper@226
   841
Decorator pattern \cite{Gamma95}. This way, the WorkSheet Dialog
wneuper@226
   842
can filter information considered not appropriate for being
wneuper@226
   843
presented to the user by simply removing these data from the
wneuper@226
   844
representation accessible to the Presentation Layer. For an
wneuper@226
   845
example, if the user is not interested in the Tactics transforming
wneuper@226
   846
one formula into another, the Tactics simply do not show up in the
wneuper@226
   847
representation of the calculation seen by the Presentation Layer.
wneuper@226
   848
This has the advantage of simplicity - the Presentation Layer and
wneuper@226
   849
the Application need not consider filtering taking place or even
wneuper@226
   850
know about filtering at all. Moreover, the same interface can
wneuper@226
   851
still be used if one would want a system without the intervention
wneuper@226
   852
of a WorkSheet Dialog for direct communication between the
wneuper@226
   853
Application and the Presentation Layer.
wneuper@226
   854
\subsubsection{Event-driven Design}
wneuper@226
   855
In addition to data representing the state of calculation, there is data representing changes in time. Many of these changes occur asynchronously at unpredictable intervals - such as interactions of the user - or with considerable unpredictable delay after the event that that triggered them - such as results of a lengthy transformation becoming available. This sort of changes is communicated through event messages, with objects interested in such notifications registering as Observers \cite{Gamma95} with sources of events. The main sources of events are the Presentation Layer for user actions and the Application for new information about the calculation becoming available. The WorkSheet Dialog intercepts and filters these messages using the Mediator pattern \cite{Gamma95}.
wneuper@226
   856
wneuper@226
   857
\section{Configuring the User-Interface}\label{AK:DESIGN:DIALOG:UI}
wneuper@226
   858
The WorkSheet Dialog and the Presentation Layer have to cooperate closely in user interaction. Consider a button on the screen triggering some action. It is the Presentation Layer's responsibility to render the button and to notice the user clicking it. It is the WorkSheet Dialog's responsibility to decide whether the user is allowed to request such action and to trigger appropriate action in the Application.
wneuper@226
   859
wneuper@226
   860
The division is not always so clear-cut. Consider internationalisation of the user-interface (UR.\ref{COMMON:MISC:i18n}): Is it the Presentation Layer, which is responsible for rendering in general and the language environment, that decides which text to set on the button? Or is it the WorkSheet Dialog, which knows the meaning of the action triggered by the button? For the following considerations, we will stick to the example of the button.
wneuper@226
   861
\subsection{The Presentation Layer in Control}\label{AK:DESIGN:DIALOG:UI:present}
wneuper@226
   862
If the Presentation Layer controls every aspect of a button, such as visual appearance, placement on screen and the actions triggered, everything seems easy.
wneuper@226
   863
Problems arise if we consider buttons which are needed only in special contexts. A button asking for the next Tactic to be applied to a formula does not make sense during the Specifying Phase, where no Tactics occur.
wneuper@226
   864
wneuper@226
   865
We could show the button all the time, with the WorkSheet Dialog
wneuper@226
   866
simply ignoring requests when not appropriate. This has the
wneuper@226
   867
disadvantage of confusing the user with lots of buttons which can
wneuper@226
   868
be clicked but make no sense in the current context.
wneuper@226
   869
wneuper@226
   870
We could show buttons only if clicking them makes sense. If the
wneuper@226
   871
Presentation Layer were to solve this problem, it would need
wneuper@226
   872
information about the current phase of the dialog. While this may
wneuper@226
   873
seem feasible, in other situations the applicability of the button
wneuper@226
   874
might depend on the user's role or privileges, or on the user's
wneuper@226
   875
level of expertise, which in turn might change even during a
wneuper@226
   876
session. Especially if buttons depend on didactic strategies, this
wneuper@226
   877
involves knowledge which has nothing to do with presentation but
wneuper@226
   878
is clearly part of the WorkSheet Dialog.
wneuper@226
   879
wneuper@226
   880
\subsection{The WorkSheet Dialog in Control}\label{AK:DESIGN:DIALOG:UI:dialog}
wneuper@226
   881
If we put the WorkSheet Dialog in control of the buttons, it
wneuper@226
   882
becomes easy to solve problems with context, but this would
wneuper@226
   883
require the WorkSheet Dialog to care about internationalisation
wneuper@226
   884
and visual appearance, which is out of interactional context and
wneuper@226
   885
should be left to the Presentation Layer.
wneuper@226
   886
wneuper@226
   887
\subsection{Splitting up Responsibilities and Providing for Interaction}\label{AK:DESIGN:DIALOG:UI:split}
wneuper@226
   888
It seems best to have the various aspects of a button controlled
wneuper@226
   889
by the component which possesses the information necessary to do
wneuper@226
   890
so.
wneuper@226
   891
wneuper@226
   892
While the Presentation Layer should control every visual aspect of
wneuper@226
   893
a button such as text, shape and placement on screen, the
wneuper@226
   894
WorkSheet Dialog should control the context in which the button
wneuper@226
   895
appears and the action it triggers. See \cite{sliski} for the
wneuper@226
   896
discussion of a related problem.
wneuper@226
   897
wneuper@226
   898
First attempts aimed at providing means for the WorkSheet Dialog to enable or disable buttons otherwise controlled by the Presentation Layer. In the meantime, the goal changed to having the WorkSheet Dialog control the creation and destruction of elements of user-interaction as well.
wneuper@226
   899
wneuper@226
   900
The WorkSheet Dialog creates a element of user-interaction by providing an identification of the action it triggers. The presentation layer need not even understand the meaning of the action, it uses the identification merely for notifying the WorkSheet Dialog which action has been triggered by the user. In addition to that, the WorkSheet Dialog provides the Presentation Layer with hints about the context of the user interaction, such as whether the action relates to a single formula or the user's session as a whole. The Presentation Layer can use this information to choose an appropriate visual representation. Moreover, the the WorkSheet Dialog does not even request the trigger to be a button. It requests that a means for the user to trigger a request be created and it is left to the design of the Presentation Layer to offer a button, a menu item or both. This approach bears similarites to the Factory pattern \cite{Gamma95}, but the created object remains with the Presentation Layer and is not passed back to the WorkSheet Dialog.
wneuper@226
   901
wneuper@226
   902
wneuper@226
   903
\section{Obtaining and Storing Configuration Data}\label{AK:DESIGN:DIALOG:CONFIG}
wneuper@226
   904
Much of the WorkSheet Dialog's behaviour can be parameterised (UR.\ref{DIALOG:FLEX}), and many of these parameters are individual to a user (UR.\ref{DIALOG:ADAPT}). Moreover, some of the parameters are modified by the system itself during a session (UR.\ref{DIALOG:ADAPT}) based on data collected (UR.\ref{DIALOG:PROFILE}).
wneuper@226
   905
wneuper@226
   906
\subsection{The User Settings}\label{AK:DESIGN:DIALOG:CONFIG:settings}
wneuper@226
   907
By user settings we denote preferences on aspects of the system set by the user (UR.\ref{DIALOG:FLEX:configure}, UR.\ref{DIALOG:FLEX:info}), such as amount of data shown, levels of difficulty or customisations of the visual appearance of the program. As these settings do not pertain only to the WorkSheet Dialog but also to other parts of the system, they will be managed outside the WorkSheet Dialog. It is to be noted that this information does not change very often, so efficient processing is not an issue.
wneuper@226
   908
wneuper@226
   909
\subsection{Permissions and Security Issues}\label{AK:DESIGN:DIALOG:CONFIG:secure}
wneuper@226
   910
With \isac{} being developed as groupware (UR.\ref{COMMON:USERS:groups}), special attention has to be paid to the fact that settings will be set not only by the individual user, but also by privileged persons such as course administrators (UR.\ref{COMMON:USERS:roles}). In addition to that, changing some of the settings may be subject to restrictions (UR.\ref{DIALOG:RESTRICT:individual}) depending on the role of the user. It is assumed that reconciliation of contradictory settings and security issues have already been resolved by user management and that the WorkSheet Dialog has access to the settings in effect for the current session.
wneuper@226
   911
wneuper@226
   912
\subsection{The User Model}\label{AK:DESIGN:DIALOG:CONFIG:model}
wneuper@226
   913
As required in UR.\ref{DIALOG:ADAPT}, the WorkSheet Dialog will adapt to the assumed knowledge and abilities of the user. Decisions about which information to show and which actions to take will be based on an internal abstraction of the experience the system had with the user, the User Model.
wneuper@226
   914
wneuper@226
   915
The User Model is notified about every interaction between user and mathematical knowledge and information about the knowledge involved (UR.\ref{DIALOG:ADAPT:knowledge}). The user's performance (UR.\ref{DIALOG:ADAPT:perform}) is recorded together with information about the context of the interaction, i.e. the Dialog Atom used in the interaction. For efficiency reasons, data is stored as statistical digest rather than as log. The User Model is accessed frequently, at least once per interaction both for query and for recording the outcome, and logging every event would grow the amount of data processed unmanageable very soon.
wneuper@226
   916
wneuper@226
   917
Note that the User Model gathers and processes the data, but is not aware of their meaning - knowledge items and Dialog Atoms are processed as identifying numbers. Interpretation of the data is left to the components which use them, i.e. the WorkSheet Dialog and, in the future, the Browser Dialog.
wneuper@226
   918
wneuper@226
   919
Abstractions on a higher level than the presently used statistics could be added in the future, as cooperations of \isac{} in the field of didactics could provide abstract measures e.g. for a user's familiarity with a topic. In any case, the User Model provides descriptive information about the user and decisions about further actions are always taken by the WorkSheet Dialog.
wneuper@226
   920
wneuper@226
   921
As the user's history has to be regarded as well (UR.\ref{DIALOG:ADAPT:history}), the User Model will be stored across sessions along with the user's settings.
wneuper@226
   922
wneuper@226
   923
\footnote{End of copy from \cite{AK04:thesis} p.67-76.}
wneuper@226
   924
%WN050518---AK.p.67-76->ADD-----------END---please don't remove this line
wneuper@226
   925
wneuper@226
   926
%WN000705---summerterm06------------BEGIN---please don't remove this line
wneuper@226
   927
% GK070313- tag for quicksearch START
wneuper@226
   928
\section{Browser Dialog}\label{WN-add-BrowserDialog}
wneuper@226
   929
The browser dialogs are responsible to process the informations coming from the user interactions on the knowledge browsers (see chap.\ref{WN-add-Knowledge-Browser}) and also for gathering information from the knowledge base or (indirectly over the worksheet dialog) from the math engine.
wneuper@226
   930
wneuper@226
   931
There is no possibility for the learner to manipute the data presented by the knowledge browsers while using \sisac{}'s tutoring-system. The only way to change data from the KE-store is via \sisac{}'s authoring-system.
wneuper@226
   932
There are two sources where the browser dialogs fetch their information:
wneuper@226
   933
\begin{enumerate}
wneuper@226
   934
\item When Data has to be fetched from the KEStore (chap.\ref{ADD:ke-store}) it solely depends on the UserModel (the membership to a course, a session within a written examination, etc.) how much informationen if any can be retrieved form the KEStore.
wneuper@226
   935
\item Data from the MathEngine (chap.\ref{WN-add-Bridge}) which concerns a context to a certain calculation. The context gives a concrete interpretation of the meaning of an item of the KEStore. The user can choose if he wants to switch the context on or off. When the context is switched off only the static information from the KEStore will be presented.
agriesma@0
   936
\end{enumerate}
agriesma@0
   937
wneuper@226
   938
In analogy to the worksheet dialog the browser dialog has a central role in \sisac{}'s architecture following the 'Seeheim Model' (see sect.\ref{AK:DESIGN:SYSTEM:DISTRIBUTE:dialog}).
agriesma@0
   939
wneuper@226
   940
There is one dialog for one browser (see chap.\ref{WN-add-Knowledge-Browser}). But the functionality of the four browsers is more different than their layout shows. Thus there is a more sophisticated (subclass-)relation between the dialogs than betwenn the browsers. The dialog can be
wneuper@226
   941
\begin{itemize}
wneuper@226
   942
\item an example browser dialog, which is responsible for starting the execution of examples
wneuper@226
   943
\item a knowledge browser dialog, which is responsible for displaying the respective parts of the math knowledge; thus there is a
wneuper@226
   944
  \begin{itemize}
wneuper@226
   945
  \item theory dialog
wneuper@226
   946
  \item problem dialog
wneuper@226
   947
  \item method dialog
wneuper@226
   948
  \end{itemize}
wneuper@226
   949
\end{itemize}
wneuper@226
   950
The dialog has to handle links from each browser to each other. The dialogs are created at the same time at setup of the session.
agriesma@0
   951
wneuper@226
   952
\subsection{Browser Dialog and Worksheet Dialog:} There is four browser dialog for one session, while there may be $0\dots n$ worksheet dialogs (according to the number of worksheets opened). The relations between the two kinds of dialogs are discussed in \ref{WN-add-BDialog-WSDialog}.
agriesma@0
   953
wneuper@226
   954
\subsection{Survey on requirements}\footnote{This is a survey from an early design phase documented in \cite{AG:thesis} p.42}
wneuper@226
   955
 The \emph{browser-dialog} is the peer for the browser within the
wneuper@226
   956
 dialog and gathers the informations for the request. Depending of the
wneuper@226
   957
 type of request, it contacts the \emph{KE-Store} and/or the
wneuper@226
   958
 WorkSheet-dialog. Afterwards, the informations are filtered depending
wneuper@226
   959
 a users actual permissions and duties. It is possible, that pages are
wneuper@226
   960
 blocked as a whole --- e.g. if an example is not accessible before an
wneuper@226
   961
 other one is solved. Alternatively, some fields might be blocked. e.g.
wneuper@226
   962
 if a learner has to solve a problem while performing a test, he might
wneuper@226
   963
 see all available problems -- but the dialog will suppress the fields
wneuper@226
   964
 which tell the user if (and why) an actual problem does not fit.
agriesma@0
   965
wneuper@226
   966
 The permissions are gained from different sources.
wneuper@226
   967
 \begin{itemize}
wneuper@226
   968
 \item The course-designer may define a group of users which may
wneuper@226
   969
   access an example.
agriesma@0
   970
wneuper@226
   971
 \item The course-designer may define preconditions before a example is
wneuper@226
   972
   displayed (e.g. a date, or a set of examples to solve first)
wneuper@226
   973
wneuper@226
   974
 \item The course-designer may set the user to use a ``temporary
wneuper@226
   975
 environment'' which alters all permissions to a set of
wneuper@226
   976
 \emph{KE-Objects}(e.g. while an exam)
wneuper@226
   977
wneuper@226
   978
 \item The dialog-layer maintains a user-history to find out which
wneuper@226
   979
%WN                 ? dialog-state   ~~~~~~~~~~~~
wneuper@226
   980
   examples and parts of the knowledge are already visited and solved.
wneuper@226
   981
 \end{itemize}
wneuper@226
   982
wneuper@226
   983
 The informations about a user are stored within the user-model.
wneuper@226
   984
 Informations like the history are not only gathered and used by the
wneuper@226
   985
 browser-dialog but by the whole dialog-layer.
wneuper@226
   986
wneuper@226
   987
wneuper@226
   988
\section{Dialog Guide and User Model}
wneuper@226
   989
The term 'Dialog Guide' addesses an abstraction which comprises both, the Worksheet Dialog and the Browser Dialog. The Dialog Guide shall be subject to simple implementation and parameterization of 'intelligent dialog behaviour' by 'dialog authors' in the future.
wneuper@226
   990
wneuper@226
   991
There is a detailed discussion in sect.\ref{WN-add-DG-UserModel} p.\pageref{WN-add-DG-UserModel} about the relations beetwenn the dialoges an the UserModel within the context of session management.
wneuper@226
   992
wneuper@226
   993
wneuper@226
   994
%% NC2301- tag for quicksearch
wneuper@226
   995
\chapter{Worksheet}
wneuper@226
   996
%% see the survey in \ref{MH->isac-ADD1} on p.\pageref{MH->isac-ADD1}.
wneuper@226
   997
wneuper@226
   998
The worksheet is the center of user interaction in the \sisac{}
wneuper@226
   999
system. From the Users point of view, the Worksheet is the place
wneuper@226
  1000
where the calculation happens. The \sisac{}'s knowledge base is
wneuper@226
  1001
constantly expanding and the user interface has to be flexible
wneuper@226
  1002
enough to allow the user to use every function provided by the
wneuper@226
  1003
mathematics engine.
wneuper@226
  1004
wneuper@226
  1005
\section{The Presentation Model}
wneuper@226
  1006
wneuper@226
  1007
As already mentioned when designing \sisac{}, the entire was split
wneuper@226
  1008
into components according to the Seeheim Model. The Worksheet
wneuper@226
  1009
component according to this model represents the Presentation
wneuper@226
  1010
Layer. According to Seeheim Model, the Presentation Layer is the
wneuper@226
  1011
component that serves for the simultaneous interactive
wneuper@226
  1012
communication with the user. This component defines the user
wneuper@226
  1013
interface on a lexical level by specifying the user interface
wneuper@226
  1014
widgets presented to the user. These user interface widgets serve
wneuper@226
  1015
the purpose of supplying output to the user and receiving input
wneuper@226
  1016
from the user.
wneuper@226
  1017
wneuper@226
  1018
\begin{figure}[htb]
wneuper@226
  1019
\centerline{\includegraphics[width=\textwidth,keepaspectratio=true]{fig/NC-Seeheim_Worksheet}}
wneuper@226
  1020
\caption{Worksheet as a part of Seeheim Application Model}
wneuper@226
  1021
\label{fig.seeheim_worksheet}
wneuper@226
  1022
\end{figure}
wneuper@226
  1023
wneuper@226
  1024
\section{Communication between the Presentation and Dialogue Control Layer}
wneuper@226
  1025
wneuper@226
  1026
As mentioned in the previous section, the main purpose of the
wneuper@226
  1027
Worksheet is to translate the user interactions to the requests to
wneuper@226
  1028
the system. In this section we shall discuss how to implement the
wneuper@226
  1029
communication between the Dialogue and the Presentation Layer. To
wneuper@226
  1030
further simplify things, the communication is divided into two
wneuper@226
  1031
categories:
wneuper@226
  1032
agriesma@0
  1033
\begin{itemize}
agriesma@0
  1034
wneuper@226
  1035
\item User Interface Events, which consist of user requests and
wneuper@226
  1036
system messages
agriesma@0
  1037
wneuper@226
  1038
\item Calculation Events, which represent the output of the
wneuper@226
  1039
mathematic engine
wneuper@226
  1040
agriesma@0
  1041
\end{itemize}
agriesma@0
  1042
wneuper@226
  1043
\subsection {User Interface Events}
agriesma@0
  1044
wneuper@226
  1045
The most common way to implement this type of communication is to
wneuper@226
  1046
hold a reference to the system interface of the Worksheet Dialogue
wneuper@226
  1047
in the Worksheet and for every user interaction event, simply call
wneuper@226
  1048
specific methods of the interface to execute the command. However,
wneuper@226
  1049
the designers of \sisac{} had to take in the consideration that the
wneuper@226
  1050
Worksheet and the rest of the system are two different and
wneuper@226
  1051
separate applications, meant to run on different computers and
wneuper@226
  1052
communicate over network. Second consideration was that the
wneuper@226
  1053
Worksheet application does not necessary need to be an AWT or
wneuper@226
  1054
SWING application, but could be a pure text mode interface or even
wneuper@226
  1055
a 3D enhanced virtual reality interface. Additionally, the
wneuper@226
  1056
components had to be as flexible as possible, but the interface
wneuper@226
  1057
should remain the same, thus allowing for the separate development
wneuper@226
  1058
of Presentation and Dialogue Layer.
agriesma@0
  1059
wneuper@226
  1060
The logical answer was to use the "command objects" as a practical
wneuper@226
  1061
mean for network transport, because they can be easily serialised.
wneuper@226
  1062
The receiving module of the system has only one method for
wneuper@226
  1063
communication that handles all user interaction events. For each
wneuper@226
  1064
event this method receives the appropriate "command object" as the
wneuper@226
  1065
parameter and acts accordingly. This keeps the interface between
wneuper@226
  1066
the objects simple and stable.
agriesma@0
  1067
wneuper@226
  1068
In case of \sisac{} Worksheet the "command objects" are called
wneuper@226
  1069
Actions. The Actions can be sent from Worksheet Dialog to
wneuper@226
  1070
Worksheet or vice versa. The actions sent from the Worksheet
wneuper@226
  1071
Dialog to Worksheet are called UIActions and represent different
wneuper@226
  1072
User Interface Elements the Worksheet needs to present to the
wneuper@226
  1073
user. When the Worksheet receives the UIAction, it adds a widget
wneuper@226
  1074
to the User Interface. To each of these widgets a certain
wneuper@226
  1075
UserAction is assigned. When the User activates the widget, the
wneuper@226
  1076
Worksheet makes sure that the proper UserAction is sent to the
wneuper@226
  1077
Worksheet Dialog. The Worksheet self has no knowledge about the
wneuper@226
  1078
meaning of the Action.
agriesma@0
  1079
wneuper@226
  1080
As already mentioned in this document, there is a strong
wneuper@226
  1081
discrepancy in the architectural requirements set for the system.
wneuper@226
  1082
The Presentation Layer should have no knowledge of the state in
wneuper@226
  1083
which the dialogue currently is and the Dialogue Layer should have
wneuper@226
  1084
no knowledge over such things as placement and
wneuper@226
  1085
internationalisation. The solution is to establish a certain
wneuper@226
  1086
hierarchy within the set of UIActions. This hierarchy lets the
wneuper@226
  1087
Presentation Layer choose the widgets for representation, but
wneuper@226
  1088
leaves the possibility for the Dialog Layer to choose the
wneuper@226
  1089
circumstances in which the widget is available. Certain actions
wneuper@226
  1090
are always available, like the actions applied to the entire
wneuper@226
  1091
calculation, whereas other actions can only be performed on a
wneuper@226
  1092
single (or even specific) formula, like changing the tactic or
wneuper@226
  1093
assumption and are available only in certain dialogue phases.This
wneuper@226
  1094
hierarchy is implemented in \sisac{} with "contexts". For example the
wneuper@226
  1095
actions applied to the entire calculation have a certain context
wneuper@226
  1096
and all such actions are rendered as push-buttons in the upper
wneuper@226
  1097
part of the worksheet.
agriesma@0
  1098
wneuper@226
  1099
It is important to note that according to Seeheim Model, the
wneuper@226
  1100
Presentation Layer is not responsible for the context management,
wneuper@226
  1101
so the context of a certain action is sent to the Worksheet as a
wneuper@226
  1102
part of the UIAction object.
agriesma@0
  1103
wneuper@226
  1104
\begin{figure}[htb]
wneuper@226
  1105
\centerline
wneuper@226
  1106
{
wneuper@226
  1107
    \includegraphics[width=\textwidth,keepaspectratio=true]{fig/NC-Worksheet_WorksheetDialogue_Communication}
wneuper@226
  1108
}
wneuper@226
  1109
\caption{User Interface Events}
wneuper@226
  1110
\label{fig.worksheet_ui_events}
wneuper@226
  1111
\end{figure}
agriesma@0
  1112
agriesma@0
  1113
wneuper@226
  1114
\subsection {Calculation Events}
wneuper@226
  1115
wneuper@226
  1116
Second part of the communication between the Worksheet and the
wneuper@226
  1117
mathematical engine are the calculation events. They are fired
wneuper@226
  1118
each time the mathematical engine has some data for the worksheet.
wneuper@226
  1119
These events are handled asynchronously in a separate method of
wneuper@226
  1120
the Worksheet. The asynchronous communication can have its
wneuper@226
  1121
disadvantages. If the mathematical core processes several
wneuper@226
  1122
different calculations from several users, the user may have to
wneuper@226
  1123
wait several seconds for the result to appear. This can sometimes
wneuper@226
  1124
be a serious usability problem. However, the major advantage is
wneuper@226
  1125
that the asynchronous message passing allows for more parallelism.
wneuper@226
  1126
wneuper@226
  1127
\section{Calculation views}
wneuper@226
  1128
wneuper@226
  1129
According to the User Requirements, the user can start using the
wneuper@226
  1130
Worksheet in two different modes:
wneuper@226
  1131
wneuper@226
  1132
\begin{itemize}
wneuper@226
  1133
    \item the specifying phase
wneuper@226
  1134
    \item the solving phase.
wneuper@226
  1135
\end{itemize}
wneuper@226
  1136
wneuper@226
  1137
From the Worksheet of view the two modes are the same (like a
wneuper@226
  1138
blank piece of paper). The Worksheet has no knowledge of the
wneuper@226
  1139
current phase.
wneuper@226
  1140
wneuper@226
  1141
\section{Calchead Panel}
wneuper@226
  1142
wneuper@226
  1143
If the CalcHeadPanel is displayed because the user started a calculation from
wneuper@226
  1144
scratch, then the user first has to \emph{model} the problem.
wneuper@226
  1145
As specified in the User Requirements, the Calculation Model is
wneuper@226
  1146
made up of the following fields :
wneuper@226
  1147
wneuper@226
  1148
\begin{itemize}
wneuper@226
  1149
    \item 'given' which includes the input-items
wneuper@226
  1150
    \item 'where' which includes the pre-condition on the input-items
wneuper@226
  1151
    \item 'find' which includes the output-items
wneuper@226
  1152
    \item 'relate' which includes parts of the post-condition.
wneuper@226
  1153
\end{itemize}
wneuper@226
  1154
wneuper@226
  1155
To provide a full specification, the user must also make inputs about the problem type, the
wneuper@226
  1156
theory that is necessary to solve the problem and the method on how to solve
wneuper@226
  1157
the problem. Each input value is checked by the mathematical engine. If an
wneuper@226
  1158
input value is incorrect or cannot be handled by the mathematical engine, then
wneuper@226
  1159
the user has to be informed about this fact. So far \sisac{} can only inform
wneuper@226
  1160
the user that something went wrong but is not in the position to provide help
wneuper@226
  1161
to correct the problem.
wneuper@226
  1162
wneuper@226
  1163
If the user wants to refine a problem or to match a problem,
wneuper@226
  1164
then the model of the current example and the specified problem from the problem
wneuper@226
  1165
hierarchy are compared against each other by the mathematical engine. The
wneuper@226
  1166
task of the CalcHeadPanel is to colorize the fields which are either correct (match)
wneuper@226
  1167
or not correct (do not match).
wneuper@226
  1168
wneuper@226
  1169
%-------------------------------------------------------------------------------
wneuper@226
  1170
\subsubsection{Implementation Details}
wneuper@226
  1171
%------------------------------------------------------------------------------
wneuper@226
  1172
wneuper@226
  1173
The CalcHeadPanel helps the user to model and specify a problem. If the user
wneuper@226
  1174
decided to calculate a prepared example from the example hierarchy then
wneuper@226
  1175
the CalcHeadPanel is already filled with values that are stored in the XML file
wneuper@226
  1176
that represents the example (see listing~\ref{lst:exp}), otherwise the user
wneuper@226
  1177
has to input all values that are necessary for a complete formalization of an
wneuper@226
  1178
example.
wneuper@226
  1179
                
wneuper@226
  1180
\lstinputlisting[language=ISACXML,caption=Representation of a particular example
wneuper@226
  1181
                        from the example hierarchy in XML.,label=lst:exp]
wneuper@226
  1182
                        {listings/MH-exp_IsacCore_Tests_1a.xml}
wneuper@226
  1183
wneuper@226
  1184
It is very cumbersome to input a complete formalization; therefore, the
wneuper@226
  1185
CalcHeadPanel has views with different detail levels for the
wneuper@226
  1186
formalization of an example: A {\tt FullCalcHeadView}
wneuper@226
  1187
in which all items of a formalization have to be input and a
wneuper@226
  1188
{\tt SimpleCalcHeadView}. The {\tt SimpleCalcHeadView} provides a view
wneuper@226
  1189
that is similar to existing algebra systems where the user has to
wneuper@226
  1190
input only the example he wants to calculate (e.g. $x+1=2$). At the time of
wneuper@226
  1191
this writing \sisac{} is only able to provide the {\tt SimpleCalcHeadView}
wneuper@226
  1192
for equations.
wneuper@226
  1193
wneuper@226
  1194
As soon as a complete and correct formalization has been entered, \sisac{} will
wneuper@226
  1195
be able to calculate the formalized example and can go into solving phase.
wneuper@226
  1196
wneuper@226
  1197
\subsubsection{Communication with the Calchead Panel}
wneuper@226
  1198
wneuper@226
  1199
The Calchead Panel is an integral part of the Worksheet and
wneuper@226
  1200
communicates with the Worksheet Dialog through aforementioned User
wneuper@226
  1201
Interface and Calculation Events. 
wneuper@226
  1202
wneuper@226
  1203
\chapter{Knowledge Browser}\label{WN-add-Knowledge-Browser}
wneuper@226
  1204
\section{Survey on the requirements}
wneuper@226
  1205
\cite{AG:thesis} p.38 gives the following survey on the requirements as seen from an early stage of design.
wneuper@226
  1206
wneuper@226
  1207
%%WN040815---AG->isac-ADD2-----------------BEGIN---please don't remove this line
wneuper@226
  1208
A \isac\/-\emph{knowledge-browser} is used to enter the
wneuper@226
  1209
\emph{knowledge} and gain information about the content and use of
wneuper@226
  1210
the special \isac\/ System. %Although only HTTP-access is needed in the first phase of development, the design of the knowledge-browser must not limit the access to this channel.
wneuper@226
  1211
The the design is split
wneuper@226
  1212
into layers which separate the functionality of knowledge-gathering
wneuper@226
  1213
and knowledge-presentation.
wneuper@226
  1214
wneuper@226
  1215
A few points to keep in mind to understand the structure of the
wneuper@226
  1216
design.
wneuper@226
  1217
wneuper@226
  1218
 \begin{itemize}
wneuper@226
  1219
wneuper@226
  1220
 \item multiple layer structure to ease exchangeability of the
wneuper@226
  1221
   knowledge-presentation
wneuper@226
  1222
wneuper@226
  1223
 \item Depending on their type, information is structured to different
wneuper@226
  1224
   hierarchies. An user can browse through the problems to gain an
wneuper@226
  1225
   overview about the capabilities of an \isac{} site, or view
wneuper@226
  1226
   the provided examples. Although this views might look logically
wneuper@226
  1227
   different for the user, the same software is used for all of them.
wneuper@226
  1228
wneuper@226
  1229
%   there are logically different browsers for different datatypes
wneuper@226
  1230
%   (problems, examples, \dots). Although they provide different types
wneuper@226
  1231
%   of informations and have autonomous navigation-trees, the same
wneuper@226
  1232
%   software is used for all of them - just the information (provided
wneuper@226
  1233
%   by the description) is adjusted on demand.
wneuper@226
  1234
wneuper@226
  1235
 \item A browser can either deliver static informations or react
wneuper@226
  1236
 interactively on each request.
wneuper@226
  1237
%(see use cases for browsing the
wneuper@226
  1238
% knowledge and finding a problem for a calculation\kommentar{referenz
wneuper@226
  1239
% einfuegen})
wneuper@226
  1240
 Both modes require a filtering-mechanism to adjust the
wneuper@226
  1241
 delivered data. This mechanism is located inside the
wneuper@226
  1242
 \emph{dialog}. Reasons to block information include security reasons
wneuper@226
  1243
 (block information while an exam is in progress) as well as
wneuper@226
  1244
 educational reasons (do not swamp a user with examples he is not
wneuper@226
  1245
 expected to solve)
wneuper@226
  1246
wneuper@226
  1247
 \item A browser has different ``roles'' e.g. ``find a problem'' or
wneuper@226
  1248
   just browsing through the knowledge or the examples. %WN03.DROPPED: In case of an WEB-based browser, these roles have to be encoded within the request.
wneuper@226
  1249
wneuper@226
  1250
 \item The different roles require interaction with other \isac{}
wneuper@226
  1251
   modules. This interaction is established and controlled by the
wneuper@226
  1252
   dialog.
wneuper@226
  1253
wneuper@226
  1254
% \item besides the links stored in the description, there are links to
wneuper@226
  1255
%   be automatically generated (item-keywords,\dots). Browsers have to
wneuper@226
  1256
%   determine on the fly if the destination is available (or suppress
wneuper@226
  1257
%   the generation of the link otherwise).
wneuper@226
  1258
wneuper@226
  1259
 \item the user can open a worksheet by clicking a link in the
wneuper@226
  1260
 browser-window. This call for a worksheet is tunneled through
wneuper@226
  1261
 \isac\/s dialogs to avoid direct communications between
wneuper@226
  1262
 frontend-applications. On the other way round, the worksheet might
wneuper@226
  1263
 call an browser (e.g. to find a matching problem) -- this leads to a
wneuper@226
  1264
 new BrowserWindow which is created by the dialog.
wneuper@226
  1265
%\footnote{This
wneuper@226
  1266
% requirement affords the \emph{session-controller} which uses an extra
wneuper@226
  1267
% interface to the session-dialog as described in subsection
wneuper@226
  1268
% \ref{ADD:session-dialog}}.
wneuper@226
  1269
\end{itemize}
wneuper@226
  1270
wneuper@226
  1271
%WN [... das ist eine Art Liste von Software-Requirements, oder ? Dann werden wir sie auch dort unterbringen, und von hier dorthin verweisen.]
wneuper@226
  1272
%
wneuper@226
  1273
% \subsection{Structure}
wneuper@226
  1274
% This subsection describes the parts of the \emph{Browser}. As interface
wneuper@226
  1275
%%WN [vom User her gesehen]
wneuper@226
  1276
% to the Browser, a WEB-Browser is used (\emph{Browser-Window}). This
wneuper@226
  1277
% interface is only exemplary %to gain a better understanding. WN:
wneuper@226
  1278
% within this thesis.         %WN end
wneuper@226
  1279
% Other
wneuper@226
  1280
% interfaces are possible (e.g. a shell-like interface).
wneuper@226
  1281
%
wneuper@226
  1282
% The knowledge browsers generate the user-interface for querying the
wneuper@226
  1283
% knowledge and examples for static and dynamic purposes. By static
wneuper@226
  1284
% browsing is meant: getting an overview of the content of \isac{} without
wneuper@226
  1285
% interaction with the \emph{math-engine}. When the knowledge-browser
wneuper@226
  1286
% is in dynamic mode, it creates HTML pages as reaction to the users
wneuper@226
  1287
% input with interference of other \isac{} modules. If one and the same
wneuper@226
  1288
% page is called twice, it might present different data depending on
wneuper@226
  1289
% the users input and his history (e.g. which examples he solved)
wneuper@226
  1290
%
wneuper@226
  1291
% Upon this description, we recapitulate the main tasks of a WEB-based
wneuper@226
  1292
% \emph{knowledge browser}.
wneuper@226
  1293
%
wneuper@226
  1294
% \begin{description}
wneuper@226
  1295
% \item[HTTP-access] Queries are made through HTTP. This means we have
wneuper@226
  1296
%   to interpret the callers HTTP request to understand what the user
wneuper@226
  1297
%   wants, forward the request to the ``deeper'' layers and encode the
wneuper@226
  1298
%   result to HTML to be presented in a Browser-Window.
wneuper@226
  1299
%
wneuper@226
  1300
% \item[gathering the informations] Depending of the kind of request,
wneuper@226
  1301
%   different informations have to be gathered and combined to meet the
wneuper@226
  1302
%   users needs. e.g. if the user just wants to browse through the
wneuper@226
  1303
%   knowledge without doing any calculation, no connection to the
wneuper@226
  1304
%   MathEngine is necessary. It is enough to visualize the stored
wneuper@226
  1305
%   informations (see also subsection \emph{KE-STORE},
wneuper@226
  1306
%   \ref{ADD:ke-store}) %\kommentar{verweise auf UCs einfuegen}
wneuper@226
  1307
%%WN [  .................. auch Verweise auf Usecases waren vielleicht informativ]
wneuper@226
  1308
%
wneuper@226
  1309
% \item[filter informations given to the user] We want to adjust the
wneuper@226
  1310
% output to the users needs and permissions. Therfore we need a method
wneuper@226
  1311
% to decide which informations should be given respectively which
wneuper@226
  1312
% details are blocked. This mechanism also has to gather and store all
wneuper@226
  1313
% the actions the user attempts within \isac{} to build up a history
wneuper@226
  1314
% for judgment when an example is presented to the user \footnote{this
wneuper@226
  1315
% is a task for the browser, but on the dialog-layer of the system --
wneuper@226
  1316
% therefore, the \emph{browser-dialog} was created}.
wneuper@226
  1317
%
agriesma@0
  1318
%\end{description}
wneuper@226
  1319
%
wneuper@226
  1320
% These tasks lead to the internal structure as given in figure
wneuper@226
  1321
% \ref{ADD:fig-browser-int}. This figure shows the modules of the
wneuper@226
  1322
% \emph{knowledge browser} and how the browser is embedded within
wneuper@226
  1323
% \isac.
wneuper@226
  1324
%
wneuper@226
  1325
% \begin{figure} [htb]
wneuper@226
  1326
%   \begin{center}
wneuper@226
  1327
%     %\includegraphics[width=11cm]{\extend{fig/browser_int}}
wneuper@226
  1328
%     \psfig{figure=fig/browser_int.eps,width=11cm}
wneuper@226
  1329
%     \caption{parts of the browser} \label{ADD:fig-browser-int}
wneuper@226
  1330
%   \end{center}
wneuper@226
  1331
%   \end{figure}
wneuper@226
  1332
%%WN [{(Decorated) Knowledge} statt 'Description']
wneuper@226
  1333
%
wneuper@226
  1334
% \subsection{BrowserFrontend} \label{BrowserFrontend} This module
wneuper@226
  1335
% implements the information-encoding Layer. It takes the user-requests
wneuper@226
  1336
% and forwards it to the information-processor. The resulting data is
wneuper@226
  1337
% transferred in an open, XML-based format.\footnote{for more informations how to store mathematical informations see section \ref{xml-applications}}
wneuper@226
  1338
%% which is discussed in more
wneuper@226
  1339
%% detail in the Software Requirements Document.\kommentar{referenz zu
wneuper@226
  1340
%% theoretischeren kapiteln ueber OmDoc XSLT usw.}
wneuper@226
  1341
%
wneuper@226
  1342
% The WEB-based browser is implemented as JAVA-Servlet which waits for
wneuper@226
  1343
% HTTP connects from a client and decodes the request. The request has
wneuper@226
  1344
% a \emph{command} which tells the browser what it should do (e.g. display
wneuper@226
  1345
% informations about an example, find a problem for a running
wneuper@226
  1346
% calculation, \dots) and an \emph{object} (which example should be
wneuper@226
  1347
% displayed, which problem was selected, \dots). Additionally, the
wneuper@226
  1348
% servlet contains sessions which identify the user and a state which
wneuper@226
  1349
% can be used to store temporary settings.
wneuper@226
  1350
%
wneuper@226
  1351
% The task of creating a valid HTML-Page is encapsulated within the
wneuper@226
  1352
% \emph{encoder} which utilizes XSLT to convert the XML-result. This
wneuper@226
  1353
% enables us to customize the look of a site just by exchanging
wneuper@226
  1354
% the XSL-Template.
wneuper@226
  1355
%
wneuper@226
  1356
% Besides the pure data, the XML-result can also contain layout-hints
wneuper@226
  1357
% which affect the resulting HTML-output. This is necessary because we
wneuper@226
  1358
% have different types of informations to be displayed.
wneuper@226
  1359
%
wneuper@226
  1360
% Additionally to the pure informations about a special item, also the
wneuper@226
  1361
% structure has to be visualized. This happens in form of a tree which
wneuper@226
  1362
% represents the hierarchical structure of the content. The nodes of
wneuper@226
  1363
% this tree are used to jump directly to an other information-page. (as
wneuper@226
  1364
% demanded in the UC described in section \ref{creating-frameset})
wneuper@226
  1365
%
wneuper@226
  1366
% \subsection{Information-processor}
wneuper@226
  1367
% The \emph{information-processor} runs in the same visual machine as
wneuper@226
  1368
% the BrowserFrontend and communicates with the Frontend through a well
wneuper@226
  1369
% defined set of method calls. So, it exists one time per
wneuper@226
  1370
% BrowserFrontend instance. It is separated into an own module because
wneuper@226
  1371
% it summarizes the functions which are used by different types of
wneuper@226
  1372
% \emph{browser-frontends}. The information-processor handles the
wneuper@226
  1373
% communication with the remote \isac{} components. Strictly speaking
wneuper@226
  1374
% it communicates with the \emph{browser-dialog} of the current user
wneuper@226
  1375
% (determined with session-informations given by the browser-frontend)
wneuper@226
  1376
% to gather all informations necessary for the current request.
wneuper@226
  1377
%
wneuper@226
  1378
% We want to allow that:
wneuper@226
  1379
% \begin{enumerate}
wneuper@226
  1380
% \item more than one user may access one BrowserFrontend (and thus the
wneuper@226
  1381
%   information-processor)
wneuper@226
  1382
% \item more than one Browser-Frontends access one browser-dialog
wneuper@226
  1383
% \end{enumerate}
wneuper@226
  1384
%
wneuper@226
  1385
% The first point is obvious. A Web-Server simply has to serve different
wneuper@226
  1386
% users. The second decision is necessary to enable the system to run
wneuper@226
  1387
% different BrowserFrontends concurrently (e.g. to reduce server-load of
wneuper@226
  1388
% the WEB-server by using multiple WEB-servers which access the same
wneuper@226
  1389
% \isac\/-system or to allow a user to access different types of
wneuper@226
  1390
% Browser-Frontends --- WEB-based and a browser-shell ---
wneuper@226
  1391
% concurrently).
wneuper@226
  1392
%
wneuper@226
  1393
% We may not store informations regarding an user within the
wneuper@226
  1394
% information-processor but forward it to the respective
wneuper@226
  1395
% browser-dialog. Otherwise, a (eventually existing) concurrent
wneuper@226
  1396
% BrowserFrontend would not be able to access these data.
wneuper@226
  1397
%
wneuper@226
  1398
% Communication between information-processor and browser-dialog is
wneuper@226
  1399
% done utilizing \emph{dinopolis}. So, the information-processor first
wneuper@226
  1400
%%WN             ~~~~~~~~~~~~~~~~ [fehlt in Fig.1.2.]
wneuper@226
  1401
% has to request an object-proxy for the browser-dialog to communicate
wneuper@226
  1402
% with. Administration of the dialogs for different users is done by
wneuper@226
  1403
% the \emph{session-dialog}%\kommentar{ref einfuegen}
wneuper@226
  1404
%\footnote{explained
wneuper@226
  1405
% later in this section}.
wneuper@226
  1406
%
wneuper@226
  1407
% \subsection{Browser-dialog}
wneuper@226
  1408
% The \emph{browser-dialog} is the peer for the browser within the
wneuper@226
  1409
% dialog and gathers the informations for the request. Depending of the
wneuper@226
  1410
% type of request, it contacts the \emph{KE-Store} and/or the
wneuper@226
  1411
% WorkSheet-dialog. Afterwards, the informations are filtered depending
wneuper@226
  1412
% a users actual permissions and duties. It is possible, that pages are
wneuper@226
  1413
% blocked as a whole --- e.g. if an example is not accessible before an
wneuper@226
  1414
% other one is solved. Alternatively, some fields might be blocked. e.g.
wneuper@226
  1415
% if a learner has to find an problem while performing a test, he might
wneuper@226
  1416
% see all available Problems -- but the dialog will suppress the fields
wneuper@226
  1417
% which tell the user if (and why) an actual problem does not fit.
wneuper@226
  1418
%
wneuper@226
  1419
% The permissions are gained from different sources.
wneuper@226
  1420
% \begin{itemize}
wneuper@226
  1421
% \item The course-designer may define a group of users which may
wneuper@226
  1422
%   access an example.
wneuper@226
  1423
%
wneuper@226
  1424
% \item The course-designer may define preconditions before a example is
wneuper@226
  1425
%   displayed (e.g. a date, or a set of examples to solve first)
wneuper@226
  1426
%
wneuper@226
  1427
% \item The course-designer may set the user to use a ``temporary
wneuper@226
  1428
% environment'' which alters all permissions to a set of
wneuper@226
  1429
% \emph{KE-Objects}(e.g. while an exam)
wneuper@226
  1430
%
wneuper@226
  1431
% \item The dialog-layer maintains a user-history to find out which
wneuper@226
  1432
%%WN                 ? dialog-state   ~~~~~~~~~~~~
wneuper@226
  1433
%   examples and parts of the knowledge are already visited and solved.
wneuper@226
  1434
% \end{itemize}
wneuper@226
  1435
%
wneuper@226
  1436
% The informations about a user are stored within the user-model.
wneuper@226
  1437
% Informations like the history are not only gathered and used by the
wneuper@226
  1438
% browser-dialog but by the whole dialog-layer.
wneuper@226
  1439
%
wneuper@226
  1440
% After collecting the informations, they are encoded to XML and passed
wneuper@226
  1441
% to the \emph{information-processor}. Note, that this XML-document is
wneuper@226
  1442
% adjusted to the current users needs.
wneuper@226
  1443
%
agriesma@0
  1444
wneuper@226
  1445
%WN060705---summerterm06------------BEGIN---please don't remove this line
agriesma@0
  1446
wneuper@226
  1447
\section{Kinds of browsers and their differences}\label{WN-add-browsers}
wneuper@226
  1448
The task of the browsers is to provide acces to the KEStore, see chap.\ref{} and reflects the
wneuper@226
  1449
wneuper@226
  1450
The browsers for the four parts of knowledge, for examples,
wneuper@226
  1451
theories, problems and methods look very similar: they display a
wneuper@226
  1452
hierarchy containing all elements of the respective part and an
wneuper@226
  1453
element if selected in the hierarchy.
wneuper@226
  1454
wneuper@226
  1455
The browsers all work very similar; the most significant
wneuper@226
  1456
difference is in the interactions available (for instance, there
wneuper@226
  1457
is a $<$Refine$>$ button on the ProblemBrowser only). But as the
wneuper@226
  1458
front-end has no idea about the meaning of buttons and other
wneuper@226
  1459
interactive elements, the difference can be neglected.
wneuper@226
  1460
wneuper@226
  1461
%WN051010---RK->isac-ADD-----------------BEGIN---please don't remove this line
wneuper@226
  1462
\footnote{Begin of \cite{ba-RK06} p....-- p....}
wneuper@226
  1463
wneuper@226
  1464
\section{Browsers and dialogs}\label{WN-add-browsers-and-dialogs}
wneuper@226
  1465
The architecture of the browsers and their dialogs is shown in
wneuper@226
  1466
figure \ref{fig.RK-browsers-add} and \ref{fig.RK-browserdialogs-add} and shall be discussed here. Note, that
wneuper@226
  1467
not all attributes and methods of the classes are shown in the diagrams for simplicity.
wneuper@226
  1468
wneuper@226
  1469
\begin{figure}[htb]
wneuper@226
  1470
\centerline{\includegraphics[width=0.95\textwidth, keepaspectratio=true]{fig/poseidon/RK-browsers}}
wneuper@226
  1471
\caption{The Design of the Browsers}
wneuper@226
  1472
\label{fig.RK-browsers-add}
wneuper@226
  1473
\end{figure}
wneuper@226
  1474
wneuper@226
  1475
\begin{figure}[htb]
wneuper@226
  1476
\centerline{\includegraphics[height=\textwidth, keepaspectratio=true,angle=270]{fig/poseidon/RK-browserdialoges}}
wneuper@226
  1477
\caption{The design of the Browserdialogs}
wneuper@226
  1478
\label{fig.RK-browserdialogs-add}
wneuper@226
  1479
\end{figure}
wneuper@226
  1480
wneuper@226
  1481
The browsers are built totally equal.
wneuper@226
  1482
The way, elements of the knowledge base or the
wneuper@226
  1483
example collection are presented should be equal anyway. The only thing that differs is the
wneuper@226
  1484
behavior of some elements (e.g. the buttons) and their content, they are displaying.
wneuper@226
  1485
The browser itself does not care about the meaning of the
wneuper@226
  1486
elements it is showing. The meaning of the elements is only known by the dialog,
wneuper@226
  1487
controlling the browser. That fact, that the browsers are all built equal can be taken as
wneuper@226
  1488
an indication that the representation of the elements is separated well from their meaning.
wneuper@226
  1489
wneuper@226
  1490
\subsection{Communication between Browsers and Dialogs}
wneuper@226
  1491
The browser and the browserdialog communicate over Java RMI (Remote Meth\-od Invocation) \cite{WN061010.TODO}.
wneuper@226
  1492
This is a Java technology to call methods of objects, which do not have to run on the
wneuper@226
  1493
same Java Virtual Machine, they do not even have to run on the same physical device.
wneuper@226
  1494
Whenever information has to be passed from the browser to the dialog, the \verb'notifyUserAction()'
wneuper@226
  1495
method of the \verb'IBrowserDialog' interface is used to pass a \verb'UserAction'. There
wneuper@226
  1496
are different kinds of \verb'UserActions' carrying different information.
wneuper@226
  1497
Whenever information has to be passed from
wneuper@226
  1498
the browser dialog to the browser, the \verb'IToGuiInterface' implemented by the \verb'BrowserFrameRMI'
wneuper@226
  1499
is used to hand over a \verb'UIAction'. The \verb'UIAction' carries a \verb'EUIContext', which is
wneuper@226
  1500
implemented as enumeration. It determines, which component of the browser the
wneuper@226
  1501
\verb'UIAction' concerns. The \verb'UIAction' is forwarded to this component, where it is
wneuper@226
  1502
finally handled.
wneuper@226
  1503
wneuper@226
  1504
\subsection{Binding a Browser to a Dialog}
wneuper@226
  1505
The binding of a browser to the according browser dialog happens after login. The \verb'login()' method of
wneuper@226
  1506
the \verb'UserManager' creates a new \verb'Session' and returns an interface to this session.
wneuper@226
  1507
The \verb'WindowApplication'
wneuper@226
  1508
registers to the session by use of the \verb'registerBrowserFrame((IToGUI) this)' method, passing
wneuper@226
  1509
itself. The session does now execute the \verb'initializeWindowApplication()' method
wneuper@226
  1510
which calls the \verb'openNewBrowserFrame()' method for all four kinds of browser, passing the
wneuper@226
  1511
according dialog. A new \verb'BrowserFrame' is created, taking the according dialog as argument of
wneuper@226
  1512
the constructor. The \verb'registerBrowserFrame()' method of the dialog is called to register
wneuper@226
  1513
an interface to the \verb'BroserFrame' for the dialog.
wneuper@226
  1514
wneuper@226
  1515
This explanation might sound frightening at first. However, it
wneuper@226
  1516
leads to a clear separation of the tasks. The browsers do not need
wneuper@226
  1517
to know anything about the dialogs except of an interface to pass
wneuper@226
  1518
\verb'UserActions'. The dialogs do not need to know anything about
wneuper@226
  1519
the browsers except of an interface to pass \verb'UIActions'. The
wneuper@226
  1520
\verb'WindowApplicaion' does only know the browser but not the
wneuper@226
  1521
dialogs. The session does only know the dialogs but not the
wneuper@226
  1522
browsers themselves.
wneuper@226
  1523
wneuper@226
  1524
\subsection{The Processing of Links}
wneuper@226
  1525
Whenever a link is selected, the \verb'Minibrowser' creates a \verb'UserActionOnLink'. How
wneuper@226
  1526
this is actually done, and how the \verb'Minibrowser' works, can be read in \ref{sec.RK-hmtl-in-java}.
wneuper@226
  1527
The \verb'UserAction' is sent to the according dialog, where it is evaluated.
wneuper@226
  1528
wneuper@226
  1529
Whenever a dialog
wneuper@226
  1530
decides to display a link target in its registered browser, an \verb'UIActionOnLink' containing the
wneuper@226
  1531
link target is sent to the \verb'BrowserFrameRMI'. The \verb'EUIContext' of this object is set
wneuper@226
  1532
to UI\_CONTEXT\_MINIBROWSER, so it is forwarded to the \verb'Minibrowser', where the page is finally
wneuper@226
  1533
loaded.
wneuper@226
  1534
wneuper@226
  1535
\footnote{End of \cite{ba-RK06} p....-- p....}
wneuper@226
  1536
%WN051010---RK->isac-ADD-----------------END---please don't remove this line
wneuper@226
  1537
wneuper@226
  1538
wneuper@226
  1539
wneuper@226
  1540
wneuper@226
  1541
wneuper@226
  1542
wneuper@226
  1543
wneuper@226
  1544
wneuper@226
  1545
wneuper@226
  1546
wneuper@226
  1547
wneuper@226
  1548
wneuper@226
  1549
wneuper@226
  1550
wneuper@226
  1551
wneuper@226
  1552
wneuper@226
  1553
wneuper@226
  1554
wneuper@226
  1555
wneuper@226
  1556
wneuper@226
  1557
wneuper@226
  1558
%WN000705---summerterm06--------------END---please don't remove this line
wneuper@226
  1559
wneuper@226
  1560
wneuper@226
  1561
wneuper@226
  1562
%%%%%%%%%%%%%%%%%
wneuper@226
  1563
%%   KE-Store, KE-Objects
wneuper@226
  1564
%%%%%%%%%%%%%%%%%
wneuper@226
  1565
wneuper@226
  1566
 \chapter{KE-Store}\label{ADD:ke-store}
wneuper@226
  1567
%WN [siehe oben {Decorated Knowledge(base)} := Knowledge(base) + Explanations ?
wneuper@226
  1568
%WN Falls wir das so benennen, waere das Folgende von einigen Aenderungen betroffen, die ich nicht angemerkt habe ...]
wneuper@226
  1569
%WN000705---summerterm06------------BEGIN---please don't remove this line
wneuper@226
  1570
\section{Notes WN}
wneuper@226
  1571
These notes are an {\em un}-structured collection of (user- and software-) requirements and (architectural- and software-) design consideration\footnote{These notes where compiled as a prerequesite for re-designing the dialoguies in the \sisac{} summerterm 06}.
wneuper@226
  1572
\begin{itemize}
wneuper@226
  1573
\item The (K)(E)(Stor)e encapsulates a database (stor)ing \isac s mathematics (K)nowledge and the (E)xamples.
wneuper@226
  1574
\item The elements of the knowledge are given by the need of \sisac s mathematics engine to automatically solve the examples in the KEStore.
wneuper@226
  1575
\item See the user requirements in sect.\ref{WN-urd-KEStore}
wneuper@226
  1576
\item The hierarchy of examples can be rearranged for specific courses
wneuper@226
  1577
\item Each element of the KEStore knows the respective path in the (current -- examples!) hierarchy.
wneuper@226
  1578
\item The elements of the KEStore store sufficient information on formatting for automated generation of the presentation of single elements as well as for collections of elements.
wneuper@226
  1579
\item The generation of the presentation format is located in the system as close to the front-end as possible (in order to feature dfferent formats like html, pdf etc).
wneuper@226
  1580
\item The access to the database (internal to the KEStore) is encapsulated by methods of the KEStore. The arguments carry the course (the student is assigned to), the time (for time constraints during exams) etc. The return values of these methods may be up to additional filtering and subsequent calls of specific methods.
wneuper@226
  1581
\item
wneuper@226
  1582
\item
wneuper@226
  1583
\item
wneuper@226
  1584
\end{itemize}
wneuper@226
  1585
wneuper@226
  1586
\section{The initial structure with xml- and html-files}\label{WN-add-KEStore-old}
wneuper@226
  1587
wneuper@226
  1588
wneuper@226
  1589
%WN000705---summerterm06--------------END---please don't remove this line
wneuper@226
  1590
wneuper@226
  1591
\section{Some old design considerations}\footnote{Design considerations from \cite{AG:thesis} p.43-53.}
wneuper@226
  1592
wneuper@226
  1593
 This module is used to store and provide all static informations within \sisac, a user can
wneuper@226
  1594
 obtain. Informations are supplied to the \emph{KE-Store}\/-module
wneuper@226
  1595
 by either importing them from XML or entering them directly through
wneuper@226
  1596
 an \isac{}-KE-Object-editor
wneuper@226
  1597
wneuper@226
  1598
 Parts of the content contain mathematical informations
wneuper@226
  1599
 (\emph{formalization}\/s) along to \emph{descriptions} and
wneuper@226
  1600
 \emph{explanations}. Though the details of attached informations
wneuper@226
  1601
 vary, all objects are handled in an similar way. Therefore, the
wneuper@226
  1602
 umbrella term \emph{KE-Object} is introduced. Different types are
wneuper@226
  1603
 described in the following:
wneuper@226
  1604
wneuper@226
  1605
 \begin{description}
wneuper@226
  1606
 \item[simple KE-Object] Is a collection of informal data without any
wneuper@226
  1607
   mathematical information (no \emph{formalization}). It can be used
wneuper@226
  1608
   to build up explanations of any content.
wneuper@226
  1609
wneuper@226
  1610
 \item[Knowledge] \isac \emph{knowledge} is taken from the
wneuper@226
  1611
   mathematics-knowledge-base and consists solely of formal
wneuper@226
  1612
   information. There are different types of mathematical knowledge
wneuper@226
  1613
   which build up the three dimensions of the \isac{}-KB.
wneuper@226
  1614
   %\kommentar{referenz zu den 3 dimensionen}
wneuper@226
  1615
wneuper@226
  1616
   This informations reflect the knowledge of the math-engine, but a
wneuper@226
  1617
   possible change to the informations will not change any
wneuper@226
  1618
   informations within the KB! Therefore, \emph{knowledge}\/
wneuper@226
  1619
   informations have to be immutable to avoid
wneuper@226
  1620
   ambiguities\footnote{\emph{knowledge-objects} are synched with the
wneuper@226
  1621
     \emph{KnowledgeBase} using unique identifiers}.
wneuper@226
  1622
wneuper@226
  1623
 \item[Decorated Knowledge]a course-designer or maintainer of an
wneuper@226
  1624
   \isac{} site can add a informal \emph{explanation} to the
wneuper@226
  1625
   mathematical knowledge. This combination is called \emph{decorated
wneuper@226
  1626
     knowledge}
wneuper@226
  1627
wneuper@226
  1628
 \item[Examples] An \emph{example} consists of the an informal
wneuper@226
  1629
   \emph{description} to tell the user what to do and an formal
wneuper@226
  1630
   representation (\emph{formalization}) to enable the MathEngine to
wneuper@226
  1631
   solve it.
wneuper@226
  1632
wneuper@226
  1633
   There is a special form of examples called
wneuper@226
  1634
   \emph{composite-examples} which are used to describe examples which
wneuper@226
  1635
   are partitioned to several parts (a., b., c., \dots). More details
wneuper@226
  1636
   on that in subsection \ref{ADD:example-collections}
wneuper@226
  1637
wneuper@226
  1638
 \item[Example Collections] As the name suggests, a \emph{example
wneuper@226
  1639
     collection} is a object to combine a number of examples to
wneuper@226
  1640
   collections. It does not contain any mathematical informations. An
wneuper@226
  1641
   example can appear an arbitrary number of example-collections.
wneuper@226
  1642
wneuper@226
  1643
 \end{description}
wneuper@226
  1644
wneuper@226
  1645
 All objects can contain additional informations like images or
wneuper@226
  1646
 descriptions to enhance the understandability. These infos are
wneuper@226
  1647
 attached using the \emph{presentation} and reference to extra data
wneuper@226
  1648
 (images).
wneuper@226
  1649
wneuper@226
  1650
 \paragraph{hierarchy:} \emph{KE-store-object}\/s are used
wneuper@226
  1651
 to build up the learning-environment for the user. The compilation of
wneuper@226
  1652
 the proper parts is achieved using the \emph{hierarchy-object} which
wneuper@226
  1653
 combines the single items to an hierarchy and provides the basis for
wneuper@226
  1654
 a tree-like navigation through the content.
wneuper@226
  1655
wneuper@226
  1656
 There are some standard-hierarchies which reflect the structure of
wneuper@226
  1657
 the knowledge of the MathEngine. These hierarchies are maintained by
wneuper@226
  1658
 the math-engineers within the SML-part of the system and only synched
wneuper@226
  1659
 with them. Vice versa, a change on the explanations will \textbf{not}
wneuper@226
  1660
 change the knowledge! Therefore these hierarchies may not be changed
wneuper@226
  1661
 (like the \emph{KE-objects}, the ``nodes'' of these hierarchies)
wneuper@226
  1662
wneuper@226
  1663
%WN [^^^ die obigen Absaetze moechte ich mit Dir noch umformulieren. Weiter bin ich jetzt nicht gekommen]
wneuper@226
  1664
wneuper@226
  1665
 \subsection{XML-Import/Export}
wneuper@226
  1666
 \label{ADD:xml-in-ex}
wneuper@226
  1667
 \emph{KE-Objects} can be imported and exported from and to XML.
wneuper@226
  1668
 They contain informal data which are enriched by a set of tagged
wneuper@226
  1669
 formulas which contain the mathematical meaning necessary to solve
wneuper@226
  1670
 it. This summary of data can be transferred to the
wneuper@226
  1671
 MoWGLI XML-format which provides a
wneuper@226
  1672
 machine-readable and machine-\emph{understandable} way to present
wneuper@226
  1673
 mathematical documents. Export can also be used to transfer the
wneuper@226
  1674
 informations to an other \isac{}-engine (the destination
wneuper@226
  1675
 \isac{}-system has to have the necessary mathematical capabilities
wneuper@226
  1676
 which can not be ensured by the document-format.
wneuper@226
  1677
wneuper@226
  1678
 The different types can be treated in very similar ways -- they
wneuper@226
  1679
 differ only in the amount of given data. In case of an import of
wneuper@226
  1680
 \emph{knowledge}, the resulting \emph{KE-Object} has to be
wneuper@226
  1681
 write-protected to avoid any alteration.
wneuper@226
  1682
wneuper@226
  1683
 Objects like \emph{problems} and \emph{examples} contain a
wneuper@226
  1684
 formalization which consists of tags and related pieces of
wneuper@226
  1685
 information -- most likely formulas. These formulas are also
wneuper@226
  1686
 encoded in MoWGLI. The tags have to be preserved because they give
wneuper@226
  1687
 the meaning to the formulas.
wneuper@226
  1688
wneuper@226
  1689
 Parts of the content (like images and links to related examples) are
wneuper@226
  1690
 implemented using textual references. So, unique identifier for all
wneuper@226
  1691
 KE-Objects have to be used to store this relations in an textual
wneuper@226
  1692
 form.
wneuper@226
  1693
wneuper@226
  1694
 Note, that the dialog can add automatically generated references
wneuper@226
  1695
 which are not part of the KE-Object and though not stored within the
wneuper@226
  1696
 export-file.
wneuper@226
  1697
wneuper@226
  1698
 The \emph{hierarchies} have a different structure than KE-Objects and
wneuper@226
  1699
 are stored in own documents. Again, unique identifiers are necessary
wneuper@226
  1700
 to restore the references. When an hierarchy is exported, its
wneuper@226
  1701
 referenced KE-Objects can be exported in own files in the same
wneuper@226
  1702
 operation.
wneuper@226
  1703
wneuper@226
  1704
 \begin{figure} [htb]
wneuper@226
  1705
\begin{center}
wneuper@226
  1706
%   \centerline{
wneuper@226
  1707
\psfig{figure=fig/description_structure.eps,width=11cm}
wneuper@226
  1708
%\includegraphics[width=11cm]{\extend{fig/description_structure}}
wneuper@226
  1709
   \caption{parts of the \emph{KE-Store} module} \label{ADD:descr-structure}
wneuper@226
  1710
\end{center}
wneuper@226
  1711
 \end{figure}
wneuper@226
  1712
wneuper@226
  1713
 \subsection{Communication with the \emph{dialog}}
wneuper@226
  1714
wneuper@226
  1715
 To communicate with the rest of the system, the informations are put
wneuper@226
  1716
 into a hierarchy of (\emph{dinopolis})-objects which are transferred
wneuper@226
  1717
 to the dialog (again using \emph{dinopolis}). These objects can cope
wneuper@226
  1718
 with the dialogs need of restricting several kinds of details. The
wneuper@226
  1719
 object-structure is finer grained than the junks within the
wneuper@226
  1720
 underlying XML-Structure. e.g. it keeps its formulas in own objects.
wneuper@226
  1721
% More details on this are given within the SDD.
wneuper@226
  1722
wneuper@226
  1723
 These objects also can be modified (with sufficient access-rights) by
wneuper@226
  1724
 an example-author or a course-designer. Also, new \emph{KE-Objects}
wneuper@226
  1725
 can be created. Several constraints on edition of examples have to be
wneuper@226
  1726
 mentioned.
wneuper@226
  1727
agriesma@0
  1728
 \begin{itemize}
wneuper@226
  1729
 \item there is a maximum of one client at a time which is allowed to
wneuper@226
  1730
   alter an object. This is because if two editors alter an object
wneuper@226
  1731
   concurrently, they would overwrite each others changes. (A lock is
wneuper@226
  1732
   required)
agriesma@0
  1733
wneuper@226
  1734
 \item if an object is changed, all users of the object have to be
wneuper@226
  1735
 informed to update their representation.
agriesma@0
  1736
wneuper@226
  1737
 \item the structure of the knowledge may not be altered.  These
wneuper@226
  1738
 informations are stored within the SML-part and are only changed by
wneuper@226
  1739
 the math-engineers. To keep the storages in sync, unique identifiers
wneuper@226
  1740
 have to be used.
agriesma@0
  1741
agriesma@0
  1742
 \end{itemize}
agriesma@0
  1743
wneuper@226
  1744
 The object-representation can also be generated out of XML-files
wneuper@226
  1745
 without storing them within the \emph{KE-Store}-module. The interface to
wneuper@226
  1746
 the Dialog keeps the same but without the ability to change the
wneuper@226
  1747
 information. A module like that can be used to calculate an external
wneuper@226
  1748
 example ``on the fly'' (e.g. out of the ActiveMath system
wneuper@226
  1749
 ) if it contains the proper
wneuper@226
  1750
 formalization.
agriesma@0
  1751
wneuper@226
  1752
 \subsection{Relations}
wneuper@226
  1753
\label{ADD:relations}
wneuper@226
  1754
 Contained items can be interlinked in various ways. On the one hand,
wneuper@226
  1755
 there are hierarchical structures which can be used to provide an
wneuper@226
  1756
 ``navigation-tree''. A structure like this is given by the
wneuper@226
  1757
 \emph{problem}\/-tree. Each node (except the root-node) has an
wneuper@226
  1758
 ``ancestor'' and an arbitrary number of child-nodes. In case of the
wneuper@226
  1759
 mathematical data, these structures are given and may not change, in
wneuper@226
  1760
 case of an example-hierarchy, a course-designer may change them -
wneuper@226
  1761
 respectively each course has a own hierarchy (an example can
wneuper@226
  1762
 appear on different places on different hierarchies)
agriesma@0
  1763
wneuper@226
  1764
 On the other hand, relations can be located within an object. They
wneuper@226
  1765
 are part of the object. For example if a \emph{KE-Object} contains
wneuper@226
  1766
 links to related examples.
agriesma@0
  1767
wneuper@226
  1768
 Both types of relations can be suppressed by the \emph{dialog}.
wneuper@226
  1769
 Respectively it can choose which ones it shows.  Again, this
wneuper@226
  1770
 decision depends on a users experience/permissions and a
wneuper@226
  1771
 course-designers intentions.
agriesma@0
  1772
wneuper@226
  1773
 Relations within \isac{} are realized as dinopolis-references. When
wneuper@226
  1774
 they are exported, they are stored in their unique
wneuper@226
  1775
 textual-representation.
agriesma@0
  1776
agriesma@0
  1777
wneuper@226
  1778
 \subsection{Presentation}
wneuper@226
  1779
 The Presentation has to meet several requirements depending on the
wneuper@226
  1780
 object to show. While \emph{problems} (like the other automatically
wneuper@226
  1781
 created informations) have a uniform appearance and a known set of
wneuper@226
  1782
 informations, \emph{examples}, \emph{simple KE-Objects} and
wneuper@226
  1783
 especially \emph{example\_collections} have a higher need of
wneuper@226
  1784
 individual layout.  The requirements are even hardened because of the
wneuper@226
  1785
 dynamic parts of this informations.
agriesma@0
  1786
wneuper@226
  1787
 The uniform presentation of the mathematical data can be left to the
wneuper@226
  1788
 browser which transforms the data using templates.
agriesma@0
  1789
wneuper@226
  1790
 Other data has to be enriched with layout-hints which have to be
wneuper@226
  1791
 preserved on its way through the dialog. This can be accomplished by
wneuper@226
  1792
 adding an layout-template with ``slots'' to fill the informations in.
wneuper@226
  1793
 If an detail is suppressed by the dialog, default-values have to be
wneuper@226
  1794
 given.
agriesma@0
  1795
wneuper@226
  1796
 This template has to be created by the example-, respectively the
wneuper@226
  1797
 KE-Object-editor which is the only one who knows how to present its
wneuper@226
  1798
 informations in the proper way.
agriesma@0
  1799
wneuper@226
  1800
 It is important to mention that presentations can be ``nested''. This
wneuper@226
  1801
 means, hat a document is created out of a number of objects. This
wneuper@226
  1802
 mechanism is obvious when we look at a \emph{KE-Object} which
wneuper@226
  1803
 contains formulas.
agriesma@0
  1804
wneuper@226
  1805
 \begin{figure} [htb]
wneuper@226
  1806
\begin{center}
wneuper@226
  1807
%   \centerline{
wneuper@226
  1808
\psfig{figure=fig/nested_presentation.eps,height=6cm}
wneuper@226
  1809
%\includegraphics[width=7cm]{\extend{fig/nested_presentation}}
agriesma@0
  1810
wneuper@226
  1811
%}
wneuper@226
  1812
   \caption{nested presentation} \label{ADD:nested-presentation}
wneuper@226
  1813
\end{center}
wneuper@226
  1814
 \end{figure}
agriesma@0
  1815
wneuper@226
  1816
 The enclosing object is the description which contains both
wneuper@226
  1817
 text blocks and fields which contain references to the formula and
wneuper@226
  1818
 the image. When the document is to be displayed (creation of am
wneuper@226
  1819
 HTML-Document), the formula is asked for its presentation (which
wneuper@226
  1820
 most likely results in an MathML - text).
agriesma@0
  1821
wneuper@226
  1822
 This mechanism is expandable to more general cases --
wneuper@226
  1823
 \emph{KE-Objects} can be used to set up the layout by just generating
wneuper@226
  1824
 the frames to put other object presentations in. Objects like this
wneuper@226
  1825
 will be used to give an visible context for other objects like e.g.
wneuper@226
  1826
 to summarize different sections to one page or building up an
wneuper@226
  1827
 \emph{example-collection}\footnote{more details on example
wneuper@226
  1828
   collections and composite examples see subsection
wneuper@226
  1829
   \ref{ADD:example-collections}}
agriesma@0
  1830
wneuper@226
  1831
 To accomplish this behavior, the layouter has the option to either
wneuper@226
  1832
 create an link to an embedded object, or to make it ``in-line''.
wneuper@226
  1833
% presentation eines unterbeispiels:  wenn nur das unterbeispiel dargestellt
wneuper@226
  1834
% wird, dann kann das unterbeispiel ``anfordern'', dass das uebergeordnete
wneuper@226
  1835
% beispiel sich darstellt und nur das aktuelle unterbeispiel einbindet ?
wneuper@226
  1836
% oder parametrisierte links auf die uebergeordneten beispiele mit angabe
wneuper@226
  1837
% welche teile dargestellt werden sollen ?
agriesma@0
  1838
agriesma@0
  1839
wneuper@226
  1840
% ``kurz'' oder langpresentation.
wneuper@226
  1841
% links werden entweder als hyperlinks
wneuper@226
  1842
% dargestellt oder ``inline'' eingebunden
agriesma@0
  1843
wneuper@226
  1844
 \subsection{Example Collections and composite examples}
wneuper@226
  1845
 \label{ADD:example-collections}
wneuper@226
  1846
 Example collections are used to summarize related examples to one
wneuper@226
  1847
 page. This page can be designed to match a given layout -- e.g. to
wneuper@226
  1848
 ease the visual matching between an example-subsection in a textbook and
wneuper@226
  1849
 the presented corresponding \isac{}-page. The contained examples are
wneuper@226
  1850
 stored as references to them.
agriesma@0
  1851
wneuper@226
  1852
 An example-collection does not have any mathematical informations
wneuper@226
  1853
 about its content - it is just used to summarize and layout a set of
wneuper@226
  1854
 related examples.
agriesma@0
  1855
wneuper@226
  1856
 \emph{Composite examples} go a step further. A composite example is
wneuper@226
  1857
 for instance a text example which defines a task and a set of
wneuper@226
  1858
 sub items (a.), b.), c.) ) which define what to solve.
agriesma@0
  1859
wneuper@226
  1860
 \begin{figure} [htb]
wneuper@226
  1861
\begin{center}
wneuper@226
  1862
%   \centerline{
wneuper@226
  1863
\psfig{figure=fig/composit_examples.eps, width=7cm}
wneuper@226
  1864
%\includegraphics[width=8cm]{\extend{fig/composit_examples}}
agriesma@0
  1865
wneuper@226
  1866
   \caption{composite examples} \label{ADD:composit-examples}
wneuper@226
  1867
\end{center}
wneuper@226
  1868
 \end{figure}
agriesma@0
  1869
wneuper@226
  1870
 Examples like this are split into two parts:
wneuper@226
  1871
 \begin{description}
agriesma@0
  1872
wneuper@226
  1873
 \item [description] Describes the task of the example in an informal
wneuper@226
  1874
   (usually text, formulas and images) way. It does not have any
wneuper@226
  1875
   formal information about the task it describes. The full
wneuper@226
  1876
   \emph{formalization} is stored within the sub-examples. Though, the
wneuper@226
  1877
   only difference to a \emph{simple KE-Object} is the reference to
wneuper@226
  1878
   its sub-examples.
agriesma@0
  1879
wneuper@226
  1880
 \item [sub-examples] One description can be used for one or more
wneuper@226
  1881
   sub-examples which contain formalization. Although there are common
wneuper@226
  1882
   parts in sub-examples with the same description, the sub-examples
wneuper@226
  1883
   contain the full formalization. The sub-example can be calculated
wneuper@226
  1884
   from the ME without interference with an other object.
agriesma@0
  1885
wneuper@226
  1886
 \end{description}
agriesma@0
  1887
wneuper@226
  1888
 In opposition to a simple example-collection, a nested example needs
wneuper@226
  1889
 fix links between the task description and the sub-examples. This is
wneuper@226
  1890
 because the informal description of these objects is split.
agriesma@0
  1891
wneuper@226
  1892
% When an sub-example is to be calculated, it asks its task description
wneuper@226
  1893
% for additional informations and ``overloads'' these information with
wneuper@226
  1894
% its own set of formulas. If an information is given twice, the
wneuper@226
  1895
% sub-example is to be preferred. This is to alter the task slightly
wneuper@226
  1896
% within an sub-example (most likely the value of an variable).
agriesma@0
  1897
wneuper@226
  1898
 When an sub-example is displayed, it cares sole for its own
wneuper@226
  1899
 informations -- not for the informations displayed by the enclosing
wneuper@226
  1900
 description. In figure \ref{ADD:nested-presentation}, the enclosing
wneuper@226
  1901
 object cares of the position of the example-description, the
wneuper@226
  1902
 positions of the sub-example-descriptions and the numeration. The
wneuper@226
  1903
 fields for the sub-examples are filled with the sub-examples
wneuper@226
  1904
 presentation. If the designer of an example-collection wants to limit
wneuper@226
  1905
 the shown sub-examples he can do this by setting up the dialog to
wneuper@226
  1906
 suppress the unintended references (see subsection \ref{ADD:dialog}).
wneuper@226
  1907
wneuper@226
  1908
 \subsection{Object structure}
wneuper@226
  1909
 \label{ADD:object-structure}
wneuper@226
  1910
 We have seen in the last sections that -- although the informations
wneuper@226
  1911
 to present look very different at first glance -- we finally achieve
wneuper@226
  1912
 very similar needs.
wneuper@226
  1913
wneuper@226
  1914
 All objects might have a \emph{presentation} which describes the way
wneuper@226
  1915
 they \emph{want} to be displayed. This presentation is \emph{not}
wneuper@226
  1916
 obligatory -- a displaying device (browser) might choose to ignore
wneuper@226
  1917
 this layout. (respectively it might be incapable to follow the hints
wneuper@226
  1918
 given by the presentation). The layout built up by presentation
wneuper@226
  1919
 contains fields which are to be filled by other objects. The names of
wneuper@226
  1920
 this fields are also given within the list in the \emph{additional}
wneuper@226
  1921
 field. If a output-device ignores the presentation, at least the
wneuper@226
  1922
 order of this list should be preserved. Listed elements also act as
wneuper@226
  1923
 keys in the object to map to the final content.
wneuper@226
  1924
wneuper@226
  1925
 The \emph{formalization} contains a mathematical presentation of the
wneuper@226
  1926
 object if needed. The content of this field is given to the
wneuper@226
  1927
 \emph{worksheet} respective the \emph{math-engine} if there are some
wneuper@226
  1928
 calculations to perform on this object.
wneuper@226
  1929
wneuper@226
  1930
 \emph{Parent} and \emph{childs} are used to build up a
wneuper@226
  1931
 content-dependent hierarchy. With content-dependent is meant, that the
wneuper@226
  1932
 content of an object is not complete without the content of the
wneuper@226
  1933
 referenced object (e.g. examples).
wneuper@226
  1934
wneuper@226
  1935
 \emph{Meta} contains meta-information like severity or target group.
wneuper@226
  1936
 More details on this are given in subsection \ref{ADD:metadata},
wneuper@226
  1937
 \emph{metadata}
wneuper@226
  1938
wneuper@226
  1939
 \begin{verbatim}
wneuper@226
  1940
   object
wneuper@226
  1941
       presentation:
wneuper@226
  1942
       additional:
wneuper@226
  1943
       formal_data: isac-specification & formalization
wneuper@226
  1944
       parent:
wneuper@226
  1945
       childs:
wneuper@226
  1946
       meta: <metadata>
wneuper@226
  1947
       *<items listed in additional>:<values>
wneuper@226
  1948
 \end{verbatim}
wneuper@226
  1949
wneuper@226
  1950
 \paragraph{simple KE-Object}
wneuper@226
  1951
wneuper@226
  1952
% explanation fuer alle objekte, simple explanation fuer das objekt ohne formalisierung ??
wneuper@226
  1953
wneuper@226
  1954
 The \emph{simple\_KE-Object} consists solely of a presentation and
wneuper@226
  1955
 the references of the therein used fields. Most likely, these
wneuper@226
  1956
 references will lead to images and formulas to display.
wneuper@226
  1957
 \emph{Formalization}, \emph{parent} and \emph{childs} stay empty.
wneuper@226
  1958
wneuper@226
  1959
 \begin{verbatim}
wneuper@226
  1960
   simple_KE_object
wneuper@226
  1961
       presentation: XML
wneuper@226
  1962
       additional:[KE_object (ID), ...]
wneuper@226
  1963
       formalization: empty
wneuper@226
  1964
       formal_data: isac-specification & formalization
wneuper@226
  1965
       parent: empty
wneuper@226
  1966
       childs: empty
wneuper@226
  1967
       meta: <metadata>
wneuper@226
  1968
       *<items listed in additional>:<values>
wneuper@226
  1969
 \end{verbatim}
wneuper@226
  1970
wneuper@226
  1971
 \paragraph{mathematical object} Mathematical objects are the
wneuper@226
  1972
 way to represent formal informations of the \emph{mathematical
wneuper@226
  1973
   knowledge base} within the KE-Store. They are generated through an
wneuper@226
  1974
 automatic import. Although there is the possibility to attach
wneuper@226
  1975
 informations depending their presentation, usually this fields will
wneuper@226
  1976
 stay empty and the task of presentation is left to the output-modules
wneuper@226
  1977
 which utilize standard-templates for them.
wneuper@226
  1978
wneuper@226
  1979
 %The \emph{parent} and \emph{child} are also automatically set and
wneuper@226
  1980
 %reflect the position within the hierarchy of the respective
wneuper@226
  1981
 %knowledge-type (\emph{axes} of the knowledge space)
wneuper@226
  1982
wneuper@226
  1983
 \begin{verbatim}
wneuper@226
  1984
   knowledge_object
wneuper@226
  1985
       presentation: empty
wneuper@226
  1986
       additional: empty
wneuper@226
  1987
       formal_data: isac-specification & formalization
wneuper@226
  1988
       parent: empty
wneuper@226
  1989
       childs: empty
wneuper@226
  1990
       meta:<metadata>
wneuper@226
  1991
 \end{verbatim}
wneuper@226
  1992
wneuper@226
  1993
 %     parent: empty %mathematical-object (ID)
wneuper@226
  1994
 %     childs: [ mathematical-object (ID), mathematical-object (ID), ...]
wneuper@226
  1995
 %     meta:<metadata>
wneuper@226
  1996
wneuper@226
  1997
 \paragraph{simple example}
wneuper@226
  1998
wneuper@226
  1999
 The \emph{simple example} extends the capabilities of the
wneuper@226
  2000
 \emph{simple KE-Object} by adding an example formalization. The
wneuper@226
  2001
 \emph{parent} and \emph{child} fields are left empty.
wneuper@226
  2002
wneuper@226
  2003
 \begin{verbatim}
wneuper@226
  2004
   eimple_example_object
wneuper@226
  2005
       presentation: XML
wneuper@226
  2006
       additional: [KE_object (ID), ...]
wneuper@226
  2007
       formal_data: isac-specification & formalization
wneuper@226
  2008
       parent: empty
wneuper@226
  2009
       childs: empty
wneuper@226
  2010
       meta: <metadata>
wneuper@226
  2011
       *<items listed in additional>:<values>
wneuper@226
  2012
 \end{verbatim}
wneuper@226
  2013
wneuper@226
  2014
 \paragraph{composite example - task-description}
wneuper@226
  2015
wneuper@226
  2016
 \emph{composite example}\/s are the most complex objects within the
wneuper@226
  2017
 \emph{KE-Store-module}. They consist of a \emph{presentation}
wneuper@226
  2018
 which describes the general task (a train drives with a speed of 160
wneuper@226
  2019
 km/h from A to B \dots) as well as hierarchical informations.
wneuper@226
  2020
 Instead of a formalization, it contains links to its sub-examples in
wneuper@226
  2021
 its \emph{childs} field. This object is just a container for its
wneuper@226
  2022
 sub-examples.
wneuper@226
  2023
wneuper@226
  2024
 \begin{verbatim}
wneuper@226
  2025
   KE_object
wneuper@226
  2026
       presentation: XML
wneuper@226
  2027
       additional: [KE_object (ID), ...]
wneuper@226
  2028
       formal_data: isac-specification & formalization
wneuper@226
  2029
       parent: empty
wneuper@226
  2030
       childs: [composit-example subexample (ID), ...]
wneuper@226
  2031
       meta: <metadata>
wneuper@226
  2032
       *<items listed in additional>:<values>
wneuper@226
  2033
 \end{verbatim}
wneuper@226
  2034
wneuper@226
  2035
 \paragraph{composite example - sub-example}
wneuper@226
  2036
wneuper@226
  2037
 This object builds the counterpart of the \emph{task-description}.
wneuper@226
  2038
 Its \emph{presentation} contains only information about the
wneuper@226
  2039
 sub-example (most likely the ``question'':''when will the train arrive
wneuper@226
  2040
 at B'').  The \emph{formalization} field contains the full formal
wneuper@226
  2041
 description.
wneuper@226
  2042
wneuper@226
  2043
% waere nicht eine moegliche aufteilung der formalisierung doch besser ? dann koennte man
wneuper@226
  2044
% die subexamples leicht alle auf einmal abaendern (bzw. ein neues daraus generieren)
wneuper@226
  2045
wneuper@226
  2046
 \begin{verbatim}
wneuper@226
  2047
   KE_object
wneuper@226
  2048
       presentation: XML
wneuper@226
  2049
       additional: [KE_object (ID), ...]
wneuper@226
  2050
       formal_data: isac-specification & formalization
wneuper@226
  2051
       parent: composit-example task-description (ID)
wneuper@226
  2052
       childs: empty
wneuper@226
  2053
       meta: <metadata>
wneuper@226
  2054
       *<items listed in additional>:<values>
wneuper@226
  2055
 \end{verbatim}
wneuper@226
  2056
wneuper@226
  2057
 Its theoretically possible to build a deeper hierarchy of
wneuper@226
  2058
 \emph{composite examples}. In this case, the informations about a
wneuper@226
  2059
 sub-example are gathered by traversing all parents till an object with
wneuper@226
  2060
 \emph{parent}=\emph{empty} reached.
wneuper@226
  2061
wneuper@226
  2062
 \subsubsection{hierarchy}% (explanation-module)}
wneuper@226
  2063
 All objects within the \emph{KE-Store-module} can be arranged
wneuper@226
  2064
 within a hierarchy to let the user navigate through them. This
wneuper@226
  2065
 hierarchy is stored within an own \emph{hierarchy-object} which is
wneuper@226
  2066
 different to the other items in the \emph{KE-Store-module}.
wneuper@226
  2067
wneuper@226
  2068
 Like the other objects, it does contain metadata which describe the
wneuper@226
  2069
 purpose of the hierarchy. All other entries serve the representation
wneuper@226
  2070
 of the structure.
wneuper@226
  2071
wneuper@226
  2072
 Every \emph{node} contains name, value and childrens. The value is a
wneuper@226
  2073
 reference to an \emph{KE-Object} which has to be called when the node
wneuper@226
  2074
 is selected. \emph{name} is a string to show when the node is
wneuper@226
  2075
 displayed. \emph{children} is a list of \emph{node id}\/s where a
wneuper@226
  2076
 node id is an identifier which uniquely identifies one node.
wneuper@226
  2077
wneuper@226
  2078
 The root node has a predefined \emph{node id}. Each node id may only
wneuper@226
  2079
 occur once within an hierarchy.
wneuper@226
  2080
wneuper@226
  2081
 \begin{verbatim}
wneuper@226
  2082
  hierarchy:
wneuper@226
  2083
     metadata: (name, target group, ...}
wneuper@226
  2084
     rootnode: {name:string, value:ke-object-id,
wneuper@226
  2085
                children[nodeid, nodeid, ...]}
wneuper@226
  2086
     <nodeid>*:{name:string, value:ke-object-id,
wneuper@226
  2087
                children[nodeid, nodeid, ...]}
wneuper@226
  2088
wneuper@226
  2089
  \end{verbatim}
wneuper@226
  2090
wneuper@226
  2091
 The \emph{KE-Store} can import and export a complete hierarchy
wneuper@226
  2092
 using one file for the hierarchy and one for each used
wneuper@226
  2093
 \emph{KE-Object}.
wneuper@226
  2094
wneuper@226
  2095
 Assembly of the nodes could also happen in an nested way like usual
wneuper@226
  2096
 in XML. The advantage of the presented version is that contained
wneuper@226
  2097
 nodes can be found at first glance -- this is useful to restrict
wneuper@226
  2098
 access to an ``temporary environment'' as proposed in section
wneuper@226
  2099
 \ref{ADD:user-admin}.
wneuper@226
  2100
wneuper@226
  2101
% \kommentar{aufbau der knoten koennte auch ineinander verschachtelt
wneuper@226
  2102
%   sein (XML, nested maps) vorteil dieser methode ist, dass die in
wneuper@226
  2103
%   einer hierarchie vorhandenen knoten sofort erkannt werden koennen
wneuper@226
  2104
%   (notwendig fuer ``temporary environments'')}
wneuper@226
  2105
wneuper@226
  2106
 \subsection{Metadata} \label{ADD:metadata}
wneuper@226
  2107
wneuper@226
  2108
 All objects contain a field called \emph{meta} which contains
wneuper@226
  2109
 key-value tuples for various informations. This informations have to
wneuper@226
  2110
 serve different purposes:
wneuper@226
  2111
wneuper@226
  2112
 \begin{description}
wneuper@226
  2113
wneuper@226
  2114
 \item[copyright issues] This type of fields contain informations
wneuper@226
  2115
   which have to be considered when the object is displayed or
wneuper@226
  2116
   exported (for the purpose to pass on to other systems). Among
wneuper@226
  2117
   others, this fields can contain informations about the
wneuper@226
  2118
   \emph{author} and \emph{usage-permission}.
wneuper@226
  2119
wneuper@226
  2120
 \item[hints for the dialog] As mentioned, the dialog has to decide if
wneuper@226
  2121
   and when an object is to be displayed or filtered. \emph{metadata}
wneuper@226
  2122
   is used to assist this decisions by giving informations about
wneuper@226
  2123
   targeted users and difficulty of an example.  This hints are not
wneuper@226
  2124
   the only mechanism to determine if an object is to be displayed --
wneuper@226
  2125
   a more detailed description of this is given in subsection
wneuper@226
  2126
   \ref{ADD:dialog}, \emph{dialog}
wneuper@226
  2127
wneuper@226
  2128
 \item[search hints] Metadata can also be used by search-engines to
wneuper@226
  2129
   categorize an objects content. This fields should also be passed on
wneuper@226
  2130
   to an searchable output-device like an HTTP-based Browser.
wneuper@226
  2131
wneuper@226
  2132
 \item[administrative data] like date of creation, last change, \dots
wneuper@226
  2133
wneuper@226
  2134
 \end{description}
wneuper@226
  2135
wneuper@226
  2136
 Most data fields do not belong to only one of this groups but are used
wneuper@226
  2137
 for different purposes. For instance although an \emph{author} is
wneuper@226
  2138
 mainly used to give information about the copyright, it might also be
wneuper@226
  2139
 the subject of an search process.
wneuper@226
  2140
wneuper@226
  2141
 There are a number of meta-schemas which are used to classify
wneuper@226
  2142
 informations on the web\footnote{See also section \ref{metadata}}.
wneuper@226
  2143
% A full set of used metadata is given in the SDD.
wneuper@226
  2144
%WN040815---AG->isac-ADD2-----------------END---please don't remove this line
wneuper@226
  2145
%WN040815---AG->isac-ADD2-----------------END---please don't remove this line
wneuper@226
  2146
wneuper@226
  2147
\footnote{End of copy from \cite{AG:thesis} p.53}
wneuper@226
  2148
wneuper@226
  2149
wneuper@226
  2150
%WN040815---AG->isac-ADD3-----------------BEGIN---please don't remove this line
wneuper@226
  2151
 \section{KE-Objects and external Informations} \label{ADD:xml}
wneuper@226
  2152
\footnote{Begin of copy from \cite{AG:thesis} p.59}
wneuper@226
  2153
wneuper@226
  2154
 \isac gets its math-descriptions out of the \emph{KE-Store}-module
wneuper@226
  2155
   which processes the stored informations and builds an
wneuper@226
  2156
   object-structure for the dialog to work with. The process of
wneuper@226
  2157
   building up the internal structure can also be based upon well
wneuper@226
  2158
   structured Documents like MathML and OMDoc. Vice versa, an export
wneuper@226
  2159
   into an XML-format is necessary to utilize the rich set of already
wneuper@226
  2160
   built utilities. The first process is used to import informations
wneuper@226
  2161
   from external information-sources like ActiveMath. The export to
wneuper@226
  2162
   XML can be used to render the output for representation as used for
wneuper@226
  2163
   the Browsers.
wneuper@226
  2164
%WN040815---AG->isac-ADD3-----------------END---please don't remove this line
wneuper@226
  2165
wneuper@226
  2166
wneuper@226
  2167
%WN040815----------------left from AG in the version up to now----------vvv
wneuper@226
  2168
%WN040815----------------left from AG in the version up to now----------vvv
wneuper@226
  2169
%...
wneuper@226
  2170
% \paragraph{alternative:} courses could be used as ``usergroups''.
wneuper@226
  2171
% permissions could be set for the course and ``inherited'' to the
wneuper@226
  2172
% users. the problem is how to deal with users which are in multiple
wneuper@226
  2173
% groups. (set the \textbf{user} to mode course and therefore block all
wneuper@226
  2174
% explanations instead of changing the the permissions ?)
wneuper@226
  2175
% \\
wneuper@226
  2176
wneuper@226
  2177
% all objects are listed, permission depends on object and user (e.g.
wneuper@226
  2178
% role or usergroup). usergroups can be handled like single users,
wneuper@226
  2179
% roles define a set of permissions.
wneuper@226
  2180
% \\
wneuper@226
  2181
% course-obj + role(admin) = user-gismo $\Rightarrow$
wneuper@226
  2182
% writepermission(course-obj)+addusers(course-obj)
wneuper@226
  2183
% \\
wneuper@226
  2184
% a user is member of a course if he is in the member-role of a course this \\
wneuper@226
  2185
% \\
wneuper@226
  2186
 \paragraph{questions his thesis) to answer:} (WN: stated by AG at finishing his thesis) \\
wneuper@226
  2187
 Has user \emph{user1} permission to read/write an object ? \\
wneuper@226
  2188
 Who is member/admin of course \emph{course1} \\
wneuper@226
  2189
% add a user to a course:\\
wneuper@226
  2190
% permissions.course-id.members+=user-id\\
wneuper@226
  2191
% read-permissions have to be set for all examples within the course\\
wneuper@226
  2192
% \\
wneuper@226
  2193
% dialog: display an link ? \\
wneuper@226
  2194
% should link (reference) be displayed on an example ? \\
wneuper@226
  2195
% could the link be suppressed although the user has read-permissions to the example?\\
wneuper@226
  2196
% $\Rightarrow$ permissions for all references ?
wneuper@226
  2197
 \\
wneuper@226
  2198
 short USE-Case: fetch a course-startpage
wneuper@226
  2199
 \begin{itemize}
wneuper@226
  2200
 \item Browser wants to enter a course. he knows the
wneuper@226
  2201
   \begin{itemize}
wneuper@226
  2202
   \item name (ID) of the user
wneuper@226
  2203
   \item ID of the course to display
wneuper@226
  2204
   \end{itemize}
wneuper@226
  2205
 \item browser asks the dialog for the startpage of the course
wneuper@226
  2206
 \item dialog determines the hierarchy of the course
wneuper@226
  2207
 \item dialog fetches the informations from the KE-Store
wneuper@226
  2208
   using the users permissions (exception if the permissions do not
wneuper@226
  2209
   suffice)
wneuper@226
  2210
 \item dialog filters the hierarchy according to the user-model and
wneuper@226
  2211
   delivers it to the browser-dialog
wneuper@226
  2212
 \item browser removes links to ungranted KE-Object and creates the
wneuper@226
  2213
   hierarchy (tree)
wneuper@226
  2214
 \item browser asks for the startpage (rootnode)
wneuper@226
  2215
 \item dialog fetches it (exception if mot granted) and filteres it
wneuper@226
  2216
   according to the user-model
wneuper@226
  2217
 \item browser removes links to ungranted KE-Objects and builds the
wneuper@226
  2218
   presentation (accessing the presentation-fields - exception if not
wneuper@226
  2219
   granted)
wneuper@226
  2220
 \item $\Rightarrow$ XSLT-transformations
wneuper@226
  2221
\end{itemize}
wneuper@226
  2222
%WN040815----------------left from AG in the version up to now----------^^^
wneuper@226
  2223
%WN040815----------------left from AG in the version up to now----------^^^
wneuper@226
  2224
wneuper@226
  2225
\chapter{Bridge Java -- SML}\label{WN-add-Bridge}
wneuper@226
  2226
%WN040815---RG->isac-ADD1-----------------BEGIN---please don't remove this line
wneuper@226
  2227
%WN040815---RG->isac-ADD1-----------------BEGIN---please don't remove this line
wneuper@226
  2228
\section{Design der Klassenhierarchie}
wneuper@226
  2229
Diese Klassen MathEngine, bilden das Interface zum Frontend und zum Dialog.
wneuper@226
  2230
%WN040617 hier kannst Du die Punkte 3.3.1-3. als Begründung für die jeweiligen Designentscheidungen verwenden -- das ergibt berechtigte Mehrfachnennungen, die jeweils notwendig im entsprechende Zusammenhang sind.))
wneuper@226
  2231
\subsection{MathEngine}
wneuper@226
  2232
Diese Klasse wird zu vom Dialog gestartet und stellt die Verbindung zur eigentlichen Bridge her. Alle Objekte am Frontend kommunizieren nur über diese Komponente mit der Bridge. MathEngine ist ein Singleton (siehe \ref{pat:singleton}).
wneuper@226
  2233
%WN040815                                                                   Weitere Details sind in Abschnitt \ref{...4.Implementierung...} auf S.\pageref{xxx} zu finden.
wneuper@226
  2234
%WN040815[solche Verweise wären nachfolgend auch angebracht für CalcTree, CalcIterator, BridgeMain, SMLThread und XML-Parser]
wneuper@226
  2235
\subsection{CalcHead}
wneuper@226
  2236
Diese Klasse repräsentiert den Kopf einer Berechnung in SML.
wneuper@226
  2237
Der CalcHead enthält das Model und die Spezifikation einer Berechnung (siehe Glossar
wneuper@226
  2238
%WN040815 S.\pageref{xxx}       +\label{xxx} nach \chapter{Glossar}
wneuper@226
  2239
). Er muss ausgefüllt und korrekt sein, bevor die eigentliche Berechnung gestartet werden.
wneuper@226
  2240
\subsection{Formula}
wneuper@226
  2241
Diese Klasse repräsentiert eine Formel in einem CalcTree.
wneuper@226
  2242
\subsection{Tactic}
wneuper@226
  2243
Diese Klasse repräsentiert eine Tactic in einem CalcTree.
wneuper@226
  2244
%WN040815                                             ... Mit einer Tactic gibt der Benutzer an, auf welche Weise die nächste Formel in der Rechnung zu konstruieren (und von der MathEngine in den CalcTree einzufügen) ist.
wneuper@226
  2245
\subsection{CalcElement}
wneuper@226
  2246
Übergeordnete Klasse von CalcHead, Formula, und Tactic.
wneuper@226
  2247
\subsection{CalcTree}
wneuper@226
  2248
Diese Klasse repräsentiert eine Berechnung im SML-Kernel. Wenn der Benuzter am Frontend eine neue Berechnung startet, wird intern ein solches Objekt erzeugt.
wneuper@226
  2249
\paragraph{ICalcIterator iterator()} liefert einen neuen Iterator zu diesem CalcTree.
wneuper@226
  2250
\paragraph{public ICalcIterator getActiveFormula()} liefert einen neuen Iterator, der die aktive Formel\footnote{Damit ist diejenige Stelle im CalcTree gemeint, an der die Berechnung fortgesetzt wird.} markiert.
wneuper@226
  2251
\paragraph{public void moveActiveFormula(ICalcIterator newActiveFormula)} bewegt die aktive Formel auf eine neue Position, die von dem mitgegebenen Iterator markiert wird.
wneuper@226
  2252
\paragraph{public int replaceFormula(Formula newFormula)} ersetzt die aktive Formel durch eine neue, mitgegebene Formel.
wneuper@226
  2253
\paragraph{public int appendFormula(Formula newFormula)} fügt diese neue Formel unter der aktiven Formel ein.
wneuper@226
  2254
\paragraph{public int setNextTactic(Tactic tactic)} teilt dem Kernel mit, welche Taktik im nächsten Schritt angewandt werden soll.
wneuper@226
  2255
\paragraph{public Tactic fetchProposedTactic()} liefert die vom Kernel vorgeschlagene Taktik für den nächsten Schritt zurück.
wneuper@226
  2256
\paragraph{public Tactic[] fetchApplicableTactics(int scope)} liefert ein Feld mit allen Taktiken in einem bestimmten Bereich \emph{scope} zurück, die an der aktiven Formel als nächster Schritt angewandt werden können.
wneuper@226
  2257
\paragraph{public int autoCalculate(int scope, int nSteps)} fordert den Kernel auf, die Berechnung bis zu einem bestimmten Punkt selbstständig weiterzurechnen.
wneuper@226
  2258
Der Parameter \emph{scope} gibt den Bereich an, der beim weiterrechnen nicht verlassen werden soll, und kann folgende Ausprägungen besitzen:
wneuper@226
  2259
\begin{itemize}
wneuper@226
  2260
        \item Aktuelles Subproblem der Berechnung
wneuper@226
  2261
        \item Aktuelle Subberechnung
wneuper@226
  2262
        \item Die ganze Rechnung
wneuper@226
  2263
\end{itemize}
wneuper@226
  2264
Der Parameter \emph{nSteps} gibt an, wieviele Schritte maximal weitergerechnet werden soll. Wenn \emph{nSteps} den Wert 0 besitzt, wird bis zum Ende fertiggerechnet.
wneuper@226
  2265
wneuper@226
  2266
\subsection{CalcIterator}
wneuper@226
  2267
Der CalcIterator dient dazu, sich im CalcTree zu bewegen und eine bestimmte Formel oder Taktik zurückzuliefern, oder um eine Stelle zu markieren, ab der weitergerechnet werden soll. Diese Klasse verwendet das Design Pattern Iterator (siehe \ref{pat:iterator}).
wneuper@226
  2268
%WN040815            Der CalcIterator verdeckt die aus Gründen formaler Logik notwendige strukturelle Komplexität des CalcTree.
wneuper@226
  2269
\subsubsection{Methoden}
wneuper@226
  2270
\paragraph{boolean moveRoot()} setzt den Iterator auf die erste Position des CalcTree
wneuper@226
  2271
\paragraph{boolean moveUp()} bewegt den Iterator zur vorhergehenden Formel
wneuper@226
  2272
\paragraph{boolean moveDown()} bewegt den Iterator zur nächsten Formel
wneuper@226
  2273
\paragraph{boolean moveLevelDown()} bewegt den Iterator eine Verschachtelungsebene tiefer. Nur relevant bei Berechnungen mit Subrechnungen.
wneuper@226
  2274
\paragraph{boolean moveLevelUp()} bewegt den Iterator eine Verschachtelungsebene nach außen.
wneuper@226
  2275
\paragraph{boolean moveTactic()} bewegt den Iterator zur Taktik, die zu der aktuellen Formel führte.
wneuper@226
  2276
\paragraph{boolean moveFormula()} bewegt den Iterator nach Aufruf von \emph{moveTactic} wieder zur Formel zurück.
wneuper@226
  2277
%WN040815[bitte Folgendes bitte sicher in Deinen Text einfügen:]
wneuper@226
  2278
%WN040815\footnote{Eine Variante dieser Design-Entscheidung, die die Struktur des CalcTrees genauer abbildet: {\em nur} für eine {\em Formel} (d.h. eine Formel oder ein CalcHead) besitzt der CalcIterator einen eindeutigen Wert; daher werden moveTactic und moveFormula gestrichen, dafür aber getElement durch getTactic ergänzt: getTactic liefert die Taktik, die jene Formel erzeugt hat, auf die CalcIterator zeigt.}
wneuper@226
  2279
\paragraph{int getLevel()} liefert den Level ($=$Anzahl der Subrechnungsebenen) der aktuellen Formel.
wneuper@226
  2280
\paragraph{ICalcElement getElement()} liefert das aktuell markierte Element der Berechnung (Formel, Taktik, CalcHead) zurück.
wneuper@226
  2281
\paragraph{Object clone()} klont den Iterator und liefert ein zweites Iterator-Objekt zurück, das auf die selbe Position im CalcTree zeigt.
wneuper@226
  2282
\paragraph{int compareTo(Object o)} vergleicht diesen Iterator mit einem zweiten. Die Iteratoren werden als gleichwertig betrachtet, wenn beide auf die selbe Position im CalcTree
wneuper@226
  2283
wneuper@226
  2284
\subsection{BridgeMain}
wneuper@226
  2285
Die zentrale Komponente des Bridge-Systems. Sie startet die anderen Prozesse, die zur Kommunikation mit SML dienen, leitet die Anfragen an den Kernel weiter.
wneuper@226
  2286
\subsection{SMLThread}
wneuper@226
  2287
Hier wird der SML-Prozess gestartet und die Ein- und Ausgabe der Daten gemanagt.
wneuper@226
  2288
\subsection{XMLParser}
wneuper@226
  2289
Hier wird der XML-Output des Kernels geparst und in Java-Objekte umgewandelt, die dann wieder an das Frontend weitergereicht werden.
wneuper@226
  2290
wneuper@226
  2291
%\begin{figure}[htbp]
wneuper@226
  2292
%        \centering
wneuper@226
  2293
%                \includegraphics[width=1.00\textwidth]{fig/RG-design.eps}
wneuper@226
  2294
%        \caption{Design der Bridge-Komponenten}
wneuper@226
  2295
%        \label{fig:design}
wneuper@226
  2296
%\end{figure}
wneuper@226
  2297
%WN040815---RG->isac-ADD1-----------------END---please don't remove this line
wneuper@226
  2298
\newpage %to keep page numbering after some editing
wneuper@226
  2299
.