\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}