\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. \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» definiert. \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 fügte wir danach eine «TextBox» ein. Damit wird sobald die gesuchten Daten aufgeführt werden, die Informationen aufgerufen und in der «ListBox» angezeigt. \subsubsection{Datenverarbeitung} Um die benötigten Daten hinzuzufügen, erstellten wir eine neue Klasse, die wir «cities» nannten und haben die Struktur dieser Tabelle aus der Datenbank abgebildet. In der Klasse « dataaccess» bauten wir eine Methode auf, mit der wir die Daten als Liste als neue 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: