\documentclass{bschlangaul-aufgabe}

\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 2},
  Thematik = {Wahrheitsgehalt-Tabelle Software Engineering},
  Referenz = 66116-2016-H.T2-TA2-A1,
  RelativerPfad = Examen/66116/2016/09/Thema-2/Teilaufgabe-2/Aufgabe-1.tex,
  ZitatSchluessel = sosy:ab:9,
  ZitatBeschreibung = {Aufgabe 2},
  BearbeitungsStand = mit Lösung,
  Korrektheit = korrekt und überprüft,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Software Engineering, Agile Methoden, Spiralmodell, Nicht-funktionale Anforderungen, Entwurfsmuster, Schichtenarchitektur, Blackboard-Muster, Einbringen von Abhängigkeiten (Dependency Injection), Sequenzdiagramm, Zustandsdiagramm Wissen, Komponentendiagramm, Modell-Präsentation-Steuerung (Model-View-Controller), Einzelstück (Singleton), Kommando (Command), Validation, Verifikation},
  EinzelpruefungsNr = 66116,
  Jahr = 2016,
  Monat = 09,
  ThemaNr = 2,
  TeilaufgabeNr = 2,
  AufgabeNr = 1,
}

Ordnen Sie die folgenden Aussagen entsprechend ihres Wahrheitsgehaltes
in einer Tabelle der folgenden Form an:
\footcite[Aufgabe 2]{sosy:ab:9}

\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Kategorie & WAHR    & FALSCH \\\hline
X         & X1, X3  & X2 \\
Y         & Y2      & Y1 \\
$\dots$   & $\dots$ & $\dots$ \\\hline
\end{tabular}
\end{center}

\begin{description}

%%
%
%%

\item[A] Allgemein\footcite[Thema 2 Teilaufgabe 2 Aufgabe 1]{examen:66116:2016:09}

\begin{description}
\item[A1] Im Software Engineering\index{Software Engineering}
geht es vor allem darum qualitativ hochwertige Software zu entwickeln.

\item[A2] Software Engineering ist gleichbedeutend mit
Programmieren.
\end{description}

%%
%
%%

\item[B] Vorgehensmodelle

\begin{description}
\item[B1] Die Erhebung und Analyse von Anforderungen sind nicht Teil des
Software Engineerings.

\item[B2] Agile Methoden\index{Agile Methoden} eignen sich besonders gut
für die Entwicklung komplexer und sicherer Systeme in verteilten
Entwicklerteams.

\item[B3] Das Spiralmodell\index{Spiralmodell} ist ein Vorläufer
sogenannter Agiler Methoden.
\end{description}

%%
%
%%

\item[C] Anforderungserhebung

\begin{description}
\item[C1] Bei der Anforderungserhebung dürfen in keinem Fall mehrere
Erhebungstechniken (\zB{} Workshops, Modellierung) angewendet werden,
weil sonst Widersprüche in Anforderungen zu, Vorschein kommen könnten.

\item[C2] Ein Szenario beinhaltet eine Menge von Anwendungsfällen.

\item[C3] Nicht-funktionale Anforderungen\index{Nicht-funktionale
Anforderungen} sollten, wenn möglich, immer quantitativ spezifiziert
werden.
\end{description}

%%
%
%%

\item[D] Architekturmuster\index{Entwurfsmuster}

\begin{description}
\item[D1] Schichtenarchitekturen\index{Schichtenarchitektur} sind
besonders für Anwendungen geeignet, in denen Performance eine wichtige
Rolle spielt.

\item[D2] Das Black Board Muster\index{Blackboard-Muster} ist besonders
für Anwendungen geeignet, in denen Performance eine wichtige Rolle
spielt.

\item[D3] „Dependency Injection“\index{Einbringen von Abhängigkeiten
(Dependency Injection)} bezeichnet das Konzept, welches Abhängigkeiten
zur Laufzeit reglementiert.
\end{description}

%%
%
%%

\item[E] UML

\begin{description}
\item[E1] Sequenzdiagramme\index{Sequenzdiagramm} beschreiben Teile des
Verhaltens eines Systems.

\item[E2] Zustandsübergangsdiagramme\index{Zustandsdiagramm Wissen}
beschreiben das Verhalten eines Systems.

\item[E3] Komponentendiagramme\index{Komponentendiagramm} beschreiben
die Struktur eines Systems.
\end{description}

%%
%
%%

\item[F] Entwurfsmuster

\begin{description}
\item[F1] Das MVC Pattern\index{Modell-Präsentation-Steuerung
(Model-View-Controller)} verursacht eine starke Abhängigkeit zwischen
Datenmodell und Benutzeroberfläche.

\item[F2] Das Singleton Pattern\index{Einzelstück (Singleton)} stellt
sicher, dass es zur Laufzeit von einer bestimmten Klasse höchstens ein
Objekt gibt.

\item[F3] Im Kommando Enwurfsmuster (engl. „Command Pattern“)
\index{Kommando (Command)} werden Befehle in einem sog.
Kommando-Objekt gekapselt, um sie bei Bedarf rückgängig zu machen.
\end{description}

%%
%
%%

\item[G] Testen

\begin{description}
\item[G1] Validation\index{Validation} dient der Überprüfung von
Laufzeitfehlern.

\item[G2] Testen ermöglicht sicherzustellen, dass ein Programm absolut
fehlerfrei ist.

\item[G3] Verifikation\index{Verifikation} dient der Überprüfung, ob ein
System einer
Spezifikation entspricht.
\end{description}
\end{description}

\begin{bAntwort}
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Kategorie & WAHR       & FALSCH \\\hline\hline
A         & A1         & A2     \\\hline
B         & B3         & B1, B2 \\\hline
C         & C3         & C1, C2 \\\hline
D         & D3         & D1, D2 \\\hline
E         & E1, E2, E3 &        \\\hline
F         & F2, F3     & F1     \\\hline
G         & G3         &

G1\footnote{Validierung: Prüfung der Eignung beziehungsweise der Wert
einer Software bezogen auf ihren Einsatzzweck: „Wird das richtige
Produkt entwickelt?“},

G2\footnote{Ein Softwaretest prüft und bewertet Software auf Erfüllung
der für ihren Einsatz definierten Anforderungen und misst ihre
Qualität.} \\\hline
\end{tabular}
\end{center}
\end{bAntwort}

\end{document}
