make various changes to the layout to fit the double page layout

This commit is contained in:
Andreas Zweili 2019-04-03 22:55:51 +02:00
parent 2b37d7833b
commit c62b5410a1
2 changed files with 178 additions and 156 deletions

View File

@ -6,7 +6,7 @@
\include{projektdokumentation_titlepage}
\newpage
\cleardoublepage
\renewcommand{\abstractname}{Management Summary}
\begin{abstract} Dies ist die Dokumentation für die Diplomarbeit von Andreas
Zweili, welche dieser im Rahmen seines Studiums an der IBZ Schule in Aarau
@ -17,38 +17,38 @@ verwendeten Werkzeuge, die Projektplanung sowie die dabei aufgetretenen
Probleme.
\end{abstract}
\newpage
\cleardoublepage
\microtypesetup{protrusion=false} % disables protrusion locally in the document
\tableofcontents % prints Table of Contents
\microtypesetup{protrusion=true} % enables protrusion
\newpage
\cleardoublepage
\include{projektdokumentation}
\newpage
\cleardoublepage
%\nocite{*}
\printbibliography[heading=bibintoc]
\newpage
\cleardoublepage
\microtypesetup{protrusion=false}
\listoffigures
\microtypesetup{protrusion=true}
\
\newpage
\cleardoublepage
\microtypesetup{protrusion=false}
\listoftables
\microtypesetup{protrusion=true}
\
\newpage
\cleardoublepage
\microtypesetup{protrusion=false}
\lstlistoflistings
\microtypesetup{protrusion=true}
\
\newpage
\cleardoublepage
\printglossaries
\end{document}

View File

@ -30,6 +30,7 @@ Schule erstellt und steht unter der \gls{cc} BY-SA 4.0 \footcite{cc} Lizenz.
Dadurch darf die Arbeit unter Beibehalten der Lizenz kopiert und
weiterverarbeitet werden. Zusätzlich muss der Urheber genannt werden.
\cleardoublepage
\section{Initialisierung}
\label{sec:orgdbad29f}
\subsection{Vision}
@ -203,8 +204,8 @@ und ist nicht unwichtig.
Projektziele}
\\
\end{longtable}
\newpage
\newpage
\subsection{Projektabgrenzung}
\label{sec:org82d5209}
@ -434,6 +435,7 @@ Projektrisiken}
\\
\end{longtable}
\cleardoublepage
\section{Analyse}
\label{sec:org61eed6c}
\subsection{SWOT-Analyse}
@ -483,7 +485,6 @@ Entwickler jedoch offen sein. Der Quellcode wird bereits während der Arbeit
Stakeholder Diagramm}
\end{figure}
\newpage
\begin{landscape}
\begin{table}[htbp]
\centering
@ -556,14 +557,14 @@ Risikobeschreibung}
\end{table}
\begin{figure}[H]
\begin{figure}
\centering
\includegraphics[width=9cm]{pictures/istrisiko.pdf}
\caption{\label{fig:org2c84d03}
Grafische Darstellung der Ist-Risikoanalyse}
\end{figure}
\begin{figure}[H]
\begin{figure}
\centering
\includegraphics[width=9cm]{pictures/sollrisiko.pdf}
\caption{\label{fig:org525577a}
@ -571,7 +572,7 @@ Grafische Darstellung der Soll-Risikoanalyse}
\end{figure}
\begin{table}[H]
\begin{table}
\centering
\begin{tabular}{l|l}
\textbf{Bewertung} & \textbf{Beschreibung: Wahrscheinlichkeit (W)}\\
@ -585,7 +586,7 @@ Risikobewertung Wahrscheinlichkeit}
\end{table}
\begin{table}[H]
\begin{table}
\centering
\begin{tabular}{l|l}
\textbf{Bewertung} & \textbf{Beschreibung: Auswirkung (A)}\\
@ -599,7 +600,6 @@ Risikobewertung Auswirkung}
\end{table}
\newpage
\subsection{Anforderungskatalog}
\label{sec:org90be6e5}
@ -631,17 +631,6 @@ Abhängigkeiten und Beziehungen dar."'\footcite{usecasediagramm}
Das Anwendungsfalldiagramm für das \gls{borg} \gls{gui} ist in der Abbildung:
(\ref{fig:org49a405a}) zu sehen.
\newpage
\begin{landscape}
\begin{figure}[htbp]
\centering
\includegraphics[width=.75\linewidth]{pictures/use_case.pdf}
\caption{\label{fig:org49a405a}
Anwendungsfalldiagramm}
\end{figure}
\end{landscape}
\newpage
\subsubsection{Use Cases Detailbeschreibung}
\label{sec:org7eb46b4}
@ -660,7 +649,16 @@ um den Ablauf verständlicher zu machen.
Ein Aktivitätsdiagramm ist dabei ein hilfreiches UML Diagramm zum Erweitern von
Use Cases und zeigt einem gut die Zuständigkeiten der Aktoren auf.
\newpage
\begin{landscape}
\begin{figure}[htbp]
\centering
\includegraphics[width=.75\linewidth]{pictures/use_case.pdf}
\caption{\label{fig:org49a405a}
Anwendungsfalldiagramm}
\end{figure}
\end{landscape}
\
\paragraph{Use Case 1.0 Backup erstellen}
\label{sec:orgf1b47d8}
@ -786,6 +784,7 @@ Use Case 2.0 Backup löschen}
\caption{\label{fig:org288e5d3}
Aktivitätsdiagramm zum Löschen eines Backups}
\end{figure}
\newpage
\paragraph{Use Case 3.0 Backup wiederherstellen}
\label{sec:org8be05c9}
@ -852,6 +851,7 @@ Use Case 3.0 Backup wiederherstellen}
\caption{\label{fig:org613ab2a}
Aktivitätsdiagramm zum Wiederherstellen eines Backups}
\end{figure}
\newpage
\paragraph{Use Case 4.0 Einzelne Datei wiederherstellen}
\label{sec:org2c8981d}
@ -909,12 +909,6 @@ Use Case 4.0 Einzelne Datei wiederherstellen}
\end{longtable}
}
\begin{figure}[htbp]
\centering
\includegraphics[width=.9\linewidth]{pictures/activity_mount.pdf}
\caption{\label{fig:orgbcf997e}
Aktivitätsdiagramm für das spezifische Wiederherstellen einer Datei}
\end{figure}
\newpage
\paragraph{Use Case 4.1 Backup mounten}
\label{sec:org0eb4e4f}
@ -974,7 +968,14 @@ Use Case 4.1 Backup mounten}
\end{longtable}
}
\newpage
\begin{figure}[htbp]
\centering
\includegraphics[width=.9\linewidth]{pictures/activity_mount.pdf}
\caption{\label{fig:orgbcf997e}
Aktivitätsdiagramm für das spezifische Wiederherstellen einer Datei}
\end{figure}
\cleardoublepage
\paragraph{Use Case 5.0 Konfiguration ändern}
\label{sec:org43cc091}
@ -1041,6 +1042,7 @@ Use Case 5.0 Konfiguration ändern}
\caption{\label{fig:orgec8a55e}
Aktivitätsdiagramm zum Ändern von Einstellungen}
\end{figure}
\newpage
\paragraph{Use Case 6.0 automatische Backups aktivieren}
\label{sec:orgf4aa53a}
@ -1105,8 +1107,8 @@ Use Case 6.0 automatische Backups aktivieren}
\caption{\label{fig:orge73dce1}
Aktivitätsdiagramm zum Aktivieren von automatischen Backups}
\end{figure}
\newpage
\newpage
\subsection{Benötigte Funktionalität von Borg}
\label{sec:orgc8db247}
@ -1125,6 +1127,7 @@ jeweiligen Funktion des \gls{gui} aufgelistet:
Die detaillierte Implementation wird in der Sektion \hyperref[sec:orgb833f22]{Realisierung} beschrieben.
\cleardoublepage
\section{Konzept}
\label{sec:org3462c4c}
@ -1274,6 +1277,7 @@ Jedoch aufgrund des moderneren Unterbaus ist sie sicher schneller als C++.
C\# Bewertungstabelle}
\end{table}
\newpage
\paragraph{C++}
\label{sec:orga42458f}
@ -1421,6 +1425,7 @@ entwickeln kann, dies jedoch zulasten der Performance.
Python Bewertungstabelle}
\end{table}
\newpage
\subsubsection{Frontend}
\label{sec:org296c098}
@ -1488,6 +1493,7 @@ gross.
Qt Bewertungstabelle}
\end{table}
\newpage
\paragraph{Gtk}
\label{sec:orgbac0846}
@ -1507,12 +1513,6 @@ OS X können die Applikationen schnell etwas fremd wirken. Dies ist gut bei der
Applikation Meld \footcite{meld} zu sehen, wenn man eine Datei auswählen möchte,
Abbildung:(\ref{fig:org7ef2fd3}).
\begin{figure}[H]
\centering
\includegraphics[width=.7\linewidth]{pictures/meld.png}
\caption{\label{fig:org7ef2fd3}
Screenshot der Applikation Meld unter Windows 10}
\end{figure}
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
@ -1529,6 +1529,12 @@ wie bei Qt. Die Installation ist allerdings unter Windows eher das Gegenteil
von einfach.
Da die Kenntnisse gleich null sind, ist der Lernfaktor auf dem Maximum.
\begin{figure}[H]
\centering
\includegraphics[width=.9\linewidth]{pictures/meld.png}
\caption{\label{fig:org7ef2fd3}
Screenshot der Applikation Meld unter Windows 10}
\end{figure}
\begin{table}[htbp]
\centering
@ -1552,6 +1558,7 @@ Da die Kenntnisse gleich null sind, ist der Lernfaktor auf dem Maximum.
Gtk Bewertungstabelle}
\end{table}
\newpage
\paragraph{Electron}
\label{sec:org408db76}
@ -1639,7 +1646,7 @@ Electron & 275\\
Variantenbewertung Ergebnis}
\end{table}
\newpage
\subsection{Applikationsname}
\label{sec:orgef6c2a4}
@ -1648,7 +1655,7 @@ die Applikation ableiten. Oftmals werden die grafischen Applikationen gleich
benannt wie die Kommandozeilen Applikation aber mit dem Namen des \gls{gui}
Frameworks als Suffix. Somit wird das zu erstellende \gls{gui} für \gls{borg} im
weiteren Verlauf der Arbeit nun Borg-Qt genannt
\newpage
\subsection{Testing}
\label{sec:orge549d43}
@ -1680,7 +1687,7 @@ Der Pfad des \gls{borg} Repository für lokale Backups soll \texttt{/tmp/test-bo
sein, in den Testfällen "`Lokales Repository"' genannt und das Passwort \texttt{foo}.
Im Makefile des Repository wird dieses Setup definiert. Somit kann man als
Entwickler nur \texttt{make init} ausführen und hat eine funktionsfähige Testumgebung.
\newpage
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
folgt aus:
@ -1712,6 +1719,18 @@ Die Klassennamen, welche in fetter Schrift gehalten sind, wurden dabei vom
Projektleiter erstellt. Die Klassennamen, welche kursiv sind, sind Klassen, welche
entweder von Python oder Qt bereitgestellt werden.
\newpage
\begin{landscape}
\label{sec:orgc41601b}
\begin{figure}
\centering
\includegraphics[height=.8\textwidth]{pictures/class_diagramm.pdf}
\caption{\label{fig:org7e6152c}
Klassendiagramm der Borg-Qt Applikation}
\end{figure}
\end{landscape}
\newpage
\subsection{Usability-Studie}
\label{sec:org4a36f83}
@ -1755,7 +1774,7 @@ Usability-Studie Probanden}
\end{table}
\begin{table}[H]
\begin{table}
\centering
\begin{tabular}{|l|l|}
\hline
@ -1916,6 +1935,7 @@ umbenannt. Somit zeigen die Buttons dann auch direkt, dass sie Dateien
respektive Ordner ein-/ausschliessen. Ein paar der Probanden hatten es zuerst
über den "`Remove"' Button versucht.
\cleardoublepage
\section{Realisierung}
\label{sec:orgb833f22}
\subsection{Cross-plattform Kompatibilität}
@ -1994,7 +2014,7 @@ sich um ein freies Icon Theme unter der MIT Lizenz, welches die Icons als \gls{s
Dateien bereitstellt. Dadurch können die Icons frei skalieren und
funktionieren auch auf Geräten mit einer hohen Auflösung.
\begin{figure}[H]
\begin{figure}
\centering
\includegraphics[width=.9\linewidth]{pictures/borgqt_main_v1.png}
\caption{\label{fig:org0896aa2}
@ -2008,21 +2028,21 @@ der User die Ordner und Dateien auswählen, die er sichern will. Der dritte Tab
"`Exclude"', Abbildung:(\ref{fig:org2f0384f}), gibt dem User die
Möglichkeit einzelne Ordner oder Dateien von den Backups auszuschliessen.
\begin{figure}[H]
\begin{figure}
\centering
\includegraphics[width=.7\textwidth]{pictures/borgqt_settings_general_v1.png}
\caption{\label{fig:org90add12}
Screenshot der Borg-Qt "`General"' Einstellungen Version 1}
\end{figure}
\begin{figure}[H]
\begin{figure}
\centering
\includegraphics[width=.7\textwidth]{pictures/borgqt_settings_include_v1.png}
\caption{\label{fig:org197b06d}
Screenshot der Borg-Qt "`Include"' Einstellungen Version 1}
\end{figure}
\begin{figure}[H]
\begin{figure}
\centering
\includegraphics[width=.7\textwidth]{pictures/borgqt_settings_exclude_v1.png}
\caption{\label{fig:org2f0384f}
@ -2034,7 +2054,7 @@ User einen Fortschrittsbalken und einen "`Cancel"' Button zum Abbrechen der
Aktion an. Das Fenster ist generisch gehalten, damit es von verschiedenen Tasks
gleichermassen genutzt werden kann.
\begin{figure}[H]
\begin{figure}
\centering
\includegraphics[width=.6\textwidth]{pictures/borgqt_progress_v1.png}
\caption{\label{fig:org54f4a2c}
@ -2114,7 +2134,14 @@ vorgegeben Pfad \texttt{\textasciitilde{}/.config/borg\_qt/borg\_qt.conf} oder d
Binary, gibt die Applikation eine entsprechende Meldung,
Abbildung:(\ref{fig:orgb4e2c3c}), aus. Der Hauptpfad unter
\texttt{\textasciitilde{}/.config/borg\_qt/borg\_qt.conf} wird dabei gemäss dem Ziel Nr. 21 über die
Umgebungsvariable \texttt{HOME} zusammengesetzt
Umgebungsvariable \texttt{HOME} zusammengesetzt.
\begin{figure}[H]
\centering
\includegraphics[width=.3\textwidth]{pictures/borgqt_missing_config.png}
\caption{\label{fig:orgb4e2c3c}
Screenshot der Borg-Qt Fehlermeldung bei fehlender Konfigurationsdatei.}
\end{figure}
\begin{sexylisting}[label=org9b19969]{Methode zum Suchen der Konfigurationsdatei}
# borg_qt/config.py
@ -2131,14 +2158,6 @@ def _get_path(self):
else:
raise BorgException("Configuration file not found!")
\end{sexylisting}
\begin{figure}[H]
\centering
\includegraphics[width=.3\textwidth]{pictures/borgqt_missing_config.png}
\caption{\label{fig:orgb4e2c3c}
Screenshot der Borg-Qt Fehlermeldung bei fehlender Konfigurationsdatei.}
\end{figure}
\subsubsection{Frontend}
\label{sec:org783aac8}
@ -2175,6 +2194,7 @@ self.config['borgqt']['includes'] = json.dumps(includes,
sort_keys=True)
\end{sexylisting}
\newpage
\subsection{Borg Interface}
\label{sec:org06b15d6}
@ -2205,7 +2225,7 @@ Parameter \texttt{-{}-log-json} und \texttt{-{}-json} mitgeben. Der erste Parame
hauptsächlich das Format von Errormeldungen und der zweite formatiert dann die
finale Ausgabe. Die Ausgaben werden jeweils an Variablen weitergegeben
(\texttt{json\_output} und \texttt{json\_error}) welche im weiteren Code verarbeitet werden.
\newpage
Insbesondere \texttt{json\_error} ist für den weiteren Programmablauf von grosser
Wichtigkeit. Wenn Borg ein Problem feststellt, wird die Error Meldung von
\gls{borg} an \texttt{json\_error} weitergegeben. Mittels der Methode im
@ -2240,6 +2260,7 @@ geschrieben werden, welche dann von \texttt{BorgQtThread} die Funktionen erbt. D
Funktionsklassen müssen dann jeweils nur die Methode
\texttt{self.create\_command(self)} implementieren, welche das Property \texttt{self.command}
erstellt und die einfachen Funktionen von \gls{borg} sollten direkt funktionieren.
\newpage
\subsection{Backup}
\label{sec:org89c69ff}
@ -2251,26 +2272,28 @@ vonstattengehen.
\subsubsection{Backend}
\label{sec:orgf0c2da8}
Um Backups erstellen zu können, wurde die Klasse \texttt{BackupThread} erstellt, welche
von \texttt{BorgQtThread} erbt. Die Klasse \texttt{BackupThread} nimmt beim instantiieren 3
Argumente auf: \texttt{includes}, \texttt{excludes}, \texttt{prefix}. Wobei \texttt{excludes} und \texttt{prefix}
beide optional sind. Im Hauptcode werden diese Argumente aus der
Konfigurationsdatei ausgelesen und übergeben. Die Includes werden im Falle
eines Backups im Hintergrund aus der Konfigurationsdatei gelesen. Wenn es
Um Backups erstellen zu können, wurde die Klasse \texttt{BackupThread}
erstellt, welche von \texttt{BorgQtThread} erbt. Die Klasse
\texttt{BackupThread} nimmt beim instantiieren 3 Argumente auf:
\texttt{includes}, \texttt{excludes}, \texttt{prefix}. Wobei \texttt{excludes}
und \texttt{prefix} beide optional sind. Im Hauptcode werden diese Argumente
aus der Konfigurationsdatei ausgelesen und übergeben. Die Includes werden im
Falle eines Backups im Hintergrund aus der Konfigurationsdatei gelesen. Wenn es
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
Anführungszeichen um die Exclude Pfade. Diese wurden aus Versehen hinzugefügt,
da \gls{borg} normalerweise auf der Kommandozeile ausgeführt wird und die
Anführungszeichen dort notwendig sind, um allfällige Leer- oder Sonderzeichen
abzufangen. Es wurde davon ausgegangen, dass das \texttt{subprocess} Modul ähnlich
funktioniert wie die Kommandozeile. Da man an das Modul direkt einen String
übergibt, sind die zusätzlichen Anführungszeichen nicht notwendig und führen
sogar dazu, dass die Pfade gar nicht funktionieren. Somit werden die "`Excludes"'
mittels der Methode \texttt{\_process\_excludes} mit dem entsprechenden Parameter
gepaart und als gesamte Liste an das finale Kommando angehängt. Die "`Includes"'
funktionieren auf die gleiche Weise, benötigen jedoch keine zusätzlichen
Parameter. Zu sehen ist dies im Codesnippet:(\ref{org73b9775}).
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, da \gls{borg} normalerweise auf der Kommandozeile ausgeführt wird
und die Anführungszeichen dort notwendig sind, um allfällige Leer- oder
Sonderzeichen abzufangen. Es wurde davon ausgegangen, dass das
\texttt{subprocess} Modul ähnlich funktioniert wie die Kommandozeile. Da man an
das Modul direkt einen String übergibt, sind die zusätzlichen Anführungszeichen
nicht notwendig und führen sogar dazu, dass die Pfade gar nicht funktionieren.\newpage
Somit werden die "`Excludes"' mittels der Methode \texttt{\_process\_excludes}
mit dem entsprechenden Parameter gepaart und als gesamte Liste an das finale
Kommando angehängt. Die "`Includes"' funktionieren auf die gleiche Weise,
benötigen jedoch keine zusätzlichen Parameter. Zu sehen ist dies im
Codesnippet:(\ref{org73b9775}).
\begin{sexylisting}[label=org73b9775]{Erstellen des "`borg create"' Kommandos fürs erstellen von Backups.}
# borg_qt/borg_interface.py
@ -2295,13 +2318,15 @@ def create_command(self):
self.command.extend(self.excludes)
\end{sexylisting}
\newpage
\subsubsection{Frontend}
\label{sec:org148b087}
Damit die Backups im Frontend funktionieren, musste zum einen der "`Backup"' Knopf
mit der Methode \texttt{create\_backup} verknüpft werden. Des Weiteren wurde ein Dateibaum, in
Abbildung:(\ref{fig:org6491a3c}) grün umrahmt, eingefügt. Dieser gibt den Pfad
des angewählten Objektes and die \texttt{create\_backup} Methode weiter.
Damit die Backups im Frontend funktionieren, musste zum einen der "`Backup"'
Knopf mit der Methode \texttt{create\_backup} verknüpft werden. Des Weiteren
wurde ein Dateibaum, in Abbildung:(\ref{fig:org6491a3c}) grün umrahmt,
eingefügt. Dieser gibt den Pfad des angewählten Objektes and die
\texttt{create\_backup} Methode weiter.
\begin{figure}[htbp]
\centering
@ -2330,7 +2355,7 @@ sogar soweit kommen, dass das Zählen länger als das eigentliche Sichern dauert
Aus diesem Grund wurde der Fortschrittsbalken mit Prozentanzeige durch einen
sich wiederholenden Ladebalken ersetzt.
\begin{figure}[H]
\begin{figure}
\centering
\includegraphics[width=.4\paperwidth]{pictures/borgqt_progress_v2.png}
\caption{\label{fig:org52ca607}
@ -2346,6 +2371,14 @@ bei \texttt{BackupThread} \gls{borg} über einen \texttt{subprocess} aufgerufen,
respektive Statistik zurückzuerhalten Die \gls{json} Strings werden wieder auf
die jeweilige Information geparst und die Archive in eine Python Liste, die
Repository Statistik, in Zahlen umgewandelt.
\newpage
\begin{figure}[htbp]
\centering
\includegraphics[width=.9\linewidth]{pictures/borgqt_archive_list.png}
\caption{\label{fig:org24ed7cf}
Screenshot der aktualisierten Archivliste und Repository Statistik.}
\end{figure}
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
@ -2356,20 +2389,13 @@ Beim Durchführen der Usability-Studie wurde noch ein Bug entdeckt welcher die
Anwendung zum Abstürzen brachte. Der Bug, der entdeckt wurde, tritt immer dann
auf, wenn ein Archiv gemountet ist während man ein Archiv erstellen möchte.
Dies ist jedoch offenbar eine Funktion die von \gls{borg} nicht unterstützt wird
\footcite{borgmountissue}. \gls{borg} kann mehrere Archive gleichzeitig mounten.
\footcite{borgmountissue}. \gls{borg} kann mehrere Archive gleichzeitig mounten.\newpage
Der User müsste jedoch jedes der Archive zuerst wieder unmounten bevor er eine
neue Datensicherung erstellen kann. Das Problem wurde dadurch gelöst, dass dem
User ein Dialog angezeigt wird, über welchen er vor einer Datensicherung zuerst
die gemounteten Archive aushängen kann. Anschliessend startet die
Datensicherung, wie wenn kein Archiv gemountet gewesen wäre.
\begin{figure}[htbp]
\centering
\includegraphics[width=.9\linewidth]{pictures/borgqt_archive_list.png}
\caption{\label{fig:org24ed7cf}
Screenshot der aktualisierten Archivliste und Repository Statistik.}
\end{figure}
\subsection{Restore}
\label{sec:org5c152c9}
@ -2382,13 +2408,6 @@ Wird der "`Restore"' Knopf gedrückt ohne das ein Archiv angewählt wurde, ersch
folgende Fehlermeldung, Abbildung:(\ref{fig:org40b5f27}), um den Benutzer
darauf hinzuweisen, das er dies noch tun sollte.
\begin{figure}[H]
\centering
\includegraphics[width=.2\paperwidth]{pictures/borgqt_no_archive_selected.png}
\caption{\label{fig:org40b5f27}
Screenshot der Fehlermeldung eines fehlenden Archivs während einem Restore.}
\end{figure}
Für die Wiederherstellung einer Datensicherung, selektiert der User das
gewünschte Archiv. Als zweiten Schritt startet er den Prozess mit Klick auf
"`Restore"'. Im sich automatisch öffnenden Dialogfenster, ist der gewünschte
@ -2400,13 +2419,6 @@ wird abgebrochen. Nach der erfolgreichen Wiederherstellung öffnet die
Applikation den Zielort in einem Dateimanager, damit der User gleich mit den
Dateien weiterarbeiten kann.
\begin{figure}[H]
\centering
\includegraphics[width=.2\paperwidth]{pictures/borgqt_not_writeable.png}
\caption{\label{fig:org49c2dc3}
Screenshot der Fehlermeldung wenn der Zielort nicht beschreibbar ist.}
\end{figure}
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
Archiv Ordner.
@ -2414,6 +2426,21 @@ Archiv Ordner.
Wird das gleiche Archiv nochmal an den gleichen Zielort wiederhergestellt,
werden bereits vorhandene Dateien überschrieben.
\begin{figure}
\centering
\includegraphics[width=.2\paperwidth]{pictures/borgqt_no_archive_selected.png}
\caption{\label{fig:org40b5f27}
Screenshot der Fehlermeldung eines fehlenden Archivs während einem Restore.}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=.2\paperwidth]{pictures/borgqt_not_writeable.png}
\caption{\label{fig:org49c2dc3}
Screenshot der Fehlermeldung wenn der Zielort nicht beschreibbar ist.}
\end{figure}
\newpage
\subsection{Mount}
\label{sec:orgb1a6a89}
@ -2435,7 +2462,7 @@ geöffnet, damit der Benutzer direkt mit den Dateien weiterarbeiten kann. Wurde
erkannt, dass das Archiv bereits gemountet wurde, also der Pfad nicht
schreibbar ist, öffnet die Applikation direkt den Dateimanager, ohne zu
versuchen das Archiv noch einmal zu mounten.
\newpage
Zusätzlich wird der Pfad jedes gemounteten Archivs in einer Liste gespeichert.
Beim Beenden der Applikation iteriert die Applikation über jeden Pfad in der
Liste unmountet das Archiv und löscht den Ordner. Somit befindet sich das
@ -2511,18 +2538,20 @@ Dateiendung \texttt{.timer} . Der Inhalt ist auch wieder im INI Stil gehalten. S
versteht eine Vielzahl an Datumsformaten \footcite{systemddate}. In Borg-Qt
wurden zwei Varianten in den Einstellungen umgesetzt. Eine, welche "`Predefined
Schedule"' genannt wurde und eine mit dem Namen "`Custom Schedule"', zu sehen in,
Abbildung:(\ref{fig:orga59a60c}). Die Predefined Option wird dabei in die von Systemd
unterstützten Formate "`hourly, daily, weekly und monthly"' übersetzt.
Entsprechend der gewählten Wiederholung wird automatisch ein Archiv erstellt.
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
dieser Zeitplan dann so aussehen: \texttt{Wednesday *-*-* 12:00:00}. Für spätere
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
könnte "`Montag, Mittwoch, Freitag stündliche Backups."' (\texttt{Monday, Wednesday,
Friday *-*-* *:00:00}).
Abbildung:(\ref{fig:orga59a60c}).
\begin{figure}[H]
Die Predefined Option wird dabei in die von Systemd unterstützten Formate
"`hourly, daily, weekly und monthly"' übersetzt. Entsprechend der gewählten
Wiederholung wird automatisch ein Archiv erstellt. 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 dieser Zeitplan dann so aussehen:
\texttt{Wednesday *-*-* 12:00:00}. Für spätere 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 könnte "`Montag, Mittwoch,
Freitag stündliche Backups."' (\texttt{Monday, Wednesday, Friday *-*-*
*:00:00}).
\begin{figure}
\centering
\includegraphics[width=.9\linewidth]{pictures/borgqt_settings_schedule.png}
\caption{\label{fig:orga59a60c}
@ -2535,6 +2564,7 @@ geschrieben wird. Zum Schreiben und de-/aktivieren des Systemd Services,
respektive Timers wurde eine Klasse \texttt{SystemdFile} erstellt. Somit könnte
die Funktion auch einfach in einem anderen Projekt verwendet werden.
\newpage
Systemd benötigt zum Starten der Anwendung den absoluten Pfad in der Service
Datei. Da davon ausgegangen werden kann, das Borg-Qt im \texttt{PATH} des Systems
abgelegt wird, wurde das Unix Tool \texttt{which} verwendet, um den exakten Speicherort
@ -2576,7 +2606,7 @@ Persistent = true
[Install]
WantedBy = timers.target
\end{sexylisting}
\newpage
\subsection{GUI Anpassungen nach Usability-Studie}
\label{sec:org7b2251d}
@ -2595,20 +2625,6 @@ und zwei Labels hinzugefügt, nun wird klarer auf ihre Funktion hingewiesen,
Abbildungen:(\ref{fig:org7af081d}) und
(\ref{fig:org562e65a}).
\begin{figure}[H]
\centering
\includegraphics[width=.9\linewidth]{pictures/borgqt_settings_include_v2.png}
\caption{\label{fig:org7af081d}
Screenshot der Borg-Qt "`Include"' Einstellungen Version 2}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=.9\linewidth]{pictures/borgqt_settings_exclude_v2.png}
\caption{\label{fig:org562e65a}
Screenshot der Borg-Qt "`Exclude"' Einstellungen Version 2}
\end{figure}
Um die Funktionen der Applikation zur erklären wurde ein Hilfe Fenster,
Abbildung:(\ref{fig:orgf44d24c}), eingebaut. Dieses wird dem Benutzer beim Start der
Applikation angezeigt. Es gibt ihm einen kurzen Überblick welcher Button welche
@ -2617,17 +2633,35 @@ 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
unabhängig der Einstellungen wieder angezeigt werden.
\begin{figure}[H]
\centering
\includegraphics[width=.95\linewidth]{pictures/borgqt_help.png}
\caption{\label{fig:orgf44d24c}
Screenshot des Borg-Qt Hilfe Fenster}
\end{figure}
Mit Fertigstellung der Anpassungen wurde die Realisierung erfolgreich
abgeschlossen und die Entwicklung neuer Funktionen für den Zeitrahmen der
Diplomarbeit gestoppt.
\newpage
\begin{figure}[H]
\centering
\includegraphics[height=.40\textheight]{pictures/borgqt_settings_include_v2.png}
\caption{\label{fig:org7af081d}
Screenshot der Borg-Qt "`Include"' Einstellungen Version 2}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[height=.40\textheight]{pictures/borgqt_settings_exclude_v2.png}
\caption{\label{fig:org562e65a}
Screenshot der Borg-Qt "`Exclude"' Einstellungen Version 2}
\end{figure}
\begin{landscape}
\begin{figure}
\centering
\includegraphics[width=17cm]{pictures/borgqt_help.png}
\caption{\label{fig:orgf44d24c}
Screenshot des Borg-Qt Hilfe Fenster}
\end{figure}
\end{landscape}
\newpage
\subsection{Releases}
\label{sec:org3adb3b3}
@ -2659,7 +2693,7 @@ pyinstaller --hidden-import=PyQt5.sip \
--add-data=borg_qt/static/UI:static/UI \
-F borg_qt/borg_qt.py; \
\end{sexylisting}
\newpage
Auf Github wird jeweils ein Release erstellt und dazu die passenden Binaries
hochgeladen. Github packt dabei den Source Code beim Erstellen des Releases in
ein Zip Archiv. Somit steht der exakte Source Code zu jedem Binary direkt zu
@ -2677,6 +2711,7 @@ Funktionen noch nicht implementiert wurden. TC-18 ist zwar technisch bereits
möglich wurde im \gls{gui} jedoch noch nicht umgesetzt. Die Resultate wurden in
der Tabelle:(\ref{tab:org88fa4b9}) erfasst.
\cleardoublepage
\section{Ausblick/Fazit}
\label{sec:org859a9c9}
\subsection{Zielbewertung}
@ -2771,7 +2806,6 @@ Bemerkung wird noch kurz ausgeführt, in welcher Form das Ziel bewiesen wurde.
Bewertete Projektziele}
\\
\end{longtable}
\newpage
\subsubsection{Risikoanalyse der neuen Ist-Situation}
\label{sec:orgc98cda5}
@ -2784,14 +2818,14 @@ vergisst Backups zu machen) erheblich gesenkt werden. Somit hat die neue
Ist-Situation, Abbildung:(\ref{fig:org47eb5a8}), eine bessere Risikobewertung
als das geplante Soll-Risiko, Abbildung:(\ref{fig:sollgrau}).
\begin{figure}[H]
\begin{figure}
\centering
\includegraphics[width=7.2cm]{pictures/sollrisiko_grey.pdf}
\caption{\label{fig:sollgrau}
Risikoanalyse der Soll-Situation in grau}
\end{figure}
\begin{figure}[H]
\begin{figure}
\centering
\includegraphics[width=7.2cm]{pictures/ist_risiko_neu.pdf}
\caption{\label{fig:org47eb5a8}
@ -2910,6 +2944,7 @@ am Projekt mitzuarbeiten.
Die Applikation wird aber auf jeden Fall vom Projektleiter produktiv eingesetzt,
um seine sowie teilweise auch die Daten von Bekannten zu sichern.
\cleardoublepage
\section{Anhang}
\label{sec:orga97ab9e}
@ -3101,19 +3136,6 @@ Testfälle}
\end{longtable}}
\end{landscape}
\newpage
\begin{landscape}
\subsection{Klassendiagramm}
\label{sec:orgc41601b}
\begin{figure}[H]
\centering
\includegraphics[height=.7\textwidth]{pictures/class_diagramm.pdf}
\caption{\label{fig:org7e6152c}
Klassendiagramm der Borg-Qt Applikation}
\end{figure}
\end{landscape}
\newpage
\begin{landscape}
\subsection{Arbeitsjournal}
\label{sec:orgbda3d36}