add content to the "Varianten" section

This commit is contained in:
Andreas Zweili 2018-12-18 21:16:01 +01:00
parent 4780e5babe
commit c6e9a2fb19
1 changed files with 238 additions and 30 deletions

View File

@ -216,16 +216,50 @@ zugänglicher zu machen, bietet sich ein normales Desktop Programm am ehesten
an. Desktop Programme werden von allen Computer Usern täglich genutzt und sind
somit etwas was sie kennen.
Daraus ergeben sich weitere Möglichkeiten für das Projekt.
Daraus ergeben sich die in diesem Kapitel aufgeführten Möglichkeiten für das
Projekt.
*** TODO Bewertung
Die Bewertungspunkte setzen sich einerseits aus den Projektzielen anderseits
aus für das Projekt sinnvollen Punkten zusammen. Dadurch ergeben sich dann die
Bewertungen welche in der nachfolgenden Tabelle aufgenommen wurden. Die
möglichen Varianten wurden danach bewertet und die Variante mit der höchsten
Punktzahl wurde für das Projekt ausgewählt. Mussziele erhalten dabei eine
Gewichtung von 10 und Wunschziele eine Gewichtung entsprechend der Bewertung in
der Tabelle Projektziele ([[tab:projektziele]]).
#+CAPTION: Muster Bewertungstabelle
#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
#+NAME: tab:muster
|----------------------+----------------------+----------------------+----------------------+----------------------|
| <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} |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| 1. Cross Plattform nutzbar | 10 | 10 | 10 | 100 |
| 2. Freie Software | 5 | 10 | 10 | 50 |
| 3. Vorkenntnisse | 5 | 10 | 10 | 50 |
| 4. Integriert sich gut ins System | 5 | 10 | 10 | 50 |
| 5. Ohne spezielle Tools nutzbar | 5 | 10 | 10 | 50 |
| 6. Lesbarkeit des Codes | 5 | 5 | 5 | 25 |
| 7. Einfachheit des Setups | 5 | 5 | 5 | 25 |
| 8. Lernfaktor | 5 | 5 | 5 | 25 |
| 9. Verbreitung bei der BorgBackup Community | 5 | 5 | 5 | 25 |
| 10. Geschwindigkeit der Entwicklung | 3 | 5 | 5 | 15 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| *Total* | | | | 415 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
#+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::@9$5=@9$2 * @9$4::@10$5=@10$2 * @10$4::@11$5=@11$2 * @11$4::@12$5=@12$2 * @12$4
#+TBLFM: @>$5=vsum(@3..@-1)
*** Backend
Fürs Backend bieten sich folgende Sprachen an.
- C#
- C++
- Python
- [[C#][C#]]
- [[C++][C++]]
- [[Python][Python]]
*C#*
**** C#
C# ist eine von Microsoft entwickelte Programmiersprache sowie mit .NET auch
ein Framework. Zudem ist es die Programmierspache welche an der IBZ
@ -247,7 +281,30 @@ Ausführen von Software zuständig ist, ist unter der MIT Lizenz lizenziert
footcite:csharp der aktuelle Compiler Roslyn ist unter der Apache Lizenz
verfügbar footcite:roslyn.
*C++*
#+CAPTION: C# Bewertungstabelle
#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
#+NAME: tab:csharp
|----------------------+----------------------+----------------------+----------------------+----------------------|
| <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} |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| 1. Cross Plattform nutzbar | 10 | 10 | | 0 |
| 2. Freie Software | 5 | 10 | | 0 |
| 3. Vorkenntnisse | 5 | 10 | | 0 |
| 4. Integriert sich gut ins System | 5 | 10 | | 0 |
| 5. Ohne spezielle Tools nutzbar | 5 | 10 | | 0 |
| 6. Lesbarkeit des Codes | 5 | 5 | | 0 |
| 7. Einfachheit des Setups | 5 | 5 | | 0 |
| 8. Lernfaktor | 5 | 5 | | 0 |
| 9. Verbreitung bei der BorgBackup Community | 5 | 5 | | 0 |
| 10. Geschwindigkeit der Entwicklung | 3 | 5 | | 0 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| *Total* | | | | 0 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
#+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::@9$5=@9$2 * @9$4::@10$5=@10$2 * @10$4::@11$5=@11$2 * @11$4::@12$5=@12$2 * @12$4
#+TBLFM: @>$5=vsum(@3..@-1)
**** C++
C++ ist eine stark typisierte und kompilierte Programmiersprache. Sie ist seit
1998 Teil des ISO Standards footcite:cpp98. ISO/IEC 14882:2017 footcite:cpp17
@ -255,6 +312,9 @@ ist zur Zeit die aktuellste Variante. Die Sprache existiert seit ca. 33 Jahren
und hat eine weitreichende Verbreitung gefunden. C++ ist auf allen
Betriebssystemen gut unterstützt.
Von C++ sind innerhalb des Projektes keinerlei Vorkenntnisse vorhanden. Dies
ist ein sehr hoher Risikofaktor.
C++ kompiliert direkt zu Maschinensprache und ist dadurch sehr performant. C++
ist im Vergleich zu modernen Sprachen jedoch relativ komplex und bietet diverse
Stolpersteine für Programmierer.
@ -264,7 +324,76 @@ entsprechend viele Ressourcen dazu und Beispiel Projekte von denen man ableiten
kann. Auch hilfreiche Libraries gibts es sehr viele welche den Programmierer
unterstützen können.
*Python*
#+CAPTION: C++ Bewertungstabelle
#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
#+NAME: tab:cpp
|----------------------+----------------------+----------------------+----------------------+----------------------|
| <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} |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| 1. Cross Plattform nutzbar | 10 | 10 | 10 | 0 |
| 2. Freie Software | 5 | 10 | 10 | 0 |
| 3. Vorkenntnisse | 5 | 10 | 0 | 0 |
| 4. Integriert sich gut ins System | 5 | 10 | | 0 |
| 5. Ohne spezielle Tools nutzbar | 5 | 10 | | 0 |
| 6. Lesbarkeit des Codes | 5 | 5 | | 0 |
| 7. Einfachheit des Setups | 5 | 5 | | 0 |
| 8. Lernfaktor | 5 | 5 | | 0 |
| 9. Verbreitung bei der BorgBackup Community | 5 | 5 | | 0 |
| 10. Geschwindigkeit der Entwicklung | 3 | 5 | | 0 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| *Total* | | | | 0 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
#+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::@9$5=@9$2 * @9$4::@10$5=@10$2 * @10$4::@11$5=@11$2 * @11$4::@12$5=@12$2 * @12$4
#+TBLFM: @>$5=vsum(@3..@-1)
**** Python
Der Python Interpreter ist für eine Vielzahl an Betriebssystemen erhältlich,
inklusive Windows, OS X und Linux. Nahezu jedes Desktop Linux System kommt mit
Python vor installiert. Auch OS X kommt bereits ab Werk mit Python Version 2.
Version 3 lässt sich sehr einfach nachinstallieren und ist einfach nutzbar.
Unter Windows geschtaltet sich die Installation etwas aufwändiger aber auch
nicht sehr kompliziert integriert sich in Windows jedoch etwas weniger elegant
als C#.
Python ist freie Software unter der Python Software Foundation License
footcite:python und wird durch die Python Software Foundation in einem
Community basierten Modell entwickelt.
Die Vorkenntnisse sind im Vergleich zu C++ relativ gross und zu C# etwas
weniger ausgeprägt. Es wurden damit im Rahmen der Ausbildung schon ein
grösseres Projekt realisiert und ansonsten mehrere kleine Projekte im Privaten
erstellen.
Für Python gibt es ein paar glspl:ide welchen den Programmierer bei seiner
Arbeit unterstützen können. Keine davon ist allerdings ein Muss um Python
programmieren zu können. Im einfachsten Fall wäre dies mit Notepad möglich. Ein
Editor mit etwas vortgeschritteren Features wäre jedoch empfehlenswert.
Python unterstützt mehrere Programmierungsparadigmen wie etwa
objekt-orientiert, funktionale oder Prozedurale Paradigmen. Bei der Entwicklung
von Python wurde sehr grossen Wert auf die Lesbarkeit der Sprache gelegt. Dies
mit dem Hintergedanken das eine Programmierspache viel häufiger gelesen als
effektiv geschrieben wird footcite:pep8.
Um ein Python Programm zu starten braucht es eigentlich kein grosses Setup.
Solange die Abhängigkeiten vorhanden sind, kann man ein Skript mit einem
einfachen Befehl, Codesnippet ([[minimal_code]]), starten.
#+name: minimal_code
#+caption: Minimal Python Setup
#+BEGIN_SRC bash
python3 example.py
#+END_SRC
Da Python schon eine etwas bekanntere Sprache ist, ist der Lernfaktor der
Sprache selber nicht mehr so hoch. Allerdings gibt es noch viele interessante
Konzepte die man im Zusammenhang mit der Sprache lernen kann. Wie etwa zum
Beispiel multiple Vererbung von Klassen.
gls:borg selber wurde in Python geschrieben. Daher ist davon auszugehen das
Python innerhalb dieser Community eine sehr hohe Verbreitung geniesst.
Python ist eine dynamisch typisierte und interpretierte Sprache. Dies bedeutet
das man bei Variabeln nicht explizit den Typ angeben muss und die Programme zur
@ -272,34 +401,112 @@ Laufzeit für den Computer übersetzt werden. Interpretierte Sprachen haben den
Vorteil das man mit ihnen in der Regel sehr schnell und unkompliziert
entwickeln kann, dies jedoch auf Kosten der Performance.
Python unterstützt mehrere Programmierungsparadigmen wie etwa
objekt-orientiert, funktionale oder Prozedurale Paradigmen. Der Python
Interpreter ist für eine Vielzahl an Betriebssystemen erhältlich, inklusive
Windows, OS X und Linux. Nahezu jedes Desktop Linux System kommt mit Python vor
installiert.
#+CAPTION: Python Bewertungstabelle
#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
#+NAME: tab:python
|----------------------+----------------------+----------------------+----------------------+----------------------|
| <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} |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| 1. Cross Plattform nutzbar | 10 | 10 | 8 | 80 |
| 2. Freie Software | 5 | 10 | 10 | 50 |
| 3. Vorkenntnisse | 5 | 10 | 6 | 30 |
| 4. Integriert sich gut ins System | 5 | 10 | 8 | 40 |
| 5. Ohne spezielle Tools nutzbar | 5 | 10 | 8 | 50 |
| 6. Lesbarkeit des Codes | 5 | 5 | 5 | 25 |
| 7. Einfachheit des Setups | 5 | 5 | 4 | 20 |
| 8. Lernfaktor | 5 | 5 | 3 | 15 |
| 9. Verbreitung in der BorgBackup Community | 5 | 5 | 5 | 25 |
| 10. Geschwindigkeit der Entwicklung | 3 | 5 | 4 | 12 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| *Total* | | | | 347 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
#+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::@9$5=@9$2 * @9$4::@10$5=@10$2 * @10$4::@11$5=@11$2 * @11$4::@12$5=@12$2 * @12$4
#+TBLFM: @>$5=vsum(@3..@-1)
Bei der Entwicklung von Python wurde sehr grossen Wert auf die Lesbarkeit der
Sprache gelegt. Dies mit dem Hintergedanken das eine Programmierspache viel
häufiger gelesen als effektiv geschrieben wird.
Python ist freie Software unter der Python Software Foundation License
footcite:python und wird durch die Python Software Foundation in einem
Community basierten Modell entwickelt.
*** FrontEnd
*** TODO FrontEnd
Fürs Frontend sind folgende Projekte interessant:
- Qt
- Gtk
- Electron
- [[Qt][Qt]]
- [[Gtk][Gtk]]
- [[Electron][Electron]]
*** TODO Bewertung
**** TODO Qt
Die Bewertungspunkte setzen sich einerseits aus den Projektzielen anderseits
aus für das Projekt sinnvollen Punkten zusammen. Dadurch ergeben sich dann die
Punkte welche in der nachfolgenden Tabelle aufgenommen wurden. Die möglichen
Varianten wurden dann bewertet und die Variante mit der höchsten Bewertung
wurde für das Projekt ausgewählt.
#+CAPTION: Qt Bewertungstabelle
#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
#+NAME: tab:qt
|----------------------+----------------------+----------------------+----------------------+----------------------|
| <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} |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| 1. Cross Plattform nutzbar | 10 | 10 | | 0 |
| 2. Freie Software | 5 | 10 | | 0 |
| 3. Vorkenntnisse | 5 | 10 | | 0 |
| 4. Integriert sich gut ins System | 5 | 10 | | 0 |
| 5. Ohne spezielle Tools nutzbar | 5 | 10 | | 0 |
| 6. Lesbarkeit des Codes | 5 | 5 | | 0 |
| 7. Einfachheit des Setups | 5 | 5 | | 0 |
| 8. Lernfaktor | 5 | 5 | | 0 |
| 9. Verbreitung bei der BorgBackup Community | 5 | 5 | | 0 |
| 10. Geschwindigkeit der Entwicklung | 3 | 5 | | 0 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| *Total* | | | | 0 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
#+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::@9$5=@9$2 * @9$4::@10$5=@10$2 * @10$4::@11$5=@11$2 * @11$4::@12$5=@12$2 * @12$4
#+TBLFM: @>$5=vsum(@3..@-1)
**** TODO Gtk
#+CAPTION: Gtk Bewertungstabelle
#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
#+NAME: tab:gtk
|----------------------+----------------------+----------------------+----------------------+----------------------|
| <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} |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| 1. Cross Plattform nutzbar | 10 | 10 | | 0 |
| 2. Freie Software | 5 | 10 | | 0 |
| 3. Vorkenntnisse | 5 | 10 | | 0 |
| 4. Integriert sich gut ins System | 5 | 10 | | 0 |
| 5. Ohne spezielle Tools nutzbar | 5 | 10 | | 0 |
| 6. Lesbarkeit des Codes | 5 | 5 | | 0 |
| 7. Einfachheit des Setups | 5 | 5 | | 0 |
| 8. Lernfaktor | 5 | 5 | | 0 |
| 9. Verbreitung bei der BorgBackup Community | 5 | 5 | | 0 |
| 10. Geschwindigkeit der Entwicklung | 3 | 5 | | 0 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| *Total* | | | | 0 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
#+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::@9$5=@9$2 * @9$4::@10$5=@10$2 * @10$4::@11$5=@11$2 * @11$4::@12$5=@12$2 * @12$4
#+TBLFM: @>$5=vsum(@3..@-1)
**** TODO Electron
#+CAPTION: Electron Bewertungstabelle
#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
#+NAME: tab:electron
|----------------------+----------------------+----------------------+----------------------+----------------------|
| <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} |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| 1. Cross Plattform nutzbar | 10 | 10 | | 0 |
| 2. Freie Software | 5 | 10 | | 0 |
| 3. Vorkenntnisse | 5 | 10 | | 0 |
| 4. Integriert sich gut ins System | 5 | 10 | | 0 |
| 5. Ohne spezielle Tools nutzbar | 5 | 10 | | 0 |
| 6. Lesbarkeit des Codes | 5 | 5 | | 0 |
| 7. Einfachheit des Setups | 5 | 5 | | 0 |
| 8. Lernfaktor | 5 | 5 | | 0 |
| 9. Verbreitung bei der BorgBackup Community | 5 | 5 | | 0 |
| 10. Geschwindigkeit der Entwicklung | 3 | 5 | | 0 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
| *Total* | | | | 0 |
|----------------------+----------------------+----------------------+----------------------+----------------------|
#+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::@9$5=@9$2 * @9$4::@10$5=@10$2 * @10$4::@11$5=@11$2 * @11$4::@12$5=@12$2 * @12$4
#+TBLFM: @>$5=vsum(@3..@-1)
*** TODO Ergebnis
** TODO Vorkenntnisse
@ -447,3 +654,4 @@ PLACEHOLDER
* Bibliography :no_export:
bibliography:general/bibliography.bib