Compare commits
No commits in common. "master" and "andreas" have entirely different histories.
20
README.md
|
@ -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.
|
||||
|
|
390
doku/content.tex
|
@ -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"
|
||||
|
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 7.1 KiB |
|
@ -1,5 +1,4 @@
|
|||
@startuml
|
||||
skinparam dpi 300
|
||||
class Dashboard {
|
||||
+ Dashboard()
|
||||
- void UpdateBinding()
|
||||
|
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 6.7 KiB |
|
@ -1,5 +1,4 @@
|
|||
@startuml
|
||||
skinparam dpi 300
|
||||
class DataAccess {
|
||||
+ SqlConnection connection
|
||||
+ List<GetLocations> GetLocations()
|
||||
|
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 4.7 KiB |
|
@ -1,5 +1,4 @@
|
|||
@startuml
|
||||
skinparam dpi 300
|
||||
class Beispiel {
|
||||
+ public Attribute
|
||||
~ internal Attribute
|
||||
|
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 4.4 KiB |
|
@ -1,5 +1,4 @@
|
|||
@startuml
|
||||
skinparam dpi 300
|
||||
class GetLocations {
|
||||
+ int location_id
|
||||
+ string streetname
|
||||
|
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 4.8 KiB |
|
@ -1,5 +1,4 @@
|
|||
@startuml
|
||||
skinparam dpi 300
|
||||
class GetMembers {
|
||||
+ int member_id
|
||||
+ string email_address
|
||||
|
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 5.4 KiB |
|
@ -1,5 +1,4 @@
|
|||
@startuml
|
||||
skinparam dpi 300
|
||||
class GetRents {
|
||||
+ int rent_id
|
||||
+ string rent_date
|
||||
|
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 3.9 KiB |
|
@ -1,5 +1,4 @@
|
|||
@startuml
|
||||
skinparam dpi 300
|
||||
class LoginForm {
|
||||
+ LoginForm()
|
||||
- void RegistrationButton_Click()
|
||||
|
|
|
@ -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
|