diff --git a/projektdokumentation/pictures/activity_automatic.pdf b/projektdokumentation/pictures/activity_automatic.pdf new file mode 100644 index 0000000..a1228df Binary files /dev/null and b/projektdokumentation/pictures/activity_automatic.pdf differ diff --git a/projektdokumentation/pictures/activity_automatic.xml b/projektdokumentation/pictures/activity_automatic.xml new file mode 100644 index 0000000..dae0194 --- /dev/null +++ b/projektdokumentation/pictures/activity_automatic.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/projektdokumentation/pictures/activity_backup.pdf b/projektdokumentation/pictures/activity_backup.pdf new file mode 100644 index 0000000..b56cd2e Binary files /dev/null and b/projektdokumentation/pictures/activity_backup.pdf differ diff --git a/projektdokumentation/pictures/activity_backup.xml b/projektdokumentation/pictures/activity_backup.xml new file mode 100644 index 0000000..3624811 --- /dev/null +++ b/projektdokumentation/pictures/activity_backup.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/projektdokumentation/pictures/activity_delete.pdf b/projektdokumentation/pictures/activity_delete.pdf new file mode 100644 index 0000000..42dc5a6 Binary files /dev/null and b/projektdokumentation/pictures/activity_delete.pdf differ diff --git a/projektdokumentation/pictures/activity_delete.xml b/projektdokumentation/pictures/activity_delete.xml new file mode 100644 index 0000000..9c40e23 --- /dev/null +++ b/projektdokumentation/pictures/activity_delete.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/projektdokumentation/pictures/activity_mount.pdf b/projektdokumentation/pictures/activity_mount.pdf new file mode 100644 index 0000000..b499480 Binary files /dev/null and b/projektdokumentation/pictures/activity_mount.pdf differ diff --git a/projektdokumentation/pictures/activity_mount.xml b/projektdokumentation/pictures/activity_mount.xml new file mode 100644 index 0000000..42ae7c7 --- /dev/null +++ b/projektdokumentation/pictures/activity_mount.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/projektdokumentation/pictures/activity_restore.pdf b/projektdokumentation/pictures/activity_restore.pdf new file mode 100644 index 0000000..7b8f944 Binary files /dev/null and b/projektdokumentation/pictures/activity_restore.pdf differ diff --git a/projektdokumentation/pictures/activity_restore.xml b/projektdokumentation/pictures/activity_restore.xml new file mode 100644 index 0000000..c50bbbc --- /dev/null +++ b/projektdokumentation/pictures/activity_restore.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/projektdokumentation/pictures/activity_settings.pdf b/projektdokumentation/pictures/activity_settings.pdf new file mode 100644 index 0000000..ba24584 Binary files /dev/null and b/projektdokumentation/pictures/activity_settings.pdf differ diff --git a/projektdokumentation/pictures/activity_settings.xml b/projektdokumentation/pictures/activity_settings.xml new file mode 100644 index 0000000..6cc1391 --- /dev/null +++ b/projektdokumentation/pictures/activity_settings.xml @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/projektdokumentation/pictures/use_case.pdf b/projektdokumentation/pictures/use_case.pdf new file mode 100644 index 0000000..a69ca84 Binary files /dev/null and b/projektdokumentation/pictures/use_case.pdf differ diff --git a/projektdokumentation/pictures/use_case.xml b/projektdokumentation/pictures/use_case.xml new file mode 100644 index 0000000..357100a --- /dev/null +++ b/projektdokumentation/pictures/use_case.xml @@ -0,0 +1 @@ +5Zpdc5s4FIZ/jS+zYxAf5tImadptu81s+rVXGWIU0ERIXiFqJ7++hyAwIOx6XRvjbC4y6EUI9OrhcCR5hPxkdS2CRfyRh5iOzHG4GqHLkWl6EwT/c+GpEGzPK4RIkLCQjLVwS56xEsdKzUiI00ZFyTmVZNEU55wxPJcNLRCCL5vVHjht3nURRFgTbucB1dVvJJRxoU5Md62/xSSK1Z3tsr9JUNZVHUnjIOTLmoSuRsgXnMviKFn5mObWlbYU173ZcLZ6LoGZ3OUCn/HsW/T357t/XXf11b8Sd5/+vFCt/Ahopvo74yIC5frLO/XY8qm0AnqwyA+zhL4RQQKHs2VMJL5dBPNcXwIAoMUyoVAy4FB/xvKGWEi8qknqma8xT7AUT1BFnTWR8k/x4/xhF+XlejQsS9WJ6yPhKjFQBERV22uX4EAZ9R9MMzXTvqRYbLNrOpdcgB95twmw9SG4x/SGp0QSzqDKPZeSJ1CB5idmwfwxEjxjoc9pfh20hh5e/mptTCmJ8mslP7zpTtNz0zE6XEcdpjvH8hzpoIJL2QI0LFIJLWCmjQCoECZ64tTzSo8q1zpMM7pQPRqp1kbXHAr3nt0DtU6UHy0JDrGIB+vl2D25mbZm5hVhz5gyDOplIDHZxdZ2jaEZvVZOZrSjGf2eswcSZSJ4iZfwofPRaGoxsHZooCKvK1T265+n+aebxMJpnhxBiXGGm8aAH+LpOxTGZeGfvAD9guKKyO+NUvPcDRYEeoGFunyjySnPxBz/+isrAxFh+esvAw4beZw+ZLXhsLvSBaUJTIGyH83sr2uI1B1uOIGeVURctNIV16i+AmUjRc/VdfWErdWU2Up8HK2lwhutpRdoqp7vz1GZgv9PQLKGDdLkUCC5qHeQ9GnGawbJHjRIE/tQIE3GvYOkT71eM0jOoEHyzIOB5B4RJGrcPbDps/3IvU8fLv2/IFVnG9Y9ysnRQCbyPJOUMOxXK1tbqds9a3XtU07vO8fjYCmr0dN7vY2qM8s07NZ7be2fslqtlFXPWY79Xh8sZT0LkAYy9ykTS2tvcFoRyfF6B0dfYCRsTrMQa/zUaGmH8Cr81xjjCwynZmGQxjiswCp3OiZ1rnSqttC4P10m2hGvXRPZ3w1ARnP0keXuR5HTXo1xdCKPzZG+5LpnAKoR0AKiHWdKfgyNn8Mysi1UnToElQSgA6HU5+JLt6/6KmhvIOmB6DdAsnYMNuagQEKtmGQbZwvSq10O7uZtWBxdtLYH3PG+KVKbSMM2e+XIPNgi3tBS63PgyBu3Jmn759oWOjFIpgZStZdP8529mZPO48FtQRtGr/v5W7OyLusSnjF5YtfsFqWmNzm9Z3pGHmQwS4O3MccshVObfhQRPMIbS7A4g317a4KO6DQU1z9UK+LA+sd+6Oon \ No newline at end of file diff --git a/projektdokumentation/projektdokumentation.org b/projektdokumentation/projektdokumentation.org index aa61ebb..af52e69 100644 --- a/projektdokumentation/projektdokumentation.org +++ b/projektdokumentation/projektdokumentation.org @@ -564,6 +564,399 @@ Abbildung:([[fig:swot]]) zu sehen. [[file:pictures/swot_analyse.pdf]] #+attr_latex: :center :width 0.9\textwidth +** Anforderungskatalog + +Der Anforderungskatalog entspricht 1:1 den Zielen welche in der Tabelle +[[tab:projektziele]] definiert wurden. + +** Use Cases + +Ein Use Case sammelt alle möglichen Szenarien, die eintreten können, +wenn ein Akteur versucht, mit Hilfe des betrachteten Systems ein +bestimmtes Ziel zu erreichen. Dabei beschreibt er, was beim Versuch der +Zielerreichung passieren kann. Je nach Ablauf kann auch ein Fehlschlag +ein Ergebnis eines Anwendungsfalls sein (e.g. falsches Passwort beim +Login). Dabei wird die technische Lösung nicht konkret beschrieben. +Die Detailstufe kann dabei sehr unterschiedlich sein.footcite:usecase + +*** Anwendungsfalldiagramm + +"Ein Anwendungsfalldiagramm ... ist eine der 14 Diagrammarten der +Unified Modelling Language (UML), einer Sprache für die Modellierung +der Strukturen und des Verhaltens von Software- und anderen Systemen. +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: +([[fig:usecase]]) zu sehen. + +#+LATEX:\newpage +#+LATEX:\begin{landscape} +#+CAPTION: Anwendungsfalldiagramm +#+ATTR_LATEX: :height.9\textwidth +#+NAME: fig:usecase +[[file:pictures/use_case.pdf]] +#+LATEX:\end{landscape} +#+LATEX:\newpage + +*** Use Cases Detailbeschreibung + +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:([[tab:uc_backup]], [[tab:uc_delete]], +[[tab:uc_restore]], [[tab:uc_file]], [[tab:uc_mount]], [[tab:uc_config]], [[tab:uc_automatic]]) +wurden dem Anwendungsfalldiagramm, Abbildung:([[fig:usecase]]), entnommen und +zusätzlich noch um jeweils ein Aktivitätsdiagramm , Abbildungen: +([[fig:activity_backup]], [[fig:activity_delete]], [[fig:activity_restore]], +[[fig:activity_mount]], [[fig:activity_settings]], [[fig:activity_automatic]]), 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. + +**** Use Case 1.0 Backup erstellen + +#+LATEX:{\footnotesize +#+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 | +|---------------------+--------------------------------| +#+LATEX:} +#+caption: Aktivitätsdiagramm zum Erstellen eines Backups +#+name: fig:activity_backup +[[file:pictures/activity_backup.pdf]] +#+attr_latex: :center :placement [H] + +#+LATEX:\newpage +**** Use Case 2.0 Backup löschen + +#+LATEX:{\footnotesize +#+CAPTION: Use Case 2.0 Backup löschen +#+ATTR_LATEX::environment longtable :align |>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}| :placement [H] +#+NAME: tab:uc_delete +|---------------------+--------------------------------| +| | <30> | +| *Identifier + Name* | 2.0 Backup löschen | +|---------------------+--------------------------------| +| *Description* | Ein zuvor erstelltes Backup wird gelöscht. | +|---------------------+--------------------------------| +| *Actors* | Benutzer | +|---------------------+--------------------------------| +| *Status* | Freigegeben | +|---------------------+--------------------------------| +| *Includes* | - | +|---------------------+--------------------------------| +| *Trigger* | Ein User möchte ein bestehendes Backup löschen. | +|---------------------+--------------------------------| +| *Preconditions* | Use Case 1.0 ausgeführt. | +|---------------------+--------------------------------| +| *Postconditions* | Das gelöschte Backup wird nicht mehr aufgelistet. | +|---------------------+--------------------------------| +| *Normal Flow* | 1. Ein Backup aus der Liste auswählen. | +| | 2. Den Button "Delete anklicken". | +| | 3. Ein Bestätigungsdialog erscheint. | +| | 4. Im Dialog den "Ok" Button anklicken. | +|---------------------+--------------------------------| +| *Alternative Flow* | 1. Ein Backup aus der Liste auswählen. | +| | 2. Den Button "Delete anklicken". | +| | 3. Ein Bestätigungsdialog erscheint. | +| | 4. Die Aktion mit einem Klick auf den "Cancel" Button abbrechen. | +|---------------------+--------------------------------| +| *Notes* | - | +|---------------------+--------------------------------| +| *UC History* | 1.0 Draft erstellt durch AZ | +|---------------------+--------------------------------| +| *Author* | A. Zweili | +|---------------------+--------------------------------| +| *Date* | 30.12.2018 | +|---------------------+--------------------------------| +#+LATEX:} +#+caption: Aktivitätsdiagramm zum Löschen eines Backups +#+name: fig:activity_delete +[[file:pictures/activity_delete.pdf]] +#+attr_latex: :center :placement [H] + +#+LATEX:\newpage +**** Use Case 3.0 Backup wiederherstellen + +#+LATEX:{\footnotesize +#+CAPTION: Use Case 3.0 Backup wiederherstellen +#+ATTR_LATEX::environment longtable :align |>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}| :placement [H] +#+NAME: tab:uc_restore +|---------------------+--------------------------------| +| | <30> | +| *Identifier + Name* | 3.0 Backup wiederherstellen | +|---------------------+--------------------------------| +| *Description* | Alle Dateien eines Backups wiederherstellen. | +|---------------------+--------------------------------| +| *Actors* | User | +|---------------------+--------------------------------| +| *Status* | Freigegeben | +|---------------------+--------------------------------| +| *Includes* | - | +|---------------------+--------------------------------| +| *Trigger* | Daten sollen wieder hergestellt werden. | +|---------------------+--------------------------------| +| *Preconditions* | Use Case 1.0 wurde ausgeführt. | +|---------------------+--------------------------------| +| *Postconditions* | Die Dateien aus dem Backup wurde im angegeben Pfad wiederhergestellt. | +|---------------------+--------------------------------| +| *Normal Flow* | 1. Ein Backup aus der Liste auswählen. | +| | 2. Den Button "Restore" klicken. | +| | 3. Ein Pop-Up zur Auswahl eines Zielpfades erscheint. | +| | 4. Den Zielpfad mit klick auf "Choose" bestätigen. | +| | 5. Ein Dateiexplorer öffnet sich mit dem ausgewählt Pfad und enthält die Dateien aus dem Backup. | +|---------------------+--------------------------------| +| *Alternative Flow* | 1. Ein Backup aus der Liste auswählen. | +| | 2. Den Button "Restore" klicken. | +| | 3. Ein Pop-Up zur Auswahl eines Zielpfades erscheint. | +| | 4. Die Aktion mit klick auf "Cancel" abbrechen. | +|---------------------+--------------------------------| +| *Notes* | - | +|---------------------+--------------------------------| +| *UC History* | 1.0 Draft erstellt durch AZ | +|---------------------+--------------------------------| +| *Author* | A. Zweili | +|---------------------+--------------------------------| +| *Date* | 30.12.2018 | +|---------------------+--------------------------------| +#+LATEX:} + +#+caption: Aktivitätsdiagramm zum Wiederherstellen eines Backups +#+name: fig:activity_restore +[[file:pictures/activity_restore.pdf]] +#+attr_latex: :center :placement [H] + +#+LATEX:\newpage +**** Use Case 4.0 Einzelne Datei wiederherstellen + +#+LATEX:{\footnotesize +#+CAPTION: Use Case 4.0 Einzelne Datei wiederherstellen +#+ATTR_LATEX::environment longtable :align |>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}| :placement [H] +#+NAME: tab:uc_file +|---------------------+--------------------------------| +| | <30> | +| *Identifier + Name* | 4.0 Einzelne Datei wiederherstellen | +|---------------------+--------------------------------| +| *Description* | Das spezifische Wiederherstellen von einer oder mehreren Dateien. | +|---------------------+--------------------------------| +| *Actors* | User | +|---------------------+--------------------------------| +| *Status* | Freigegeben | +|---------------------+--------------------------------| +| *Includes* | Use Case 4.1 | +|---------------------+--------------------------------| +| *Trigger* | Daten sollen wieder hergestellt werden. | +|---------------------+--------------------------------| +| *Preconditions* | Use Case 1.0 wurde ausgeführt. | +|---------------------+--------------------------------| +| *Postconditions* | - | +|---------------------+--------------------------------| +| *Normal Flow* | 1. Ein Backup aus der Liste auswählen. | +| | 2. Auf den Button "Mount" klicken. | +| | 3. Use Case 4.1 wird ausgeführt. | +| | 4. Ein Dateiexplorer öffnet sich mit dem ausgewählt Pfad und enthält die Dateien aus dem Backup. | +| | 5. Wird die Applikation geschlossen wird das Backup ausgehängt. | +|---------------------+--------------------------------| +| *Alternative Flow* | - | +|---------------------+--------------------------------| +| *Notes* | - | +|---------------------+--------------------------------| +| *UC History* | 1.0 Draft erstellt durch AZ | +|---------------------+--------------------------------| +| *Author* | A. Zweili | +|---------------------+--------------------------------| +| *Date* | 30.12.2018 | +|---------------------+--------------------------------| +#+LATEX:} + +#+caption: Aktivitätsdiagramm für das spezifische Wiederherstellen einer Datei +#+name: fig:activity_mount +[[file:pictures/activity_mount.pdf]] +#+attr_latex: :center :placement [H] + +#+LATEX:\newpage +**** Use Case 4.1 Backup mounten + +#+LATEX:{\footnotesize +#+CAPTION: Use Case 4.1 Backup mounten +#+ATTR_LATEX::environment longtable :align |>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}| :placement [H] +#+NAME: tab:uc_mount +|---------------------+--------------------------------| +| | <30> | +| *Identifier + Name* | 4.1 Backup mounten | +|---------------------+--------------------------------| +| *Description* | Ein Backup wird als FUSE gemountet. | +|---------------------+--------------------------------| +| *Actors* | Borg GUI, gls:borg | +|---------------------+--------------------------------| +| *Status* | Freigegeben | +|---------------------+--------------------------------| +| *Includes* | - | +|---------------------+--------------------------------| +| *Trigger* | Das Borg GUI gibt an gls:borg den Input zum mounten weiter. | +|---------------------+--------------------------------| +| *Preconditions* | Use Case 1.0 wurde ausgeführt. | +|---------------------+--------------------------------| +| *Postconditions* | Das Backup wurde gemountet. | +|---------------------+--------------------------------| +| *Normal Flow* | 1. Borg GUI sammelt die Backup ID in Use Case 4.0. | +| | 2. Borg GUI übergibt die Backup ID an gls:borg zusammen mit einem Zielpfad. | +| | 3. gls:borg hängt das Backup als FUSE Laufwerk am Zielpfad ein. | +| | 4. gls:borg meldet Erfolg an Borg GUI. | +|---------------------+--------------------------------| +| *Alternative Flow* | 1. Borg GUI sammelt die Backup ID in Use Case 4.0. | +| | 2. Borg GUI übergibt die Backup ID an gls:borg zusammen mit einem Zielpfad. | +| | 3. gls:borg hängt das Backup als FUSE Laufwerk am Zielpfad ein. | +| | 4. gls:borg meldet einen Fehler an Borg GUI. | +|---------------------+--------------------------------| +| *Notes* | - | +|---------------------+--------------------------------| +| *UC History* | 1.0 Draft erstellt durch AZ | +|---------------------+--------------------------------| +| *Author* | A. Zweili | +|---------------------+--------------------------------| +| *Date* | 30.12.2018 | +|---------------------+--------------------------------| +#+LATEX:} + +#+LATEX:\newpage +**** Use Case 5.0 Konfiguration ändern + +#+LATEX:{\footnotesize +#+CAPTION: Use Case 5.0 Konfiguration ändern +#+ATTR_LATEX::environment longtable :align |>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}| :placement [H] +#+NAME: tab:uc_config +|---------------------+--------------------------------| +| | <30> | +| *Identifier + Name* | 5.0 Konfiguration ändern | +|---------------------+--------------------------------| +| *Description* | Das Verändern und Speichern der Konfiguration der Applikation. | +|---------------------+--------------------------------| +| *Actors* | User | +|---------------------+--------------------------------| +| *Status* | Freigegeben | +|---------------------+--------------------------------| +| *Includes* | - | +|---------------------+--------------------------------| +| *Trigger* | Ein User möchte die Einstellungen der Applikation anpassen. | +|---------------------+--------------------------------| +| *Preconditions* | Applikation gestartet. | +|---------------------+--------------------------------| +| *Postconditions* | - | +|---------------------+--------------------------------| +| *Normal Flow* | 1. Auf den Button "Settings" klicken. | +| | 2. Ein neues Fenster mit den Einstellungen öffnet sich. | +| | 3. Der Benutzer ändert mindestens eine Einstellung. | +| | 4. Der Button "OK" wird angeklickt. | +| | 5. Die Konfiguration wird in die Konfigurationsdatei geschrieben und in der Applikation geladen. | +|---------------------+--------------------------------| +| *Alternative Flow* | 1. Auf den Button "Settings" klicken. | +| | 2. Ein neues Fenster mit den Einstellungen öffnet sich. | +| | 3. Der Benutzer kann Einstellungen ändern. | +| | 4. Der Button "Cancel" wird angeklickt. | +| | 5. Jeglich Änderungen werden verworfen und die Konfigurationsdatei bleibt im aktuellen Zustand. | +|---------------------+--------------------------------| +| *Notes* | - | +|---------------------+--------------------------------| +| *UC History* | 1.0 Draft erstellt durch AZ | +|---------------------+--------------------------------| +| *Author* | A. Zweili | +|---------------------+--------------------------------| +| *Date* | 30.12.2018 | +|---------------------+--------------------------------| +#+LATEX:} + +#+caption: Aktivitätsdiagramm zum Ändern von Einstellungen +#+name: fig:activity_settings +[[file:pictures/activity_settings.pdf]] +#+attr_latex: :center :placement [H] + +#+LATEX:\newpage +**** Use Case 6.0 automatische Backups aktivieren + +#+LATEX:{\footnotesize +#+CAPTION: Use Case 6.0 automatische Backups aktivieren +#+ATTR_LATEX::environment longtable :align |>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}| :placement [H] +#+NAME: tab:uc_automatic +|---------------------+--------------------------------| +| | <30> | +| *Identifier + Name* | 6.0 automatische Backups aktivieren | +|---------------------+--------------------------------| +| *Description* | Ein Systemdienst wird hinterlegt zum ausführen automatischer Backups. | +|---------------------+--------------------------------| +| *Actors* | User | +|---------------------+--------------------------------| +| *Status* | Freigegeben | +|---------------------+--------------------------------| +| *Includes* | - | +|---------------------+--------------------------------| +| *Trigger* | Ein User möchte automatisierte Backups haben. | +|---------------------+--------------------------------| +| *Preconditions* | Eine funktionierende Konfiguration muss hinterlegt sein. | +| | Applikation gestartet. | +|---------------------+--------------------------------| +| *Postconditions* | Ein Systemdienst wurde erstellt welcher jeden Tag ein Backup macht. | +|---------------------+--------------------------------| +| *Normal Flow* | 1. Auf den Button "Settings" klicken. | +| | 2. Bei der Option "Automatic Backups" den Hacken setzen. | +| | 3. Die Settings mit klick auf "Ok" schliessen und speichern. | +|---------------------+--------------------------------| +| *Alternative Flow* | 1. Auf den Button "Settings" klicken. | +| | 2. Bei der Option "Automatic Backups" den Hacken setzen. | +| | 3. Die Aktion mit klick auf "Cancel" abrechen. | +|---------------------+--------------------------------| +| *Notes* | - | +|---------------------+--------------------------------| +| *UC History* | 1.0 Draft erstellt durch AZ | +|---------------------+--------------------------------| +| *Author* | A. Zweili | +|---------------------+--------------------------------| +| *Date* | 30.12.2018 | +|---------------------+--------------------------------| +#+LATEX:} + +#+caption: Aktivitätsdiagramm zum Aktivieren von automatischen Backups +#+name: fig:activity_automatic +[[file:pictures/activity_automatic.pdf]] +#+attr_latex: :center :placement [H] + +#+LATEX:\newpage * TODO Konzept ** Varianten @@ -1027,10 +1420,7 @@ Lernfaktor bei Electron wohl nicht so gross wie etwa bei Qt oder Gtk. Aufgrund der erreichten Punktzahl, Tabelle:([[tab:result]]), bei den vorhergehenden Variantenbewertungen, wurde entschieden für das Backend der Applikation auf -Python zu setzen und fürs Frontend Qt zu benutzen. Ein kleiner Test zeigt auch -das die Kombination ohne grosse Probleme und Anpassung auf Windows, Linux und -OS X läuft, Abbildung:([[fig:hello_world]]). - +Python zu setzen und fürs Frontend Qt zu benutzen. #+CAPTION: Variantenbewertung Ergebnis #+ATTR_LATEX: :align |>{\columncolor[HTML]{EFEFEF}}p{4.5cm}|r| :placement [H] #+NAME: tab:result @@ -1047,11 +1437,6 @@ OS X läuft, Abbildung:([[fig:hello_world]]). | Electron | 275 | |------------------------------------+-----------------------------------------------| -#+caption: Python und Qt Applikation unter Windows (links), Linux (rechts) und OS X (unten) -#+name: fig:hello_world -[[file:pictures/hello_world.png]] -#+attr_latex: :center - ** Vorkenntnisse Die benötigten Vorkenntnisse wurden in den vorangegangenen Semestern erarbeitet @@ -1059,23 +1444,6 @@ 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#. - -** TODO User Stories - -PLACEHOLDER - -** TODO Use Cases - -PLACEHOLDER - -**** TODO Anwendungsfalldiagramm - -PLACEHOLDER - -**** TODO Use Cases Detailbeschreibung - -PLACEHOLDER - ** TODO Testing PLACEHOLDER @@ -1085,6 +1453,19 @@ PLACEHOLDER PLACEHOLDER * TODO Realisierung +** TODO Cross-plattform Kompatibilität + +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:([[fig:hello_world]]) zu sehen +ist. + +#+caption: Python und Qt Applikation unter Windows (links), Linux (rechts) und OS X (unten) +#+name: fig:hello_world +[[file:pictures/hello_world.png]] +#+attr_latex: :center + ** TODO Benutzerinterface **** TODO Inspiration diff --git a/projektdokumentation/projektdokumentation.tex b/projektdokumentation/projektdokumentation.tex index 3749b68..9c72766 100644 --- a/projektdokumentation/projektdokumentation.tex +++ b/projektdokumentation/projektdokumentation.tex @@ -1,31 +1,31 @@ \section{Über dieses Dokument} -\label{sec:org8394a2a} +\label{sec:org1c713c6} Im nachfolgenden Abschnitt finden Sie allgemeine Informationen zu diesem Dokument. \subsection{Beschreibung} -\label{sec:org7e61b0f} +\label{sec:org41c3a76} 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:org5e0fb2f} +\label{sec:org9faa4d2} Zweck dieses Dokumentes ist die vollständige und nachvollziehbare Dokumentation zur Diplomarbeit von Andreas Zweili. \subsection{Aufbau} -\label{sec:org9632371} +\label{sec:org70fef26} Alle Inhalte sind chronologisch sortiert, vom ältesten zum jüngsten Ereignis, und nach Kapiteln getrennt. \subsection{Lizenz} -\label{sec:org6f468a4} +\label{sec:org287d965} 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:org71a0502} +\label{sec:org3f1e16c} \subsection{Vision} -\label{sec:orgb55d3a4} +\label{sec:org23dc745} 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:orgb9a4fdf} +\label{sec:org620db46} \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:orgb764186} +\label{sec:org618e1a1} 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:org2d2a3a5} +\label{sec:org21a0056} 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:org0d17f53} +\caption{\label{tab:org0d40904} Projektziele} \\ \end{longtable} \newpage \subsection{Projektabgrenzung} -\label{sec:org880aef4} +\label{sec:orgf37414a} 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:org76deb14}), zu sehen ist werden die Aktion effektiv +ist. Wie in, Abbildung:(\ref{fig:org1c947a6}), 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:org76deb14} +\caption{\label{fig:org1c947a6} Kontextdiagramm des Borg GUI} \end{figure} \subsection{Projektmethode} -\label{sec:org80b7496} +\label{sec:org1941b58} 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,7 +237,13 @@ Somit macht das iterative Vorgehen der Wassfall-methode für dieses Projekt am meisten Sinn. \subsection{Konfigurationsmanagement} -\label{sec:org4265bb4} +\label{sec:orgfa81dea} + +In der nachfolgenden Sektion wird definiert wie die Software und Dokumentation +versioniert wird und welche allgemeinen Werkzeuge eingesetzt werden. + +\subsubsection{Versionskontrolle} +\label{sec:org917940b} Die komplette Dokumentation, der Quellcode der Applikation sowie jeglich zusäzliche Dokumente wie etwa die Zeitplanung werden mittels der Software Git @@ -263,8 +269,67 @@ repräsentiert. Dies gilt auch für das Repository der Dokumentation. Der Master Branch der Dokumentation sollte maximal mit zwei Befehlen \texttt{make clean} und \texttt{make} "`kompilierbar "' sein. +Als Software für die Versionskontrolle wurde Git \footcite{git} aus folgenden +Gründen ausgewählt: + +\begin{itemize} +\item Ist der de facto Standard bei Versionskontrollsoftware +\item Läuft auf allen gängigen Betriebssystemen +\item Es gäbe gratis Services die man nutzen könnte (Github, Gitlab) +\item Man kann offline arbeiten und Commits erstellen +\item Der Author hat bereits einen eigenen Git Server zur Verfügung +\item Der Author ist bereits mit Git aus vorhergehenden Projekten vertraut, +dadurch muss man keine Ressourcen aufwenden eine neue Software zu lernen. +Zusätzlich hat sich Git in den vorhergehenden Projekten als robuste +und schnelle Software erwiesen. +\item Git ist \gls{libre} unter der \gls{gpl} v2. +\end{itemize} + +\subsubsection{Editor} +\label{sec:orga55c946} + +Sowohl bei der Dokumentation wie auch bei der Programmierung wurde +hauptsächlich der Editor GNU Emacs \footcite{emacs} verwendet. GNU Emacs ist mit +32 Jahren (obwohl seine Wurzeln bis ins Jahre 1976 zurückgehen) wohl eines der +ältesten noch aktiven Software Projekte. Emacs ist \gls{libre} unter der +\gls{gpl} v3. Emacs wurde gewählt da es ein schneller, schlanker und sehr +flexibler Texteditior ist. Von normaler Textmanipulation über Taskmanagement +und Emails schreiben ist alles möglich. + +\subsubsection{Dokumentation} +\label{sec:org71a0a15} + +Diese Dokumentation wurde in Org-mode \footcite{orgmode}, einer Erweiterung für +den Text Editor Emacs, geschrieben. Die Syntax erinnert an Markdown und +Org-mode bietet einem eine vielzahl an Hilfen dafür inklusive dem erstellen von +Tabellen und Spreadsheet Funktionen. Für finalle Version des Dokuments kann +Org-mode die ursprünglich Textdatei über \LaTeX{} in ein PDF exportieren. + +\LaTeX{} \footcite{latex} ist eine Software, welche einem die Benutzung des +Textsatzsystems TeXs vereinfacht. \LaTeX{} wurde gegenüber einem "`What You See Is +What You Get"' (z.Bsp. MS. Word), Editor gewählt weil es einem mit seiner Markup +Sprache erlaubt das Dokument in Text Dateien zu erstellen, gerade für +Programmiere ist dies eine sehr interessante Lösung. Dadurch, dass \LaTeX{} auch +nur aus reinen Textdateien besteht, kann man die Dokumente auch ohne weiteres +in die Versionskontrollsoftware einchecken und die Entwicklung im Log +zurückverfolgen. \LaTeX{} ist \gls{libre} unter der \LaTeX{} Project Public +License. + +Die Grafiken in diesem Dokument wurden hauptsächlich mit dem Vektor Grafik +Editor Inkscape \footcite{inkscape} erstellt. Inkscape ist \gls{libre} unter der +GNU Public License v3. + +Die Diagramme wurden mit Draw.io \footcite{draw} erstellt. Draw.io ist \gls{libre} +unter Apache Lizenz Version 2.0 \footcite{apache} und kann sowohl als Desktop +Applikation wie auch als Webanwendung genutzt werden. + +Beim Design der Arbeit wurden soweit als möglich die typgraphischen Regeln aus +dem Buch "`Practical Typography"' von Matthew Butterick \footcite{typo} angewandt. +Bei den Diagrammen wurden aussschliesslich Farben aus der von Google +entwickelten Design Sprache "`Material"'\footcite{material} eingesetzt. + \subsection{Zeitplanung} -\label{sec:orgb1efd39} +\label{sec:org166c579} 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 @@ -282,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:orgdc0083e} +\label{sec:orgb38b852} Das Controlling wird verwendet um zu kontrollieren das die eigentliche Planung mit dem effektiv geleisteten Aufwand respektive den effektiv verwendeten @@ -292,7 +357,7 @@ werden. \newpage \begin{landscape} \subsubsection{Zeit} -\label{sec:org40b0db6} +\label{sec:org0e78946} \begin{longtable}{|p{3cm}|p{5cm}|p{3cm}|p{7cm}|} \hline @@ -313,14 +378,14 @@ werden. \hline & \textbf{Gesamter Aufwand} & & \\ \hline -\caption{\label{tab:org666fef9} +\caption{\label{tab:org5852a93} Zeitcontrolling} \\ \end{longtable} \newpage \subsubsection{Ressourcen} -\label{sec:orgc2ff234} +\label{sec:org37ceb80} Folgende Ressourcen werden wärend der Arbeit benötigt: \begin{longtable}{|p{5cm}|p{3cm}|p{3cm}|p{7cm}|} @@ -346,14 +411,14 @@ Korrekturleser & 3 & & \\ iPad & 1 & 1 & \\ Notebook & 1 & 1 & \\ \hline -\caption{\label{tab:orgb4a7b96} +\caption{\label{tab:orgd6e13a4} Ressourcen} \\ \end{longtable} \end{landscape} \subsubsection{Kosten} -\label{sec:org3b0553f} +\label{sec:org0dbd731} 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 @@ -379,25 +444,25 @@ Meeting \#3 & 5 & 300\\ \textbf{Total} & 320 & 19200\\ \hline \end{tabular} -\caption{\label{tab:org2678f20} +\caption{\label{tab:orga39f1c0} Kostenrechnung} \end{table} \subsection{Projektrisiken} -\label{sec:org2b56deb} +\label{sec:org77d2db2} 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:orgfec4900} +\label{sec:org1b0ce60} -In der Tabelle: (\ref{tab:orgc2b848f}), sind die Risiken des Projektes +In der Tabelle: (\ref{tab:org2372ddb}), sind die Risiken des Projektes gemeinsam mit ihren Gegenmassnahmen aufgelistet. Jedes Risiko wurde -entsprechend der Tabelle: (\ref{tab:org463c5d5}) nach der Wahrscheinlichkeit -des Eintreffens bewertet und entsprechend der Tabelle: (\ref{tab:org7556e15}) nach +entsprechend der Tabelle: (\ref{tab:org63dd697}) nach der Wahrscheinlichkeit +des Eintreffens bewertet und entsprechend der Tabelle: (\ref{tab:orgb488f77}) nach seiner Auswirkung bewertet. \begin{longtable}{|p{0.45\textwidth}|p{0.45\textwidth}|} @@ -430,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:orge163d32} +\caption{\label{tab:org605490a} Projektrisiken} \\ \end{longtable} \section{Analyse} -\label{sec:orgd2e8df3} +\label{sec:orgfe2d3fe} \subsection{Umweltanalyse} -\label{sec:org65077db} +\label{sec:org1ea0294} Die Projektumwelt-Analyse ist eine Methode, die Beziehungen, Erwartungshaltungen und Einflüsse auf das Projekt durch interne und @@ -446,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:org092919f}) wurden die Anforderungen und Wünsche +Tabelle:(\ref{tab:org67255c8}) 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:org1ce1a4e}) grafisch dargestellt. +Abbildung:(\ref{fig:orgd829ec8}) 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 @@ -463,7 +528,7 @@ Verfügung gestellt. \begin{figure}[htbp] \centering \includegraphics[width=.9\textwidth]{pictures/stakeholder_diagramm.pdf} -\caption{\label{fig:org1ce1a4e} +\caption{\label{fig:orgd829ec8} Stakeholder Diagramm} \end{figure} @@ -490,14 +555,14 @@ Stakeholder Diagramm} & & & - Anerkennung im fachlichen Umfeld & hoch\\ \hline \end{tabular} -\caption{\label{tab:org092919f} +\caption{\label{tab:org67255c8} Umwelt-Analyse} \end{table} \end{landscape} \subsection{Risiko-Analyse} -\label{sec:org659e913} +\label{sec:org9e6f19e} 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 @@ -505,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:org463c5d5}) nach der Wahrscheinlichkeit des Eintreffens -bewertet und entsprechend der Tabelle: (\ref{tab:org7556e15}) nach seiner Auswirkung +Tabelle: (\ref{tab:org63dd697}) nach der Wahrscheinlichkeit des Eintreffens +bewertet und entsprechend der Tabelle: (\ref{tab:orgb488f77}) nach seiner Auswirkung im Bezug auf die Nützlichkeit der gemachten Backups. -In der Tabelle: (\ref{tab:orgc2b848f}) sind dabei die Risiken für das -Szenario aufgelistet und nummeriert. In der, Abbildung:(\ref{fig:org8251252}), ist die +In der Tabelle: (\ref{tab:org2372ddb}) sind dabei die Risiken für das +Szenario aufgelistet und nummeriert. In der, Abbildung:(\ref{fig:orgcef13e5}), ist die Bewertung des Ist-Risikos grafisch dargestellt und in der, -Abbildung:(\ref{fig:org38b227a}), ist das Soll-Risiko welches mit dieser Arbeit +Abbildung:(\ref{fig:org9702b8a}), 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. @@ -529,7 +594,7 @@ Arbeit reduzieren kann. 2 = mittel & Mässig wahrscheinlich, 20-50\%\\ 3 = hoch & Hohe Wahrscheinlichkeit > 50\%\\ \end{tabular} -\caption{\label{tab:org463c5d5} +\caption{\label{tab:org63dd697} Risikobewertung Wahrscheinlichkeit} \end{table} @@ -543,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:org7556e15} +\caption{\label{tab:orgb488f77} Risikobewertung Auswirkung} \end{table} @@ -565,7 +630,7 @@ Risikobewertung Auswirkung} 5. & Der Anwender vergisst die Backups zu machen.\\ \hline \end{tabular} -\caption{\label{tab:orgc2b848f} +\caption{\label{tab:org2372ddb} Risikobeschreibung} \end{table} @@ -573,40 +638,543 @@ Risikobeschreibung} \begin{figure}[H] \centering \includegraphics[width=9cm]{pictures/istrisiko.pdf} -\caption{\label{fig:org8251252} +\caption{\label{fig:orgcef13e5} Grafische Darstellung der Ist-Risikoanalyse} \end{figure} \begin{figure}[H] \centering \includegraphics[width=9cm]{pictures/sollrisiko.pdf} -\caption{\label{fig:org38b227a} +\caption{\label{fig:org9702b8a} Grafische Darstellung der Soll-Risikoanalyse} \end{figure} \newpage \subsection{SWOT-Analyse} -\label{sec:org78e590a} +\label{sec:orgfb71849} 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:org8d92421}) zu sehen. +Abbildung:(\ref{fig:org6eab323}) zu sehen. \begin{figure}[htbp] \centering \includegraphics[width=.9\linewidth]{pictures/swot_analyse.pdf} -\caption{\label{fig:org8d92421} +\caption{\label{fig:org6eab323} SWOT Analyse des Projektes} \end{figure} +\subsection{Anforderungskatalog} +\label{sec:org1e5b49a} + +Der Anforderungskatalog entspricht 1:1 den Zielen welche in der Tabelle +\ref{tab:org0d40904} definiert wurden. + +\subsection{Use Cases} +\label{sec:org4ecc491} + +Ein Use Case sammelt alle möglichen Szenarien, die eintreten können, +wenn ein Akteur versucht, mit Hilfe des betrachteten Systems ein +bestimmtes Ziel zu erreichen. Dabei beschreibt er, was beim Versuch der +Zielerreichung passieren kann. Je nach Ablauf kann auch ein Fehlschlag +ein Ergebnis eines Anwendungsfalls sein (e.g. falsches Passwort beim +Login). Dabei wird die technische Lösung nicht konkret beschrieben. +Die Detailstufe kann dabei sehr unterschiedlich sein.\footcite{usecase} + +\subsubsection{Anwendungsfalldiagramm} +\label{sec:org8e2002d} + +"`Ein Anwendungsfalldiagramm \ldots{} ist eine der 14 Diagrammarten der +Unified Modelling Language (UML), einer Sprache für die Modellierung +der Strukturen und des Verhaltens von Software- und anderen Systemen. +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:org8b78379}) zu sehen. + +\newpage +\begin{landscape} +\begin{figure}[htbp] +\centering +\includegraphics[width=.9\linewidth]{pictures/use_case.pdf} +\caption{\label{fig:org8b78379} +Anwendungsfalldiagramm} +\end{figure} +\end{landscape} +\newpage + +\subsubsection{Use Cases Detailbeschreibung} +\label{sec:org48880e8} + +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:orgde96434}, \ref{tab:orge3c1d3b}, +\ref{tab:org2a8ddd5}, \ref{tab:org1c231e0}, \ref{tab:orgde3d0d8}, \ref{tab:orgef141cd}, \ref{tab:org12b8b07}) +wurden dem Anwendungsfalldiagramm, Abbildung:(\ref{fig:org8b78379}), entnommen und +zusätzlich noch um jeweils ein Aktivitätsdiagramm , Abbildungen: +(\ref{fig:org006ee1d}, \ref{fig:orga5f7a56}, \ref{fig:orga777cc2}, +\ref{fig:org8154a61}, \ref{fig:orgf328e58}, \ref{fig:org36aae51}), 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:org5587dbc} + +{\footnotesize +\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|} +\hline +\textbf{Identifier + Name} & 1.0 Backup erstellen\\ +\hline +\endfirsthead +\multicolumn{2}{l}{Fortsetzung von vorheriger Seite} \\ +\hline + +\textbf{Identifier + Name} & 1.0 Backup erstellen \\ + +\hline +\endhead +\hline\multicolumn{2}{r}{Fortsetzung nächste Seite} \\ +\endfoot +\endlastfoot +\hline +\textbf{Description} & Das erstellen einer Datensicherung durch \gls{borg} anstossen.\\ +\hline +\textbf{Actors} & Benutzer\\ +\hline +\textbf{Status} & Freigegeben\\ +\hline +\textbf{Includes} & -\\ +\hline +\textbf{Trigger} & User möchte ein Backup erstellen.\\ +\hline +\textbf{Preconditions} & Die Applikation wurde gestartet.\\ +\hline +\textbf{Postconditions} & Das erstellte Backup wird angezeigt.\\ +\hline +\textbf{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.\\ +\hline +\textbf{Alternative Flow} & -\\ +\hline +\textbf{Notes} & -\\ +\hline +\textbf{UC History} & 1.0 Draft erstellt durch AZ\\ +\hline +\textbf{Author} & A. Zweili\\ +\hline +\textbf{Date} & 30.12.2018\\ +\hline +\caption{\label{tab:orgde96434} +Use Case 1.0 Backup erstellen} +\\ +\end{longtable} +} +\begin{figure}[htbp] +\centering +\includegraphics[width=.9\linewidth]{pictures/activity_backup.pdf} +\caption{\label{fig:org006ee1d} +Aktivitätsdiagramm zum Erstellen eines Backups} +\end{figure} +\newpage +\paragraph{Use Case 2.0 Backup löschen} +\label{sec:org878277c} + +{\footnotesize +\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|} +\hline +\textbf{Identifier + Name} & 2.0 Backup löschen\\ +\hline +\endfirsthead +\multicolumn{2}{l}{Fortsetzung von vorheriger Seite} \\ +\hline + +\textbf{Identifier + Name} & 2.0 Backup löschen \\ + +\hline +\endhead +\hline\multicolumn{2}{r}{Fortsetzung nächste Seite} \\ +\endfoot +\endlastfoot +\hline +\textbf{Description} & Ein zuvor erstelltes Backup wird gelöscht.\\ +\hline +\textbf{Actors} & Benutzer\\ +\hline +\textbf{Status} & Freigegeben\\ +\hline +\textbf{Includes} & -\\ +\hline +\textbf{Trigger} & Ein User möchte ein bestehendes Backup löschen.\\ +\hline +\textbf{Preconditions} & Use Case 1.0 ausgeführt.\\ +\hline +\textbf{Postconditions} & Das gelöschte Backup wird nicht mehr aufgelistet.\\ +\hline +\textbf{Normal Flow} & 1. Ein Backup aus der Liste auswählen.\\ + & 2. Den Button "`Delete anklicken"'.\\ + & 3. Ein Bestätigungsdialog erscheint.\\ + & 4. Im Dialog den "`Ok"' Button anklicken.\\ +\hline +\textbf{Alternative Flow} & 1. Ein Backup aus der Liste auswählen.\\ + & 2. Den Button "`Delete anklicken"'.\\ + & 3. Ein Bestätigungsdialog erscheint.\\ + & 4. Die Aktion mit einem Klick auf den "`Cancel"' Button abbrechen.\\ +\hline +\textbf{Notes} & -\\ +\hline +\textbf{UC History} & 1.0 Draft erstellt durch AZ\\ +\hline +\textbf{Author} & A. Zweili\\ +\hline +\textbf{Date} & 30.12.2018\\ +\hline +\caption{\label{tab:orge3c1d3b} +Use Case 2.0 Backup löschen} +\\ +\end{longtable} +} +\begin{figure}[htbp] +\centering +\includegraphics[width=.9\linewidth]{pictures/activity_delete.pdf} +\caption{\label{fig:orga5f7a56} +Aktivitätsdiagramm zum Löschen eines Backups} +\end{figure} +\newpage +\paragraph{Use Case 3.0 Backup wiederherstellen} +\label{sec:org94d371f} + +{\footnotesize +\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|} +\hline +\textbf{Identifier + Name} & 3.0 Backup wiederherstellen\\ +\hline +\endfirsthead +\multicolumn{2}{l}{Fortsetzung von vorheriger Seite} \\ +\hline + +\textbf{Identifier + Name} & 3.0 Backup wiederherstellen \\ + +\hline +\endhead +\hline\multicolumn{2}{r}{Fortsetzung nächste Seite} \\ +\endfoot +\endlastfoot +\hline +\textbf{Description} & Alle Dateien eines Backups wiederherstellen.\\ +\hline +\textbf{Actors} & User\\ +\hline +\textbf{Status} & Freigegeben\\ +\hline +\textbf{Includes} & -\\ +\hline +\textbf{Trigger} & Daten sollen wieder hergestellt werden.\\ +\hline +\textbf{Preconditions} & Use Case 1.0 wurde ausgeführt.\\ +\hline +\textbf{Postconditions} & Die Dateien aus dem Backup wurde im angegeben Pfad wiederhergestellt.\\ +\hline +\textbf{Normal Flow} & 1. Ein Backup aus der Liste auswählen.\\ + & 2. Den Button "`Restore"' klicken.\\ + & 3. Ein Pop-Up zur Auswahl eines Zielpfades erscheint.\\ + & 4. Den Zielpfad mit klick auf "`Choose"' bestätigen.\\ + & 5. Ein Dateiexplorer öffnet sich mit dem ausgewählt Pfad und enthält die Dateien aus dem Backup.\\ +\hline +\textbf{Alternative Flow} & 1. Ein Backup aus der Liste auswählen.\\ + & 2. Den Button "`Restore"' klicken.\\ + & 3. Ein Pop-Up zur Auswahl eines Zielpfades erscheint.\\ + & 4. Die Aktion mit klick auf "`Cancel"' abbrechen.\\ +\hline +\textbf{Notes} & -\\ +\hline +\textbf{UC History} & 1.0 Draft erstellt durch AZ\\ +\hline +\textbf{Author} & A. Zweili\\ +\hline +\textbf{Date} & 30.12.2018\\ +\hline +\caption{\label{tab:org2a8ddd5} +Use Case 3.0 Backup wiederherstellen} +\\ +\end{longtable} +} + +\begin{figure}[htbp] +\centering +\includegraphics[width=.9\linewidth]{pictures/activity_restore.pdf} +\caption{\label{fig:orga777cc2} +Aktivitätsdiagramm zum Wiederherstellen eines Backups} +\end{figure} +\newpage +\paragraph{Use Case 4.0 Einzelne Datei wiederherstellen} +\label{sec:org438e65d} + +{\footnotesize +\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|} +\hline +\textbf{Identifier + Name} & 4.0 Einzelne Datei wiederherstellen\\ +\hline +\endfirsthead +\multicolumn{2}{l}{Fortsetzung von vorheriger Seite} \\ +\hline + +\textbf{Identifier + Name} & 4.0 Einzelne Datei wiederherstellen \\ + +\hline +\endhead +\hline\multicolumn{2}{r}{Fortsetzung nächste Seite} \\ +\endfoot +\endlastfoot +\hline +\textbf{Description} & Das spezifische Wiederherstellen von einer oder mehreren Dateien.\\ +\hline +\textbf{Actors} & User\\ +\hline +\textbf{Status} & Freigegeben\\ +\hline +\textbf{Includes} & Use Case 4.1\\ +\hline +\textbf{Trigger} & Daten sollen wieder hergestellt werden.\\ +\hline +\textbf{Preconditions} & Use Case 1.0 wurde ausgeführt.\\ +\hline +\textbf{Postconditions} & -\\ +\hline +\textbf{Normal Flow} & 1. Ein Backup aus der Liste auswählen.\\ + & 2. Auf den Button "`Mount"' klicken.\\ + & 3. Use Case 4.1 wird ausgeführt.\\ + & 4. Ein Dateiexplorer öffnet sich mit dem ausgewählt Pfad und enthält die Dateien aus dem Backup.\\ + & 5. Wird die Applikation geschlossen wird das Backup ausgehängt.\\ +\hline +\textbf{Alternative Flow} & -\\ +\hline +\textbf{Notes} & -\\ +\hline +\textbf{UC History} & 1.0 Draft erstellt durch AZ\\ +\hline +\textbf{Author} & A. Zweili\\ +\hline +\textbf{Date} & 30.12.2018\\ +\hline +\caption{\label{tab:org1c231e0} +Use Case 4.0 Einzelne Datei wiederherstellen} +\\ +\end{longtable} +} + +\begin{figure}[htbp] +\centering +\includegraphics[width=.9\linewidth]{pictures/activity_mount.pdf} +\caption{\label{fig:org8154a61} +Aktivitätsdiagramm für das spezifische Wiederherstellen einer Datei} +\end{figure} +\newpage +\paragraph{Use Case 4.1 Backup mounten} +\label{sec:orgf1910a6} + +{\footnotesize +\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|} +\hline +\textbf{Identifier + Name} & 4.1 Backup mounten\\ +\hline +\endfirsthead +\multicolumn{2}{l}{Fortsetzung von vorheriger Seite} \\ +\hline + +\textbf{Identifier + Name} & 4.1 Backup mounten \\ + +\hline +\endhead +\hline\multicolumn{2}{r}{Fortsetzung nächste Seite} \\ +\endfoot +\endlastfoot +\hline +\textbf{Description} & Ein Backup wird als FUSE gemountet.\\ +\hline +\textbf{Actors} & Borg GUI, \gls{borg}\\ +\hline +\textbf{Status} & Freigegeben\\ +\hline +\textbf{Includes} & -\\ +\hline +\textbf{Trigger} & Das Borg GUI gibt an \gls{borg} den Input zum mounten weiter.\\ +\hline +\textbf{Preconditions} & Use Case 1.0 wurde ausgeführt.\\ +\hline +\textbf{Postconditions} & Das Backup wurde gemountet.\\ +\hline +\textbf{Normal Flow} & 1. Borg GUI sammelt die Backup ID in Use Case 4.0.\\ + & 2. Borg GUI übergibt die Backup ID an \gls{borg} zusammen mit einem Zielpfad.\\ + & 3. \gls{borg} hängt das Backup als FUSE Laufwerk am Zielpfad ein.\\ + & 4. \gls{borg} meldet Erfolg an Borg GUI.\\ +\hline +\textbf{Alternative Flow} & 1. Borg GUI sammelt die Backup ID in Use Case 4.0.\\ + & 2. Borg GUI übergibt die Backup ID an \gls{borg} zusammen mit einem Zielpfad.\\ + & 3. \gls{borg} hängt das Backup als FUSE Laufwerk am Zielpfad ein.\\ + & 4. \gls{borg} meldet einen Fehler an Borg GUI.\\ +\hline +\textbf{Notes} & -\\ +\hline +\textbf{UC History} & 1.0 Draft erstellt durch AZ\\ +\hline +\textbf{Author} & A. Zweili\\ +\hline +\textbf{Date} & 30.12.2018\\ +\hline +\caption{\label{tab:orgde3d0d8} +Use Case 4.1 Backup mounten} +\\ +\end{longtable} +} + +\newpage +\paragraph{Use Case 5.0 Konfiguration ändern} +\label{sec:orgca84faa} + +{\footnotesize +\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|} +\hline +\textbf{Identifier + Name} & 5.0 Konfiguration ändern\\ +\hline +\endfirsthead +\multicolumn{2}{l}{Fortsetzung von vorheriger Seite} \\ +\hline + +\textbf{Identifier + Name} & 5.0 Konfiguration ändern \\ + +\hline +\endhead +\hline\multicolumn{2}{r}{Fortsetzung nächste Seite} \\ +\endfoot +\endlastfoot +\hline +\textbf{Description} & Das Verändern und Speichern der Konfiguration der Applikation.\\ +\hline +\textbf{Actors} & User\\ +\hline +\textbf{Status} & Freigegeben\\ +\hline +\textbf{Includes} & -\\ +\hline +\textbf{Trigger} & Ein User möchte die Einstellungen der Applikation anpassen.\\ +\hline +\textbf{Preconditions} & Applikation gestartet.\\ +\hline +\textbf{Postconditions} & -\\ +\hline +\textbf{Normal Flow} & 1. Auf den Button "`Settings"' klicken.\\ + & 2. Ein neues Fenster mit den Einstellungen öffnet sich.\\ + & 3. Der Benutzer ändert mindestens eine Einstellung.\\ + & 4. Der Button "`OK"' wird angeklickt.\\ + & 5. Die Konfiguration wird in die Konfigurationsdatei geschrieben und in der Applikation geladen.\\ +\hline +\textbf{Alternative Flow} & 1. Auf den Button "`Settings"' klicken.\\ + & 2. Ein neues Fenster mit den Einstellungen öffnet sich.\\ + & 3. Der Benutzer kann Einstellungen ändern.\\ + & 4. Der Button "`Cancel"' wird angeklickt.\\ + & 5. Jeglich Änderungen werden verworfen und die Konfigurationsdatei bleibt im aktuellen Zustand.\\ +\hline +\textbf{Notes} & -\\ +\hline +\textbf{UC History} & 1.0 Draft erstellt durch AZ\\ +\hline +\textbf{Author} & A. Zweili\\ +\hline +\textbf{Date} & 30.12.2018\\ +\hline +\caption{\label{tab:orgef141cd} +Use Case 5.0 Konfiguration ändern} +\\ +\end{longtable} +} + +\begin{figure}[htbp] +\centering +\includegraphics[width=.9\linewidth]{pictures/activity_settings.pdf} +\caption{\label{fig:orgf328e58} +Aktivitätsdiagramm zum Ändern von Einstellungen} +\end{figure} +\newpage +\paragraph{Use Case 6.0 automatische Backups aktivieren} +\label{sec:org7fb4cb7} + +{\footnotesize +\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.235\textwidth}|p{.7\textwidth}|} +\hline +\textbf{Identifier + Name} & 6.0 automatische Backups aktivieren\\ +\hline +\endfirsthead +\multicolumn{2}{l}{Fortsetzung von vorheriger Seite} \\ +\hline + +\textbf{Identifier + Name} & 6.0 automatische Backups aktivieren \\ + +\hline +\endhead +\hline\multicolumn{2}{r}{Fortsetzung nächste Seite} \\ +\endfoot +\endlastfoot +\hline +\textbf{Description} & Ein Systemdienst wird hinterlegt zum ausführen automatischer Backups.\\ +\hline +\textbf{Actors} & User\\ +\hline +\textbf{Status} & Freigegeben\\ +\hline +\textbf{Includes} & -\\ +\hline +\textbf{Trigger} & Ein User möchte automatisierte Backups haben.\\ +\hline +\textbf{Preconditions} & Eine funktionierende Konfiguration muss hinterlegt sein.\\ + & Applikation gestartet.\\ +\hline +\textbf{Postconditions} & Ein Systemdienst wurde erstellt welcher jeden Tag ein Backup macht.\\ +\hline +\textbf{Normal Flow} & 1. Auf den Button "`Settings"' klicken.\\ + & 2. Bei der Option "`Automatic Backups"' den Hacken setzen.\\ + & 3. Die Settings mit klick auf "`Ok"' schliessen und speichern.\\ +\hline +\textbf{Alternative Flow} & 1. Auf den Button "`Settings"' klicken.\\ + & 2. Bei der Option "`Automatic Backups"' den Hacken setzen.\\ + & 3. Die Aktion mit klick auf "`Cancel"' abrechen.\\ +\hline +\textbf{Notes} & -\\ +\hline +\textbf{UC History} & 1.0 Draft erstellt durch AZ\\ +\hline +\textbf{Author} & A. Zweili\\ +\hline +\textbf{Date} & 30.12.2018\\ +\hline +\caption{\label{tab:org12b8b07} +Use Case 6.0 automatische Backups aktivieren} +\\ +\end{longtable} +} + +\begin{figure}[htbp] +\centering +\includegraphics[width=.9\linewidth]{pictures/activity_automatic.pdf} +\caption{\label{fig:org36aae51} +Aktivitätsdiagramm zum Aktivieren von automatischen Backups} +\end{figure} +\newpage \section{Konzept} -\label{sec:org34777b1} +\label{sec:org930dc93} \subsection{Varianten} -\label{sec:orgee7897b} +\label{sec:orga207ed8} 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 @@ -618,7 +1186,7 @@ Daraus ergeben sich die in diesem Kapitel aufgeführten Möglichkeiten für das Projekt. \subsubsection{Bewertung} -\label{sec:orgd04a5af} +\label{sec:orgd50efe0} Die Bewertungspunkte setzen sich einerseits aus den Projektzielen anderseits aus für das Projekt sinnvollen Punkten zusammen. Dadurch ergeben sich dann die @@ -637,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:org0d17f53}). +der Tabelle Projektziele (\ref{tab:org0d40904}). \begin{table}[htbp] \centering @@ -659,20 +1227,20 @@ der Tabelle Projektziele (\ref{tab:org0d17f53}). \textbf{Total} & & & & 415\\ \hline \end{tabular} -\caption{\label{tab:org3882be1} +\caption{\label{tab:org9efa6c0} Muster Bewertungstabelle} \end{table} \subsubsection{Backend} -\label{sec:orgc7043d0} +\label{sec:org884d46a} -Fürs Backend bieten sich die folgende drei Sprachen an: \hyperref[sec:org87cfed6]{C\#}, \hyperref[sec:org8faf346]{C++}, \hyperref[sec:org7ab72b4]{Python}. +Fürs Backend bieten sich die folgende drei Sprachen an: \hyperref[sec:org94ad6ef]{C\#}, \hyperref[sec:org2208a22]{C++}, \hyperref[sec:org8426979]{Python}. Dies vorallem weil alle Allrounder Sprachen sind und sich gut für Desktop Applikationen eignen. \paragraph{C\#} -\label{sec:org87cfed6} +\label{sec:org94ad6ef} C\# ist eine von Microsoft entwickelte Programmiersprache welche viele Frameworks zur Verfügung hat. Insbesondere Aufgrund der grossen kommerziellen @@ -746,13 +1314,13 @@ Jedoch aufgrund des moderneren Unterbaus sicher schneller als C++. \textbf{Total} & & & & 279\\ \hline \end{tabular} -\caption{\label{tab:org30f2838} +\caption{\label{tab:orgc9f7ec4} C\# Bewertungstabelle} \end{table} \paragraph{C++} -\label{sec:org8faf346} +\label{sec:org2208a22} C++ ist eine stark typisierte und kompilierte Programmiersprache. Sie ist seit 1998 Teil des ISO Standards \footcite{cpp98}. ISO/IEC 14882:2017 \footcite{cpp17} @@ -814,13 +1382,13 @@ ungeeignet. \textbf{Total} & & & & 271\\ \hline \end{tabular} -\caption{\label{tab:org9bb70a9} +\caption{\label{tab:orgc3de759} C++ Bewertungstabelle} \end{table} \paragraph{Python} -\label{sec:org7ab72b4} +\label{sec:org8426979} 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 @@ -852,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{orgd952351}) starten. +einfachen Befehl, Code Snippet (\ref{orgbf06584}) starten. -\lstset{language=bash,label=orgd952351,caption={Minimal Python Setup},captionpos=b,numbers=none} +\lstset{language=bash,label=orgbf06584,caption={Minimal Python Setup},captionpos=b,numbers=none} \begin{sexylisting}{Minimal Python Setup} python3 example.py \end{sexylisting} @@ -893,15 +1461,15 @@ entwickeln kann, dies jedoch zu Lasten der Performance. \textbf{Total} & & & & 322\\ \hline \end{tabular} -\caption{\label{tab:orgb80f575} +\caption{\label{tab:orga21270a} Python Bewertungstabelle} \end{table} \subsubsection{FrontEnd} -\label{sec:org61883bb} +\label{sec:orgd0b3bd7} -Fürs Frontend sind folgende Projekte interessant: \hyperref[sec:orgab8580b]{Qt}, \hyperref[sec:orgd25230f]{Gtk} und \hyperref[sec:orgde09806]{Electron}. Alle +Fürs Frontend sind folgende Projekte interessant: \hyperref[sec:org329a692]{Qt}, \hyperref[sec:org7113159]{Gtk} und \hyperref[sec:orgf9a0e5d]{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 @@ -909,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:orgab8580b} +\label{sec:org329a692} Qt \footcite{qt}, "`cute"' ausgesprochen, ist ein Framework zum Entwickeln von grafischen Oberflächen welche auf verschiedenen System ohne grosse Änderungen @@ -959,13 +1527,13 @@ gross. \textbf{Total} & & & & 295\\ \hline \end{tabular} -\caption{\label{tab:org3bbc552} +\caption{\label{tab:org82ec562} Qt Bewertungstabelle} \end{table} \paragraph{Gtk} -\label{sec:orgd25230f} +\label{sec:org7113159} 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. @@ -979,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:org0ecf563}). +Abbildung (\ref{fig:orgb046e95}). \begin{figure}[htbp] \centering \includegraphics[width=.9\linewidth]{pictures/meld.png} -\caption{\label{fig:org0ecf563} +\caption{\label{fig:orgb046e95} Screenshot der Applikation Meld unter Windows 10} \end{figure} Die Gtk Dokumentation empfiehlt \footcite{gtk_setup}, das man unter Windows das @@ -1021,13 +1589,13 @@ Da die Kenntnisse gleich null sind ist der Lernfaktor auf dem Maximum. \textbf{Total} & & & & 275\\ \hline \end{tabular} -\caption{\label{tab:org20e83bc} +\caption{\label{tab:org1c94d4e} Gtk Bewertungstabelle} \end{table} \paragraph{Electron} -\label{sec:orgde09806} +\label{sec:orgf9a0e5d} Electron ist ein cross-platform Framework zum entwickeln von \glspl{gui} welches dabei jedoch auf Technologien aus der Webentwicklung benutzt. Entwickelt wird @@ -1081,20 +1649,17 @@ Lernfaktor bei Electron wohl nicht so gross wie etwa bei Qt oder Gtk. \textbf{Total} & & & & 275\\ \hline \end{tabular} -\caption{\label{tab:org9fdb0dc} +\caption{\label{tab:org4a93e21} Electron Bewertungstabelle} \end{table} \subsubsection{Ergebnis} -\label{sec:org802bfbd} +\label{sec:org3395f0e} -Aufgrund der erreichten Punktzahl, Tabelle:(\ref{tab:org618aea0}), bei den vorhergehenden +Aufgrund der erreichten Punktzahl, Tabelle:(\ref{tab:org32c4177}), bei den vorhergehenden Variantenbewertungen, wurde entschieden für das Backend der Applikation auf -Python zu setzen und fürs Frontend Qt zu benutzen. Ein kleiner Test zeigt auch -das die Kombination ohne grosse Probleme und Anpassung auf Windows, Linux und -OS X läuft, Abbildung:(\ref{fig:org6c1e76f}). - +Python zu setzen und fürs Frontend Qt zu benutzen. \begin{table}[H] \centering \begin{tabular}{|>{\columncolor[HTML]{EFEFEF}}p{4.5cm}|r|} @@ -1111,20 +1676,13 @@ Gtk & 275\\ Electron & 275\\ \hline \end{tabular} -\caption{\label{tab:org618aea0} +\caption{\label{tab:org32c4177} Variantenbewertung Ergebnis} \end{table} -\begin{figure}[htbp] -\centering -\includegraphics[width=.9\linewidth]{pictures/hello_world.png} -\caption{\label{fig:org6c1e76f} -Python und Qt Applikation unter Windows (links), Linux (rechts) und OS X (unten)} -\end{figure} - \subsection{Vorkenntnisse} -\label{sec:org9e04095} +\label{sec:org0e8ee40} Die benötigten Vorkenntnisse wurden in den vorangegangenen Semestern erarbeitet und sind in der Basis gefestigt. Erfahrungen im Bereich der Entwicklung von @@ -1132,141 +1690,71 @@ Desktop Applikationen sind zum Teil vorhanden. Jedoch hauptsächlich für Window Systeme und C\#. \subsection{Testing} -\label{sec:org76a0fb9} +\label{sec:orgbe11613} PLACEHOLDER \subsubsection{Testfälle} -\label{sec:orgbfae27e} - -PLACEHOLDER - -\subsection{Werkzeuge} -\label{sec:org59ef66e} - -PLACEHOLDER - -\subsubsection{Versionskontrolle} -\label{sec:org28d9476} - -Eine Versionskontrollsoftware ist in der Software Entwicklung heutzutage -praktisch nicht mehr wegzudenken. So wurde auch bei diesem Projekt eine -eingesetzt. - -Als Software für die Versionskontrolle wurde Git \footcite{git} aus folgenden -Gründen ausgewählt: - -\begin{itemize} -\item Ist der de facto Standard bei Versionskontrollsoftware -\item Läuft auf allen gängigen Betriebssystemen -\item Es gäbe gratis Services die man nutzen könnte (Github, Gitlab) -\item Man kann offline arbeiten und Commits erstellen -\item Der Author hat bereits einen eigenen Git Server zur Verfügung -\item Der Author ist bereits mit Git aus vorhergehenden Projekten vertraut, -dadurch muss man keine Ressourcen aufwenden eine neue Software zu lernen. -Zusätzlich hat sich Git in den vorhergehenden Projekten als robuste -und schnelle Software erwiesen. -\item Git ist \gls{libre} unter der \gls{gpl} v2. -\end{itemize} - -\subsubsection{Editor} -\label{sec:org3519e9e} - -Sowohl bei der Dokumentation wie auch bei der Programmierung wurde -hauptsächlich der Editor GNU Emacs \footcite{emacs} verwendet. GNU Emacs ist mit -32 Jahren (obwohl seine Wurzeln bis ins Jahre 1976 zurückgehen) wohl eines der -ältesten noch aktiven Software Projekte. Emacs ist \gls{libre} unter der -\gls{gpl} v3. Emacs wurde gewählt da es ein schneller, schlanker und sehr -flexibler Texteditior ist. Von normaler Textmanipulation über Taskmanagement -und Emails schreiben ist alles möglich. - -\subsubsection{Dokumentation} -\label{sec:org3761443} - -Diese Dokumentation wurde in Org-mode \footcite{orgmode}, einer Erweiterung für -den Text Editor Emacs, geschrieben. Die Syntax erinnert an Markdown und -Org-mode bietet einem eine vielzahl an Hilfen dafür inklusive dem erstellen von -Tabellen und Spreadsheet Funktionen. Für finalle Version des Dokuments kann -Org-mode die ursprünglich Textdatei über \LaTeX{} in ein PDF exportieren. - -\LaTeX{} \footcite{latex} ist eine Software, welche einem die Benutzung des -Textsatzsystems TeXs vereinfacht. \LaTeX{} wurde gegenüber einem "`What You See Is -What You Get"' (z.Bsp. MS. Word), Editor gewählt weil es einem mit seiner Markup -Sprache erlaubt das Dokument in Text Dateien zu erstellen, gerade für -Programmiere ist dies eine sehr interessante Lösung. Dadurch, dass \LaTeX{} auch -nur aus reinen Textdateien besteht, kann man die Dokumente auch ohne weiteres -in die Versionskontrollsoftware einchecken und die Entwicklung im Log -zurückverfolgen. \LaTeX{} ist \gls{libre} unter der \LaTeX{} Project Public -License. - -Die Grafiken in diesem Dokument wurden hauptsächlich mit dem Vektor Grafik -Editor Inkscape \footcite{inkscape} erstellt. Inkscape ist \gls{libre} unter der -GNU Public License v3. - -Die Diagramme wurden mit Draw.io \footcite{draw} erstellt. Draw.io ist \gls{libre} -unter Apache Lizenz Version 2.0 \footcite{apache} und kann sowohl als Desktop -Applikation wie auch als Webanwendung genutzt werden. - -\subsection{User Stories} -\label{sec:org8b5f298} - -PLACEHOLDER - -\subsection{Use Cases} -\label{sec:org965b415} - -PLACEHOLDER - -\paragraph{Anwendungsfalldiagramm} -\label{sec:org92e0194} - -PLACEHOLDER - -\paragraph{Use Cases Detailbeschreibung} -\label{sec:org76d468c} +\label{sec:org264b8b1} PLACEHOLDER \section{Realisierung} -\label{sec:org4ce6199} +\label{sec:orgab64221} +\subsection{Cross-plattform Kompatibilität} +\label{sec:orgd126eea} + +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:org935d9c3}) zu sehen +ist. + +\begin{figure}[htbp] +\centering +\includegraphics[width=.9\linewidth]{pictures/hello_world.png} +\caption{\label{fig:org935d9c3} +Python und Qt Applikation unter Windows (links), Linux (rechts) und OS X (unten)} +\end{figure} + \subsection{Benutzerinterface} -\label{sec:org55de277} +\label{sec:org440a6bb} \paragraph{Inspiration} -\label{sec:orgdbc0d9f} +\label{sec:org9d63d07} PLACEHOLDER \paragraph{Frontend Umsetzung} -\label{sec:org60a9be2} +\label{sec:org79f99cb} PLACEHOLDER \paragraph{Backend Umsetzung} -\label{sec:orgbd3aeee} +\label{sec:org46b5693} PLACEHOLDER \section{Ausblick} -\label{sec:org8bd82c3} +\label{sec:orgb6e1d1b} \subsection{Projektmanagement} -\label{sec:org39784a5} +\label{sec:orgd2dc269} PLACEHOLDER \subsection{Umsetzung} -\label{sec:org0d3255b} +\label{sec:orge581bdf} PLACEHOLDER \subsection{Gelerntes} -\label{sec:org8f28034} +\label{sec:orgbf71336} PLACEHOLDER \newpage \begin{landscape} \section{Arbeitsjournal} -\label{sec:org64fdba0} +\label{sec:org60aa9ed} \begin{longtable}{|p{2cm}|p{5cm}|p{5cm}|p{7cm}|} \hline @@ -1290,7 +1778,7 @@ PLACEHOLDER \hline 30.12.2018 & Controlling erarbeiten, Ist- und Soll-Analyse, SWOT Analyse, Umweltanalyse, Massnahmen Katalog erarbeiten, User Stories erarbeiten, Use Case Diagramm erstellen, Use Cases ausarbeiten, Anforderungskatalog erstellen, UML Diagramme & & \\ \hline -\caption{\label{tab:org270babe} +\caption{\label{tab:orgbb31bb1} Arbeitsjournal} \\ \end{longtable}