[TASK] Safe Quality
This commit is contained in:
parent
146b61fb5d
commit
318f25ae2b
Binary file not shown.
Before Width: | Height: | Size: 197 KiB After Width: | Height: | Size: 169 KiB |
|
@ -1,7 +1,7 @@
|
||||||
\section{Definition der Anforderungen}
|
\section{Definition der Anforderungen}
|
||||||
\label{sec: Definition der Anforderungen}
|
\label{sec: Definition der Anforderungen}
|
||||||
|
|
||||||
Der Microservice Warenwirtschaft dient der Verwaltung der Warenbestände für den Webshop Mosh. Er ermöglicht es zum Beispiel, neue Waren zu erfassen und verhindert den Verkauf von Waren, die sich nicht mehr im Warnbestand befinden. Die nachfolgende Tabelle \ref{tabl:Begriffe} definiert die hier verwendeten Begriffe, so wie sie in dem Code und innerhalb dieser Dokumentation genutzt werden.
|
Der Microservice Warenwirtschaft dient der Verwaltung der Warenbestände für den Webshop Mosh. Er ermöglicht es zum Beispiel, neue Waren zu erfassen und verhindert den Verkauf von Waren, die sich nicht mehr im Warenbestand befinden. Die nachfolgende Tabelle \ref{tabl:Begriffe} definiert die hier verwendeten Begriffe, so wie sie in dem Code und innerhalb dieser Dokumentation genutzt werden.
|
||||||
\begin{table}[H]
|
\begin{table}[H]
|
||||||
\begin{small}
|
\begin{small}
|
||||||
\begin{center}
|
\begin{center}
|
||||||
|
@ -23,7 +23,7 @@ Der Microservice Warenwirtschaft dient der Verwaltung der Warenbestände für de
|
||||||
\end{small}
|
\end{small}
|
||||||
\end{table}
|
\end{table}
|
||||||
|
|
||||||
Die übergeordnete Aufgabe dieses Microservice ist die Speicherung der Waren mit ihrem Lagerort sowie einem Ablaufdatum, wann sie ablaufen. Nachfolgend sind die weiteren, detaillierten Anforderungen an diesen Microservice zusammengefasst.
|
Die übergeordnete Aufgabe dieses Microservice ist die Speicherung der Waren mit ihrem Lagerort sowie einem Ablaufdatum, da es sich bei Obst und Gemüse um verderbliche Waren handelt. Nachfolgend sind die weiteren, detaillierten Anforderungen an diesen Microservice zusammengefasst.
|
||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \textbf{Funktionen des Admin-Frontends}
|
\item \textbf{Funktionen des Admin-Frontends}
|
||||||
|
@ -32,7 +32,7 @@ Die übergeordnete Aufgabe dieses Microservice ist die Speicherung der Waren mit
|
||||||
\item Manuelles Entfernen von Waren aus dem Warenbestand, zum Beispiel wenn diese verdorben sind
|
\item Manuelles Entfernen von Waren aus dem Warenbestand, zum Beispiel wenn diese verdorben sind
|
||||||
\item Entfernen von einzelnen Waren aus dem Warenbestand, wenn diese an einen Kunden versendet werden
|
\item Entfernen von einzelnen Waren aus dem Warenbestand, wenn diese an einen Kunden versendet werden
|
||||||
\item Blockieren von Waren in dem Warenbestand, wenn ein Kunde sie in seinen Warenkorb gelegt hat
|
\item Blockieren von Waren in dem Warenbestand, wenn ein Kunde sie in seinen Warenkorb gelegt hat
|
||||||
\item Automatische Freigaben von blockierten Waren, wenn diese nach 30 Minuten nicht an den Versand überstellt wurden
|
\item Automatische Freigaben von blockierten Waren, wenn diese nicht an den Versand überstellt wurden
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\item \textbf{Funktionen des Kunden-Frontends}
|
\item \textbf{Funktionen des Kunden-Frontends}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
|
@ -2,5 +2,5 @@
|
||||||
\label{sec: Dokumentationsstruktur}
|
\label{sec: Dokumentationsstruktur}
|
||||||
|
|
||||||
Für die Dokumentation des Microservice Warenwirtschaft wurden eine Kombination aus drei Dokumenten gewählt. Zum einen beschreibt ein bebildertes Handout auf einer Seite die Funktionen des Admin-Frontends für den Benutzer. Diese sehr kurze Dokumentenform wurde gewählt, da Benutzer häufig nicht gewillt sind, umfangreiche Anleitungen zu lesen um eine Anwendung nutzen zu können. Vielmehr wollen sie schnell einen Überblick der Kernfunktionalitäten erhalten. Aus diesem Grund wurde auch auf eine Benutzerdokumentation für die Kunden verzichtet, da angenommen wird dass die Darstellung der Produktverfügbarkeit als Ampel selbsterklärend ist.\par
|
Für die Dokumentation des Microservice Warenwirtschaft wurden eine Kombination aus drei Dokumenten gewählt. Zum einen beschreibt ein bebildertes Handout auf einer Seite die Funktionen des Admin-Frontends für den Benutzer. Diese sehr kurze Dokumentenform wurde gewählt, da Benutzer häufig nicht gewillt sind, umfangreiche Anleitungen zu lesen um eine Anwendung nutzen zu können. Vielmehr wollen sie schnell einen Überblick der Kernfunktionalitäten erhalten. Aus diesem Grund wurde auch auf eine Benutzerdokumentation für die Kunden verzichtet, da angenommen wird dass die Darstellung der Produktverfügbarkeit als Ampel selbsterklärend ist.\par
|
||||||
Auf der anderen Seite muss der Microservie auch für Entwickler dokumentiert sein, hierfür wurde diese Dokumentation angelegt. Sie beginn anstelle eines Abstract mit einem Steckbrief des Microservice, der dessen grundlegende Struktur und Funktionalität kurz beschreibt. Das eigentliche Dokument beschreibt zunächst die Anforderungen an den Microservice, da Entwicklung sich an diesen primär orientiert. Weiter werden der Microservice mit seinem Aufbau, den Schnittstellen und der Anpassung des gegebenen Monolithen sowie Implementierungsregeln beschrieben. Dieses Dokument schließt mit einem \textit{Getting Started} Guide. Auf Details wir ein Abkürzungs- oder Literaturverzeichnis wurde in dieser Dokumention bewusst verzichtet, um sie kurz zu halten. Zitate und Verweise werden hier in Form von Fußnoten integriert.\par
|
Auf der anderen Seite muss der Microservice auch für die Entwickler dokumentiert sein, hierfür wurde diese Dokumentation angelegt. Sie beginn anstelle eines Abstract mit einem Steckbrief des Microservice, der dessen grundlegende Struktur und Funktionalität kurz beschreibt. Das eigentliche Dokument beschreibt zunächst die Anforderungen an den Microservice, da die Entwicklung sich primär an diesen orientiert. Weiter werden der Microservice mit seinem Aufbau, den Schnittstellen und der Anpassung des gegebenen Monolithen sowie Implementierungsregeln beschrieben. Dieses Dokument schließt mit einem \textit{Getting Started} Guide. Auf Details wir ein Abkürzungs- oder Literaturverzeichnis wurde in dieser Dokumention bewusst verzichtet, um sie kurz zu halten. Zitate und Verweise werden hier in Form von Fußnoten integriert.\par
|
||||||
Abschließend dokumentiert das Testprotkoll -- als drittes Dokument -- die für diesen Microservice angewendet Black-Box-Testfälle - das heißt jene Tests die anhand der Anforderungen und aus Sicht des Benutzer durchgeführt wurden.
|
Abschließend dokumentiert das Testprotokoll -- als drittes Dokument -- die für diesen Microservice angewendeten Black-Box-Testfälle - das heißt jene Tests die anhand der Anforderungen und aus Sicht des Benutzer durchgeführt wurden.
|
|
@ -1,6 +1,6 @@
|
||||||
\section{Architektur des Microservice}
|
\section{Architektur des Microservice}
|
||||||
\label{sec: Architektur des Microservice}
|
\label{sec: Architektur des Microservice}
|
||||||
Der Microservice Warenwirtschaft wurde in der Programmiersprache Go\footnote{https:\//golang.org\/doc\/} entwickelt. Go-An-wendungen bestehen aus Packages, in denen die einzelnen Go-Files organisiert sind, Klassen im Sinne der Objektorientierung gibt es nicht. Der Microservice Warenwirtschaft setzt sich aus den neun Packages zusammen, die die Abbildung \ref{pic:Struktur des Microservice} dargestellt. In den nachfolgenden Unterkapiteln \ref{subsec: Presentation Layer} und \ref{subsec: Application Layer} werden die Packages und die darin enthaltenen Go-Files des Presentation sowie des Application Layers kurz vorgestellt. Go-Files mit der Bezeichnung \texttt{<<Name>>\_test.go} beinhalten Whitebox-Testfälle um die Funktionen der benannten Go-Files zu prüfen. Aus Gründen der Übersichtlichkeit werden diese Files hier nicht explizit aufgeführt. Die weiteren Unterkapitel beschreiben die Schnittstellen, den Persistant Layer sowie das Admin-Frontend und schließlich die Anpassung des Monolithen, um den Microservice Warenwirtschaft in diesen zu integrieren.
|
Der Microservice Warenwirtschaft wurde in der Programmiersprache Go\footnote{https:\//golang.org\/doc\/} entwickelt. Go-An-wendungen bestehen aus Packages, in denen die einzelnen Go-Files organisiert sind, Klassen im Sinne der Objektorientierung gibt es nicht. Der Microservice Warenwirtschaft setzt sich aus den neun Packages zusammen, die die Abbildung \ref{pic:Struktur des Microservice} darstellt. In den nachfolgenden Unterkapiteln \ref{subsec: Presentation Layer} und \ref{subsec: Application Layer} werden die Packages und die darin enthaltenen Go-Files des Presentation sowie des Application Layers kurz vorgestellt. Go-Files mit der Bezeichnung \texttt{<<Name>>\_test.go} beinhalten Whitebox-Testfälle um die Funktionen der benannten Go-Files zu prüfen. Aus Gründen der Übersichtlichkeit werden diese Files hier nicht explizit aufgeführt. Die weiteren Unterkapitel beschreiben die Schnittstellen, den Persistant Layer sowie das Admin-Frontend und schließlich die Anpassung des Monolithen, um den Microservice Warenwirtschaft in diesen zu integrieren.
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
|
@ -12,9 +12,9 @@ Der Microservice Warenwirtschaft wurde in der Programmiersprache Go\footnote{htt
|
||||||
\newpage
|
\newpage
|
||||||
\subsection{Schnittstellen zu anderen Microservices}
|
\subsection{Schnittstellen zu anderen Microservices}
|
||||||
\label{subsec: Schnittstellen zu anderen Microservices}
|
\label{subsec: Schnittstellen zu anderen Microservices}
|
||||||
Der Microservice Warenwirtschaft weißt drei Schnittstellen\footnote{Da es nicht Teil der übergeordneten Aufgabenstellung war, die Microservices der einzelnen Projektgruppen zu einem lauffähigen Webshop zusammenzufügen, greift der Microservice Warenwirtschaft an diesen Stellen auf Testdaten zurück} zu anderen Microservices auf. Zunächst greift der Microservice Warenwirtschaft für die Authentifizierung der Benutzer des Admin-Frontends vollständig auf einen Microservice Benutzerauthentifizierung zurück. Anstelle einer Login-Maske weißt das Admin-Frontend deshalb bisher nur einen Icon in Form eines Schlosses auf. Dieser symbolisiert, ob ein Benutzer die passende Berechtigung für das Admin-Front besitzt (Schloss geschlossen) oder nicht (Schloss geöffnet). \par
|
Der Microservice Warenwirtschaft weißt drei Schnittstellen\footnote{Da es nicht Teil der übergeordneten Aufgabenstellung war, die Microservices der einzelnen Projektgruppen zu einem lauffähigen Webshop zusammenzufügen, greift der Microservice Warenwirtschaft an diesen Stellen auf Testdaten zurück} zu anderen Microservices auf. Zunächst greift der Microservice Warenwirtschaft für die Authentifizierung der Benutzer des Admin-Frontends vollständig auf einen Microservice Benutzerauthentifizierung zurück. Anstelle einer Login-Maske weißt das Admin-Frontend deshalb nur einen Icon in Form eines Schlosses auf. Dieser symbolisiert, ob ein Benutzer die passende Berechtigung für das Admin-Front besitzt (Schloss geschlossen) oder nicht (Schloss geöffnet). \par
|
||||||
Weiter benötigt der Microservice Warenwirtschaft Informationen darüber, ob ein Benutzer eine Ware in den Warenkorb gelegt hat und ob eine Bestellung abgeschlossen wurde. So können Waren im Warenkorb für die Bestellung durch andere Benutzer blockiert und die erfolgreich bestellten Waren aus dem Warenbestand gelöscht werden. Diese Funktionalitäten geben eine eine Schnittstelle zu dem Microservice Bestellung vor. \par
|
Weiter benötigt der Microservice Warenwirtschaft Informationen darüber, ob ein Benutzer eine Ware in den Warenkorb gelegt hat und ob eine Bestellung abgeschlossen wurde. So können Waren im Warenkorb für die Bestellung durch andere Benutzer blockiert und die erfolgreich bestellten Waren aus dem Warenbestand gelöscht werden. Diese Funktionalitäten setzen eine Schnittstelle zu dem Microservice Bestellung voraus. \par
|
||||||
Die dritte Schnittstelle besteht zu dem Microservice Produktkatalog, von welchem die Warenwirtschaft die angebotenen Produkte -- die sich dementsprechend im Lager befinden können -- abfragt. Die drei nachfolgenden Listings zeigen die Daten, die von den Microservices Produktkatalog und Bestellung im JSON-Format erwartet, beziehungsweise an diese ausgegeben werden.
|
Die dritte Schnittstelle besteht zu dem Microservice Produktkatalog, von welchem die Warenwirtschaft die angebotenen Produkte -- die sich dementsprechend im Lager befinden können -- abfragt. Das nachfolgende Listings zeigt die Daten, die von dem Microservices Produktkatalog im JSON-Format erwartet werden.
|
||||||
|
|
||||||
\begin{lstlisting}[caption=Datenabfrage aus dem Produktkatalog]
|
\begin{lstlisting}[caption=Datenabfrage aus dem Produktkatalog]
|
||||||
{
|
{
|
||||||
|
@ -24,28 +24,11 @@ Die dritte Schnittstelle besteht zu dem Microservice Produktkatalog, von welchem
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
|
|
||||||
\begin{lstlisting}[caption=Datenabfrage von der Bestellung (Waren im Warenkorb abgelegt)]
|
|
||||||
{
|
|
||||||
"id": <<Int>>,
|
|
||||||
"amount": <<Int>>
|
|
||||||
}
|
|
||||||
\end{lstlisting}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\begin{lstlisting}[caption=Datenabfrage von der Bestellung (Waren wurden bestellt)]
|
|
||||||
{
|
|
||||||
"id": <<Int>>,
|
|
||||||
"amount": <<Int>>
|
|
||||||
}
|
|
||||||
\end{lstlisting}
|
|
||||||
|
|
||||||
|
|
||||||
\newpage
|
\newpage
|
||||||
\subsection{Presentation Layer -- Admin-Frontend}
|
\subsection{Presentation Layer -- Admin-Frontend}
|
||||||
\label{subsec: Presentation Layer}
|
\label{subsec: Presentation Layer}
|
||||||
Der Presentation Layer umfasst alle Packages, die sich mit der eigentlichen Darstellung der Warenwirtschaft aus der Sicht des Endbenutzers befassen. Im Detail ist dies das Package \textbf{\texttt{webroot}}, welches den statischen Inhalt der Frontends, wie zum Beispiel die HTML-Files und Bilder enthält. \par
|
Der Presentation Layer umfasst alle Packages, die sich mit der eigentlichen Darstellung der Warenwirtschaft aus der Sicht des Endbenutzers befassen. Im Detail ist dies das Package \textbf{\texttt{webroot}}, welches den statischen Inhalt der Frontends, wie zum Beispiel die HTML-Files und Bilder enthält. \par
|
||||||
Die Startseite \textit{List} des Admin-Frontends zeigt eine Übersicht aller vorhandenen Produkte mit ihrer Anzahl an Waren (Abbildung \ref{pic:Admin-Frontend -- List}). Letztere wird mit einem Ampelsystem dargestellt, wobei ein vollkommen rot gefärbter Kreis einem Warenbestand von null entspricht und der Kreis mit zunehmender Anzahl an Waren immer mehr grün eingefärbt wird. Zu jedem Produkt können über den, mit einem Plus, gekennzeichneten Button Waren hinzugefügt werden. Ein Klick auf das jeweilige Produkt führt zu dessen Produktseite. \par
|
Die Startseite \textit{List} des Admin-Frontends zeigt eine Übersicht aller vorhandenen Produkte mit ihrer Anzahl an Waren (Abbildung \ref{pic:Admin-Frontend -- Produktseite}). Letztere wird mit einem Ampelsystem dargestellt, wobei ein vollkommen rot gefärbter Kreis einem Warenbestand von null entspricht und der Kreis mit zunehmender Anzahl an Waren immer mehr grün eingefärbt wird. Zu jedem Produkt können über den, mit einem Plus, gekennzeichneten Button Waren hinzugefügt werden. Ein Klick auf das jeweilige Produkt führt zu dessen Produktseite. \par
|
||||||
Die Produktseiten führen die ID, die Gesamtanzahl an Waren sowie die einzelnen Waren auf (Abbildung \ref{pic:Admin-Frontend -- Produktseite}). Diese können jeweils über den Icon in Form eines Mülleimers manuell gelöscht werden. Auch auf den Produktseiten sind über einen, mit einem Plus gekennzeichneten, Button neue Waren hinzufügbar. Beim Hinzufügen von neuen Waren sind für diese ein Ablaufdatum, eine Lagerposition sowie ein Kommentar und die Anzahl anzugeben (Abbildung \ref{pic:Admin-Frontend -- Hinzufuegen von Waren}). Die Seite \textit{Statistics} gibt letztendlich einen Überblick der gesamten und der durchschnittlichen Waren im Warenbestand.
|
Die Produktseiten führen die ID, die Gesamtanzahl an Waren sowie die einzelnen Waren auf (Abbildung \ref{pic:Admin-Frontend -- Produktseite}). Diese können jeweils über den Icon in Form eines Mülleimers manuell gelöscht werden. Auch auf den Produktseiten sind über einen, mit einem Plus gekennzeichneten, Button neue Waren hinzufügbar. Beim Hinzufügen von neuen Waren sind für diese ein Ablaufdatum, eine Lagerposition sowie ein Kommentar und die Anzahl anzugeben (Abbildung \ref{pic:Admin-Frontend -- Hinzufuegen von Waren}). Die Seite \textit{Statistics} gibt letztendlich einen Überblick der gesamten und der durchschnittlichen Waren im Warenbestand.
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
|
@ -143,7 +126,7 @@ Neben den bisherigen Packages, die bereits Whitebox-Tests umfassen, ist in dem P
|
||||||
|
|
||||||
\subsection{Anpassung des Monolithen}
|
\subsection{Anpassung des Monolithen}
|
||||||
\label{subsec: Anpassung des Monolithen}
|
\label{subsec: Anpassung des Monolithen}
|
||||||
Damit der Microservice Warenwirtschaft durch den bestehenden Monolithen des Webshops Mosh genutzt werden kann, wurden hier dir nachfolgend aufgeführten Änderungen vorgenommen. Zunächst wurde für den Aufruf des Admin-Frontends über die URL des Monolithen \texttt{/stockadmin} das nachfolgende Mapping in der Java-Datei \texttt{HomepageController.java} ergänzt.
|
Damit der Microservice Warenwirtschaft durch den bestehenden Monolithen des Webshops Mosh genutzt werden kann, wurden hier die nachfolgend aufgeführten Änderungen vorgenommen. Zunächst wurde für den Aufruf des Admin-Frontends über die URL des Monolithen \texttt{/stockadmin} das nachfolgende Mapping in der Java-Datei \texttt{HomepageController.java} ergänzt.
|
||||||
|
|
||||||
\begin{lstlisting}[caption=Anpassung in HomepageController.java, language=Java]
|
\begin{lstlisting}[caption=Anpassung in HomepageController.java, language=Java]
|
||||||
private final String STOCKADMINFRONTENDTEMPLATE = "https://stock.pub.warehost.de/index.html";
|
private final String STOCKADMINFRONTENDTEMPLATE = "https://stock.pub.warehost.de/index.html";
|
||||||
|
|
Reference in New Issue