diff --git a/django/didgeridoo/webshop/templates/webshop/cart.html b/django/didgeridoo/webshop/templates/webshop/cart.html
index f522331..83c69e0 100644
--- a/django/didgeridoo/webshop/templates/webshop/cart.html
+++ b/django/didgeridoo/webshop/templates/webshop/cart.html
@@ -35,12 +35,12 @@
{{ article.article.price_in_chf }}
{{ currency_name }}
-
{{ article.position_price }} |
+ {{ article.position_price }} {{ currency_name }} |
{% endfor %}
- Total: {{ total }}
+ Total: {{ total }} {{ currency_name }}
|
diff --git a/docs/doku.org b/docs/doku.org
index 761e645..11a5c52 100644
--- a/docs/doku.org
+++ b/docs/doku.org
@@ -9,16 +9,12 @@
#+STARTUP: align
-* TODO Über dieses Dokument
+* Über dieses Dokument
Im nachfolgenden Abschnitt finden Sie allgemeine Informationen zu
diesem Dokument.
-** TODO Titel der Dokumentation
-
-- Note taken on [2018-01-03 Mit 16:30] \\
- Müssen wir wohl überarbeiten da wir mal angedacht haben das ein
- Musikinstrumene-Shop allenfalls einfacher ist.
+** Titel der Dokumentation
Die Gruppe hat verschiedene Varianten gelistet und sich für die
lustigste entschieden.
@@ -85,201 +81,7 @@ nach Prioritäten gewichtet.
| 7. | Die Punkte der Bewertung werden erfüllt. | Hoch |
|-------+--------------------------------------------------------------------+----------------------|
-** Mittel und Methoden
-*** Werkzeuge
-
-Während dem Erstellen dieser Arbeit wurde eine Vielzahl an Werkzeugen
-eingesetzt. Nachfolgend werden diese Werkzeuge kurz beschrieben sowie
-ihre Verwendung begründet. Wir haben dabei darauf geachtet soviel Open
-Source Software wie möglich zu verwenden. Nicht nur für den Web-Shop an
-sich sondern generell für alle Tasks im Projekt.
-
-**** Versionkontrolle
-
-Eine Versionskontrollsoftware erschien uns als notwendig um den Code
-auf einfache und zuverlässige Weise untereinander austauschen zu
-können. Andere Lösungen wie Dropbox, etc. hätten es uns nicht erlaubt
-Konflikte zu vermeinden.
-
-Als Software für die Versionskontrolle wurde Git \footcite{git} gewählt.
-Git wurde aus diversen Gründen gewählt:
-
-- Ist der de facto Standard bei Versionskontrollsoftware
-- Läuft auf allen gängigen Betriebsystemen
-- Es gäbe gratis Services die man nutzen könnte (Github, Gitlab)
-- Man kann offline arbeiten und Commits erstellen
-- Das Team hat bereits einen eigenen Git Server zur Verfügung
-- Das Team ist bereits mit Git aus vorhergehenden Projekten vertraut
- dadurch muss man keine Ressourcen aufwenden eine neue Software zu lernen.
- Zusätzlich hat sich Git in den vorhergehenden Projekten als robuste
- und schnelle Software erwiesen.
-- Git ist freie Software unter GNU Public License v2.
-
-**** Entwicklungsumgebung
-
-Damit beide Studenten auf der gleichen Basis arbeiten haben wir uns
-dazu entschieden den Web-Shop in einer virtuellen Maschine zu
-entwickeln. Dies führt jedoch in der Regel zum Problem das die
-Änderungen in der virtuellen Maschine miteinander abgesprochen und
-ausgetauscht werden müssen. Um dieses Problem zu beheben haben wir uns
-dazu entschieden Vagrant\footcite{vagrant} zu verwenden.
-Vagrant ist freie Software unter der MIT Lizenz.
-
-Vagrant erlaubt es einem den Zustand einer virtuellen Maschine in
-einer Text Datei zu beschreiben und diese dann gemäss der Beschreibung
-automatisiert aufzusetzen. Dies hat den Vorteil das die Konfiguration
-der virtuellen Maschine auch ohne weiteres mit dem restlichen Code in
-der Versionskontrollsoftware gepflegt werden kann.
-
-Desweiteren hilft das automatisierte Aufsetzen das vermeiden von
-menschlichen Fehlern. Somit kann davon ausgegangen werden dass, das
-System in der virtuellen Maschine immer den korrekten Stand zum
-entwickeln sein. Sollte dies nicht mehr der Fall sein lässt sich die
-virtuelle Maschine mit einem maxmimal zwei Befehlen wieder in den
-Ursprungszustand zurücksetzen.
-
-Als Hypervisor der virtuellen Maschine wurde
-Virtualbox\footcite{virtualbox} eingesetzt. Virtualbox ist im Kern
-freie Software unter der GNU Public License v2. Das unter einer
-proprietären Lizenz erhältliche Erweiterungspacket ist für unser Setup
-nicht notwendig.
-
-**** Hostsystem
-
-Als Hostsystem für unseren Web-Shop haben wir uns für die Linux
-Distribution Debian\footcite{debian} in der Version 9 (Stretch)
-entschieden. Für Debian haben wir uns vor allem aus folgenden Gründen
-entschieden:
-
-- Stabiles System
-- Sehr guter Packetmanager was einem das Scripting vereinfacht.
-- Gilt als sehr sicher
-- Hat sich in vorhergehenden Projekten bereits als gute Basis bewiesen
-- Enthält in der Grundkonfiguration nur freie Software (nicht freie
- Software muss aktiv hinzugefügt werden)
-- In der Linux Welt sehr verbreitet
-- Im Gegensatz zu Ubuntu nicht von einer Firma abhängig
-
-**** Deployment Software für Produktionsserver
-
-Auch auf dem produktiven Server haben wir uns für Debian entschieden.
-Um diesen aufzusetzen hatten wir in etwa die ähnlichen Anforderungen
-wie für die Entwicklungsumgebung. Also einen Weg um das System
-möglichst automatisch und reproduzierbar aufzusetzen. Die für die
-Entwicklungsumgebung verwendete Software Vagrant ist für produktive
-System allerdings eher weniger geeignet.
-
-Für solche Fälle bietet sich eine Software Namens
-"Ansible"\footcite{ansible} an. Diese bietet einem ähnlich wie Vagrant
-die Möglichkeit den Zustand eines Systems in Text Dateien zu
-beschreiben. Allerdings bietet einem Ansible noch zusätzliche
-Möglichkeiten und bietet einem ein standardisiertes Interface um
-unterschiedliche Systeme auf die selbe Weise zu konfigurieren.
-
-Der Vorteil gegenüber anderen System ist vorallem das Ansible mit sehr
-wenig Abhängigkeiten für das zu konfigurierende System daherkommt. Auf
-einem Linux System ist nur SSH Zugriff und Python notwendig. Einen
-Client braucht man nicht zu installieren.
-Ansible ist freie Software unter der GNU Public License v3.
-
-**** Framework
-
-Um die Entwicklung der Applikation zu vereinfachen haben wir uns dazu
-entschlossen ein Framework einzusetzen. Frameworks bringen einem in
-der Entwicklung diverse Vorteile. Unter anderem bieten sie Hilfen bei
-sich wiederholenden Programmieraufgaben und bieten je nachdem die
-Möglichkeit die Applikation in einer einzigen Sprache zu schreiben da
-sich das Framework auch um die Datenbank kümmert. In der
-Webentwicklung helfen sie einem insbesondere auch dabei
-Sicherheitslücken wie Cross Site Scripting und SQL Injections
-abzufangen.
-
-Wir haben uns dabei für das Framework Django\footcite{django}
-entschieden. Django ist ein Python basiertest Framework. Django ist
-freie Software unter der drei Klausen BSD Lizenz. Wir haben uns aus
-folgenden Gründen für ein Python basiertes Framework gegenüber einem
-PHP basierten Framework entschieden:
-
-- Python gilt als die Sprache mit der schöneren Syntax
-- Wir wollten im Bezug auf das Programmieren etwas neues ausprobieren
- was sich im Rahmen einer Case Study sehr gut machen lässt. Da man
- ein "realistisches" Szenarium erhält und dieses in einem relativ
- kontrollierten Rahmen ausführen kann.
-- Python ist in dem von uns gewählten Hostsystem wie in den meisten
- Linux Distributionen bereits integriert.
-
-Die verwendete Version war dabei 1.10.7-2 aus dem Debian Stretch Repository.
-
-**** Webserver
-
-Als Webserver verwenden wir ganz klassisch Apache\footcite{apache}.
-Dies vorallem aus dem Grund das wir Apache aus diversen vorhergehenden
-Projekten bereits sehr gut kennen und sich der Webserver dort sehr gut
-bewährt hat. Apache wird dabei auch noch gut von Django unterstützt.
-Der Apache Webserver ist freie Software unter der Apache License 2.0
-und gehört der gemeinnützigen Organisation "Apache Foundation".
-
-**** Datenbank
-
-Bei der Datenbank haben wir uns für MariaDB\footcite{mariadb}
-entschieden. Auch hier hauptsächlich weil wir MariaDB bereits aus
-vorhergehenden Projekt kennen. MariaDB ist ein Fork von MySQL welcher
-gegenüber MySQL rückwärtskompatibel ist. MariaDB ist dabei jedoch viel
-Community näher als MySQL und wird dabei auch sehr demokratisch
-entwickelt\footcite{mariadbgov}. MariaDB gehört dabei keiner einzelnen
-Firma oder Person sonder der gemeinnützigen Organisation "MariaDB
-Foundation". Was für zusätzliche Stabilität sorgen sollte.
-MariaDB ist freie Software unter GNU Public License v2.
-
-**** Editoren
-
-Das Hauptwerkzeug von jedem Entwickler ist sein Text Editor. Dabei
-hat jeder meistens seine ganz eigene Präferenzen wenn es um die Wahl
-des Editors geht.
-
-- Atom :: Ivan hat während der Case Study hauptsächlich mit
- Atom\footcite{atom} gearbeitet. Atom wird von Github Inc.
- entwickelt und basiert auf dem Electron Framework welches
- seinerseit auf Webtechnologien wie Node.js und Chromium
- basiert. Atom ist freie Software unter der MIT Lizenz.
-
-- GNU Emacs :: Andreas arbeitet hauptsächlich mit dem Editor GNU
- Emacs\footcite{emacs}. GNU Emacs ist mit 32 Jahren
- (obwohl seine Wurzeln bis ins Jahre 1976 zurückgehen)
- wohl eines der ältesten noch "aktiven" Software
- Projekte. Emacs ist freie Software unter der GNU Public
- License v3.
-
-**** Dokumentation
-
-Diese Dokumentation wurde in Org-mode\footcite{orgmode} einer
-Erweiterung für den Text Editor Emacs geschrieben. Anschliessend wurde
-die Dokumentation in LaTeX\footcite{latex} Code konvertiert und
-finalisiert. Der Zwischenschritt über Org-mode wurde gewählt weil
-Org-mode etwas einfacher zu schreiben ist als reines LaTeX.
-
-LaTeX ist eine Software welche einem die Benutzung des Textsatzsystems
-TeXs vereinfacht. Wir haben LaTeX gegenüber einem "What You See Is
-What You Get" Editor gewählt weil es einem mit seiner Markup Sprache
-erlaubt das Dokument in Text Dateien zu erstellen. Was wir als
-Programmierer sehr angenehm finden. Dadurch das LaTeX auch nur aus
-reinen Textdateien besteht kann man die Dokumente auch ohne weiteres
-in die Versionskontrollsoftware einchecken und somit auf einfache
-Weise zusammen daran arbeiten und die Entwicklung im Log
-zurückverfolgen kann.
-LaTeX ist freie Software unter der LaTeX Project Public License.
-
-Die Grafiken in diesem Dokument wurden hauptächlich mit dem Vektor
-Grafik Editor Inkscape\footcite{inkscape} erstellt. Inkscape ist freie
-Software unter der GNU Public License v3. Für das Entity Relation
-Diagramm in [[Models]] haben wir jedoch Dia\footcite{dia} verwendet. Dia
-ist freie Software unter der GNU Public License v2.
-
-Die Klassen Diagramme haben wir mit der Django Erweiterung
-"Django-Extensions"\footcite{django_extensions} erstellt.
-Django-Extensions ist freie Software unter der MIT Lizenz.
-
-*** Methoden
+** Methoden
Die Methodik die die Gruppe wählt ist Aufgrund der nur zwei Personen
im Team beschränkt. Da jedoch Fehler und Rückschläge erwartet werden
@@ -290,7 +92,7 @@ eingenommen und die Backlog-Tasks dementsprechend erstellt resp.
verteilt. Während der Woche arbeiten beide Team-Mitglieder an der
Arbeit als Team-Kolegen.
-*** Vorkenntnisse
+** Vorkenntnisse
Die benötigten Vorkenntnisse wurden in den vorangeganenen Semestern
erarbeitet und sind in der Basis gefestigt. Diese Arbeit wird
@@ -422,11 +224,347 @@ Am ende des Projekts die nicht lauffähigen teile ausgrenzen. :-)
* Projektmanagement
** Organigram
** Projektstrukturplan
-** Varianten erarbeiten
+** Varianten
+
+Wir haben uns 3 mögliche Varianten überlegt im Bezug auf die zu
+verwendende Software. Die Varianten wurden bewertet und die Variante
+mit den meisten Punkten dann schlussendlich ausgewählt.
+Bei jeder Variante wurden die gleichen Kriterien mit der gleichen
+Gewichtung bewertet. Die Punktzahl pro Kriterium wird nach der
+folgenden Formel berechnet:
+
+\begin{equation}
+G * EP = KE
+\end{equation}
+
+Also die Gewichtung(/G/) multipliziert mit der erreichten
+Punktzahl(/EP/) ergibt das Kriteriumsergebnis(/KE/).
+
+*** ASP.NET und SQL Server
+
+ASP.NET und SQL Server, Tabelle:([[tab:asp-net]]), haben vorallem viele
+Punkte verloren da C# nur in Teilen und SQL Server gar nicht unter
+einer freien Lizenz steht. Desweiteren läuft .NET Core zwar auch auf
+Unix Systemen allerdings ist das verhältnismässig ein relativ kleiner
+Teil der gesamten Sprache. SQL Server läuft hingegen nur unter Windows
+und Linux. Desweiteren ist es sehr schwierig C# Applikationen ohne
+Visual Studio zu entwickeln. Es geht in der Theorie, in der Praxis ist
+es jedoch eher umständlich. Die Vorkenntnisse wurden mit 6 von Punkten
+bewertet da wir C# zwar im Rahmen der Ausbildung lernen. Allerdings
+noch nicht das Gefühl haben sonderlich gut mit C# umgehen zu können.
+
+#+CAPTION: Bewertung der Variante ASP.NET und SQL Server
+#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
+#+NAME: tab:asp-net
+|----------------------+----------------------+----------------------+----------------------+----------------------|
+| <20> | <20> | <20> | <20> | <20> |
+| *Kriterium*\cellcolor[HTML]{C0C0C0} | *Gewichtung*\cellcolor[HTML]{C0C0C0} | *max. Punktzahl*\cellcolor[HTML]{C0C0C0} | *erreichte Punktzahl*\cellcolor[HTML]{C0C0C0} | *Kriteriums- ergebnis*\cellcolor[HTML]{C0C0C0} |
+|----------------------+----------------------+----------------------+----------------------+----------------------|
+| Freie Software | 5 | 10 | 5 | 25 |
+| Cross Plattform nutzbar | 5 | 10 | 6 | 30 |
+| Lesbarkeit des Codes | 5 | 5 | 4 | 20 |
+| Einfachheit des Setups | 3 | 5 | 5 | 15 |
+| Ohne spezielle Tools nutzbar | 3 | 5 | 1 | 3 |
+| Vorkenntnisse | 3 | 10 | 6 | 18 |
+| Lernfaktor | 5 | 10 | 6 | 30 |
+|----------------------+----------------------+----------------------+----------------------+----------------------|
+| *Total* | | | | 141 |
+#+TBLFM: @3$5=@3$2 * @3$4::@4$5=@4$2 * @4$4::@5$5=@5$2 * @5$4::@6$5=@6$2 * @6$4::@7$5=@7$2 * @7$4::@8$5=@8$2 * @8$4
+#+TBLFM: @9$5=@9$2 * @9$4
+#+TBLFM: @10$5=vsum(@3$5..@9$5)
+
+*** PHP und MySQL
+
+Die Variante PHP und MySQL, Tabelle:([[tab:php]]), hat insgesamt ein sehr
+gute Bewertung erhalten. Beide Projekte sind zumindest teilweise unter
+einer freien Lizenz verfügbar und sind sowohl unter Windows, wie auch
+Mac und Linux einsetzbar. Allerdings gibt es von MySQL noch eine
+proprietäre Enterprise Variante weshalb wir hier nicht die volle
+Punktzahl vergeben konnten. Abstriche gab es bei der Lesbarkeit des
+Codes. Da PHP insgesamt eine ziemlich inkonsistente und ausschweifende
+Sprache ist. Dafür ist das Setup sehr einfach und man kann eine PHP
+basierte Applikation ohne spezielle Werkzeuge entwickeln. Da wir
+jedoch bereits sehr intensiv mit PHP und MySQL in Berürung kamen haben
+wir beim Lernfaktor abstriche gemacht. In Zusammenhang mit einem
+Framework hätten wir sicher auch viel dazugelernt im Vergleich zu den
+anderen Varianten jedoch auf jeden Fall weniger.
+
+#+CAPTION: Bewertung der Variante PHP und MySQL
+#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
+#+NAME: tab:php
+|----------------------+----------------------+----------------------+----------------------+----------------------|
+| <20> | <20> | <20> | <20> | <20> |
+| *Kriterium*\cellcolor[HTML]{C0C0C0} | *Gewichtung*\cellcolor[HTML]{C0C0C0} | *max. Punktzahl*\cellcolor[HTML]{C0C0C0} | *erreichte Punktzahl*\cellcolor[HTML]{C0C0C0} | *Kriteriums- ergebnis*\cellcolor[HTML]{C0C0C0} |
+|----------------------+----------------------+----------------------+----------------------+----------------------|
+| Freie Software | 5 | 10 | 8 | 40 |
+| Cross Plattform nutzbar | 5 | 10 | 8 | 40 |
+| Lesbarkeit des Codes | 5 | 5 | 2 | 10 |
+| Einfachheit des Setups | 3 | 5 | 5 | 15 |
+| Ohne spezielle Tools nutzbar | 3 | 5 | 5 | 15 |
+| Vorkenntnisse | 3 | 10 | 7 | 21 |
+| Lernfaktor | 5 | 10 | 4 | 20 |
+|----------------------+----------------------+----------------------+----------------------+----------------------|
+| *Total* | | | | 161 |
+#+TBLFM: @3$5=@3$2 * @3$4::@4$5=@4$2 * @4$4::@5$5=@5$2 * @5$4::@6$5=@6$2 * @6$4::@7$5=@7$2 * @7$4::@8$5=@8$2 * @8$4
+#+TBLFM: @9$5=@9$2 * @9$4
+#+TBLFM: @10$5=vsum(@3$5..@9$5)
+
+*** Django(Python) und MariaDB
+
+Diese Variante, Tabelle:([[tab:django]]) hat am meisten Punkte erhalten.
+Wie bei der Variante "PHP und MySQL" sind auch hier beide Komponenten
+freie Software. Im Gegensatz zu der vorherigen Variante gibt es bei
+diesen Komponenten nur eine mögliche Lizenz Form. Womit sie die volle
+Punktzahl in dieser Kategorie erreichten.
+
+Beide Projekte laufen unter Windows, Linux sowie Mac. Wobei das Setup
+unter für Django(Python) unter Windows etwas komplizierter ausfällt
+als wir gerne hätten weshalb wir hier bei der Cross Plattform
+Kompatibilität und dem Setup einen Abstrich gemacht haben. Python kann
+ohne spezielle Tools programmiert werden und gilt als eine der
+Sprachen mit der schönsten Syntax. Die Vorkenntnisse haben wir hier
+als eher niedrig eingestuft dafür den Lernfaktor umso höher.
+
+#+CAPTION: Bewertung der Variante Django und MariaDB
+#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
+#+NAME: tab:django
+|----------------------+----------------------+----------------------+----------------------+----------------------|
+| <20> | <20> | <20> | <20> | <20> |
+| *Kriterium*\cellcolor[HTML]{C0C0C0} | *Gewichtung*\cellcolor[HTML]{C0C0C0} | *max. Punktzahl*\cellcolor[HTML]{C0C0C0} | *erreichte Punktzahl*\cellcolor[HTML]{C0C0C0} | *Kriteriums- ergebnis*\cellcolor[HTML]{C0C0C0} |
+|----------------------+----------------------+----------------------+----------------------+----------------------|
+| Freie Software | 5 | 10 | 10 | 50 |
+| Cross Plattform nutzbar | 5 | 10 | 9 | 45 |
+| Lesbarkeit des Codes | 5 | 5 | 5 | 25 |
+| Einfachheit des Setups | 3 | 5 | 3 | 9 |
+| Ohne spezielle Tools nutzbar | 3 | 5 | 5 | 15 |
+| Vorkenntnisse | 3 | 10 | 4 | 12 |
+| Lernfaktor | 5 | 10 | 8 | 40 |
+|----------------------+----------------------+----------------------+----------------------+----------------------|
+| *Total* | | | | 196 |
+#+TBLFM: @3$5=@3$2 * @3$4::@4$5=@4$2 * @4$4::@5$5=@5$2 * @5$4::@6$5=@6$2 * @6$4::@7$5=@7$2 * @7$4::@8$5=@8$2 * @8$4
+#+TBLFM: @9$5=@9$2 * @9$4
+#+TBLFM: @10$5=vsum(@3$5..@9$5)
+
+*** Ergebnis
+
+Aufgrund der erreichten Punktzahl, Tabelle:([[tab:result]]) bei den
+vorhergehenden Variantenbewertungen haben wir uns dafür entschieden
+die Variante "Django(Python) und MariaDB" umzusetzen. In der Sektion
+[[Werkzeuge]] beschreiben wir noch die weiteren Mittel welche beim
+Erstellen der Case Study verwendet wurden und erklären wenn möglich
+auch weshalb wir uns dafür entschieden haben.
+
+#+CAPTION: Variantenbewertung Ergebnis
+#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4.5cm}|r|
+#+NAME: tab:result
+|------------------------------------+-----------------------------------------------|
+| *Variante*\cellcolor[HTML]{C0C0C0} | *Erreichte Punktzahl*\cellcolor[HTML]{C0C0C0} |
+|------------------------------------+-----------------------------------------------|
+| ASP.NET und SQL Server | 141 |
+| PHP und MySQL | 161 |
+| Django und MariaDB | 196 |
+
** Architektur vorbereiten
** Arbeitspakete definieren
* TODO Umsetzung
+** Werkzeuge
+
+Während dem Erstellen dieser Arbeit wurde eine Vielzahl an Werkzeugen
+eingesetzt. Nachfolgend werden diese Werkzeuge kurz beschrieben sowie
+ihre Verwendung begründet. Wir haben dabei darauf geachtet soviel Open
+Source Software wie möglich zu verwenden. Nicht nur für den Web-Shop an
+sich sondern generell für alle Tasks im Projekt.
+
+*** Versionkontrolle
+
+Eine Versionskontrollsoftware erschien uns als notwendig um den Code
+auf einfache und zuverlässige Weise untereinander austauschen zu
+können. Andere Lösungen wie Dropbox, etc. hätten es uns nicht erlaubt
+Konflikte zu vermeinden.
+
+Als Software für die Versionskontrolle wurde Git \footcite{git} gewählt.
+Git wurde aus diversen Gründen gewählt:
+
+- Ist der de facto Standard bei Versionskontrollsoftware
+- Läuft auf allen gängigen Betriebsystemen
+- Es gäbe gratis Services die man nutzen könnte (Github, Gitlab)
+- Man kann offline arbeiten und Commits erstellen
+- Das Team hat bereits einen eigenen Git Server zur Verfügung
+- Das Team ist bereits mit Git aus vorhergehenden Projekten vertraut
+ dadurch muss man keine Ressourcen aufwenden eine neue Software zu lernen.
+ Zusätzlich hat sich Git in den vorhergehenden Projekten als robuste
+ und schnelle Software erwiesen.
+- Git ist freie Software unter GNU Public License v2.
+
+*** Entwicklungsumgebung
+
+Damit beide Studenten auf der gleichen Basis arbeiten haben wir uns
+dazu entschieden den Web-Shop in einer virtuellen Maschine zu
+entwickeln. Dies führt jedoch in der Regel zum Problem das die
+Änderungen in der virtuellen Maschine miteinander abgesprochen und
+ausgetauscht werden müssen. Um dieses Problem zu beheben haben wir uns
+dazu entschieden Vagrant\footcite{vagrant} zu verwenden.
+Vagrant ist freie Software unter der MIT Lizenz.
+
+Vagrant erlaubt es einem den Zustand einer virtuellen Maschine in
+einer Text Datei zu beschreiben und diese dann gemäss der Beschreibung
+automatisiert aufzusetzen. Dies hat den Vorteil das die Konfiguration
+der virtuellen Maschine auch ohne weiteres mit dem restlichen Code in
+der Versionskontrollsoftware gepflegt werden kann.
+
+Desweiteren hilft das automatisierte Aufsetzen das vermeiden von
+menschlichen Fehlern. Somit kann davon ausgegangen werden dass, das
+System in der virtuellen Maschine immer den korrekten Stand zum
+entwickeln sein. Sollte dies nicht mehr der Fall sein lässt sich die
+virtuelle Maschine mit einem maxmimal zwei Befehlen wieder in den
+Ursprungszustand zurücksetzen.
+
+Als Hypervisor der virtuellen Maschine wurde
+Virtualbox\footcite{virtualbox} eingesetzt. Virtualbox ist im Kern
+freie Software unter der GNU Public License v2. Das unter einer
+proprietären Lizenz erhältliche Erweiterungspacket ist für unser Setup
+nicht notwendig.
+
+*** Hostsystem
+
+Als Hostsystem für unseren Web-Shop haben wir uns für die Linux
+Distribution Debian\footcite{debian} in der Version 9 (Stretch)
+entschieden. Für Debian haben wir uns vor allem aus folgenden Gründen
+entschieden:
+
+- Stabiles System
+- Sehr guter Packetmanager was einem das Scripting vereinfacht.
+- Gilt als sehr sicher
+- Hat sich in vorhergehenden Projekten bereits als gute Basis bewiesen
+- Enthält in der Grundkonfiguration nur freie Software (nicht freie
+ Software muss aktiv hinzugefügt werden)
+- In der Linux Welt sehr verbreitet
+- Im Gegensatz zu Ubuntu nicht von einer Firma abhängig
+
+*** Deployment Software für Produktionsserver
+
+Auch auf dem produktiven Server haben wir uns für Debian entschieden.
+Um diesen aufzusetzen hatten wir in etwa die ähnlichen Anforderungen
+wie für die Entwicklungsumgebung. Also einen Weg um das System
+möglichst automatisch und reproduzierbar aufzusetzen. Die für die
+Entwicklungsumgebung verwendete Software Vagrant ist für produktive
+System allerdings eher weniger geeignet.
+
+Für solche Fälle bietet sich eine Software Namens
+"Ansible"\footcite{ansible} an. Diese bietet einem ähnlich wie Vagrant
+die Möglichkeit den Zustand eines Systems in Text Dateien zu
+beschreiben. Allerdings bietet einem Ansible noch zusätzliche
+Möglichkeiten und bietet einem ein standardisiertes Interface um
+unterschiedliche Systeme auf die selbe Weise zu konfigurieren.
+
+Der Vorteil gegenüber anderen System ist vorallem das Ansible mit sehr
+wenig Abhängigkeiten für das zu konfigurierende System daherkommt. Auf
+einem Linux System ist nur SSH Zugriff und Python notwendig. Einen
+Client braucht man nicht zu installieren.
+Ansible ist freie Software unter der GNU Public License v3.
+
+*** Framework
+
+Um die Entwicklung der Applikation zu vereinfachen haben wir uns dazu
+entschlossen ein Framework einzusetzen. Frameworks bringen einem in
+der Entwicklung diverse Vorteile. Unter anderem bieten sie Hilfen bei
+sich wiederholenden Programmieraufgaben und bieten je nachdem die
+Möglichkeit die Applikation in einer einzigen Sprache zu schreiben da
+sich das Framework auch um die Datenbank kümmert. In der
+Webentwicklung helfen sie einem insbesondere auch dabei
+Sicherheitslücken wie Cross Site Scripting und SQL Injections
+abzufangen.
+
+Wir haben uns dabei für das Framework Django\footcite{django}
+entschieden. Django ist ein Python basiertest Framework. Django ist
+freie Software unter der drei Klausen BSD Lizenz. Wir haben uns aus
+folgenden Gründen für ein Python basiertes Framework gegenüber einem
+PHP basierten Framework entschieden:
+
+- Python gilt als die Sprache mit der schöneren Syntax
+- Wir wollten im Bezug auf das Programmieren etwas neues ausprobieren
+ was sich im Rahmen einer Case Study sehr gut machen lässt. Da man
+ ein "realistisches" Szenarium erhält und dieses in einem relativ
+ kontrollierten Rahmen ausführen kann.
+- Python ist in dem von uns gewählten Hostsystem wie in den meisten
+ Linux Distributionen bereits integriert.
+- Desweiteren hat Django bei einer Variantenbewertung das beste
+ Ergebnis geholt.
+
+Die verwendete Version war dabei 1.10.7-2 aus dem Debian Stretch Repository.
+
+*** Webserver
+
+Als Webserver verwenden wir ganz klassisch Apache\footcite{apache}.
+Dies vorallem aus dem Grund das wir Apache aus diversen vorhergehenden
+Projekten bereits sehr gut kennen und sich der Webserver dort sehr gut
+bewährt hat. Apache wird dabei auch noch gut von Django unterstützt.
+Der Apache Webserver ist freie Software unter der Apache License 2.0
+und gehört der gemeinnützigen Organisation "Apache Foundation".
+
+*** Datenbank
+
+Bei der Datenbank haben wir uns für MariaDB\footcite{mariadb}
+entschieden. Auch hier hauptsächlich weil wir MariaDB bereits aus
+vorhergehenden Projekt kennen. MariaDB ist ein Fork von MySQL welcher
+gegenüber MySQL rückwärtskompatibel ist. MariaDB ist dabei jedoch viel
+Community näher als MySQL und wird dabei auch sehr demokratisch
+entwickelt\footcite{mariadbgov}. MariaDB gehört dabei keiner einzelnen
+Firma oder Person sonder der gemeinnützigen Organisation "MariaDB
+Foundation". Was für zusätzliche Stabilität sorgen sollte. MariaDB ist
+freie Software unter GNU Public License v2. Desweiteren hat MariaDB bei
+einer Variantenbewertung das beste Ergebnis geholt.
+
+
+*** Editoren
+
+Das Hauptwerkzeug von jedem Entwickler ist sein Text Editor. Dabei
+hat jeder meistens seine ganz eigene Präferenzen wenn es um die Wahl
+des Editors geht.
+
+- Atom :: Ivan hat während der Case Study hauptsächlich mit
+ Atom\footcite{atom} gearbeitet. Atom wird von Github Inc.
+ entwickelt und basiert auf dem Electron Framework welches
+ seinerseit auf Webtechnologien wie Node.js und Chromium
+ basiert. Atom ist freie Software unter der MIT Lizenz.
+
+- GNU Emacs :: Andreas arbeitet hauptsächlich mit dem Editor GNU
+ Emacs\footcite{emacs}. GNU Emacs ist mit 32 Jahren
+ (obwohl seine Wurzeln bis ins Jahre 1976 zurückgehen)
+ wohl eines der ältesten noch "aktiven" Software
+ Projekte. Emacs ist freie Software unter der GNU Public
+ License v3.
+
+*** Dokumentation
+
+Diese Dokumentation wurde in Org-mode\footcite{orgmode} einer
+Erweiterung für den Text Editor Emacs geschrieben. Anschliessend wurde
+die Dokumentation in LaTeX\footcite{latex} Code konvertiert und
+finalisiert. Der Zwischenschritt über Org-mode wurde gewählt weil
+Org-mode etwas einfacher zu schreiben ist als reines LaTeX.
+
+LaTeX ist eine Software welche einem die Benutzung des Textsatzsystems
+TeXs vereinfacht. Wir haben LaTeX gegenüber einem "What You See Is
+What You Get" Editor gewählt weil es einem mit seiner Markup Sprache
+erlaubt das Dokument in Text Dateien zu erstellen. Was wir als
+Programmierer sehr angenehm finden. Dadurch das LaTeX auch nur aus
+reinen Textdateien besteht kann man die Dokumente auch ohne weiteres
+in die Versionskontrollsoftware einchecken und somit auf einfache
+Weise zusammen daran arbeiten und die Entwicklung im Log
+zurückverfolgen kann.
+LaTeX ist freie Software unter der LaTeX Project Public License.
+
+Die Grafiken in diesem Dokument wurden hauptächlich mit dem Vektor
+Grafik Editor Inkscape\footcite{inkscape} erstellt. Inkscape ist freie
+Software unter der GNU Public License v3. Für das Entity Relation
+Diagramm in [[Models]] haben wir jedoch Dia\footcite{dia} verwendet. Dia
+ist freie Software unter der GNU Public License v2.
+
+Die Klassen Diagramme haben wir mit der Django Erweiterung
+"Django-Extensions"\footcite{django_extensions} erstellt.
+Django-Extensions ist freie Software unter der MIT Lizenz.
+
** TODO Spezifikation
*** User Stories