reword various parts and fix some typos

This commit is contained in:
Andreas Zweili 2019-03-11 10:09:20 +01:00
parent 90f00722d1
commit 6c2a97334c
1 changed files with 94 additions and 97 deletions

View File

@ -365,7 +365,7 @@ unvorbereitet gegenüber, sollten sie eintreffen.
In der Tabelle: ([[tab:risikobeschreibung]]), sind die Risiken des Projektes
gemeinsam mit ihren Gegenmassnahmen aufgelistet. Somit können gewisse Risiken
bereits vorher abgefangen werden.
bereits vorher vermieden werden.
#+CAPTION: Projektrisiken
#+ATTR_LATEX: :environment longtable :align |p{0.45\textwidth}|p{0.45\textwidth}|
@ -474,7 +474,7 @@ Abbildung:([[fig:sollrisiko]]), ist das Soll-Risiko, welches mit dieser Arbeit
angestrebt wird, ebenfalls grafisch dargestellt.
Es sollte im Rahmen der Arbeit möglich sein die meisten Risiken zu verringern.
Da automatische Hintergrundbackups jedoch nur 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
Arbeit reduzieren kann.
@ -585,40 +585,40 @@ Use Cases und zeigt einem gut die Zuständigkeiten der Aktoren auf.
#+CAPTION: Use Case 1.0 Backup erstellen
#+ATTR_LATEX::environment longtable :align |>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}| :placement [H]
#+NAME: tab:uc_backup
|---------------------+---------------------------------------------------------------------------------------------|
| | <30> |
| *Identifier + Name* | 1.0 Backup erstellen |
|---------------------+---------------------------------------------------------------------------------------------|
| *Description* | Das erstellen einer Datensicherung durch gls:borg anstossen. |
|---------------------+---------------------------------------------------------------------------------------------|
| *Actors* | Benutzer |
|---------------------+---------------------------------------------------------------------------------------------|
| *Status* | Freigegeben |
|---------------------+---------------------------------------------------------------------------------------------|
| *Includes* | - |
|---------------------+---------------------------------------------------------------------------------------------|
| *Trigger* | User möchte ein Backup erstellen. |
|---------------------+---------------------------------------------------------------------------------------------|
| *Preconditions* | Die Applikation wurde gestartet. |
|---------------------+---------------------------------------------------------------------------------------------|
| *Postconditions* | Das erstellte Backup wird angezeigt. |
|---------------------+---------------------------------------------------------------------------------------------|
| *Normal Flow* | 1. Den Quellpfad auswählen. |
| | 2. Den Button "Backup" anklicken. |
| | 3. Ein Pop mit Fortschrittsbalken erscheint und zeigt die Zeit bis zum Ende des Backups an. |
| | 4. Am Ende des Backups verschwindet das Pop-up wieder. |
| | 5. Die Liste der Backups aktualisiert sich. |
|---------------------+---------------------------------------------------------------------------------------------|
| *Alternative Flow* | - |
|---------------------+---------------------------------------------------------------------------------------------|
| *Notes* | - |
|---------------------+---------------------------------------------------------------------------------------------|
| *UC History* | 1.0 Draft erstellt durch AZ |
|---------------------+---------------------------------------------------------------------------------------------|
| *Author* | A. Zweili |
|---------------------+---------------------------------------------------------------------------------------------|
| *Date* | 30.12.2018 |
|---------------------+---------------------------------------------------------------------------------------------|
|---------------------+------------------------------------------------------------------------------------------------|
| | <30> |
| *Identifier + Name* | 1.0 Backup erstellen |
|---------------------+------------------------------------------------------------------------------------------------|
| *Description* | Das Erstellen einer Datensicherung durch gls:borg anstossen. |
|---------------------+------------------------------------------------------------------------------------------------|
| *Actors* | Benutzer |
|---------------------+------------------------------------------------------------------------------------------------|
| *Status* | Freigegeben |
|---------------------+------------------------------------------------------------------------------------------------|
| *Includes* | - |
|---------------------+------------------------------------------------------------------------------------------------|
| *Trigger* | User möchte ein Backup erstellen. |
|---------------------+------------------------------------------------------------------------------------------------|
| *Preconditions* | Die Applikation wurde gestartet. |
|---------------------+------------------------------------------------------------------------------------------------|
| *Postconditions* | Das erstellte Backup wird angezeigt. |
|---------------------+------------------------------------------------------------------------------------------------|
| *Normal Flow* | 1. Den Quellpfad auswählen. |
| | 2. Den Button "Backup" anklicken. |
| | 3. Ein Pop-Up mit Fortschrittsbalken erscheint und zeigt die Zeit bis zum Ende des Backups an. |
| | 4. Am Ende des Backups verschwindet das Pop-up wieder. |
| | 5. Die Liste der Backups aktualisiert sich. |
|---------------------+------------------------------------------------------------------------------------------------|
| *Alternative Flow* | - |
|---------------------+------------------------------------------------------------------------------------------------|
| *Notes* | - |
|---------------------+------------------------------------------------------------------------------------------------|
| *UC History* | 1.0 Draft erstellt durch AZ |
|---------------------+------------------------------------------------------------------------------------------------|
| *Author* | A. Zweili |
|---------------------+------------------------------------------------------------------------------------------------|
| *Date* | 30.12.2018 |
|---------------------+------------------------------------------------------------------------------------------------|
#+LATEX:}
#+caption: Aktivitätsdiagramm zum Erstellen eines Backups
#+name: fig:activity_backup
@ -881,7 +881,7 @@ Use Cases und zeigt einem gut die Zuständigkeiten der Aktoren auf.
| | <30> |
| *Identifier + Name* | 6.0 automatische Backups aktivieren |
|---------------------+-----------------------------------------------------------------------|
| *Description* | Ein Systemdienst wird hinterlegt zum ausführen automatischer Backups. |
| *Description* | Ein Systemdienst wird hinterlegt zum Ausführen automatischer Backups. |
|---------------------+-----------------------------------------------------------------------|
| *Actors* | User |
|---------------------+-----------------------------------------------------------------------|
@ -940,17 +940,17 @@ Die detaillierte Implementation wird in der Sektion [[Realisierung][Realisierung
** Varianten
Da Borg eine gls:json API zur Verfügung stellt gibt es diverse Möglichkeiten, um
das Programm anzubinden. Da das Ziel ist, das Programm normalen Nutzern
zugänglicher zu machen, bietet sich ein normales Desktop Programm am ehesten
an. Desktop Programme werden von allen Computer Usern täglich genutzt und sind
somit etwas was sie kennen. Zudem ist es für die User auch viel einfacher zu
verstehen als sie vor der Nutzung einen lokalen Webserver starten müssten und
diesen im Anschluss zur Nutzung wieder beenden müssten.
Mit der gls:json gls:api von gls:borg stehen einem diverse Möglichkeiten zur
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
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
einfacher zu verstehen als sie vor der Nutzung einen lokalen Webserver starten
müssten und diesen im Anschluss zur Nutzung wieder beenden müssten.
*** Bewertung
Mit der Idee aus der Einleitung zu den Varianten wurde dann eine Tabelle, mit
Mit der Idee aus der "Einleitung zu den Varianten" wurde dann eine Tabelle, mit
Anforderungen an die Technologien, erstellt. Die Bewertungspunkte setzen sich
einerseits aus Projektzielen anderseits aus für das Projekt sinnvollen Punkten
zusammen. Dadurch ergeben sich dann die Bewertungen, welche in der
@ -996,17 +996,18 @@ der Tabelle Projektziele ([[tab:projektziele]]).
*** Backend
Fürs Backend bieten sich die folgende drei Sprachen an: [[C#][C#]], [[C++][C++]], [[Python][Python]].
Dies vor allem, weil alle Allrounder Sprachen sind und sich gut für Desktop
Applikationen eignen.
Für die Backend Programmierung bieten sich die folgende drei Sprachen an: [[C#][C#]],
[[C++][C++]], [[Python][Python]]. Dies vor allem, weil alle drei Allrounder Sprachen sind und sich
gut für Desktop Applikationen eignen.
**** C#
C# ist eine von Microsoft entwickelte Programmiersprache welche viele
Frameworks zur Verfügung hat. Insbesondere aufgrund der grossen kommerziellen
Nutzung und der guten Integration mit Windows hat C# eine relative grosse
Verbreitung. Bei Linux und OS X ist es jedoch schwieriger C# zu integrieren und
zu nutzen.
Frameworks zur Verfügung stellt. Insbesondere aufgrund der grossen
kommerziellen Nutzung und der guten Integration mit Microsoft Windows hat C#
eine relative grosse Verbreitung. Bei Linux und OS X ist es jedoch schwieriger
C# zu integrieren und zu nutzen da es nicht standardmässig installiert ist und
der Fokus von C# hauptsächlich auf Microsoft Windows liegt.
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
@ -1027,7 +1028,7 @@ Windows und OS X erhältlich. Es ist auch möglich C# Projekte ausserhalb von
Visual Studio zu erstellen, es ist jedoch nicht sehr einfach.
Der Code ist gut lesbar und es gibt offizielle Styleguides von Microsoft was
den Code über Projekte hinaus einigermassen einheitlich aussehen lässt. Zudem
den Code über Projekte hinaus einheitlich aussehen lässt. Zudem
hilft hier auch Visual Studio stark den Code entsprechend zu formatieren.
Besonders angenehm sind die Klassen- und Methodennamen der offiziellen
Frameworks. Insgesamt sehr gut gelöst aber in Sachen Lesbarkeit noch etwas
@ -1039,7 +1040,7 @@ installieren und nutzbar zu machen. Auf anderen Plattform wird dies leider
nicht einfacher und unter Linux ist es bereits schwierig eine funktionierende
Umgebung in Gang zu bringen.
Da C# bereits an der IBZ gelernt wird, ist der Lernfaktor hier im Vergleich zu
Da C# bereits an der IBZ gelehrt wird, ist der Lernfaktor hier im Vergleich zu
den anderen Sprachen sicher am kleinsten. Allerdings gibt es noch keinerlei
Kenntnisse beim Einbinden eines der unten aufgeführten gls:gui Frameworks.
Daher gibt es auf jeden Fall noch genügend zu lernen.
@ -1303,9 +1304,9 @@ Abbildung ([[fig:meld]]).
[[file:pictures/meld.png]]
#+attr_latex: :center
Die Gtk Dokumentation empfiehlt footcite:gtk_setup, dass man unter Windows das
Programm MSYS2 installiert, um Gtk einzurichten. Zum Programmieren an sich
braucht es offenbar nicht zwingend weitere Tools aus einem Editor. Wie auch bei
Die Gtk Dokumentation empfiehlt footcite:gtk_setup, dass man unter Microsoft
Windows das Programm MSYS2 installiert, um Gtk einzurichten. Zum Programmieren
an sich braucht es nicht zwingend weitere Tools aus einem Editor. Wie auch bei
Qt hat man jedoch die Möglichkeit das gls:gui mit einem gls:gui Designer
grafisch zu erstellen.
@ -1593,9 +1594,9 @@ 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
sollte.
Während des Tests ist in der Anwendung noch ein Bug aufgetaucht, welcher
Probleme beim Erstellen von Archiven machte. Die detaillierte Lösung dafür ist im
Kapitel [[Realisierung]] beschrieben.
Während des Tests ist in der Anwendung noch ein Bug aufgetaucht, welcher unter
gewissen Umständen Probleme beim Erstellen von Archiven machte. Die
detaillierte Lösung dafür ist im Kapitel [[Realisierung]] beschrieben.
**** Proband 4
@ -1609,30 +1610,27 @@ meistern.
Probandin 5 mit der Anwendung insgesamt sehr gut klar und hat auch als Einzige
die Tooltips auf den Buttons entdeckt und dann genutzt. Aufgabe 2 war jedoch
auch schwierig zu lösen, danach ging es jedoch ohne Probleme. Als Feedback wurde
genannt, dass 21:00 Uhr etwas spät für solche Tests sei.
auch schwierig zu lösen, danach ging es jedoch ohne Probleme.
*** Auswertung
Nach den 5 Tests liess sich feststellen, dass die Anwendung für die Anwender
insgesamt einfach zu bedienen ist, sobald sie einmal wissen, welche Buttons
welche Aktion auslösen und wie sich die Anwendung verhält. Um Hilfestellung zu
leisten, wird im Rahmen der Diplomarbeit noch ein Hilfefenster eingebaut,
welches den Benutzern beim ersten Starten der Anwendung angezeigt wird und kurz
die jeweiligen Elemente des Interfaces anzeigt. Somit sollte auch das Problem
bei der Aufgabe zwei etwas abgeschwächt werden. Eines der Hauptprobleme war
dort das die Probanden nicht herausgefunden haben der schnellste Weg eine
Alle Testpersonen konnten die Applikation nach anfänglichen
Bedienungsschwierigkeiten sehr gut bedienen. Um Hilfestellung zu leisten, wird
im Rahmen der Diplomarbeit noch ein Hilfefenster eingebaut, welches den
Benutzern beim ersten Starten der Anwendung angezeigt wird und kurz die
jeweiligen Elemente des Interfaces anzeigt. Somit sollte auch das Problem bei
der Aufgabe zwei etwas abgeschwächt werden. Eines der Hauptprobleme war dort
das die Probanden nicht herausgefunden haben das der schnellste Weg eine
einzelne Datei wieder herzustellen über die "Mount" Funktion ginge. Die
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
Dokumentation oder im Idealfall eine Schulung Abhilfe schaffen.
Das Kontextmenü auf dem Rechtsklick, welches von zwei Usern gewünscht worden
ist, ist eine sehr gute Idee und sollte sich auch realisieren lassen. Dieses
Feature wird nicht im Rahmen der Diplomarbeit umgesetzt und für die zukünftige
Entwicklung aufgenommen.
Der von zwei Usern geäusserte wertvolle Hinweis, ein Kontextmenü
anzubieten, wird in die künftige Weiterentwicklung der Applikation
eingepflegt. Aus Ressourcengründen allerdings erst nach der Diplomarbeit.
Ein Dialog, welcher 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
Fortschrittsdialog und in der Archivlist erscheint ein weiterer Eintrag. Das
sind zwar nicht die offensichtlichsten Hinweise im Falle eines Fehlers
@ -1640,19 +1638,19 @@ 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
das Bedürfnis nach einer Bestätigung.
Für die Zukunft wird eine Deutsche Übersetzung geplant. Dies würde die
Anwendung dann vor allem Leuten mit weniger guten Englisch Kenntnissen
zugänglich machen.
Eine Deutschübersetzung, eine weitere Anforderung der Usability Tester, wird
auch für zukünftige Entwicklungen aufgenommen und nicht im Rahmen der
Diplomarbeit umgesetzt.
Im Rahmen der Diplomarbeit werden noch einige Texte angepasst. An gewissen
Stellen redet die Anwendung von "Backups" und an anderen von "Archivs". Da
gls:borg 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" Optionen, über der Liste noch ein Label hinzugefügt, um die Elemente
zu beschreiben. Des Weiteren werden die Buttons "Add file" und "Add folder" zu
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
ü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
beschreiben. Schlussendlich werden die Buttons "Add file" und "Add folder" zu
"Exclude file" und "Exclude folder" sowie "Include file" und "Include folder"
umbenannt. Somit zeigen die Buttons dann auch direkt, dass sie Dateien
respektive Ordner ein-/ausschliessen Ein paar der Probanden hatten es zuerst
respektive Ordner ein-/ausschliessen. Ein paar der Probanden hatten es zuerst
über den "Remove" Button versucht.
* Realisierung
@ -1672,16 +1670,15 @@ ist.
** Benutzerinterface
*** Inspiration
Bevor gls:borg vom Projektleiter als Backup Software eingesetzt wurde, nutzte
er die Software "Back in Time"footcite:backintime. Die Software setzt auf Rsync
zum Kopieren der Dateien. Dies erlaubt auch schnelle Backups über gls:ssh zu
machen. "Back in Time" hat allerdings das Problem, dass es keine gls:dedup
beherrscht.
In der Vorstudie zur Diplomarbeit wurde gls:borg mit der Software "Back in
Time"footcite:backintime verglichen. "Back in Time" setzt auf Rsync zum
Kopieren der Dateien. Dies erlaubt es "Back in Time" auch schnelle Backups über
gls:ssh zu machen allerdings ohne gls:dedup.
Das Userinterface, zu sehen in Abbildung:([[fig:bit_main]]), ist jedoch sehr
gelungen und soll Borg-Qt als Vorlage dienen. Insbesondere die einfache und
direkte Art ein Backup eines spezifischen Pfades zu machen ist sehr gelungen.
Da sie es dem User so einfach wie möglich macht ein Backup zu erstellen.
Das übersichtliche Userinterface in Abbildung:([[fig:bit_main]]), wurde für Borg-Qt
als Vorlage genommen. Insbesondere die einfache und direkte Art ein Backup
eines spezifischen Pfades zu machen ist sehr gelungen. Da sie es dem User so
einfach wie möglich macht ein Backup zu erstellen.
#+caption: Screenshot des Hauptfensters der Software "Back in Time"
#+name: fig:bit_main
@ -1697,16 +1694,16 @@ intuitiv.
Die angenehmere Variante ist es den Qt Designer, Abbildung:([[fig:qt_designer]]),
zu nutzen. Mit diesem lassen sich die Oberflächen in einer grafischen
Oberfläche designen und mit einem Befehl auch gleich starten damit man direkt
sieht wie sich die Oberflächen auf dem System verhalten.
Oberfläche designen und auch gleich starten. Damit ist direkt zu sehen wie sich
die Oberflächen auf dem System verhalten.
#+caption: Ein Screenshot der Applikation Qt Designer
#+name: fig:qt_designer
[[file:pictures/qt_designer.png]]
#+attr_latex: :center
Auf Basis der Ziele und der Use Cases wurde eine erste Version des glspl:gui
erstellt. Im Hauptfenster, Abbildung:([[fig:borgqt_main_v1]]), befinden sich wie
Mit der ersten gls:gui Version wurden die ersten Basisziele der Projektarbeit
umgesetzt. Im Hauptfenster, Abbildung:([[fig:borgqt_main_v1]]), befinden sich wie
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
sichernden Pfades. Im oberen Bereich findet sich die Toolbar mit den Aktionen,