This commit is contained in:
2024-07-08 22:18:19 +02:00
parent 7cf67f5aa1
commit dfbc8e5347
6 changed files with 30 additions and 6 deletions

View File

@@ -1,5 +1,14 @@
\chapter{Ist Refactoring immer sinnvoll?}
\section{Beobachten statt vorhersagen}
\chapter{Sicherheit gewinnen, ohne den Code zu verstehen}
\section{Sicherheit durch Tests}
Die wohl einfachste Möglichkeit die Korrektheit von Software zu überprüfen, ist das Testen. In der Softwareentwicklung gibt es verschiedene Arten, wie richtiges Verhalten, einzelne Codeabschnitte oder ganze Produkte getestet werden können. Einige dieser Arten werden im folgenden aufgelistet.
\begin{itemize}
\item \textbf{Unit Tests:} Testen von bla
\item \textbf{Whiteboxtests:} Testen von bla
\end{itemize}
\section{Sicherheit durch Handwerkskunst}
\section{Sicherheit durch Werkzeuge}
\lipsum[1] % Dummy text
@@ -12,5 +21,4 @@
\lipsum[2-4] % More dummy text
\section{Sicherheit durch formale Verifikation}
\section{Sicherheit durch Fehlertoleranz}
aa
\section{Sicherheit durch Fehlertoleranz}

View File

@@ -1,3 +1,6 @@
\chapter{Einleitung}
In dieser Arbeit solle genauer untersucht werden, was Refactoring tatsächlich an Code verändert, welche Möglichkeiten es gibt ein bestimmtes Verhalten überhaupt darzustellen. Als Grundlage dieser Arbeit gilt das 11. Kapitel aus dem Buch \textit{„five lines of code“} von Christian Clausen \cite{fiveLines.2023}. Dieses wurde im Rahmen des Seminars „Refactoring“, bei Professor Dr. Georg Hagel, untersucht und für diese Arbeit aufgearbeitet. Das Kapitel des Buchs kann zwar eigenständig gelesen werden, aber ein grundlegendes Verständnis von Refactoring ist trotzdem erforderlich.\\
Neben dem Untersuchen des Verhaltens und der Struktur im Code, sollen einige Maßnahmen vorgestellt werden, mit denen Sicherheit erlangt werden kann, dass Code ordnungsgemäß funktioniert. Gerade nach einem umfassenden Refactoring spielt dies eine große Rolle.
\chapter{Strukturen in der Softwareentwicklung}
Bevor man sich mit den Strukturen in der Softwareentwicklung auseinandersetzen kann, ist es wichtig, sich erneut vor Augen zu führen, was Software eigentlich ist.\\
"\emph{Software modelliert einen Teil der Welt. Die Welt - und unser Verständnis davon - entwickelt sich, und unsere Software muss sich entwickeln, um ein akkurates Modell zu sein.}" \cite{fiveLines.2023}\\

View File

@@ -7,7 +7,7 @@ Im nächsten Teil wird beleuchtet, wie Verhalten im Code abgebildet werden kann.
\section{Verhalten im Kontrollfluss}
Die erste und wohl einfachste Möglichkeit, Verhalten im Code abzubilden, ist der Kontrollfluss. Dieser zeichnet sich durch die Verwendung von Kontrolloperatoren, Methodenaufrufen und der Zeilenabfolge aus. \cite{fiveLines.2023}
In folgender Abbildung kann man bla sehen (\ref{fig:Kontrollfluss})
In folgender Abbildung werden dafür jeweils einfache Beispiele gezeigt. (\ref{fig:Kontrollfluss})
\begin{figure}[ht]
\begin{subfigure}[t]{0.30\textwidth}
\centering
@@ -61,7 +61,8 @@ foo(4);
Der Unterschied dieser Unterkategorien wird bei der Betrachtung des Aufrufs „foo(i)“ und dessen Werthereingabe deutlich. Bei \ref{fig:Kontrolloperatoren} wird mithilfe des „while“ Operators die Funktion aufgerufen und die Eingabe erhöht.\\ Das mittlere Beispiel zeigt die Verwendung einer rekursiven Methode, um das Verhalten darzustellen. Der Eingabeparameter dient hier als Wert für den Funktionsaufruf.\\ Das letzte Beispiel \ref{fig:Zeilenabfolge} zeigt das gleiche Verhalten durch einfache Aufrufe. Hier wird die Funktion mit Wert im Klartext aufgerufen.
\subsection{Eigenes Beispiel}
\begin{figure}[ht]
Folgende Abbildung zeigt das Beispiel-Verhalten im Kontrollfluss.
\begin{figure}[h]
\centering
\begin{minted}{typescript}
function istGerade(n: number) {
@@ -76,7 +77,10 @@ function istGerade(n: number) {
\end{minted}
\caption{Beispiel im Kontrollfluss}
\label{fig:KontrollflussIstGerade}
\end{figure}
\end{figure}\\
Um die Unterschiede der verschiedenen Darstellungsformen zu erkennen, ist es sinnvoll die Aufrufe von \textit{„console.log()“} zu betrachten. Diese stellen bei unserem Beispiel die tatsächlich durchzuführende Aktion dar. In Abbildung \ref{fig:KontrollflussIstGerade} lässt sich erkennen, dass diese Aufrufe durch die Kontrolloperatoren \textit{for} und \textit{if} gesteuert werden.
\subsection{Vor und Nachteile}
Da das Programmieren im Kontrollfluss schnell und einfach funktioniert, eignet sich diese Art gut, um neues Vehalten initial abzubilden.
\section{Verhalten in der Struktur der Daten}
\subsection{Eigenes Beispiel}
\begin{figure}[ht]