Compare commits

..

No commits in common. "master" and "andreas" have entirely different histories.

38 changed files with 152 additions and 273 deletions

View File

@ -22,26 +22,6 @@ mehr verändert werden sollten. Ihre Funktionen sind dabei:
- titlepage.tex: Enthält nur den Inhalt des Titelbildes
- bib.bib: Enthält die Quellen
##### Installation
1. Das SQL Studio Projekt im Ordner "sql" öffnen. Anschliessend die SQL Scripts
entsprechend ihrer Nummerierung ausführen:
```
* setup_01_create_database.sql
* setup_02_create_table.sql
* setup_03_insert_data.sql
* setup_04_create_views.sql
```
2. Das Visual Studio Projekt im Ordner
"csharp" öffnen.
3. Den Connection String in den Properties der Datei App.config anpassen.
4. Applikation kompilieren.
### Support
We don't provide any support for the content in this repository.

View File

@ -4,7 +4,7 @@ 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 verschiedenen Anbietern geben und somit Neugierde
Überblick über die verschieden Anbieter geben und somit Neugierde
wecken. Dies alles soll mit möglichst wenig Aufwand verwaltet
werden können.
@ -37,7 +37,7 @@ zum Projekt noch grafisch auf.
\subsubsection{Risiken}
Ein grosses Risiko ist das wir uns beim Erarbeiten der Datenbank sowie
beim Schreiben der Applikation in Details verlieren die nicht
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.
@ -54,21 +54,21 @@ werden.
den Aufgaben zugeordnet. Abweichungen wurden mittels einer
Abweichungsanalyse aufgezeichnet.
\item Die Lösung wurde dokumentiert.
\item Eine Teilfunktion des Geschäftsmodells wurde in einer C\# Applikation
\item Eine Teilfunktion des Geschäftsmodell wurde in einer C\# Applikation
abgebildet.
\end{itemize}
\subsection{Wunschziele}
\begin{itemize}
\item Die Datenbank enthält alle statischen Daten Wie
\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}
User Stories sind eine in Alltagssprache geschriebenen
Software-Anforderungen. Sie sind bewusst kurzgehalten und
User Stories sind sind eine in Alltagssprache geschriebenen
Software-Anforderungen. Sie sind bewusst kurz gehalten und
beschreiben die Wünsche und Ziele der Rollen welche die
Software verwenden.
@ -159,7 +159,6 @@ Wir haben uns dabei zu Beginn die folgenden drei möglichen Szenarien
Bei dieser Lösungsvariante würde der komplette Registrierungsprozess
abgebildet werden. Dabei würden auch die Adressdaten etc. der Person
erfasst werden.
\paragraph{Lösen eines Abonnements.}
Das Lösen eines Abonnements würde beinhalten das eine bestehende
@ -268,7 +267,7 @@ Notes & -\\
UC History & 1.0 Draft erstellt durch AZ\\
& 1.1 kleinere Anpassungen durch AZ\\
\hline
Autor & A. Zweili \& I. Cadaroski\\
Author & A. Zweili \& I. Cadaroski\\
\hline
Date & 24. August 2017\\
\hline
@ -342,13 +341,13 @@ Date & 24. August 2017\\
\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 einem Klick auf dem Insert Button.\\
& 3. User bestätigt die Miete mit einem Klick auf den Insert Button.\\
\hline
Alternative Flow
& \textbf{Der Alternative Flow wurde in der Applikation nicht umgesetzt.}\\
& 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 dem Insert Button.\\
& 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
@ -415,100 +414,43 @@ Date & 24. August 2017\\
\begin{landscape}
\section{Stundenplanung}
Die grössten Differenzen in unserer Planung sind der C\# Applikation
nachzuführen. Da wir in diesem Aspekt noch nicht die nötige Erfahrung
besitzen, musste sehr viel Zeit in Wissensbeschaffung investiert
werden.
%% -- 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}}
{\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}\textbf{Planung}} &
{\cellcolor[HTML]{C0C0C0}\textbf{Leistung}} &
{\cellcolor[HTML]{C0C0C0}\textbf{Differenz}} &
{\cellcolor[HTML]{C0C0C0}\textbf{Erklärung}} \\ \hline
{\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 & 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
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 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
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 --
@ -523,9 +465,9 @@ 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.
entstanden insgesammt über 150 Commits.
Des Weiteren haben wir uns die Arbeit so aufgeteilt damit wir möglichst
Desweiteren haben wir uns die Arbeit so aufgeteilt damit wir möglichst
unabhängig voneinander arbeiten konnten und somit nicht aufeinander
warten mussten.
@ -586,14 +528,14 @@ jeweilige Standort hat damit mein ein Überbuchen verhindern kann.
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
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 Status die ein
Mitglied haben kann. Dabei werden hier auch Mitglieder Status wie
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.
\paragraph{subscribtions / (Abonnemente)}
@ -601,9 +543,9 @@ Beschreiben die Abonnementsarten welche von den Mitgliedern gekauft
werden können.
\paragraph{commercials / (Werbung)}
Diese Tabelle enthält alle Daten zu Änderungen des Webauftritts eines
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 die zugelassene Anzahl an Änderungen
kann das ein Mitglied nur nur die zugelassene Anzahl an Änderungen
beantragt.
Je nach Kundenwunsch könnte man diese noch erweitern um zusätzliche
@ -618,15 +560,15 @@ Zusätzlich wird erfasst an welchem Tag der Check geplant ist und Ob
der Check bestanden wurde.
\paragraph{subscription\_orders / (Abonnementsbestellungen)}
Enthält die Abo Käufe die ein Mitglied macht und welcher Standort dabei
Enthält die Abokäufe die ein Mitglied macht und welcher Standort dabei
gewählt wurde Sowie an welchem Tag der Kauf getätigt wurde. Das
Kaufdatum kann in der finalen Version dazu verwendet werden zu
berechnen ob das aktuelle Abo noch gültig ist oder nicht.
\paragraph{trial\_period / (Probezeit)}
Beinhaltet die Zeit wie lange die Probezeit ist damit diese nicht als
ein Fix Wert im Code abgelegt werden muss. Diese sollte es ermöglichen
dass die Dauer der Probezeit auch nachträglich noch einfach angepasst
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)}
@ -640,13 +582,6 @@ Diese Tabelle weist jedem Standort einen Preis zu. Dies ermöglicht es die
Preise für jeden Standort flexibel zu halten und den regionalen
Interessengruppen anzupassen.
\paragraph{RentedLocations}
Damit wir die getätigten Mieten in der Applikation sauber ausgeben
können war es nötig eine View zu erstellen. Diese beinhaltet drei
``inner joins'' über die Tabellen ``members'', ``rents'',
``rent\_prices'' und ``locations''. Somit kann man einsehen welches
Mitglied an welchem Ort und zu welchem Preis einen Stand gemietet hat.
\begin{landscape}
\begin{figure}
\centering
@ -666,7 +601,7 @@ Mitglied an welchem Ort und zu welchem Preis einen Stand gemietet hat.
\subsection{C\#}
In dieser Sektion wird das Erstellen einer kleinen Anwendung
In dieser Sektion wird das Erstellen einer kleiner Anwendung
beschrieben, in der wir gewisse Segmente unserer Datenbank abrufen und
bearbeiten können. Damit zeigen wir die Funktionalität und
Verarbeitung unsere Datenbank auf.
@ -695,13 +630,13 @@ 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 haben wir eine Beispiel Grafik, Abbildung:
Attribute beschreibt. Nachfolgend habe wir eine Beispiel Grafik, Abbildung:
(\ref{fig:class_example}) eingefügt welche die Symbole und den Aufbau
beschreibt.
\begin{figure}[H]
\centering
\includegraphics[scale=0.23]{diagrammes/example.png}
\includegraphics[scale=0.7]{diagrammes/example.png}
\caption{Beispiel Klassen\label{fig:class_example}}
\end{figure}
@ -722,16 +657,17 @@ Diese Klasse, Abbildung: (\ref{fig:login_class}) 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. Bei erfolgreicher Registrierung erhalten sie dann eine
entsprechende Meldung, Abbildung: (\ref{fig:register}). Durch ein
zweites Eingeben der Daten und betätigen des ``Login-Button'' können
sie sich dann auch gleich einloggen, Abbildung: (\ref{fig:login}).
Nach dem erfolgreichen Login wird der User dann auf das Dashboard
weitergeleitet.
Registrieren, Abbildung: (\ref{fig:register}), und durch ein zweites
eingeben der Daten und betätigen des ``Login-Button'' auch gleich
einloggen, Abbildung: (\ref{fig:login}). 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üllens und Lesen der Daten aus der
Datenbank aufzeigen.
\begin{figure}[H]
\centering
\includegraphics[scale=0.23]{diagrammes/loginform.png}
\includegraphics[scale=0.7]{diagrammes/loginform.png}
\caption{LoginForm Klasse}
\label{fig:login_class}
\end{figure}
@ -760,14 +696,15 @@ herausgelesenen Daten der ``locations'' und ``rents'' Tabellen im GUI,
Abbildung: (\ref{fig:dashboard}) aufgezeigt und/ oder eingefügt. Damit
möchten wir einen Teil der finalen Applikation und Datenbank abbilden
mit dem, die Benutzer Standorte heraussuchen und den Mietbeginn
eingegeben können. Um einen Standort zu mieten muss ein User sich
zuerst einen Standort heraussuchen und diesen markieren. Anschliessend
kann er das passende Datum markieren und zum Abschluss die Miete mit
dem ``Rent-Button'' tätigen.
eingegeben können. Um unsere Demo-Applikation simpel zu halten, kann
ein Mitglied nach dem Registrieren und Einloggen die vom Verwalter
hinzugefügten Standorte heraussuchen, sie dann in unsere Mietbox
schieben und nach dem wählen des gewünschten Zeitpunktes den Standort
mieten.
\begin{figure}[H]
\centering
\includegraphics[scale=0.23]{diagrammes/dashboard.png}
\includegraphics[scale=0.7]{diagrammes/dashboard.png}
\caption{Dashboard Klasse}
\label{fig:dashboard_class}
\end{figure}
@ -790,7 +727,7 @@ der Login des Benutzers darin geprüft.
\begin{figure}[H]
\centering
\includegraphics[scale=0.23]{diagrammes/dataaccess.png}
\includegraphics[scale=0.7]{diagrammes/dataaccess.png}
\caption{DataAccess Klasse}
\label{fig:dataaccess}
\end{figure}
@ -801,25 +738,25 @@ Um Daten herauszulesen oder zur Datenbank zu schicken, haben wir in
C\# Klassen der ``locations'', ``rents'' und ``members'' erstellt, die
sie abbilden. Damit nehmen die dazu benötigten Spalten der jeweiligen
Tabellen entgegen. Danach werden die benötigten Datensätze mit den
``Methoden-Infos'' der derzeitigen Klasse aufgerufen.
``Methoden-Infos'' der derweiligen Klasse aufgerufen.
Die ``GetMembers'' Klasse, Abbildung: (\ref{fig:getmembers}), wird für
die Registration und den Login der Mitglieder benötigt:
\begin{figure}[H]
\centering
\includegraphics[scale=0.23]{diagrammes/getmembers.png}
\includegraphics[scale=0.7]{diagrammes/getmembers.png}
\caption{GetMembers Klasse}
\label{fig:getmembers}
\end{figure}
Die ``GetLocations'' Klasse, Abbildung: (\ref{fig: getlocations}), für
Die ``GetLocations'' Klasse, Abbildung: (\ref{fig:getlocations}), für
das Herauslesen der Märkte um dem Mitglied alle im Moment
hinzugefügten Mietoptionen darzubieten:
\begin{figure}[H]
\centering
\includegraphics[scale=0.23]{diagrammes/getlocations.png}
\includegraphics[scale=0.7]{diagrammes/getlocations.png}
\caption{GetLocations Klasse}
\label{fig:getlocations}
\end{figure}
@ -829,7 +766,7 @@ und Abbilden der jeweiligen Märkte:
\begin{figure}[H]
\centering
\includegraphics[scale=0.23]{diagrammes/getrents.png}
\includegraphics[scale=0.7]{diagrammes/getrents.png}
\caption{GetRents Klasse}
\label{fig:getrents}
\end{figure}
@ -842,16 +779,16 @@ und Abbilden der jeweiligen Märkte:
Test-Anwender der Datenbank angepasst werden.
\item Insert Data
Nach den ersten Tests wurde uns klar, dass wir ein Problem mit
der Weitergabe der ID's hatten. Der Fehler kam erst ans Licht, als wir
Nach den ersten Test's wurde uns klar, dass wir ein Problem mit
der weitergabe der ID's hatten. Der Fehler kam erst ans Licht, als wir
anfingen die jeweiligen ``locations'' und ``members''- ID's durch das
GUI einzufügen. Gelöst wurde das Ganze mit einer statischen Klasse.
GUI einzufügen. Gelöst wurde das ganze mit einer statischen Klasse.
\end{itemize}
\subsubsection{Addons/ Packages}
Dapper \cite{dbcs6} ist ein simpler ``object mapper'' für .NET. Wir
nutzen ihn anstelle von einem ADO.NET data reader da er nützliche
nutzen ihn anstelle von einem ADO.NET data reader da er nütziche
Erweiterungen bei unserer IDbConnection bietet, indem er
Erweiterungsmethoden zur Datenbankabfrage bietet.
@ -881,126 +818,95 @@ Weiter Infos unter : http://dapper-tutorial.net/dapper
\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.
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.
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
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 & 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.
TC-08 & Standort mieten & TC-01, TC-03 und
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
4. ``Add'' Knopf klicken \newline
5. Mietdatum auswählen \newline
6. ``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}
In Bezug auf die Planung verlief diese Casestudy wesentlich besser
als die vorherige in Webtechnologie.
Insbesondere die Zeitplanung lief sehr gut, da wir diesbezüglich Erfahrungen aus der Webtechnologie- Case Study mitnehmen konnten.
Wir hatten zwar geplant nach den Sommerferien mit der Arbeit grösstenteils fertig zu
sein, was schlussendlich nicht erreicht wurde. Jedoch wurden wir
ca. einen Monat später, (anfangs September), mit dem grössten Teil der
Arbeit fertig und lagen somit immer noch sehr gut in der Zeit.
Durch die regelmässigen Meetings, waren wir bezüglich des Fortschritts
immer auf dem aktuellsten Stand. Zusätzlich ermöglichten uns die
Meetings frühzeitig Korrekturen der Planung vorzunehmen und
somit allfällige Probleme zu umgehen.
Des Weiteren hatten wir so auch ideal Zeit technische Schwierigkeiten
miteinander zu besprechen. Beispielsweise wie wir gewisse Entitäten abbilden
möchten, oder Probleme die bei der C\# Applikation auftraten.
Die C\# Applikation war insgesamt der grösste Knackpunkt dieser
Casestudy. Die Anwendung funktioniert so weit wie geplant, jedoch könnte sie in
dieser Form allerdings wohl eher nicht produktiv eingesetzt werden.
Der Aufbau der Datenbank hat uns dazu im Vergleich verhältnismässig
wenig Probleme bereitet. Das Hauptproblem dabei war hauptsächlich die
schwammige Beschreibung der Anforderung des Kunden.
Wie auch in der letzten Case Study hat sich das Arbeiten mit Git
wieder bewährt. Allerdings könnten wir uns die Funktionen von Git
stärker zu nutzen machen. Etwa Test Branches erstellen, um schnell
etwas zu testen, oder die Commits noch sauberer zu erstellen, damit man
einfacher mit ihnen arbeiten kann.
Bezüglich der Dokumentation haben wir uns ein gute und stabile
Umgebung in \LaTeX aufgebaut welche wir so nun auch ohne weiteres in
späteren Arbeiten verwenden können. Insbesondere die Tabellen werden
wir sehr gut auch in späteren Projekten nutzen können.
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "main"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -1,5 +1,4 @@
@startuml
skinparam dpi 300
class Dashboard {
+ Dashboard()
- void UpdateBinding()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -1,5 +1,4 @@
@startuml
skinparam dpi 300
class DataAccess {
+ SqlConnection connection
+ List<GetLocations> GetLocations()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -1,5 +1,4 @@
@startuml
skinparam dpi 300
class Beispiel {
+ public Attribute
~ internal Attribute

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -1,5 +1,4 @@
@startuml
skinparam dpi 300
class GetLocations {
+ int location_id
+ string streetname

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,5 +1,4 @@
@startuml
skinparam dpi 300
class GetMembers {
+ int member_id
+ string email_address

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -1,5 +1,4 @@
@startuml
skinparam dpi 300
class GetRents {
+ int rent_id
+ string rent_date

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1,5 +1,4 @@
@startuml
skinparam dpi 300
class LoginForm {
+ LoginForm()
- void RegistrationButton_Click()

View File

@ -14,7 +14,7 @@ go
dbo.rent_prices.rent_price,
dbo.rents.rent_date,
dbo.members.email_address
FROM dbo.members
INNER JOIN dbo.rents ON dbo.members.member_id = dbo.rents.member_id
INNER JOIN dbo.rent_prices ON dbo.rents.rent_price_id = dbo.rent_prices.rent_price_id
INNER JOIN dbo.locations ON dbo.rents.location_id = dbo.locations.location_id
FROM dbo.members
INNER JOIN dbo.rents ON dbo.members.member_id = dbo.rents.member_id
INNER JOIN dbo.rent_prices ON dbo.rents.rent_price_id = dbo.rent_prices.rent_price_id
INNER JOIN dbo.locations ON dbo.rents.location_id = dbo.locations.location_id