db_AI-4/doku/content.tex

772 lines
26 KiB
TeX

\section{Situationsanalyse}
\subsection{Vision}
Wir möchten eine Plattform für Markthändler schaffen welche es ihnen
ermöglicht geeignete Standflächen an attraktiven Standorten zu mieten.
Zusätzlich sollen sie auf einer Plattform die Möglichkeit haben sich
zu präsentieren. Diese Plattform soll interessierten Kunden einen
Überblick über die verschieden Anbieter geben und somit Neugierde
wecken. Dies alles soll auf mit möglichst wenig Aufwand verwaltet
werden können.
\subsection{Stakeholder}
Folgende Stakeholder sind in diesem Projekt zu berücksichtigen:
\begin{itemize}
\item Plattforminhaber
\item Standbetreiber
\item Marktbesucher
\end{itemize}
Diagramm:\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}
\begin{itemize}
\item Zusammenhänge zwischen Programmierung und Datenbank Modellierung
besser verstehen.
\item Erfahrungen im Projekt-Management vertiefen
\item Umgang mit den Werkzeugen üben und verbessern
\end{itemize}
\subsubsection{Risiken}
Ein grosses Risiko ist das wir uns beim erarbeiten der Datenbank in
Details verlieren die nicht gefordert werden sowie unter Umständen
Dinge einbauen welche wir nicht genügend kennen was uns zu einem
späteren Zeitpunkt zum Verhängnis werden könnte.
\newpage
\section{Zielsetzung}
\subsection{Mussziele}
\begin{itemize}
\item Das Geschäftsmodell wurde in ein ERM umgewandelt.
\item Das ERM wurde in eine SQL-Server Datenbank umgesetzt.
\item Die Arbeit wurde mittels eines Testplans überprüft.
\item Die zur Verfügung stehenden Stunden sind in einer Planung auf
die Aufgaben zugeordnet. Abweichungen wurden mittels einer
Abweichungsanalyse aufgezeichnet.
\item Die Lösung wurde dokumentiert.
\item Eine Teilfunktion des Geschäftsmodell wurde in einer C\# Applikation
abgebildet.
\end{itemize}
\subsection{Wunschziele}
\begin{itemize}
\item Die Datenbank enthält alle statische Daten Wie
etwa Länder, Städte, Postleitzahlen, Standorte.
\item Die Datenbank enthält ein Rechtekonzept.
\end{itemize}
\newpage
\section{User Stories}
\subsection{Verwaltung}
Als Plattforminhaber möchte ich,
\begin{itemize}
\item Kontrolle über die Anmeldungen haben.
\item Standbetreiber verwalten können (Standort und Termine).
\item Qualitätschecks bei den Mitgliedern machen können.
\item Inspektoren bezahlen können.
\item die Rechnungen an die Mitglieder verwalten können.
\item die Kontrolle über die Anzahl der Auftrittsanpassungen haben.
\item Abonnemente verwalten können.
\item sichergestellt haben das provisorische Mitglieder sich nur
an einem Standort einen Platz reservieren kann.
\end{itemize}
\subsection{Anbieter provisorisches Mitglied}
Als provisorisches Mitglied möchte ich,
\begin{itemize}
\item mich registrieren können.
\item einen Standfläche mieten können.
\item einsehen können wie lange die Probezeit noch dauert.
\end{itemize}
\subsection{Anbieter festes Mitglied}
Als festes Mitglied möchte ich,
\begin{itemize}
\item Abonnement lösen können.
\item Standorte buchen können.
\item meinen Auftritt anpassen können.
\end{itemize}
\subsection{Nachfrager/ Marktbesucher}
Als Marktbesucher möchte ich,
\begin{itemize}
\item mich registrieren können.
\item einen Überblick über die Anbieterprofile haben.
\item einen Überblick der Standorte und Termine der Märkte haben.
\end{itemize}
\newpage
\section{Use Cases}
\subsection{Use Case Diagramm}
\subsection{Use Cases}
\begin{landscape}
\begin{figure}[H]
\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 & Der Use Case beschreibt die Registrierung
eines neuen User Accounts.\\
\hline
Actors & User\\
\hline
Status & Freigegeben\\
\hline
Includes & -\\
\hline
Trigger & User möchte sich registrieren.\\
\hline
Preconditions & -\\
\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\\
\hline
Author & A. Zweili \& I. Cadaroski\\
\hline
Date & 20. Juli 2017\\
\hline
\caption{Use 1.0 User Registrierung}
\end{longtable}}
\newpage
%% -- End of Use Case Template --
%% -- Begining of Use Case Template --
\subsubsection{User Login}
{\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.1 User Login} \\ \hline
%end title row
Description & Der Use Case beschreibt den Login eines
Users.\\
\hline
Actors & User\\
\hline
Status & Freigegeben\\
\hline
Includes & -\\
\hline
Trigger & User möchte sich einloggen\\
\hline
Preconditions & UC 1.0 erfolgreich abgeschlossen\\
\hline
Postconditions & User befindet sich im geschützten Bereich.\\
\hline
Normal Flow & 1. User füllt Login Form korrekt aus\\
& 2. User quittiert Login\\
& 3. Applikation wechselt zum geschützten Bereich\\
\hline
Alternative Flow & 1. User füllt Login Form mit falschen\\
& Angaben aus\\
& 2. Applikation gibt einen Error aus\\
\hline
Notes & -\\
\hline
UC History & 1.0 Draft erstellt durch AZ\\
\hline
Author & A. Zweili \& I. Cadaroski\\
\hline
Date & 20. Juli 2017\\
\hline
\caption{Use Case 1.1 User Login}
\end{longtable}}
\newpage
%% -- End of Use Case Template --
%% -- Begining of Use Case Template --
\subsubsection{Standorte begutachten}
{\footnotesize\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.25\textwidth}|p{.7\textwidth}|}
\hline
%begin title row
{\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 2.0 Standorte begutachten} \\ \hline
%end title row
Description & Der Use Case beschreibt das Betrachten der
Standorte.\\
\hline
Actors & User\\
\hline
Status & Freigegeben\\
\hline
Includes & -\\
\hline
Trigger & User möchte Standort Details einsehen.\\
\hline
Preconditions & UC 1.1 erfolgreich abgeschlossen\\
\hline
Postconditions & -\\
\hline
Normal Flow & 1. User wählt einen Standort aus\\
& 2. Die Applikation gibt die Details zum\\
& ausgewählten Standort aus.\\
\hline
Alternative Flow & -\\
\hline
Notes & -\\
\hline
UC History & 1.0 Draft erstellt durch AZ\\
\hline
Author & A. Zweili \& I. Cadaroski\\
\hline
Date & 20. Juli 2017\\
\hline
\caption{Use Case 2.0 Standorte begutachten}
\end{longtable}}
\newpage
%% -- End of Use Case Template --
%% -- Begining of Use Case Template --
\subsubsection{Standorte mieten}
{\footnotesize\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.25\textwidth}|p{.7\textwidth}|}
\hline
%begin title row
{\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 2.1 Standorte mieten} \\ \hline
%end title row
Description & Der Use Case beschreibt das mieten der
Standorte als Test Member.\\
\hline
Actors & User mit test$_{\text{member}}$ Status\\
\hline
Status & Freigegeben\\
\hline
Includes & -\\
\hline
Trigger & \\
\hline
Preconditions & UC 1.1 und 2.0 erfolgreich abgeschlossen\\
\hline
Postconditions & Miete wurde erfolgreich in DB eingetragen.\\
\hline
Normal Flow & 1. User wählt einen Standort aus\\
& 2. User wählt das Datum aus an dem er den\\
& Standort gerne mieten möchte.\\
& 3. User bestätigt die Miete mit klick auf\\
& den Insert Button.\\
\hline
Alternative Flow & 1. User wählt einen Standort aus\\
& 2. User wählt das Datum an dem er den\\
& Standort gerne mieten möchte.\\
& 3. User bestätigt die Miete mit klick auf\\
& den Insert Button.\\
& 4. Die Applikation meldet zurück das der\\
& Standort an diesem Datum bereits besetzt ist.\\
\hline
Notes & -\\
\hline
UC History & 1.0 Draft erstellt durch AZ\\
\hline
Author & A. Zweili \& I. Cadaroski\\
\hline
Date & 27. Juli 2017\\
\hline
\caption{Use Case 2.1 Standorte Mieten}
\end{longtable}}
\newpage
%% -- End of Use Case Template --
%% -- Begining of Use Case Template --
\subsubsection{Mieten anzeigen}
{\footnotesize\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.25\textwidth}|p{.7\textwidth}|}
\hline
%begin title row
{\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 2.2 Mieten anzeigen} \\ \hline
%end title row
Description & Der Use Case beschreibt das Betrachten der
getätigten Mieten des aktuellen Users.\\
\hline
Actors & User mit test$_{\text{member}}$ Status\\
\hline
Status & Freigegeben\\
\hline
Includes & -\\
\hline
Trigger & User möchte sich seine Mieten anzeigen lassen\\
\hline
Preconditions & UC 1.1, 2.1 erfolgreich abgeschlossen\\
\hline
Postconditions & Applikation gibt die Mieten des aktuellen\\
& Users aus.\\
\hline
Normal Flow & 1. User klickt auf ``update''\\
& 2. Die Applikation gibt die Details zu den\\
& Mieten des Users aus.\\
\hline
Alternative Flow & -\\
\hline
Notes & -\\
\hline
UC History & 1.0 Draft erstellt durch AZ\\
\hline
Author & A. Zweili \& I. Cadaroski\\
\hline
Date & 27. Juli 2017\\
\hline
\caption{Use Case 2.2 Mieten anzeigen}
\end{longtable}}
\newpage
%% -- End of Use Case Template --
\newpage
\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}Aktivität} & {\cellcolor[HTML]{C0C0C0}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}Planung} & {\cellcolor[HTML]{C0C0C0}Leistung} &
{\cellcolor[HTML]{C0C0C0}Differenz} & {\cellcolor[HTML]{C0C0C0}Erklärung} \\ \hline
%endtitle row
Projekt Management & Doku & 10 & 20.08 & 10.08 & Nach dem definieren der
Meetings wurde uns schnell bewusst, dass eine Absprache alle 2 Wochen Nötig ist,
um den Fortschritt im Auge zu behalten. \\ \hline
Dokumentation & Doku & 25 & 32 & 7 & \ \\ \hline
Vision & Doku & & & 0 & \ \\ \hline
User Stories & Doku & 2 & 2 & 0 & \ \\ \hline
RM erstellen & Doku & 3 & 4 & 1 & Beim RM haben wir viel weniger Details
eingezeichnet sondern uns Hauptsächlich darauf beschränkt uns eine
grobe Übersicht zu verschafen. \\ \hline
ERM erstellen & Doku & 4 & 12 & 8 & \ \\ \hline
Testplan aufgebaut & Doku & 12 & 1 & -11 & \ \\ \hline
SQL Scripts erstellen & Code & 7 & 7.9 & 0.9 & 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
Frontend erstellen & Code & 25 & 16 & -9 & -25 \\ \hline
Datenbankverbindung & & 2 & 4 & 2 & \ \\ \hline
GUI Planung + Erstellen & & 2 & 2 & 0 & \ \\ \hline
Konzept des Aufbaus & & & & 0 & \ \\ \hline
Standort-Abfrage & & 4 & 9 & 5 & \ \\ \hline
Rent-Reservation-Eingabe & & & & 0 & \ \\ \hline
Rent-Abfrage & & & & 0 & \ \\ \hline
Coding & Code & 16 & 24 & 8 & \ \\ \hline
Testplan durchgeführt & Doku & 30 & & -30 & \ \\ \hline
Total & & 142 & 133.98 & & \\ \hline
\caption{Stundenplanung}
\end{longtable}
%% -- end Stundenplanung table --
\end{landscape}
\newpage
\section{Zusammenarbeit}
\subsection{Lösungsvarianten}
\newpage
\section{Coding}
\subsection{RM}
\subsection{ERM}
\begin{landscape}
\begin{figure}
\centering
\includegraphics[height=0.8\textheight]{diagrammes/rm.png}
\caption{RM Diagramm\label{fig:rm}}
\end{figure}
\end{landscape}
\begin{landscape}
\begin{figure}
\centering
\includegraphics[scale=0.38]{diagrammes/erm.png}
\caption{ERM Diagramm\label{fig:erm}}
\end{figure}
\end{landscape}
\subsubsection{Entitäten}
In dieser Sektion werden die Entitäten der Datenbank kurz beschrieben
damit das ERM besser verstanden werden kann. Dabei wird zuerst der
Name in der Datenbank aufgelistet gefolgt von der deutschen
Übersetzung.
\paragraph{persons / (Personen)}
Sind die Repräsentation einer realen Person in der Datenbank. Hier
werden auch die Adressdaten eines Mitgliedes gespeichert.
\paragraph{salutation / (Anreden)}
Enthält die möglichen Anreden für Personen.
\paragraph{cities / (Städte)}
Enthält Städtenamen sowie die dazugehörige Postleizahl und einem
Verweis zu welchem Land die jeweilige Stadt gehört.
\paragraph{countries / (Länder)}
Enthält eine Liste mit Ländernamen.
\paragraph{locations / (Standorte)}
Diese Tabelle enthält die Daten der Standorte wo die jeweiligen Märkte
abgehalten werden. Dabei wird auch erfasst wie viel Kapazität der
jeweilige Standort hat damit mein ein Überbuchen verhindern kann.
\paragraph{members / (Mitglieder)}
Sind die eigentlichen User im System. In der Regel verweisen sie auf
eine reale Person können zu Testzwecken aber auch ohne eine reale
Person im Hintergrund angelegt werden. Diese Entität wird dabei auch
mit den jeweiligen Käufen verbunden damit man nachvollziehen kann wer
diese getätigt hat. Hier wird auch gespeichert ob das Mitglied die
notwendigen Dokumente unterzeichnet und die Kreditüberprüfung bestanden
hat.
\paragraph{member\_status / (Mitgliedsstatus)}
Die Mitgliedsstatus Tabelle enthält die möglichen Stati die ein
Mitglied haben kann. Dabei werden hier auch Mitglieder Stati wie
Mitarbeiter oder Admin erfasst da es für die Datenbank keinen
Unterschied macht welche Funktion ein Mitglied hat.
\paragraph{subscribtions / (Abonnemente)}
Beschreiben die Abonnementsarten welche von den Mitgliedern gekauft
werden können.
\paragraph{commercials / (Werbung)}
Diese Tabelle enthällt alle Daten zu Änderungen des Webauftritt eines
Mitgliedes. Diese Tabelle wird benötigt damit sichergestellt werden
kann das ein Mitglied nur nur die zugelassene Anzahl an Änderungen
beantragt.
Je nach Kundenwunsch könnte man diese noch erweitern um zusätzliche
Daten zu erhalten. Etwa eine Überprüfung auf die Grösse der Änderungen
um zu überprüfen wie fest die Funktion von den Mitgliedern genutzt
wird.
\paragraph{quality\_checks / (Qualitätschecks)}
Beschreibt die Beziehung zwischen zwei Mitglieder wobei eines der
Mitglieder der Prüfer und ein anderes Mitglied der Geprüfte ist.
Zusätzlich wird erfasst an welchem Tag der Check geplant ist und Ob
der Check bestanden wurde.
\paragraph{subscription\_orders / (Abonnementsbestellungen)}
Enthält die Abokäufe die ein Mitglied macht welcher Standort dabei
gewählt wurde sowie an welchem Tag der Kauf getätigt wurde.
\paragraph{trial\_period / (Probezeit)}
Beinhaltet die Zeit wie lange die Probezeit ist damit diese nicht als
ein Fixwert im Code abgelegt werden muss. Diese sollte es ermöglichen
das die Dauer der Probezeit auch nachträglich noch einfach angepasst
werden kann.
\paragraph{rents / (Mieten)}
Beinhaltet die Mieten welche ein Mitglied in der Probezeit getätigt
hat. Dabei wird über den Mietpreis der Standort definiert der
gemietet wird und mit einem Datumsfeld wird angegeben an welchem Tag
der Platz reserviert wurde.
\paragraph{rent\_prices / (Mietpreise)}
Diese weisst jedem Standort einen Preis zu. Dies ermöglicht es die
Preise für jeden Standort flexibel zu halten und den regionalen
Interessengruppen anzupassen.
\subsection{C\#}
In dieser Sektion wird das Verarbeiten einer kleiner Funktion
beschrieben, in der wir gewisse Segmente unserer Datenbank abrufen und
bearbeiten können. Damit zeigen wir die Funktionalität und
Verarbeitung unsere Datenbank auf.
\subsubsection{Connection}
Um die Verbindung ( connectionstring ) abrufen zu können, erstellen
wir eine ``Helper'' Klasse. Darin haben wir den Verbindungspfad
definiert der beim Verbindungsaufbau in App.config aufgerufen wird.
Den definitiven (connectionstring) haben wir in ``App.config'' bestimmt.
\subsubsection{GUI}
Das GUI wurde beim aufbauen des Projektes als ``Windows Form
Application'' gestartet und ``Dashboard'' genannt. Nach dem Anpassen der
Grösse, haben wir eine ``ListBox'' eingesetzt und sie umbenannt. Sie
dient dazu, zukünftig gesuchte Daten darin aufzuführen. Um die
gesuchten Daten einzugeben,haben wir danach eine ``TextBox'' eingefügt.
Sobald die gesuchten Daten in der ``TextBox'' eingegeben wurden, werden
die Informationen aufgerufen und in der ``ListBox'' aufgezeigt.
\subsubsection{Definition der Klassen}
Hier werden alle eingesetzten Klassen der Applikation vorgestellt
und definiert.
Zu jeder Klasse gibt es eine passende Grafik welche ihre Methoden und
Attribute beschreibt. Nachfolgend habe wir eine Beispiel Grafik eingefügt
welche die Symbole und den Aufbau beschreibt.
\begin{figure}[H]
\centering
\includegraphics[scale=0.7]{diagrammes/example.png}
\caption{Beispiel Klassen}
\end{figure}
\paragraph{Programm}
Dient grundsätzlich als Eintrittspunkt der Applikation und hat sonst
keine grosse Funktion.
\paragraph{Helper}
Helper.cs dient dem Zweck, den Pfad der Datenbank nicht in jeder
Methode eingeben zu müssen. Dafür haben wir in dieser Klasse den
Verbindungsaufbau durch den Configuration.Manager definiert. Den Pfad
zur Datenbank muss dadurch nur ein einziges Mal in App.config
definiert werden und kann dann durch die Helper.cs Klasse simpel
aufgerufen werden.
\paragraph{LoginForm}
Diese Klasse wurde für das Registrieren und Einloggen des Benutzers
mit einem dazugehörigen GUI von uns erstellt. Dadurch können sich
Benutzer durch das Eingeben der Email-Adresse und des Passwortes mit
dem ``Register-Button'' Registrieren und durch ein zweites eingeben der
Daten und betätigen des ``Login-Button'' auch gleich einloggen. Nach dem
Login wird auch gleich eine Nachricht der Applikation dem Benutzer mit
dem Text ``It worked'' aufgezeigt, um den erfolgreichen Login zu melden.
Dadurch möchten wir die Funktion des einfüllen und Lesen der Daten aus
der Datenbank aufzeigen. Den Verbindungsaufbau in die Datenbank mit
allen nötigen Funktion(Schreiben / Lesen) haben wir in die Klasse
``DataAccess'' ausgelagert.
\begin{figure}[H]
\centering
\includegraphics[scale=0.7]{diagrammes/loginform.png}
\caption{LoginForm Klasse}
\end{figure}
\paragraph{Dashboard}
Auf dem Dashboard haben wir unseren Kern was Informationen herauslesen
und wieder Eingeben belangt, erstellt. In dieser Klasse werden die aus
der Datenbank herausgelesenen Daten der ``locations'' und
``rents'' Tabellen im GUI aufgezeigt und /oder eingefügt. Damit
möchten wir einen Teil unserer Applikation und Datenbank abbilden, mit
der Benutzer Standort heraussuchen können, neue Standorte hinzugefügt
werden können und den Mietbeginn/ das Zahlungsdatum eingegeben werden
kann. Den Verbindungsaufbau in die Datenbank mit allen nötigen
Funktion(Schreiben / Lesen) haben wir in die Klasse ``DataAccess''
ausgelagert und vom GUI aus verankert.
\begin{figure}[H]
\centering
\includegraphics[scale=0.7]{diagrammes/dashboard.png}
\caption{Dashboard Klasse}
\end{figure}
\paragraph{DataAccess}
Mit der DataAccess Klasse konnten wir nahezu alle Datenbank relevanten
Funktionen, die sonst in unseren GUI ausgeführt werden, in einer
einzigen Klasse abbilden. Darin haben wir den Aufruf der
Datenbanktabellen mit den dazu benötigten SQl - Befehlen ausgeführt.
Dadurch wird SQl- Code nur in dieser Klasse aufgerufen und verwendet.
\begin{figure}[H]
\centering
\includegraphics[scale=0.7]{diagrammes/dataaccess.png}
\caption{DataAccess Klasse}
\end{figure}
\paragraph{GetRents}
Um Daten herauszulesen oder zur Datenbank zu schicken, haben wir in
C\# ein Modell der ``rents'' Tabelle erstellt die sie abbildet. Damit
nehmen wir jede Spalte der Tabelle entgegen. Danach werden mit der
``RentInfo'' Methode nur diejenigen Spalten der Tabelle für unser GUI
abgerufen, die wir auch wirklich benötigen. Jedoch wird die ``RentInfo''
Methode noch nicht benötigt, da wir Daten nur einfügen und nicht
herauslesen möchten.
\begin{figure}[H]
\centering
\includegraphics[scale=0.7]{diagrammes/getrents.png}
\caption{GetRents Klasse}
\end{figure}
\paragraph{GetMembers}
Um Daten herauszulesen oder zur Datenbank zu schicken, haben wir in
C\# ein Modell der ``members'' Tabelle erstellt die sie abbildet. Damit
nehmen wir jede Spalte der Tabelle entgegen. Danach werden mit der
``MemberInfo'' Methode nur diejenigen Spalten der Tabelle für unser GUI
abgerufen, die wir auch wirklich benötigen,um die Login Daten zu
überprüfen.
\begin{figure}[H]
\centering
\includegraphics[scale=0.7]{diagrammes/getmembers.png}
\caption{GetMembers Klasse}
\end{figure}
\paragraph{GetLocations}
Um Daten herauszulesen oder zur Datenbank zu schicken, haben wir in
C\# ein Modell der ``locations'' Tabelle erstellt die sie abbildet. Damit
nehmen wir jede Spalte der Tabelle entgegen. Danach werden mit der
``LocationInfo'' Methode nur diejenigen Spalten der Tabelle für unser
GUI abgerufen, die wir auch wirklich benötigen.
\begin{figure}[H]
\centering
\includegraphics[scale=0.7]{diagrammes/getlocations.png}
\caption{GetLocations Klasse}
\end{figure}
\subsubsection{Problematik}
\begin{itemize}
\item Verbindungsaufbau
\item Insert Data
\item Datenformatierung (Geburtstag)
\end{itemize}
\subsubsection{Referenzen und Addons/ Packages}
Mit Dapper \cite{dbcs6} entschieden wir uns, nachdem wir ein wenig
nachgeforscht haben und wir auf Stack Overflow fündig wurden. Da auf
dieser Webseite Dapper genutzt wird und wir bisher immer gute
Erfahrungen mit Stack Overflow hatten, schien die Entscheidung
einfach.
\subsubsection{Referenzen}
-using System.Configuration;
-using Dapper;
\newpage
\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 & Erfolgreiche Registrierung & 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. \\ \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 & Meldung: \newline
“It worked”
Quittierung führt zum
Dashboard & 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. “Add” Knopf klicken \newline
5. Mietdatum auswählen \newline
6. “Rent” Knopf klicken & & Miete wird in Datenbank
Verbucht. & & \\ \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. & \\ \hline
% TC-11 & & & & & & & \\ \hline
\caption{Testfälle}
\end{longtable}
%% -- end test case table --
\end{landscape}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "main"
%%% End: