% Studienarbeit von Andreas Boesch
%
% Universitaet Hamburg
% Fachbereich Informatik
% Arbeitsbereich DBIS
%
% Kapitel: Die Benutzerschnittstelle

\chapter{Die Benutzerschnittstelle}
\label{Kap. Benutzerschnittstelle}
Die Mitarbeiter des Index zur politischen Ikonographie hatten bis zum Zeitpunkt der Demonstration des Prototyps noch nicht mit einer Benutzerschnittstelle mit Fenstertechnik gearbeitet. Sie konnten jedoch mit einem Textverarbeitungsprogramm unter dem Betriebssytem {\msdos} umgehen und waren auch bereit, sich in eine f"ur sie neue Bedientechnik einzuarbeiten. 

Die Programmiersprache {\vb} f"ur {\win} verf"ugt "uber Eigenschaften, die sie f"ur diesen Prototyp geeignet erscheinen lie"sen (siehe Abschnitt~\ref{Abs. VB}). Mit der {\jdb} verf"ugt {\vb} "uber eine direkte Schnittstelle zu dem Datenbankprogrammiersystem {\acc}, die in Abschnitt~\ref{Abs. JDE} vorgestellt wurde.

Eine weitere Tatsache, die f"ur {\vb} sprach, war die gro"se internationale Benutzergemeinde. So gibt es umfangreiche Shareware-Archive mit Erweiterungen und Programmierbeispielen. Dies sollte sich w"ahrend der Arbeit als gro"se Hilfe erweisen, da {\vb} erstmalig eingesetzt wurde und dementsprechend relativ wenige Datailkenntnisse vorhanden waren.

In Abschnitt~\ref{Abs. Prototyp} wird anhand von einigen Bildschirmabbildungen des laufenden Programms die Benutzerschnittstelle des Prototypen f"ur den Index zur politischen Ikonographie  vorgestellt.

\section{{\vb} - ein "Uberblick}
\label{Abs. VB}
{\vb} besitzt, wie in Abbildung~\ref{VB1} dargestellt, eine integrierte Entwicklungsumgebung (\e {Integrated Development Environment}, IDE), die einen Maskengenerator (\e {Form Edit}), einen Quelltext-Editor (\e {Source Edit}), eine interaktive und kontextsensitive Hilfe (\e {Online Help}), eine Projektverwaltung (\e {Projects}), einen Interpreter, einen "Ubersetzer (\e {Compiler}), einen Debugger und einen Werkzeugkasten (\e {Toolbox}), der sich mit externen Werkzeugen (\e {Custom Controls}) erg"anzen l"a"st, umfa"st  \cite{MD93,Mu94}. 
 
Programme k"onnen in der Entwicklungsumgebung editiert, "ubersetzt, getestet und ausgef"uhrt werden. Ein ohne die Entwicklungsumgebung lauff"ahiges Programm kann mit Hilfe des "Ubersetzers erzeugt werden. Dieses ben"otigt allerdings zur Laufzeit zus"atzlich ein Laufzeitsystem in Form einer dynamischen Bibliothek (\e{Dynamic Link Library}, DLL).
 
\begin{figure}[hbt]
\begin{center}
\leavevmode
\epsfxsize=13cm \epsfysize=5cm
\epsffile{/usr/users/boesch/Studienarbeit/Latex/Bilder/benutzers/vb1.epsf}
\end{center}
\caption{Komponenten der {\vb}-Entwicklungsumgebung}
\label{VB1}
\end{figure}

Im Gegensatz zu herk"ommlichen BASIC-Dialekten gibt es in {\vb} kein Hauptprogramm. Die Programmsteuerung erfolgt "uber Ereignisse, die im {\win}-System vom Benutzer oder automatisch (z.B. zeitabh"angig) ausgel"ost werden. Man spricht daher bei {\vb} auch von ereignisorientierter Programmierung. Die Ursachen f"ur die Unterschiede zu anderen BASIC-Programmiersystemen sind zum gro"sen Teil in {\win} selbst begr"undet. Programmme unter {\win} k"onnen alle {\win}-Schnittstellenkomponenten nutzen und auch auf Systemfunktionen, die sogenannte {\win}-API (\e{Application Programming Interface}), zugreifen. Der Standardfunktionsumfang kann mit Hilfe von DLLs und den {\vb}-Erweiterungen (\e{{\vb}-Extension}, VBX) erg"anzt werden. Diese Erweiterbarkeit hat zu einem gro"sen Angebot von frei verf"ugbaren und kommerziellen DLLs und VBXs f"ur die unterschiedlichsten Anwendungen gef"uhrt. Mit {\vb} selbst lassen sich keine DLLs, bzw. VBXs erzeugen. Neben der Einbindung von DLLs stehen {\win}-Funktionen zur vereinfachten Grafikprogrammierung (\e{Graphics Device Interface}, GDI), f"ur den dynamischen Datenaustausch (\e{Dynamic Data Exchange}, DDE) und f"ur die Verkn"upfung und Einbettung von Objekten (\e{Object Linking and Embedding}, OLE) zur Verf"ugung.


\subsection*{Anwendungsentwicklung mit {\vb}}
\label{Abs. Entw}
Nachdem mit den Konzepten aus Abschnitt~\ref{Abs. Umsetzung} die relationale Datenbankstruktur in {\acc} aufgebaut wurde, erfolgte mit {\vb} die Gestaltung der Benutzeroberfl"ache und die Steuerung der Zugriffe auf die Datenbank. Hierbei kann das Vorgehen in mehrere Schritte zerlegt werden \cite{VB93}:

\begin{description}
\item [Erzeugen einer Oberfl"ache:]\hspace{.1cm}
Man beginnt mit einem leeren Fenster, in {\vb} Formular (\e{form}) genannt. Mit dem Maskengenerator wird das optische Erscheinungsbild einer Anwendung entworfen, indem die gew"unschten Schnittstellenkomponenten (z. B. Text- oder Listenfelder, Befehlsschaltfl"achen, Auswahlboxen, etc.) aus dem Werkzeugkasten mit Hilfe der Maus in das gew"unschte Formular gezogen, dort positioniert (\e{drag and drop}) und in der Gr"o"se angepa"st werden. Jedem Formular kann ein individuelles Men"u mit Hilfe eines speziellen Men"uentwurfsfensters zugeordnet werden.
\end{description}
  
\begin{description}
\item[Festlegen von Eigenschaften:]\hspace{.1cm}
Nach der Definition der Benutzerschnittstelle werden allen Objekten in Abh"angigkeit von ihrer sp"ateren Aufgabe individuelle Eigenschaften zugewiesen. Zu diesen Eigenschaften geh"oren z. B. Benennung des Objektes, Vorder- und Hintergrundfarben, Beschriftungen, etc. Diese Eigenschaften k"onnen einerseits durch einen Eintrag in einer Eigenschaften-Liste, die jedes Objekt besitzt, ge"andert werden; andererseits ist es auch m"oglich, sie durch Programmkode zur Laufzeit der Anwendung zu "andern. 
\end{description}

\begin{description}
\item [Schreiben von Kode:]\hspace{.1cm}
In Modulen, Prozeduren, Funktionen und Anweisungen wird nun die Funktionalit"at der Oberfl"ache mit Hilfe von {\vb}-Kode bestimmt. Hierbei werden die Objekte der Oberfl"ache durch ihre Namen referenziert, die als Eigenschaft festgelegt werden. Au"serdem werden im Kode auch die Anfragen an die Datenbank mit Hilfe von SQL formuliert.   
\end{description}
 

\section{Der Protoyp}
\label{Abs. Prototyp}

Im Laufe der Arbeit mit den Kunsthistorikern hat sich gezeigt, da"s die Verst"andigung zwischen Softwareentwickler und sp"ateren Anwendern nur bis zu einem gewissen Grad mit Hilfe von Beschreibungen bzw. Objektdiagrammen sinnvoll ist. Gerade bei den Anwendern tritt relativ schnell eine Erm"udung ein, da f"ur sie das Arbeitsgebiet, das sie dem Softwareentwickler nahebringen m"ussen, selbstverst"andlich ist und sie sich ihres impliziten Wissens dar"uber nicht bewu"st sind. Ohne dieses Wissen aber hat der Softwareentwickler Schwierigkeiten, sich in die Probleme der Anwender hineinzudenken.

Um diese Kommunikationsprobleme zu beseitigen und den Kunsthistorikern eine erste Idee eines computergest"utzten Index zur politischen Ikonographie zu geben, lag es nahe, einen Prototypen zu entwickeln.
Der Protoyp wurde mit Hilfe des Datenbankprogrammiersystems {\acc} (siehe Abschnitt~\ref{Abs. MS-Access} und der Programmiersprache {\vb} (siehe Abschnitt~\ref{Abs. VB}) der {\sf Microsoft Corp.} entwickelt. W"ahrend {\acc} dazu genutzt wurde, das relationale Datenbankschema (siehe Abschnitt~\ref{Abs. Umsetzung}) aufzubauen, ist mit Hilfe von {\vb} die Benutzerschnittstelle  implementiert worden. Die Kommunikation zwischen der Datenbank und dem Anwendungsprogramm erfolgt mit Hilfe von SQL (\e{Standard Query Language}) "uber die {\jdb} (siehe Abschnitt~\ref{Abs. JDE}). 

Hier soll nun die Benutzerschnittstelle des Prototypen f"ur den Index zur politischen Ikonographie vorgestellt werden. Die Anwendung wurde als sogenannte MDI-Anwendung (MDI = \e{Multiple Document Interface}) realisiert. Innerhalb des Arbeitsbereiches eines MDI-Eltern\-fensters k"onnen Kindfenster ge"offnet, positioniert und bearbeitet werden. Kindfenster k"on\-nen nicht aus dem Arbeitsbereich des MDI-Elternfensters herausbewegt werden, sind also immer an jenes gebunden. In Abbildung~\ref{PI1} enth"alt das MDI-Elternfenster \e{PolitIcon} das Kindfenster \e{Stichwort-Index}.

\subsection{Der Stichwort-Index}
\label{Abs. Stichwort-Index}

Der Stichwort-Index im Index zur politischen Ikonographie besteht aus einer Reihe von Hauptstichworten, denen wiederum Unterstichworte zugeordnet sind. In Abbildung~\ref{PI1} ist die Repr"asentation dieses Index im Prototyp \e{PolitIcon} zu sehen. 

In der ersten Ebene sind die Hauptstichw"orter mit ihren jeweiligen Nummern erkennbar (z.B. \e{65 Begegnungen} oder \e{180 Frieden}). Mit einem Mausklick auf das Pluszeichen vor der Nummer des Hauptstichwortes l"a"st sich dieses wie ein Ordner "offnen und es werden -- wie im Fall von \e{180 Frieden} -- die Unterstichworte mit ihren jeweiligen Nummern sichtbar. Die Stichworthierarchie im Index zur politischen Ikonographie ist derzeit nur zweistufig. Im Protoyp ist die Verschachtelungstiefe theoretisch nicht begrenzt, so da"s weitere Verfeinerungen des Index ohne Probleme m"oglich sind. 

\begin{figure}[hbt]
\begin{center}
\leavevmode
\epsfxsize=13cm \epsfysize=8cm
\epsffile{/usr/users/boesch/Studienarbeit/Latex/Bilder/benutzers/pi1.ps}
\end{center}
\caption{PolitIcon: Stichwort-Index}
\label{PI1}
\end{figure}

Klickt der Benutzer auf ein Unterstichwort, wird automatisch die Anzahl der unter diesem Stichwort abgelegten Bildkarten bestimmt und angezeigt, um dem Benutzer eine Vorstellung vom Umfang des Datenbestandes zu dem jeweiligen Thema zu geben. Mit einem Klick auf den Befehlsknopf (\e{command button}) \e{Bildkarten anzeigen} wird ein anderes Fenster geladen, in dem die Bilder zu dem ausgew"ahlten Unterstichwort im Kleinformat (75 dpi, 16 Farben) in einer Tabelle angezeigt werden (siehe Abbildung~\ref{PI2}). Als Fenster"uberschrift f"ur die Bildauswahl dient zur Orientierung der Pfad des ausgew"ahlten Unterstichwortes.

\begin{figure}[hbtp]
\begin{center}
\leavevmode
\epsfxsize=13cm \epsfysize=8cm
\epsffile{/usr/users/boesch/Studienarbeit/Latex/Bilder/benutzers/pi2.ps}
\end{center}
\caption{PolitIcon: Bildauswahl}
\label{PI2}
\end{figure}

\begin{figure}[hbtp]
\begin{center}
\leavevmode
\epsfxsize=13cm \epsfysize=8cm
\epsffile{/usr/users/boesch/Studienarbeit/Latex/Bilder/benutzers/pi4.ps}
\end{center}
\caption{PolitIcon: Bilddetails}
\label{PI4}
\end{figure}

Mit Hilfe von vertikalen und horizontalen Rollbalken (\e{scrollbars}) kann der Benutzer alle Bilder, die dem Stichwort zugeordnet sind, sichtbar machen. Mit einem Klick auf ein Bild w"ahlt der Benutzer dieses aus und bekommt die Bilddetails (siehe Abbildung~\ref{PI4}) angezeigt, die das Bild und die dazugeh"origen textuellen Informationen enthalten. Der Titel des ausgew"ahlten Bildes dient als Fenster"uberschrift. Die textuellen Informationen zum Bild setzen sich zusammen aus:
\begin{itemize}
\item Bild-ID 
\item Bildtitel
\item Bildentstehungszeit
\item Auftragsnummer der Fotostelle 
\item Kommentare
\item K"unstler (Referenz auf K"unstler-Index, siehe Abschnitt~\ref{Abs. Kunstler-Index})
\end{itemize}

Au"serdem ist an dem Feld \e{Original} zu erkennen, ob die jeweilige Karte unter diesem Stichwort als Original oder als Kopie abgelegt wurde. Mit dieser Information und der \e{Bild-ID} ist es m"oglich, die Original-Bildkarte im physischen Index zur politischen Ikonographie zu finden.

\begin{figure}[hbt]
\begin{center}
\leavevmode
\epsfxsize=13cm \epsfysize=8cm
\epsffile{/usr/users/boesch/Studienarbeit/Latex/Bilder/benutzers/pi5.ps}
\end{center}
\caption{PolitIcon: Bild im Gro"sformat}
\label{PI5}
\end{figure}

Die Bilddetails k"onnen jederzeit ge"andert, erg"anzt und mit Hilfe des Befehlsknopfes \e{"Anderungen speichern} abgespeichert werden. Mit dem Befehlsknopf \e{Schlie"sen} wird das Fenster geschlossen, und die Daten bleiben unver"andert. Die gro"se Version des Bildes (300 dpi, 256 Farben) l"a"st sich mit einem weiteren Mausklick auf das Bild im Bilddetailfenster aufrufen (siehe Abbildung~\ref{PI5}).

Wenn dem Benutzer nun bei dem Bild im Gro"sformat Details auffallen, die er kommentieren m"ochte, kann er mit einem Mausklick auf das Bild wieder das Bilddetailfenster (siehe Abbildung~\ref{PI4}) "offnen und seine Anmerkungen dort eintragen.
 

\subsection{Der K"unstler-Index}
\label{Abs. Kunstler-Index}

Bei dem K"unstler-Index des Protoypen \e{PolitIcon} handelt es sich um einen Auszug aus dem Datenbestand des K"unstler-Lexikons des Bildarchiv Foto Marburg. 
In der \e{Marburger Bibliothek maschinell nutzbarer Ver"offentlichungen} werden ausgew"ahlte Datenbest"ande als sequentielle, unformatierte Datei angeboten. Neben dem K"unstler-Lexikon stehen verschiedene Thesauri (z.B. Thesaurus antiker keramischer Gef"a"se, Thesaurus der Buchmalerei) und Lexika (z.B. Historisch-geographisches Lexikon, Ikonographisches Lexikon) zur Verf"ugung. Diese Datenbest"ande sind kostenlos verf"ugbar und dienen der Verbesserung der wissenschaftlichen Zusammerarbeit zwischen Kulturhistorikern \cite{Mar89}.

\begin{figure}[hbtp]
\begin{center}
\leavevmode
\epsfxsize=13cm \epsfysize=8cm
\epsffile{/usr/users/boesch/Studienarbeit/Latex/Bilder/benutzers/pi6.ps}
\end{center}
\caption{PolitIcon: K"unstler-Index}
\label{PI6}
\end{figure}

Der K"unstler-Index ist mit einem Mausklick auf das Feld \e{K"unstler} im Bilddetails-Fenster aufrufbar (siehe Abbildung~\ref{PI6}). Der Benutzer gibt dann den Anfangsbuchstaben des K"unstlernamens an. Im Listenfeld der Kombinationsbox erscheinen s"amtliche K"unstler mit dem gew"ahlten Anfangsbuchstaben. W"ahlt der Benutzer einen Namen aus dem Listenfeld aus, wird dieser invertiert dargestellt und im rechten unteren Teil des Fensters werden dessen Daten in einem Listenfeld angezeigt. Die Zahlen in diesem Listenfeld (z.B. 31nn, 3140, etc.) stehen f"ur bestimmte Felder im K"unstler-Lexikon. So steht \e{31nn} f"ur den Namen des K"unstlers  und \e{3140} f"ur sein Geschlecht. Gleichzeitig mit der Auswahl eines K"unstlers wird dieser im Feld \e{K"unstler} des Bilddetailfensters eingetragen. Mit einem Mausklick auf den Befehlsknopf \e{"Anderungen speichern} wird die Beziehung zwischen K"unstler und Bildkarte gespeichert.

Mit der Einbindung des K"unstler-Index in \e{PolitIcon} sollte gezeigt werden, da"s es ohne weiteres m"oglich ist, externe Datenbest"ande in die Datenbank einzubinden. In einem endg"ultigen Programm w"are es nat"urlich w"unschenswert, die aus dem Marburger K"unstler-Index stammenden Nummern durch aussagekr"aftige Feldbezeichungen zu ersetzen. Ausserdem sollte es dann m"oglich sein, da"s der Benutzer einfach durch eintippen eines beliebigen Namens in das Textfeld der Kombinationsbox des K"unstler-Index den gew"unschten K"unstler sucht und da"s er nicht zuerst den Anfangsbuchstaben angeben mu"s. Dies war allerdings bei diesem Prototyp noch nicht m"oglich, da {\vb} nur eine bestimmte Anzahl von Eintr"agen innerhalb eines Listenfeldes verwalten kann und diese von den Eintr"agen im K"unstler-Lexikon bereits "uberschritten wurde. 
