From 81e45e46827285438249a1a31e9f9c7f1214611f Mon Sep 17 00:00:00 2001 From: Andreas Zweili Date: Thu, 14 Mar 2019 20:30:42 +0100 Subject: [PATCH] fix various layout details --- projektdokumentation/projektdokumentation.tex | 136 +++++++++--------- 1 file changed, 70 insertions(+), 66 deletions(-) diff --git a/projektdokumentation/projektdokumentation.tex b/projektdokumentation/projektdokumentation.tex index 6f49794..a9d8b28 100644 --- a/projektdokumentation/projektdokumentation.tex +++ b/projektdokumentation/projektdokumentation.tex @@ -109,7 +109,8 @@ der Zukunft möglich ist das Projekt auf andere Plattformen auszuweiten. \subsubsection{Ziele inklusive Gewichtung} \label{sec:org2ef9c2b} -Im Projektantrag wurden vorgängig folgende Ziele definiert und entsprechend +Im Projektantrag wurden vorgängig die Ziele in der +Tabelle:(\ref{tab:org2ab4045}) definiert und entsprechend gewichtet. Die Gewichtung wurde dabei so vorgenommen, dass Ziele mit einer Muss-Gewichtung den Minimalanforderungen der zu entwickelnden Software entsprechen. Die weiteren Ziele wurden von 5 bis 1 gewichtet. Die Bewertung 5 @@ -335,15 +336,15 @@ entwickelten Design Sprache "`Material"' \footcite{material} eingesetzt. \subsection{Zeitplanung} \label{sec:org3e1f3c8} -Die detaillierte Zeitplanung ist dem Ganttchart in der Datei -\href{02\_Zeitplanung\_Andreas\_Zweili.html}{02\_Zeitplanung\_Andreas\_Zweili.html} zu entnehmen. Bei der Zeitplanung wurde -darauf geachtet, dass die Arbeit soweit als möglich nicht mit dem Berufsleben -kollidiert. An einem normalen Arbeitstag wurde dabei damit gerechnet das ca. 2 -Stunden Arbeit am Abend möglich sein sollten. An einem arbeitsfreien Tag wurde -mit 6 Stunden Arbeit gerechnet. Über die Festtage wurden diverse Tage von der -Planung ausgenommen, da es nicht realistisch schien, dass an diesen Tagen die -Arbeit signifikant vorwärts gehen würde. Auch Schultage wurde nicht als -Arbeitstage gerechnet. +Die detaillierte Zeitplanung ist dem Ganttchart in der Datei:\newline +\href{02\_Zeitplanung\_Andreas\_Zweili.html}{02\_Zeitplanung\_Andreas\_Zweili.html} +zu entnehmen. Bei der Zeitplanung wurde darauf geachtet, dass die Arbeit soweit +als möglich nicht mit dem Berufsleben kollidiert. An einem normalen Arbeitstag +wurde dabei damit gerechnet das ca. 2 Stunden Arbeit am Abend möglich sein +sollten. An einem arbeitsfreien Tag wurde mit 6 Stunden Arbeit gerechnet. Über +die Festtage wurden diverse Tage von der Planung ausgenommen, da es nicht +realistisch schien, dass an diesen Tagen die Arbeit signifikant vorwärts gehen +würde. Auch Schultage wurde nicht als Arbeitstage gerechnet. Um die Arbeitslast zu verteilen, wurde vom 14. Januar bis zum 11. März auf der Arbeitsstelle jeder Montag als frei eingegeben. Dadurch steht während des @@ -394,7 +395,7 @@ unvorbereitet gegenüber, sollten sie eintreffen. \subsubsection{Risikobeschreibung} \label{sec:org5fac90a} -In der Tabelle: (\ref{tab:orgb156d31}) sind die Risiken des Projektes +In der Tabelle:(\ref{tab:orgb156d31}) sind die Risiken des Projektes gemeinsam mit ihren Gegenmassnahmen aufgelistet. Somit können gewisse Risiken bereits vorher vermieden werden. @@ -490,7 +491,7 @@ Stakeholder Diagramm} \hline \textbf{Nr}.\cellcolor[HTML]{C0C0C0} & \textbf{Stakeholder}\cellcolor[HTML]{C0C0C0} & \textbf{Einfluss}\cellcolor[HTML]{C0C0C0} & \textbf{Anforderung/Wünsche}\cellcolor[HTML]{C0C0C0} & \textbf{Wahrscheinlichkeit}\cellcolor[HTML]{C0C0C0}\\ \hline -1. & \gls{borg} Community & gering & Eine Applikation, die den Umfang von \gls{borg} abdeckt & mittel\\ +1. & \gls{borg} Community & gering & Eine Applikation, die den Umfang von \gls{borg}\newline abdeckt & mittel\\ & & & Open-Source & hoch\\ & & & Mitspracherecht bei der Entwicklung & niedrig\\ \hline @@ -602,10 +603,10 @@ Grafische Darstellung der Soll-Risikoanalyse} \subsection{Anforderungskatalog} \label{sec:org90be6e5} -Der Anforderungskatalog entspricht 1:1 den Zielen, welche in der Tabelle -\ref{tab:org2ab4045} definiert wurden. Im Zeitplan wurde der Fokus hauptsächlich -auf die Muss-Ziele gelegt. Ein paar der Kann-Ziele sind im Konzept jedoch auch -abgebildet. +Der Anforderungskatalog entspricht 1:1 den Zielen, welche in der +Tabelle:(\ref{tab:org2ab4045}) definiert wurden. Im Zeitplan wurde der Fokus +hauptsächlich auf die Muss-Ziele gelegt. Ein paar der Kann-Ziele sind im +Konzept jedoch auch abgebildet. \subsection{Use Cases} \label{sec:orgfd94eff} @@ -634,7 +635,7 @@ Das Anwendungsfalldiagramm für das \gls{borg} \gls{gui} ist in der Abbildung: \begin{landscape} \begin{figure}[htbp] \centering -\includegraphics[width=.9\linewidth]{pictures/use_case.pdf} +\includegraphics[width=.75\linewidth]{pictures/use_case.pdf} \caption{\label{fig:org49a405a} Anwendungsfalldiagramm} \end{figure} @@ -1158,9 +1159,8 @@ ergibt das Kriteriumsergebnis(\emph{KE}). Für das Endresultat wird dann die Sum über alle Kriterien gebildet. Die Variante mit der höchsten Summe wurde für das Projekt ausgewählt. -Mussziele erhalten dabei eine -Gewichtung von 10 und Wunschziele eine Gewichtung entsprechend der Bewertung in -der Tabelle Projektziele (\ref{tab:org2ab4045}). +Mussziele erhalten dabei eine Gewichtung von 10 und Wunschziele eine Gewichtung +entsprechend der Bewertung in der Tabelle:(\ref{tab:org2ab4045}). \begin{table}[htbp] \centering @@ -1197,12 +1197,13 @@ gut für Desktop Applikationen eignen. \paragraph{C\#} \label{sec:org88a8f6c} -C\# ist eine von Microsoft entwickelte Programmiersprache, welche viele -Frameworks zur Verfügung stellt. Insbesondere aufgrund der grossen -kommerziellen Nutzung und der guten Integration mit Microsoft Windows hat C\# -eine relative grosse Verbreitung. Bei Linux und OS X ist es jedoch schwieriger -C\# zu integrieren und zu nutzen da es nicht standardmässig installiert ist und -der Fokus von C\# hauptsächlich auf Microsoft Windows liegt. +C\#, ausgesprochen "`c sharp"', Bewertungstabelle:(\ref{tab:orgbe64074}), ist +eine von Microsoft entwickelte Programmiersprache, welche viele Frameworks zur +Verfügung stellt. Insbesondere aufgrund der grossen kommerziellen Nutzung und +der guten Integration mit Microsoft Windows hat C\# eine relative grosse +Verbreitung. Bei Linux und OS X ist es jedoch schwieriger C\# zu integrieren +und zu nutzen da es nicht standardmässig installiert ist und der Fokus von C\# +hauptsächlich auf Microsoft Windows liegt. Sie ist zu Teilen \gls{libre}. Die Common Language Runtime, welche für das Ausführen von Software zuständig ist, ist unter der MIT Lizenz lizenziert @@ -1277,7 +1278,7 @@ C\# Bewertungstabelle} \paragraph{C++} \label{sec:orga42458f} -C++ ist eine stark typisierte und kompilierte Programmiersprache. Sie ist seit +C++, Bewertungstabelle:(\ref{tab:org98215ee}), ist eine stark typisierte und kompilierte Programmiersprache. Sie ist seit 1998 Teil des ISO Standards \footcite{cpp98}. ISO/IEC 14882:2017 \footcite{cpp17} ist zurzeit die aktuellste Variante. Die Sprache existiert seit ca. 33 Jahren und hat eine weitreichende Verbreitung gefunden. C++ ist auf allen @@ -1346,7 +1347,7 @@ C++ Bewertungstabelle} \paragraph{Python} \label{sec:org5438e66} -Der Python Interpreter ist für eine Vielzahl an Betriebssystemen erhältlich, +Der Python Interpreter, Bewertungstabelle:(\ref{tab:org5e96ed7}), ist für eine Vielzahl an Betriebssystemen erhältlich, inklusive Windows, OS X und Linux. Nahezu jedes Desktop Linux System kommt mit Python vor installiert. Auch OS X kommt bereits ab Werk mit Python Version 2. Version 3 lässt sich sehr einfach nachinstallieren und ist einfach nutzbar. @@ -1434,10 +1435,11 @@ In beiden Fällen wäre nicht mal eine ungenaue Schätzung wirklich möglich. \paragraph{Qt} \label{sec:org4b2dd8e} -Qt \footcite{qt}, "`cute"' ausgesprochen, ist ein Framework zum Entwickeln von -grafischen Oberflächen, welche auf verschiedenen Systemen ohne grosse Änderungen -laufen sollen und sich dabei soweit als möglich wie eine native Applikation -verhalten und "`anfühlen"' soll. +Qt \footcite{qt}, "`cute"' ausgesprochen, +Bewertungstabelle:(\ref{tab:org4ccf1dd}), ist ein Framework zum Entwickeln von +grafischen Oberflächen, welche auf verschiedenen Systemen ohne grosse +Änderungen laufen sollen und sich dabei soweit als möglich wie eine native +Applikation verhalten und "`anfühlen"' soll. Die Rechte an Qt hält die Firma "`The Qt Company"'. Das Framework Qt wird jedoch offen entwickelt und die Community hat ein Mitspracherecht. Die Linux @@ -1490,11 +1492,12 @@ Qt Bewertungstabelle} \paragraph{Gtk} \label{sec:orgbac0846} -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. -Gtk ist \gls{libre} unter der Lesser General Public Lizenz \footcite{gtklicense}. -Gtk ist ein Projekt der GNOME Foundation einer nicht für Profit Organisation, -welche die Entwicklung diverser freier Software Projekte koordiniert. +Gtk, Bewertungstabelle:(\ref{tab:orgf14b8b2}), 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. Gtk ist \gls{libre} unter der +Lesser General Public Lizenz \footcite{gtklicense}. Gtk ist ein Projekt der +GNOME Foundation einer nicht für Profit Organisation, welche die Entwicklung +diverser freier Software Projekte koordiniert. Zu Gtk gibt es keinerlei Vorkenntnisse als Programmierer. Gtk wurde bis jetzt nur intensiv als User verwendet. @@ -1502,7 +1505,7 @@ nur intensiv als User verwendet. Gtk integriert sich nur unter Linux wirklich gut ins System. Unter Windows und OS X können die Applikationen schnell etwas fremd wirken. Dies ist gut bei der Applikation Meld \footcite{meld} zu sehen, wenn man eine Datei auswählen möchte, -Abbildung (\ref{fig:org7ef2fd3}). +Abbildung:(\ref{fig:org7ef2fd3}). \begin{figure}[H] \centering @@ -1553,7 +1556,7 @@ Gtk Bewertungstabelle} \paragraph{Electron} \label{sec:org408db76} -Electron ist ein cross-plattform Framework zum Entwickeln von \glspl{gui}, welches +Electron, Bewertungstabelle:(\ref{tab:orgd3eb73d}), ist ein cross-plattform Framework zum Entwickeln von \glspl{gui}, welches dabei jedoch auf Technologien aus der Webentwicklung benutzt. Entwickelt wird Electron von der Firma Github und ist \gls{libre} unter der MIT Lizenz \footcite{electronlicense}. @@ -1677,7 +1680,7 @@ Der Pfad des \gls{borg} Repository für lokale Backups soll \texttt{/tmp/test-bo sein, in den Testfällen "`Lokales Repository"' genannt und das Passwort \texttt{foo}. Im Makefile des Repository wird dieses Setup definiert. Somit kann man als Entwickler nur \texttt{make init} ausführen und hat eine funktionsfähige Testumgebung. - +\newpage Um Backups über \gls{ssh} testen zu können, wird eine virtuelle Maschine mit Ubuntu 18.04 verwendet. Die Konfiguration der virtuellen Maschine sieht dabei wie folgt aus: @@ -2057,7 +2060,7 @@ sehr einfach eine Datei im "`INI"' Stil zu erstellen und parsen. "`INI"' Stil bedeutet dabei das die Einstellungen in "`Key/Value"' Paaren gespeichert werden. Somit kann man einfach auf den benötigten Wert zugreifen, in -dem man seinen Schlüssel angibt. Ein Beispiel ist im CodeSnippet:(\ref{org7734c7e}) zu sehen. +dem man seinen Schlüssel angibt. Ein Beispiel ist im Codesnippet:(\ref{org7734c7e}) zu sehen. \begin{sexylisting}[label=org7734c7e]{Ein Beispiel einer INI Datei.} # docs/borg_qt.conf.example @@ -2077,14 +2080,15 @@ Support für eine Liste von Werten hat. Die wurde insbesondere für \texttt{incl \texttt{exclude} Pfade benötigt. Also für die Pfade, welche gesichert werden oder von einem Backup ausgeschlossen werden sollen. -Abhilfe schaffte hier ein Stackexchange Post \footcite{configlist}. Dieser schlug -vor, dass man die Liste im \gls{json} Format speichern soll. Da \texttt{Configparser} alle -Werte im Format "`String"' zurückgibt, können dann die \gls{json} Listen sehr -einfach von einem \gls{json} Parser umgewandelt werden. Im Projekt wurde dies -dann unter anderem als Methode der \texttt{Config} Klasse, Code -Snippet:(\ref{orgd4f11c4}), implementiert. Somit muss man jeweils nur die -\texttt{\_return\_list\_option()} Methode mit der benötigten Option als Argument aufrufen -und bekommt als Resultat eine funktionierende Python Liste zurück. +Abhilfe schaffte hier ein Stackexchange Post \footcite{configlist}. Dieser +schlug vor, dass man die Liste im \gls{json} Format speichern soll. Da +\texttt{Configparser} alle Werte im Format "`String"' zurückgibt, können dann +die \gls{json} Listen sehr einfach von einem \gls{json} Parser umgewandelt +werden. Im Projekt wurde dies dann unter anderem als Methode der +\texttt{Config} Klasse, Codesnippet:(\ref{orgd4f11c4}), implementiert. Somit +muss man jeweils nur die \texttt{\_return\_list\_option()} Methode mit der +benötigten Option als Argument aufrufen und bekommt als Resultat eine +funktionierende Python Liste zurück. Beim Schreiben der Konfigurationsdatei macht man dann einfach das Umgekehrte. Man konvertiert eine Python Liste in einen \gls{json} String. @@ -2236,7 +2240,7 @@ geschrieben werden, welche dann von \texttt{BorgQtThread} die Funktionen erbt. D Funktionsklassen müssen dann jeweils nur die Methode \texttt{self.create\_command(self)} implementieren, welche das Property \texttt{self.command} erstellt und die einfachen Funktionen von \gls{borg} sollten direkt funktionieren. - +\newpage \subsection{Backup} \label{sec:org89c69ff} @@ -2453,7 +2457,7 @@ Repository Statistik aktualisiert, um den neuen Zustand wiederzugeben. \caption{\label{fig:orgf3d4105} Screenshot des Yes/No Dialogs in der "`Delete"' Funktion.} \end{figure} - +\newpage \subsection{Automatische Backups} \label{sec:org99bb44c} @@ -2538,11 +2542,11 @@ zu erhalten. Mittels des Befehls \texttt{which borg-qt} erhält man den absolute Speicherort der Datei. Zusammen mit den Daten aus den Einstellungen wird diese Information in einem \texttt{Configparser} Objekt gespeichert, welches dann mithilfe der \texttt{SystemdFile} Klasse in eine \texttt{borg\_qt.service}, -Codesnippet:(\ref{org686435b}), respektive \texttt{borg\_qt.timer}, +Codesnippet:(\ref{org686435b}), respektive \texttt{borg\_qt.timer},\newline Codesnippet:(\ref{orgc9b6ece}), Datei, im Systemd Pfad \texttt{/home/username/.config/systemd/user/} geschrieben und aktiviert wird. -Eine Option in der Datei \texttt{borg\_qt.timer}, die noch erwähnenswert ist, ist +Eine Option in der Datei \texttt{borg\_qt.timer}, die noch erwähnenswert ist,\newline ist \texttt{Persistent = true}. Ist \texttt{Persistent} auf \texttt{true} gesetzt, holt Systemd den Tasks nach sollte er eine Ausführung verpasst haben. Dies ist insbesondere dann hilfreich, wenn etwa der Zeitplan auf \texttt{daily} oder \texttt{weekly} gesetzt wurde. @@ -2782,7 +2786,7 @@ Abbildung:(\ref{fig:org47eb5a8}), eine bessere Risikobewertung als das geplante \begin{figure}[H] \centering -\includegraphics[width=.9\linewidth]{pictures/ist_risiko_neu.pdf} +\includegraphics[width=9cm]{pictures/ist_risiko_neu.pdf} \caption{\label{fig:org47eb5a8} Risikoanalyse der neuen Ist-Situation} \end{figure} @@ -2831,7 +2835,7 @@ Tabelle:(\ref{tab:org0a7c4bd}) geplanten 1:1. Da die geleisteten Stunden tiefer als geplant waren, sind auch die geschätzten Kosten tiefer. Wie in der Tabelle:(\ref{tab:orgc5c17d7}) zu sehen würden sich die angenommenen, internen Kosten für die Arbeit auf ca. 17302.20 CHF belaufen. -Dies stellt eine Einsparung von 1777.8 CHF dar. +Dies entspricht einer theoretischen Einsparung von 1777.8 CHF oder 9.318\%. \subsection{Usability-Studie} \label{sec:orgd81cd12} @@ -2907,13 +2911,13 @@ um seine sowie teilweise auch die Daten von Bekannten zu sichern. \begin{longtable}{|p{4cm}|p{2cm}|p{2cm}|p{4cm}|} \hline -\textbf{Ressource}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzte Anzahl}\cellcolor[HTML]{C0C0C0} & \textbf{effekt. Anzahl}\cellcolor[HTML]{C0C0C0} & \textbf{Begründung}\cellcolor[HTML]{C0C0C0}\\ +\textbf{Ressource}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzte Anzahl}\cellcolor[HTML]{C0C0C0} & \textbf{effektive\newline Anzahl}\cellcolor[HTML]{C0C0C0} & \textbf{Begründung}\cellcolor[HTML]{C0C0C0}\\ \hline \endfirsthead \multicolumn{4}{l}{Fortsetzung von vorheriger Seite} \\ \hline -\textbf{Ressource}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzte Anzahl}\cellcolor[HTML]{C0C0C0} & \textbf{effekt. Anzahl}\cellcolor[HTML]{C0C0C0} & \textbf{Begründung}\cellcolor[HTML]{C0C0C0} \\ +\textbf{Ressource}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzte Anzahl}\cellcolor[HTML]{C0C0C0} & \textbf{effektive\newline Anzahl}\cellcolor[HTML]{C0C0C0} & \textbf{Begründung}\cellcolor[HTML]{C0C0C0} \\ \hline \endhead @@ -2938,13 +2942,13 @@ Projektressourcen} \begin{longtable}{|p{3cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|} \hline -\textbf{Name}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzter Aufwand in h}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzte Kosten in CHF}\cellcolor[HTML]{C0C0C0} & \textbf{effektiver Aufwand in h}\cellcolor[HTML]{C0C0C0} & \textbf{effektive Kosten in CHF}\cellcolor[HTML]{C0C0C0}\\ +\textbf{Name}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzter Aufwand in h}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzte Kosten\newline in CHF}\cellcolor[HTML]{C0C0C0} & \textbf{effektiver Aufwand in h}\cellcolor[HTML]{C0C0C0} & \textbf{effektive Kosten\newline in CHF}\cellcolor[HTML]{C0C0C0}\\ \hline \endfirsthead \multicolumn{5}{l}{Fortsetzung von vorheriger Seite} \\ \hline -\textbf{Name}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzter Aufwand in h}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzte Kosten in CHF}\cellcolor[HTML]{C0C0C0} & \textbf{effektiver Aufwand in h}\cellcolor[HTML]{C0C0C0} & \textbf{effektive Kosten in CHF}\cellcolor[HTML]{C0C0C0} \\ +\textbf{Name}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzter Aufwand in h}\cellcolor[HTML]{C0C0C0} & \textbf{geschätzte Kosten\newline in CHF}\cellcolor[HTML]{C0C0C0} & \textbf{effektiver Aufwand in h}\cellcolor[HTML]{C0C0C0} & \textbf{effektive Kosten\newline in CHF}\cellcolor[HTML]{C0C0C0} \\ \hline \endhead @@ -2972,7 +2976,7 @@ Kostenrechnung} \subsection{Zeitaufwand} \label{sec:org60e1849} -\begin{longtable}{|p{3cm}|p{1.5cm}|p{1.5cm}|p{6.5cm}|} +\begin{longtable}{|p{.2\textwidth}|p{2cm}|p{2cm}|p{6cm}|} \hline \textbf{Aufgabe}\cellcolor[HTML]{C0C0C0} & \textbf{Gesch. Aufwand in h}\cellcolor[HTML]{C0C0C0} & \textbf{Effekt. Aufwand in h}\cellcolor[HTML]{C0C0C0} & \textbf{Begründung}\cellcolor[HTML]{C0C0C0}\\ \hline @@ -2988,17 +2992,17 @@ Kostenrechnung} \endfoot \endlastfoot \hline -Initialisierung & 22 & 20.3 & Das bescheiben der Ziele hat weniger Zeit in Anspruch genommen als geplant.\\ +2 Initialisierung & 22 & 20.3 & Das bescheiben der Ziele hat weniger Zeit in Anspruch genommen als geplant.\\ \hline -Analyse & 47 & 41.6 & Da Diagramme aus alten Arbeiten übernommen werden konnten, konnte etwas Zeit eingespart werden.\\ +3 Analyse & 47 & 41.6 & Da Diagramme aus alten Arbeiten übernommen werden konnten, konnte etwas Zeit eingespart werden.\\ \hline -Konzept & 34 & 35.1 & Die Testfälle erstellen hat etwas mehr Zeit in Anspruch genommen als geplant.\\ +4 Konzept & 34 & 35.1 & Die Testfälle erstellen hat etwas mehr Zeit in Anspruch genommen als geplant.\\ \hline -Realisierung & 172 & 149.3 & Trotz der Schwierigkeiten beim Erstellen der Backup Funktion konnte beim Borg Interface viel Code wieder verwendet werden was massiv Zeit gespart hat.\\ +5 Realisierung & 172 & 149.3 & Trotz der Schwierigkeiten beim Erstellen der Backup Funktion konnte beim Borg Interface viel Code wieder verwendet werden was massiv Zeit gespart hat.\\ \hline -Ausblick & 8 & 7.5 & -\\ +6 Ausblick & 8 & 7.5 & -\\ \hline -7 Arbeit korrigieren & 20 & 22.7 & Das Korrigieren war aufwändiger als gedacht.\\ +7 Arbeit\newline korrigieren & 20 & 22.7 & Das Korrigieren war aufwändiger als gedacht.\\ \hline 8 Meeting \#1 & 5 & 6.87 & Das erste Meeting hat viele Nacharbeiten nach sich gezogen die so nicht geplant waren.\\ \hline