Die Webtech Case Study im dritten Semester der Ausbildung zum Dipl. Techniker IT befasst sich mit den Technologien HTML, PHP und SQL aus den Fächern Webtechnologie und Datenbanken.
Die Zielsetzung ist vom Fachgruppenleiter dokumentiert und wird gemäss diesem umgesetzt.
\item Firmen (Nachfrager), welche Teile zur Herstellung Ihrer Produkte benötigen (Schrauben, Muttern, Nieten...) können diese auf unserer Plattform erfassen.
\item Erfasst werden dabei die genaue Bezeichnung, die benötigte Menge und Qualität und der gewünschte Lieferzeitpunkt.
\item Anbieter solcher Teile können nun nach gewissen Teilen suchen (z.B. sucht jemand Schrauben des Typ II-C ?)
\item Findet der Anbieter einen Eintrag, so kann er, anonymisiert, ein Angebot hinterlegen (ich biete Schraube II-C zu 12 Fr. per 100 Stück an)
\item Die Nachfrager können anschliessend alle Angebote, welche zu einem bestimmten Teil abgegeben worden sind, auflisten und das Ihnen passende auswählen.
Prashath Harayanamoorthy wird die Aufgabe des SCRUM Masters übernehmen, während sich Ivan Hörler als Developer integriert und Alessio Ciullo die Sprint Reviews übernimmt. \\
Dabei wurde die Daily- auf Weeklymeetings ausgedehnt, um den Ansprüchen der Aufgabe und der nebenberuflichen Erledigung der Case Study gerecht zu werden.\\
Die Dokumentation wird jeweils aktuell mitgeführt und über die gleiche Versioning Software verteilt wie der Code. Geschrieben wird in Latex, um die Mitarbeit aller direkt über commits ins ''Git'' Repository sicherzustellen. Programmiert wird ausschliesslich in HTML, PHP und MYSQL Sprache.\\
Der SCRUM Master erstellt die zu erledigenden Arbeitspakete (nachfollgend ''AP'' genannt), dazu das Usecase Diagramm und die User Storys und übergibt diese dem Developer der den Sprint damit beginnt. Durch den Revisor wird die jeweilige Itteration beglaubigt, bevor zum nächsten AP übergegangen wird.
Die Platform ist anonym. Die BusinessStreamline speichert keine Daten die auf die wahre Identität des Benutzers hinweist. Die Nutzung ist freiwillig und basiert auf einer Hohlschuld.
Die BusinessStreamline als B2B Partner verfolgt das Ziel Anbieter und Nachfrager zu verbinden und kommerziellen Handel über die Platform anonym abzuwickeln.
\textsc{Als }\textsc{\texttt{<Benutzerrolle> }}\textsc{will ich }\textsc{\texttt{<das Ziel>, }}\textsc{so dass }\textsc{\texttt{<Grund für das Ziel>.}}
- Das XML Fileformat erlaubt das Speichern und abrufen von Datensätzen anhand von DOM Objekten. Da das angestrebte Ausgabeformat ein XML File ist, kann die Speicherung aller Datensätze auch in XML Nodes geschehen.\\[1em]
- MYSQL Datenbanken sind opensource Datenbanken, die einfache und standardisierte Abfragen und Speicherungen über bestehende und in PHP integrierte Schnittstellen erlauben.\\[1em]
Die Software-Architektur der eingelogten Benutzerseiten ist auch Seitenorientiert. Das bedeutet, dass jede Seite die aufgerufen wird, komplett geladen wird, einen eigenen header/body hat und nur die Navigation verschachtelt eingefügt wird.\\
Die Gruppe hat sich entschieden, das Projekt auf Basis einer MySQL Datenbank mit PHP zu erstellen. Da ein Hoster über ein Team-Mitglied zur Verfügung stand.
Nachdem wir einige Tutorials durchgearbeitet hatten, fanden wir mit codeingcage \cite{ref1} ein Tutorial, das die Abläufe genügend einfach gestaltet hatte, so dass wir auch in der Lage waren, es zu verstehen, verändern und unseren Bedürfnissen anzupassen.
Wir haben es zuerst nach dem vorgezeigten Schema erstellt und dann gemerkt, dass wir die E-Mail Adresse als Login Feld eher als lästig empfinden.
Also machten wir uns an die Arbeit, um den Login nach User-Namen umzukrempeln und entfernten alle E-Mail Felder und Variablen auch aus der Datenbank.
Als spass fügten wir noch ein Bild ein und entfernten alle bootstrap CSS Klassen und ersetzten sie mit unseren aus dem lokalen style.css
File um das ganze auch schön aussehen zu lassen ohne externe Abhängigkeiten.
Um die Datenbankeinträge gemäss RM erstellen zu können wurde als erstes das .sql File zur Erstellung der Datenbank erstellt.
Danach wurden von Hand drei Einträge gemacht, um die Abfrage testen zu können. Da der Unterricht die SQL-Querrys noch nicht abgedeckt hatte, schob der Dozent eine kurze Einführung samt Beispiel ein, was als Vorlage für die weitere Arbeit diente.
Zudem entnahm ich dem youtube Video \cite{ref2} wichtige Informationen zum Vorgehen mit PDO.
Um die Darstellung zu gliedern, wurde die Abfrage in HTML Tabellen integriert. Das Eintragsdatum musste von YYYY-MM-DD-hh-mm gekürzt werden und wird nun als Datum ohne Zeitangabe dargestellt.
Die Eintrags Erfassung wird mit dem gleichen Vorgehen gemacht und fängt Fehler wie leergelassene Felder oder zu kurze Beschreibungen ab.
Die Selektion von einem Eintrag gestaltete sich schwierig. Nachdem die erste Idee mit onclick auf der Tabellenzeile nicht funktionierte, weil das Thema JavaSkript noch nicht angeschnitten wurde und mir nicht klar war, wie es umzusetzen ist, wurde auf einen einfachen Link zurückgegriffen und per ''GET'' Befehl die ID der Zeile übermittelt. Im Formular des Angebots wird zuerst geprüft, ob das Angebot nicht vom eingelogten Nutzer stammt und falls doch, eine Meldung platziert, damit keine Angebote auf eigene Nachfragen gemacht werden können.
Ein Nutzer, der die Nachfrage nicht erstellt hat, kann per ''POST'' befehl ein Angebot abgeben, das in der ''Anbieter'' Tabelle gespeichert wird. Vorgängig werden leere Übermittlungen und Angebote mit über 9 Ziffern abgefangen und Fehlermeldungen platziert.
Der Ersteller einer Nachfrage muss nun noch ein Interface zur Akzeptierung eines Angebots erhalten, das dann die Bestellung auslösen wird. Da die erforderlichen Werte für die Auflistung der Einträge aus zwei Tabellen kommen musste ein Join der Tabellen erarbeitet werden.
Durch IF/ELSE abfragen wird ermittelt, ob für eine Nachfrage schone ein Angebot erstellt wurde und in dem Falle der Download Button für das geforderte XML angezeigt, oder dann k.A. für kein Angebot angezeigt.
Da XML eine eigene Skript art ist, mussten wir uns erst damit auseinandersetzen. Gut gibts dazu mehrere Tutorials. Als wir dann mit dem Umsetzen der Aufgaben anfingen, hatten wir schon einige fertig erstellte Skripts gefunden, die diese Aufgabe automatisch durch Zuweisung der Tabellenspaltennamen erstellen. Jedoch waren alle für mehrere Tabellen-Zeilen ausgelegt und wir mussten diese dann an die Gegebenheit, dass nur für ein Teil (und damit eine Zeile) iteriert wird, anpassen. Die beste Dokumentation fanden wir unter \cite{ref3} http://php.net/manual/en/book.dom.php, welche mit einer Beschreibung auf Stackexchange zusammenpasste und uns so eine Grundlage zur Erstellung bot. \cite{ref4}.
Diese Problemstellung haben wir komplett unterschätzt. Die Art und Programmierung für den Trigger eines Downloads mit PHP ist kompliziert. Durch Ausprobieren und der Kombination von verschiedenen Lösungen aus dem Internet, konnte es dann bewerkstelligt werden. \cite{ref5}
Das Testen der Funktionen wurde auf Basis der Use-Case Diagramme durchgeführt. Dabei stellt jeder Usecase ein Testszenario dar. Diese Testszenarien wurden aufbauend auf der agilen Entwicklung jeweils am Ende des Sprints als Revision angehängt und genau so wie das Diagramm es darstellt für den jeweiligen Benutzertypen durchgespielt.
Bei Falschinterpretationen oder Fehlern in der Programmierung wurde bilateral darauf eingegangen und das Problem durch eine Iteration behoben.
Zu den einzelnen Fehlern die behoben werden mussten, findet man das Protokoll in der Abweichungsanalyse \ref{subsec:Abweichungsanalyse}
\item Das Login ist mit einer separaten dbconfig.php angebunden, da zu dem Zeitpunkt die Vererbung und deren Anwendung noch nicht im Unterricht thematisiert wurde, konnte damit nicht weiter gearbeitet werden.
\item Die Angebotsabgabetaste sollte gemäss Planung auf der gleichen Seite wie die Nachfragen stehen. Das konnte aufgrund fehlender Kenntnisse nicht so gelöst werden. Der Einfachheit halber wurde dazu eine neue Seite erstellt. Das eigentliche Problem war, dass der benötigte Schulstoff zu dem Zeitpunkt nicht behandelt war, als wir diesen Sprint abhandelten.
\item Insgesamt hatten wir zu wenig Zeit eingerechnet. Dies auch deshalb, weil der nötige schulische Hintergrund noch fehlte. \\ Der Umstand, dass die Arbeit dem Schulstoff immer um ca. 4 Wochen vorauseilte und die nötigen Informationen im Netz recherchiert werden mussten, erschwerte das Zusammenarbeiten und die Arbeit enorm. \\ Das Zusammenarbeiten insofern, dass nie jedes Mitglied der Gruppe auf dem selben Stand war und die Arbeit weil der Schulstoff oft nachträglich Fragen beantwortete, die wir uns über das Netz nicht beantworten konnten, und dadurch den Arbeitspunkt im Nachhinein nochmals überarbeiten mussten. Das generierte einen erheblichen Mehraufwand, der nicht nötig gewesen wäre.