\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{datetime}
\usepackage[]{amsmath} 
\usepackage[]{amsthm}
\usepackage[]{amssymb}
\usepackage{tikz}
\usetikzlibrary{trees}

\title{Softwaretechnik - Seminar}
\begin{document}

\section{Werkzeuge der Softwareentwicklung}
\subsection{Aufgabe 1}
\textit{In der Softwaretechnik gibt es eine große Menge an Programmen und Systemen, die bei der Entwicklung eines Softwareprojekts verwendet werden.}\\
\textit{In welche Kategorien können die Werkzeuge unterteilt werden? Nennen Sie jeweils ein Beispiel. Welchen Zweck verfolgen Werkzeuge der einzelnen Kategorien?}\\
\begin{description}
    \item[Analyse] Lastenheft
    \item[Modellierung/Entwurf] UML, Diagramme
    \item[Implementierung/Programmierung] IDE, VSCode, 
    \item[Fehler tracken] BugZilla
    \item[Versionsverwaltung] Git, GitLab    
\end{description}

\subsection{Aufgabe 2}
\textit{Machen Sie sich mit den Möglichkeiten zur Planung von Softwareprojekten am Beispiel von Github vertraut.}\\
\textit{(a) Welche Instrumente der Projektplanung bietet die Plattform Github und was sind deren wichtigste Funktionen und Eigenschaften?}\\
\begin{description}
    \item[Code Viewer] schnelle Einsicht in alle Teile des Codes
    \item[Issues] Bug-Tracking/Sammlung und offene Lösungsfindung
    \item[Pull Requests] Code von anderen einfach implemenieren 
    \item[Actions] Automation von wiederholenden Aktionen bei bestimmten Events (z.B. Merge/Pull)
    \item[Tasks] Aufgaben sammeln, erledigen und überblicken 
    \item[Notifications] Nachrichtenaustausch und Repository Informationen
\end{description}
\noindent\textit{(b) Welche Personengruppen können am Prozess der Projektplanung beteiligt sein?}\\
Programmierer, DevOps, Redakteur, Prüfer, Konfigurationsmanager, Architekt, Analytiker, u.U. Kunden und/oder Endbenutzer

\subsection{Aufgabe 3}
\textit{Versionierung ist ein zentrales Element bei der konsistenten Gruppenarbeit an Projekten.}\\
\textit{(a) Welche Funktionen bietet eine Versionsverwaltung und welche Vorteile ergeben sich für die Entwicklung?}\\
\begin{itemize}
    \item Protokolliert Änderungen an einer oder mehreren Dateien über Zeit hinweg
    \item Dateien oder Projekte auf bestimmten Zeitpunkt zurücksetzten
    \item Nachverfolgen der Aktivität und Qualität von beteiligten Personen
    \item Problemfindung
\end{itemize}

\textit{(b) Was bedeuten die folgenden Begriffe im Kontext der Versionsverwaltung der Git-Software?}\\
\begin{description}
    \item[Branch] unterteilung der Entwicklung in mehrere Zweige/Pfade
    \item[Checkout] Wechseln zu einem existierenden Zweig/Branch
    \item[Pull-Request \& Merge] Vereinigen neuer und alter Commits
    \item[Tags] wichtige Punkte in Historie markieren, z.B. Releases
\end{description}

\textit{(c) Wie sollte die Versionierung während der Entwicklung verwendet werden?}\\
Sehr viel Committen; jede Abteilung/Leitung ein eigener Branch; Merge nur durch DevOp/Architekt;

\subsection{Aufgabe 4}
\textit{Welche Funktionen bringt eine Entwicklungsumgebung (IDE) mit und wie integrieren sie sich in den Entwicklungsprozess?}
\begin{itemize}
    \item Anbindung an Versionsverwaltung
    \item Debugger und Fehlerfindung
    \item Formatierung (prettify/beautify)
    \item Automatisierung
    \item Verwaltung verschiedener Projekte
\end{itemize}

\subsection{Aufgabe 5}
\textit{Dokumentation ist ein Teil des kompletten Entwicklungsprozesses.}\\
\textit{(a) Nennen Sie verschiedene Arten der Dokumentation. Welche Programme oder Hilfsmittel können dabei verwendet werden?}\\
\begin{description}
    \item[Lastenheft]
    \item[Pflichtenheft]
    \item[Git Wiki] GitHub 
\end{description}

\noindent\textit{(b) Welche Rolle spielen Modellierung und UML in diesem Prozess?}\\


\newpage
\section{Anforderungsanalyse}
\subsection{Aufgabe 1}
\textit{Die Anforderungsanalyse ist ein wichtiger Teilschritt zu Beginn eines Softwareentwicklungsprozesses und ist der erste Schritt nach Erhalt des Lastenheftes Ihres Auftraggebers. Das Ergebnis der Anforderungsanalyse ist das Pflichtenheft als ein zentraler Ausgangspunkt des Entwicklungsprozesses. Welche Bestandteile und Informationen muss ein Pflichtenheft enthalten?}\\


\subsection{Aufgabe 2}
\textit{Die Anforderungsdefinition ist ein Teil des Pflichtenheftes.}\\
\textit{(a) Stellen Sie ausgehend von der Beschreibung aus dem Video die funktionalen sowie nichtfunktionalen Anforderungen an das zu entwickelnde Umweltplaketten-Spiel
auf. Halten Sie die Beschreibung der Anforderungen in Ihrem Dokument fest (z.B. in Form einer Liste oder einer Tabelle). Zur Beschreibung einer Anforderung sollen mindestens die folgenden Eigenschaften gehören:}\\
\begin{itemize}
    \item eine eindeutige ID (z.B. F01, F02, ... für funktionale, NF01, NF02, ... für nichtfunktionale Anforderungen)
    \item ein für den Menschen verständlicher Name
    \item die eigentliche Beschreibung
    \item Ihre Bewertung der Priorität der Anforderung (z.B. nach ’Muss’, ’Kann/Sollte’ und ’Optional/Nice-to-have’)
\end{itemize}
\textit{(b) In der Vorlesung haben Sie etwas über Meta-Anforderungen, also Anforderungen an Anforderungen gelernt (z.B. Vollständigkeit, Eindeutigkeit, Korrektheit, usw.). Überprüfen Sie, ob die von Ihnen aufgestellten Anforderungen diesen Kriterien gerecht werden. Überarbeiten Sie Ihre Anforderungen gegebenenfalls. Am Ende sollen Ihre beschriebenen Anforderungen bestmöglich den Meta-Anforderungen genügen.}\\


\subsection{Aufgabe 3}
\textit{Stellen Sie die Haupt-Anwendungsfälle und Akteure der zu entwickelnden Software in Form von Use-Case-Diagrammen dar und legen Sie die Systemgrenzen fest. Wenn möglich, verfeinern Sie einen der Use-Cases.}\\

\newpage
\section{Grobentwurf 1: Klassendiagramm}
\textit{Im Folgenden ist eine Liste einiger Anforderungen an das zu entwickelnde Umweltplaketten-Spiel aus der Anforderungsanalyse dargestellt:}
\begin{enumerate}
    \item 1. Ausführung der Anwendung im Fenstermodus
    \begin{enumerate}
        \item 1.1. Darstellung mit einer festen Auflösung von 1024x786 Pixeln
        \item 1.2. Aktualisierung der Szene mit (mindestens) 25 Bildern pro Sekunde
    \end{enumerate}
    \item 2. Beim Spielstart wird die Szene mit bis zu vier Bäumen gefüllt
    \begin{itemize}
        \item 2.1. Ein Baum erhält fixe Koordinaten
        \item 2.2. Seine Koordinaten können zur Lebenszeit nicht geändert werden
    \end{itemize}
    \item 3. Während des Spiels werden außerhalb des linken Randes Fahrzeuge erzeugt, welche anschließend gerade nach rechts durchs Bild fahren
    \begin{enumerate}
        \item 3.1. Jedes Fahrzeug erhält eine Umweltplakette. Diese drückt die dem Auto zugeordnete Emission aus.
        \item 3.2. Die Geschwindigkeit sowie tatsächliche Emission des Autos werden durch seinen Motor bestimmt.
        \item 3.3. Die Geschwindigkeit eines Fahrzeugs wird bei Erzeugung zufällig gewählt, beträgt jedoch maximal 130 km/h
        \item 3.4. Die Emission wird durch Abgaswolken hinter dem Fahrzeug dargestellt und hat drei Arten (schwach, mittel, stark)
        \item 3.5. Die Umweltplakette wird auf dem Auto dargestellt und existiert in drei Varianten (grün, gelb, rot)
        \item 3.6. Folgende Kombinationen werden im Sinne der Schadstoffklassen als richtig akzeptiert: (stark, rot), (mittel, gelb), (schwach, grün)
    \end{enumerate}
    \item 4. Durch einen Mausklick auf die Umweltplakette eines Fahrzeugs wechselt die Farbe der Plakette (gelb, rot, grün, gelb, . . . )
    \item 5. Beim Verlassen des rechten Randes wird geprüft, ob das Fahrzeug die richtige Umweltplakette hat.
    \begin{enumerate}
        \item 5.1. Passt die Plakette zur Emissionshöhe wird, erhält der Spieler Punkte
        \item 5.2. Passt die Plakette nicht zur Emissionshöhe, wird ein Leben abgezogen
    \end{enumerate}
\end{enumerate}
\textit{Aufgabe: Auf Basis der oben beschriebenen Anforderungen soll ein erster struktureller Grobentwurf des Spiels erstellt werden.}\\

\newpage
\section{Grobentwurf 2: Sequenzdiagramm}
\textit{Nachdem Sie die grundlegende Struktur des zu entwickelnden Spiels entworfen haben, soll nun ein Grobentwurf des Verhaltens erstellt werden. Verwenden Sie das UML-Sequenzdiagramm um den beispielhaften Ablauf des Spiels vom Zeitpunkt der Erzeugung bis zum Zeitpunkt der Zerstörung eines Fahrzeugs zu modellieren.}


\end{document}