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