db_AI-4/doku/content.tex

363 lines
13 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 Plattform Inhaber
\item Standbetreiber
\item Marktbesucher
\end{itemize}
\subsection{Chancen und Risiken}
\subsubsection{Chancen}
\begin{itemize}
\item Zusammenhänge zwischen Programmierung und Datenbank Modelierung
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, Postleizahlen, Standorte.
\item Die Datenbank enthält ein Rechtekonzept.
\end{itemize}
\newpage
\section{User Stories}
\subsection{Verwaltung}
Als Plattforminaber 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 Markbesucher 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}
%% -- Begining of Use Case Template --
\subsubsection{1.0 Use Case}
\begin{table}[H]
\begin{tabular}{|>{\columncolor[HTML]{EFEFEF}}p{.25\textwidth}|p{.7\textwidth}|}
\hline
%begin title row
{\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 1.0 First Use Case } \\ \hline
%end title row
Description & \\ \hline
Actors & \\ \hline
Status & Freigegeben \\ \hline
Includes & \\ \hline
Trigger & \\ \hline
Preconditions & \\ \hline
Postconditions & \\ \hline
Normal Flow & \\ \hline
Alternative Flow & \\ \hline
Author & A. Zweili \& I. Cadaroski \\ \hline
Date & 20. Juli 2017 \\ \hline
\end{tabular}
\caption{Use Case 1.0}
\end{table}
\newpage
%% -- End of Use Case Template --
\newpage
\begin{landscape}
\section{Stundenplanung}
%% -- start Stundenplanung table --
\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 & 17.58 & 7.58 & 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 & 30 & 5 & \ \\ \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
& & & & 0 & \ \\ \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
& & & & 0 & 0 \\ \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
& & & & 0 & \ \\ \hline
Testplan durchgeführt & Doku & 30 & & -30 & \ \\ \hline
Total & & 142 & 129.48 & & \\ \hline
& & & & & \\ \hline
\caption{Stundenplanung}
\end{longtable}
%% -- end Stundenplanung table --
\end{landscape}
\newpage
\section{Zusammenarbeit}
\subsection{Lösungsvarianten}
\newpage
\section{Coding}
\subsection{RM}
\subsection{ERM}
\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.
\textbf{persons / (Personen)}
\newline
Sind die Repräsentation einer realen Person in der Datenbank. Hier
werden auch die Adressdaten eines Mitgliedes gespeichert.
\textbf{salutation / (Anreden)}
\newline
Enthält die möglichen Anreden für Personen.
\textbf{cities / (Städte)}
\newline
Enthält Städtenamen sowie die dazugehörige Postleizahl.
\textbf{countries / (Länder)}
\newline
Enthält eine Liste mit Ländernamen.
\textbf{locations / (Standorte)}
\newline
Diese Tabelle enthält die Daten der Standorte wo die jeweiligen Märkte
abgehalten werden. Dabei wird auch erfasst wieviel Kapazität der
jeweilige Standort hat damit mein ein überbuchen verhindern kann.
\textbf{members / (Mitglieder)}
\newline
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.
\textbf{member\_status / (Mitgliedsstatus)}
\newline
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.
\textbf{subscribtions / (Abonnemente)}
\newline
Beschreiben die Abonnementsarten welche von den Mitgliedern gekauft
werden können.
\textbf{commercials / (Werbung)}
\newline
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.
\textbf{quality\_checks / (Qualitätschecks)}
\newline
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.
\textbf{subscription\_orders / (Abonnementsbestellungen)}
\newline
Enthält die Abokäufe die ein Mitglied macht welcher Standort dabei
gewählt wurde sowie an welchem Tag der Kauf getätigt wurde.
\textbf{trial\_period / (Probezeit)}
\newline
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 nächträglich noch einfach angepasst
werden kann.
\textbf{rents / (Mieten)}
\newline
Beinhaltet die Mieten welche ein Mitglied in der Probezeit getätigt
hat. Dabei wird über den Mietspreis der Standort definiert der
gemietet wird und mit einem Datumsfeld wird angegeben an welchem Tag
der Platz reserviert wurde.
\textbf{rent\_prices / (Mietpreise)}
\newline
Diese weisst jedem Standort einen Preis zu. Dies ermöglicht es die
Preise für jeden Standort flexibel zu halten und den regionalen
Interessensgruppen 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{Datenverarbeitung}
Um die benötigten Daten von der Datenbank hinzuzufügen oder zurückzuschicken, brauchen wir ein Model, in welches Daten eingefügt werden können. Hierfür erstellten wir eine neue Klasse, die wir «cities» nennen und die Struktur dieser Tabelle aus der Datenbank abbilden.
In der Klasse « dataaccess» bauen wir eine Methode auf, mit der wir die Daten als Liste mit einer neuen Verbindung abrufen(und danach wieder schliessen) können und haben die «ListBox» in der «Dashboard» Klasse damit verbunden.
Um die Verbindung zur « listBox» zu vervollständigen, haben wir in der «cities» Klasse die Lese- Eigenschaft «Fullinfo» eingesetzt, um nur die gewollten Daten abzurufen.
Mit einem connection.Query Funktion, haben wir wie in einer SQL- Datenbank Funktionk, danach die Daten in der Klasse «dataaccess» abgefragt.
\subsubsection{Problematik}
-Verbindungsaufbau
-Insert Data
-Datenvormatierung (Geburtstag)
\subsubsection{Referenzen und Addons}
Mit Dapper 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;
\subsubsection{Addons}
\newpage
\begin{landscape}
\section{Testfälle}
%% -- start Test Case table --
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{1.8cm}|p{2cm}|p{2.5cm}|p{2cm}|p{2cm}|p{2cm}|p{2.5cm}|p{2cm}|}
\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 & & & & & & & \\ \hline
TC-02 & & & & & & & \\ \hline
TC-03 & & & & & & & \\ \hline
TC-04 & & & & & & & \\ \hline
TC-05 & & & & & & & \\ \hline
TC-06 & & & & & & & \\ \hline
TC-07 & & & & & & & \\ \hline
TC-08 & & & & & & & \\ \hline
TC-09 & & & & & & & \\ \hline
TC-10 & & & & & & & \\ \hline
TC-11 & & & & & & & \\ \hline
\caption{Testfälle}
\end{longtable}
%% -- end test case table --
\end{landscape}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "main"
%%% End: