\documentclass{bschlangaul-aufgabe}

\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 2},
  Thematik = {Entwicklungsprozesse},
  Referenz = 66116-2021-F.T2-TA1-A2,
  RelativerPfad = Examen/66116/2021/03/Thema-2/Teilaufgabe-1/Aufgabe-2.tex,
  ZitatSchluessel = examen:66116:2021:03,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Iterative Prozessmodelle, Inkrementelle Prozessmodelle, Prozessmodelle, Agiles Manifest, SCRUM},
  EinzelpruefungsNr = 66116,
  Jahr = 2021,
  Monat = 03,
  ThemaNr = 2,
  TeilaufgabeNr = 1,
  AufgabeNr = 2,
}

\begin{enumerate}

%%
% a)
%%

\item Erklären Sie den Unterschied zwischen \emph{iterativen} und
\emph{inkrementellen} Entwicklungsprozessen. Nennen Sie zudem je ein
Prozessmodell als Beispiel.\index{Iterative Prozessmodelle}
\index{Inkrementelle Prozessmodelle}
\index{Prozessmodelle}
\footcite{examen:66116:2021:03}

\begin{bAntwort}
\begin{description}
\item[Iterativ:]

Ein Entwicklungszyklus wird immer wieder durchlaufen:

\bigskip

Planung $\rightarrow$ Implementierung $\rightarrow$ Testung
$\rightarrow$ Evaluation.

\bigskip

Mit jeder Iteration wird das Produkt verfeinert. Das Wasserfallmodell in
seiner normalen Form würde dies nicht erfüllen, da hier alle Phasen nur
einmal durchlaufen werden.

\bigskip

\textbf{Beispiel:} Agile Programmierung, erweitertes Wasserfallmodell

\item[Inkrementell:]

Das Projekt wird in einzelne Teile zerlegt. An jedem Teilprojekt kann
bestenfalls separat gearbeitet werden. In den einzelnen Teilprojekten
kann dann ebenfalls wieder iterativ gearbeitet werden, die beiden
Methoden schließen sich gegenseitig also nicht aus.

\bigskip

\textbf{Beispiel:} Agile Programmierung, V-Modell XT, Aufteilung in
Teilprojekte, die alle mit Wasserfallmodell bearbeitet werden
\end{description}
\end{bAntwort}

%%
% b)
%%

\item Nennen und erklären Sie kurz die vier Leitsätze der agilen
Softwareentwicklung laut \emph{Agilem Manifest}.\index{Agiles Manifest}

\begin{bAntwort}
\begin{enumerate}
\item \textbf{Individuen und Interaktionen sind wichtiger als Prozesse
und Werkzeuge}

Ein festgelegter Prozess, der nicht sinnvoll von den beteiligten
Personen umgesetzt werden kann, ist nicht sinnvoll und sollte nicht
durchgeführt werden. Es geht darum, die Stärken der Mitarbeiter
einzusetzen und sich nicht sklavisch an Abläufen zu orientieren. Es geht
darum, Freiräume zu schaffen, um das Potential des Einzelnen voll
entfalten zu lassen.

\item \textbf{Funktionierende Software ist wichtiger als umfassende
Dokumentation}

Der Kunde ist in erster Linie an einem funktionierenden Produkt
interessiert. Es soll möglichst früh ein Prototyp entstehen, der dann im
weiteren Prozess an die Bedürfnisse des Kunden angepasst wird. Eine
umfassende Dokumentation kann am Ende immer noch ergänzt werden.

\item \textbf{Zusammenarbeit mit dem Kunden ist wichtiger als
Vertragsverhandlung}

Anforderungen und Spezifikationen können sich flexibel ändern, dadurch
kann der Kunde direkt Rückmeldung geben, \dh es ist nicht wichtig im
Vertrag kleinste Details zu regeln, sondern auf die Bedürfnisse des
Kunden einzugehen. Daraus folgt direkt der letzte Punkt:

\item \textbf{Reagieren auf Veränderung ist wichtiger als das Befolgen
eines Plans}

Softwareentwicklung ist ein dynamischer Prozess. Das starre Befolgen
eines Plans widerspricht der Grundidee der agilen Programmierung.
\footcite[Seite 229]{schneider}
\end{enumerate}
\end{bAntwort}

%%
% c)
%%

\item Beschreiben Sie die wesentlichen Aktivitäten in \emph{Scrum}
(agiles Entwicklungsmodell) inklusive deren zeitlichen Ablaufs. Gehen
Sie dabei auch auf die \emph{Artefakte} ein, die im Verlauf der
Entwicklung erstellt werden.\index{SCRUM}

\begin{bAntwort}
\begin{enumerate}
\item \textbf{Initiale Projekterstellung:}

Festlegen eines Product Backlog durch den Product Owner, Erstellen von
ersten User Stories. Diese entstehen gegebenenfalls durch den Kontakt
mit den Stakeholdern, falls der Product Owner nicht selbst der Kunde
ist.

\item \textbf{Sprint planning:}

Der nächste Sprint (zwischen 1 und 4 Wochen) wird geplant. Dabei wird
ein Teil des Product Backlog als \emph{Sprint Backlog} definiert und auf
die einzelnen Entwickler verteilt. Es wird festgelegt, \emph{was}
implementiert werden soll (Product Owner anwesend) und \emph{wie} das
geschehen soll (Entwicklerteam). Während des Sprints findet jeden Tag
ein \emph{Daily Scrum} statt, ein fünfzehnminütiger Austausch zum
aktuellen Stand. Am Ende des Sprints gibt es ein \emph{Sprint Review}
und das \emph{Product Inkrement} wird evaluiert und das \emph{Product
Backlog} gegebenenfalls angepasst in Absprache mit \emph{Product Owner}
und \emph{Stakeholdern}.

\bPseudoUeberschrift{Artefakte:}

\begin{itemize}
\item Product Backlog
\item Sprint Backlog
\item Product Increment\footcite[Seite 230-231]{schneider}
\end{itemize}
\end{enumerate}
\end{bAntwort}

%%
% d)
%%

\item Nennen und erklären Sie die \emph{Rollen} in einem Scrum-Team.
\index{SCRUM}

\begin{bAntwort}
\begin{description}
\item[Product Owner]

Verantwortlich für das Projekt, für die Reihenfolge der Bearbeitung und
Implementierung, ausgerichtet auf Maximierung und wirtschaftlichen
Erfolg. Er führt und aktualisiert das \emph{Product Backlog}.

\item[Scrum Master]

Führungsperson, die das Umsetzen des Scrum an sich leitet und begleitet.
Er mischt sich nicht mit konkreten Arbeitsanweisungen ein, sondern
moderiert und versucht Hindernisse zu beseitigen, die einem Gelingen der
Sprintziele im Weg sind.

\item[Entwickler]

Sie entwicklen und implementieren die einzelnen Produktfunktionalitäten,
die vom Product Owner festgelegt wurden, in eigenverantwortlicher Zeit.
Sie müssen die Qualitätsstandards beachten.
\end{description}
\end{bAntwort}
\end{enumerate}
\end{document}
