welche
This commit is contained in:
@@ -99,7 +99,8 @@
|
|||||||
author = {Nobach, Leonhard},
|
author = {Nobach, Leonhard},
|
||||||
collaborator = {Plonski, Manuel},
|
collaborator = {Plonski, Manuel},
|
||||||
month = march,
|
month = march,
|
||||||
year = {2020}
|
year = {2020},
|
||||||
|
note = "Interview mit Fachexperten"
|
||||||
}
|
}
|
||||||
|
|
||||||
@misc{plonski_herausforderungen_Leo_2020,
|
@misc{plonski_herausforderungen_Leo_2020,
|
||||||
@@ -107,5 +108,32 @@
|
|||||||
author = {Grund, Norbert},
|
author = {Grund, Norbert},
|
||||||
collaborator = {Plonski, Manuel},
|
collaborator = {Plonski, Manuel},
|
||||||
month = march,
|
month = march,
|
||||||
year = {2020}
|
year = {2020},
|
||||||
|
note = "Interview mit Fachexperten"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@misc{ws19,
|
||||||
|
title = {Skript der Vorlesung ``Software Engineering'' im Wintersemester 19/20},
|
||||||
|
author = {Prof. Dr. U. Andelfinger, Prof. Dr. R. Hahn, Prof. Dr. S. Ruehl},
|
||||||
|
year = {2019-2020}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@misc{redhat,
|
||||||
|
title = {Was versteht man unter {CI}/{CD}?},
|
||||||
|
url = {https://www.redhat.com/de/topics/devops/what-is-ci-cd},
|
||||||
|
abstract = {CI/CD (Continuous Integration / Continuous Delivery) sorgt für eine kontinuierliche Automatisierung und Überwachung über alle Phasen des App-Lifecycles hinweg.},
|
||||||
|
language = {de},
|
||||||
|
urldate = {2020-03-20}
|
||||||
|
}
|
||||||
|
|
||||||
|
@misc{info_aktu,
|
||||||
|
title = {Von {Continuous} {Integration} zu {Continuous} {Delivery} mit {Jenkins}},
|
||||||
|
url = {https://www.informatik-aktuell.de/entwicklung/methoden/von-continuous-integration-zu-continuous-delivery-mit-jenkins-workflow.html, https://www.informatik-aktuell.de/entwicklung/methoden/von-continuous-integration-zu-continuous-delivery-mit-jenkins-workflow.html},
|
||||||
|
abstract = {Wie Entwicklungsteams von Continuous Integration (CI) zu Continuous Delivery (CD) gelangen können, indem sie die Workflow-Funktionalität in Jenkins nutzen.},
|
||||||
|
language = {de},
|
||||||
|
urldate = {2020-03-20},
|
||||||
|
journal = {Informatik Aktuell},
|
||||||
|
author = {Cygan, Bernhard }
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@ Die Projektphasen des Wasserfallmodells werden in Anforderungsanalyse, Systemdes
|
|||||||
In diese Phase geht es darum, Anforderungen zu sammeln und zu analysieren. Dies geschieht in Form von Texten oder Modellen, die der Strukturierung und Klassifizierung dienen.
|
In diese Phase geht es darum, Anforderungen zu sammeln und zu analysieren. Dies geschieht in Form von Texten oder Modellen, die der Strukturierung und Klassifizierung dienen.
|
||||||
|
|
||||||
\item[Systemdesign]
|
\item[Systemdesign]
|
||||||
Hier wird die Architektur der Module, Schnittstellen und Daten festgelegt, die der Spezifikation aus der Anforderungsanalyse genügen sollen.
|
Hier wird die Architektur der Module, Schnittstellen und Daten festgelegt, welche der Spezifikation aus der Anforderungsanalyse genügen sollen.
|
||||||
|
|
||||||
\item[Implementierung]
|
\item[Implementierung]
|
||||||
Die Programmierung mit dem dazugehörige Modultest sind Bestandteil der Entwicklungsphase der Implementierung.
|
Die Programmierung mit dem dazugehörige Modultest sind Bestandteil der Entwicklungsphase der Implementierung.
|
||||||
@@ -37,7 +37,7 @@ Es gibt verschiedene weit verbreitete Automatisierungspraktiken. Dazu gehören\c
|
|||||||
\item CD (\textit{Continuous Deployment})
|
\item CD (\textit{Continuous Deployment})
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
Die Idee bei \textit{Continuous Integration} besteht darin, wiederholt (mehrmals täglich) die Software in einer kontrollierten definierten Umgebung automatisiert zu integrieren und zu testen (automated build). Die Tests können den Modul- Integration- und auch den Abnahmetest umfassen.
|
Die Idee bei \textit{Continuous Integration} besteht darin, wiederholt (mehrmals täglich) die Software in einer kontrollierten definierten Umgebung automatisiert zu integrieren und zu testen (automated build). Die Tests können den Modul- Integration- und auch den Abnahmetest umfassen.
|
||||||
Durch diese Verfahren können Fehler durch Codeänderungen automatisch erkannt werden, die sonst durch aufwendige, manuelle Testverfahren oder sogar erst im Betrieb erkannt worden wären.
|
Durch diese Verfahren können Fehler durch Codeänderungen automatisch erkannt werden, welche sonst durch aufwendige, manuelle Testverfahren oder sogar erst im Betrieb erkannt worden wären.
|
||||||
Je nach Umfang kann CI das ganze Volumen von Testszenarien abwickeln und so die Testphase voll automatisiert abdecken.\\
|
Je nach Umfang kann CI das ganze Volumen von Testszenarien abwickeln und so die Testphase voll automatisiert abdecken.\\
|
||||||
|
|
||||||
\medskip
|
\medskip
|
||||||
|
|||||||
@@ -76,11 +76,11 @@ entsprechende Empfehlungen abgeleitet.
|
|||||||
|
|
||||||
\section{Aufbau}
|
\section{Aufbau}
|
||||||
\todo{Fix name Ref}
|
\todo{Fix name Ref}
|
||||||
Im Kapitel \nameref{automatisierung-im-softwareentwicklungsprozess} werden Grundlagen für die Phasen der Softwareentwicklung und deren Automatisierung unter CI/CD aufgezeigt, welche um eine Darstellung über das Branchkonzept unter Git ergänzt wird.
|
Im Kapitel \ref{automatisierung-im-softwareentwicklungsprozess} werden Grundlagen für die Phasen der Softwareentwicklung und deren Automatisierung unter CI/CD aufgezeigt, welche um eine Darstellung über das Branchkonzept unter Git ergänzt wird.
|
||||||
|
|
||||||
Diese Grundlagen dienen dem Verständnis der im Anschluss in Kapitel \nameref{heraus} dargestellten Ergebnisse der Erhebung und Analyse von Problemen bei der Einführung und im Betrieb von \cicd. Hierbei wird das in der Einleitung angerissene Problem vertieft und erläutert.
|
Diese Grundlagen dienen dem Verständnis der im Anschluss in Kapitel \ref{heraus} dargestellten Ergebnisse der Erhebung und Analyse von Problemen bei der Einführung und im Betrieb von \cicd. Hierbei wird das in der Einleitung angerissene Problem vertieft und erläutert.
|
||||||
|
|
||||||
Aus der Problemanalyse werden im Kapitel \nameref{mas} Lösungsansätze und Empfehlungen formuliert und auch eine konkrete Umsetzungsempfehlung für das Eingangsproblem entwickelt.
|
Aus der Problemanalyse werden im Kapitel \ref{mas} Lösungsansätze und Empfehlungen formuliert und auch eine konkrete Umsetzungsempfehlung für das Eingangsproblem entwickelt.
|
||||||
|
|
||||||
\section{Abgrenzung}
|
\section{Abgrenzung}
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ In Theorie und Praxis gibt es eine Vielzahl von Definitionen zu \cicd.
|
|||||||
Es gibt Funktionalitäten, welche dem \cil zugeschrieben werden und an anderer
|
Es gibt Funktionalitäten, welche dem \cil zugeschrieben werden und an anderer
|
||||||
Stelle in einer Darstellung von \cicd dem \cdel zu
|
Stelle in einer Darstellung von \cicd dem \cdel zu
|
||||||
geordnet wird. Zusätzlich wird häufig bei der Nennung der Abkürzung \cd
|
geordnet wird. Zusätzlich wird häufig bei der Nennung der Abkürzung \cd
|
||||||
nicht deutlich, ob \cdel oder \cdl gemeint ist.
|
nicht deutlich, ob \cdel oder \cdl gemeint ist.\cite{ws19,redhat,info_aktu}
|
||||||
|
|
||||||
~
|
~
|
||||||
|
|
||||||
@@ -91,6 +91,7 @@ automatisierten und überwachten Prozesses in einer Pipeline durchgeführt
|
|||||||
werden, unabhängig von der Zuordnung zu einem Oberbegriff.
|
werden, unabhängig von der Zuordnung zu einem Oberbegriff.
|
||||||
|
|
||||||
~
|
~
|
||||||
|
|
||||||
\subsection{Continuous Integration}\label{ci}
|
\subsection{Continuous Integration}\label{ci}
|
||||||
\textbf{„CI``} (\textbf{Continuous Integration}) bezeichnet eine entwicklerorientierte
|
\textbf{„CI``} (\textbf{Continuous Integration}) bezeichnet eine entwicklerorientierte
|
||||||
Methode, bei der Code durchgängig integriert und getestet wird.
|
Methode, bei der Code durchgängig integriert und getestet wird.
|
||||||
@@ -184,7 +185,7 @@ Das Risiko für Fehler im Betrieb ist geringer, da Änderungen in kleinen Schrit
|
|||||||
|
|
||||||
\section{Git und die Bedeutung von Branches}
|
\section{Git und die Bedeutung von Branches}
|
||||||
\label{grund:git}
|
\label{grund:git}
|
||||||
Die \scm Git besitzt im Zusammenhang mit CI/CD die Möglichkeit, die operativen Systeme versioniert zu steuern. Dies wird auch als \textbf{GitOps} bezeichnet und ist eine weit verbreitete CI/CD Methode.
|
Die \scm Git besitzt im Zusammenhang mit CI/CD die Möglichkeit operativen Systeme versioniert zu steuern. Dies wird auch als \textbf{GitOps} bezeichnet und ist eine weit verbreitete CI/CD Methode.
|
||||||
Git basiert auf dem Konzept von Branches,
|
Git basiert auf dem Konzept von Branches,
|
||||||
welches verschiedene Codeversionen enthalten kann. Ein Branch ist ein
|
welches verschiedene Codeversionen enthalten kann. Ein Branch ist ein
|
||||||
Entwicklungszweig, auf dem die Änderungen innerhalb eines
|
Entwicklungszweig, auf dem die Änderungen innerhalb eines
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ die einfache Automatisierung bestehender Prozesse. Sie birgt
|
|||||||
tiefgreifende Änderungen für die Softwareentwicklung im Prozess als auch
|
tiefgreifende Änderungen für die Softwareentwicklung im Prozess als auch
|
||||||
im mentalen Wandel bezüglich Methode und Tools.
|
im mentalen Wandel bezüglich Methode und Tools.
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
So läuft die Einführung und der Betrieb eines CI/CD Systems nicht immer
|
So läuft die Einführung und der Betrieb eines CI/CD Systems nicht immer
|
||||||
reibungslos. Im Folgenden werden häufig anzutreffende Probleme
|
reibungslos. Im Folgenden werden häufig anzutreffende Probleme
|
||||||
skizziert, welche zum Teil typisch und häufig im Umfeld von CI/CD sind,
|
skizziert, welche zum Teil typisch und häufig im Umfeld von CI/CD sind,
|
||||||
@@ -14,18 +16,26 @@ Problembeschreibungen basieren auf Experteninterviews,
|
|||||||
Literaturrecherchen und Beobachtungen bei verschiedenen
|
Literaturrecherchen und Beobachtungen bei verschiedenen
|
||||||
Praxisprojekten.
|
Praxisprojekten.
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
Die Interviews wurden mit Softwareentwicklern sowie
|
Die Interviews wurden mit Softwareentwicklern sowie
|
||||||
Automatisierungs- und Integrationsexperten geführt. (CI/CD Systeme für
|
Automatisierungs- und Integrationsexperten geführt. (CI/CD Systeme für
|
||||||
VM-Images und Microservices in einer Vielzahl komplexer
|
VM-Images und Microservices in einer Vielzahl komplexer
|
||||||
Zielumgebungen) \ref{be:pfs} \ref{be:a4}
|
Zielumgebungen) \ref{be:pfs} \ref{be:a4}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
Meine Praxiserfahrungen basieren auf der Einführung eines CI/CD Systems
|
Meine Praxiserfahrungen basieren auf der Einführung eines CI/CD Systems
|
||||||
unter GitLab-CI sowie dem Aufbau einer Serverless - CI/CD Plattform
|
unter GitLab-CI sowie dem Aufbau einer Serverless - CI/CD Plattform
|
||||||
unter Jenkins X auf Kubernetes. \ref{be:gitlab} \ref{be:jx}
|
unter Jenkins X auf Kubernetes. \ref{be:gitlab} \ref{be:jx}
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
Eine weitere Quelle sind Fachartikel, Paper und Erfahrungsberichte zu
|
Eine weitere Quelle sind Fachartikel, Paper und Erfahrungsberichte zu
|
||||||
verschiedenen CI/CD Systemen in ihrer Anwendung.
|
verschiedenen CI/CD Systemen in ihrer Anwendung.
|
||||||
|
|
||||||
|
~
|
||||||
|
|
||||||
Die Probleme wurden erfasst und in Hinblick auf den Zeitpunkt, zu dem
|
Die Probleme wurden erfasst und in Hinblick auf den Zeitpunkt, zu dem
|
||||||
das Problem sichtbar wird (Einführung oder Betrieb), Problemdarstellung,
|
das Problem sichtbar wird (Einführung oder Betrieb), Problemdarstellung,
|
||||||
Ursache und Folge analysiert. Neben dem Zeitpunkt der Problemerscheinung
|
Ursache und Folge analysiert. Neben dem Zeitpunkt der Problemerscheinung
|
||||||
@@ -161,17 +171,16 @@ ein unautorisierter Zugriff auf das Produktionssystem erfolgen könnte.\cite{plo
|
|||||||
$\Rightarrow$ Kann zum Scheitern der Systemeinführung führen oder ein Workaround ist
|
$\Rightarrow$ Kann zum Scheitern der Systemeinführung führen oder ein Workaround ist
|
||||||
notwendig
|
notwendig
|
||||||
|
|
||||||
\subsubsection{\textbf{E06} -- Coding-Konvention\todo{Blödes Problem}}\label{E06}
|
\subsubsection{\textbf{E06} -- Coding-Konvention}\label{E06}
|
||||||
|
|
||||||
Unternehmens- oder Projekt-Codingrichtlinien können den Vorgaben des
|
Unternehmens- oder Projekt Coding Conventions können den Vorgaben des
|
||||||
gewünschten Tools widersprechen. Ein Workaround ist notwendig.
|
gewünschten Tools widersprechen. Ein Workaround ist notwendig. \cite{plonski_herausforderungen_Leo_2020}
|
||||||
|
|
||||||
~
|
~
|
||||||
|
|
||||||
$\Rightarrow$ Kann zum Scheitern der Systemeinführung führen oder ein Workaround ist
|
$\Rightarrow$ Kann zum Scheitern der Systemeinführung führen oder ein Workaround ist
|
||||||
notwendig
|
notwendig
|
||||||
|
|
||||||
|
|
||||||
\subsubsection{\textbf{E07} -- Nicht übereinstimmende Portvorgaben zwischen der
|
\subsubsection{\textbf{E07} -- Nicht übereinstimmende Portvorgaben zwischen der
|
||||||
Anwendungssoftware und dem Tool}
|
Anwendungssoftware und dem Tool}
|
||||||
\label{E07}
|
\label{E07}
|
||||||
@@ -331,7 +340,7 @@ Pipeline von Relevanz. Würde der Entwickler noch während der Ausführung
|
|||||||
der Releasepipeline die Situation erkennen -- wäre dieser „Notstopp``
|
der Releasepipeline die Situation erkennen -- wäre dieser „Notstopp``
|
||||||
eine Möglichkeit, das Deployment noch zu verhindern.
|
eine Möglichkeit, das Deployment noch zu verhindern.
|
||||||
|
|
||||||
(siehe B03 - fehlende Möglichkeit zum kontrolliertem Stopp der Pipeline)
|
(siehe \ref{B03} \nameref{B03})
|
||||||
|
|
||||||
\subsubsection{\textbf{B05} -- unbewusste Einbindung von Software, welche durch
|
\subsubsection{\textbf{B05} -- unbewusste Einbindung von Software, welche durch
|
||||||
Löschungsroutinen nicht permanent zur Verfügung steht} \label{B05}
|
Löschungsroutinen nicht permanent zur Verfügung steht} \label{B05}
|
||||||
|
|||||||
@@ -3,17 +3,17 @@
|
|||||||
%*******************************************************
|
%*******************************************************
|
||||||
\automark[section]{chapter}
|
\automark[section]{chapter}
|
||||||
\renewcommand{\chaptermark}[1]{\markboth{\spacedlowsmallcaps{#1}}{\spacedlowsmallcaps{#1}}}
|
\renewcommand{\chaptermark}[1]{\markboth{\spacedlowsmallcaps{#1}}{\spacedlowsmallcaps{#1}}}
|
||||||
\renewcommand{\sectionmark}[1]{\markright{\thesection\enspace\spacedlowsmallcaps{#1}}}
|
%\renewcommand{\sectionmark}[1]{\markright{\thesection\enspace\spacedlowsmallcaps{#1}}}
|
||||||
\refstepcounter{dummy}
|
%\refstepcounter{dummy}
|
||||||
\pdfbookmark[1]{Abk\"{u}rzungsverzeichnis}{abk\"{u}rzungsverzeichnis}
|
%\pdfbookmark[1]{Abk\"{u}rzungsverzeichnis}{abk\"{u}rzungsverzeichnis}
|
||||||
\markboth{\spacedlowsmallcaps{Abk\"{u}rzungsverzeichnis}}{\spacedlowsmallcaps{Abk\"{u}rzungsverzeichnis}}
|
%\markboth{\spacedlowsmallcaps{Abk\"{u}rzungsverzeichnis}}{\spacedlowsmallcaps{Abk\"{u}rzungsverzeichnis}}
|
||||||
\chapter*{Abk\"{u}rzungsverzeichnis}
|
%\chapter*{Abk\"{u}rzungsverzeichnis}
|
||||||
|
|
||||||
% Insert your acronyms here
|
% Insert your acronyms here
|
||||||
\begin{acronym}[UML]
|
%\begin{acronym}[UML]
|
||||||
\acro{DRY}{Don't Repeat Yourself}
|
% \acro{DRY}{Don't Repeat Yourself}
|
||||||
\acro{API}{Application Programming Interface}
|
% \acro{API}{Application Programming Interface}
|
||||||
\acro{UML}{Unified Modeling Language}
|
% \acro{UML}{Unified Modeling Language}
|
||||||
\end{acronym}
|
%\end{acronym}
|
||||||
|
|
||||||
\cleardoublepage
|
\cleardoublepage
|
||||||
|
|||||||
@@ -12,5 +12,5 @@
|
|||||||
\addcontentsline{toc}{chapter}{\tocEntry{#1}}%
|
\addcontentsline{toc}{chapter}{\tocEntry{#1}}%
|
||||||
\chapter*{#1}%
|
\chapter*{#1}%
|
||||||
}
|
}
|
||||||
\nocite{*}
|
%\nocite{*}
|
||||||
\printbibliography[heading=bibintoc]
|
\printbibliography[heading=bibintoc]
|
||||||
|
|||||||
@@ -344,7 +344,7 @@ Pipeline von Relevanz. Würde der Entwickler noch während der Ausführung
|
|||||||
der Releasepipeline die Situation erkennen -- wäre dieser „Notstopp``
|
der Releasepipeline die Situation erkennen -- wäre dieser „Notstopp``
|
||||||
eine Möglichkeit, das Deployment noch zu verhindern.
|
eine Möglichkeit, das Deployment noch zu verhindern.
|
||||||
|
|
||||||
(siehe B03 - fehlende Möglichkeit zum kontrolliertem Stopp der Pipeline)
|
(siehe \ref{B03} \nameref{B03})
|
||||||
|
|
||||||
\textbf{B05 -- unbewusste Einbindung von Software, welche durch
|
\textbf{B05 -- unbewusste Einbindung von Software, welche durch
|
||||||
Löschungsroutinen nicht permanent zur Verfügung steht}
|
Löschungsroutinen nicht permanent zur Verfügung steht}
|
||||||
|
|||||||
12
thesis.tex
12
thesis.tex
@@ -83,11 +83,10 @@
|
|||||||
%\cleardoublepage\include{frontbackmatter/Figures}
|
%\cleardoublepage\include{frontbackmatter/Figures}
|
||||||
%\cleardoublepage\include{frontbackmatter/Tables}
|
%\cleardoublepage\include{frontbackmatter/Tables}
|
||||||
%\cleardoublepage\include{frontbackmatter/Listings}
|
%\cleardoublepage\include{frontbackmatter/Listings}
|
||||||
%cleardoublepage\include{frontbackmatter/Acronyms}
|
\cleardoublepage\include{frontbackmatter/Acronyms}
|
||||||
%*************************************************************************
|
%*************************************************************************
|
||||||
% Mainmatter
|
% Mainmatter
|
||||||
%*************************************************************************
|
%*************************************************************************
|
||||||
\todo{Seitenbeschriftung und Seitenzahlen stimmen noch nicht ganz}
|
|
||||||
\cleardoublepage
|
\cleardoublepage
|
||||||
\pagestyle{scrheadings}
|
\pagestyle{scrheadings}
|
||||||
\pagenumbering{arabic}
|
\pagenumbering{arabic}
|
||||||
@@ -97,11 +96,10 @@
|
|||||||
\part{Seminararbeit}\label{pt:thesis}
|
\part{Seminararbeit}\label{pt:thesis}
|
||||||
\include{chapters/Einleitung}
|
\include{chapters/Einleitung}
|
||||||
|
|
||||||
\cleardoublepage
|
\cleardoublepage\include{chapters/grund}
|
||||||
\include{chapters/grund}
|
\cleardoublepage\include{chapters/problems}
|
||||||
\include{chapters/problems}
|
\cleardoublepage\include{chapters/mass}
|
||||||
\include{chapters/mass}
|
\cleardoublepage\include{chapters/fazit}
|
||||||
\include{chapters/fazit}
|
|
||||||
|
|
||||||
\cleardoublepage
|
\cleardoublepage
|
||||||
%\part{Work in Progress}\label{pt:wip}
|
%\part{Work in Progress}\label{pt:wip}
|
||||||
|
|||||||
Reference in New Issue
Block a user