\documentclass{bschlangaul-aufgabe}

\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 1},
  Thematik = {Softwaresysteme: Begriffe und Konzepte},
  Referenz = 66116-2016-H.T1-TA2-A1,
  RelativerPfad = Examen/66116/2016/09/Thema-1/Teilaufgabe-2/Aufgabe-1.tex,
  ZitatSchluessel = examen:66116:2016:09,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Pflichtenheft, Softwaremaße, Evolutionäre Softwaremodelle, Versionsverwaltungssoftware, Funktionale Anforderungen, Nicht-funktionale Anforderungen, Kontinuierliche Integration (Continuous Integration)},
  EinzelpruefungsNr = 66116,
  Jahr = 2016,
  Monat = 09,
  ThemaNr = 1,
  TeilaufgabeNr = 2,
  AufgabeNr = 1,
}

\begin{enumerate}

%%
% a)
%%

\item Welche Kriterien werden bei der Zielbestimmung im
Pflichtenheft\index{Pflichtenheft} unterschieden?\footcite{examen:66116:2016:09}

\begin{bAntwort}
Im Rahmen der Zielbestimmung werden die Ziele des Produktes in einer Art
Prioritätenliste exakt eingegrenzt, die in drei weitere Kategorien
gegliedert ist, die als \textbf{Muss-}, \textbf{Wunsch-} und
\textbf{Abgrenzungskriterien} bezeichnet werden.

\begin{description}
\item[Musskriterien] Zu den Musskriterien zählen die Produktfunktionen,
die für ein Funktionieren des Produktes unabdingbar sind. Ohne ihre
Umsetzung geht einfach nichts, deshalb müssen sie erfüllt werden.

\item[Wunschkriterien] Die nächste Kategorie, die Wunschkriterien, sind
zwar entbehrlich, wurden aber ausdrücklich vom Auftraggeber gefordert.
Ihre Umsetzung im Produkt ist also genauso eine Pflicht, wie die der
ersten Kategorie, das Produkt würde aber auch ohne ihre Implementierung
seinen Betrieb korrekt ausführen.

\item[Abgrenzungskriterien] Die letzte Kategorie  beschreiben die
Abgrenzungskriterien. Sie sollen die Grenzen des Produktes klarmachen
und sind von daher beinahe wichtiger als die beiden ersten Fälle denn
sie hindern die Entwickler daran, über alle Ziele hinauszuschießen.
\end{description}

\url{https://st.inf.tu-dresden.de/SalesPoint/v3.2/tutorial/stepbystep2/pflh.html}
\end{bAntwort}

%%
% b)
%%

\item Nennen Sie drei Einsatzziele von Softwaremaßen\index{Softwaremaße}.

\begin{bAntwort}
Aus
Baumann K. (1997) Softwaremaße. In: Unterstützung der objektorientierten
Systemanalyse durch Softwaremaße. Beiträge zur Wirtschaftsinformatik,
vol 23. Physica, Heidelberg. \url{https://doi.org/10.1007/978-3-662-13273-9_2}

Der Einsatz von Softwaremaßen kann vielfältige Vorteile mit sich
bringen. Folgende Ziele können mit der Anwendung von Softwaremaßen
verfolgt werden:

\begin{itemize}
\item Durch eine Bewertung kann überprüft werden, inwieweit einmal
gestellte \emph{Qualitätsanforderungen} erfüllt wurden.

\item Eine Bewertung bereits erstellter oder noch zu erstellender
Softwareprodukte kann Hilfestellung bei Entscheidungen, die für die
\emph{Projektplanung} oder das Entwicklungsmanagement zu treffen sind,
leisten. So können Softwaremaße zur Einschätzung des notwendigen
Aufwands, der zu erbringenden Kosten und des Personalbedarfs
herangezogen werden.

\item Ein möglichst frühzeitiges \emph{Aufzeigen von Schwachstellen im
Systemdesign}, die Beurteilung der Auswirkungen neuer Techniken oder
Tools auf die Produktivität der Entwickler oder auf die Qualität des
entwickelten Produkts sowie die Überprüfung der Einhaltung festgelegter
Designstandards sind weitere mögliche Einsatzfelder für Softwaremaße.

\item Darüber hinaus ist der Einsatz von Softwaremaßen \emph{Teil
umfassender Konzepte zum Softwarequalitätsmanagement}. Softwaremaße bzw.
die zugehörige Meßergebnisse tragen zunächst dazu bei, die betrachteten
Produkte oder Prozesse besser zu verstehen oder hinsichtlich
interessierender Eigenschaften zu bewerten.
\end{itemize}

\url{https://link.springer.com/chapter/10.1007%2F978-3-662-13273-9_2}
\end{bAntwort}

%%
% c)
%%

\item Welche Arten von Softwaremaßen werden unterschieden?

\begin{bAntwort}
Die Unterscheidung nach dem Messgegenstand ergibt folgende Arten von
Maßen:

\begin{description}
\item[Externe Produktmaße.]
Diese beschreiben Merkmale des Produkts, die von außen sichtbar sind,
wenngleich eventuell nur indirekt. Dazu gehören insbesondere Maße für
Qualitätsattribute wie die Wartbarkeit, die Zuverlässigkeit, die
Benutzbarkeit, die Effizienz etc.

\item[Interne Produktmaße.]
Basis für die Charakterisierung externer Produktattribute sind interne
Attribute, die sich zumindest zum Teil besser messen lassen. Hierzu
gehören \zB die Größe, die Modularität und die Komplexität.

\item[Prozessmaße.]
Diese charakterisieren Eigenschaften des Produktionsprozesses, \zB
die typische Produktivität, Kostenaufteilung auf bestimmte Arbeiten,
Dauer von Arbeitsschritten etc.

\item[Ressourcenmaße.]
Diese charakterisieren Eigenschaften der im Prozess verwendeten
Ressourcen, \zB die Auslastung von Rechnern, die typische
Produktivität und Fehlerrate eines bestimmten Ingenieurs etc.
\end{description}

\url{http://page.mi.fu-berlin.de/prechelt/swt2/node5.html}

Was sind die 3 Arten der (einfachen) Maße zur Messung von Software?

https://quizlet.com/de/339799466/softwaretechnik-theorie-flash-cards/

\begin{itemize}
\item Größenorientiert/nach Größe

\item Funktionsorientiert/nach Funktion

\item Objektorientiert/nach Objekt
\end{itemize}
\end{bAntwort}

%%
% d)
%%

\item Nennen Sie drei Merkmale evolutionärer
Softwareentwicklung.\index{Evolutionäre Softwaremodelle}

\begin{bAntwort}
Wie für jede Form der Software-Entwicklung stellt sich die Frage nach
einem geeigneten methodischen Ansatz. Generell lässt sich der Prozess
der Software-Entwicklung in die folgenden drei Abschnitte gliedern:

\begin{enumerate}
\item von der Problembeschreibung bis zur Software-Spezifikation (auch
Problemanalyse, Systemanalyse, Requirements Engineering bzw. frühe
Phasen der Software-Entwicklung ge- nannt),

\item die Software-Entwicklung im engeren (technischen) Sinn,

\item die Integration der Software in den Anwendungszusammenhang.
\end{enumerate}

Diese Einteilung gilt ebenso für die evolutionäre Software-Entwicklung,
allerdings wird hier der Schwerpunkt anders gelegt. Steht beim
klassischen Ansatz in der Regel die Software-Entwicklung im engeren Sinn
im Mittelpunkt, so werden beim evolutionären Ansatz alle drei Abschnitte
möglichst gleichgewichtig und im Zusammenhang betrachtet. Daraus
resultiert eine natürliche Tendenz zu einer zyklischen Vorgehensweise.

Daneben gibt es weitere Querbezüge: Orientiert sich die
Software-Entwicklung an einem festen Ziel, verfolgt dieses jedoch durch
schrittweises Erweitern zunächst unvollkommener Teillösungen, so wird
dieses Vorgehen inkrementell genannt. Unfertige Versuchsanordnungen oder
Teilsysteme, die am Beginn einer solchen Entwicklung stehen, werden oft
als Prototypen bezeichnet. Wählt man Prototyping als Vorgehensweise, so
kann entweder das spätere Produkt inkrementell aus einem oder mehreren
Prototypen weiterentwickelt werden oder man setzt nach einer (Wegwerf-)
Prototypphase neu auf. Beides sind Formen evolutionärer Entwicklung.

\url{http://waste.informatik.hu-berlin.de/~dahme/edidahm.pdf}
\end{bAntwort}

%%
% e)
%%

\item Nennen Sie drei Vorteile des Einsatzes von
Versionsverwaltungssoftware.\index{Versionsverwaltungssoftware}

\begin{bAntwort}
\begin{enumerate}
\item Möglichkeit, auf ältere Entwicklungsversionen zurückzukehren, wenn
sich die aktuelle als nicht lauffähig bzw. unsicher erwiesen hat (\zB
git revert)

\item Möglichkeit, dass mehrere Entwickler gleichzeitig an ein- und
denselben Softwareprojekt arbeiten und Möglichkeit, dass ihre
Entwicklungen durch das Versionsverwaltungssystem zusammengeführt werden
können (\zB git merge)

\item Möglichkeit, den Zeitpunkt oder den Urheber eines Softwarefehlers
ausfindig zumachen (\zB git blame)
\end{enumerate}
\end{bAntwort}

%%
% f)
%%

\item Worin besteht der Unterschied zwischen
funktionalen\index{Funktionale Anforderungen} und
nicht-funktionalen\index{Nicht-funktionale Anforderungen} Anforderungen?

\begin{bAntwort}
\item[Funktionale Anforderung:]
Anforderung an die Funktionalität des Systems, also „Was kann es?“

\item[Nicht-funktionale Anforderung:]
Design, Programmiersprache, Performanz
\end{bAntwort}

%%
% g)
%%

\item Was verbirgt sich hinter dem Begriff
\emph{„Continuous Integration“}\index{Kontinuierliche Integration
(Continuous Integration)}?

\begin{bAntwort}
Continuous Integration: Das fertige Modul wird sofort in das bestehende
Produkt integriert. Die Integration erfolgt also schrittweise und nicht
erst, wenn alle Module fertig sind. Somit können auch neue
Funktionalitäten sofort hinzugefügt werden ($rightarrow$ neue
Programmversion).
\end{bAntwort}
\end{enumerate}

\end{document}
