add Konzept section
This commit is contained in:
parent
b6b72ed9ae
commit
d03173614d
|
@ -286,3 +286,35 @@
|
|||
note = {[Online; accessed 28. Dec. 2018]},
|
||||
url = {https://www.materialui.co/colors}
|
||||
}
|
||||
@misc{gnome,
|
||||
author = {{GNOME Foundation}},
|
||||
title = {{GNOME {\textendash} Desktop Umgebung.}},
|
||||
year = {2019},
|
||||
month = {Jan},
|
||||
note = {[Online; accessed 5. Jan. 2019]},
|
||||
url = {https://www.gnome.org}
|
||||
}
|
||||
@misc{ubuntu,
|
||||
author = {Canonical},
|
||||
title = {{The leading operating system for PCs, IoT devices, servers and the cloud {$\vert$} Ubuntu}},
|
||||
year = {2019},
|
||||
month = {Jan},
|
||||
note = {[Online; accessed 5. Jan. 2019]},
|
||||
url = {https://www.ubuntu.com}
|
||||
}
|
||||
@misc{virtualbox,
|
||||
author = {{Oracle}},
|
||||
title = {{Oracle VM VirtualBox}},
|
||||
year = {2019},
|
||||
month = {Jan},
|
||||
note = {[Online; accessed 5. Jan. 2019]},
|
||||
url = {https://www.virtualbox.org}
|
||||
}
|
||||
@misc{vagrant,
|
||||
title = {{Vagrant}},
|
||||
author = {Vagrant by HashiCorp},
|
||||
year = {2018},
|
||||
month = {Nov},
|
||||
note = {[Online; accessed 5. Jan. 2019]},
|
||||
url = {https://www.vagrantup.com}
|
||||
}
|
|
@ -49,12 +49,12 @@
|
|||
<day date="20181229" type="day-type" id="0"/>
|
||||
<day date="20190103" type="day-type" id="0"/>
|
||||
<day date="20181211" type="day-type" id="3"/>
|
||||
<day date="20190302" type="day-type" id="0"/>
|
||||
<day date="20181226" type="day-type" id="3"/>
|
||||
<day date="20190427" type="day-type" id="0"/>
|
||||
<day date="20190225" type="day-type" id="0"/>
|
||||
<day date="20190128" type="day-type" id="0"/>
|
||||
<day date="20181231" type="day-type" id="3"/>
|
||||
<day date="20190225" type="day-type" id="0"/>
|
||||
<day date="20190427" type="day-type" id="0"/>
|
||||
<day date="20181226" type="day-type" id="3"/>
|
||||
<day date="20190128" type="day-type" id="0"/>
|
||||
<day date="20190302" type="day-type" id="0"/>
|
||||
<day date="20190202" type="day-type" id="0"/>
|
||||
<day date="20190105" type="day-type" id="0"/>
|
||||
</days>
|
||||
|
@ -225,7 +225,7 @@
|
|||
<predecessor id="1" predecessor-id="37" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="40" name="UI" note="" work="108000" start="20190111T210000Z" end="20190120T150000Z" work-start="20190113T100000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="40" name="UI" note="" work="108000" start="20190111T210000Z" end="20190217T120000Z" work-start="20190113T100000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="41" name="UI ausarbeiten" note="" work="28800" start="20190111T210000Z" end="20190114T120000Z" work-start="20190113T100000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="39" type="FS"/>
|
||||
|
@ -236,86 +236,86 @@
|
|||
<predecessor id="1" predecessor-id="41" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="43" name="UI von Usern testen lassen" note="" work="18000" start="20190116T210000Z" end="20190119T110000Z" work-start="20190117T190000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="43" name="UI von Usern testen lassen" note="" work="18000" start="20190211T120000Z" end="20190212T200000Z" work-start="20190211T120000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="42" type="FS"/>
|
||||
<predecessor id="1" predecessor-id="58" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="44" name="UI Test Resultate auswerten" note="" work="14400" start="20190119T110000Z" end="20190119T160000Z" work-start="20190119T110000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="44" name="UI Test Resultate auswerten" note="" work="14400" start="20190212T200000Z" end="20190214T200000Z" work-start="20190212T200000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="43" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="45" name="UI anpassen" note="" work="18000" start="20190119T160000Z" end="20190120T150000Z" work-start="20190119T160000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="45" name="UI anpassen" note="" work="18000" start="20190214T200000Z" end="20190217T120000Z" work-start="20190214T200000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="44" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
</task>
|
||||
<task id="46" name="Coding" note="" work="432000" start="20190120T150000Z" end="20190224T170000Z" work-start="20190120T150000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="47" name="Backend Read Config Funktion" note="" work="28800" start="20190120T150000Z" end="20190121T170000Z" work-start="20190120T150000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="46" name="Coding" note="" work="432000" start="20190116T210000Z" end="20190224T170000Z" work-start="20190117T190000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="47" name="Backend Read Config Funktion" note="" work="28800" start="20190116T210000Z" end="20190119T150000Z" work-start="20190117T190000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="45" type="FS"/>
|
||||
<predecessor id="1" predecessor-id="42" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="48" name="Frontend Read Config Funktion" note="" work="28800" start="20190121T170000Z" end="20190125T210000Z" work-start="20190122T190000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="48" name="Frontend Read Config Funktion" note="" work="28800" start="20190119T150000Z" end="20190120T170000Z" work-start="20190119T150000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="47" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="49" name="Backend Write Config Funktion" note="" work="28800" start="20190125T210000Z" end="20190127T120000Z" work-start="20190126T100000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="49" name="Backend Write Config Funktion" note="" work="28800" start="20190120T170000Z" end="20190122T210000Z" work-start="20190121T100000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="48" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="50" name="Frontend Write Config Funktion" note="" work="28800" start="20190127T120000Z" end="20190128T150000Z" work-start="20190127T120000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="50" name="Frontend Write Config Funktion" note="" work="28800" start="20190122T210000Z" end="20190126T120000Z" work-start="20190123T190000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="49" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="51" name="Backend Backup Funktion" note="" work="28800" start="20190128T150000Z" end="20190131T210000Z" work-start="20190128T150000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="51" name="Backend Backup Funktion" note="" work="28800" start="20190126T120000Z" end="20190127T150000Z" work-start="20190126T120000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="50" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="52" name="Frontend Backup Funktion" note="" work="28800" start="20190131T210000Z" end="20190202T170000Z" work-start="20190201T190000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="52" name="Frontend Backup Funktion" note="" work="28800" start="20190127T150000Z" end="20190128T170000Z" work-start="20190127T150000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="51" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="53" name="Backend Restore Funktion" note="" work="28800" start="20190202T170000Z" end="20190204T120000Z" work-start="20190203T100000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="53" name="Backend Restore Funktion" note="" work="28800" start="20190128T170000Z" end="20190201T210000Z" work-start="20190129T190000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="52" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="54" name="Frontend Restore Funktion" note="" work="28800" start="20190204T120000Z" end="20190206T210000Z" work-start="20190204T120000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="54" name="Frontend Restore Funktion" note="" work="28800" start="20190201T210000Z" end="20190203T120000Z" work-start="20190202T100000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="53" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="55" name="Backend Mounting Funktion" note="" work="28800" start="20190206T210000Z" end="20190209T150000Z" work-start="20190207T190000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="55" name="Backend Mounting Funktion" note="" work="28800" start="20190203T120000Z" end="20190204T150000Z" work-start="20190203T120000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="54" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="56" name="Frontend Mounting Funktion" note="" work="28800" start="20190209T150000Z" end="20190210T170000Z" work-start="20190209T150000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="56" name="Frontend Mounting Funktion" note="" work="28800" start="20190204T150000Z" end="20190207T210000Z" work-start="20190204T150000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="55" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="57" name="Backend Delete Funktion" note="" work="28800" start="20190210T170000Z" end="20190212T210000Z" work-start="20190211T100000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="57" name="Backend Delete Funktion" note="" work="28800" start="20190207T210000Z" end="20190209T170000Z" work-start="20190208T190000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="56" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="58" name="Frontend Delete Funktion" note="" work="28800" start="20190212T210000Z" end="20190217T120000Z" work-start="20190213T190000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<task id="58" name="Frontend Delete Funktion" note="" work="28800" start="20190209T170000Z" end="20190211T120000Z" work-start="20190210T100000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="57" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
<task id="59" name="Coding Filler" note="" work="86400" start="20190217T120000Z" end="20190224T170000Z" work-start="20190217T120000Z" percent-complete="0" priority="0" type="normal" scheduling="fixed-work">
|
||||
<predecessors>
|
||||
<predecessor id="1" predecessor-id="58" type="FS"/>
|
||||
<predecessor id="1" predecessor-id="45" type="FS"/>
|
||||
</predecessors>
|
||||
</task>
|
||||
</task>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,31 +1,31 @@
|
|||
|
||||
\section{Über dieses Dokument}
|
||||
\label{sec:org9f1f089}
|
||||
\label{sec:org76dd081}
|
||||
|
||||
Im nachfolgenden Abschnitt finden Sie allgemeine Informationen zu
|
||||
diesem Dokument.
|
||||
|
||||
\subsection{Beschreibung}
|
||||
\label{sec:org5621d53}
|
||||
\label{sec:orge6819c7}
|
||||
|
||||
Diese Arbeit hat zum Ziel die Planung und Erstellung einer grafischen
|
||||
Oberfläche zum einfachen Bedienen der Software \gls{borg} \footcite{borgbackup}
|
||||
sowie deren Konfiguration, durchzuführen.
|
||||
|
||||
\subsection{Zweck und Inhalt}
|
||||
\label{sec:org7c2e02f}
|
||||
\label{sec:org6d2670d}
|
||||
|
||||
Zweck dieses Dokumentes ist die vollständige und nachvollziehbare Dokumentation
|
||||
zur Diplomarbeit von Andreas Zweili.
|
||||
|
||||
\subsection{Aufbau}
|
||||
\label{sec:orga12727e}
|
||||
\label{sec:org8681032}
|
||||
|
||||
Alle Inhalte sind chronologisch sortiert, vom ältesten zum jüngsten
|
||||
Ereignis, und nach Kapiteln getrennt.
|
||||
|
||||
\subsection{Lizenz}
|
||||
\label{sec:orgad49599}
|
||||
\label{sec:orgf3e005f}
|
||||
|
||||
Dieses Dokument wurde von Andreas Zweili im Rahmen der Diplomarbeit an der IBZ
|
||||
Schule erstellt und steht unter der \gls{cc} BY-SA 4.0 \footcite{cc} Lizenz.
|
||||
|
@ -33,9 +33,9 @@ Dadurch darf die Arbeit unter beibehalten der Lizenz kopiert und
|
|||
weiterverarbeitet werden. Zusätzlich muss der Urheber gennant werden.
|
||||
|
||||
\section{Initialisierung}
|
||||
\label{sec:org069b9ea}
|
||||
\label{sec:org1ef1d10}
|
||||
\subsection{Vision}
|
||||
\label{sec:org908b653}
|
||||
\label{sec:org348c2b8}
|
||||
|
||||
Die Software soll \gls{borg} für den durschnittlichen Computer User zugänglich
|
||||
machen. Die Backups sollen dabei schnell und unkompliziert erstellt werden
|
||||
|
@ -46,7 +46,7 @@ Die besten Backups sind solche bei denen man gar nicht mehr weiss das man sie
|
|||
hat bis man sie braucht.
|
||||
|
||||
\subsection{Ausgangslage}
|
||||
\label{sec:org39c6a90}
|
||||
\label{sec:orgd5d5fc5}
|
||||
|
||||
\gls{borg} ist deshalb interessant weil es wärend einem Backup relativ
|
||||
wenig Ressource im Vergleich zu anderen Systemen benötigt und schon relativ
|
||||
|
@ -81,7 +81,7 @@ Das Projekt muss dabei vom Studenten in Eigenarbeit und einer Zeit von 250
|
|||
Stunden bis zum 18. März 2019 erarbeitet werden.
|
||||
|
||||
\subsection{Projektziele}
|
||||
\label{sec:org14c9647}
|
||||
\label{sec:orgf49e0c7}
|
||||
|
||||
Das Hauptziel der Arbeit soll es sein eine einfach nutzbare grafische
|
||||
Oberfläche für \gls{borg} zu entwickeln. Da \gls{borg} selber freie Software ist und
|
||||
|
@ -106,7 +106,7 @@ damit es in der Zukunft möglich ist das Projekt auf andere Plattformen
|
|||
auszuweiten.
|
||||
|
||||
\subsubsection{Ziele inklusive Gewichtung}
|
||||
\label{sec:org52a0180}
|
||||
\label{sec:org8baf2f8}
|
||||
|
||||
Im Projektantrag wurden vorgängig vollgende Ziele definiert und entsprechend
|
||||
gewichtet. Die Gewichtung wurde dabei so vorgenommen, dass Ziele mit einer
|
||||
|
@ -196,18 +196,18 @@ integriert werden und ist nicht unwichtig.
|
|||
\hline
|
||||
32. & Die Applikation prüft, ob sie sich im richtigen Netzwerk befindet bevor sie eine Verbindung zum Server aufbaut. & & 2\\
|
||||
\hline
|
||||
\caption{\label{tab:org9275be4}
|
||||
\caption{\label{tab:org56dc371}
|
||||
Projektziele}
|
||||
\\
|
||||
\end{longtable}
|
||||
\newpage
|
||||
|
||||
\subsection{Projektabgrenzung}
|
||||
\label{sec:org336cfa6}
|
||||
\label{sec:orgfdd7b17}
|
||||
|
||||
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
|
||||
ist. Wie in, Abbildung:(\ref{fig:orgb541c49}), zu sehen ist werden die Aktion effektiv
|
||||
ist. Wie in, Abbildung:(\ref{fig:org42cd259}), zu sehen ist werden die Aktion effektiv
|
||||
immer vom Borg Binary ausgeführt und nicht von der grafischen Oberfläche. Eine
|
||||
Erweiterung von \gls{borg} ist nicht vorgesehen. Backup und Verschlüsselung sind
|
||||
heikle Themen und sollten umbedingt nur von Experten angegangen werden. Das
|
||||
|
@ -223,12 +223,12 @@ entdeckt werden, wird dieser dem Projekt melden jedoch nicht selber beheben.
|
|||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/kontextdiagramm.pdf}
|
||||
\caption{\label{fig:orgb541c49}
|
||||
\caption{\label{fig:org42cd259}
|
||||
Kontextdiagramm des Borg GUI}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Projektmethode}
|
||||
\label{sec:org29ccf63}
|
||||
\label{sec:org8f58dda}
|
||||
|
||||
Für das Projekt wurde die Wasserfall-methode gewählt. Da nur eine
|
||||
einzige Person am Projekt arbeitet kann nur ein Task nach dem anderen
|
||||
|
@ -237,13 +237,13 @@ Somit macht das iterative Vorgehen der Wassfall-methode für dieses Projekt am
|
|||
meisten Sinn.
|
||||
|
||||
\subsection{Konfigurationsmanagement}
|
||||
\label{sec:org83f888b}
|
||||
\label{sec:org2837148}
|
||||
|
||||
In der nachfolgenden Sektion wird definiert wie die Software und Dokumentation
|
||||
versioniert wird und welche allgemeinen Werkzeuge eingesetzt werden.
|
||||
|
||||
\subsubsection{Versionskontrolle}
|
||||
\label{sec:orgc10149d}
|
||||
\label{sec:org5bb2dde}
|
||||
|
||||
Die komplette Dokumentation, der Quellcode der Applikation sowie jeglich
|
||||
zusäzliche Dokumente wie etwa die Zeitplanung werden mittels der Software Git
|
||||
|
@ -286,7 +286,7 @@ und schnelle Software erwiesen.
|
|||
\end{itemize}
|
||||
|
||||
\subsubsection{Editor}
|
||||
\label{sec:org9f4c43a}
|
||||
\label{sec:orgb1642bc}
|
||||
|
||||
Sowohl bei der Dokumentation wie auch bei der Programmierung wurde
|
||||
hauptsächlich der Editor GNU Emacs \footcite{emacs} verwendet. GNU Emacs ist mit
|
||||
|
@ -297,7 +297,7 @@ flexibler Texteditior ist. Von normaler Textmanipulation über Taskmanagement
|
|||
und Emails schreiben ist alles möglich.
|
||||
|
||||
\subsubsection{Dokumentation}
|
||||
\label{sec:orgf78de20}
|
||||
\label{sec:orgab77884}
|
||||
|
||||
Diese Dokumentation wurde in Org-mode \footcite{orgmode}, einer Erweiterung für
|
||||
den Text Editor Emacs, geschrieben. Die Syntax erinnert an Markdown und
|
||||
|
@ -329,7 +329,7 @@ Bei den Diagrammen wurden aussschliesslich Farben aus der von Google
|
|||
entwickelten Design Sprache "`Material"'\footcite{material} eingesetzt.
|
||||
|
||||
\subsection{Zeitplanung}
|
||||
\label{sec:orgd7e5234}
|
||||
\label{sec:org4a56788}
|
||||
|
||||
Die detaillierte Zeitplanung ist dem Ganttchart in der Datei
|
||||
\href{Zeitplanung\_Andreas\_Zweili.html}{Zeitplanung\_Andreas\_Zweili.html} zu entnehmen. Bei der Zeitplanung wurde darauf
|
||||
|
@ -347,7 +347,7 @@ Dadurch steht wärend des Projektes etwas mehr Zeit zur verfügung als sonst mit
|
|||
einer 100\% Arbeitsstelle möglich wäre.
|
||||
|
||||
\subsection{Controlling}
|
||||
\label{sec:orgc9e0677}
|
||||
\label{sec:org38207a0}
|
||||
|
||||
Das Controlling wird verwendet um zu kontrollieren das die eigentliche Planung
|
||||
mit dem effektiv geleisteten Aufwand respektive den effektiv verwendeten
|
||||
|
@ -357,7 +357,7 @@ werden.
|
|||
\newpage
|
||||
\begin{landscape}
|
||||
\subsubsection{Zeit}
|
||||
\label{sec:org49761cd}
|
||||
\label{sec:orgc2ea5ea}
|
||||
|
||||
\begin{longtable}{|p{3cm}|p{5cm}|p{3cm}|p{7cm}|}
|
||||
\hline
|
||||
|
@ -378,14 +378,14 @@ werden.
|
|||
\hline
|
||||
& \textbf{Gesamter Aufwand} & & \\
|
||||
\hline
|
||||
\caption{\label{tab:orga70bdbf}
|
||||
\caption{\label{tab:org14484f0}
|
||||
Zeitcontrolling}
|
||||
\\
|
||||
\end{longtable}
|
||||
|
||||
\newpage
|
||||
\subsubsection{Ressourcen}
|
||||
\label{sec:orge70a0d3}
|
||||
\label{sec:org1f87c54}
|
||||
|
||||
Folgende Ressourcen werden wärend der Arbeit benötigt:
|
||||
\begin{longtable}{|p{5cm}|p{3cm}|p{3cm}|p{7cm}|}
|
||||
|
@ -411,14 +411,14 @@ Korrekturleser & 3 & & \\
|
|||
iPad & 1 & 1 & \\
|
||||
Notebook & 1 & 1 & \\
|
||||
\hline
|
||||
\caption{\label{tab:orge203351}
|
||||
\caption{\label{tab:org452e734}
|
||||
Ressourcen}
|
||||
\\
|
||||
\end{longtable}
|
||||
\end{landscape}
|
||||
|
||||
\subsubsection{Kosten}
|
||||
\label{sec:org4c0ace3}
|
||||
\label{sec:orgede2bc3}
|
||||
|
||||
Werden die internen Lohnkosten des Projektleiters auf ca. 60 CHF pro Stunde
|
||||
geschätzt ergeben sich aus der Zeitplanung somit theoretische Kosten von 19'200
|
||||
|
@ -444,25 +444,25 @@ Meeting \#3 & 5 & 300\\
|
|||
\textbf{Total} & 320 & 19200\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:org6829dd7}
|
||||
\caption{\label{tab:org77a14fe}
|
||||
Kostenrechnung}
|
||||
|
||||
\end{table}
|
||||
|
||||
\subsection{Projektrisiken}
|
||||
\label{sec:org51109de}
|
||||
\label{sec:org60b9ca4}
|
||||
|
||||
Das Risikomanagement dient dazu Risiken im Projekt zu erkennen und Massnahmen
|
||||
zur Vermeidung der Risiken zu definieren. Dadurch steht man ihnen nicht
|
||||
unvorbereitet gegenüber sollten sie eintreffen.
|
||||
|
||||
\subsubsection{Risikobeschreibung}
|
||||
\label{sec:org3b92534}
|
||||
\label{sec:orgb3ef96b}
|
||||
|
||||
In der Tabelle: (\ref{tab:org606c2c8}), sind die Risiken des Projektes
|
||||
In der Tabelle: (\ref{tab:org907910f}), sind die Risiken des Projektes
|
||||
gemeinsam mit ihren Gegenmassnahmen aufgelistet. Jedes Risiko wurde
|
||||
entsprechend der Tabelle: (\ref{tab:org826ea60}) nach der Wahrscheinlichkeit
|
||||
des Eintreffens bewertet und entsprechend der Tabelle: (\ref{tab:orgee0e694}) nach
|
||||
entsprechend der Tabelle: (\ref{tab:org3741bc7}) nach der Wahrscheinlichkeit
|
||||
des Eintreffens bewertet und entsprechend der Tabelle: (\ref{tab:org9895941}) nach
|
||||
seiner Auswirkung bewertet.
|
||||
|
||||
\begin{longtable}{|p{0.45\textwidth}|p{0.45\textwidth}|}
|
||||
|
@ -495,15 +495,15 @@ User haben keine Zeit für Utility Tests. & Vorgängig einen Termin abmachen.\\
|
|||
\hline
|
||||
\gls{borg} ändert fundamental seine \gls{api}. & Gegen eine fixe Version von \gls{borg} entwickeln.\\
|
||||
\hline
|
||||
\caption{\label{tab:orgdbf2ea4}
|
||||
\caption{\label{tab:org6ae90d2}
|
||||
Projektrisiken}
|
||||
\\
|
||||
\end{longtable}
|
||||
|
||||
\section{Analyse}
|
||||
\label{sec:org69ba381}
|
||||
\label{sec:org598ce2d}
|
||||
\subsection{Umweltanalyse}
|
||||
\label{sec:org0b1a0ff}
|
||||
\label{sec:org0c538d3}
|
||||
|
||||
Die Projektumwelt-Analyse ist eine Methode, die Beziehungen,
|
||||
Erwartungshaltungen und Einflüsse auf das Projekt durch interne und
|
||||
|
@ -511,10 +511,10 @@ externe soziale Umwelten zu betrachten und zu bewerten. Auf Grundlage
|
|||
der Analyseergebnisse werden erforderliche Massnahmen zur Gestaltung
|
||||
der Umweltbeziehungen abgeleitet. Die Gestaltung der
|
||||
Projektumweltbeziehungen ist eine Projektmanagementaufgabe. In der
|
||||
Tabelle:(\ref{tab:orgd4b119b}) wurden die Anforderungen und Wünsche
|
||||
Tabelle:(\ref{tab:org2aa11ab}) wurden die Anforderungen und Wünsche
|
||||
mit Einschätzung der Wahrscheinlichkeit und der Einflussnahme aufgenommen.
|
||||
Zusätzlich ist die Beziehung der Stakeholder zum Projekt noch in der
|
||||
Abbildung:(\ref{fig:org5fa0b49}) grafisch dargestellt.
|
||||
Abbildung:(\ref{fig:orgbb87a04}) grafisch dargestellt.
|
||||
|
||||
Da das Projekt so ausgelegt ist das der Projektleiter es in Eigenarbeit
|
||||
verwirklichen kann ist der Einfluss der Stakeholder wärend der Umsetzung sehr
|
||||
|
@ -528,7 +528,7 @@ Verfügung gestellt.
|
|||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\textwidth]{pictures/stakeholder_diagramm.pdf}
|
||||
\caption{\label{fig:org5fa0b49}
|
||||
\caption{\label{fig:orgbb87a04}
|
||||
Stakeholder Diagramm}
|
||||
\end{figure}
|
||||
|
||||
|
@ -555,14 +555,14 @@ Stakeholder Diagramm}
|
|||
& & & - Anerkennung im fachlichen Umfeld & hoch\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:orgd4b119b}
|
||||
\caption{\label{tab:org2aa11ab}
|
||||
Umwelt-Analyse}
|
||||
|
||||
\end{table}
|
||||
\end{landscape}
|
||||
|
||||
\subsection{Risiko-Analyse}
|
||||
\label{sec:org6fcac9b}
|
||||
\label{sec:org4ddd178}
|
||||
|
||||
Bei der Risikoanalyse wird von einem durchschnittlichen Benutzer ausgegangen
|
||||
der zur Zeit noch keine Backups macht und beginnen möchte \gls{borg} zu nutzen um
|
||||
|
@ -570,14 +570,14 @@ auf einer externen Harddisk seine Backups zu speichern.
|
|||
|
||||
Es wird dabei eine Ist/Soll Analyse gemacht um die Lösung gegenüber der
|
||||
bestehenden Möglichkeiten zu vergleichen. Jedes Risiko wurde entsprechend der
|
||||
Tabelle: (\ref{tab:org826ea60}) nach der Wahrscheinlichkeit des Eintreffens
|
||||
bewertet und entsprechend der Tabelle: (\ref{tab:orgee0e694}) nach seiner Auswirkung
|
||||
Tabelle: (\ref{tab:org3741bc7}) nach der Wahrscheinlichkeit des Eintreffens
|
||||
bewertet und entsprechend der Tabelle: (\ref{tab:org9895941}) nach seiner Auswirkung
|
||||
im Bezug auf die Nützlichkeit der gemachten Backups.
|
||||
|
||||
In der Tabelle: (\ref{tab:org606c2c8}) sind dabei die Risiken für das
|
||||
Szenario aufgelistet und nummeriert. In der, Abbildung:(\ref{fig:org85added}), ist die
|
||||
In der Tabelle: (\ref{tab:org907910f}) sind dabei die Risiken für das
|
||||
Szenario aufgelistet und nummeriert. In der, Abbildung:(\ref{fig:org64c4845}), ist die
|
||||
Bewertung des Ist-Risikos grafisch dargestellt und in der,
|
||||
Abbildung:(\ref{fig:org5e0b50f}), ist das Soll-Risiko welches mit dieser Arbeit
|
||||
Abbildung:(\ref{fig:org2d72343}), 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.
|
||||
|
@ -594,7 +594,7 @@ Arbeit reduzieren kann.
|
|||
2 = mittel & Mässig wahrscheinlich, 20-50\%\\
|
||||
3 = hoch & Hohe Wahrscheinlichkeit > 50\%\\
|
||||
\end{tabular}
|
||||
\caption{\label{tab:org826ea60}
|
||||
\caption{\label{tab:org3741bc7}
|
||||
Risikobewertung Wahrscheinlichkeit}
|
||||
|
||||
\end{table}
|
||||
|
@ -608,7 +608,7 @@ Risikobewertung Wahrscheinlichkeit}
|
|||
2 = mittel & Mittlere Auswirkung auf die Nützlichkeit\\
|
||||
3 = hoch & Hohe Auswirkung auf die Nützlichkeit\\
|
||||
\end{tabular}
|
||||
\caption{\label{tab:orgee0e694}
|
||||
\caption{\label{tab:org9895941}
|
||||
Risikobewertung Auswirkung}
|
||||
|
||||
\end{table}
|
||||
|
@ -630,7 +630,7 @@ Risikobewertung Auswirkung}
|
|||
5. & Der Anwender vergisst die Backups zu machen.\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:org606c2c8}
|
||||
\caption{\label{tab:org907910f}
|
||||
Risikobeschreibung}
|
||||
|
||||
\end{table}
|
||||
|
@ -638,43 +638,43 @@ Risikobeschreibung}
|
|||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=9cm]{pictures/istrisiko.pdf}
|
||||
\caption{\label{fig:org85added}
|
||||
\caption{\label{fig:org64c4845}
|
||||
Grafische Darstellung der Ist-Risikoanalyse}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=9cm]{pictures/sollrisiko.pdf}
|
||||
\caption{\label{fig:org5e0b50f}
|
||||
\caption{\label{fig:org2d72343}
|
||||
Grafische Darstellung der Soll-Risikoanalyse}
|
||||
\end{figure}
|
||||
|
||||
\newpage
|
||||
\subsection{SWOT-Analyse}
|
||||
\label{sec:orgd45af75}
|
||||
\label{sec:orgc693367}
|
||||
|
||||
Die SWOT-Analyse ist eine Methode, die Stärken, Schwächen, Chancen und
|
||||
Gefahren zu erkennen, indem eine 4-Felder-Matrix ausgefüllt wird.
|
||||
|
||||
Wichtig vor dem Ausfüllen der SWOT-Analyse ist es, ein klares Ziel zu
|
||||
haben. Die ausgefüllte SWOT-Analyse für dieses Projekt ist in der
|
||||
Abbildung:(\ref{fig:org5fafa63}) zu sehen.
|
||||
Abbildung:(\ref{fig:orge38b33e}) zu sehen.
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/swot_analyse.pdf}
|
||||
\caption{\label{fig:org5fafa63}
|
||||
\caption{\label{fig:orge38b33e}
|
||||
SWOT Analyse des Projektes}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Anforderungskatalog}
|
||||
\label{sec:org82903aa}
|
||||
\label{sec:orga95a76c}
|
||||
|
||||
Der Anforderungskatalog entspricht 1:1 den Zielen welche in der Tabelle
|
||||
\ref{tab:org9275be4} definiert wurden.
|
||||
\ref{tab:org56dc371} definiert wurden.
|
||||
|
||||
\subsection{Use Cases}
|
||||
\label{sec:orgc44612b}
|
||||
\label{sec:org866931c}
|
||||
|
||||
Ein Use Case sammelt alle möglichen Szenarien, die eintreten können,
|
||||
wenn ein Akteur versucht, mit Hilfe des betrachteten Systems ein
|
||||
|
@ -685,7 +685,7 @@ Login). Dabei wird die technische Lösung nicht konkret beschrieben.
|
|||
Die Detailstufe kann dabei sehr unterschiedlich sein.\footcite{usecase}
|
||||
|
||||
\subsubsection{Anwendungsfalldiagramm}
|
||||
\label{sec:orge2f5022}
|
||||
\label{sec:org6a14c60}
|
||||
|
||||
"`Ein Anwendungsfalldiagramm \ldots{} ist eine der 14 Diagrammarten der
|
||||
Unified Modelling Language (UML), einer Sprache für die Modellierung
|
||||
|
@ -694,39 +694,39 @@ Es stellt Anwendungsfälle und Akteure mit ihren jeweiligen
|
|||
Abhängigkeiten und Beziehungen dar."'\footcite{usecasediagramm}
|
||||
|
||||
Das Anwendungsfalldiagramm für das \gls{borg} \gls{gui} ist in der Abbildung:
|
||||
(\ref{fig:orgc9a56f0}) zu sehen.
|
||||
(\ref{fig:org13817c2}) zu sehen.
|
||||
|
||||
\newpage
|
||||
\begin{landscape}
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/use_case.pdf}
|
||||
\caption{\label{fig:orgc9a56f0}
|
||||
\caption{\label{fig:org13817c2}
|
||||
Anwendungsfalldiagramm}
|
||||
\end{figure}
|
||||
\end{landscape}
|
||||
\newpage
|
||||
|
||||
\subsubsection{Use Cases Detailbeschreibung}
|
||||
\label{sec:org179a393}
|
||||
\label{sec:org8a57355}
|
||||
|
||||
Use Cases werden in der Regel mit Hilfe einer sogenannten Use Case Schablone im
|
||||
Detail beschrieben, damit klar ist, wie der Ablauf jeweils genau aussieht. Die
|
||||
in diesem Projekt verwendete Schablone wurde von Alistair Cockburn definiert.
|
||||
|
||||
Die nachfolgend aufgeführten Use Cases, Tabellen:(\ref{tab:org9200604}, \ref{tab:org4b98c25},
|
||||
\ref{tab:org7b118df}, \ref{tab:orged9864f}, \ref{tab:orga3274db}, \ref{tab:org4ea078d}, \ref{tab:org3890696})
|
||||
wurden dem Anwendungsfalldiagramm, Abbildung:(\ref{fig:orgc9a56f0}), entnommen und
|
||||
Die nachfolgend aufgeführten Use Cases, Tabellen:(\ref{tab:org09f7d94}, \ref{tab:org4f1e89f},
|
||||
\ref{tab:org84075b7}, \ref{tab:org7e30143}, \ref{tab:org32a8377}, \ref{tab:org2b12346}, \ref{tab:org326ff05})
|
||||
wurden dem Anwendungsfalldiagramm, Abbildung:(\ref{fig:org13817c2}), entnommen und
|
||||
zusätzlich noch um jeweils ein Aktivitätsdiagramm , Abbildungen:
|
||||
(\ref{fig:org8d383e4}, \ref{fig:org96d7936}, \ref{fig:orgb1cc6ad},
|
||||
\ref{fig:org992f6bb}, \ref{fig:org35467e2}, \ref{fig:org839581b}), erweitert
|
||||
(\ref{fig:orgae0d01b}, \ref{fig:orgc29b501}, \ref{fig:orge7a6b7a},
|
||||
\ref{fig:org2e38263}, \ref{fig:orgbece471}, \ref{fig:org19c9d3a}), erweitert
|
||||
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.
|
||||
|
||||
\paragraph{Use Case 1.0 Backup erstellen}
|
||||
\label{sec:org9166a09}
|
||||
\label{sec:org271f4f4}
|
||||
|
||||
{\footnotesize
|
||||
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|}
|
||||
|
@ -775,7 +775,7 @@ Use Cases und zeigt einem gut die Zuständigkeiten der Aktoren auf.
|
|||
\hline
|
||||
\textbf{Date} & 30.12.2018\\
|
||||
\hline
|
||||
\caption{\label{tab:org9200604}
|
||||
\caption{\label{tab:org09f7d94}
|
||||
Use Case 1.0 Backup erstellen}
|
||||
\\
|
||||
\end{longtable}
|
||||
|
@ -783,12 +783,12 @@ Use Case 1.0 Backup erstellen}
|
|||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/activity_backup.pdf}
|
||||
\caption{\label{fig:org8d383e4}
|
||||
\caption{\label{fig:orgae0d01b}
|
||||
Aktivitätsdiagramm zum Erstellen eines Backups}
|
||||
\end{figure}
|
||||
\newpage
|
||||
\paragraph{Use Case 2.0 Backup löschen}
|
||||
\label{sec:orga845097}
|
||||
\label{sec:org8b6ee38}
|
||||
|
||||
{\footnotesize
|
||||
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|}
|
||||
|
@ -839,7 +839,7 @@ Aktivitätsdiagramm zum Erstellen eines Backups}
|
|||
\hline
|
||||
\textbf{Date} & 30.12.2018\\
|
||||
\hline
|
||||
\caption{\label{tab:org4b98c25}
|
||||
\caption{\label{tab:org4f1e89f}
|
||||
Use Case 2.0 Backup löschen}
|
||||
\\
|
||||
\end{longtable}
|
||||
|
@ -847,12 +847,12 @@ Use Case 2.0 Backup löschen}
|
|||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/activity_delete.pdf}
|
||||
\caption{\label{fig:org96d7936}
|
||||
\caption{\label{fig:orgc29b501}
|
||||
Aktivitätsdiagramm zum Löschen eines Backups}
|
||||
\end{figure}
|
||||
\newpage
|
||||
\paragraph{Use Case 3.0 Backup wiederherstellen}
|
||||
\label{sec:orgb1c5081}
|
||||
\label{sec:orgf158bff}
|
||||
|
||||
{\footnotesize
|
||||
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|}
|
||||
|
@ -904,7 +904,7 @@ Aktivitätsdiagramm zum Löschen eines Backups}
|
|||
\hline
|
||||
\textbf{Date} & 30.12.2018\\
|
||||
\hline
|
||||
\caption{\label{tab:org7b118df}
|
||||
\caption{\label{tab:org84075b7}
|
||||
Use Case 3.0 Backup wiederherstellen}
|
||||
\\
|
||||
\end{longtable}
|
||||
|
@ -913,12 +913,12 @@ Use Case 3.0 Backup wiederherstellen}
|
|||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/activity_restore.pdf}
|
||||
\caption{\label{fig:orgb1cc6ad}
|
||||
\caption{\label{fig:orge7a6b7a}
|
||||
Aktivitätsdiagramm zum Wiederherstellen eines Backups}
|
||||
\end{figure}
|
||||
\newpage
|
||||
\paragraph{Use Case 4.0 Einzelne Datei wiederherstellen}
|
||||
\label{sec:org8e173a3}
|
||||
\label{sec:org16dfd61}
|
||||
|
||||
{\footnotesize
|
||||
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|}
|
||||
|
@ -967,7 +967,7 @@ Aktivitätsdiagramm zum Wiederherstellen eines Backups}
|
|||
\hline
|
||||
\textbf{Date} & 30.12.2018\\
|
||||
\hline
|
||||
\caption{\label{tab:orged9864f}
|
||||
\caption{\label{tab:org7e30143}
|
||||
Use Case 4.0 Einzelne Datei wiederherstellen}
|
||||
\\
|
||||
\end{longtable}
|
||||
|
@ -976,12 +976,12 @@ Use Case 4.0 Einzelne Datei wiederherstellen}
|
|||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/activity_mount.pdf}
|
||||
\caption{\label{fig:org992f6bb}
|
||||
\caption{\label{fig:org2e38263}
|
||||
Aktivitätsdiagramm für das spezifische Wiederherstellen einer Datei}
|
||||
\end{figure}
|
||||
\newpage
|
||||
\paragraph{Use Case 4.1 Backup mounten}
|
||||
\label{sec:orgae4ca85}
|
||||
\label{sec:org045067a}
|
||||
|
||||
{\footnotesize
|
||||
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|}
|
||||
|
@ -1032,7 +1032,7 @@ Aktivitätsdiagramm für das spezifische Wiederherstellen einer Datei}
|
|||
\hline
|
||||
\textbf{Date} & 30.12.2018\\
|
||||
\hline
|
||||
\caption{\label{tab:orga3274db}
|
||||
\caption{\label{tab:org32a8377}
|
||||
Use Case 4.1 Backup mounten}
|
||||
\\
|
||||
\end{longtable}
|
||||
|
@ -1040,7 +1040,7 @@ Use Case 4.1 Backup mounten}
|
|||
|
||||
\newpage
|
||||
\paragraph{Use Case 5.0 Konfiguration ändern}
|
||||
\label{sec:org4e6f313}
|
||||
\label{sec:org27ebdc6}
|
||||
|
||||
{\footnotesize
|
||||
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|}
|
||||
|
@ -1093,7 +1093,7 @@ Use Case 4.1 Backup mounten}
|
|||
\hline
|
||||
\textbf{Date} & 30.12.2018\\
|
||||
\hline
|
||||
\caption{\label{tab:org4ea078d}
|
||||
\caption{\label{tab:org2b12346}
|
||||
Use Case 5.0 Konfiguration ändern}
|
||||
\\
|
||||
\end{longtable}
|
||||
|
@ -1102,12 +1102,12 @@ Use Case 5.0 Konfiguration ändern}
|
|||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/activity_settings.pdf}
|
||||
\caption{\label{fig:org35467e2}
|
||||
\caption{\label{fig:orgbece471}
|
||||
Aktivitätsdiagramm zum Ändern von Einstellungen}
|
||||
\end{figure}
|
||||
\newpage
|
||||
\paragraph{Use Case 6.0 automatische Backups aktivieren}
|
||||
\label{sec:org7ea0bf7}
|
||||
\label{sec:org053e3b3}
|
||||
|
||||
{\footnotesize
|
||||
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|}
|
||||
|
@ -1157,7 +1157,7 @@ Aktivitätsdiagramm zum Ändern von Einstellungen}
|
|||
\hline
|
||||
\textbf{Date} & 30.12.2018\\
|
||||
\hline
|
||||
\caption{\label{tab:org3890696}
|
||||
\caption{\label{tab:org326ff05}
|
||||
Use Case 6.0 automatische Backups aktivieren}
|
||||
\\
|
||||
\end{longtable}
|
||||
|
@ -1166,15 +1166,15 @@ Use Case 6.0 automatische Backups aktivieren}
|
|||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/activity_automatic.pdf}
|
||||
\caption{\label{fig:org839581b}
|
||||
\caption{\label{fig:org19c9d3a}
|
||||
Aktivitätsdiagramm zum Aktivieren von automatischen Backups}
|
||||
\end{figure}
|
||||
\newpage
|
||||
\section{Konzept}
|
||||
\label{sec:orgd0ea4f6}
|
||||
\label{sec:org115f194}
|
||||
|
||||
\subsection{Varianten}
|
||||
\label{sec:org2b55ff8}
|
||||
\label{sec:orgb78b1f7}
|
||||
|
||||
Da Borg eine JSON API zur Verfügung stellt bieten sich diverse Möglichkeiten um
|
||||
das Programm anzubinden. Da das Ziel ist, das Programm normalen Nutzern
|
||||
|
@ -1186,7 +1186,7 @@ Daraus ergeben sich die in diesem Kapitel aufgeführten Möglichkeiten für das
|
|||
Projekt.
|
||||
|
||||
\subsubsection{Bewertung}
|
||||
\label{sec:org34c4be3}
|
||||
\label{sec:orgab1507d}
|
||||
|
||||
Die Bewertungspunkte setzen sich einerseits aus den Projektzielen anderseits
|
||||
aus für das Projekt sinnvollen Punkten zusammen. Dadurch ergeben sich dann die
|
||||
|
@ -1205,7 +1205,7 @@ Projekt ausgewählt.
|
|||
|
||||
Mussziele erhalten dabei eine
|
||||
Gewichtung von 10 und Wunschziele eine Gewichtung entsprechend der Bewertung in
|
||||
der Tabelle Projektziele (\ref{tab:org9275be4}).
|
||||
der Tabelle Projektziele (\ref{tab:org56dc371}).
|
||||
|
||||
\begin{table}[htbp]
|
||||
\centering
|
||||
|
@ -1227,20 +1227,20 @@ der Tabelle Projektziele (\ref{tab:org9275be4}).
|
|||
\textbf{Total} & & & & 415\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:org60d7038}
|
||||
\caption{\label{tab:org8a40313}
|
||||
Muster Bewertungstabelle}
|
||||
|
||||
\end{table}
|
||||
|
||||
\subsubsection{Backend}
|
||||
\label{sec:orgad0eeff}
|
||||
\label{sec:orgcbb1eb1}
|
||||
|
||||
Fürs Backend bieten sich die folgende drei Sprachen an: \hyperref[sec:org2369fca]{C\#}, \hyperref[sec:org5cb06df]{C++}, \hyperref[sec:org1e551c7]{Python}.
|
||||
Fürs Backend bieten sich die folgende drei Sprachen an: \hyperref[sec:orgae52100]{C\#}, \hyperref[sec:orga100d4d]{C++}, \hyperref[sec:org8190282]{Python}.
|
||||
Dies vorallem weil alle Allrounder Sprachen sind und sich gut für Desktop
|
||||
Applikationen eignen.
|
||||
|
||||
\paragraph{C\#}
|
||||
\label{sec:org2369fca}
|
||||
\label{sec:orgae52100}
|
||||
|
||||
C\# ist eine von Microsoft entwickelte Programmiersprache welche viele
|
||||
Frameworks zur Verfügung hat. Insbesondere Aufgrund der grossen kommerziellen
|
||||
|
@ -1314,13 +1314,13 @@ Jedoch aufgrund des moderneren Unterbaus sicher schneller als C++.
|
|||
\textbf{Total} & & & & 279\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:orgc9c6090}
|
||||
\caption{\label{tab:org7184856}
|
||||
C\# Bewertungstabelle}
|
||||
|
||||
\end{table}
|
||||
|
||||
\paragraph{C++}
|
||||
\label{sec:org5cb06df}
|
||||
\label{sec:orga100d4d}
|
||||
|
||||
C++ ist eine stark typisierte und kompilierte Programmiersprache. Sie ist seit
|
||||
1998 Teil des ISO Standards \footcite{cpp98}. ISO/IEC 14882:2017 \footcite{cpp17}
|
||||
|
@ -1382,13 +1382,13 @@ ungeeignet.
|
|||
\textbf{Total} & & & & 271\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:orgba08048}
|
||||
\caption{\label{tab:orga01e597}
|
||||
C++ Bewertungstabelle}
|
||||
|
||||
\end{table}
|
||||
|
||||
\paragraph{Python}
|
||||
\label{sec:org1e551c7}
|
||||
\label{sec:org8190282}
|
||||
|
||||
Der Python Interpreter ist für eine Vielzahl an Betriebssystemen erhältlich,
|
||||
inklusive Windows, OS X und Linux. Nahezu jedes Desktop Linux System kommt mit
|
||||
|
@ -1420,9 +1420,9 @@ effektiv geschrieben wird \footcite{pep8}.
|
|||
|
||||
Um ein Python Programm zu starten braucht es eigentlich kein grosses Setup.
|
||||
Solange die Abhängigkeiten vorhanden sind, kann man ein Skript mit einem
|
||||
einfachen Befehl, Code Snippet (\ref{org5e3d59f}) starten.
|
||||
einfachen Befehl, Code Snippet (\ref{org63b1399}) starten.
|
||||
|
||||
\lstset{language=bash,label=org5e3d59f,caption={Minimal Python Setup},captionpos=b,numbers=none}
|
||||
\lstset{language=bash,label=org63b1399,caption={Minimal Python Setup},captionpos=b,numbers=none}
|
||||
\begin{sexylisting}{Minimal Python Setup}
|
||||
python3 example.py
|
||||
\end{sexylisting}
|
||||
|
@ -1461,15 +1461,15 @@ entwickeln kann, dies jedoch zu Lasten der Performance.
|
|||
\textbf{Total} & & & & 322\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:orga748a93}
|
||||
\caption{\label{tab:orga20a2b7}
|
||||
Python Bewertungstabelle}
|
||||
|
||||
\end{table}
|
||||
|
||||
\subsubsection{FrontEnd}
|
||||
\label{sec:org3ea116b}
|
||||
\label{sec:org485cede}
|
||||
|
||||
Fürs Frontend sind folgende Projekte interessant: \hyperref[sec:orgb9798d9]{Qt}, \hyperref[sec:orge4f95de]{Gtk} und \hyperref[sec:orgf2a5cfb]{Electron}. Alle
|
||||
Fürs Frontend sind folgende Projekte interessant: \hyperref[sec:org0f21b79]{Qt}, \hyperref[sec:orgdb99ccc]{Gtk} und \hyperref[sec:org844cf00]{Electron}. Alle
|
||||
drei sind cross-plattfrom fähige \gls{gui} Frameworks und nicht von einer
|
||||
spezifischen Sprache abhängig. Da nahezu keine Erfahrung mit den aufgeführten
|
||||
Frameworks vorhanden ist werden bei den Frontenend Frameworks die Punkte der
|
||||
|
@ -1477,7 +1477,7 @@ Verbreitung in der Community und Geschwindigkeit der Entwicklung ausgeschlossen
|
|||
da in allen Fällen nicht mal eine ungenaune Schätzung wirklich möglich wäre.
|
||||
|
||||
\paragraph{Qt}
|
||||
\label{sec:orgb9798d9}
|
||||
\label{sec:org0f21b79}
|
||||
|
||||
Qt \footcite{qt}, "`cute"' ausgesprochen, ist ein Framework zum Entwickeln von
|
||||
grafischen Oberflächen welche auf verschiedenen System ohne grosse Änderungen
|
||||
|
@ -1527,13 +1527,13 @@ gross.
|
|||
\textbf{Total} & & & & 295\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:org8d19685}
|
||||
\caption{\label{tab:org2ccd75a}
|
||||
Qt Bewertungstabelle}
|
||||
|
||||
\end{table}
|
||||
|
||||
\paragraph{Gtk}
|
||||
\label{sec:orge4f95de}
|
||||
\label{sec:orgdb99ccc}
|
||||
|
||||
Gtk ist sowohl für Linux wie auch für Windows und OS X erhältlich. Gtk hat als
|
||||
Projekt der Gnome Foundation seine Wurzeln jedoch ganz klar in der Linux Welt.
|
||||
|
@ -1547,12 +1547,12 @@ nur intensiv User verwendet.
|
|||
Gtk integriert sich nur unter Linux wirklich gut ins System. Unter Windows und
|
||||
OS X können die Applikation 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:orgeedd70e}).
|
||||
Abbildung (\ref{fig:orgf763769}).
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/meld.png}
|
||||
\caption{\label{fig:orgeedd70e}
|
||||
\caption{\label{fig:orgf763769}
|
||||
Screenshot der Applikation Meld unter Windows 10}
|
||||
\end{figure}
|
||||
Die Gtk Dokumentation empfiehlt \footcite{gtk_setup}, das man unter Windows das
|
||||
|
@ -1589,13 +1589,13 @@ Da die Kenntnisse gleich null sind ist der Lernfaktor auf dem Maximum.
|
|||
\textbf{Total} & & & & 275\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:org8321157}
|
||||
\caption{\label{tab:org1738350}
|
||||
Gtk Bewertungstabelle}
|
||||
|
||||
\end{table}
|
||||
|
||||
\paragraph{Electron}
|
||||
\label{sec:orgf2a5cfb}
|
||||
\label{sec:org844cf00}
|
||||
|
||||
Electron ist ein cross-platform Framework zum entwickeln von \glspl{gui} welches
|
||||
dabei jedoch auf Technologien aus der Webentwicklung benutzt. Entwickelt wird
|
||||
|
@ -1649,15 +1649,15 @@ Lernfaktor bei Electron wohl nicht so gross wie etwa bei Qt oder Gtk.
|
|||
\textbf{Total} & & & & 275\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:org6e61af0}
|
||||
\caption{\label{tab:org76b246d}
|
||||
Electron Bewertungstabelle}
|
||||
|
||||
\end{table}
|
||||
|
||||
\subsubsection{Ergebnis}
|
||||
\label{sec:orgb914223}
|
||||
\label{sec:org5470bfd}
|
||||
|
||||
Aufgrund der erreichten Punktzahl, Tabelle:(\ref{tab:org609b05e}), bei den vorhergehenden
|
||||
Aufgrund der erreichten Punktzahl, Tabelle:(\ref{tab:orgbdd652b}), bei den vorhergehenden
|
||||
Variantenbewertungen, wurde entschieden für das Backend der Applikation auf
|
||||
Python zu setzen und fürs Frontend Qt zu benutzen.
|
||||
\begin{table}[H]
|
||||
|
@ -1676,85 +1676,199 @@ Gtk & 275\\
|
|||
Electron & 275\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{\label{tab:org609b05e}
|
||||
\caption{\label{tab:orgbdd652b}
|
||||
Variantenbewertung Ergebnis}
|
||||
|
||||
\end{table}
|
||||
|
||||
\subsection{Vorkenntnisse}
|
||||
\label{sec:org4ef797a}
|
||||
\subsection{Applikationsname}
|
||||
\label{sec:org99b3610}
|
||||
|
||||
Die benötigten Vorkenntnisse wurden in den vorangegangenen Semestern erarbeitet
|
||||
und sind in der Basis gefestigt. Erfahrungen im Bereich der Entwicklung von
|
||||
Desktop Applikationen sind zum Teil vorhanden. Jedoch hauptsächlich für Windows
|
||||
Systeme und C\#.
|
||||
Da die einzusetzende Technologie nun feststeht lässt sich auch gut ein Name für
|
||||
die Applikation ableiten. Oftmals werden die grafischen Applikationen gleich
|
||||
benannt wie die Kommandozeilen Applikation aber mit dem Namen des \gls{gui}
|
||||
Frameworks als Sufix. Somit wird das zu erstellende \gls{gui} für \gls{borg} im
|
||||
weiteren Verlauf der Arbeit nun Borg-Qt gennant.
|
||||
|
||||
\subsection{Testing}
|
||||
\label{sec:org4efee39}
|
||||
\label{sec:org4369221}
|
||||
|
||||
PLACEHOLDER
|
||||
Die Anwendung wird während der Realisierung soweit als möglich mit
|
||||
automatischen Unittests und Funktionstests überprüft. Dies hauptsächlich um die
|
||||
Erfahrung in diesem Bereich zu erweitern und um ein gutes Fundament für die
|
||||
Zukunft des Projektes zu bauen.
|
||||
|
||||
\subsubsection{Testfälle}
|
||||
\label{sec:org55477bd}
|
||||
Aufgrund der Unerfahrenheit in diesem Bereich werden die Testfälle,
|
||||
Tabelle:(\ref{tab:orgea03cef}), final jedoch von Hand überprüft. Somit kann vermieden
|
||||
werden das nicht funktionierende automatische Tests den Abschluss des Projektes
|
||||
verhindern.
|
||||
|
||||
PLACEHOLDER
|
||||
Getestet wird die Applikation jeweils auf dem Computer des Projektleiters. Auf
|
||||
diesem läuft die aktuelle langzeitsupport Version (18.04) von Ubuntu
|
||||
\footcite{ubuntu} Linux, mit der GNOME Desktop Umgebung \footcite{gnome}, als
|
||||
Betriebssystem. Die Tests werden jeweils gegen eine von PyInstaller generierte
|
||||
Binärdatei ausgeführt. Der genaue Vorgang der Erstellung dieser Datei wird in
|
||||
der Sektion: \hyperref[sec:orgc187131]{Releases} beschrieben. Somit werden die Tests immer gegen eine
|
||||
veröffentlichbare Version gemacht.
|
||||
|
||||
Als Testdateien wird jeweils das Code Repository von Borg-Qt selber verwendet.
|
||||
Der Pfad des \gls{borg} Repository für lokale Backups soll \texttt{/tmp/test-borgqt}
|
||||
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 repo} ausführen und hat eine funktionsfähige Testumgebung.
|
||||
|
||||
Um Backups über SSH testen zu können wird eine virtuelle Maschine mit Ubuntu
|
||||
18.04 verwendet. Die Konfiguration der virtuellen Maschine sieht dabei wie
|
||||
folgt aus:
|
||||
\begin{itemize}
|
||||
\item 2 CPU Kerne
|
||||
\item 1024 MB RAM
|
||||
\item IP: 10.7.89.117
|
||||
\item Ein User \texttt{borg} mit Passwort \texttt{borg}
|
||||
\item \gls{borg} Repository unter \texttt{/home/borg/backup/diplom} mit Passwort \texttt{foo}, in
|
||||
den Testfällen "`Server Repository"' genannt
|
||||
\item Der SSH Key des Entwicklers wird in den User \texttt{borg} importiert. Dies
|
||||
ermöglicht Passwort freie Logins.
|
||||
\end{itemize}
|
||||
|
||||
\newpage
|
||||
\begin{landscape}
|
||||
\subsection{Testfälle}
|
||||
\label{sec:org6245b05}
|
||||
{\footnotesize
|
||||
\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}l|p{2cm}|p{2cm}|p{3.5cm}|p{2cm}|p{3cm}|p{3.5cm}|p{2.5cm}|}
|
||||
\hline
|
||||
\textbf{ID}\cellcolor[HTML]{C0C0C0} & \textbf{Objective}\cellcolor[HTML]{C0C0C0} & \textbf{Precondition}\cellcolor[HTML]{C0C0C0} & \textbf{Steps}\cellcolor[HTML]{C0C0C0} & \textbf{Testdata}\cellcolor[HTML]{C0C0C0} & \textbf{Expected Result}\cellcolor[HTML]{C0C0C0} & \textbf{Postcondition}\cellcolor[HTML]{C0C0C0} & \textbf{Result}\cellcolor[HTML]{C0C0C0}\\
|
||||
\hline
|
||||
\endfirsthead
|
||||
\multicolumn{8}{l}{Fortsetzung von vorheriger Seite} \\
|
||||
\hline
|
||||
|
||||
\textbf{ID}\cellcolor[HTML]{C0C0C0} & \textbf{Objective}\cellcolor[HTML]{C0C0C0} & \textbf{Precondition}\cellcolor[HTML]{C0C0C0} & \textbf{Steps}\cellcolor[HTML]{C0C0C0} & \textbf{Testdata}\cellcolor[HTML]{C0C0C0} & \textbf{Expected Result}\cellcolor[HTML]{C0C0C0} & \textbf{Postcondition}\cellcolor[HTML]{C0C0C0} & \textbf{Result}\cellcolor[HTML]{C0C0C0} \\
|
||||
|
||||
\hline
|
||||
\endhead
|
||||
\hline\multicolumn{8}{r}{Fortsetzung nächste Seite} \\
|
||||
\endfoot
|
||||
\endlastfoot
|
||||
\hline
|
||||
\textbf{TC-01} & Anwendung starten & Lokales Repository initialisiert.\newline Lokale Konfigurationsdatei erstellt. & 1. Anwendung starten. & - & Die Anwendung startet ohne Fehlermeldung und zeigt eine leere Backup Liste an. & Die Anwendung wird angezeigt. & \\
|
||||
\hline
|
||||
\textbf{TC-02} & Anwendung starten & Lokale Konfigurationsdatei erstellt. & 1. Anwendung starten. & - & Die Anwendung wirft eine Fehlermeldung das sie das lokale Repository nicht finden kann. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-03} & Anwendung starten & - & 1. Anwendung starten. & - & Die wirft eine Fehlermeldung das sie die Konfigurationsdatei nicht finden kann. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-04} & Lokales Backup erstellen & TC-01 ausgeführt. & 1. In der Ordnerübersicht das Code Repository auswählen.\newline 2. Den Button “Backup” betätigen. & Testdateien & Die Anwendung zeigt einen Fortschrittsbalken der nach erfolgtem Backup verschwindet. & Die Backup Liste wird aktualisiert und zeigt ein Backup an. & \\
|
||||
\hline
|
||||
\textbf{TC-05} & Lokales Backup erstellen & TC-01 ausgeführt.\newline BorgBackup macht bereits ein Backup. & 1. In der Ordnerübersicht das Code Repository auswählen.\newline 2. Den Button “Backup” betätigen. & Testdateien & Die Anwendung wirft eine Fehlermeldung das BorgBackup bereits ausgeführt wird. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-06} & Lokales Backup erstellen & TC-01 ausgeführt. & 1. Das Lokale Repository an einen beliebigen Ort verschieben.\newline 2. In der Ordnerübersicht das Code Repository auswählen.\newline 3. Den Button “Backup” betätigen. & Testdateien & Die Anwendung wirft eine Fehlermeldung das sie das lokale Repository nicht finden kann. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-07} & Lokales Backup erstellen & TC-01 ausgeführt. & 1. Den Button “Backup” betätigen. & - & Die Anwendung wirft eine Fehlermeldung das der User einen Pfad angeben soll. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-08} & Lokales Backup löschen & TC-04 ausgeführt. & 1. In der Backup Liste das Backup auswählen.\newline 2. Den Button “Delete” betätigen. & - & Die Anwendung zeigt einen Fortschrittsbalken der nach erfolgtem Löschen verschwindet. & Die Backup Liste wird aktualisiert und ist nun leer. & \\
|
||||
\hline
|
||||
\textbf{TC-09} & Lokales Backup löschen & TC-04 ausgeführt. & 1. Das Lokale Repository an einen beliebigen Ort verschieben.\newline 2. In der Backup Liste das Backup auswählen.\newline 3. Den Button “Delete” betätigen. & - & Die Anwendung wirft eine Fehlermeldung das sie das lokale Repository nicht finden kann. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-10} & Lokales Backup löschen & TC-04 ausgeführt. & 1. Den Button “Delete” betätigen. & - & Die Anwendung wirft eine Fehlermeldung das der User ein Backup auswählen soll. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-11} & Lokales Backup wiederherstellen & TC-04 ausgeführt. & 1. In der Backup Liste das Backup auswählen.\newline 2. Den Button “Restore” betätigen.\newline 3. Im geöffneten Dateidialog den Pfad "`/home/andreas/Downloads"' auswählen.\newline 4. Den Button “Open” anklicken. & - & Nach erfolgtem Wiederherstellen öffnet ein Datei Explorer den Ziel Pfad. & Die Anwendung und ein Datei Explorer wird angezeigt. & \\
|
||||
\hline
|
||||
\textbf{TC-12} & Lokales Backup wiederherstellen & TC-01 ausgeführt. & 1. Den Button “Backup” betätigen. & - & Die Anwendung wirft eine Fehlermeldung das der User ein Backup auswählen soll. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-13} & Lokales Backup wiederherstellen & TC-01 ausgeführt. & 1. Das Lokale Repository an einen beliebigen Ort verschieben.\newline 2. In der Backup Liste das Backup auswählen.\newline 3. Den Button “Restore” betätigen. & - & Die Anwendung wirft eine Fehlermeldung das sie das lokale Repository nicht finden kann. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-14} & Lokales Backup wiederherstellen & TC-01 ausgeführt. & 1. In der Backup Liste das Backup auswählen.\newline 2. Den Button “Restore” betätigen.\newline 3. Im geöffneten Dateidialog den Pfad "`/home/andreas/Downloads"' auswählen.\newline 4. Den Button “Cancel” anklicken. & - & Der Datei Dialog schliesst sich wieder. & Die Anwendung wird angezeigt. & \\
|
||||
\hline
|
||||
\textbf{TC-15} & Home Directory sichern und wiederherstellen & TC-01 ausgeführt. & 1. Vom Pfad "`\emph{home/andreas}"' ein Backup erstellen.\newline 2. In der Backup Liste das gemachte Backup auswählen.\newline 3. Den Button “Restore” betätigen.\newline 4. Im geöffneten Dateidialog den Pfad "`/home/andreas/Downloads"' auswählen.\newline 5. Den Button “Open” anklicken. & "`\emph{home/andreas}"' & Nach erfolgtem Wiederherstellen öffnet ein Datei Explorer den Ziel Pfad.\newline Darin fehlen jedoch temporäre Pfade wie “\textasciitilde{}/.cache” etc. & Die Anwendung und ein Datei Explorer wird angezeigt. & \\
|
||||
\hline
|
||||
\textbf{TC-16} & Einzelne Datei wiederherstellen & TC-04 ausgeführt. & 1. In der Backup Liste das Backup auswählen.\newline 2. Den Button “Mount” betätigen.\newline 3. Aus dem sich öffnenden Datei Explorer die Datei README.org nach "`/home/andreas/Downloads"' kopieren. & - & Die wiederhergestellte Datei ist identisch mit der in TC-04 gesicherten. & Die Anwendung und ein Datei Explorer wird angezeigt. & \\
|
||||
\hline
|
||||
\textbf{TC-17} & Einzelne Datei wiederherstellen & TC-01 ausgeführt. & 1. Das Lokale Repository an einen beliebigen Ort verschieben.\newline 2. In der Backup Liste das Backup auswählen.\newline 3. Den Button “Mount” betätigen. & - & Die Anwendung wirft eine Fehlermeldung das sie das lokale Repository nicht finden kann. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-18} & Pfad des lokalen Backup Repositorys anpassen & TC-04 ausgeführt.\newline Backup Repository nach "`/tmp/test-borgqt2"' verschoben & 1. Den Button "`Settings"' betätigen.\newline 2. Den Repository Pfad auf "`\emph{tmp/test-borgqt2}"' ändern.\newline 3. Den Button "`Apply"' betätigen. & - & Die Backup Liste wird aktualisiert und zeigt wieder das Backup von TC-04 an. & Die Anwendung wird angezeigt. Die Konfigurationsdatei zeigt auf den neuen Pfad. & \\
|
||||
\hline
|
||||
\textbf{TC-19} & Backup Name ändern & TC-01 ausgeführt. & 1. Den Button "`Settings"' betätigen.\newline 2. Bei der Option "`Archive Prefix"' "`Muster"' eintragen.\newline 3. Den Button "`Apply"' betätigen.\newline 4. TC-04 durchführen. & Backupname: Muster & Die Anwendung zeigt einen Fortschrittsbalken der nach erfolgtem Backup verschwindet. & Die Backup Liste wird aktualisiert und zeigt ein Backup mit dem Präfix "`Muster"' an. Die Konfigurationsdatei beinhaltet die Option des Präfixes. & \\
|
||||
\hline
|
||||
\textbf{TC-20} & Keine Einstellungen ändern & TC-01 ausgeführt. & 1. Den Button "`Settings"' betätigen.\newline 2. Eine beliebige Option ändern.\newline 3. Den Button "`Cancel"' betätigen. & - & Der Einstellungsdialog schliesst sich. & Die Anwendung wird angezeigt. Die Konfigurationsdatei ist noch im selben Zustand wie bei TC-01. & \\
|
||||
\hline
|
||||
\textbf{TC-21} & Automtische Backups konfigurieren & TC-01 ausgeführt. & 1. Den Button "`Settings"' betätigen.\newline 2. Bei der Option "`Automatic Backups"' bei "`Backup Path"' die Testdateien angeben sowie "`Hourly"' auswählen und bei "`Time"' die nächste Stunde angeben.\newline 3. Den Button Apply betätigen. & Backupzeit: 2 Minuten nach aktueller Zeit Testdateien & Der Datei Dialog schliesst sich wieder. & Die Anwendung wird angezeigt. Die Konfigurationsdatei wurde um die Option des automatischen Backups erweitert. Die Anwendung hat einen "`Service"' auf dem System erstellt. & \\
|
||||
\hline
|
||||
\textbf{TC-22} & Automtische Backups durchführen & TC-16 ausgeführt. & 1. TC-21 durchführen.\newline 2. Auf Ablauf der Zeit warten.\newline 3. Die Anwendung öffnen. & - & In der Backup Liste wird ein Backup angezeigt. & Die Anwendung wird angezeigt. & \\
|
||||
\hline
|
||||
\textbf{TC-23} & Server Backup erstellen & Server Repository bereit.\newline Server Konfigurationsdatei erstellt. & TC-04 durchführen. & Testdateien & Die Anwendung zeigt einen Fortschrittsbalken der nach erfolgtem Backup verschwindet. & Die Backup Liste wird aktualisiert und zeigt ein Backup an. & \\
|
||||
\hline
|
||||
\textbf{TC-24} & Lokales Backup erstellen während dem eine VM läuft & TC-01 ausgeführt.\newline Virtualbox VM Starten. & 1. In der Ordnerübersicht das Code Repository auswählen.\newline 2. Den Button “Backup” betätigen. & Testdateien & Die Anwendung wirft eine Fehlermeldung aus das es zur Zeit aufgrund einer laufenden VM unsicher sei ein Backup durchzuführen. & Die geöffnete Fehlermeldung blockiert die Applikation. & \\
|
||||
\hline
|
||||
\textbf{TC-25} & Abgebrochenes Backup bereinigen & TC-01 ausgeführt. & 1. In der Ordnerübersicht das Code Repository auswählen.\newline 2. Den Button “Backup” betätigen.\newline 3. Die Anwendung schliessen.\newline 4. Anwendung wieder öffnen.\newline 5. TC-04 Durchführen. & Testdateien & Bei Schritt 4. sollte ein Teilbackup zu sehen sein.\newline Bei Schritt 5 sollte einfach ein normales Backup zu sehen sein. & Die Anwendung wird angezeigt. & \\
|
||||
\hline
|
||||
\caption{\label{tab:orgea03cef}
|
||||
Testfälle}
|
||||
\\
|
||||
\end{longtable}
|
||||
}
|
||||
\end{landscape}
|
||||
\newpage
|
||||
|
||||
\section{Realisierung}
|
||||
\label{sec:org084b9b2}
|
||||
\label{sec:orga689e7f}
|
||||
\subsection{Cross-plattform Kompatibilität}
|
||||
\label{sec:orgc58cfd4}
|
||||
\label{sec:org7aa41c9}
|
||||
|
||||
Um sicherzugehen das die gewählten Technologien auch den Anforderungen
|
||||
entsprechen wurde ein kleines "`Hello World"' Programm mit Python3 und Qt
|
||||
geschrieben. Dieses läuft ohne jegliche Probleme und Anpassung auf Windows,
|
||||
Linux und OS X. Wie in den Screenshots in Abbildung:(\ref{fig:org0701830}) zu sehen
|
||||
Linux und OS X. Wie in den Screenshots in Abbildung:(\ref{fig:orgc21181f}) zu sehen
|
||||
ist.
|
||||
|
||||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=.9\linewidth]{pictures/hello_world.png}
|
||||
\caption{\label{fig:org0701830}
|
||||
\caption{\label{fig:orgc21181f}
|
||||
Python und Qt Applikation unter Windows (links), Linux (rechts) und OS X (unten)}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Benutzerinterface}
|
||||
\label{sec:org50839f2}
|
||||
\label{sec:org2cee34e}
|
||||
\paragraph{Inspiration}
|
||||
\label{sec:org1cb94b4}
|
||||
\label{sec:orgac8bf86}
|
||||
|
||||
PLACEHOLDER
|
||||
|
||||
\paragraph{Frontend Umsetzung}
|
||||
\label{sec:org355e7a6}
|
||||
\label{sec:orge01dc90}
|
||||
|
||||
PLACEHOLDER
|
||||
|
||||
\paragraph{Backend Umsetzung}
|
||||
\label{sec:org263b030}
|
||||
\label{sec:org41e1f3f}
|
||||
|
||||
PLACEHOLDER
|
||||
|
||||
\subsection{Releases}
|
||||
\label{sec:orgc187131}
|
||||
|
||||
\section{Ausblick}
|
||||
\label{sec:org4832c62}
|
||||
\label{sec:orgd795a85}
|
||||
\subsection{Projektmanagement}
|
||||
\label{sec:org1794ec5}
|
||||
\label{sec:org17dacac}
|
||||
|
||||
PLACEHOLDER
|
||||
|
||||
\subsection{Umsetzung}
|
||||
\label{sec:org1ca9bef}
|
||||
\label{sec:orgb506a80}
|
||||
|
||||
PLACEHOLDER
|
||||
|
||||
\subsection{Gelerntes}
|
||||
\label{sec:orgd179673}
|
||||
\label{sec:org666d5d3}
|
||||
|
||||
PLACEHOLDER
|
||||
|
||||
\newpage
|
||||
\begin{landscape}
|
||||
\section{Arbeitsjournal}
|
||||
\label{sec:orgf31d4c9}
|
||||
\label{sec:org907f4fb}
|
||||
|
||||
\begin{longtable}{|p{2cm}|p{5cm}|p{5cm}|p{7cm}|}
|
||||
\hline
|
||||
|
@ -1780,7 +1894,7 @@ PLACEHOLDER
|
|||
\hline
|
||||
06.01.2019 & Lösungsvarianten erarbeiten und entscheiden, Test Konzept beschreiben und Testfälle erstellen & & \\
|
||||
\hline
|
||||
\caption{\label{tab:org109e680}
|
||||
\caption{\label{tab:orge2b5828}
|
||||
Arbeitsjournal}
|
||||
\\
|
||||
\end{longtable}
|
||||
|
|
Reference in New Issue