finalize the documentation

This commit is contained in:
Andreas Zweili 2017-08-28 23:56:21 +02:00
parent 9166b5196f
commit d32326bfda
4 changed files with 206 additions and 63 deletions

View File

@ -1,7 +1,7 @@
@misc{dbcs1, @misc{dbcs1,
Day = {24}, Day = {24},
Month = {05}, Month = {05},
Note = {https://stackoverflow.com/questions/10740293/insert-an-insertion-date-value-into-a-sql-table-automatically}, Note = {\url{https://stackoverflow.com/questions/10740293/insert-an-insertion-date-value-into-a-sql-table-automatically}},
Urldate = {2017-07-24}, Urldate = {2017-07-24},
author = {Wheat Mitch}, author = {Wheat Mitch},
title = {Insert an {``}insertion date{''} value into a SQL table automatically?}, title = {Insert an {``}insertion date{''} value into a SQL table automatically?},
@ -12,7 +12,7 @@
@misc{dbcs2, @misc{dbcs2,
Day = {20}, Day = {20},
Month = {07}, Month = {07},
Note = {http://excel2latex.com/}, Note = {\url{http://excel2latex.com/}},
Urldate = {2017-07-24}, Urldate = {2017-07-24},
author = {Wood Eric}, author = {Wood Eric},
title = {excel => LaTeX}, title = {excel => LaTeX},
@ -23,7 +23,7 @@
@misc{dbcs3, @misc{dbcs3,
Day = {26}, Day = {26},
Month = {07}, Month = {07},
Note = {https://tex.stackexchange.com/questions/133/how-can-i-make-a-table-that-takes-up-more-than-a-single-page}, Note = {\url{https://tex.stackexchange.com/questions/133/how-can-i-make-a-table-that-takes-up-more-than-a-single-page}},
Urldate = {2017-07-24}, Urldate = {2017-07-24},
author = {Vanden}, author = {Vanden},
title = {How can I make a table that takes up more than a single page?}, title = {How can I make a table that takes up more than a single page?},
@ -32,7 +32,7 @@
} }
@misc{dbcs4, @misc{dbcs4,
Note = {http://www.personal.ceu.hu/tex/footnote.htm}, Note = {\url{http://www.personal.ceu.hu/tex/footnote.htm}},
Urldate = {2017-07-24}, Urldate = {2017-07-24},
author = {Central European University}, author = {Central European University},
title = {LaTeX Footnotes}, title = {LaTeX Footnotes},
@ -43,7 +43,7 @@
@misc{dbcs5, @misc{dbcs5,
Day = {28}, Day = {28},
Month = {02}, Month = {02},
Note = {https://iamtimcorey.com/csharp-sql-data-access/}, Note = {\url{https://iamtimcorey.com/csharp-sql-data-access/}},
author = {Tim Corey}, author = {Tim Corey},
title = {C\# Data Access: SQL Database}, title = {C\# Data Access: SQL Database},
year = {2017}, year = {2017},
@ -53,9 +53,29 @@
@misc{dbcs6, @misc{dbcs6,
Day = {20}, Day = {20},
Month = {07}, Month = {07},
Note = {https://github.com/StackExchange/Dapper}, Note = {\url{https://github.com/StackExchange/Dapper}},
author = {StackExchange}, author = {StackExchange},
title = {Dapper - a simple object mapper for .Net}, title = {Dapper - a simple object mapper for .Net},
year = {2017}, year = {2017},
tags = "db_case-study" tags = "db_case-study"
} }
@misc{dbcs7,
Day = {{27}},
month = {{08}},
note = {\url{{https://de.wikipedia.org/wiki/Anwendungsfalldiagramm}}},
author = {Wikipedia},
title = {{Anwendungsfalldiagramm {--} Wikipedia}},
year = {2017},
tags = "db_case-study"
}
@misc{dbcs8,
Day = {{27}},
month = {{08}},
note = {\url{{https://de.wikipedia.org/wiki/Anwendungsfall}}},
author = {Wikipedia},
title = {{Anwendungsfall {--} Wikipedia}},
year = {2017},
tags = "db_case-study"
}

View File

@ -16,7 +16,7 @@ Folgende Stakeholder sind in diesem Projekt zu berücksichtigen:
\item Marktbesucher \item Marktbesucher
\end{itemize} \end{itemize}
Diagramm (\ref{fig:stakeholder}) zeigt die Beziehung der Stakeholder Abbildung: (\ref{fig:stakeholder}) zeigt die Beziehung der Stakeholder
zum Projekt noch grafisch auf. zum Projekt noch grafisch auf.
\begin{figure} \begin{figure}
@ -67,6 +67,11 @@ werden.
\newpage \newpage
\section{User Stories} \section{User Stories}
User Stories sind sind eine in Alltagsprache geschriebenen
Software-Anforderungen. Sie sind bewusst kurz gehalten und
beschreiben die Wünsche und Ziele der Rollen welche die
Software verwenden.
\subsection{Verwaltung} \subsection{Verwaltung}
Als Plattforminhaber möchte ich, Als Plattforminhaber möchte ich,
\begin{itemize} \begin{itemize}
@ -107,14 +112,76 @@ Als Marktbesucher möchte ich,
\newpage \newpage
\section{Use Cases} \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} \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}
\subsection{Use Cases} Wir verschaften 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}
Wir wollen hier auch noch darauf eingehen welche Varianten wir uns
überlegt haben und wieso wir uns am Ende für die nachfolgenden 5 Use
Cases entschieden haben. Dabei war es uns besonders wichtig das bei
den Use Cases, Daten aus der Datenbank ausgelesen sowie auch
geschreiben werden müssen.
Wir haben uns dabei zu Beginn die folgenden drei möglichen Szenarien
überlegt:
\begin{itemize}
\item Login und Registrierung einer Person.
\item Lösen eines Abonnements.
\item Mieten eines Standorts.
\end{itemize}
\paragraph{Login und Registrierung einer Person.}
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 behinhalten das eine bestehende
Person eines der verschiedenen Abonnemente anschauen, auswählen und
anschliessend ``kaufen'' könnte.
\paragraph{Mieten eines Standorts.}
Beim Mieten eines Standortes könnte ein Mitglied die Marktstandorte
einsehen, auswählen und sich dort einen Spot reservieren.
\paragraph{Gewählte Variante}
Schlussendlich haben wir uns dafür entschieden einen Login und die
Registrierung umzusetzen. Allerdings haben wir beschlossen das wir uns
darauf beschränken ein Mitglied nur mit einer Email Adresse und einem
Passwort zu erfassen. Zusätzlich schien uns das Mieten eines Standorts
noch eine gute Funktion um eine Teilfunktion der Applikation
abzubilden.
\begin{landscape} \begin{landscape}
\begin{figure}[H] \begin{figure}
\centering \centering
\includegraphics[height=0.9\textheight]{diagrammes/use_cases.png} \includegraphics[height=0.9\textheight]{diagrammes/use_cases.png}
\caption{Use Case Diagramm\label{fig:use_case}} \caption{Use Case Diagramm\label{fig:use_case}}
@ -393,18 +460,50 @@ Haben die Länder und Städte Listen bereits komplett zu erstellen. \\ \hline
\section{Umsetzung} \section{Umsetzung}
\subsection{Lösungsvarianten}
\subsection{Zusammenarbeit} \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 insgesammt über 150 Commits.
\subsection{ERM} Desweiteren haben wir uns die Arbeit so aufgeteilt damit wir möglichst
unabhängig voneinander arbeiten konnten und somit nicht aufeinander
warten mussten.
\subsection{RM/SQL} 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}
Nachfolgend werden die Entitäten der Datenbank kurz beschrieben damit Nachfolgend werden die Entitäten der Datenbank kurz beschrieben damit
das ERM Diagramm (\ref{fig:erm}) besser verstanden werden kann. Dabei das ERD Diagramm, Abbildung: (\ref{fig:erm}) besser verstanden werden
wird zuerst der Name der Tabelle in der Datenbank aufgelistet gefolgt von der kann. Dabei wird zuerst der Name der Tabelle in der Datenbank
deutschen Übersetzung. aufgelistet gefolgt von der deutschen Übersetzung.
\paragraph{persons / (Personen)} \paragraph{persons / (Personen)}
Sind die Repräsentation einer realen Person in der Datenbank. Hier Sind die Repräsentation einer realen Person in der Datenbank. Hier
@ -487,7 +586,7 @@ Interessengruppen anzupassen.
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[height=0.8\textheight]{diagrammes/rm.png} \includegraphics[height=0.8\textheight]{diagrammes/rm.png}
\caption{ERM Diagramm\label{fig:rm}} \caption{Entity-Relationship-Modell\label{fig:rm}}
\end{figure} \end{figure}
\end{landscape} \end{landscape}
@ -496,7 +595,7 @@ Interessengruppen anzupassen.
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.38]{diagrammes/erm.png} \includegraphics[scale=0.38]{diagrammes/erm.png}
\caption{RM Diagramm\label{fig:erm}} \caption{Entity-Relationship-Diagramm\label{fig:erm}}
\end{figure} \end{figure}
\end{landscape} \end{landscape}
@ -531,7 +630,7 @@ Hier werden alle eingesetzten Klassen der Applikation vorgestellt
und definiert. und definiert.
Zu jeder Klasse gibt es eine passende Grafik welche ihre Methoden und Zu jeder Klasse gibt es eine passende Grafik welche ihre Methoden und
Attribute beschreibt. Nachfolgend habe wir eine Beispiel Grafik Attribute beschreibt. Nachfolgend habe wir eine Beispiel Grafik, Abbildung:
(\ref{fig:class_example}) eingefügt welche die Symbole und den Aufbau (\ref{fig:class_example}) eingefügt welche die Symbole und den Aufbau
beschreibt. beschreibt.
@ -554,53 +653,73 @@ definiert werden und kann dann durch die Helper.cs Klasse simpel
aufgerufen werden. aufgerufen werden.
\paragraph{LoginForm} \paragraph{LoginForm}
Diese Klasse wurde für das Registrieren und Einloggen des Benutzers Diese Klasse, Abbildung: (\ref{fig:login_class}) wurde für das
mit einem dazugehörigen GUI von uns erstellt. Dadurch können sich Registrieren und Einloggen des Benutzers mit einem dazugehörigen GUI,
Abbildung: (\ref{fig:login}), von uns erstellt. Dadurch können sich
Benutzer durch das Eingeben der Email-Adresse und des Passwortes mit Benutzer durch das Eingeben der Email-Adresse und des Passwortes mit
dem ``Register-Button'' Registrieren und durch ein zweites eingeben der dem ``Register-Button'' Registrieren und durch ein zweites eingeben
Daten und betätigen des ``Login-Button'' auch gleich einloggen. Nach dem der Daten und betätigen des ``Login-Button'' auch gleich einloggen.
Login wird auch gleich eine Nachricht der Applikation dem Benutzer mit Nach dem Login wird auch gleich eine Nachricht der Applikation dem
dem Text ``It worked'' aufgezeigt, um den erfolgreichen Login zu melden. Benutzer mit dem Text ``It worked'' aufgezeigt, um den erfolgreichen
Dadurch möchten wir die Funktion des Einfüllens und Lesen der Daten aus Login zu melden. Dadurch möchten wir die Funktion des Einfüllens und
der Datenbank aufzeigen. Lesen der Daten aus der Datenbank aufzeigen.
\begin{figure}[H] \begin{figure}[H]
\centering \centering
\includegraphics[scale=0.7]{diagrammes/loginform.png} \includegraphics[scale=0.7]{diagrammes/loginform.png}
\caption{LoginForm Klasse} \caption{LoginForm Klasse}
\label{fig:login_class}
\end{figure}
\begin{figure}[H]
\centering
\frame{\includegraphics[scale=0.7]{screenshots/login.png}}
\caption{Screenshot der LoginForm}
\label{fig:login}
\end{figure} \end{figure}
\paragraph{Dashboard} \paragraph{Dashboard}
Auf dem Dashboard haben wir den Kern was Informationen herauslesen und Auf dem Dashboard, Abbildung: (\ref{fig:dashboard_class}), haben wir
wieder Eingeben belangt, erstellt. In dieser Klasse werden die aus der den Kern was Informationen herauslesen und wieder Eingeben belangt,
Datenbank herausgelesenen Daten der ``locations'' und ``rents'' erstellt. In dieser Klasse werden die aus der Datenbank
Tabellen im GUI aufgezeigt und /oder eingefügt. Damit möchten wir herausgelesenen Daten der ``locations'' und ``rents'' Tabellen im GUI,
einen Teil der finalen Applikation und Datenbank abbilden mit dem, die Abbildung: (\ref{fig:dashboard}) aufgezeigt und /oder eingefügt. Damit
Benutzer Standorte heraussuchen und den Mietbeginn eingegeben können. möchten wir einen Teil der finalen Applikation und Datenbank abbilden
Um unsere Demo-Applikation simpel zu halten, kann ein Mitglied nach mit dem, die Benutzer Standorte heraussuchen und den Mietbeginn
dem Registrieren und Einloggen die vom Verwalter hinzugefügten eingegeben können. Um unsere Demo-Applikation simpel zu halten, kann
Standorte heraussuchen, sie dann in unsere Mietbox schieben und nach ein Mitglied nach dem Registrieren und Einloggen die vom Verwalter
dem wählen des gewünschten Zeitpunktes den Standort mieten. 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] \begin{figure}[H]
\centering \centering
\includegraphics[scale=0.7]{diagrammes/dashboard.png} \includegraphics[scale=0.7]{diagrammes/dashboard.png}
\caption{Dashboard Klasse} \caption{Dashboard Klasse}
\label{fig:dashboard_class}
\end{figure}
\begin{figure}[H]
\centering
\frame{\includegraphics[width=0.9\textwidth]{screenshots/dashboard.png}}
\caption{Screenshot des Dashboards}
\label{fig:dashboard}
\end{figure} \end{figure}
\paragraph{DataAccess} \paragraph{DataAccess}
Mit der DataAccess Klasse konnten wir nahezu alle Datenbank relevanten Mit der DataAccess Klasse, Abbildung: (\ref{fig:dataaccess}) konnten wir
Funktionen, die in unserem GUI ausgeführt werden, in einer einzigen nahezu alle Datenbank relevanten Funktionen, die in unserem GUI
Klasse abbilden. Darin haben wir den Aufruf der Datenbanktabellen mit ausgeführt werden, in einer einzigen Klasse abbilden. Darin haben wir
den dazu benötigten SQL - Befehlen ausgeführt. Dadurch wird SQL- Code den Aufruf der Datenbanktabellen mit den dazu benötigten SQL -
so gut wie nur in dieser Klasse aufgerufen und diesbezüglich Befehlen ausgeführt. Dadurch wird SQL- Code so gut wie nur in dieser
verwendet. Unter anderem wird auch der Login des Benutzers darin Klasse aufgerufen und diesbezüglich verwendet. Unter anderem wird auch
geprüft. der Login des Benutzers darin geprüft.
\begin{figure}[H] \begin{figure}[H]
\centering \centering
\includegraphics[scale=0.7]{diagrammes/dataaccess.png} \includegraphics[scale=0.7]{diagrammes/dataaccess.png}
\caption{DataAccess Klasse} \caption{DataAccess Klasse}
\label{fig:dataaccess}
\end{figure} \end{figure}
\paragraph{Get-``Klassen''} \paragraph{Get-``Klassen''}
@ -611,33 +730,38 @@ sie abbilden. Damit nehmen die dazu benötigten Spalten der jeweiligen
Tabellen entgegen. Danach werden die benötigten Datensätze mit den Tabellen entgegen. Danach werden die benötigten Datensätze mit den
``Methoden-Infos'' der derweiligen Klasse aufgerufen. ``Methoden-Infos'' der derweiligen Klasse aufgerufen.
Die ``GetMembers'' Klassen wird für die Registration und den Login der Die ``GetMembers'' Klasse, Abbildung: (\ref{fig:getmembers}), wird für
Mitglieder benötigt: die Registration und den Login der Mitglieder benötigt:
\begin{figure}[H] \begin{figure}[H]
\centering \centering
\includegraphics[scale=0.7]{diagrammes/getmembers.png} \includegraphics[scale=0.7]{diagrammes/getmembers.png}
\caption{GetMembers Klasse} \caption{GetMembers Klasse}
\label{fig:getmembers}
\end{figure} \end{figure}
Die ``GetRents'' Klasse für`s Mieten und Abbilden der jeweiligen Märkte: Die ``GetLocations'' Klasse, Abbildung: (\ref{fig:getlocations}), für
das Herauslesen der Märkte um dem Mitglied alle im Moment
\begin{figure}[H] hinzugefügten Mietoptionen darzubieten:
\centering
\includegraphics[scale=0.7]{diagrammes/getrents.png}
\caption{GetRents Klasse}
\end{figure}
Die ``GetLocations'' Klasse für das Herauslesen der Märkte um dem Mitglied alle
im Moment hinzugefügten Mietoptionen darzubieten:
\begin{figure}[H] \begin{figure}[H]
\centering \centering
\includegraphics[scale=0.7]{diagrammes/getlocations.png} \includegraphics[scale=0.7]{diagrammes/getlocations.png}
\caption{GetLocations Klasse} \caption{GetLocations Klasse}
\label{fig:getlocations}
\end{figure} \end{figure}
\subsubsection{Problematik} Die ``GetRents'' Klasse, Abbildung: (\ref{fig:getrents}), für`s Mieten
und Abbilden der jeweiligen Märkte:
\begin{figure}[H]
\centering
\includegraphics[scale=0.7]{diagrammes/getrents.png}
\caption{GetRents Klasse}
\label{fig:getrents}
\end{figure}
\subsubsection{Probleme}
\begin{itemize} \begin{itemize}
\item Verbindungsaufbau \item Verbindungsaufbau
@ -646,13 +770,13 @@ im Moment hinzugefügten Mietoptionen darzubieten:
\item Insert Data \item Insert Data
Nach den ersten Test's wurde uns klar, dass wir ein Problem mit Nach den ersten Test's wurde uns klar, dass wir ein Problem mit
den jeweiligen ID's hatten. Der Fehler kam erst ans Licht, als wir der weitergabe der ID's hatten. Der Fehler kam erst ans Licht, als wir
anfingen die jeweiligen ''locations und ''members''- ID's durch das anfingen die jeweiligen ``locations'' und ``members''- ID's durch das
GUI einzufügen. GUI einzufügen. Gelöst wurde das ganze mit einer statischen Klasse.
\end{itemize} \end{itemize}
\subsubsection{Referenzen und Addons/ Packages} \subsubsection{Addons/ Packages}
Dapper \cite{dbcs6} ist ein simpler ``object mapper'' für .NET. Wir Dapper \cite{dbcs6} ist ein simpler ``object mapper'' für .NET. Wir
nutzen ihn anstelle von einem ADO.NET data reader da er nütziche nutzen ihn anstelle von einem ADO.NET data reader da er nütziche
Erweiterungen bei unserer IDbConnection bietet, indem er Erweiterungen bei unserer IDbConnection bietet, indem er
@ -670,7 +794,6 @@ Dapper erweitert unsere IDbConnection verwendung mit mehreren Methoden wie :
\end{itemize} \end{itemize}
Weiter Infos unter : http://dapper-tutorial.net/dapper Weiter Infos unter : http://dapper-tutorial.net/dapper
\newpage \newpage
\begin{landscape} \begin{landscape}
\section{Testfälle} \section{Testfälle}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
doku/screenshots/login.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB