diff --git a/Bestandteile/sicherheit.tex b/Bestandteile/sicherheit.tex index 5a6e61a..8ed6101 100644 --- a/Bestandteile/sicherheit.tex +++ b/Bestandteile/sicherheit.tex @@ -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 \ No newline at end of file +\section{Sicherheit durch Fehlertoleranz} \ No newline at end of file diff --git a/Bestandteile/strukturImCode.tex b/Bestandteile/strukturImCode.tex index 221217d..675a2ff 100644 --- a/Bestandteile/strukturImCode.tex +++ b/Bestandteile/strukturImCode.tex @@ -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}\\ diff --git a/Bestandteile/verhaltenImCode.tex b/Bestandteile/verhaltenImCode.tex index 3b574a0..45519d4 100644 --- a/Bestandteile/verhaltenImCode.tex +++ b/Bestandteile/verhaltenImCode.tex @@ -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] diff --git a/Literatur/quellen.bib b/Literatur/quellen.bib index 862bc3d..9d9cc87 100644 --- a/Literatur/quellen.bib +++ b/Literatur/quellen.bib @@ -32,4 +32,12 @@ howpublished = {Screenshot}, year = {2024}, note = {Verfügbar unter: \url{https://www.jetbrains.com/de-de/webstorm/}} +} +@book{artoftesting.2011, + title={The Art of Software Testing}, + author={Myers, Glenford J. and Sandler, Corey and Badgett, Tom}, + isbn={9781118133156}, + edition={3}, + year={2012}, + publisher={John Wiley \& Sons, Inc.} } \ No newline at end of file diff --git a/seminar_heiserer_valentin.pdf b/seminar_heiserer_valentin.pdf index a3b10a3..ce57d33 100644 Binary files a/seminar_heiserer_valentin.pdf and b/seminar_heiserer_valentin.pdf differ diff --git a/seminar_heiserer_valentin.tex b/seminar_heiserer_valentin.tex index 697216c..15f6e09 100644 --- a/seminar_heiserer_valentin.tex +++ b/seminar_heiserer_valentin.tex @@ -11,12 +11,13 @@ \usepackage{listings} % z.B. nützlich zum Einbinden von Quellcode \usepackage{hyperref} % für Hyperlinks in PDF-Dokumenten \usepackage{lmodern} -\usepackage{enumerate} +\usepackage{enumitem} \usepackage{csquotes} \usepackage{tabularray} \usepackage{xcolor} \usepackage{caption} \captionsetup[wrapfigure]{format=plain, justification=justified, singlelinecheck=false} +\setlist{noitemsep} \usepackage{wrapfig}