\section{Situationsanalyse}
\subsection{Vision}
\subsection{Stakeholder}
Folgende Stakeholder sind in diesem Projekt zu berücksichtigen:
\begin{itemize}
   \item Plattforminhaber
   \item Standbetreiber
   \item Marktbesucher
\end{itemize}

Abbildung: (\ref{fig:stakeholder}) zeigt die Beziehung der Stakeholder
zum Projekt noch grafisch auf.

\begin{figure}
  \centering
  %\includegraphics[width=0.9\textwidth]{diagrammes/stakeholder.png}
  \caption{Stakeholder Diagramm\label{fig:stakeholder}}
\end{figure}

\subsection{Chancen und Risiken}

\subsubsection{Chancen}
\subsubsection{Risiken}
Ein grosses Risiko ist das wir uns beim Erarbeiten der Datenbank sowie
beim Schreiben der Applikation in Details verlieren die nicht
gefordert werden. Sowie unter Umständen Dinge einbauen welche wir nicht
genügend kennen. Dies könnte uns zu einem späteren Zeitpunkt zum Verhängnis
werden.

\newpage
\section{Zielsetzung}
\subsection{Mussziele}
\subsection{Wunschziele}
\section{User Stories}
User Stories sind eine in Alltagssprache geschriebenen
Software-Anforderungen. Sie sind bewusst kurzgehalten und
beschreiben die Wünsche und Ziele der Rollen welche die
Software verwenden.
\section{Use Cases}
Ein Use Case sammelt alle möglichen Szenarien, die eintreten können,
wenn ein Akteur versucht, mit Hilfe des betrachteten Systems ein
bestimmtes Ziel zu erreichen. Dabei beschreibt er was beim Versuch der
Zielerreichung passieren kann. Je nach Ablauf kann auch ein Fehlschlag
ein Ergebnis eines Anwendungsfalls sein (e.g. falsches Passwort beim
Login). Dabei wird die technische Lösung nicht konkret beschrieben.
Die Detailstufe kann dabei sehr unterschiedlich sein.

\subsection{Use Case Diagramm}
``Ein Anwendungsfalldiagramm ... ist eine der 14 Diagrammarten der
Unified Modeling Language (UML), einer Sprache für die Modellierung
der Strukturen und des Verhaltens von Software- und anderen Systemen.
Es stellt Anwendungsfälle und Akteure mit ihren jeweiligen
Abhängigkeiten und Beziehungen dar.''\cite{dbcs7}

Wir verschafften uns dabei mit einem Use Case Diagramm, zu sehen in
Abbildung: (\ref{fig:use_case}), zuerst einen groben Überblick über
die Use Cases und wie sie zusammenhängen.

\subsection{Use Cases Detailbeschreibungen}
Für die Ausarbeitung der C\# Applikation haben wir uns für 5 Use Cases
entschieden und diese in einer Use Case Schablone von Alistair
Cockburn im Detail ausgearbeitet und beschrieben haben. Die Alistair
Cockburn Schablone gibt eine gute Vorgabe für den Inhalt der Use Case
Beschreibung.

\subsubsection{Lösungsvarianten}
\paragraph{Gewählte Variante}
\begin{landscape}

\begin{figure}
  \centering
  %\includegraphics[height=0.9\textheight]{diagrammes/use_cases.png}
  \caption{Use Case Diagramm\label{fig:use_case}}
\end{figure}
\end{landscape}


%% -- Begining of Use Case Template --
\subsubsection{User Registrierung}
{\footnotesize\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.25\textwidth}|p{.7\textwidth}|}
  \hline
  %begin title row
  {\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 1.0 User Registrierung} \\ \hline
  %end title row
Description & Registrierung eines neuen User Accounts.\\
\hline
Actors & User\\
\hline
Status & Freigegeben\\
\hline
Includes & -\\
\hline
Trigger & User möchte sich registrieren.\\
\hline
Preconditions & Email Adresse vorhanden.\\
\hline
Postconditions & User hat sich einen Account erstellt.\\
\hline
Normal Flow & 1. User startet Registrierung\\
 & 2. User füllt Form aus\\
 & 3. User schliesst Registrierung ab\\
\hline
Alternative Flow & 1. User startet Registrierung\\
 & 2. User füllt Form mit bereits vorhandener Email Adresse aus.\\
 & 3. Applikation gibt Fehler aus\\
 & 4. User verwendet einzigartige Email Adresse\\
 & 5. User schliesst Registrierung ab\\
\hline
Notes & -\\
\hline
UC History & 1.0 Draft erstellt durch AZ\\
 & 1.1 kleinere Anpassungen durch AZ\\
\hline
Author & A. Zweili \& I. Cadaroski\\
\hline
Date & 24. August 2017\\
\hline
\caption{Use 1.0 User Registrierung}
\end{longtable}}
\newpage
%% -- End of Use Case Template --

\begin{landscape}
\section{Stundenplanung}

%% -- start Stundenplanung table --
\footnotesize
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{4cm}|p{2.1cm}|p{1.8cm}|p{1.8cm}|p{1.8cm}|p{7cm}|}
\hline
  %begin title row
{\cellcolor[HTML]{C0C0C0}\textbf{Aktivität}} &
{\cellcolor[HTML]{C0C0C0}\textbf{Definition}}
\footnote{Definition Arbeit ist grundlegend in Dokumentation (Doku) der Lösung
  und erarbeiten des Codes (Code) der dazugehörigen Funktionen aufgebaut} &
{\cellcolor[HTML]{C0C0C0}\textbf{Planung}} &
{\cellcolor[HTML]{C0C0C0}\textbf{Leistung}} &
{\cellcolor[HTML]{C0C0C0}\textbf{Differenz}} &
{\cellcolor[HTML]{C0C0C0}\textbf{Erklärung}} \\ \hline
  %endtitle row
Projekt Management & Doku & 10 & 20 & 10 & Wir hatten uns zu Beginn
darauf festgelegt alle zwei Wochen ein kurzes Meeting abzuhalten. Die
Meetings wurden dann aber mit durchschnittlich 1h länger als
ursprünglich angenommen. \\ \hline

Dokumentation & Doku & 25 & 45 & 20 & Wir haben bei dieser Arbeit
wesentlich mehr Zeit in die Dokumentation investiert. Ein Teil davon
ist sicher der Tatsache zu Schulden das wir die Arbeit in LaTeX
geschrieben haben. \\ \hline

Vision & Doku & 1 & 1 & 0 & \ \\ \hline

User Stories & Doku & 2 & 2 & 0 & \ \\ \hline

ERM erstellen & Doku & 3 & 2 & -1 & Beim RM haben wir weniger Details
eingezeichnet, sondern uns hauptsächlich darauf beschränkt uns eine
grobe Übersicht zu verschaffen. \\ \hline

ERD erstellen & Doku & 4 & 12 & 8 & Die Aufgabenstellung hat sich als
wesentlich komplizierter herausgestellt als wir angenommen hatten. \\ \hline

User Stories(Diagramm) erstellen & & 1 & 1 & 0 & \ \\ \hline

Testplan aufgebaut & Doku & 12 & 4 & -8 & Erwies sich als weniger
Aufwand, als ursprünglich gedacht. Da wir mit den Use Cases bereits
gute Vorlagen hatten. \\ \hline

SQL Code & & & & & \ \\ \hline
SQL Scripts erstellen & Code & 7 & 8 & 1 & Das Erstellen der Testdaten
Scripts hat etwas mehr Zeit gebraucht als erwartet. Insbesondere da
wir zuerst versucht haben, die Länder und Städte Listen bereits
komplett zu erstellen. \\ \hline

C\# Code & & & & & \\ \hline
Frontend (GUI) erstellen & Code & 25 & 30 & 5 & Der Aufbau unseres GUI
zeigte sich um einiges komplizierte als wir es uns zu Anfang
vorgestellt haben. Ein grosser Anteil des Aufwandes ging an die
Nachforschung des Codes verloren, da wir dies zu diesem Zeitpunkt noch
nicht angewendet haben. \\ \hline

Datenbankverbindung & Code & 2 & 3 & 1 & Es entstand ein kleiner
Mehraufwand, da bei Applikation jeweils der Verbindungsstring
angepasst werden musste Wenn der Code auf einem anderen Computer
kompiliert wurde. \\ \hline

Konzept des Aufbaus & Code & 4 & 4 & 0 & Der Konzeptaufbau (Was
möchten wir darstellen?), wurde von uns öfters als geplant
umstrukturiert, hielt sich aber noch Im Zeitrahmen \\ \hline

Login und Registration & Code & 4 & 6 & -2 & Die ID- Vergabe und die
Verarbeitung benötigten mehr Aufwand als vorgesehen \\ \hline

Standort-Abfrage & Code & 6 & 9 & 3 & Durch Wissenslücken ging ein
Grossteil der Zeit in der Informationssuche verloren \\ \hline

Rent-Reservation-Eingabe & Code & 20 & 32 & 12 & Die Übergabe der
verschiedenen ID`s in der Applikation warfen einige Probleme auf, die
in der Reservation besonders Zum Vorschein gekommen sind \\ \hline

Rent-Abfrage & Code & 8 & 8 & 0 & \\ \hline

Coding (Verbinden der Funktionen) & Code & 20 & 40 & 20 & Da wir in
unserer Applikation gleich mehrere Funktionen abgebildet
haben (Login/Informationsabfrage/ Informationseingabe/Abfrage
eingefüllter Daten), war das darauffolgende Verbinden des Codes auch
ein grosser Aufwand \\ \hline

Test`s & & & & & \ \\ \hline
Testplan durchgeführt & Doku & 30 & 15 & -15 & Die Tests haben
wesentlich weniger Zeit gebraucht als angenommen und wurden meistens
on the fly gemacht. \\ \hline

\textbf{Total} & & \textbf{184} & \textbf{242} & & \\ \hline

\caption{Stundenplanung}
\end{longtable}
%% -- end Stundenplanung table --
\end{landscape}

\newpage

\section{Umsetzung}

\subsection{Zusammenarbeit}
Zur Zusammenarbeit am Code haben wir uns für Git entschieden. Dies
ermöglichte es uns gleichzeitig am Code zu arbeiten und zwischendurch
die Änderungen des anderen zu ``mergen''. Dies war von grossem Vorteil
da wir so unabhängig voneinander am Code weiterarbeiten konnten. So
entstanden insgesamt über 150 Commits.

Des Weiteren haben wir uns die Arbeit so aufgeteilt damit wir möglichst
unabhängig voneinander arbeiten konnten und somit nicht aufeinander
warten mussten.

Andreas hat sich Hauptsächlich mit den SQL Scripts beschäftigt.
Parallel dazu konnte sich Ismail in das Schreiben einer grafischen C\#
Applikation einlesen. Sobald die SQL Skripte fertig waren konnte
Ismail diese nutzen um die Applikation fertig zu stellen.

Die Dokumentation wurde dabei fortlaufen erweitert. Da wir die
Dokumentation in \LaTeX geschrieben haben und somit auch nur aus
simplen Textdateien besteht konnten wir auch an dieser ohne Probleme
gleichzeitig arbeiten und über Git versionieren.

\subsection{ER Modell und ER Diagramm}
Gleich zu Beginn des Projektes haben wir den Text zur Aufgabenstellung
eingehend analysiert und daraus ein Entity-Relationship-Modell(ERM),
Abbildung: (\ref{fig:rm}) erstellt.

Wir haben dabei darauf verzichtet für jede Entität noch die jeweiligen
Attribute einzuzeichnen da wir uns mit dem ERM Hauptsächlich einen
Überblick über die Situation verschaffen wollten damit wir die
Abhängigkeiten zwischen den Entitäten besser nachvollziehen konnten.

Im Anschluss wurden dann das Entity-Relationship-Diagramm(ERD),
Abbildung: (\ref{fig:erm}) erstellt. Dies wurde mit allen Details
erstellt. Im ERD haben wir auch Eigenschaften von Attributen erfasst
welche in der exportieren Übersicht hier in der Dokumentation nicht
ersichtlich sind, wie etwa ``Unique'', ``Not Null'', etc. Aus dem ERD
konnten dann relativ schnell die SQL Scripts abgeleitet werden.

\subsection{SQL Datenbank}
\begin{landscape}
\begin{figure}
  \centering
  %\includegraphics[height=0.8\textheight]{diagrammes/rm.png}
  \caption{Entity-Relationship-Modell\label{fig:rm}}
\end{figure}
\end{landscape}


\begin{landscape}
\begin{figure}
  \centering
  %\includegraphics[scale=0.38]{diagrammes/erm.png}
  \caption{Entity-Relationship-Diagramm\label{fig:erm}}
\end{figure}
\end{landscape}

\begin{landscape}
\section{Testfälle}

%% -- start Test Case table --
\footnotesize
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{1.5cm}|p{2.5cm}|p{2.5cm}|p{2.5cm}|p{2.5cm}|p{2.5cm}|p{2.5cm}|p{2.5cm}|}
\hline
%begin title row
  \cellcolor[HTML]{C0C0C0}Testcase ID & \cellcolor[HTML]{C0C0C0}Objektive &
  \cellcolor[HTML]{C0C0C0}Precondition & \cellcolor[HTML]{C0C0C0}Steps &
  \cellcolor[HTML]{C0C0C0}Testdata & \cellcolor[HTML]{C0C0C0}Expected Result &
  \cellcolor[HTML]{C0C0C0}Postcondition & \cellcolor[HTML]{C0C0C0}Result \\ \hline
% end title row

TC-01 & Registrierung am System & - & 1. Öffnen des Programms \newline
2. Eingeben des Usernamens \newline
3. Eingeben des Passworts\newline
4. Klicken des ``Register'' Knopf & Username: muster@gmx.ch Passwort:
123456 & Pop-up mit ``Member Registered'' Text erscheint & User
registriert & Erfolgreich durchgeführt. 27.07.2017 A.Z. \\ \hline

TC-02 & Registrierung am System & TC-01 ausgeführt. & 1. Öffnen des
Programms \newline
2. Eingeben des Usernamens \newline
3. Eingeben des Passworts \newline
4. Klicken des ``Register'' Knopf & Username: \newline
muster@gmx.ch Passwort: \newline
123456 & Fehlermeldung: \newline
“User already exists.” & Login / Registrierung Wird wieder
angezeigt & Beim ersten Durchführen fehlte Noch eine Try/Catch
Funktion Was die Applikation zum Abstürzen brachte. Erfolgreich
durchgeführt. 13.08.2017 I.C. \\ \hline

TC-03 & Anmeldung am System & TC-01 ausgeführt. & 1. Öffnen des Programms \newline
2. Eingeben des Usernamens \newline
3. Eingeben des Passworts \newline
4. Klicken des ``Login'' Knopf \newline
5. Quittieren des Pop-Up & Username: \newline
muster@gmx.ch Passwort: \newline
123456 & Der User wird zum Dashboard weitergeleitet & Dashboard wird
Angezeigt. & Erfolgreich durchgeführt. 27.07.2017 A.Z. \\ \hline

TC-04 & Anmeldung am System & TC-01 ausgeführt. & 1. Öffnen des Programms \newline
2. Eingeben des Usernamens \newline
3. Eingeben des Passworts \newline
4. Klicken des ``Login'' Knopf \newline
5. Fehlermeldung quittieren & Username: \newline
muster@gmx.ch Passwort: \newline
WrongPassword & Fehlermeldung: \newline
``Username or Password Not correct.'' & Login / Registrierung Wird
wieder angezeigt & Erfolgreich durchgeführt. 27.07.2017 A.Z. \\ \hline

TC-05 & Anmeldung am System & - & 1. Öffnen des Programms \newline
2. Eingeben des Usernamens \newline
3. Eingeben des Passworts \newline
4. Klicken des ``Login'' Knopf \newline
5. Fehlermeldung quittieren & Username: \newline
muster@gmx.ch Passwort: \newline
123456 & Fehlermeldung: \newline
``Username or Password Not correct.'' & Login / Registrierung Wird
wieder angezeigt & Erfolgreich durchgeführt. 27.07.2017 A.Z. \\ \hline

TC-06 & Standorte anzeigen & TC-01 und TC-03 Ausgeführt & 1.
Suchbegriff eingeben 2. ``Search'' Knopf klicken & Suchbegriff: \newline
Markt & Suchresultat: \newline
``Markstrasse 300 Testmarkt'' erscheint & Suchresultat wird Angezeigt.
& Zuerst wurde mit ``equal'' gesucht was es sehr Schwierig machte zu
suchen. Wurde zu ``like'' korrigiert. Erfolgreich durchgeführt.
27.07.2017 A.Z. \\ \hline

TC-07 & Standorte anzeigen & TC-01 und TC-03 Ausgeführt & 1. keinen
Suchbegriff eingeben 2. ``Search'' Knopf klicken & & Suchresultat: \newline
``Markstrasse 300 Testmarkt Teststrasse 450 Testmark2'' Erscheint &
Suchresultat wird Angezeigt. & Erfolgreich durchgeführt. 27.07.2017
A.Z. \\ \hline

TC-08 & Standort mieten & TC-01, TC-03 und
TC-06 ausgeführt. & 1. keinen Suchbegriff eingeben \newline
2. ``Search'' Knopf klicken \newline
3. beliebigen Standort wählen \newline
4. Mietdatum auswählen \newline
5. ``Rent'' Knopf klicken & & Miete wird in Datenbank Verbucht. & &
Erfolgreich durchgeführt. 22.08.2017 I.C. \\ \hline

TC-09 & Mieten anzeigen & TC-01, TC-03, TC-06 Und TC-08 ausgeführt &
1. ``Refresh'' Knopf klicken & & Die ``Rents'' Liste wird Aktualisiert
und gibt Die in TC-08 getätigte Miete aus. & Mietliste wurde Befüllt.
& Erfolgreich durchgeführt. 22.08.2017 I.C. \\ \hline

%	TC-11 &  &  &  &  &  &  &  \\ \hline
\caption{Testfälle}
\end{longtable}
%% -- end test case table --
\end{landscape}

\section{Fazit}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "main"
%%% End:
