fix various typos
This commit is contained in:
parent
a7f26aaa02
commit
7ee4d0dc5f
|
@ -46,19 +46,19 @@ 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
|
User gegeben sein, damit die Hürde für Backups so tief wie möglich gehalten
|
||||||
wird.
|
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, dass 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, dass 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.
|
||||||
|
|
||||||
|
@ -66,12 +66,12 @@ Damit ermöglicht die Software auch Backups von sehr grossen Dateien, wie Videos
|
||||||
oder Disk Images von virtuellen Maschinen, in mehreren Versionen. 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 auseinandersetzen 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
|
||||||
denn sie zu bedienen.
|
denn sie zu bedienen.
|
||||||
|
|
||||||
gls:borg bietet Entwicklern eine gls:json, gls:api, mit welcher sie, von gls:borg
|
gls:borg bietet Entwicklern eine gls:json, gls:api, mit welcher sie, von gls:borg
|
||||||
|
@ -87,12 +87,12 @@ Stunden bis zum 18. März 2019 erarbeitet werden.
|
||||||
** Projektziele
|
** Projektziele
|
||||||
|
|
||||||
gls:borg ist eine Kommandozeilen basierte Backup Software. Ziel dieser Arbeit
|
gls:borg ist eine Kommandozeilen basierte Backup Software. Ziel dieser Arbeit
|
||||||
ist, ein gls:gui für die Software gls:borg zu entwickeln um die . Da gls:borg
|
ist, ein gls:gui für die Software gls:borg zu entwickeln um die Nutzung zu
|
||||||
selber freie Software ist und der Autor dieser Arbeit mit gls:libre viel gute
|
vereinfachen. Da gls:borg selber freie Software ist und mit freier Software
|
||||||
Erfahrungen gemacht hat, soll das Projekt selber auch wieder gls:libre sein.
|
viel gute Erfahrungen gemacht wurden, soll das Projekt selber auch wieder
|
||||||
Zum einen um der Community etwas zurückzugeben des weiteren, um anderen
|
gls:libre sein. Zum einen, um der Community etwas zurückzugeben, des weiteren,
|
||||||
Entwicklern die Möglichkeit zu geben die Software zu verbessern und weiter zu
|
um anderen Entwicklern die Möglichkeit zu geben die Software zu verbessern und
|
||||||
entwickeln.
|
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
|
||||||
Software gefördert werden. Dies wird insbesondere dadurch erreicht, dass die
|
Software gefördert werden. Dies wird insbesondere dadurch erreicht, dass die
|
||||||
|
@ -104,11 +104,10 @@ Zeitpunkt öffentlich einsehbar sein. Der Quelltext der Dokumentation ist unter
|
||||||
diesem Link erreichbar: https://git.2li.ch/Nebucatnetzer/thesis
|
diesem Link erreichbar: https://git.2li.ch/Nebucatnetzer/thesis
|
||||||
|
|
||||||
Die Entwicklung wird hauptsächlich auf einem Linux System stattfinden. Da
|
Die Entwicklung wird hauptsächlich auf einem Linux System stattfinden. Da
|
||||||
gls:borg einerseits hauptsächlich auf Unix Systeme ausgelegt ist und
|
gls:borg einerseits hauptsächlich auf Unix Systeme ausgelegt ist und anderseits
|
||||||
anderseits die Hauptzielgruppe des Projektes auch auf Linux Usern liegt.
|
die Hauptzielgruppe des Projektes auch auf Linux Usern liegt. Trotzdem sollen
|
||||||
Trotzdem sollen im Projekt cross-plattform fähige Technologien eingesetzt werden
|
im Projekt cross-plattform fähige Technologien eingesetzt werden, damit es in
|
||||||
damit es in der Zukunft möglich ist das Projekt auf andere Plattformen
|
der Zukunft möglich ist das Projekt auf andere Plattformen auszuweiten.
|
||||||
auszuweiten.
|
|
||||||
|
|
||||||
*** Ziele inklusive Gewichtung
|
*** Ziele inklusive Gewichtung
|
||||||
|
|
||||||
|
@ -116,8 +115,8 @@ Im Projektantrag wurden vorgä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 zu entwickelnden Software
|
Muss-Gewichtung den Minimalanforderungen der zu entwickelnden Software
|
||||||
entsprechen. Die weiteren Ziele wurden von 5 bis 1 gewichtet. Die Bewertung 5
|
entsprechen. Die weiteren Ziele wurden von 5 bis 1 gewichtet. Die Bewertung 5
|
||||||
bedeutet, das Umsetzung sehr nützlich und oder wichtig für die Software ist und
|
bedeutet, dass die Umsetzung sehr nützlich und oder wichtig für die Software
|
||||||
daher in naher Zukunft zu implementieren ist. Ein Ziel mit einer tiefen
|
ist und daher in naher Zukunft zu implementieren ist. Ein Ziel mit einer tiefen
|
||||||
Bewertung sollte, wenn möglich, auch einmal in die Software integriert werden
|
Bewertung sollte, wenn möglich, auch einmal in die Software integriert werden
|
||||||
und ist nicht unwichtig.
|
und ist nicht unwichtig.
|
||||||
|
|
||||||
|
@ -180,7 +179,7 @@ und ist nicht unwichtig.
|
||||||
|------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------------------------------|
|
|------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------------------------------|
|
||||||
| 26. | Der User kann die Anwendung grafisch konfigurieren. | | 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 |
|
| 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 |
|
| 28. | Der User kann das Repository wechseln. | | 2 |
|
||||||
|------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------------------------------|
|
|------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------+----------------------------------------------------------------|
|
||||||
|
@ -197,7 +196,7 @@ und ist nicht unwichtig.
|
||||||
** Projektabgrenzung
|
** Projektabgrenzung
|
||||||
|
|
||||||
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 Aktionen 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. Dies aus dem Grund das Backups,
|
Erweiterung von gls:borg ist nicht vorgesehen. Dies aus dem Grund das Backups,
|
||||||
|
@ -230,27 +229,29 @@ meisten Sinn.
|
||||||
*** Versionskontrolle
|
*** Versionskontrolle
|
||||||
|
|
||||||
Die komplette Dokumentation, der Quellcode der Applikation sowie jegliche
|
Die komplette Dokumentation, der Quellcode der Applikation sowie jegliche
|
||||||
zusätzlichen Dokumente wie etwa die Zeitplanung werden mittels der Software gls:git
|
zusätzlichen Dokumente, wie etwa die Zeitplanung, werden mittels der Software
|
||||||
versioniert. Thematisch zusammengehörende Änderungen werden in einem gls:commit
|
gls:git versioniert. Thematisch zusammengehörende Änderungen werden in einem
|
||||||
zusammengefasst. Somit ist jederzeit nachvollziehbar was wann geändert hat. Ein
|
gls:commit zusammengefasst. Somit ist jederzeit nachvollziehbar, was wann
|
||||||
gls:commit sollte dabei gemäss dem Artikel von Chris Beams "How to write a Git
|
geändert hat. Ein gls:commit sollte dabei gemäss dem Artikel von Chris Beams
|
||||||
gls:commit Message" footcite:commit und in englischer Sprache geschrieben sein.
|
"How to write a Git gls:commit Message" footcite:commit und in englischer
|
||||||
|
Sprache geschrieben sein.
|
||||||
|
|
||||||
Versionsnummern sind für die Applikation zum jetzigen Zeitpunkt noch nicht
|
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
|
||||||
Versionierung footcite:semver verwendet. Dabei ist eine Versionsnummer immer
|
semantische Versionierung footcite:semver verwendet werden. Dabei ist eine
|
||||||
nach diesem Schema aufgebaut, MAJOR.MINOR.PATCH. Bei Änderungen wir die:
|
Versionsnummer immer 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.
|
||||||
Eine Versionsnummer würde dann so aussehen Version 1.2.3.
|
Eine Versionsnummer würde dann so aussehen Version 1.2.3.
|
||||||
|
|
||||||
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
|
||||||
eingecheckt sein damit der Master Branch immer eine funktionierende Software
|
Branch eingecheckt sein, damit der Master Branch immer eine funktionierende
|
||||||
repräsentiert. Dies gilt auch für das Repository der Dokumentation. Der Master
|
Software repräsentiert. Dies gilt auch für das Repository der Dokumentation.
|
||||||
Branch der Dokumentation sollte maximal mit zwei Befehlen ~make clean~ und
|
Der Master Branch der Dokumentation sollte maximal mit zwei Befehlen ~make
|
||||||
~make~ "kompilierbar" sein.
|
clean~ und ~make~ "kompilierbar" sein.
|
||||||
|
|
||||||
Als Software für die Versionskontrolle wurde gls:git footcite:git aus folgenden
|
Als Software für die Versionskontrolle wurde gls:git footcite:git aus folgenden
|
||||||
Gründen ausgewählt:
|
Gründen ausgewählt:
|
||||||
|
@ -271,18 +272,18 @@ Gründen ausgewählt:
|
||||||
Sowohl bei der Dokumentation wie auch bei der Programmierung wurde
|
Sowohl bei der Dokumentation wie auch bei der Programmierung wurde
|
||||||
hauptsächlich der Editor GNU Emacs footcite:emacs verwendet. GNU Emacs ist mit
|
hauptsächlich der Editor GNU Emacs footcite:emacs verwendet. GNU Emacs ist mit
|
||||||
32 Jahren (obwohl seine Wurzeln bis ins Jahre 1976 zurückgehen) wohl eines der
|
32 Jahren (obwohl seine Wurzeln bis ins Jahre 1976 zurückgehen) wohl eines der
|
||||||
ältesten noch aktiven Software Projekte. Emacs ist gls:libre unter der
|
ältesten noch aktiven Software Projekte. Emacs ist gls:libre unter der gls:gpl
|
||||||
gls:gpl v3. Emacs wurde gewählt da es ein schneller, schlanker und sehr
|
v3. Emacs wurde gewählt, da es ein schneller, schlanker und sehr flexibler
|
||||||
flexibler Texteditor ist. Von normaler Textmanipulation über Taskmanagement
|
Texteditor ist. Von normaler Textmanipulation über Taskmanagement und Emails
|
||||||
und Emails schreiben ist alles möglich.
|
schreiben ist alles möglich.
|
||||||
|
|
||||||
*** Dokumentation
|
*** Dokumentation
|
||||||
|
|
||||||
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 von Org-mode erinnert an
|
den Text Editor Emacs, geschrieben. Die Syntax von Org-mode erinnert an
|
||||||
Markdown. Org-mode bietet einem eine Vielzahl an Hilfen inklusive dem Erstellen
|
Markdown. Org-mode bietet einem eine Vielzahl an Hilfen, inklusive dem
|
||||||
von Tabellen und Spreadsheet Funktionen. Für die finale Version des Dokuments
|
Erstellen von Tabellen und Spreadsheet Funktionen. Für die finale Version des
|
||||||
kann Org-mode die ursprünglich Textdatei über LaTeX in eine PDF Datei
|
Dokuments kann Org-mode die ursprünglich Textdatei über LaTeX in eine PDF Datei
|
||||||
exportieren.
|
exportieren.
|
||||||
|
|
||||||
LaTeX footcite:latex ist eine Software, welche einem die Benutzung des
|
LaTeX footcite:latex ist eine Software, welche einem die Benutzung des
|
||||||
|
@ -312,18 +313,17 @@ entwickelten Design Sprache "Material" footcite:material eingesetzt.
|
||||||
|
|
||||||
Die detaillierte Zeitplanung ist dem Ganttchart in der Datei
|
Die detaillierte Zeitplanung ist dem Ganttchart in der Datei
|
||||||
[[file:02_Zeitplanung_Andreas_Zweili.html][02_Zeitplanung_Andreas_Zweili.html]] zu entnehmen. Bei der Zeitplanung wurde
|
[[file:02_Zeitplanung_Andreas_Zweili.html][02_Zeitplanung_Andreas_Zweili.html]] zu entnehmen. Bei der Zeitplanung wurde
|
||||||
darauf geachtet das die Arbeit soweit, als möglich nicht mit dem Berufsleben
|
darauf geachtet, dass die Arbeit soweit als möglich nicht mit dem Berufsleben
|
||||||
kollidiert. An einem normalen Arbeitstag wurde dabei damit gerechnet das ca. 2
|
kollidiert. An einem normalen Arbeitstag wurde dabei damit gerechnet das ca. 2
|
||||||
Stunden Arbeit am Abend möglich sein sollten. An einem arbeitsfreien Tag wurde
|
Stunden Arbeit am Abend möglich sein sollten. An einem arbeitsfreien Tag wurde
|
||||||
mit 6 Stunden Arbeit gerechnet. Über die Festtage wurden diverse Tage von der
|
mit 6 Stunden Arbeit gerechnet. Über die Festtage wurden diverse Tage von der
|
||||||
Planung ausgenommen, da es nicht realistisch schien, dass an diesen Tagen die
|
Planung ausgenommen, da es nicht realistisch schien, dass an diesen Tagen die
|
||||||
Arbeit signifikant vorwärts gehen würde. Auch Schultage wurde nicht, als
|
Arbeit signifikant vorwärts gehen würde. Auch Schultage wurde nicht als
|
||||||
Arbeitstage gerechnet da man meist nicht mehr für weitere Tätigkeiten gross
|
Arbeitstage gerechnet.
|
||||||
motiviert ist.
|
|
||||||
|
|
||||||
Um die Arbeitslast zu verteilen wurde vom 14. Januar bis zum 11. März jeder
|
Um die Arbeitslast zu verteilen, wurde vom 14. Januar bis zum 11. März jeder
|
||||||
Montag auf der Arbeitsstelle als frei eingegeben. Dadurch steht, während des
|
Montag auf der Arbeitsstelle als frei eingegeben. Dadurch steht während des
|
||||||
Projektes etwas mehr Zeit zur Verfügung als sonst mit einer 100 Prozent
|
Projektes etwas mehr Zeit zur Verfügung, als mit einer 100 Prozent
|
||||||
Arbeitsstelle möglich wäre.
|
Arbeitsstelle möglich wäre.
|
||||||
|
|
||||||
** Controlling
|
** Controlling
|
||||||
|
@ -364,7 +364,7 @@ unvorbereitet gegenüber, sollten sie eintreffen.
|
||||||
|
|
||||||
*** Risikobeschreibung
|
*** Risikobeschreibung
|
||||||
|
|
||||||
In der Tabelle: ([[tab:risikobeschreibung]]), sind die Risiken des Projektes
|
In der Tabelle: ([[tab:risikobeschreibung]]) sind die Risiken des Projektes
|
||||||
gemeinsam mit ihren Gegenmassnahmen aufgelistet. Somit können gewisse Risiken
|
gemeinsam mit ihren Gegenmassnahmen aufgelistet. Somit können gewisse Risiken
|
||||||
bereits vorher vermieden werden.
|
bereits vorher vermieden werden.
|
||||||
|
|
||||||
|
@ -393,7 +393,7 @@ bereits vorher vermieden werden.
|
||||||
* Analyse
|
* Analyse
|
||||||
** SWOT-Analyse
|
** SWOT-Analyse
|
||||||
|
|
||||||
Die SWOT-Analyse ist eine Methode, die Stärken, Schwächen, Chancen und
|
Die SWOT-Analyse ist eine Methode die Stärken, Schwächen, Chancen und
|
||||||
Gefahren zu erkennen, indem eine 4-Felder-Matrix ausgefüllt wird.
|
Gefahren zu erkennen, indem eine 4-Felder-Matrix ausgefüllt wird.
|
||||||
|
|
||||||
Grundlage einer guten SWOT Analyse ist eine klare Zieldefinition und
|
Grundlage einer guten SWOT Analyse ist eine klare Zieldefinition und
|
||||||
|
@ -407,7 +407,7 @@ Abbildung:([[fig:swot]]) zu sehen.
|
||||||
|
|
||||||
** Umweltanalyse
|
** Umweltanalyse
|
||||||
|
|
||||||
Die Projektumwelt-Analyse ist eine Methode, die Beziehungen,
|
Die Projektumwelt-Analyse ist eine Methode die Beziehungen,
|
||||||
Erwartungshaltungen und Einflüsse auf das Projekt durch interne und
|
Erwartungshaltungen und Einflüsse auf das Projekt durch interne und
|
||||||
externe soziale Umwelt zu betrachten und zu bewerten. Auf Grundlage
|
externe soziale Umwelt zu betrachten und zu bewerten. Auf Grundlage
|
||||||
der Analyseergebnisse werden erforderliche Massnahmen zur Gestaltung
|
der Analyseergebnisse werden erforderliche Massnahmen zur Gestaltung
|
||||||
|
@ -418,8 +418,8 @@ mit Einschätzung der Wahrscheinlichkeit und der Einflussnahme aufgenommen.
|
||||||
Zusätzlich ist die Beziehung der Stakeholder zum Projekt noch in der
|
Zusätzlich ist die Beziehung der Stakeholder zum Projekt noch in der
|
||||||
Abbildung:([[fig:umweltgrafik]]) grafisch dargestellt.
|
Abbildung:([[fig:umweltgrafik]]) grafisch dargestellt.
|
||||||
|
|
||||||
Da das Projekt so ausgelegt ist das der Projektleiter es in Eigenarbeit
|
Da das Projekt so ausgelegt ist, dass der Projektleiter es in Eigenarbeit
|
||||||
verwirklichen kann ist der Einfluss der Stakeholder während der Umsetzung sehr
|
verwirklichen kann, ist der Einfluss der Stakeholder während der Umsetzung sehr
|
||||||
gering. Die User werden bei der Entwicklung mittels einer
|
gering. Die User werden bei der Entwicklung mittels einer
|
||||||
Usability-Studie miteinbezogen und die gls:borg Community wird mit
|
Usability-Studie miteinbezogen und die gls:borg Community wird mit
|
||||||
regelmässigen Posts auf dem offiziellen Github Repository auf dem Laufenden
|
regelmässigen Posts auf dem offiziellen Github Repository auf dem Laufenden
|
||||||
|
@ -441,7 +441,7 @@ Entwickler jedoch offen sein. Der Quellcode wird bereits während der Arbeit
|
||||||
| <5> | <20> | <20> | | |
|
| <5> | <20> | <20> | | |
|
||||||
| *Nr*.\cellcolor[HTML]{C0C0C0} | *Stakeholder*\cellcolor[HTML]{C0C0C0} | *Einfluss*\cellcolor[HTML]{C0C0C0} | *Anforderung/Wünsche*\cellcolor[HTML]{C0C0C0} | *Wahrscheinlichkeit*\cellcolor[HTML]{C0C0C0} |
|
| *Nr*.\cellcolor[HTML]{C0C0C0} | *Stakeholder*\cellcolor[HTML]{C0C0C0} | *Einfluss*\cellcolor[HTML]{C0C0C0} | *Anforderung/Wünsche*\cellcolor[HTML]{C0C0C0} | *Wahrscheinlichkeit*\cellcolor[HTML]{C0C0C0} |
|
||||||
|-------------------------------+---------------------------------------+------------------------------------+------------------------------------------------------+----------------------------------------------|
|
|-------------------------------+---------------------------------------+------------------------------------+------------------------------------------------------+----------------------------------------------|
|
||||||
| 1. | gls:borg Community | gering | Eine Applikation die den Umfang von gls:borg abdeckt | mittel |
|
| 1. | gls:borg Community | gering | Eine Applikation, die den Umfang von gls:borg abdeckt | mittel |
|
||||||
| | | | Open-Source | hoch |
|
| | | | Open-Source | hoch |
|
||||||
| | | | Mitspracherecht bei der Entwicklung | niedrig |
|
| | | | Mitspracherecht bei der Entwicklung | niedrig |
|
||||||
|-------------------------------+---------------------------------------+------------------------------------+------------------------------------------------------+----------------------------------------------|
|
|-------------------------------+---------------------------------------+------------------------------------+------------------------------------------------------+----------------------------------------------|
|
||||||
|
@ -469,14 +469,14 @@ bewertet und entsprechend der Tabelle: ([[tab:auswirkung]]) nach seiner Auswirku
|
||||||
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.
|
||||||
|
|
||||||
Es sollte im Rahmen der Arbeit möglich sein die meisten Risiken zu verringern.
|
Es sollte im Rahmen der Arbeit möglich sein die meisten Risiken zu verringern.
|
||||||
Da automatische Hintergrundbackups jedoch ein Kann-Ziel sind wir in dieser
|
Da automatische Hintergrundbackups jedoch ein Kann-Ziel sind wir in dieser
|
||||||
Analyse nicht davon ausgegangen das man das Risiko Nr. 5 im Rahmen dieser
|
Analyse nicht davon ausgegangen, dass man das Risiko Nr. 5 im Rahmen dieser
|
||||||
Arbeit reduzieren kann.
|
Arbeit reduzieren kann.
|
||||||
|
|
||||||
#+CAPTION: Risikobewertung Wahrscheinlichkeit
|
#+CAPTION: Risikobewertung Wahrscheinlichkeit
|
||||||
|
@ -703,13 +703,13 @@ Use Cases und zeigt einem gut die Zuständigkeiten der Aktoren auf.
|
||||||
| *Normal Flow* | 1. Ein Backup aus der Liste auswählen. |
|
| *Normal Flow* | 1. Ein Backup aus der Liste auswählen. |
|
||||||
| | 2. Den Button "Restore" klicken. |
|
| | 2. Den Button "Restore" klicken. |
|
||||||
| | 3. Ein Pop-up zur Auswahl eines Zielpfades erscheint. |
|
| | 3. Ein Pop-up zur Auswahl eines Zielpfades erscheint. |
|
||||||
| | 4. Den Zielpfad mit klick auf "Choose" bestätigen. |
|
| | 4. Den Zielpfad mit Klick auf "Choose" bestätigen. |
|
||||||
| | 5. Ein Dateiexplorer öffnet sich mit dem ausgewählt Pfad und enthält die Dateien aus dem Backup. |
|
| | 5. Ein Dateiexplorer öffnet sich mit dem ausgewählt Pfad und enthält die Dateien aus dem Backup. |
|
||||||
|---------------------+--------------------------------------------------------------------------------------------------|
|
|---------------------+--------------------------------------------------------------------------------------------------|
|
||||||
| *Alternative Flow* | 1. Ein Backup aus der Liste auswählen. |
|
| *Alternative Flow* | 1. Ein Backup aus der Liste auswählen. |
|
||||||
| | 2. Den Button "Restore" klicken. |
|
| | 2. Den Button "Restore" klicken. |
|
||||||
| | 3. Ein Pop-up zur Auswahl eines Zielpfades erscheint. |
|
| | 3. Ein Pop-up zur Auswahl eines Zielpfades erscheint. |
|
||||||
| | 4. Die Aktion mit klick auf "Cancel" abbrechen. |
|
| | 4. Die Aktion mit Klick auf "Cancel" abbrechen. |
|
||||||
|---------------------+--------------------------------------------------------------------------------------------------|
|
|---------------------+--------------------------------------------------------------------------------------------------|
|
||||||
| *Notes* | - |
|
| *Notes* | - |
|
||||||
|---------------------+--------------------------------------------------------------------------------------------------|
|
|---------------------+--------------------------------------------------------------------------------------------------|
|
||||||
|
@ -946,8 +946,8 @@ Verfügung, um das Programm anzubinden. Da das Ziel ist, das Programm normalen
|
||||||
Nutzern zugänglicher zu machen, bietet sich ein normales Desktop Programm am
|
Nutzern zugänglicher zu machen, bietet sich ein normales Desktop Programm am
|
||||||
ehesten an. Desktop Programme werden von allen Computer Usern täglich genutzt
|
ehesten an. Desktop Programme werden von allen Computer Usern täglich genutzt
|
||||||
und sind somit etwas was sie kennen. Zudem ist es für die User auch viel
|
und sind somit etwas was sie kennen. Zudem ist es für die User auch viel
|
||||||
einfacher zu verstehen als sie vor der Nutzung einen lokalen Webserver starten
|
einfacher zu verstehen, als wenn sie vor der Nutzung einen lokalen Webserver
|
||||||
müssten und diesen im Anschluss zur Nutzung wieder beenden müssten.
|
starten müssten und diesen im Anschluss zur Nutzung wieder beenden müssten.
|
||||||
|
|
||||||
*** Bewertung
|
*** Bewertung
|
||||||
|
|
||||||
|
@ -1003,7 +1003,7 @@ gut für Desktop 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 stellt. Insbesondere aufgrund der grossen
|
Frameworks zur Verfügung stellt. Insbesondere aufgrund der grossen
|
||||||
kommerziellen Nutzung und der guten Integration mit Microsoft Windows hat C#
|
kommerziellen Nutzung und der guten Integration mit Microsoft Windows hat C#
|
||||||
eine relative grosse Verbreitung. Bei Linux und OS X ist es jedoch schwieriger
|
eine relative grosse Verbreitung. Bei Linux und OS X ist es jedoch schwieriger
|
||||||
|
@ -1012,7 +1012,7 @@ der Fokus von C# hauptsächlich auf Microsoft Windows liegt.
|
||||||
|
|
||||||
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
|
||||||
|
@ -1041,14 +1041,14 @@ 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 gelehrt wird, ist der Lernfaktor hier im Vergleich zu
|
Da C# bereits an der IBZ gelehrt 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, dass 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
|
||||||
|
@ -1096,9 +1096,9 @@ 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 herumkommen
|
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.
|
||||||
|
@ -1109,15 +1109,15 @@ 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
|
||||||
Verbreitung. Daher ist anzunehmen das sicher mindestens ein grössere Teil der
|
Verbreitung. Daher ist anzunehmens dass sicher mindestens ein grössere Teil der
|
||||||
älteren gls:borg Entwickler C++ oder C gelernt haben.
|
älteren gls:borg 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, dass 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.
|
||||||
|
|
||||||
|
@ -1165,7 +1165,7 @@ grösseres Projekt realisiert und ansonsten mehrere kleine Projekte im Privaten
|
||||||
erstellen.
|
erstellen.
|
||||||
|
|
||||||
Für Python gibt es ein paar glspl:ide welchen den Programmierer bei seiner
|
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
|
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
|
programmieren zu können. Im einfachsten Fall wäre dies mit Notepad möglich. Ein
|
||||||
Editor mit etwas fortgeschritteneren Features wäre jedoch empfehlenswert.
|
Editor mit etwas fortgeschritteneren Features wäre jedoch empfehlenswert.
|
||||||
|
|
||||||
|
@ -1175,7 +1175,7 @@ von Python wurde sehr grossen Wert auf die Lesbarkeit der Sprache gelegt. Dies
|
||||||
mit dem Hintergedanken das eine Programmiersprache viel häufiger gelesen als
|
mit dem Hintergedanken das eine Programmiersprache viel häufiger gelesen als
|
||||||
effektiv geschrieben wird footcite:pep8.
|
effektiv geschrieben wird footcite:pep8.
|
||||||
|
|
||||||
Um ein Python Programm zu starten braucht es eigentlich kein grosses Setup.
|
Um ein Python Programm zu starten, braucht es eigentlich kein grosses Setup.
|
||||||
Solange die Abhängigkeiten vorhanden sind, kann man ein Skript mit einem
|
Solange die Abhängigkeiten vorhanden sind, kann man ein Skript mit einem
|
||||||
einfachen Befehl, Code Snippet ([[code:minimal_python]]) starten.
|
einfachen Befehl, Code Snippet ([[code:minimal_python]]) starten.
|
||||||
|
|
||||||
|
@ -1193,10 +1193,10 @@ 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
|
||||||
Python innerhalb dieser Community eine sehr hohe Verbreitung geniesst.
|
Python innerhalb dieser Community eine sehr hohe Verbreitung geniesst.
|
||||||
|
|
||||||
Python ist eine dynamisch typisierte und interpretierte Sprache. Dies bedeutet
|
Python ist eine dynamisch typisierte und interpretierte Sprache. Dies bedeutet,
|
||||||
das man bei Variablen nicht explizit den Typ angeben muss und die Programme zur
|
dass 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, dass man mit ihnen in der Regel sehr schnell und unkompliziert
|
||||||
entwickeln kann, dies jedoch zulasten der Performance.
|
entwickeln kann, dies jedoch zulasten der Performance.
|
||||||
|
|
||||||
#+CAPTION: Python Bewertungstabelle
|
#+CAPTION: Python Bewertungstabelle
|
||||||
|
@ -1253,8 +1253,8 @@ dann in die eigentliche Applikation importiert werden. Somit ist keine
|
||||||
spezielle Software nötig.
|
spezielle Software nötig.
|
||||||
|
|
||||||
gls:xml ist nicht übermässig gut lesbar, allerdings kann man Qt in der verwendeten
|
gls:xml ist nicht übermässig gut lesbar, allerdings kann man Qt in der verwendeten
|
||||||
Sprache programmiert werden somit ist es hauptsächlich von der Sprache im
|
Sprache programmiert werden, somit ist es hauptsächlich von der Sprache im
|
||||||
Backend abhängig. Die Dokumentation ist in C++ geschrieben was für einen
|
Backend abhängig. Die Dokumentation ist in C++ geschrieben, was für einen
|
||||||
Entwickler ohne C++ Kenntnisse die Software etwas unzugänglich macht.
|
Entwickler ohne C++ Kenntnisse die Software etwas unzugänglich macht.
|
||||||
|
|
||||||
Qt scheint, soweit dies bis jetzt abgeschätzt werden kann, sehr leicht in ein
|
Qt scheint, soweit dies bis jetzt abgeschätzt werden kann, sehr leicht in ein
|
||||||
|
@ -1312,7 +1312,7 @@ Qt hat man jedoch die Möglichkeit das gls:gui mit einem gls:gui Designer
|
||||||
grafisch zu erstellen.
|
grafisch zu erstellen.
|
||||||
|
|
||||||
Wie auch Qt kann man Gtk entweder direkt in der Backend Sprache programmieren
|
Wie auch Qt kann man Gtk entweder direkt in der Backend Sprache programmieren
|
||||||
oder aus dem gls:gui Designer dann als gls:xml exportieren. Der Code in der
|
oder aus dem gls:gui Designer, dann als gls:xml exportieren. Der Code in der
|
||||||
Dokumentation ist in C geschrieben, welches auch nicht die zugänglichste
|
Dokumentation ist in C geschrieben, welches auch nicht die zugänglichste
|
||||||
Sprache ist.
|
Sprache ist.
|
||||||
|
|
||||||
|
@ -1345,7 +1345,7 @@ Da die Kenntnisse gleich null sind, ist der Lernfaktor auf dem Maximum.
|
||||||
|
|
||||||
**** Electron
|
**** Electron
|
||||||
|
|
||||||
Electron ist ein cross-plattform Framework zum Entwickeln von glspl:gui welches
|
Electron ist ein cross-plattform Framework zum Entwickeln von glspl:gui, welches
|
||||||
dabei jedoch auf Technologien aus der Webentwicklung benutzt. Entwickelt wird
|
dabei jedoch auf Technologien aus der Webentwicklung benutzt. Entwickelt wird
|
||||||
Electron von der Firma Github und ist gls:libre unter der MIT Lizenz
|
Electron von der Firma Github und ist gls:libre unter der MIT Lizenz
|
||||||
footcite:electronlicense.
|
footcite:electronlicense.
|
||||||
|
@ -1365,7 +1365,7 @@ vorhanden sein. Zum Programmieren selber braucht es keine speziellen Tools. Ein
|
||||||
Editor und ein Webbrowser sollten ausreichend sein.
|
Editor und ein Webbrowser sollten ausreichend sein.
|
||||||
|
|
||||||
Electron Applikationen bestehen hauptsächlich aus gls:html, gls:css und JavaScript
|
Electron Applikationen bestehen hauptsächlich aus gls:html, gls:css und JavaScript
|
||||||
Code. Wenn man sich die komplette Applikation in Node.js programmieren möchte
|
Code. Wenn man sich die komplette Applikation in Node.js programmieren möchte,
|
||||||
kommt dann noch eine zusätzliche Sprache hinzu. gls:html ist ähnlich mühsam zu
|
kommt dann noch eine zusätzliche Sprache hinzu. gls:html ist ähnlich mühsam zu
|
||||||
lesen wie gls:xml. gls:css und JavaScript sind relativ angenehm zu lesen, wobei es für
|
lesen wie gls:xml. gls:css und JavaScript sind relativ angenehm zu lesen, wobei es für
|
||||||
beide keine offiziellen Styleguides gibt. Was bei Webanwendungen jedoch immer
|
beide keine offiziellen Styleguides gibt. Was bei Webanwendungen jedoch immer
|
||||||
|
@ -1433,22 +1433,22 @@ weiteren Verlauf der Arbeit nun Borg-Qt genannt
|
||||||
|
|
||||||
Die Anwendung wird während der Realisierung soweit als möglich mit
|
Die Anwendung wird während der Realisierung soweit als möglich mit
|
||||||
automatischen glspl:unittest und glspl:funktionstest überprüft. Dies
|
automatischen glspl:unittest und glspl:funktionstest überprüft. Dies
|
||||||
hauptsächlich um die Erfahrung in diesem Bereich zu erweitern und um ein gutes
|
hauptsächlich, um die Erfahrung in diesem Bereich zu erweitern um ein gutes
|
||||||
Fundament für die Zukunft des Projektes zu bauen.
|
Fundament für die Zukunft des Projektes zu bauen.
|
||||||
|
|
||||||
Aufgrund der Unerfahrenheit im Bereich des automatisierten Testings wurden noch
|
Aufgrund der Unerfahrenheit im Bereich des automatisierten Testings wurden noch
|
||||||
die Testfälle in der Tabelle:([[tab:testcases]]), erstellt. Diese werden final von
|
die Testfälle in der Tabelle:([[tab:testcases]]), erstellt. Diese werden final von
|
||||||
Hand überprüft. Somit kann vermieden werden das nicht funktionierende
|
Hand überprüft. Somit kann vermieden werden, dass nicht funktionierende
|
||||||
automatische Tests den Abschluss des Projektes verhindern. Da die Testfälle
|
automatische Tests den Abschluss des Projektes verhindern. Da die Testfälle
|
||||||
sich hauptsächlich an den Use Cases orientieren gibt, es ein paar Ziele die,
|
sich hauptsächlich an den Use Cases orientieren, gibt es ein paar Ziele die,
|
||||||
dadurch nicht getestet werden können. Zudem sind zurzeit nur ca. 20. der Ziele
|
dadurch nicht getestet werden können. Zudem sind zurzeit nur ca. 20 der Ziele
|
||||||
durch die Use Cases abgedeckt. Die weiteren Ziele lassen sich erst sinnvoll
|
durch die Use Cases abgedeckt. Die weiteren Ziele lassen sich erst sinnvoll
|
||||||
integrieren, wenn die Basis für das Programm geschaffen wurde. Somit werden
|
integrieren, wenn die Basis für das Programm geschaffen wurde. Somit werden
|
||||||
diese Ziele erst im Anschluss zur Diplomarbeit umgesetzt.
|
diese Ziele erst im Anschluss zur Diplomarbeit umgesetzt.
|
||||||
|
|
||||||
Getestet wird die Applikation jeweils auf dem Computer des Projektleiters. Auf
|
Getestet wird die Applikation jeweils auf dem Computer des Projektleiters. Auf
|
||||||
diesem läuft die aktuelle Langzeitsupport Version (18.04) von Ubuntu
|
diesem läuft die aktuelle Langzeitsupport Version (18.04) von Ubuntu
|
||||||
footcite:ubuntu Linux mit der GNOME Desktop Umgebung footcite:gnome, als
|
footcite:ubuntu Linux, mit der GNOME Desktop Umgebung footcite:gnome, als
|
||||||
Betriebssystem. Die Tests werden jeweils gegen eine von PyInstaller generierte
|
Betriebssystem. Die Tests werden jeweils gegen eine von PyInstaller generierte
|
||||||
Binärdatei ausgeführt. Der genaue Vorgang der Erstellung dieser Datei wird in
|
Binärdatei ausgeführt. Der genaue Vorgang der Erstellung dieser Datei wird in
|
||||||
der Sektion: [[Releases][Releases]] beschrieben. Somit werden die Tests immer gegen eine
|
der Sektion: [[Releases][Releases]] beschrieben. Somit werden die Tests immer gegen eine
|
||||||
|
@ -1456,11 +1456,11 @@ veröffentlichbare Version gemacht.
|
||||||
|
|
||||||
Als Testdateien wird jeweils das Code Repository von Borg-Qt selber verwendet.
|
Als Testdateien wird jeweils das Code Repository von Borg-Qt selber verwendet.
|
||||||
Der Pfad des gls:borg Repository für lokale Backups soll ~/tmp/test-borgqt~
|
Der Pfad des gls:borg Repository für lokale Backups soll ~/tmp/test-borgqt~
|
||||||
sein, in den Testfällen "Lokales Repository", genannt und das Passwort ~foo~.
|
sein, in den Testfällen "Lokales Repository" genannt und das Passwort ~foo~.
|
||||||
Im Makefile des Repository wird dieses Setup definiert. Somit kann man als
|
Im Makefile des Repository wird dieses Setup definiert. Somit kann man als
|
||||||
Entwickler nur ~make init~ ausführen und hat eine funktionsfähige Testumgebung.
|
Entwickler nur ~make init~ ausführen und hat eine funktionsfähige Testumgebung.
|
||||||
|
|
||||||
Um Backups über gls:ssh testen zu können wird eine virtuelle Maschine mit Ubuntu
|
Um Backups über gls:ssh testen zu können, wird eine virtuelle Maschine mit Ubuntu
|
||||||
18.04 verwendet. Die Konfiguration der virtuellen Maschine sieht dabei wie
|
18.04 verwendet. Die Konfiguration der virtuellen Maschine sieht dabei wie
|
||||||
folgt aus:
|
folgt aus:
|
||||||
- 2 CPU Kerne
|
- 2 CPU Kerne
|
||||||
|
@ -1479,18 +1479,18 @@ beschrieben.
|
||||||
|
|
||||||
** Klassendiagramm
|
** Klassendiagramm
|
||||||
|
|
||||||
Um die Abhängigkeiten zwischen den einzelnen Klassen der Anwendung aufzuzeigen
|
Um die Abhängigkeiten zwischen den einzelnen Klassen der Anwendung aufzuzeigen,
|
||||||
wurde ein Klassendiagramm, Abbildung:([[fig:class_diagramm]]), erstellt. Das
|
wurde ein Klassendiagramm, Abbildung:([[fig:class_diagramm]]), erstellt. Das
|
||||||
Klassendiagramm basiert auf dem UML Standard. Im Diagramm wurden nicht alle
|
Klassendiagramm basiert auf dem UML Standard. Im Diagramm wurden nicht alle
|
||||||
"Properties" und Methoden alles Klassen aufgezeichnet, sondern nur solche die
|
"Properties" und Methoden alles Klassen aufgezeichnet, sondern nur solche, die
|
||||||
auf eine andere Klasse verweisen. Dadurch bleibt das Diagramm übersichtlicher.
|
auf eine andere Klasse verweisen. Dadurch bleibt das Diagramm übersichtlicher.
|
||||||
Die Klassennamen welche, in fetter Schrift gehalten sind, wurden dabei vom
|
Die Klassennamen, welche in fetter Schrift gehalten sind, wurden dabei vom
|
||||||
Projektleiter erstellt. Die Klassennamen, welche kursiv sind, sind Klassen, welche
|
Projektleiter erstellt. Die Klassennamen, welche kursiv sind, sind Klassen, welche
|
||||||
entweder von Python oder Qt bereitgestellt werden.
|
entweder von Python oder Qt bereitgestellt werden.
|
||||||
|
|
||||||
** Usability-Studie
|
** Usability-Studie
|
||||||
|
|
||||||
Um Borg-Qt auf seine Nutzerfreundlichkeit zu testen wird im Rahmen der
|
Um Borg-Qt auf seine Nutzerfreundlichkeit zu testen, wird im Rahmen der
|
||||||
Diplomarbeit noch eine kleine Usability-Studie gemacht. Bei einer
|
Diplomarbeit noch eine kleine Usability-Studie gemacht. Bei einer
|
||||||
solchen Studie erhalten die Probanden, Tabelle:([[tab:probanden]]), ein paar
|
solchen Studie erhalten die Probanden, Tabelle:([[tab:probanden]]), ein paar
|
||||||
Aufgaben, Sektion [[Aufgaben]], welche sie in einer begrenzten
|
Aufgaben, Sektion [[Aufgaben]], welche sie in einer begrenzten
|
||||||
|
@ -1548,7 +1548,7 @@ Probanden und nicht die des Projektleiters.
|
||||||
~/home/testuser/Documents/Example.pdf~ zu finden sein.
|
~/home/testuser/Documents/Example.pdf~ zu finden sein.
|
||||||
3. Stelle ein beliebiges Archiv wieder her. Der Zielpfad ist ~/home/testuser/Documents/~.
|
3. Stelle ein beliebiges Archiv wieder her. Der Zielpfad ist ~/home/testuser/Documents/~.
|
||||||
4. Lösche ein Archiv deiner Wahl.
|
4. Lösche ein Archiv deiner Wahl.
|
||||||
5. Du möchtest das der Ordner ~/home/testuser/Pictures/~ nicht mehr gesichert
|
5. Du möchtest, dass der Ordner ~/home/testuser/Pictures/~ nicht mehr gesichert
|
||||||
wird. Konfiguriere die Applikation entsprechend.
|
wird. Konfiguriere die Applikation entsprechend.
|
||||||
|
|
||||||
#+latex: \newpage
|
#+latex: \newpage
|
||||||
|
@ -1573,7 +1573,7 @@ Probanden und nicht die des Projektleiters.
|
||||||
|
|
||||||
**** Proband 1
|
**** Proband 1
|
||||||
|
|
||||||
Der Proband fand die Aufgaben grundsätzlich einfach zu lösen. Das die "Mount"
|
Der Proband fand die Aufgaben grundsätzlich einfach zu lösen. Dass die "Mount"
|
||||||
Funktion zum Wiederherstellen einzelner Dateien gedacht war, hat er nicht
|
Funktion zum Wiederherstellen einzelner Dateien gedacht war, hat er nicht
|
||||||
erkannt.
|
erkannt.
|
||||||
|
|
||||||
|
@ -1587,12 +1587,12 @@ wahrgenommen.
|
||||||
|
|
||||||
**** Proband 3
|
**** Proband 3
|
||||||
|
|
||||||
Proband 3 kam mit der Anwendung an sich gut klar. Die Aufgabe zwei fand er über
|
Proband 3 kam mit der Anwendung an sich gut klar. Die Aufgabe Zwei fand er über
|
||||||
alles gesehen auch am schwierigsten, da er mit der Materie nahezu nicht vertraut
|
alles gesehen auch am schwierigsten, da er mit der Materie nahezu nicht vertraut
|
||||||
ist. Als zusätzlichen Input gab er an, das ein Kontextmenü welches sich mit
|
ist. Als zusätzlichen Input gab er an, dass ein Kontextmenü, welches sich mit
|
||||||
Rechtsklick auf ein Element öffnet, etwas sei was er gerne hätte, da er andere
|
Rechtsklick auf ein Element öffnet, etwas sei was er gerne hätte, da er andere
|
||||||
Anwendungen oft so steuert. Aufgabe 5 war auch etwas herausfordernder als 1,3
|
Anwendungen oft so steuert. Aufgabe 5 war auch etwas herausfordernder als 1,3
|
||||||
und 4 insbesondere war unklar wie der Ordner zu der Liste hinzugefügt werden
|
und 4, insbesondere war unklar wie der Ordner zu der Liste hinzugefügt werden
|
||||||
sollte.
|
sollte.
|
||||||
|
|
||||||
Während des Tests ist in der Anwendung noch ein Bug aufgetaucht, welcher unter
|
Während des Tests ist in der Anwendung noch ein Bug aufgetaucht, welcher unter
|
||||||
|
@ -1601,8 +1601,8 @@ detaillierte Lösung dafür ist im Kapitel [[Realisierung]] beschrieben.
|
||||||
|
|
||||||
**** Proband 4
|
**** Proband 4
|
||||||
|
|
||||||
Bei Proband 4 war die grösste Hürde dass, das Interface nur in Englisch
|
Bei Proband 4 war die grösste Hürde, dass das Interface nur in Englisch
|
||||||
verfügbar war. Bei Aufgabe zwei hat er sich nach eigenen Angaben etwas verloren
|
verfügbar war. Bei Aufgabe Zwei hatte er sich nach eigenen Angaben etwas verloren
|
||||||
gefühlt und hätte sich auch ein Kontextmenü auf dem Rechtsklick gewünscht.
|
gefühlt und hätte sich auch ein Kontextmenü auf dem Rechtsklick gewünscht.
|
||||||
Mit etwas Hilfe bei der Übersetzung waren die restlichen Aufgaben jedoch gut zu
|
Mit etwas Hilfe bei der Übersetzung waren die restlichen Aufgaben jedoch gut zu
|
||||||
meistern.
|
meistern.
|
||||||
|
@ -1620,8 +1620,8 @@ Bedienungsschwierigkeiten sehr gut bedienen. Um Hilfestellung zu leisten, wird
|
||||||
im Rahmen der Diplomarbeit noch ein Hilfefenster eingebaut, welches den
|
im Rahmen der Diplomarbeit noch ein Hilfefenster eingebaut, welches den
|
||||||
Benutzern beim ersten Starten der Anwendung angezeigt wird und kurz die
|
Benutzern beim ersten Starten der Anwendung angezeigt wird und kurz die
|
||||||
jeweiligen Elemente des Interfaces anzeigt. Somit sollte auch das Problem bei
|
jeweiligen Elemente des Interfaces anzeigt. Somit sollte auch das Problem bei
|
||||||
der Aufgabe zwei etwas abgeschwächt werden. Eines der Hauptprobleme war dort
|
der Aufgabe Zwei etwas abgeschwächt werden. Eines der Hauptprobleme war dort,
|
||||||
das die Probanden nicht herausgefunden haben das der schnellste Weg eine
|
dass die Probanden nicht herausgefunden haben, dass der schnellste Weg eine
|
||||||
einzelne Datei wieder herzustellen über die "Mount" Funktion ginge. Die
|
einzelne Datei wieder herzustellen über die "Mount" Funktion ginge. Die
|
||||||
Einarbeitung in die Thematik von Backups würde sich jedoch wohl nur sehr schwer
|
Einarbeitung in die Thematik von Backups würde sich jedoch wohl nur sehr schwer
|
||||||
über das gls:gui realisieren lassen. Hier müsste auf jeden Fall eine
|
über das gls:gui realisieren lassen. Hier müsste auf jeden Fall eine
|
||||||
|
@ -1634,7 +1634,7 @@ eingepflegt. Aus Ressourcengründen allerdings erst nach der Diplomarbeit.
|
||||||
Ein Pop-Up, welches ein erfolgreiches Erstellen eines Archivs bestätigt, wird
|
Ein Pop-Up, welches ein erfolgreiches Erstellen eines Archivs bestätigt, wird
|
||||||
nicht eingebaut. Bei erfolgreicher Durchführung verschwindet der
|
nicht eingebaut. Bei erfolgreicher Durchführung verschwindet der
|
||||||
Fortschrittsdialog und in der Archivlist erscheint ein weiterer Eintrag. Das
|
Fortschrittsdialog und in der Archivlist erscheint ein weiterer Eintrag. Das
|
||||||
sind zwar nicht die offensichtlichsten Hinweise im Falle eines Fehlers
|
sind zwar nicht die offensichtlichsten Hinweise im Falle eines Fehlers,
|
||||||
erscheint jedoch sofort ein Dialog, der darauf hinweist. Somit sollten die
|
erscheint jedoch sofort ein Dialog, der darauf hinweist. Somit sollten die
|
||||||
beiden Vorgänge genügend unterschieden sein und es hat auch kein anderer Proband
|
beiden Vorgänge genügend unterschieden sein und es hat auch kein anderer Proband
|
||||||
das Bedürfnis nach einer Bestätigung.
|
das Bedürfnis nach einer Bestätigung.
|
||||||
|
@ -1647,7 +1647,7 @@ Im Rahmen der Diplomarbeit werden noch einige Texte angepasst. An gewissen
|
||||||
Stellen war die Rede von "Backups" und an anderen von "Archives". Da gls:borg
|
Stellen war die Rede von "Backups" und an anderen von "Archives". Da gls:borg
|
||||||
sie selber "Archives" nennt, sollte Borg-Qt noch so angepasst werden das
|
sie selber "Archives" nennt, sollte Borg-Qt noch so angepasst werden das
|
||||||
überall von "Archives" die Rede ist. Zudem wird bei den "Include" und "Exclude"
|
überall von "Archives" die Rede ist. Zudem wird bei den "Include" und "Exclude"
|
||||||
Optionen, über der Liste noch ein Label hinzugefügt, um die Elemente zu
|
Optionen über der Liste noch ein Label hinzugefügt, um die Elemente zu
|
||||||
beschreiben. Schlussendlich werden die Buttons "Add file" und "Add folder" zu
|
beschreiben. Schlussendlich werden die Buttons "Add file" und "Add folder" zu
|
||||||
"Exclude file" und "Exclude folder" sowie "Include file" und "Include folder"
|
"Exclude file" und "Exclude folder" sowie "Include file" und "Include folder"
|
||||||
umbenannt. Somit zeigen die Buttons dann auch direkt, dass sie Dateien
|
umbenannt. Somit zeigen die Buttons dann auch direkt, dass sie Dateien
|
||||||
|
@ -1657,7 +1657,7 @@ respektive Ordner ein-/ausschliessen. Ein paar der Probanden hatten es zuerst
|
||||||
* Realisierung
|
* Realisierung
|
||||||
** Cross-plattform Kompatibilität
|
** Cross-plattform Kompatibilität
|
||||||
|
|
||||||
Um sicherzugehen das die gewählten Technologien auch den Anforderungen
|
Um sicherzugehen, dass die gewählten Technologien auch den Anforderungen
|
||||||
entsprechen wurde ein kleines "Hello World" Programm mit Python3 und Qt
|
entsprechen wurde ein kleines "Hello World" Programm mit Python3 und Qt
|
||||||
geschrieben. Dieses läuft ohne jegliche Probleme und Anpassung auf Windows,
|
geschrieben. Dieses läuft ohne jegliche Probleme und Anpassung auf Windows,
|
||||||
Linux und OS X. Wie in den Screenshots in Abbildung:([[fig:hello_world]]) zu sehen
|
Linux und OS X. Wie in den Screenshots in Abbildung:([[fig:hello_world]]) zu sehen
|
||||||
|
@ -1708,8 +1708,8 @@ umgesetzt. Im Hauptfenster, Abbildung:([[fig:borgqt_main_v1]]), befinden sich wi
|
||||||
auch bei "Back in Time" in der einen Hälfte eine Liste der vorhandenen Archive
|
auch bei "Back in Time" in der einen Hälfte eine Liste der vorhandenen Archive
|
||||||
und in der anderen Hälfte ein Dateimanager. Dieser dient zur Auswahl des zu
|
und in der anderen Hälfte ein Dateimanager. Dieser dient zur Auswahl des zu
|
||||||
sichernden Pfades. Im oberen Bereich findet sich die Toolbar mit den Aktionen,
|
sichernden Pfades. Im oberen Bereich findet sich die Toolbar mit den Aktionen,
|
||||||
die der User ausführen kann. Gemäss den Use Cases sind dies "Backup",
|
die der User ausführen kann. Gemäss den Use Cases sind dies "Backup,
|
||||||
"Restore", "Mount", "Delete" und "Settings".
|
Restore, Mount, Delete und Settings".
|
||||||
|
|
||||||
Bei den Icons wurde zuerst versucht diese nach der "Icon Naming
|
Bei den Icons wurde zuerst versucht diese nach der "Icon Naming
|
||||||
Specification"footcite:iconnamespec auszuwählen. Diese Spezifikationen würden
|
Specification"footcite:iconnamespec auszuwählen. Diese Spezifikationen würden
|
||||||
|
@ -1765,7 +1765,7 @@ Die Einstellungen werden von der Applikation benötigt, um die vom User
|
||||||
definierten Vorgaben auszuführen, das Backup Repository zu finden, etc.
|
definierten Vorgaben auszuführen, das Backup Repository zu finden, etc.
|
||||||
Diese Einstellungen sollen in einer Klar-Text Datei gespeichert werden. Dies
|
Diese Einstellungen sollen in einer Klar-Text Datei gespeichert werden. Dies
|
||||||
hat zum einen den Vorteil, dass man die Einstellungen sehr einfach sichern kann.
|
hat zum einen den Vorteil, dass man die Einstellungen sehr einfach sichern kann.
|
||||||
Zum Anderen kann man die Einstellungen der Applikation auch anpassen, ohne das
|
Zum anderen kann man die Einstellungen der Applikation auch anpassen, ohne dass
|
||||||
man die Applikation selber starten muss.
|
man die Applikation selber starten muss.
|
||||||
|
|
||||||
*** Backend
|
*** Backend
|
||||||
|
@ -1793,15 +1793,15 @@ password = foo
|
||||||
prefix = muster
|
prefix = muster
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Das Auslesen und schreiben der Konfigurationsdatei liess sicher relativ einfach
|
Das Auslesen und Schreiben der Konfigurationsdatei liess sicher relativ einfach
|
||||||
realisieren. Die grösste Herausforderung dabei war, das ~Configparser~ keinen
|
realisieren. Die grösste Herausforderung dabei war, dass ~Configparser~ keinen
|
||||||
Support für eine Liste von Werten hat. Die wurde insbesondere für ~include~ und
|
Support für eine Liste von Werten hat. Die wurde insbesondere für ~include~ und
|
||||||
~exclude~ Pfade benötigt. Also für die Pfade, welche gesichert werden oder von
|
~exclude~ Pfade benötigt. Also für die Pfade, welche gesichert werden oder von
|
||||||
einem Backup ausgeschlossen werden sollen.
|
einem Backup ausgeschlossen werden sollen.
|
||||||
|
|
||||||
Abhilfe schaffte hier ein Stackexchange Post footcite:configlist. Dieser schlug
|
Abhilfe schaffte hier ein Stackexchange Post footcite:configlist. Dieser schlug
|
||||||
vor, das man die Liste im gls:json Format speichern soll. Da ~Configparser~ alle
|
vor, dass man die Liste im gls:json Format speichern soll. Da ~Configparser~ alle
|
||||||
Werte im Format "String" zurückgibt können dann die gls:json Listen sehr
|
Werte im Format "String" zurückgibt, können dann die gls:json Listen sehr
|
||||||
einfach von einem gls:json Parser umgewandelt werden. Im Projekt wurde dies
|
einfach von einem gls:json Parser umgewandelt werden. Im Projekt wurde dies
|
||||||
dann unter anderem als Methode der ~Config~ Klasse, Code
|
dann unter anderem als Methode der ~Config~ Klasse, Code
|
||||||
Snippet:([[code:json_config]]), implementiert. Somit muss man jeweils nur die
|
Snippet:([[code:json_config]]), implementiert. Somit muss man jeweils nur die
|
||||||
|
@ -1862,20 +1862,20 @@ def _get_path(self):
|
||||||
*** Frontend
|
*** Frontend
|
||||||
|
|
||||||
Zur Vereinfachung der Bedienbarkeit wurde die Applikation, um eine grafische
|
Zur Vereinfachung der Bedienbarkeit wurde die Applikation, um eine grafische
|
||||||
Konfigurationsmöglichkeit zu erweitern. Diese stellt dabei hauptsächlich die
|
Konfigurationsmöglichkeit erweitert. Diese stellt dabei hauptsächlich die
|
||||||
Werte aus der Konfigurationsdatei grafisch dar und übergibt allenfalls
|
Werte aus der Konfigurationsdatei grafisch dar und übergibt allenfalls
|
||||||
geänderte Werte ans Backend welches die Konfiguration, dann wieder in der Datei
|
geänderte Werte ans Backend, welches die Konfiguration, dann wieder in der Datei
|
||||||
speichert.
|
speichert.
|
||||||
|
|
||||||
Qt kennt keinen Mechanismus zum Auslesen aller Elemente aus einem sogenannten
|
Qt kennt keinen Mechanismus zum Auslesen aller Elemente aus einem sogenannten
|
||||||
~QListWidget~, einem gls:gui Element, welches Listen darstellt. Die Elemente
|
~QListWidget~, einem gls:gui Element, welches Listen darstellt. Die Elemente
|
||||||
müssen somit zuerst in einer Zwischenliste gespeichert werden bevor sie zurück
|
müssen somit zuerst in einer Zwischenliste gespeichert werden, bevor sie zurück
|
||||||
in das ~Configparser~ Objekt geschrieben. Im Code sieht dies dann wie in
|
in das ~Configparser~ Objekt geschrieben. Im Code sieht dies dann wie in
|
||||||
Codesnippet:([[code:qlistwidgets_items]]) aus. Dabei wird jedes Element einzeln aus
|
Codesnippet:([[code:qlistwidgets_items]]) aus. Dabei wird jedes Element einzeln aus
|
||||||
dem ~QListWidget~ geholt und in die Zwischenliste geschoben. Im zweiten Teil
|
dem ~QListWidget~ geholt und in die Zwischenliste geschoben. Im zweiten Teil
|
||||||
wird die Liste dann wieder zu einem gls:json String konvertiert und im
|
wird die Liste dann wieder zu einem gls:json String konvertiert und im
|
||||||
~Configparser~ Objekt gespeichert. Die Option ~indent=4~ dient dabei der
|
~Configparser~ Objekt gespeichert. Die Option ~indent=4~ dient dabei der
|
||||||
Lesbarkeit damit nicht der ganze gls:json String auf ein Zeile in der
|
Lesbarkeit, damit nicht der ganze gls:json String auf ein Zeile in der
|
||||||
Konfigurationsdatei gespeichert wird, sondern jedes Listenelement seine eigene
|
Konfigurationsdatei gespeichert wird, sondern jedes Listenelement seine eigene
|
||||||
Zeile erhält.
|
Zeile erhält.
|
||||||
|
|
||||||
|
@ -1901,13 +1901,13 @@ self.config['borgqt']['includes'] = json.dumps(includes,
|
||||||
Zuerst erschien es sinnvoll die Kommunikation zwischen gls:borg und Borg-Qt
|
Zuerst erschien es sinnvoll die Kommunikation zwischen gls:borg und Borg-Qt
|
||||||
über einfache Funktionen laufen zu lassen. Dieser Ansatz hatte allerdings zwei
|
über einfache Funktionen laufen zu lassen. Dieser Ansatz hatte allerdings zwei
|
||||||
Probleme. Zum einen wurde es relativ umständlich Informationen zu verarbeiten
|
Probleme. Zum einen wurde es relativ umständlich Informationen zu verarbeiten
|
||||||
und weiterzugeben zum anderen führte es zu dem unschönen Nebeneffekt dass, das
|
und weiterzugeben, zum anderen führte es zu dem unschönen Nebeneffekt, dass das
|
||||||
gls:gui eingefroren ist. Eine Recherche ergab, dass Threads hier Abhilfe
|
gls:gui eingefroren ist. Eine Recherche ergab, dass Threads hier Abhilfe
|
||||||
schaffen könnten.
|
schaffen könnten.
|
||||||
|
|
||||||
Python liefert für Threads das Modul ~threading.Thread~ footcite:threading,
|
Python liefert für Threads das Modul ~threading.Thread~ footcite:threading,
|
||||||
mit. In der Praxis lies sich der Fortschrittsdialog und der Thread jedoch nicht
|
mit. In der Praxis lies sich der Fortschrittsdialog und der Thread jedoch nicht
|
||||||
so zu verknüpfen das sich der Dialog schliesst, wenn das Backup durchgelaufen
|
so verknüpfen das sich der Dialog schliesst, wenn das Backup durchgelaufen
|
||||||
ist und der Thread wieder entfernt wird. Aus diesem Grund wurde dann ein
|
ist und der Thread wieder entfernt wird. Aus diesem Grund wurde dann ein
|
||||||
erfolgreicher Test mit dem PyQt Modul ~QThread~ footcite:qthread gemacht. Nach
|
erfolgreicher Test mit dem PyQt Modul ~QThread~ footcite:qthread gemacht. Nach
|
||||||
Beendigung des Backups wird der Fortschrittsdialog automatisch geschlossen.
|
Beendigung des Backups wird der Fortschrittsdialog automatisch geschlossen.
|
||||||
|
@ -1960,7 +1960,7 @@ Die ganze Funktionalität wurde dann in der Klasse ~BorgQtThread~
|
||||||
zusammengefasst. Somit kann für jede Funktion von gls:borg eine einzelne Klasse
|
zusammengefasst. Somit kann für jede Funktion von gls:borg eine einzelne Klasse
|
||||||
geschrieben werden, welche dann von ~BorgQtThread~ die Funktionen erbt. Die
|
geschrieben werden, welche dann von ~BorgQtThread~ die Funktionen erbt. Die
|
||||||
Funktionsklassen müssen dann jeweils nur die Methode
|
Funktionsklassen müssen dann jeweils nur die Methode
|
||||||
~self.create_command(self)~ implementieren welche das Property ~self.command~
|
~self.create_command(self)~ implementieren, welche das Property ~self.command~
|
||||||
erstellt und die einfachen Funktionen von gls:borg sollten direkt funktionieren.
|
erstellt und die einfachen Funktionen von gls:borg sollten direkt funktionieren.
|
||||||
|
|
||||||
** Backup
|
** Backup
|
||||||
|
@ -1971,7 +1971,7 @@ vonstattengehen.
|
||||||
|
|
||||||
*** Backend
|
*** Backend
|
||||||
|
|
||||||
Um Backups erstellen zu können wurde die Klasse ~BackupThread~ erstellt, welche
|
Um Backups erstellen zu können, wurde die Klasse ~BackupThread~ erstellt, welche
|
||||||
von ~BorgQtThread~ erbt. Die Klasse ~BackupThread~ nimmt beim instantiieren 3
|
von ~BorgQtThread~ erbt. Die Klasse ~BackupThread~ nimmt beim instantiieren 3
|
||||||
Argumente auf: ~includes~, ~excludes~, ~prefix~. Wobei ~excludes~ und ~prefix~
|
Argumente auf: ~includes~, ~excludes~, ~prefix~. Wobei ~excludes~ und ~prefix~
|
||||||
beide optional sind. Im Hauptcode werden diese Argumente aus der
|
beide optional sind. Im Hauptcode werden diese Argumente aus der
|
||||||
|
@ -1980,13 +1980,13 @@ eines Backups im Hintergrund aus der Konfigurationsdatei gelesen. Wenn es
|
||||||
der User manuell ausführt, wird der im Frontend ausgewählte Pfad mitgegeben.
|
der User manuell ausführt, wird der im Frontend ausgewählte Pfad mitgegeben.
|
||||||
|
|
||||||
Die "Excludes" haben lange nicht funktioniert. Der Grund dafür waren zusätzliche
|
Die "Excludes" haben lange nicht funktioniert. Der Grund dafür waren zusätzliche
|
||||||
Anführungszeichen um die Exclude Pfade. Diese wurden aus Versehen hinzugefügt
|
Anführungszeichen um die Exclude Pfade. Diese wurden aus Versehen hinzugefügt,
|
||||||
da gls:borg normalerweise auf der Kommandozeile ausgeführt wird und die
|
da gls:borg normalerweise auf der Kommandozeile ausgeführt wird und die
|
||||||
Anführungszeichen dort notwendig sind um allfällige Leer- oder Sonderzeichen
|
Anführungszeichen dort notwendig sind, um allfällige Leer- oder Sonderzeichen
|
||||||
abzufangen. Es wurde davon ausgegangen dass, da ~subprocess~ Modul ähnlich
|
abzufangen. Es wurde davon ausgegangen, dass das ~subprocess~ Modul ähnlich
|
||||||
funktioniert wie die Kommandozeile. Da man an das Modul direkt einen String
|
funktioniert wie die Kommandozeile. Da man an das Modul direkt einen String
|
||||||
übergibt, sind die zusätzlichen Anführungszeichen nicht notwendig und führen
|
übergibt, sind die zusätzlichen Anführungszeichen nicht notwendig und führen
|
||||||
sogar dazu das die Pfade gar nicht funktionieren. Somit werden die "Excludes"
|
sogar dazu, dass die Pfade gar nicht funktionieren. Somit werden die "Excludes"
|
||||||
mittels der Methode ~_process_excludes~ mit dem entsprechenden Parameter
|
mittels der Methode ~_process_excludes~ mit dem entsprechenden Parameter
|
||||||
gepaart und als gesamte Liste an das finale Kommando angehängt. Die "Includes"
|
gepaart und als gesamte Liste an das finale Kommando angehängt. Die "Includes"
|
||||||
funktionieren auf die gleiche Weise, benötigen jedoch keine zusätzlichen
|
funktionieren auf die gleiche Weise, benötigen jedoch keine zusätzlichen
|
||||||
|
@ -2019,7 +2019,7 @@ def create_command(self):
|
||||||
|
|
||||||
*** Frontend
|
*** Frontend
|
||||||
|
|
||||||
Damit die Backups im Frontend funktionieren musste zum einen der "Backup" Knopf
|
Damit die Backups im Frontend funktionieren, musste zum einen der "Backup" Knopf
|
||||||
mit der Methode ~create_backup~ verknüpft werden. Des Weiteren wurde ein Dateibaum, in
|
mit der Methode ~create_backup~ verknüpft werden. Des Weiteren wurde ein Dateibaum, in
|
||||||
Abbildung:([[fig:borgqt_file_tree]]) grün umrahmt, eingefügt. Dieser gibt den Pfad
|
Abbildung:([[fig:borgqt_file_tree]]) grün umrahmt, eingefügt. Dieser gibt den Pfad
|
||||||
des angewählten Objektes and die ~create_backup~ Methode weiter.
|
des angewählten Objektes and die ~create_backup~ Methode weiter.
|
||||||
|
@ -2030,21 +2030,21 @@ des angewählten Objektes and die ~create_backup~ Methode weiter.
|
||||||
|
|
||||||
Während dem ein Archiv erstellt wird, wird ein kleiner Dialog mit Ladebalken
|
Während dem ein Archiv erstellt wird, wird ein kleiner Dialog mit Ladebalken
|
||||||
angezeigt, Abbildung:([[fig:borgqt_progress_v2]]). Dieser dient hauptsächlich dazu
|
angezeigt, Abbildung:([[fig:borgqt_progress_v2]]). Dieser dient hauptsächlich dazu
|
||||||
dem User das Gefühl zu geben, das die Applikation noch am Arbeiten ist.
|
dem User das Gefühl zu geben, dass die Applikation noch am Arbeiten ist.
|
||||||
|
|
||||||
Der Dialog musste gegenüber der ersten Version in Sektion: [[Erste Umsetzung][Erste Umsetzung]] noch
|
Der Dialog musste gegenüber der ersten Version in Sektion: [[Erste Umsetzung][Erste Umsetzung]] noch
|
||||||
etwas angepasst werden. gls:borg gibt, während dem Erstellen eines Archivs
|
etwas angepasst werden. gls:borg gibt, während dem Erstellen eines Archivs
|
||||||
keine Informationen zurück, welche es einem erlauben würden einen
|
keine Informationen zurück, welche es einem erlauben würden einen
|
||||||
Fortschrittsbalken zu generieren, welcher den effektiven Fortschritt anzeigt.
|
Fortschrittsbalken zu generieren, welcher den effektiven Fortschritt anzeigt.
|
||||||
gls:borg gibt einzig die Anzahl der verarbeiteten Dateien in regelmässigen
|
gls:borg gibt einzig die Anzahl der verarbeiteten Dateien in regelmässigen
|
||||||
Abständen zurück. Da gls:borg jedoch zu Beginn nicht meldet wie viele Dateien
|
Abständen zurück. Da gls:borg jedoch zu Beginn nicht meldet, wie viele Dateien
|
||||||
gesichert werden lässt sich damit keine Prozentzahl erstellen. Ein paar
|
gesichert werden, lässt sich damit keine Prozentzahl erstellen. Ein paar
|
||||||
Experimente, bei denen die zu sichernden Dateien zuerst von Borg-Qt gezählt
|
Experimente, bei denen die zu sichernden Dateien zuerst von Borg-Qt gezählt
|
||||||
werden sollten, wurden verworfen. Einerseits weil keine Methode gefunden werden
|
werden sollten, wurden verworfen. Einerseits weil keine Methode gefunden werden
|
||||||
konnte, welche die gleiche Anzahl Dateien zurückgab wie gls:borg. Anderseits,
|
konnte, welche die gleiche Anzahl Dateien zurückgab wie gls:borg. Anderseits,
|
||||||
weil es den Backup Vorgang unnötig in die Länge zieht. Dies ist insbesondere
|
weil es den Backup Vorgang unnötig in die Länge zieht. Dies ist insbesondere
|
||||||
der Fall, wenn sich sehr viele Dateien im Quellverzeichnis befinden. Es kann
|
der Fall, wenn sich sehr viele Dateien im Quellverzeichnis befinden. Es kann
|
||||||
sogar soweit kommen dass, das Zählen länger als das eigentliche Sichern dauert.
|
sogar soweit kommen, dass das Zählen länger als das eigentliche Sichern dauert.
|
||||||
Aus diesem Grund wurde der Fortschrittsbalken mit Prozentanzeige durch einen
|
Aus diesem Grund wurde der Fortschrittsbalken mit Prozentanzeige durch einen
|
||||||
sich wiederholenden Ladebalken ersetzt.
|
sich wiederholenden Ladebalken ersetzt.
|
||||||
|
|
||||||
|
@ -2054,30 +2054,30 @@ sich wiederholenden Ladebalken ersetzt.
|
||||||
[[file:pictures/borgqt_progress_v2.png]]
|
[[file:pictures/borgqt_progress_v2.png]]
|
||||||
|
|
||||||
Wurde das Archiv erfolgreich erstellt, wird die Liste mit den Archiven sowie
|
Wurde das Archiv erfolgreich erstellt, wird die Liste mit den Archiven sowie
|
||||||
die Repository Statistik aktualisiert. Beide Elemente sind in der,
|
die Repository Statistik aktualisiert. Beide Elemente sind in der
|
||||||
Abbildung:([[fig:borgqt_archive_list]]), grün respektive rot umrahmt. Für die
|
Abbildung:([[fig:borgqt_archive_list]]), grün respektive rot umrahmt. Für die
|
||||||
beiden Funktionen wurde jeweils eine eigene Klasse, ~ListThread~ und
|
beiden Funktionen wurde jeweils eine eigene Klasse, ~ListThread~ und
|
||||||
~InfoThread~, erstellt. Beide erben von ~BorgQtThread~. In den Klassen wird wie
|
~InfoThread~, erstellt. Beide erben von ~BorgQtThread~. In den Klassen wird wie
|
||||||
bei ~BackupThread~ gls:borg über einen ~subprocess~ aufgerufen, um die Archiv Liste
|
bei ~BackupThread~ gls:borg über einen ~subprocess~ aufgerufen, um die Archiv Liste
|
||||||
respektive Statistik zurückzuerhalten Die gls:json Strings werden wieder auf
|
respektive Statistik zurückzuerhalten Die gls:json Strings werden wieder auf
|
||||||
die jeweilige Information geparst und die Archive in eine Python List, die
|
die jeweilige Information geparst und die Archive in eine Python Liste, die
|
||||||
Repository Statistik in Zahlen umgewandelt.
|
Repository Statistik, in Zahlen umgewandelt.
|
||||||
|
|
||||||
Da gls:borg die Repository Grössen in Bytes zurückgibt, sollten diese zur
|
Da gls:borg die Repository Grössen in Bytes zurückgibt, sollten diese zur
|
||||||
Anzeige noch in eine Menschen lesbarses Format umgerechnet werden. In Borg-Qt
|
Anzeige noch in eine Menschen lesbarses Format umgerechnet werden. In Borg-Qt
|
||||||
geschieht dies mit der Helferfunktion ~convert_size~. Die Funktion wurde von
|
geschieht dies mit der Helferfunktion ~convert_size~. Die Funktion wurde von
|
||||||
Stackoverflow footcite:sizeformat übernommen.
|
Stackoverflow footcite:sizeformat übernommen.
|
||||||
|
|
||||||
Beim Durchführen der Usability-Studie wurde noch ein Bug entdeckt.
|
Beim Durchführen der Usability-Studie wurde noch ein Bug entdeckt welcher die
|
||||||
Der Bug, der entdeckt wurde, tritt immer dann auf, wenn ein Archiv gemountet
|
Anwendung zum Abstürzen brachte. Der Bug, der entdeckt wurde, tritt immer dann
|
||||||
ist während man ein Backup erstellen möchte. Dies ist jedoch offenbar eine
|
auf, wenn ein Archiv gemountet ist während man ein Archiv erstellen möchte.
|
||||||
Funktion die von gls:borg nicht unterstützt wird footcite:borgmountissue.
|
Dies ist jedoch offenbar eine Funktion die von gls:borg nicht unterstützt wird
|
||||||
gls:borg kann mehrere Archive gleichzeitig mounten. Der User müsste jedoch
|
footcite:borgmountissue. gls:borg kann mehrere Archive gleichzeitig mounten.
|
||||||
jedes der Archive zuerst wieder unmounten bevor er eine neue Datensicherung
|
Der User müsste jedoch jedes der Archive zuerst wieder unmounten bevor er eine
|
||||||
erstellen kann. Das Problem wurde dadurch gelöst das dem User ein Dialog
|
neue Datensicherung erstellen kann. Das Problem wurde dadurch gelöst, dass dem
|
||||||
angezeigt wird, über welchen er vor einer Datensicherung zuerst die gemounteten
|
User ein Dialog angezeigt wird, über welchen er vor einer Datensicherung zuerst
|
||||||
Archive aushängen kann. Anschliessend startet die Datensicherung wie, wenn kein
|
die gemounteten Archive aushängen kann. Anschliessend startet die
|
||||||
Archiv gemountet gewesen wäre.
|
Datensicherung, wie wenn kein Archiv gemountet gewesen wäre.
|
||||||
|
|
||||||
#+caption: Screenshot der aktualisierten Archivliste und Repository Statistik.
|
#+caption: Screenshot der aktualisierten Archivliste und Repository Statistik.
|
||||||
#+name: fig:borgqt_archive_list
|
#+name: fig:borgqt_archive_list
|
||||||
|
@ -2085,9 +2085,9 @@ Archiv gemountet gewesen wäre.
|
||||||
|
|
||||||
** Restore
|
** Restore
|
||||||
|
|
||||||
Der Code für das Wiederherstellen eines Backups ist sehr ähnlich wie der Code
|
Der Code für das Wiederherstellen eines Archivs ist sehr ähnlich wie der Code
|
||||||
für das Erstellen. Die Besonderheiten bei dieser Funktion sind vor allem, die
|
für das Erstellen. Die Besonderheiten bei dieser Funktion sind vor allem die
|
||||||
Kontrolle das ein Archiv angewählt wurde bevor man die Wiederherstellung
|
Kontrolle, dass ein Archiv angewählt wurde, bevor man die Wiederherstellung
|
||||||
startet, das Erstellen des Zielpfades sowie das Aufräumen bei einem Fehler.
|
startet, das Erstellen des Zielpfades sowie das Aufräumen bei einem Fehler.
|
||||||
|
|
||||||
Wird der "Restore" Knopf gedrückt ohne das ein Archiv angewählt wurde, erscheint
|
Wird der "Restore" Knopf gedrückt ohne das ein Archiv angewählt wurde, erscheint
|
||||||
|
@ -2102,9 +2102,9 @@ darauf hinzuweisen, das er dies noch tun sollte.
|
||||||
Für die Wiederherstellung einer Datensicherung, selektiert der User das
|
Für die Wiederherstellung einer Datensicherung, selektiert der User das
|
||||||
gewünschte Archiv. Als zweiten Schritt startet er den Prozess mit Klick auf
|
gewünschte Archiv. Als zweiten Schritt startet er den Prozess mit Klick auf
|
||||||
"Restore". Im sich automatisch öffnenden Dialogfenster, ist der gewünschte
|
"Restore". Im sich automatisch öffnenden Dialogfenster, ist der gewünschte
|
||||||
Zielort auszuwählen. Ist der Zielort festgelegt, erstellt Borg-Qt
|
Zielort auszuwählen. Ist der Zielort festgelegt, erstellt Borg-Qt ein
|
||||||
Subverzeichnis mit dem Namen des Archivs und beginnt mit der eigentlichen
|
Subverzeichnis mit dem Namen des Archivs und beginnt mit der eigentlichen
|
||||||
Wiederherstellung. Ist der Zielort für die Applikation nicht beschreibbar sein
|
Wiederherstellung. Ist der Zielort für die Applikation nicht beschreibbar
|
||||||
erscheint die Fehlermeldung, Abbildung:([[fig:not_writeable]]), und der Vorgang
|
erscheint die Fehlermeldung, Abbildung:([[fig:not_writeable]]), und der Vorgang
|
||||||
wird abgebrochen. Nach der erfolgreichen Wiederherstellung öffnet die
|
wird abgebrochen. Nach der erfolgreichen Wiederherstellung öffnet die
|
||||||
Applikation den Zielort in einem Dateimanager, damit der User gleich mit den
|
Applikation den Zielort in einem Dateimanager, damit der User gleich mit den
|
||||||
|
@ -2115,7 +2115,7 @@ Dateien weiterarbeiten kann.
|
||||||
#+attr_latex: :width .2\paperwidth :placement [H]
|
#+attr_latex: :width .2\paperwidth :placement [H]
|
||||||
[[file:pictures/borgqt_not_writeable.png]]
|
[[file:pictures/borgqt_not_writeable.png]]
|
||||||
|
|
||||||
Gibt es, während dem Wiederherstellen einen Fehler gibt die Anwendung den
|
Gibt es, während dem Wiederherstellen, einen Fehler gibt die Anwendung den
|
||||||
entsprechenden Fehler aus und löscht zusätzlich noch den zu Beginn erstellten
|
entsprechenden Fehler aus und löscht zusätzlich noch den zu Beginn erstellten
|
||||||
Archiv Ordner.
|
Archiv Ordner.
|
||||||
|
|
||||||
|
@ -2134,13 +2134,13 @@ Archivs
|
||||||
gls:borg mountet jedes Archiv nur mit Leserechten. Es ist relativ
|
gls:borg mountet jedes Archiv nur mit Leserechten. Es ist relativ
|
||||||
unwahrscheinlich, dass der Zielpfad in unbeschreibbarer Form bereits vor dem
|
unwahrscheinlich, dass der Zielpfad in unbeschreibbarer Form bereits vor dem
|
||||||
Ausführen der ~mount_backup~ Methode bereits vorhanden ist. Ist dies der Fall
|
Ausführen der ~mount_backup~ Methode bereits vorhanden ist. Ist dies der Fall
|
||||||
kann davon ausgegangen werden das der Benutzer das Archiv bereits einmal
|
kann davon ausgegangen werden, dass der Benutzer das Archiv bereits einmal
|
||||||
gemountet hat. Genau dies wird in der Applikation auch so überprüft. Hat die
|
gemountet hat. Genau dies wird in der Applikation auch so überprüft. Hat die
|
||||||
Applikation Schreibrechte auf den Zielpfad, wird das ausgewählte Archiv auf
|
Applikation Schreibrechte auf den Zielpfad, wird das ausgewählte Archiv auf
|
||||||
diesem Pfad gemountet. Anschliessend wird der Pfad in einem Dateimanager
|
diesem Pfad gemountet. Anschliessend wird der Pfad in einem Dateimanager
|
||||||
geöffnet damit der Benutzer direkt mit den Dateien weiterarbeiten kann. Wurde
|
geöffnet, damit der Benutzer direkt mit den Dateien weiterarbeiten kann. Wurde
|
||||||
erkannt dass, das Archiv bereits gemountet wurde, also der Pfad nicht
|
erkannt, dass das Archiv bereits gemountet wurde, also der Pfad nicht
|
||||||
schreibbar ist, öffnet die Applikation direkt den Dateimanager ohne zu
|
schreibbar ist, öffnet die Applikation direkt den Dateimanager, ohne zu
|
||||||
versuchen das Archiv noch einmal zu mounten.
|
versuchen das Archiv noch einmal zu mounten.
|
||||||
|
|
||||||
Zusätzlich wird der Pfad jedes gemounteten Archivs in einer Liste gespeichert.
|
Zusätzlich wird der Pfad jedes gemounteten Archivs in einer Liste gespeichert.
|
||||||
|
@ -2169,7 +2169,7 @@ Funktion bereitzustellen, welche die Backups automatisch im Hintergrund
|
||||||
erledigt. Dadurch ist sichergestellt das die Backups im allgemeinen Trubel des
|
erledigt. Dadurch ist sichergestellt das die Backups im allgemeinen Trubel des
|
||||||
Lebens nicht vergessen gehen.
|
Lebens nicht vergessen gehen.
|
||||||
|
|
||||||
Voraussetzung für automatisierte Backups ist das die Datensicherung ohne
|
Voraussetzung für automatisierte Backups ist, dass die Datensicherung ohne
|
||||||
gls:gui gestartet werden kann. Bei Borg-Qt wird dies über einen Kommandozeilen
|
gls:gui gestartet werden kann. Bei Borg-Qt wird dies über einen Kommandozeilen
|
||||||
Parameter realisiert. Hierfür wurde das Python Standard Paket ~argparser~
|
Parameter realisiert. Hierfür wurde das Python Standard Paket ~argparser~
|
||||||
verwendet. Konkret bedeutet dies, dass wenn die Applikation auf der
|
verwendet. Konkret bedeutet dies, dass wenn die Applikation auf der
|
||||||
|
@ -2187,12 +2187,12 @@ Variante a), die Applikation permanent im Hintergrund laufen lassen, etwa als
|
||||||
Trayicon wie man das von anderen Applikationen wie etwas Dropbox kennt.
|
Trayicon wie man das von anderen Applikationen wie etwas Dropbox kennt.
|
||||||
|
|
||||||
Variante b) über Werkzeuge des Betriebssystems. Die drei Desktop
|
Variante b) über Werkzeuge des Betriebssystems. Die drei Desktop
|
||||||
Betriebsysteme, Windows, OS X und Linux, bringen alle drei Werkzeuge mit, um
|
Betriebsysteme, Windows, OS X und Linux bringen alle drei Werkzeuge mit, um
|
||||||
periodisch ein Programm auszuführen.
|
periodisch ein Programm auszuführen.
|
||||||
|
|
||||||
Für Borg-Qt wurde beschlossen Variante b) zu realisieren. Die Anwendung soll
|
Für Borg-Qt wurde beschlossen Variante b) zu realisieren. Die Anwendung soll
|
||||||
dem Benutzer soweit als möglich aus dem Weg gehen. Eine Anwendung welche
|
dem Benutzer soweit als möglich aus dem Weg gehen. Eine Anwendung welche
|
||||||
permanent in der Taskleiste lebt erfüllt das Kriterum nicht.
|
permanent in der Taskleiste lebt, erfüllt das Kriterum nicht.
|
||||||
|
|
||||||
Unter Linux wurden sich wiederholende Aufgaben, früher mit sogenannten Cron
|
Unter Linux wurden sich wiederholende Aufgaben, früher mit sogenannten Cron
|
||||||
Jobs umgesetzt. Die moderne Lösung sind heutzutage jedoch Systemd Timer. Also
|
Jobs umgesetzt. Die moderne Lösung sind heutzutage jedoch Systemd Timer. Also
|
||||||
|
@ -2208,7 +2208,7 @@ einfach in Klartextdateien mit der Dateiendung ~.service~ definiert. Der Inhalt
|
||||||
orientiert sich dabei praktischerweise am "INI" Stil. In Borg-Qt wurde das INI
|
orientiert sich dabei praktischerweise am "INI" Stil. In Borg-Qt wurde das INI
|
||||||
Format bereits bei den Konfigurationsdateien verwendet. Somit können die dort
|
Format bereits bei den Konfigurationsdateien verwendet. Somit können die dort
|
||||||
gesammelte Erfahrungen zur Implementation von ~configparser~ wiederverwendet
|
gesammelte Erfahrungen zur Implementation von ~configparser~ wiederverwendet
|
||||||
werden. Soll ein Service in einem gewissen Zeitintervall ausgeführt werden
|
werden. Soll ein Service in einem gewissen Zeitintervall ausgeführt werden,
|
||||||
benötigt Systemd eine weitere Datei mit dem gleichen Namen jedoch mit der
|
benötigt Systemd eine weitere Datei mit dem gleichen Namen jedoch mit der
|
||||||
Dateiendung ~.timer~ . Der Inhalt ist auch wieder im INI Stil gehalten. Systemd
|
Dateiendung ~.timer~ . Der Inhalt ist auch wieder im INI Stil gehalten. Systemd
|
||||||
versteht eine Vielzahl an Datumsformaten footcite:systemddate. In Borg-Qt
|
versteht eine Vielzahl an Datumsformaten footcite:systemddate. In Borg-Qt
|
||||||
|
@ -2221,7 +2221,7 @@ Mit der Custom Option kann der Benutzer sich den Zeitplan individueller
|
||||||
gestalten. Etwa "jeden Mittwoch um 12:00 Uhr" für Systemd übersetzt würde
|
gestalten. Etwa "jeden Mittwoch um 12:00 Uhr" für Systemd übersetzt würde
|
||||||
dieser Zeitplan dann so aussehen: ~Wednesday *-*-* 12:00:00~. Für spätere
|
dieser Zeitplan dann so aussehen: ~Wednesday *-*-* 12:00:00~. Für spätere
|
||||||
Versionen von Borg-Qt wäre es allenfalls auch möglich die Auswahl von mehreren
|
Versionen von Borg-Qt wäre es allenfalls auch möglich die Auswahl von mehreren
|
||||||
Wochentagen zu ermöglichen damit der Benutzer etwa folgenden Zeitplan erstellen
|
Wochentagen zu ermöglichen, damit der Benutzer etwa folgenden Zeitplan erstellen
|
||||||
könnte "Montag, Mittwoch, Freitag stündliche Backups." (~Monday, Wednesday,
|
könnte "Montag, Mittwoch, Freitag stündliche Backups." (~Monday, Wednesday,
|
||||||
Friday *-*-* *:00:00~).
|
Friday *-*-* *:00:00~).
|
||||||
|
|
||||||
|
@ -2237,8 +2237,8 @@ respektive Timers wurde eine Klasse ~SystemdFile~ erstellt. Somit könnte
|
||||||
die Funktion auch einfach in einem anderen Projekt verwendet werden.
|
die Funktion auch einfach in einem anderen Projekt verwendet werden.
|
||||||
|
|
||||||
Systemd benötigt zum Starten der Anwendung den absoluten Pfad in der Service
|
Systemd benötigt zum Starten der Anwendung den absoluten Pfad in der Service
|
||||||
Datei. Da davon ausgegangen werden kann das Borg-Qt im ~PATH~ des Systems
|
Datei. Da davon ausgegangen werden kann, das Borg-Qt im ~PATH~ des Systems
|
||||||
abgelegt wird, wurde das Unix Tool "which" verwendet um den exakten Speicherort
|
abgelegt wird, wurde das Unix Tool ~which~ verwendet, um den exakten Speicherort
|
||||||
zu erhalten. Mittels des Befehls ~which borg-qt~ erhält man den absoluten
|
zu erhalten. Mittels des Befehls ~which borg-qt~ erhält man den absoluten
|
||||||
Speicherort der Datei. Zusammen mit den Daten aus den Einstellungen wird diese
|
Speicherort der Datei. Zusammen mit den Daten aus den Einstellungen wird diese
|
||||||
Information in einem ~Configparser~ Objekt gespeichert, welches dann mithilfe
|
Information in einem ~Configparser~ Objekt gespeichert, welches dann mithilfe
|
||||||
|
@ -2247,7 +2247,7 @@ Codesnippet:([[code:systemdservice]]), respektive ~borg_qt.timer~,
|
||||||
Codesnippet:([[code:systemdtimer]]), Datei, im Systemd Pfad
|
Codesnippet:([[code:systemdtimer]]), Datei, im Systemd Pfad
|
||||||
~/home/username/.config/systemd/user/~ geschrieben und aktiviert wird.
|
~/home/username/.config/systemd/user/~ geschrieben und aktiviert wird.
|
||||||
|
|
||||||
Eine Option in der Datei ~borg_qt.timer~ die noch erwähnenswert ist, ist
|
Eine Option in der Datei ~borg_qt.timer~, die noch erwähnenswert ist, ist
|
||||||
~Persistent = true~. Ist ~Persistent~ auf ~true~ gesetzt, holt Systemd den
|
~Persistent = true~. Ist ~Persistent~ auf ~true~ gesetzt, holt Systemd den
|
||||||
Tasks nach sollte er eine Ausführung verpasst haben. Dies ist insbesondere dann
|
Tasks nach sollte er eine Ausführung verpasst haben. Dies ist insbesondere dann
|
||||||
hilfreich, wenn etwa der Zeitplan auf ~daily~ oder ~weekly~ gesetzt wurde.
|
hilfreich, wenn etwa der Zeitplan auf ~daily~ oder ~weekly~ gesetzt wurde.
|
||||||
|
@ -2310,7 +2310,7 @@ Abbildungen:([[fig:borgqt_settings_include_v2]]) und
|
||||||
Um die Funktionen der Applikation zur erklären wurde ein Hilfe Fenster,
|
Um die Funktionen der Applikation zur erklären wurde ein Hilfe Fenster,
|
||||||
Abbildung:([[fig:borgqt_help]]), eingebaut. Dieses wird dem Benutzer beim Start der
|
Abbildung:([[fig:borgqt_help]]), eingebaut. Dieses wird dem Benutzer beim Start der
|
||||||
Applikation angezeigt. Es gibt ihm einen kurzen Überblick welcher Button welche
|
Applikation angezeigt. Es gibt ihm einen kurzen Überblick welcher Button welche
|
||||||
Aktion auslöst und welche Elemente, welche Information anzeigen. Optional kann
|
Aktion auslöst und welche Elemente welche Information anzeigen. Optional kann
|
||||||
der Benutzer entscheiden, dass er das Fenster beim nächsten Start nicht mehr
|
der Benutzer entscheiden, dass er das Fenster beim nächsten Start nicht mehr
|
||||||
angezeigt bekommen möchte. Über den Button "Help" kann das Fenster jederzeit
|
angezeigt bekommen möchte. Über den Button "Help" kann das Fenster jederzeit
|
||||||
unabhängig der Einstellungen wieder angezeigt werden.
|
unabhängig der Einstellungen wieder angezeigt werden.
|
||||||
|
@ -2333,10 +2333,10 @@ entpackendes Dateiarchiv. Sämtliche benötigten Python Module und sonstige
|
||||||
Dateien wie etwa die Icons oder gls:gui Definitionsdateien sind darin
|
Dateien wie etwa die Icons oder gls:gui Definitionsdateien sind darin
|
||||||
enthalten.
|
enthalten.
|
||||||
|
|
||||||
Diese Art der Auslieferung hat den Vorteil, das der User das Programm nicht
|
Diese Art der Auslieferung hat den Vorteil, dass der User das Programm nicht
|
||||||
speziell installieren muss oder dafür irgendwelche zusätzlichen Dinge
|
speziell installieren muss oder dafür irgendwelche zusätzlichen Dinge
|
||||||
installieren muss. Der Nachteil ist jedoch das so ein Binary nur auf dem
|
installieren muss. Der Nachteil ist jedoch, dass ein solches Binary nur auf dem
|
||||||
jeweiligen Betriebssystem erstellt und ausgeführt werden kann. Das heisst das
|
jeweiligen Betriebssystem erstellt und ausgeführt werden kann. Das heisst, dass
|
||||||
man unter Linux etwa keine Binaries für Mac erstellen kann oder umgekehrt.
|
man unter Linux etwa keine Binaries für Mac erstellen kann oder umgekehrt.
|
||||||
|
|
||||||
Das Binary wird mit dem Programm "PyInstaller"footcite:pyinstaller erstellt.
|
Das Binary wird mit dem Programm "PyInstaller"footcite:pyinstaller erstellt.
|
||||||
|
@ -2466,6 +2466,7 @@ Abbildung:([[fig:new-is-risk]]), eine bessere Risikobewertung als das geplante
|
||||||
|
|
||||||
#+caption: Risikoanalyse der neuen Ist-Situation
|
#+caption: Risikoanalyse der neuen Ist-Situation
|
||||||
#+name: fig:new-is-risk
|
#+name: fig:new-is-risk
|
||||||
|
#+ATTR_LATEX: :placement [H]
|
||||||
[[file:pictures/ist_risiko_neu.pdf]]
|
[[file:pictures/ist_risiko_neu.pdf]]
|
||||||
|
|
||||||
** Projektmanagement
|
** Projektmanagement
|
||||||
|
@ -2518,11 +2519,11 @@ Element wie der Code dazu aussieht. Es wurde auch klar, dass die Aufgaben in
|
||||||
einer Studie richtig gestellt werden müssen. Ansonsten wissen die Probanden
|
einer Studie richtig gestellt werden müssen. Ansonsten wissen die Probanden
|
||||||
schon gar nicht erst was von ihnen gefordert wird.
|
schon gar nicht erst was von ihnen gefordert wird.
|
||||||
|
|
||||||
Auch sollte, wenn möglich, darauf geachtet werden das auf einem Betriebssystem
|
Auch sollte, wenn möglich, darauf geachtet werden, dass auf einem Betriebssystem
|
||||||
getestet mit welchem die Probanden bereits etwas Erfahrung haben. Zwei der
|
getestet mit welchem die Probanden bereits etwas Erfahrung haben. Zwei der
|
||||||
Probanden waren ab dem Verhalten und Aussehen des Dateimanagers von Ubuntu
|
Probanden waren ab dem Verhalten und Aussehen des Dateimanagers von Ubuntu
|
||||||
18.04 etwas verwirrt. Sie hatten ihn zuvor weder gesehen noch genutzt.
|
18.04 etwas verwirrt. Sie hatten ihn zuvor weder gesehen noch genutzt.
|
||||||
Alternativ könnte auch die Gruppe der Probanden so gewählt werden das sie mit
|
Alternativ könnte auch die Gruppe der Probanden so gewählt werden, dass sie mit
|
||||||
dem Betriebssystem bereits vertraut sind.
|
dem Betriebssystem bereits vertraut sind.
|
||||||
|
|
||||||
Eine Usability-Studie ist auf jeden Fall etwas, was man bei
|
Eine Usability-Studie ist auf jeden Fall etwas, was man bei
|
||||||
|
@ -2730,38 +2731,38 @@ um seine sowie teilweise auch die Daten von Bekannten zu sichern.
|
||||||
#+CAPTION: Arbeitsjournal
|
#+CAPTION: Arbeitsjournal
|
||||||
#+ATTR_LATEX: :environment longtable :align |p{2cm}|p{5cm}|p{5cm}|p{7cm}|
|
#+ATTR_LATEX: :environment longtable :align |p{2cm}|p{5cm}|p{5cm}|p{7cm}|
|
||||||
#+NAME: tab:arbeitsjournal
|
#+NAME: tab:arbeitsjournal
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| <8> | <20> | <20> | <20> |
|
| <8> | <20> | <20> | <20> |
|
||||||
| *Von/Bis*\cellcolor[HTML]{C0C0C0} | *Geplante Arbeiten*\cellcolor[HTML]{C0C0C0} | *Erreichte Arbeiten*\cellcolor[HTML]{C0C0C0} | *Eindruck*\cellcolor[HTML]{C0C0C0} |
|
| *Von/Bis*\cellcolor[HTML]{C0C0C0} | *Geplante Arbeiten*\cellcolor[HTML]{C0C0C0} | *Erreichte Arbeiten*\cellcolor[HTML]{C0C0C0} | *Eindruck*\cellcolor[HTML]{C0C0C0} |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 10.-16.12.2018 | Zeitplan erarbeiten, Ziele dokumentieren | keine Abweichung | - |
|
| 10.-16.12.2018 | Zeitplan erarbeiten, Ziele dokumentieren | keine Abweichung | - |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 17.-23.12.2018 | Lösungsvarianten erfassen, Lösungsvarianten bewerten, Lösungsvariante bestimmen, SWOT Analyse erstellen, 1. Meeting | keine Abweichung | Marco Frei hat noch diverse Punkte eingebracht die, die Planung ziemlich durcheinander bringen. Bedeute viel zusätzliche Arbeit. |
|
| 17.-23.12.2018 | Lösungsvarianten erfassen, Lösungsvarianten bewerten, Lösungsvariante bestimmen, SWOT Analyse erstellen, 1. Meeting | keine Abweichung | Marco Frei hat noch diverse Punkte eingebracht, die die Planung ziemlich durcheinander bringen. Bedeute viel zusätzliche Arbeit. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 24.-30.12.2018 | Controlling erarbeiten, Ist- und Soll-Analyse, SWOT Analyse, Umweltanalyse, Massnahmen Katalog erarbeiten, User Stories erarbeiten, Use Case Diagramm erstellen, Use Cases ausarbeiten, Anforderungskatalog erstellen, UML Diagramme | keine Abweichung | UML Diagramme für eine Software zu erstellen die nicht existiert ist noch eine interessante Herausforderung. |
|
| 24.-30.12.2018 | Controlling erarbeiten, Ist- und Soll-Analyse, SWOT Analyse, Umweltanalyse, Massnahmen Katalog erarbeiten, User Stories erarbeiten, Use Case Diagramm erstellen, Use Cases ausarbeiten, Anforderungskatalog erstellen, UML Diagramme | keine Abweichung | UML Diagramme für eine Software zu erstellen die nicht existiert ist noch eine interessante Herausforderung. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 31.12-06.01.2019 | Lösungsvarianten erarbeiten und entscheiden, Test Konzept beschreiben und Testfälle erstellen, Github Repository erstellen | Testfälle liessen sich noch nicht für alle Ziele erstellen. Gewisse Features hängen noch sehr davon ab wie die Basis der Applikation sich entwickelt. | Insgesamt gut gelaufen. Das Repository auf Github konnte ich unter einer eigenen Organisation erstellen dadurch wird das Zusammenarbeiten in der Zukunf einfacher. |
|
| 31.12-06.01.2019 | Lösungsvarianten erarbeiten und entscheiden, Test Konzept beschreiben und Testfälle erstellen, Github Repository erstellen | Testfälle liessen sich noch nicht für alle Ziele erstellen. Gewisse Features hängen noch sehr davon ab, wie die Basis der Applikation sich entwickelt. | Insgesamt gut gelaufen. Das Repository auf Github konnte ich unter einer eigenen Organisation erstellen, dadurch wird das Zusammenarbeiten in der Zukunf einfacher. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 07.-13.01.2019 | UI ausarbeiten, UI Test ausarbeiten | keine Abweichung | Das das Projekt gut im Zeitplan ist soweit ein positiver Ausblick. |
|
| 07.-13.01.2019 | UI ausarbeiten, UI Test ausarbeiten | keine Abweichung | Da das Projekt gut im Zeitplan ist besteht zur Zeit ein positiver Eindruck. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 14.-20.01.2019 | Backend "Read Config" Funktion schreiben, Frontend "Read Config" Funktion beginnen | "Frontend Read Config", "Backend Write Config", "Frontend Write Config", Funktion bereits abgeschlossen. | Soweit sehr gut im Zeitplan. Die Arbeitssessions mit den Kollegen helfen. Seltsam das Qt keine Methode list.items() kennt. |
|
| 14.-20.01.2019 | Backend "Read Config" Funktion schreiben, Frontend "Read Config" Funktion beginnen | "Frontend Read Config", "Backend Write Config", "Frontend Write Config", Funktion bereits abgeschlossen. | Soweit sehr gut im Zeitplan. Die Arbeitssessions mit den Kollegen helfen. Seltsam das Qt keine Methode list.items() kennt. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 21.-27.01.2019 | "Backend Backup" Funktion, "Frontend Backup" Funktion beginnen, Automatische Backups recherchieren | keine Abweichung | Erkältung drückt etwas auf die Performance. gls:unittest sind nocht nicht perfekt aber sind eine grosse Hilfe. |
|
| 21.-27.01.2019 | "Backend Backup" Funktion, "Frontend Backup" Funktion beginnen, Automatische Backups recherchieren | keine Abweichung | Erkältung drückt etwas auf die Performance. gls:unittest sind nocht nicht perfekt aber sind eine grosse Hilfe. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 28.-03.02.2019 | "Frontend Backup" Funktion fertigstellen, "Backend und Frontend Restore" Funktion | Geplantes erreicht sowie "Mounting" und "Delete" Funktion sowohl im Backend wie auch im Frontend bereits umgesetzt. | Da die Funktionen immer von gls:borg ausgeführt werden konnte sehr viel Code von den "Backup" und "Restore" Funktionen übernommen werden was die Entwicklung sehr beschleunigt hat. |
|
| 28.-03.02.2019 | "Frontend Backup" Funktion fertigstellen, "Backend und Frontend Restore" Funktion | Geplantes erreicht sowie "Mounting" und "Delete" Funktion sowohl im Backend wie auch im Frontend bereits umgesetzt. | Da die Funktionen immer von gls:borg ausgeführt werden konnte sehr viel Code von den "Backup" und "Restore" Funktionen übernommen werden, was die Entwicklung sehr beschleunigt hat. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 04.02.-10.02.2019 | Meeting Pendenzen nochmal durchgehen. Die Interface Funktionen bereinigen. Automatische Backups implementieren. | Meeting Pendenzen wurden aufgenommen und das Interface wurde bereinigt. Automatische Backups konnten noch nicht fertig gestellt werden. | Automatische Backups sind noch relativ komplex und benötigen Kenntnisse der Systemd Timer. |
|
| 04.02.-10.02.2019 | Meeting Pendenzen nochmal durchgehen. Die Interface Funktionen bereinigen. Automatische Backups implementieren. | Meeting Pendenzen wurden aufgenommen und das Interface wurde bereinigt. Automatische Backups konnten noch nicht fertig gestellt werden. | Automatische Backups sind noch relativ komplex und benötigen Kenntnisse der Systemd Timer. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 11.02.-17.02.2019 | UI Tests mit den Usern durchführen, Resultate auswerten, Feedback in Applikation einarbeiten | keine Abweichung | Es ist sehr spannend zu sehen wie Benutzer mit der Anwendung interagieren und welche Featues sie vermissen. |
|
| 11.02.-17.02.2019 | UI Tests mit den Usern durchführen, Resultate auswerten, Feedback in Applikation einarbeiten | keine Abweichung | Es ist sehr spannend zu sehen wie Benutzer mit der Anwendung interagieren und welche Featues sie vermissen. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 18.02.-24.02.2019 | Automatische Backups implementieren, 1. Release veröffentlichen, Readme updaten | keine Abweichung | Das Projekt ist soweit sehr gut im Zeitplan. Die Systemd Timer sind können mit vielen verschiedenen Zeitformaten umgehen und sind sehr flexibel. |
|
| 18.02.-24.02.2019 | Automatische Backups implementieren, 1. Release veröffentlichen, Readme updaten | keine Abweichung | Das Projekt ist soweit sehr gut im Zeitplan. Die Systemd Timer sind können mit vielen verschiedenen Zeitformaten umgehen und sind sehr flexibel. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 25.02.-03.03.2019 | Testfälle durchgehen, Dokumentation zur Realisierung abschliessen | keine Abweichung | Das Projekt befindet sich immer noch auf gutem Kurs. Nun fehlt noch der Feinschliff. |
|
| 25.02.-03.03.2019 | Testfälle durchgehen, Dokumentation zur Realisierung abschliessen | keine Abweichung | Das Projekt befindet sich immer noch auf gutem Kurs. Nun fehlt noch der Feinschliff. |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 04.03.-10.03.2019 | Ausblick abschliessen, Controlling abschliessen | keine Abweichung | - |
|
| 04.03.-10.03.2019 | Ausblick abschliessen, Controlling abschliessen | keine Abweichung | - |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| 11.03.-18.03.2019 | Korrekturen der Korrekturleser einarbeiten, Abgabe | keine Abweichung | - |
|
| 11.03.-18.03.2019 | Korrekturen der Korrekturleser einarbeiten, Abgabe | keine Abweichung | - |
|
||||||
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
#+LATEX:\end{landscape}
|
#+LATEX:\end{landscape}
|
||||||
|
|
||||||
** Meeting Protokolle
|
** Meeting Protokolle
|
||||||
|
|
Reference in New Issue