diff --git a/projekthandbuch/projekthandbuch.org b/projekthandbuch/projekthandbuch.org index 81ab28b..7749b31 100644 --- a/projekthandbuch/projekthandbuch.org +++ b/projekthandbuch/projekthandbuch.org @@ -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 +