#+TITLE: Casestudy Webtechnologien
#+SETUPFILE: ~/git_repos/notes/settings/html_theme/setup/theme-readtheorg.setup
#+AUTHOR: Ivan Hörler Andreas Zweili
#+LaTeX_CLASS: article
#+LATEX_CLASS_OPTIONS: [a4paper,11pt]
#+LaTeX_HEADER: \input{style}

* Über dieses Dokument

Im nachfolgenden Abschnitt finden Sie allgemeine Informationen zu
diesem Dokument. Bei der Erstellung dieses Dokuments haben wir das
Versionierungs-Tool "Git" mit dem passenden Client "magit" verwendet
und das Dokument auf unseren Laptops lokal mit dem Emacs Plugin
org-mode bearbeitet.

** Titel der Dokumentation

Die Gruppe hat verschiedene Varianten gelistet und sich für die
lustigste entschieden.

- Marktplatz
- Shopshop
- Barewahre-Shop
- Didgeridoo-Shop

** Beschreibung

Planung und Erstellung eines konfigurierbaren Web-Shops für
Didgeridoo's.

** Zweck und Inhalt

Zweck dieses Dokuments ist die vollständige und nachvollziehbare
Dokumentation zu unserer Case Study Webtechnologie 3.

** Aufbau

Alle Inhalte sind chronologisch sortiert, vom ältesten zum jüngsten
Ereigniss, und nach Kapiteln getrennt.

** Über die Autoren

Dieses Dokument wurde von Ivan Hörler und Andreas Zweili im Auftrag
der IBZ erstellt und darf ohne Einverständniss der Autoren kopiert und
vervielfälltigt werden. Erwähnung der Autoren vorausgesetzt.

* Projektanalyse und Planung
** Projektziele

Der Student erarbeitet in einer Zweiergruppe einen selbstentwickelten
Web-Shop. Die einzusezenden Technologien sollen Opensource sein. Die
zur verfügungstehende Zeit ist pro Student mit 80h zu veranschlagen.
Am Ende dieser Zeitspanne soll ein funktionaler Web-Shop mit minimalem
graphischen Userinterface entstehen, die dazugehörige Dokumentation
umfasst alle Aspekte um die gewählte Lösung nachzuvollziehen.

| Nr. | Beschreibung                                                       | Priorität |
|-----+--------------------------------------------------------------------+-----------|
|  1. | Das Datenmodel muss korrekt konzipiert sein.                       | Hoch      |
|  2. | Alle Vorgehen müssen in diesem Dokument erläutert werden.          | Mittel    |
|  3. | Die Arbeitsstunden müssen eingehalten werden.                      | Tief      |
|  4. | Der Shop muss funktionstüchtig sein.                               | Mittel    |
|  5. | Die Applikation muss vor der Übergabe vollständig getestet werden. | Hoch      |
|  6. | Problemstellungen müssen ersichtlich dokumentiert werden.          | Mittel    |
#+CAPTION: Projektziele

** Mittel und Methoden
*** Werkzeuge

Als Testumgebung wurde eine VM Lösung mit Vagrant gewählt. Diese über
eine MIT-Lizenz frei verfügbare Lösung für Containerautomation eignet
sich durch seine crossplattform Anwendung hervorragend um die
Entwicklung schnellstmöglich ohne lästige Einzelkonfigurationen auf
die Beine zu bringen. Der Hypervisor für Vagrant war dabei Virtualbox.

*** 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
ist eine itterative Methodik unabdingbar. Daher wandte die Gruppe eine
angepasste version von Scrum an. In dieser wird jeweils während
Sitzungen die Position des Product Owners und des Scrum Masters
eingenommen und die Backlog-Tasks dementsprechend erstellt resp.
verteilt. Während der Woche arbeiten beide Team-Mitglieder an der
Arbeit als Team-Kolegen.

*** Vorkenntnisse

Die benötigten Vorkenntnisse wurden in den vorangeganenen Semestern
erarbeitet und sind in der Basis gefestigt. Diese Arbeit wird
vorwiegend weiterführende Elemente wie Frameworks neu einbringen deren
Verhalten letztendlich nicht abgeschätzt werden kann.

** Vision

Wir wollen einen Web-Shop mit geeigneter Software erstellen. Dabei
setzen wir nur freie Software ein (frei im Bezug auf Freiheit nicht
Preis). Wir untersuchen die Anforderung und wählen die uns als
geeignet erscheinenden Frameworks. Jede noch so kleine Zeiteinsparung
durch vorgefertigte Entwicklungen werden angenommen und dennoch wollen
wir keine fertigen Software Produkte einsetzen.

** TODO SWOT-Analyse

Die SWOT-Analyse ist eine Methode, die Stärken, Schwächen, Chancen und
Gefahren zu erkennen, indem eine 4-Felder-Matrix ausgefüllt wird.

Wichtig vor dem Ausfüllen der SWOT-Analyse ist es, ein klares Ziel zu
haben.

| Stärken                                                                                | Schwächen                                                                    | Chancen | Gefahren |
|----------------------------------------------------------------------------------------+------------------------------------------------------------------------------+---------+----------|
| Wir als Programmierer haben ein gutes Know-How im Bereich Datenbanken                  | Wir als Programmierer haben keine Erfahrung im Konsumsegment unseres Nutzers |         |          |
|----------------------------------------------------------------------------------------+------------------------------------------------------------------------------+---------+----------|
| Die Umsetzung der graphischen Anwendungsoberfläche könnte sich als schwierig erweisen. | Die Umsetzungszeit ist knapp bemessen                                        |         |          |
|----------------------------------------------------------------------------------------+------------------------------------------------------------------------------+---------+----------|
#+CAPTION: SWOT-Analyse

** Umweltanalyse

Die Projektumwelt-Analyse ist eine Methode, die Beziehungen,
Erwartungshaltungen und Einflüsse auf das Projekt durch interne und
externe soziale Umwelten zu betrachten und zu bewerten. Auf Grundlage
der Analyseergebnisse werden erforderliche Massnahmen zur Gestaltung
der Umweltbeziehungen abgeleitet. Die Gestaltung der
Projektumweltbeziehungen ist eine Projektmanagementaufgabe.
In dieser Tabelle wurden die Anforderungen und Wünsche mit
Einschätzung der Wahrscheinlichkeit der Einflussnahme aufgenommen.

| Nr. | Stakeholder   | Einfluss | Anforderung/Wünsche                           | Warscheinlichkeit |
|-----+---------------+----------+-----------------------------------------------+-------------------|
|  1. | Auftraggeber  | hoch     | - Innovatives Produkt auf dem Markt anbieten. | hoch              |
|     |               |          | - Einhaltung von Terminen und Qualität.       | hoch              |
|-----+---------------+----------+-----------------------------------------------+-------------------|
|  2. | Nutzer        | gering   | - Einfache Lösung die anpassungsfähig ist.    | hoch              |
|     |               |          | - Schnell anfangen können.                    | hoch              |
|     |               |          | - Viele Arbeitsschritte Automatisieren        | mittel            |
|-----+---------------+----------+-----------------------------------------------+-------------------|
|  3. | Nachfrager    | gering   | - Intuitiv bedienbare Webseite                | hoch              |
|     |               |          | - schnell finden was gesucht wird.            | hoch              |
|-----+---------------+----------+-----------------------------------------------+-------------------|
|  4. | Projektleiter | hoch     | - Gutes Innovatives Produkt erschaffen.       | mittel            |
|     |               |          | - Anerkennung im fachlichen Umfeld            | hoch              |
|     |               |          |                                               |                   |
#+CAPTION: Umwelt-Analyse

** TODO Umweltgrafik

#+CAPTION: Stakeholder Diagramm
#+ATTR_LATEX: :width .9\textwidth
[[file:diagrammes/stakeholder_diagramm.eps]]

** TODO Risikomanagement
*** TODO Risikobeschreibung

- Note taken on [2017-10-31 Tue 22:09] \\
  Tönt noch sehr nach DB Case Study

| Nr. | Beschreibung                                                                   | Massnahmen                                                                                                                | W^1 | A^2 |
|-----+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+-----+-----|
|  1. | Die Datenbank ist schlecht modeliert.                                          | Das ERM nach dessen Erstellung gründlich auf Fehler prüfen, falls nötig extern prüfen lassen.                             |   2 |   3 |
|-----+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+-----+-----|
|  2. | Viel Arbeit an der Arbeitsstelle, dabei bleibt weniger Zeit für die Casestudy. | Die Zeit die einem zur Verfügung steht nutzen und fixe Tage definieren. Projektplanung machen.                            |   1 |   2 |
|-----+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+-----+-----|
|  3. | Know-How zur Umsetzung ist nicht vollständig vorhanden.                        | Gute Informationsbeschaffung im Internet, Mitschülern, Arbeitgeber, Dozenten etc.                                         |   2 |   2 |
|-----+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+-----+-----|
|  4. | Kommunikation innerhalb des Teams.                                             | Klare Arbeitsaufteilung innerhalb des Teams und alle 2 Wochen Besprechungen über offene Aufgaben oder Problembehandlungen |   1 |   1 |
|-----+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+-----+-----|
|  5. | Die Programmierung des Shops benötigt zuviel Zeit                              | Beider Projektplanung genau definieren was die GUI Applikation beinhalten muss. Ziele definieren, abgrenzungen treffen.   |   3 |   1 |
|-----+--------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------+-----+-----|
#+CAPTION: Risikobeschreibung

*** TODO Risikobewertung

| Bewertung  | Beschreibung: Warscheinlichkeit (W) |
|------------+-------------------------------------|
| 1 = gering | Unwarscheinlich, <20%               |
| 2 = mittel | Mässig warscheinlich, 20-50%        |
| 3 = hoch   | Hohe warscheinlichkeit > 50%        |
#+CAPTION: Risikobewertung Wahrscheinlichkeit

| Bewertung  | Beschreibung: Auswirkung (A)                    |
|------------+-------------------------------------------------|
| 1 = gering | geringe auswirkungen auf das Gesammtergebniss   |
| 2 = mittel | Arbeitsumstellung oder grösserer Arbeitsaufwand |
| 3 = hoch   | Projekt erfüllt nicht alle Anforderungen        |
#+CAPTION: Risikobewertung Auswirkung

--> Graphik einfügen!!!

** TODO Projektabgrenzung

Am ende des Projekts die nicht lauffähigen teile ausgrenzen. :-)

* Projektmanagement
** Organigram
** Projektstrukturplan
** Varianten erarbeiten
** Architektur vorbereiten
** Arbeitspakete definieren

* Umsetzung
** Spezifikation
*** Mockup
#+ATTR_LATEX: :width 18cm
#+CAPTION: a early Mockup of the shop
[[file:pictures/mockup-full-snipet.png][file:pictures/mockup-full-snipet.png]
*** Anwendungsfälle
*** Klassendiagramme der Models

**** Category

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Kategorien
[[file:pictures/class_category.png]]

**** Option

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Optionen
[[file:pictures/class_option.png][file:pictures/class_option.png]]

**** Setting

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Einstellungen
[[file:pictures/class_setting.png][file:pictures/class_setting.png]]

**** ArticleStatus

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Artikelstatus
[[file:pictures/class_articlestatus.png][file:pictures/class_articlestatus.png]]

**** ExchangeRate

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Wechselkurse
[[file:pictures/class_exchangerate.png][file:pictures/class_exchangerate.png]]

**** Article

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Artikel
[[file:pictures/class_article.png][file:pictures/class_article.png]]

**** OrderStatus

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Bestellstatus
[[file:pictures/class_orderstatus.png][file:pictures/class_orderstatus.png]]

**** OrderOfGoods

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Warenbestellungen
[[file:pictures/class_orderofgoods.png][file:pictures/class_orderofgoods.png]]

**** Picture

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Bilder
[[file:pictures/class_picture.png][file:pictures/class_picture.png]]

**** Order

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Bestellungen
[[file:pictures/class_order.png][file:pictures/class_order.png]]

**** ShoppingCart

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Warenkörbe
[[file:pictures/class_shoppingcart.png][file:pictures/class_shoppingcart.png]]

**** City

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Städte
[[file:pictures/class_city.png][file:pictures/class_city.png]]

**** Salutation

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Anreden
[[file:pictures/class_salutation.png][file:pictures/class_salutation.png]]

**** Person

#+ATTR_LATEX: :width 9cm
#+CAPTION: Klassenmodel für Personen
[[file:pictures/class_person.png][file:pictures/class_person.png]]

** Datenbank
*** Anforderungsanalyse
*** Relationen Model
*** Relationen Diagramm
*** SQL Create DB
*** SQL Insert Testdaten
*** SQL Restriktionen erarbeiten
*** SQL Views erstellen
*** SQL Prozeduren und Funktionen erarbeiten

** Benutzerinterface
*** Mockup skizzieren
*** Frontend Umsetzung
*** Backend Umsetzung
*** TODO Testing
**** Test Cases

* Fazit
** Projektmanagement
** Umsetzung
** Gelerntes

* TODO samples [to be deleted]
*** Subsubsection

- List
- List
- List

*** TODO Subsubsection

1. Numbered List
2. Numbered List
3. Numbered List

**** NEXT Subsubsubsection

Diese Section müssten man dann zuerst abschliesen damit die
übergeordnete abgeschlossen werden kann.

*** Table

| Name | Funktion | Beschreibung |
|------+----------+--------------|
|      |          |              |
|      |          |              |
|      |          |              |

*** Code Block

#+CAPTION: Python Code Block
#+BEGIN_SRC python
for var in collection:
    while variable = True:
#+END_SRC

#+CAPTION: SQL Code Block
#+BEGIN_SRC sql
create FUNCTION functionname()
RETURNS varchar(100)
AS BEGIN
END
go
#+END_SRC

#+LATEX: \begin{sexylisting}{SQL Code Block}
create FUNCTION functionname()
RETURNS varchar(100)
AS BEGIN
END
go
#+LATEX: \end{sexylisting}
