\documentclass[12pt,a4paper,american,austrian,german,german,fleqn]{report}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\usepackage{graphicx}

\makeatletter

\makeatother

\begin{document}

\begin{titlepage}

\centerline{{\large PS Software Engineering}}

\vspace{0.5cm} \hspace {1.3cm} WS 2000/2001 \hspace{4.2cm} \today

\vspace{2cm} \centerline{\textbf{Aufgabe 7} }
\vspace{0.5cm} \centerline{\textbf{Protoyp}}

\vspace{0.2cm} \centerline{}

\vspace{1cm} \centerline{\textbf{Gruppe 7}} \centerline{}

\vspace {1cm} \centerline{{\large Zehentner Hildegard \hfill{}R\"{o}ck Andrea
\hfill{}Osterrieder Christian} }

\vspace{0.2cm} \centerline{hzehent@cosy.sbg.ac.at \hfill{}aroeck@cosy.sbg.ac.at
\hfill{}coster@cosy.sbg.ac.at }

\vspace {0.5cm} \centerline{{\large Mayr Manfred \hfill{}Angulanza Florian}
}

\vspace{0.2cm} \centerline{mmayr@cosy.sbg.ac.at \hfill{}fangulan@cosy.sbg.ac.at}

\vspace {1cm} \centerline{Projektleiter: Mag. Dipl.-Ing. Schwaiger Roland}

\vspace{1cm} \centerline{{\large Institut für Computerwissenschaften}}

\vspace{0.2cm} \centerline{{\large Universität Salzburg}}

\vspace{2cm} Korrespondenz an:

\centerline{Universit\"{a}t Salzburg}

\centerline{Institut f\"{u}r Computerwissenschaften und Systemanalyse}

\centerline{Jakob--Haringer--Straße 2}

\centerline{A--5020 Salzburg}

\centerline{Austria}

\clearpage
\end{titlepage}
\chapter{Prototype}

Es wird ein Protoyp erstellt, um die gr\"o"sten Risiken abzufangen.\\
Wir haben uns entschlossen die Eingabe von Daten als Prototyp zu gestalten.\\
Das Grundprinzip dieser Funktion: ein Objekt erstellen, ein Objekt suchen,
ein Objekt abspeichern und die entsprechende Zusammenarbeit mit der Datenbank
findet man \"uberall im Projekt wieder. Wenn hier beim Grundkonzept Probleme
auftreten, haben diese sehr gro"se Auswirkungen.\\
Im Prototyp wird realisiert: \\
\"Uber eine Eingabemaske ist es m\"oglich Daten \"uber ein Artefakt einzugeben 
und auch Daten \"uber ein Artefakt wieder auszulesen.\\
Ziel ist es nicht eine perfekte Implementierung zu erzielen, z.B. k\"onnen  
beim Prototypen noch nicht beliebig viele Attribute eingeben werden, sondern 
die wichtigsten Funktionalit\"aten zu implementieren.
Wir wollen Daten aus der Datenbank lesen und in die Datenbank schreiben, 
ebenso wollen wir mit den Daten im Programm effektiv arbeiten und 
gew\"ahrleisten, dass die Datenbank konsistent bleibt.\\
Wir haben uns dazu entschlossen das wir im Programm mit Objekten arbeiten, 
welche beim Ezeugen ihre Daten aus der Datenbank lesen.\\
Am Schlu"s der Bearbeitung werden die Daten des Objekts wieder in die
Datenbank geschrieben.\\
 Kleinere \"Anderungen werden direkt auf das Objekt 
ausgef\"uhrt, was schneller ist, als wenn jedesmal die Datenbank angesprochen
wird. \\
Die Konsistenz der Daten kann man in den Griff bekommen indem man sich 
merkt, wer die Daten gelesen hat, und nur dieser die Daten auch neu 
abspeichern darf (noch nicht im Prototy realisiert, da wir erst 1 Benutzer 
haben).\\
Beim Prototypen wird \"uber eine JDBC-Schnittstelle mit einer MySql-Datenbank
kommuniziert, welche die entsprechenden Daten enth\"alt.

\clearpage
\section{Handlungsablauf}

Das Programm wird von der html Seite index.htm gestartet. 
Als 1. erscheint die Startseite:

\vspace{.5cm}
\begin{figure}[h!]
  \label{pt_start}
  \centerline{
    \includegraphics[width=1\columnwidth]{screenshots/start.ps}} 
  \caption{Startseite}
\end{figure}
\vspace{.5cm}

Nur das Feld f\"ur die Inventarnummer ist aktiv. Der Name kann noch nicht 
eingegeben werden.\\
Als n\"achstes muss der Bentzer eine Inventarnummer eingeben.
Es wird in der Datenbank gesucht, ob schon ein Artefakt mit dieser 
Inventarnummer existiert.

\clearpage
\begin{itemize}
\item 
  Wenn bereits eine Artefakt existiert wird als n\"achstes die Seite zur
  \"Anderung der Attribute aufgerufen, wobei in den Attributsfeldern die
  Daten des Artefakts mit der eingegebenen Inventarnummer stehen.

  \vspace{0.5cm}
  \begin{figure}[h!]
    \label{pt_art_vorh}
    \centerline{
      \includegraphics[width=1\columnwidth]{screenshots/artef_vorh.ps}}
    \caption{\"Andern der Attribute eines vorhandenen Artefakts}
  \end{figure}
  \vspace{.5cm}

  Es k\"onnen nun die Werte des Artefakts ge\"andert werden.\\
  Nach Abschlu"s der Arbeit kann man durch bet\"atigen von \textit{Speichern}
  die neuen Daten des Artefakts in die die Datenbank schreiben.\\
  Wird \textit{Verwerfen} gew\"ahlt so werden die Daten nicht abgespeichert
  und man gelangt wieder zur Startseite (siehe Abb. \ref{pt_start}) und
  kann ein neues Artefakt bearbeiten.

\clearpage
\item
  Ist in der Datenbank noch kein Artefakt mit der eingegebenen Inventarnummer
  vorhanden so erscheint ein leeres Fromular zum \"Andern der Attribute.\\
  Es k\"onnen nun in allen Feldern etwas eingegeben werden. Auch das Feld
  zur Namenseingabe ist jetzt freigegeben. \\
  Die Eingabe des Namens ist optional, die Eingabe der anderen Attribute ist
  optional.

  \vspace{0.5cm}
  \begin{figure}[h!]
    \label{pt_neues_art}
    \centerline{
      \includegraphics[width=1\columnwidth]{screenshots/neues_artef.ps}}
    \caption{Neues Artefakt wurde angelegt}
  \end{figure}
  \vspace{.5cm}

  Wird nach der Eingabe der Attribute \textit{Speichern} ausgew\"ahlt so
  wird in der Datenbank ein neues Artefakt mit den entsprechenden Daten
  angelegt.\\
  Bei \textit{Verwerfen} werden die Daten nicht weiterverarbeitet und der
  Benutzer gelangt zur Startseite (siehe Abb. \ref{pt_start}) und kann
  ein neues Artefakt bearbeiten.

\end{itemize}

\section{Funktionsweise}

Beim \"Offnen der Startseite versucht das Applet \"uber JDBC eine Verbindung
zur Datenbank herzustellen.\\
Nachdem die Inventarnummer eingegeben wurde wird in der Datenbank gesucht, ob
schon ein Objekt mit dieser Inventarnummer existiert.
Wenn dies der Fall ist, wird ein Objekt mit den Daten des Artefakts aus der
Datenbank erzeugt. Mit diesem Objekt wird nun in dem Applet weitergearbeitet.\\
Ist noch kein Artefakt mit dieser Inventarnummer vorhanden, so wird ein
Objekt ohne Attribute (bis auf die Inventarnummer) erzeugt und mit diesem
weitergearbeitet.\\
Bei \textit{Speichern} wird in beiden F\"allen die Daten des Objekts mit
welchem in dem Applet gearbeitet wurde, in der Datenbank gespeichert.\\
Bei \textit{Verwerfen} wird in beiden Fällen das Objekt verworfen.

\subsection{Datenstruktur}

In der Datenbank existiert eine Entit\"at ARTIFACTS, welche die Inventarnummer
(ID) und den Namen des Artefakt (NAME) enth\"alt.\\
Ebenso existiert eine Entit\"at ARTATTRIBUTES welche einem optionalem Attribut
entspricht. Es wird durch seinen Namen (NAME), seinem Wert (VALUE), seiner 
Sichtbarkeit (VISIBLE) und nat\"urlich dem Verweis zu welchem Attribut es 
geh\"ort (ART\_ID) bestimmt.\\
Durch die Methode alle Attribute eines Artefakts, au"ser der Inventarnummer und
dem Namen auszulagern, hat man die M\"oglichkeit jedem Artefakt genau jene 
Anzahl und Art der Attribute zu geben, welche es am besten beschreiben.


\subsection{Performance}

Um eine m\"oglichst schnelle Bearbeitung und Verwendung der Daten zu erreichen
haben wir uns entschlossen nicht bei jeder Daten\"anderung auf die Datenbank
zu zugreifen, sondern die Daten in Objekten zwischen zu halten. Dies
hat den Preis dass zus\"atzlich geregelt werden muss, das nicht 2
Personen gleichzeitig an einem Artefakt arbeiten und somit die Konsistenz 
der Datenbank gef\"ardet wird.\\
Wir haben uns f\"ur die Verwendung von Applets entschieden, da dies die
schnellste Variante ist. Nur beim holen der Daten und beim Abspeichern der
Daten muss auf den Server und somit die Datenbank zugegriffen werden. Alle
anderen arbeiten werden vom Applet direkt beim Benutzer erledigt.
Es muss jedoch auch darauf geachtet werden, dass der Benutzer ohne gr\"o"sere
Probleme und ohne langes herunterladen von ben\"otigten libaries arbeiten 
kann.

\end{document}
