move typo fixes

This commit is contained in:
Andreas Zweili 2019-01-10 21:40:35 +01:00
parent 6f7fecec07
commit 8b972523ed
1 changed files with 83 additions and 81 deletions

View File

@ -37,40 +37,41 @@ Ereignis, und nach Kapiteln getrennt.
Dieses Dokument wurde von Andreas Zweili im Rahmen der Diplomarbeit an der IBZ 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. 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 Dadurch darf die Arbeit unter Beibehalten der Lizenz kopiert und
weiterverarbeitet werden. Zusätzlich muss der Urheber genannt werden. weiterverarbeitet werden. Zusätzlich muss der Urheber genannt werden.
* Initialisierung * Initialisierung
** Vision ** Vision
Die Software soll gls:borg für den durchschnittlichen Computer User zugänglich Die Software soll gls:borg für den durchschnittlichen Computer User zugänglich
machen. Die Backups sollen dabei schnell und unkompliziert erstellt werden machen. Backups sollen dabei schnell und unkompliziert erstellt werden können.
können. Die Möglichkeit automatischer im Hintergrund laufender Backups soll dem Auch 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. 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 Die besten Backups sind solche bei denen man gar nicht mehr weiss das man sie
hat bis man sie braucht. hat bis man sie braucht.
** Ausgangslage ** Ausgangslage
gls:borg ist deshalb interessant weil es während einem Backup relativ gls:borg ist deshalb interessant, weil es während einem Backup relativ
wenig Ressource im Vergleich zu anderen Systemen benötigt und schon relativ wenig Ressource im Vergleich zu anderen Systemen benötigt und schon relativ
lange aktiv entwickelt wird. Dadurch ist es im Alltag geprüft worden. lange aktiv entwickelt wird. Dadurch ist es im Alltag geprüft worden.
Des weiteren bietet gls:borg die Funktion für Verschlüsselung was es einem User Des Weiteren bietet gls:borg die Funktion für Verschlüsselung was es einem User
ermöglicht die Daten auf einem unsicheren Cloud Speicher abzulegen. ermöglicht die Daten auf einem unsicheren Cloud Speicher abzulegen.
Des weiteren speichert gls:borg die Daten mit Block basierter gls:dedup ab. Dies Des Weiteren speichert gls:borg die Daten mit Block basierter gls:dedup ab. Dies
hat den riesigen Vorteil das bei einem Backup nur die Änderungen auf hat den riesigen Vorteil das bei einem Backup nur die Änderungen auf
Block-Ebene gespeichert werden und nicht jedes Mal die ganze Datei kopiert Block-Ebene gespeichert werden und nicht jedes Mal die ganze Datei kopiert
werden muss. werden muss.
Damit ermöglicht die Software auch Backups von sehr grossen Dateien, wie Videos Damit ermöglicht die Software auch Backups von sehr grossen Dateien, wie Videos
oder Disk Images von virtuellen Maschinen, in mehreren Version. Ohne dabei oder Disk Images von virtuellen Maschinen, in mehreren Versionen. Ohne dabei
jedoch signifikant mehr an Speicher zu benötigen. Zusätzlich werden die Backups jedoch signifikant mehr an Speicher zu benötigen. Zusätzlich werden die Backups
dadurch rasend schnell ausgeführt. Gerade dieses Feature macht gls:borg in den dadurch rasend schnell ausgeführt. Gerade dieses Feature macht gls:borg in den
Augen des Autors besonders interessant da sich der durchschnittliche User Augen des Autors besonders interessant da sich der durchschnittliche User
möglichst wenig mit Dingen wie Backups auseinander setzen möchte. Umso besser möglichst wenig mit Dingen wie Backups auseinandersetzen möchte. Umso besser
also wenn sie schnell gehen und so wenig Speicherplatz wie möglich verbrauchen. also, wenn sie schnell gehen und so wenig Speicherplatz wie möglich verbrauchen.
gls:borg wird jedoch komplett über die Kommandozeile bedient. Somit ist es für gls:borg wird jedoch komplett über die Kommandozeile bedient. Somit ist es für
normale Benutzer eher schwierig den Zugang zu der Software zu finden geschweige normale Benutzer eher schwierig den Zugang zu der Software zu finden geschweige
@ -89,9 +90,9 @@ Stunden bis zum 18. März 2019 erarbeitet werden.
Das Hauptziel der Arbeit soll es sein eine einfach nutzbare grafische Das Hauptziel der Arbeit soll es sein eine einfach nutzbare grafische
Oberfläche für gls:borg zu entwickeln. Da gls:borg selber freie Software ist und Oberfläche für gls:borg zu entwickeln. Da gls:borg selber freie Software ist und
der Autor mit gls:libre viel gute Erfahrungen gemacht hat soll das Projekt der Autor mit gls:libre viel gute Erfahrungen gemacht hat, soll das Projekt
selber auch wieder gls:libre sein. Zum einen um der Community etwas 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 zurückzugeben des weiteren, um anderen Entwicklern die Möglichkeit zu geben die
Software zu verbessern und weiter zu entwickeln. Software zu verbessern und weiter zu entwickeln.
Als neben läufiges Ziel soll mit dieser Arbeit auch die Verbreitung von freier Als neben läufiges Ziel soll mit dieser Arbeit auch die Verbreitung von freier
@ -113,10 +114,10 @@ auszuweiten.
Im Projektantrag wurden vor gängig folgende Ziele definiert und entsprechend Im Projektantrag wurden vor gängig folgende Ziele definiert und entsprechend
gewichtet. Die Gewichtung wurde dabei so vorgenommen, dass Ziele mit einer gewichtet. Die Gewichtung wurde dabei so vorgenommen, dass Ziele mit einer
Muss-Gewichtung den Minimalanforderungen der Software entsprechen. Muss-Gewichtung den Minimalanforderungen der Software entsprechen. Die weiteren
Die weiteren Ziele wurden dann mit Ziffern von 5-1 gewichtet. Eine 5 bedeutet Ziele wurden dann mit Ziffern von 5 bis 1 gewichtet. Eine 5 bedeutet dabei
dabei dass, das Ziel in naher Zukunft sehr nützlich/wichtig für die Software dass, das Ziel in naher Zukunft sehr nützlich/wichtig für die Software wäre
wäre ist. Eine tiefe Zahl sollte dabei wenn möglich auch einmal in die Software ist. Eine tiefe Zahl sollte dabei, wenn möglich, auch einmal in die Software
integriert werden und ist nicht unwichtig. integriert werden und ist nicht unwichtig.
#+CAPTION: Projektziele #+CAPTION: Projektziele
@ -196,13 +197,13 @@ integriert werden und ist nicht unwichtig.
Die Anwendung beschränkt sich darauf Funktionen von gls:borg grafisch Die Anwendung beschränkt sich darauf Funktionen von gls:borg grafisch
darzustellen oder nützlich zu erweitern soweit dies über die gls:api möglich darzustellen oder nützlich zu erweitern soweit dies über die gls:api möglich
ist. Wie in, Abbildung:([[fig:kontext]]), zu sehen ist werden die Aktion effektiv ist. Wie in Abbildung:([[fig:kontext]]) zu sehen ist, werden die Aktionen effektiv
immer vom Borg Binary ausgeführt und nicht von der grafischen Oberfläche. Eine immer vom Borg Binary ausgeführt und nicht von der grafischen Oberfläche. Eine
Erweiterung von gls:borg ist nicht vorgesehen. Backup und Verschlüsselung sind Erweiterung von gls:borg ist nicht vorgesehen. Backup und Verschlüsselung sind
heikle Themen und sollten unbedingt nur von Experten angegangen werden. Das heikle Themen und sollten unbedingt nur von Experten angegangen werden. Das
Potential für Fehler und die Auswirkungen deren sind einfach schlicht zu gross. Potenzial für Fehler und die Auswirkungen derer, sind einfach schlicht zu gross.
Des weiteren wird die Grundlage für eine kollaborative Entwicklung geschaffen. Des Weiteren wird die Grundlage für eine kollaborative Entwicklung geschaffen.
Während der Laufzeit der Diplomarbeit werden jedoch keine Inputs aus der Borg Während der Laufzeit der Diplomarbeit werden jedoch keine Inputs aus der Borg
Community im Bezug auf die Entwicklung entgegengenommen. Community im Bezug auf die Entwicklung entgegengenommen.
@ -217,8 +218,8 @@ entdeckt werden, wird dieser dem Projekt melden jedoch nicht selber beheben.
** Projektmethode ** Projektmethode
Für das Projekt wurde die Wasserfall-Methode gewählt. Da nur eine Für das Projekt wurde die Wasserfall-Methode gewählt. Da nur eine
einzige Person am Projekt arbeitet kann nur ein Task nach dem anderen einzige Person am Projekt arbeitet, kann nur ein Task nach dem anderen
abgearbeitet werden und viele Aufgaben stehen in Abhängigkeiten zu einander. abgearbeitet werden und viele Aufgaben stehen in Abhängigkeiten zueinander.
Somit macht das iterative Vorgehen der Wasserfall-Methode für dieses Projekt am Somit macht das iterative Vorgehen der Wasserfall-Methode für dieses Projekt am
meisten Sinn. meisten Sinn.
@ -240,26 +241,26 @@ Versionsnummern sind für die Applikation zum jetzigen Zeitpunkt noch nicht
vorgesehen. Sollten sie zukünftig einmal verwendet werden soll eine semantische vorgesehen. Sollten sie zukünftig einmal verwendet werden soll eine semantische
Versionierung footcite:semver verwendet. Dabei ist eine Versionsnummer immer Versionierung footcite:semver verwendet. Dabei ist eine Versionsnummer immer
nach diesem Schema aufgebaut, MAJOR.MINOR.PATCH. Bei Änderungen wir die: nach diesem Schema aufgebaut, MAJOR.MINOR.PATCH. Bei Änderungen wir die:
1. MAJOR Version erhöht wenn man inkompatible Änderungen an der gls:api macht. 1. MAJOR Version erhöht, wenn man inkompatible Änderungen an der gls:api macht.
2. MINOR Version erhöht wenn man Funktionalität hinzufügt die 2. MINOR Version erhöht, wenn man Funktionalität hinzufügt, die
abwärtskompatibel ist. abwärtskompatibel ist.
3. PATCH Version erhöht wenn man abwärtskompatibel Bug-Fixes hinzufügt. 3. PATCH Version erhöht, wenn man abwärtskompatibel Bug-Fixes hinzufügt.
Auf jeden Fall sollte wenn möglich immer nur lauffähiger Code im Master Branch Auf jeden Fall sollte, wenn möglich immer nur lauffähiger Code im Master Branch
eingecheckt sein damit der Master Branch immer eine funktionierende Software eingecheckt sein damit der Master Branch immer eine funktionierende Software
repräsentiert. Dies gilt auch für das Repository der Dokumentation. Der Master repräsentiert. Dies gilt auch für das Repository der Dokumentation. Der Master
Branch der Dokumentation sollte maximal mit zwei Befehlen ~make clean~ und Branch der Dokumentation sollte maximal mit zwei Befehlen ~make clean~ und
~make~ "kompilierbar " sein. ~make~ "kompilierbar" sein.
Als Software für die Versionskontrolle wurde Git footcite:git aus folgenden Als Software für die Versionskontrolle wurde Git footcite:git aus folgenden
Gründen ausgewählt: Gründen ausgewählt:
- Ist der de facto Standard bei Versionskontrollsoftware - Ist der de facto Standard bei Versionskontrollsoftware
- Läuft auf allen gängigen Betriebssystemen - Läuft auf allen gängigen Betriebssystemen
- Es gäbe gratis Services die man nutzen könnte (Github, Gitlab) - Es gäbe gratis Services, die man nutzen könnte (Github, Gitlab)
- Man kann offline arbeiten und Commits erstellen - Man kann offline arbeiten und Commits erstellen
- Der Author hat bereits einen eigenen Git Server zur Verfügung - Der Autor hat bereits einen eigenen Git Server zur Verfügung
- Der Author ist bereits mit Git aus vorhergehenden Projekten vertraut, - Der Autor ist bereits mit Git aus vorhergehenden Projekten vertraut,
dadurch muss man keine Ressourcen aufwenden eine neue Software zu lernen. dadurch muss man keine Ressourcen aufwenden eine neue Software zu lernen.
Zusätzlich hat sich Git in den vorhergehenden Projekten als robuste Zusätzlich hat sich Git in den vorhergehenden Projekten als robuste
und schnelle Software erwiesen. und schnelle Software erwiesen.
@ -279,13 +280,13 @@ und Emails schreiben ist alles möglich.
Diese Dokumentation wurde in Org-mode footcite:orgmode, einer Erweiterung für Diese Dokumentation wurde in Org-mode footcite:orgmode, einer Erweiterung für
den Text Editor Emacs, geschrieben. Die Syntax erinnert an Markdown und 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 Org-mode bietet einem eine Vielzahl an Hilfen dafür inklusive dem Erstellen von
Tabellen und Spreadsheet Funktionen. Für finale Version des Dokuments kann Tabellen und Spreadsheet Funktionen. Für finale Version des Dokuments kann
Org-mode die ursprünglich Textdatei über LaTeX in ein PDF exportieren. Org-mode die ursprünglich Textdatei über LaTeX in ein PDF exportieren.
LaTeX footcite:latex ist eine Software, welche einem die Benutzung des LaTeX footcite:latex ist eine Software, welche einem die Benutzung des
Textsatzsystems TeXs vereinfacht. LaTeX wurde gegenüber einem "What You See Is 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 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 Sprache erlaubt das Dokument in Text Dateien zu erstellen, gerade für
Programmiere ist dies eine sehr interessante Lösung. Dadurch, dass LaTeX auch Programmiere ist dies eine sehr interessante Lösung. Dadurch, dass LaTeX auch
nur aus reinen Textdateien besteht, kann man die Dokumente auch ohne weiteres nur aus reinen Textdateien besteht, kann man die Dokumente auch ohne weiteres
@ -301,34 +302,35 @@ 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 unter Apache Lizenz Version 2.0 footcite:apache und kann sowohl als Desktop
Applikation wie auch als Webanwendung genutzt werden. Applikation wie auch als Webanwendung genutzt werden.
Beim Design der Arbeit wurden soweit als möglich die typographischen Regeln aus Beim Design der Arbeit wurden soweit als möglich die typografischen Regeln aus
dem Buch "Practical Typography" von Matthew Butterick footcite:typo angewandt. dem Buch "Practical Typography" von Matthew Butterick footcite:typo angewandt.
Bei den Diagrammen wurden ausschliesslich Farben aus der von Google Bei den Diagrammen wurden ausschliesslich Farben aus der von Google
entwickelten Design Sprache "Material"footcite:material eingesetzt. entwickelten Design Sprache "Material" footcite:material eingesetzt.
** Zeitplanung ** Zeitplanung
Die detaillierte Zeitplanung ist dem Ganttchart in der Datei Die detaillierte Zeitplanung ist dem Ganttchart in der Datei
[[file:Zeitplanung_Andreas_Zweili.html][Zeitplanung_Andreas_Zweili.html]] zu entnehmen. Bei der Zeitplanung wurde darauf [[file:Zeitplanung_Andreas_Zweili.html][Zeitplanung_Andreas_Zweili.html]] zu entnehmen. Bei der Zeitplanung wurde darauf
geachtet das die Arbeit soweit als möglich nicht mit dem Berufsleben kollidiert geachtet das die Arbeit soweit, als möglich nicht mit dem Berufsleben
An einem normalen Arbeitstag wurde dabei damit gerechnet das ca. 2 Stunden kollidiert An einem normalen Arbeitstag wurde dabei damit gerechnet das ca. 2
Arbeit am Abend möglich sein sollten. An einem arbeitsfreien Tag wurde mit 6 Stunden Arbeit am Abend möglich sein sollten. An einem arbeitsfreien Tag wurde
Stunden Arbeit gerechnet. Über die Festtage wurden diverse Tage von der Planung mit 6 Stunden Arbeit gerechnet. Über die Festtage wurden diverse Tage von der
ausgenommen da es nicht realistisch schien das an diesen Tagen die Arbeit Planung ausgenommen, da es nicht realistisch schien das an diesen Tagen die
signifikant vorwärts gehen würde. Auch Schultage wurde nicht als Arbeitstage Arbeit signifikant vorwärtsgehen würde. Auch Schultage wurde nicht, als
gerechnet da man meist nicht mehr für weitere Tätigkeiten gross motiviert ist. Arbeitstage gerechnet da man meist nicht mehr für weitere Tätigkeiten gross
motiviert ist.
Als zusätzliche Massnahme um die Arbeitslast zu verteilen wurde vom 14. Januar Als zusätzliche Massnahme um die Arbeitslast zu verteilen wurde vom 14. Januar
bis zum 11. März jeder Montag auf der Arbeitsstelle als frei eingegeben. bis zum 11. März jeder Montag auf der Arbeitsstelle als frei eingegeben.
Dadurch steht wägend des Projektes etwas mehr Zeit zur Verfügung als sonst mit Dadurch steht wägend des Projektes etwas mehr Zeit zur Verfügung als sonst mit
einer 100% Arbeitsstelle möglich wäre. einer 100 Prozent Arbeitsstelle möglich wäre.
** Controlling ** Controlling
Das Controlling wird verwendet um zu kontrollieren das die eigentliche Planung Das Controlling wird verwendet, um zu kontrollieren, dass die eigentliche
mit dem effektiv geleisteten Aufwand respektive den effektiv verwendeten Planung mit dem effektiv geleisteten Aufwand respektive den effektiv
Ressourcen übereinstimmt. Somit können für zukünftige Projekte Lehren gezogen verwendeten Ressourcen übereinstimmt. Somit können für zukünftige Projekte
werden. Lehren gezogen werden.
#+LATEX:\newpage #+LATEX:\newpage
#+LATEX:\begin{landscape} #+LATEX:\begin{landscape}
@ -395,7 +397,7 @@ theoretischer Faktor.
Das Risikomanagement dient dazu Risiken im Projekt zu erkennen und Massnahmen Das Risikomanagement dient dazu Risiken im Projekt zu erkennen und Massnahmen
zur Vermeidung der Risiken zu definieren. Dadurch steht man ihnen nicht zur Vermeidung der Risiken zu definieren. Dadurch steht man ihnen nicht
unvorbereitet gegenüber sollten sie eintreffen. unvorbereitet gegenüber, sollten sie eintreffen.
*** Risikobeschreibung *** Risikobeschreibung
@ -482,19 +484,19 @@ Verfügung gestellt.
** Risiko-Analyse ** Risiko-Analyse
Bei der Risikoanalyse wird von einem durchschnittlichen Benutzer ausgegangen Bei der Risiko-Analyse wird von einem durchschnittlichen Benutzer ausgegangen,
der zur Zeit noch keine Backups macht und beginnen möchte gls:borg zu nutzen um der zur Zeit noch keine Backups macht und beginnen möchte gls:borg zu nutzen, um
auf einer externen Harddisk seine Backups zu speichern. auf einer externen Harddisk seine Backups zu speichern.
Es wird dabei eine Ist/Soll Analyse gemacht um die Lösung gegenüber der Es wird dabei eine Ist/Soll Analyse gemacht, um die Lösung gegenüber der
bestehenden Möglichkeiten zu vergleichen. Jedes Risiko wurde entsprechend der bestehenden Möglichkeiten zu vergleichen. Jedes Risiko wurde entsprechend der
Tabelle: ([[tab:wahrscheinlichkeit]]) nach der Wahrscheinlichkeit des Eintreffens Tabelle: ([[tab:wahrscheinlichkeit]]) nach der Wahrscheinlichkeit des Eintreffens
bewertet und entsprechend der Tabelle: ([[tab:auswirkung]]) nach seiner Auswirkung bewertet und entsprechend der Tabelle: ([[tab:auswirkung]]) nach seiner Auswirkung
im Bezug auf die Nützlichkeit der gemachten Backups. im Bezug auf die Nützlichkeit der gemachten Backups.
In der Tabelle: ([[tab:risikobeschreibung]]) sind dabei die Risiken für das In der Tabelle: ([[tab:risikobeschreibung]]) sind dabei die Risiken für das
Szenario aufgelistet und nummeriert. In der, Abbildung:([[fig:istrisiko]]), ist die Szenario aufgelistet und nummeriert. In der Abbildung:([[fig:istrisiko]]), ist die
Bewertung des Ist-Risikos grafisch dargestellt und in der, Bewertung des Ist-Risikos grafisch dargestellt und in der
Abbildung:([[fig:sollrisiko]]), ist das Soll-Risiko welches mit dieser Arbeit Abbildung:([[fig:sollrisiko]]), ist das Soll-Risiko welches mit dieser Arbeit
angestrebt wird ebenfalls grafisch dargestellt. angestrebt wird ebenfalls grafisch dargestellt.
@ -566,13 +568,13 @@ Abbildung:([[fig:swot]]) zu sehen.
** Anforderungskatalog ** Anforderungskatalog
Der Anforderungskatalog entspricht 1:1 den Zielen welche in der Tabelle Der Anforderungskatalog entspricht 1 zu 1 den Zielen, welche in der Tabelle
[[tab:projektziele]] definiert wurden. [[tab:projektziele]] definiert wurden.
** Use Cases ** Use Cases
Ein Use Case sammelt alle möglichen Szenarien, die eintreten können, Ein Use Case sammelt alle möglichen Szenarien, die eintreten können,
wenn ein Akteur versucht, mit Hilfe des betrachteten Systems ein wenn ein Akteur versucht, mithilfe des betrachteten Systems ein
bestimmtes Ziel zu erreichen. Dabei beschreibt er, was beim Versuch der bestimmtes Ziel zu erreichen. Dabei beschreibt er, was beim Versuch der
Zielerreichung passieren kann. Je nach Ablauf kann auch ein Fehlschlag Zielerreichung passieren kann. Je nach Ablauf kann auch ein Fehlschlag
ein Ergebnis eines Anwendungsfalls sein (e.g. falsches Passwort beim ein Ergebnis eines Anwendungsfalls sein (e.g. falsches Passwort beim
@ -601,14 +603,14 @@ Das Anwendungsfalldiagramm für das gls:borg gls:gui ist in der Abbildung:
*** Use Cases Detailbeschreibung *** Use Cases Detailbeschreibung
Use Cases werden in der Regel mit Hilfe einer sogenannten Use Case Schablone im Use Cases werden in der Regel mithilfe einer sogenannten Use Case Schablone im
Detail beschrieben, damit klar ist, wie der Ablauf jeweils genau aussieht. Die Detail beschrieben, damit klar ist, wie der Ablauf jeweils genau aussieht. Die
in diesem Projekt verwendete Schablone wurde von Alistair Cockburn definiert. in diesem Projekt verwendete Schablone wurde von Alistair Cockburn definiert.
Die nachfolgend aufgeführten Use Cases, Tabellen:([[tab:uc_backup]], [[tab:uc_delete]], Die nachfolgend aufgeführten Use Cases, Tabellen:([[tab:uc_backup]], [[tab:uc_delete]],
[[tab:uc_restore]], [[tab:uc_file]], [[tab:uc_mount]], [[tab:uc_config]], [[tab:uc_automatic]]) [[tab:uc_restore]], [[tab:uc_file]], [[tab:uc_mount]], [[tab:uc_config]], [[tab:uc_automatic]])
wurden dem Anwendungsfalldiagramm, Abbildung:([[fig:usecase]]), entnommen und wurden dem Anwendungsfalldiagramm, Abbildung:([[fig:usecase]]), entnommen und
zusätzlich noch um jeweils ein Aktivitätsdiagramm , Abbildungen: zusätzlich noch um jeweils ein Aktivitätsdiagramm, Abbildungen:
([[fig:activity_backup]], [[fig:activity_delete]], [[fig:activity_restore]], ([[fig:activity_backup]], [[fig:activity_delete]], [[fig:activity_restore]],
[[fig:activity_mount]], [[fig:activity_settings]], [[fig:activity_automatic]]), erweitert [[fig:activity_mount]], [[fig:activity_settings]], [[fig:activity_automatic]]), erweitert
um den Ablauf verständlicher zu machen. um den Ablauf verständlicher zu machen.
@ -961,7 +963,7 @@ Use Cases und zeigt einem gut die Zuständigkeiten der Aktoren auf.
** Varianten ** Varianten
Da Borg eine JSON API zur Verfügung stellt bieten sich diverse Möglichkeiten um 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 das Programm anzubinden. Da das Ziel ist, das Programm normalen Nutzern
zugänglicher zu machen, bietet sich ein normales Desktop Programm am ehesten 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 an. Desktop Programme werden von allen Computer Usern täglich genutzt und sind
@ -974,7 +976,7 @@ Projekt.
Die Bewertungspunkte setzen sich einerseits aus den Projektzielen anderseits Die Bewertungspunkte setzen sich einerseits aus den Projektzielen anderseits
aus für das Projekt sinnvollen Punkten zusammen. Dadurch ergeben sich dann die aus für das Projekt sinnvollen Punkten zusammen. Dadurch ergeben sich dann die
Bewertungen welche in der nachfolgenden Tabelle aufgenommen wurden. Die Bewertungen, welche in der nachfolgenden Tabelle aufgenommen wurden. Die
möglichen Varianten wurden danach bewertet. Die effektive Berechnung des möglichen Varianten wurden danach bewertet. Die effektive Berechnung des
Resultats wird nach folgender Formel durchgeführt. Resultats wird nach folgender Formel durchgeführt.
@ -1017,26 +1019,26 @@ der Tabelle Projektziele ([[tab:projektziele]]).
*** Backend *** Backend
Fürs Backend bieten sich die folgende drei Sprachen an: [[C#][C#]], [[C++][C++]], [[Python][Python]]. Fürs Backend bieten sich die folgende drei Sprachen an: [[C#][C#]], [[C++][C++]], [[Python][Python]].
Dies vor allem weil alle Allrounder Sprachen sind und sich gut für Desktop Dies vor allem, weil alle Allrounder Sprachen sind und sich gut für Desktop
Applikationen eignen. Applikationen eignen.
**** C# **** C#
C# ist eine von Microsoft entwickelte Programmiersprache welche viele C# ist eine von Microsoft entwickelte Programmiersprache welche viele
Frameworks zur Verfügung hat. Insbesondere Aufgrund der grossen kommerziellen Frameworks zur Verfügung hat. Insbesondere aufgrund der grossen kommerziellen
Nutzung und der guten Integration mit Windows hat C# eine relative grosse Nutzung und der guten Integration mit Windows hat C# eine relative grosse
Verbreitung. Bei Linux und OS X ist es jedoch schwieriger C# zu integrieren und Verbreitung. Bei Linux und OS X ist es jedoch schwieriger C# zu integrieren und
zu nutzen. zu nutzen.
Sie ist zu Teilen gls:libre. Die Common Language Runtime welche für das Sie ist zu Teilen gls:libre. Die Common Language Runtime, welche für das
Ausführen von Software zuständig ist, ist unter der MIT Lizenz lizenziert Ausführen von Software zuständig ist, ist unter der MIT Lizenz lizenziert
footcite:csharp der aktuelle Compiler Roslyn ist unter der Apache Lizenz footcite:csharp der aktuelle Compiler Roslyn ist unter der Apache Lizenz
verfügbar footcite:roslyn. Da es sehr viele offizielle Teile um die Sprache C# verfügbar footcite:roslyn. Da es sehr viele offizielle Teile um die Sprache C#
gibt kann im Rahmen des Projektes nicht direkt abgeschätzt werden ob alle gibt, kann im Rahmen des Projektes nicht direkt abgeschätzt werden, ob alle
benötigten Teile gls:libre sind. Für die Bewertung wird deshalb ein kleinerer benötigten Teile gls:libre sind. Für die Bewertung wird deshalb ein kleinerer
Wert als bei C++ und Python genommen. Wert als bei C++ und Python genommen.
C# ist die Programmiersprache welche an der IBZ hauptsächlich gelehrt wird. C# ist die Programmiersprache, welche an der IBZ hauptsächlich gelehrt wird.
Dadurch sind die Kenntnisse der Sprache und ihrer Anwendung bereits Dadurch sind die Kenntnisse der Sprache und ihrer Anwendung bereits
einigermassen vorhanden. Ausserhalb der Schule wurde die Sprache jedoch noch nie einigermassen vorhanden. Ausserhalb der Schule wurde die Sprache jedoch noch nie
eingesetzt. eingesetzt.
@ -1044,7 +1046,7 @@ eingesetzt.
Entwickelt wird C# hauptsächlich mit der gls:ide Microsoft Visual Studio. Entwickelt wird C# hauptsächlich mit der gls:ide Microsoft Visual Studio.
Eine sehr umfangreiche und komplexe Software. Visual Studio ist dabei nur für Eine sehr umfangreiche und komplexe Software. Visual Studio ist dabei nur für
Windows und OS X erhältlich. Es ist auch möglich C# Projekte ausserhalb von Windows und OS X erhältlich. Es ist auch möglich C# Projekte ausserhalb von
Visual Studio zu erstellen ist jedoch nicht sehr einfach. Visual Studio zu erstellen, es ist jedoch nicht sehr einfach.
Der Code ist gut lesbar und es gibt offizielle Styleguides von Microsoft was Der Code ist gut lesbar und es gibt offizielle Styleguides von Microsoft was
den Code über Projekte hinaus einigermassen einheitlich aussehen lässt. Zudem den Code über Projekte hinaus einigermassen einheitlich aussehen lässt. Zudem
@ -1059,17 +1061,17 @@ installieren und nutzbar zu machen. Auf anderen Plattform wird dies leider
nicht einfacher und unter Linux ist es bereits schwierig eine funktionierende nicht einfacher und unter Linux ist es bereits schwierig eine funktionierende
Umgebung in Gang zu bringen. Umgebung in Gang zu bringen.
Da C# bereits an der IBZ gelernt wird ist der Lernfaktor hier im Vergleich zu Da C# bereits an der IBZ gelernt wird, ist der Lernfaktor hier im Vergleich zu
den anderen Sprachen sicher am kleinsten. Allerdings gibt es noch keinerlei den anderen Sprachen sicher am kleinsten. Allerdings gibt es noch keinerlei
Kenntnisse beim Einbinden eines der unten aufgeführten gls:gui Frameworks. Kenntnisse beim Einbinden eines der unten aufgeführten gls:gui Frameworks.
Daher gibt es auf jeden Fall noch genügend zu lernen. Daher gibt es auf jeden Fall noch genügend zu lernen.
Die gls:borg Community hat vor relativ kurzer Zeit die offizielle Unterstützung Die gls:borg Community hat vor relativ kurzer Zeit die offizielle Unterstützung
von Windows zurückgezogen. Da C# eine sehr Windows lastige Sprache ist wird von Windows zurückgezogen. Da C# eine sehr Windows lastige Sprache ist, wird
daher davon ausgegangen das die Sprache innerhalb der gls:borg Community nicht daher davon ausgegangen das die Sprache innerhalb der gls:borg Community nicht
sehr verbreitet ist. sehr verbreitet ist.
C# ist eine stark typisiert Sprache und kompilierte Sprache. Des weiteren ist C# ist eine stark typisiert Sprache und kompilierte Sprache. Des Weiteren ist
Visual Studio der Erfahrung nach nicht die schnellste Software. Dies alles Visual Studio der Erfahrung nach nicht die schnellste Software. Dies alles
führt dazu das C# nicht gerade die schnellste Sprache zum Programmieren ist. führt dazu das C# nicht gerade die schnellste Sprache zum Programmieren ist.
Jedoch aufgrund des moderneren Unterbaus sicher schneller als C++. Jedoch aufgrund des moderneren Unterbaus sicher schneller als C++.
@ -1101,7 +1103,7 @@ Jedoch aufgrund des moderneren Unterbaus sicher schneller als C++.
C++ ist eine stark typisierte und kompilierte Programmiersprache. Sie ist seit C++ ist eine stark typisierte und kompilierte Programmiersprache. Sie ist seit
1998 Teil des ISO Standards footcite:cpp98. ISO/IEC 14882:2017 footcite:cpp17 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 ist zurzeit die aktuellste Variante. Die Sprache existiert seit ca. 33 Jahren
und hat eine weitreichende Verbreitung gefunden. C++ ist auf allen und hat eine weitreichende Verbreitung gefunden. C++ ist auf allen
Betriebssystemen gut unterstützt muss jedoch für jedes System separat Betriebssystemen gut unterstützt muss jedoch für jedes System separat
kompiliert werden. kompiliert werden.
@ -1113,18 +1115,18 @@ 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 läuft sehr gut auf jedem System. C++ ist im Vergleich zu modernen Sprachen
jedoch relativ komplex und bietet diverse Stolpersteine für Programmierer. jedoch relativ komplex und bietet diverse Stolpersteine für Programmierer.
Zum entwickeln braucht es verhältnismässig wenig. Da die Sprache bereits sehr 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 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 programmierte. Allerdings braucht man in jedem Fall einen gls:compiler um ein
ausführbares Programm zu erzeugen. Bei komplexeren Programmen wird man um ausführbares Programm zu erzeugen. Bei komplexeren Programmen wird man um
mindestens so etwas wie glspl:makefile auch nicht herum kommen mindestens so etwas wie glspl:makefile auch nicht herumkommen
Im Vergleich zu Python oder C# ist C++ wohl die am schwersten lesbare Sprache. 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 Zudem gibt es auch keinen zentralen Styleguide, welcher einem vorgeben würde wie
der Code am besten ausschauen sollte. Somit haben sich über die Jahre mehrere der Code am besten ausschauen sollte. Somit haben sich über die Jahre mehrere
Standards etabliert. Standards etabliert.
Der Lernfaktor wäre Aufgrund der mangelnden Vorkenntnisse hier ganz klar am Der Lernfaktor wäre aufgrund der mangelnden Vorkenntnisse hier ganz klar am
Grössten. Grössten.
Da C++ eine alte Sprache ist geniesst sie auch eine dementsprechende Da C++ eine alte Sprache ist geniesst sie auch eine dementsprechende
@ -1132,10 +1134,10 @@ Verbreitung. Daher ist anzunehmen das sicher mindestens ein grössere Teil der
älteren BorgBackup Entwickler C++ oder C gelernt haben. älteren BorgBackup Entwickler C++ oder C gelernt haben.
Da C++ auch heute noch zu den meistgenutzten Sprachen gehört gibt es Da C++ auch heute noch zu den meistgenutzten Sprachen gehört gibt es
entsprechend viele Ressourcen dazu und Beispiel Projekte von denen man ableiten entsprechend viele Ressourcen dazu und Beispiel Projekte, von denen man ableiten
kann. Auch hilfreiche Libraries gibt es sehr viele welche den Programmierer kann. Auch hilfreiche Libraries gibt es sehr viele, welche den Programmierer
unterstützen können. Die Sprache selber ist jedoch eher umständlich zu 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 schreiben. Hinzu kommt noch das man, während der Entwicklung immer wieder den
Code kompilieren muss. In einem Projekt mit dieser begrenzten Zeitspanne eher Code kompilieren muss. In einem Projekt mit dieser begrenzten Zeitspanne eher
ungeeignet. ungeeignet.
@ -1168,7 +1170,7 @@ 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 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. 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. Version 3 lässt sich sehr einfach nachinstallieren und ist einfach nutzbar.
Unter Windows gestaltetet sich die Installation etwas aufwändiger aber auch Unter Windows gestaltetet sich die Installation etwas aufwendiger aber auch
nicht sehr kompliziert integriert sich in Windows jedoch etwas weniger elegant nicht sehr kompliziert integriert sich in Windows jedoch etwas weniger elegant
als C#. als C#.
@ -1204,7 +1206,7 @@ python3 example.py
Da Python schon eine etwas bekanntere Sprache ist, ist der Lernfaktor der Da Python schon eine etwas bekanntere Sprache ist, ist der Lernfaktor der
Sprache selber nicht mehr so hoch. Allerdings gibt es noch viele interessante 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 Konzepte, die man im Zusammenhang mit der Sprache lernen kann. Wie etwa zum
Beispiel multiple Vererbung von Klassen. Beispiel multiple Vererbung von Klassen.
gls:borg selber wurde in Python geschrieben. Daher ist davon auszugehen das gls:borg selber wurde in Python geschrieben. Daher ist davon auszugehen das
@ -1214,7 +1216,7 @@ Python ist eine dynamisch typisierte und interpretierte Sprache. Dies bedeutet
das man bei Variablen nicht explizit den Typ angeben muss und die Programme zur das man bei Variablen nicht explizit den Typ angeben muss und die Programme zur
Laufzeit für den Computer übersetzt werden. Interpretierte Sprachen haben den Laufzeit für den Computer übersetzt werden. Interpretierte Sprachen haben den
Vorteil das man mit ihnen in der Regel sehr schnell und unkompliziert Vorteil das man mit ihnen in der Regel sehr schnell und unkompliziert
entwickeln kann, dies jedoch zu Lasten der Performance. entwickeln kann, dies jedoch zulasten der Performance.
#+CAPTION: Python Bewertungstabelle #+CAPTION: Python Bewertungstabelle
#+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}| #+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4cm}|c|p{2cm}|p{2cm}|p{2cm}|
@ -1244,14 +1246,14 @@ entwickeln kann, dies jedoch zu Lasten der Performance.
Fürs Frontend sind folgende Projekte interessant: [[Qt][Qt]], [[Gtk][Gtk]] und [[Electron][Electron]]. Alle Fürs Frontend sind folgende Projekte interessant: [[Qt][Qt]], [[Gtk][Gtk]] und [[Electron][Electron]]. Alle
drei sind cross-plattform fähige gls:gui Frameworks und nicht von einer drei sind cross-plattform fähige gls:gui Frameworks und nicht von einer
spezifischen Sprache abhängig. Da nahezu keine Erfahrung mit den aufgeführten spezifischen Sprache abhängig. Da nahezu keine Erfahrung mit den aufgeführten
Frameworks vorhanden ist werden bei den Frontend Frameworks die Punkte der Frameworks vorhanden ist, werden bei den Frontend Frameworks die Punkte der
Verbreitung in der Community und Geschwindigkeit der Entwicklung ausgeschlossen Verbreitung in der Community und Geschwindigkeit der Entwicklung ausgeschlossen.
da in allen Fällen nicht mal eine ungenaue Schätzung wirklich möglich wäre. In beiden Fällen wäre nicht mal eine ungenaue Schätzung wirklich möglich.
**** Qt **** Qt
Qt footcite:qt, "cute" ausgesprochen, ist ein Framework zum Entwickeln von Qt footcite:qt, "cute" ausgesprochen, ist ein Framework zum Entwickeln von
grafischen Oberflächen welche auf verschiedenen System ohne grosse Änderungen grafischen Oberflächen, welche auf verschiedenen System ohne grosse Änderungen
laufen sollen und sich dabei soweit als möglich wie eine native Applikation laufen sollen und sich dabei soweit als möglich wie eine native Applikation
verhalten und "anfühlen" soll. verhalten und "anfühlen" soll.