This repository has been archived on 2020-04-03. You can view files and clone it, but cannot push or open issues or pull requests.
thesis/projekthandbuch/projekthandbuch.org

678 lines
43 KiB
Org Mode
Raw Normal View History

#+title: Projekthandbuch
2018-09-16 18:45:03 +02:00
:preamble:
2018-12-10 20:54:37 +01:00
#+setupfile: ~/git_repos/notes/settings/html_theme/setup/theme-readtheorg.setup
#+author: Andreas Zweili
#+latex_class: article
#+latex_class_options: [a4paper,11pt]
2018-06-03 17:25:15 +02:00
#+latex_header: \input{general/style}
2018-12-11 22:31:40 +01:00
#+latex_header: \loadglsentries[main]{general/glossary}
#+otions: H:5 todo:t
#+language: de
#+startup: align
2018-12-08 08:28:12 +01:00
#+exclude_tags: no_export
2018-09-16 18:45:03 +02:00
:end:
2018-12-11 22:31:40 +01:00
* Über dieses Dokument
2018-12-08 08:28:12 +01:00
2018-12-11 22:31:40 +01:00
Im nachfolgenden Abschnitt finden Sie allgemeine Informationen zu
diesem Dokument.
2018-12-10 21:16:57 +01:00
2018-12-11 22:31:40 +01:00
** Beschreibung
2018-12-10 21:16:57 +01:00
2018-12-12 21:12:27 +01:00
Diese Arbeit hat zum Ziel die Planung und Erstellung einer grafischen
Oberfläche zum einfachen Bedienen der Software gls:bb footcite:borgbackup
sowie deren Konfiguration, durchzuführen.
2018-12-10 21:16:57 +01:00
2018-12-11 22:31:40 +01:00
** Zweck und Inhalt
2018-12-10 21:16:57 +01:00
2018-12-11 22:31:40 +01:00
Zweck dieses Dokumentes ist die vollständige und nachvollziehbare Dokumentation
zur Diplomarbeit von Andreas Zweili.
2018-12-10 21:16:57 +01:00
2018-12-11 22:31:40 +01:00
** Aufbau
Alle Inhalte sind chronologisch sortiert, vom ältesten zum jüngsten
Ereignis, und nach Kapiteln getrennt.
2018-12-10 21:16:57 +01:00
2018-12-11 22:28:27 +01:00
** Lizenz
Dieses Dokument wurde von Andreas Zweili im Rahmen der Diplomarbeit an der IBZ
Schule erstellt und steht unter der gls:cc BY-SA 4.0 footcite:cc Lizenz.
Dadurch darf die Arbeit unter beibehalten der Lizenz kopiert und
2018-12-11 22:31:40 +01:00
weiterverarbeitet werden. Zusätzlich muss der Urheber gennant werden.
2018-12-10 21:16:57 +01:00
2018-12-18 21:15:28 +01:00
* TODO Projektanalyse und Planung
** Vision
Die Software soll gls:bb für den durschnittlichen Computer User zugänglich
machen. Die Backups sollen dabei schnell und unkompliziert erstellt werden
können. Die Möglichkeit automatischer im Hintergrund laufender Backups soll dem
User gegeben sein damit die Hürde für Backups so tief wie möglich gehalten wird.
Die besten Backups sind solche bei denen man gar nicht mehr weiss das man sie
hat bis man sie braucht.
** Ausgangslage
gls:bb ist deshalb interessant weil es wärend einem Backup relativ
wenig Ressource im Vergleich zu anderen Systemen benötigt und schon relativ
lange aktiv entwickelt wird. Dadurch ist es im Altag geprüft worden.
Desweiteren bietet gls:bb die Funktion für Verschlüsselung was es einem User
ermöglicht die Daten auf einem unsicheren Cloud Speicher abzulegen.
Desweiteren speichert gls:bb die Daten mit blockbasierter gls:dedup ab. Dies
hat den riesigen Vorteil das bei einem Backup nur die Änderungen auf
Block-Ebene gespeichert werden und nicht jedes Mal die ganze Datei kopiert
werden muss.
Damit ermöglicht die Software auch Backups von sehr grossen Dateien, wie Videos
oder Disk Images von virtuellen Maschinen, in mehreren Version. Ohne dabei
jedoch signifikant mehr an Speicher zu benötigen. Zusätzlich werden die Backups
dadurch rasend schnell ausgeführt. Gerade dieses Feature macht gls:bb in den
Augen des Authors besonders interessant da sich der durschnittliche User
möglichst wenig mit Dingen wie Backups ausseinander setzen möchte. Umsobesser
also wenn sie schnell gehen und so wenig Speicherplatz wie möglich verbrauchen.
gls:bb bietet Entwicklern eine gls:json, gls:api, mit welcher sie, von gls:bb
ausgegebenen Dateinen einfach weiterverarbeiten können.
gls:bb steht unter einer gls:bsd footcite:bsd Lizenz zur Verfügung und ist somit
gls:libre.
Das Projekt muss dabei vom Studenten in Eigenarbeit und einer Zeit von 250
Stunden bis zum 18. März 2019 erarbeitet werden.
** Projektziele
Das Hauptziel der Arbeit soll es sein eine einfach nutzbare grafische
Oberfläche für gls:bb zu entwickeln. Da gls:bb selber freie Software ist und
der Author mit gls:libre viel gute Erfahrungen gemacht hat soll das Projekt
selber auch wieder gls:libre sein. Zum einen um der Community etwas
zurückzugeben des weiteren um anderen Entwicklern die Möglichkeit zu geben die
Software zu verbessern und weiterzu entwickeln.
Als nebenläufiges Ziel soll mit dieser Arbeit auch die Verbreitung von freier
Software gefördert werden. Dies wird insbesondere dadurch erreicht, dass die
Software selbst unter der gls:gpl Version 3 footcite:gplv3
veröffentlicht wird. Wenn möglich sollen während der Entwicklung auch
hauptsächlich freie Software verwendet werden. Die gesamte Arbeit wird zudem zu
jedem Zeitpunkt öffentlich einsehbar sein. Der Quelltext der Dokumentation ist
unter diesem Link erreichbar: https://git.2li.ch/Nebucatnetzer/thesis
Die Entwicklung wird hauptsächlich auf einem Linux System stattfinden. Da
BorgBackup einerseits hauptsächlich auf Unix Systeme ausgelegt ist und
anderseits die Hauptzielgruppe des Projektes auch auf Linux Usern liegt.
Trotzdem sollen im Projekt Cross-Plattform fähige Technologien eingesetzt werden
damit es in der Zukunft möglich ist das Projekt auf andere Plattformen
auszuweiten.
*** Ziele inklusive Gewichtung
Im Projektantrag wurden vorgängig vollgende Ziele definiert und entsprechend
gewichtet. Die Gewichtung wurde dabei so vorgenommen, dass Ziele mit einer
Muss-Gewichtung den Minimalanforderungen der Software entsprechen.
Die weiteren Ziele wurden dann mit Ziffern von 5 - 1 gewichtet. Eine 5 bedeutet
dabei dass, das Ziel in naher Zukunft sehr nützlich/wichtig für die Software
wär ist. Eine tiefe Zahl sollte dabei wenn möglich auch einmal in die Software
integriert werden und ist nicht unwichtig.
#+CAPTION: Projektziele
#+ATTR_LATEX: :environment longtable :align |p{1cm}|p{9cm}|p{1.5cm}|p{2cm}|
#+NAME: tab:projektziele
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| *Ziel-Nr.*\cellcolor[HTML]{C0C0C0} | *Zielsetzung*\cellcolor[HTML]{C0C0C0} | *Muss*\cellcolor[HTML]{C0C0C0} | *Wunsch*\newline (1-5, 5=sehr wichtig)\cellcolor[HTML]{C0C0C0} |
| <5> | <100> | <10> | <10> |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 1. | Die Anwendung setzt auf Cross-Plattform (Linux, Windows, OSX) fähige Technologien. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
2018-12-12 21:18:25 +01:00
| 2. | Die Anwendung steht unter der gls:gpl v3 der Öffentlichkeit zur Verfügung. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 3. | Der User kann mit weniger als 3 Klicks ein Backup ausführen. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 4. | Der User kann ein Archiv mit 3 Klicks löschen. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 5. | Der User kann unter Linux ein Archiv mit zwei Klicks "read-only" als Laufwerk mounten. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 6. | Der User kann ein Archiv wieder herstellen. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 7. | Der User kann den zu sichernden Pfad manuell in der Anwendung definieren. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 8. | Die Applikation holt ihre Konfiguration aus einer Plain-Text Datei. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 9. | Der User kann sein Repository auf einer Harddisk ablegen. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 10. | Die Anwendung exkludiert für einen Linux Computer sinnvolle Pfade bereits zu Beginn. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 11. | Die Archivliste wird nach einer Aktion automatisch aktualisiert. | x | |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 12. | Der User kann sein Repository auf einem über SSH erreichbaren Server ablegen. | | 5 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 13. | Der User kann den Namen eines Archives selbst bestimmen. | | 5 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 14. | Die Anwendung meldet transparent, wenn das Repository nicht erreichbar ist. | | 5 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 15. | Die Anwendung meldet dem User, wenn noch ein Hypervisor am Laufen ist. | | 5 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 16. | Die Anwendung leitet Meldungen von gls:bb transparent weiter. | | 5 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 17. | Die Anwendung zeigt transparent an das gls:bb im Hintergrund bereits läuft. | | 5 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 18. | Das Repository wird nach jedem Backup bereinigt. | | 4 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 19. | Der User kann automatische Hintergrundbackups in der Anwendung konfigurieren. | | 4 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 20. | Die Anwendung gibt dem User die Möglichkeit ein passendes Repository zu erstellen, wenn keines gefunden wird, die Anwendung jedoch bereits konfiguriert ist. | | 4 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 21. | Die Applikation verwendet, wann immer möglich allgemeingültige Umgebungsvariablen. | | 4 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 22. | Die Anwendung cached/speichert (evtl. zusätzliche) Informationen in einer Datenbank. | | 3 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 23. | Die Anwendung zeigt beim ersten Starten einen Setup Wizard. | | 3 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 24. | Der User kann sich mit 3 Klicks das Log eines Archives anschauen. Nur möglich mit einer zusätzlichen DB. | | 3 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 25. | Die Anwendung kann Systembenachrichtigungen auslösen. | | 3 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 26. | Der User kann die Anwendung grafisch konfigurieren. | | 3 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 27. | Der User kann entscheiden ob, ein gemountetes Archiv nach dem Schliessen der Applikation noch weiter verfügbar ist. | | 2 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 28. | Der User kann das Repository wechseln. | | 2 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 29. | Der User kann ein Archiv nach einer Datei oder einem Ordner durchsuchen. | | 2 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 30. | Der User kann die "Retention Policy" konfigurieren. | | 2 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 31. | Die Anwendung kann mit allen Features von BargBackup umgehen. | | 2 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
| 32. | Die Applikation prüft, ob sie sich im richtigen Netzwerk befindet bevor sie eine Verbindung zum Server aufbaut. | | 2 |
|-------+------------------------------------------------------------------------------------------------------+------------+------------|
#+LATEX:\newpage
** Projektabgrenzung
Die Anwendung beschränkt sich darauf Funktionen von gls:bb grafisch
darzustellen oder nützlich zu erweitern soweit dies über die gls:api möglich
ist. Eine Erweiterung von gls:bb ist nicht vorgesehen. Backup und
Verschlüsselung sind heikle Themen und sollten umbedingt nur von Experten
angegangen werden. Das Potential für Fehler und die Auswirkungen deren sind
einfach schlicht zu gross.
Bugs von gls:bb welche während der Dauer der Diplomarbeit vom Studenten
entdeckt werden, wird dieser dem Projekt melden jedoch nicht selber beheben.
2018-12-10 21:16:57 +01:00
2018-12-18 21:15:39 +01:00
** TODO Projektmethode
** TODO Konfigurationsmanagement
** TODO Umweltanalyse
2018-12-10 21:16:57 +01:00
PLACEHOLDER
** TODO Varianten
2018-12-10 21:16:57 +01:00
2018-12-16 21:51:22 +01:00
Da Borg eine JSON API zur Verfügung stellt bieten sich diverse Möglichkeiten um
das Programm anzubinden. Da das Ziel ist, das Programm normalen Nutzern
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.
2018-12-18 21:16:01 +01:00
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)
2018-12-16 21:51:22 +01:00
*** Backend
Fürs Backend bieten sich folgende Sprachen an.
2018-12-18 21:16:01 +01:00
- [[C#][C#]]
- [[C++][C++]]
- [[Python][Python]]
2018-12-16 21:51:22 +01:00
2018-12-18 21:16:01 +01:00
**** C#
2018-12-16 21:51:22 +01:00
C# ist eine von Microsoft entwickelte Programmiersprache sowie mit .NET auch
ein Framework. Zudem ist es die Programmierspache welche an der IBZ
hauptsächlich gelehrt wird. Dadurch sind die Kenntnisse der Sprache und ihrer
Anwendung bereits relativ gross. Insbesondere Aufgrund der grossen
kommerziellen Nutzung in Windows hat C# eine relative grosse Verbreitung.
C# ist eine stark typisierte Sprache, heisst man muss bei Objekten den
Datentyp bereits beim erstellen definieren. Desweiteren ist C# eine kompilierte
Sprache und setzt stark auf objekt-orientierte Programmierung.
C# wird dabei hauptsächlich mit der gls:ide Microsoft Visual Studio. Eine sehr
umfangreiche und komlexe Software. Visual Studio ist dabei nur für Windows und
OS X erhältlich. Es ist auch möglich C# Projekte ausserhalb von Visual Studio
zu erstellen ist jedoch nicht sehr einfach.
C# ist zu Teilen freie Software. Die Common Language Runtime welche für das
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.
2018-12-18 21:16:01 +01:00
#+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++
2018-12-16 21:51:22 +01:00
C++ ist eine stark typisierte und kompilierte Programmiersprache. Sie ist seit
1998 Teil des ISO Standards footcite:cpp98. ISO/IEC 14882:2017 footcite:cpp17
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.
2018-12-18 21:16:01 +01:00
Von C++ sind innerhalb des Projektes keinerlei Vorkenntnisse vorhanden. Dies
ist ein sehr hoher Risikofaktor.
2018-12-18 21:59:54 +01:00
C++ kompiliert direkt zu Maschinensprache und ist dadurch sehr performant und
läuft sehr gut auf jedem System. C++ ist im Vergleich zu modernen Sprachen
jedoch relativ komplex und bietet diverse Stolpersteine für Programmierer.
Zum entwickeln braucht es verhältnismässig wenig. Da die Sprache bereits sehr
alt ist, stammt sie noch aus einer Zeit wo man noch etwas rudimentärer
programmierte. Allerdings braucht man in jedem Fall einen gls:compiler um ein
ausführbares Programm zu erzeugen. Bei komplexeren Programmen wird man um
mindestens so etwas wie glspl:makefile auch nicht herumkommen.
Im Vergleich zu Python oder C# ist C++ wohl die am schwersten lesbare Sprache.
Zudem gibt es auch keinen zentralen Styleguide welcher einem vorgeben würde wie
der Code am besten aussschauen sollte. Somit haben sich über die Jahre mehrere
Standards etabliert.
Der Lernfaktor wäre Aufgrund der mangelnden Vorkenntnisse hier ganz klar am
Grössten.
Da C++ eine alte Sprache ist geniesst sie auch eine dementsprechende
Verbreitung. Daher ist anzunehmen das sicher mindestens ein grössere Teil der
älteren BorgBackup Entwickler C++ oder C gelernt haben.
2018-12-16 21:51:22 +01:00
Da C++ auch heute noch zu den meistgenutzten Sprachen gehört gibt es
entsprechend viele Ressourcen dazu und Beispiel Projekte von denen man ableiten
kann. Auch hilfreiche Libraries gibts es sehr viele welche den Programmierer
2018-12-18 21:59:54 +01:00
unterstützen können. Die Sprache selber ist jedoch eher umständlich zu
schreiben. Hinzu kommt noch das man während der Entwicklung immer wieder den
Code kompilieren muss. In einem Projekt mit dieser begrenzten Zeitspanne eher
ungeeignet.
2018-12-16 21:51:22 +01:00
2018-12-18 21:16:01 +01:00
#+CAPTION: C++ Bewertungstabelle
#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
#+NAME: tab:cpp
|----------------------+----------------------+----------------------+----------------------+----------------------|
2018-12-18 21:59:54 +01:00
| <20> | <20> | <20> | <20> | <20> |
2018-12-18 21:16:01 +01:00
| *Kriterium*\cellcolor[HTML]{C0C0C0} | *Gewichtung*\cellcolor[HTML]{C0C0C0} | *max. Punktzahl*\cellcolor[HTML]{C0C0C0} | *erreichte Punktzahl*\cellcolor[HTML]{C0C0C0} | *Kriteriums- ergebnis*\cellcolor[HTML]{C0C0C0} |
|----------------------+----------------------+----------------------+----------------------+----------------------|
2018-12-18 21:59:54 +01:00
| 1. Cross Plattform nutzbar | 10 | 10 | 10 | 100 |
| 2. Freie Software | 5 | 10 | 10 | 50 |
| 3. Vorkenntnisse | 5 | 10 | 0 | 0 |
| 4. Integriert sich gut ins System | 5 | 10 | 10 | 50 |
| 5. Ohne spezielle Tools nutzbar | 5 | 10 | 7 | 35 |
| 6. Lesbarkeit des Codes | 5 | 5 | 2 | 10 |
| 7. Einfachheit des Setups | 5 | 5 | 3 | 15 |
| 8. Lernfaktor | 5 | 5 | 5 | 25 |
| 9. Verbreitung bei der BorgBackup Community | 5 | 5 | 3 | 15 |
| 10. Geschwindigkeit der Entwicklung | 3 | 5 | 2 | 6 |
2018-12-18 21:16:01 +01:00
|----------------------+----------------------+----------------------+----------------------+----------------------|
2018-12-18 21:59:54 +01:00
| *Total* | | | | 306 |
2018-12-18 21:16:01 +01:00
|----------------------+----------------------+----------------------+----------------------+----------------------|
#+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#.
2018-12-16 21:51:22 +01:00
2018-12-18 21:16:01 +01:00
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.
2018-12-16 21:51:22 +01:00
Python unterstützt mehrere Programmierungsparadigmen wie etwa
2018-12-18 21:16:01 +01:00
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.
2018-12-16 21:51:22 +01:00
2018-12-18 21:16:01 +01:00
Um ein Python Programm zu starten braucht es eigentlich kein grosses Setup.
Solange die Abhängigkeiten vorhanden sind, kann man ein Skript mit einem
2018-12-18 21:59:31 +01:00
einfachen Befehl starten.
2018-12-16 21:51:22 +01:00
2018-12-18 21:16:01 +01:00
#+caption: Minimal Python Setup
#+BEGIN_SRC bash
python3 example.py
#+END_SRC
2018-12-16 21:51:22 +01:00
2018-12-18 21:16:01 +01:00
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.
2018-12-16 21:51:22 +01:00
2018-12-18 21:59:31 +01:00
gls:bb selber wurde in Python geschrieben. Daher ist davon auszugehen das
2018-12-18 21:16:01 +01:00
Python innerhalb dieser Community eine sehr hohe Verbreitung geniesst.
2018-12-16 21:51:22 +01:00
2018-12-18 21:16:01 +01:00
Python ist eine dynamisch typisierte und interpretierte Sprache. Dies bedeutet
das man bei Variabeln nicht explizit den Typ angeben muss und die Programme zur
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.
2018-12-16 21:51:22 +01:00
2018-12-18 21:16:01 +01:00
#+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)
*** TODO FrontEnd
Fürs Frontend sind folgende Projekte interessant:
- [[Qt][Qt]]
- [[Gtk][Gtk]]
- [[Electron][Electron]]
**** TODO Qt
#+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
2018-12-10 21:16:57 +01:00
** TODO Vorkenntnisse
2018-12-10 21:16:57 +01:00
Die benötigten Vorkenntnisse wurden in den vorangegangenen Semestern erarbeitet
und sind in der Basis gefestigt. Erfahrungen im Bereich der Entwicklung von
Desktop Applikationen sind zum Teil vorhanden. Jedoch hauptsächlich für Windows
Systemenen.
2018-12-10 21:16:57 +01:00
** TODO Risikomanagement
*** TODO Risikobeschreibung
PLACEHOLDER
*** TODO Risikobewertung
PLACEHOLDER
** TODO SWOT-Analyse
2018-12-10 21:16:57 +01:00
PLACEHOLDER
** TODO Methoden
PLACEHOLDER
** TODO Organigramm
PLACEHOLDER
** TODO Zeitplanung
PLACEHOLDER
* TODO Umsetzung
** TODO Werkzeuge
PLACEHOLDER
2018-12-12 21:47:20 +01:00
*** Versionskontrolle
Eine Versionskontrollsoftware ist in der Software Entwicklung heutzutage
praktisch nicht mehr wegzudenken. So wurde auch bei diesem Projekt eine
eingesetzt.
Als Software für die Versionskontrolle wurde Git footcite:git aus folgenden
Gründen ausgewählt:
- Ist der de facto Standard bei Versionskontrollsoftware
- Läuft auf allen gängigen Betriebssystemen
- Es gäbe gratis Services die man nutzen könnte (Github, Gitlab)
- Man kann offline arbeiten und Commits erstellen
- Der Author hat bereits einen eigenen Git Server zur Verfügung
- Der Author 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 gls:libre unter der gls:gpl v2.
*** Editor
Sowohl bei der Dokumentation wie auch bei der Programmierung wurde
2018-12-12 21:53:14 +01:00
hauptsächlich der Editor GNU Emacs footcite:emacs verwendet. GNU Emacs ist mit
2018-12-12 21:47:20 +01:00
32 Jahren (obwohl seine Wurzeln bis ins Jahre 1976 zurückgehen) wohl eines der
2018-12-12 21:53:14 +01:00
ältesten noch aktiven Software Projekte. Emacs ist gls:libre unter der
2018-12-12 21:47:20 +01:00
gls:gpl v3. Emacs wurde gewählt da es ein schneller, schlanker und sehr
flexibler Texteditior ist. Von normaler Textmanipulation über Taskmanagement
und Emails schreiben ist alles möglich.
*** Dokumentation
Diese Dokumentation wurde in Org-mode footcite:orgmode, einer Erweiterung für
den Text Editor Emacs, geschrieben. Die Syntax erinnert an Markdown und
Org-mode bietet einem eine vielzahl an Hilfen dafür inklusive dem erstellen von
Tabellen und Spreadsheet Funktionen. Für finalle Version des Dokuments kann
Org-mode die ursprünglich Textdatei über LaTeX in ein PDF exportieren.
LaTeX footcite:latex ist eine Software, welche einem die Benutzung des
Textsatzsystems TeXs vereinfacht. LaTeX wurde gegenüber einem "What You See Is
What You Get" (z.Bsp. MS. Word), Editor gewählt weil es einem mit seiner Markup
Sprache erlaubt das Dokument in Text Dateien zu erstellen, gerade für
Programmiere ist dies eine sehr interessante Lösung. Dadurch, dass LaTeX auch
nur aus reinen Textdateien besteht, kann man die Dokumente auch ohne weiteres
in die Versionskontrollsoftware einchecken und die Entwicklung im Log
zurückverfolgen. LaTeX ist gls:libre unter der LaTeX Project Public
License.
Die Grafiken in diesem Dokument wurden hauptsächlich mit dem Vektor Grafik
Editor Inkscape footcite:inkscape erstellt. Inkscape ist gls:libre unter der
GNU Public License v3.
Die Diagramme wurden mit Draw.io footcite:draw erstellt. Draw.io ist gls:libre
unter Apache Lizenz Version 2.0 footcite:apache und kann sowohl als Desktop
Applikation wie auch als Webanwendung genutzt werden.
** TODO User Stories
2018-12-10 21:16:57 +01:00
PLACEHOLDER
2018-12-12 21:47:20 +01:00
** TODO Use Cases
2018-12-10 21:16:57 +01:00
PLACEHOLDER
**** TODO Anwendungsfalldiagramm
PLACEHOLDER
**** TODO Use Cases Detailbeschreibung
PLACEHOLDER
** TODO Benutzerinterface
*** TODO Inspiration
PLACEHOLDER
*** TODO Frontend Umsetzung
PLACEHOLDER
*** TODO Backend Umsetzung
PLACEHOLDER
* TODO Testing
PLACEHOLDER
** TODO Testfälle
PLACEHOLDER
* TODO Fazit
** TODO Projektmanagement
PLACEHOLDER
** TODO Umsetzung
PLACEHOLDER
** Gelerntes
PLACEHOLDER
2018-12-08 08:28:12 +01:00
* Bibliography :no_export:
bibliography:general/bibliography.bib
2018-12-18 21:16:01 +01:00