\input{../settings/settings}
\usepackage{lineno}
\newcommand\tab[1][1cm]{\hspace*{#1}}

\begin{document}

  \klausur{SWT-FSE-B (Foundations of Software Engineering)}
        {Dozent (Dr. A. Heußner)}
        {Semester (Wintersemester 16/17)}
        {200}
        {Englisches Wörterbuch}

	\newpage
	
	\textbf{Generelle Hinweise:}
	\begin{itemize}
		\item Es können maximal 100 Punkte erreicht werden. Zum Bestehen der Klausur genügt es, mindestens 50 Punkte zu erzielen.
		\item Bearbeiten Sie alle sechs Aufgabensektionen und die darin enthaltenen Aufgaben/Fragen.
		\item Einzig erlaubtes Hilfsmittel ist das im Prüfungsraum zur Verfügung stehende einsprachige, englische Wörterbuch.
	\end{itemize}
	\begin{center}
		\textbf{ACHTUNG: Die Aufgabenstellung (project brief) liegt leider nicht anbei, daher folgend nur die Aufgabenstellung.}
	\end{center}
	
	\newpage

	\section*{Question Section 1: Blastoff \& Requirements}
	\subsection*{Question 1.1: [5 marks]}
	State one goal of OPS (i.e., the Online Publication System described in the project proposal).
	
	\subsection*{Question 1.2: [5 marks]}
	Describe one realistic non-functional requirement for OPS, which is not mentioned in the project proposal. Also include its rationale, fit criterion and source.
	
	\subsection*{Question 1.3: [5 marks]}
	Provide a stakeholder map for OPS. Include all stakeholders mentioned in the project brief and add two additional ones (besides the development team). Also state the role of each stakeholder.
	
	\section*{Question Section 2: Use Cases}
	\subsection*{Question 2.1: [12 marks]}
	\begin{enumerate}
		\item[(a)] Extend the use case „Copy-edit submitted article“ (on the backside of the project brief). Supply all missing fields required by the high-ceremony template. Provide reasonable values for these fields. (Do not add alternative scenarios, yet.)
		\item[(b)] Document at least two additional scenarios in high-ceremony format.
	\end{enumerate}

	\subsection*{Question 2.2: [5 marks]}
	Conduct an object lifecycle analysis of an object of class Article on the diagram supplied below. Highlight the steps of your analysis in the diagram and propose at least two additional or misiing functionalities/use cases.
	%Hier könnte dein Bild stehen:
	\image{0.7}{diag1.png}{}{}
	
	\section*{Question Section 3: Architecture \& Design}
	\subsection*{Question 3.1: [10 marks]}
	Propose a high-level architecture – especially emphasising data security and privacy for OPS by drawing an appropriate diagram that depicts the system's general structure. Highlight the architectural patterns visible in your diagram, and mention their purpose in your design.
	
	\subsection*{Question 3.2: [16 marks]}
	\begin{enumerate}
		\item[(a)] Supply a class diagram for the Strategy pattern
		\item[(b)] Based on your class diagram, supply a sequence diagram that explains the Strategy pattern behaviour.
		\item[(c)] Provide one example where the Strategy pattern can be applied in the context of OPS. Justify your answer.
	\end{enumerate}
	
	\newpage
	\section*{Question Section: Testing}
	\subsection*{Question 4.1: [18 marks]}
	Consider the following Java method, which computes the number of occurences of odd numbers up to a given number:
	
	\begin{linenumbers}
		\texttt{
			public int calcOdds(int limit) {\\
			\tab int result = 0;\\
			\tab if (limit > 0) \{\\
			\tab \tab while (limit > 0) \{\\
			\tab \tab \tab if (limit \% 2 == 1) \{\\
			\tab \tab \tab \tab result = result + 1;\\
			\tab \tab \tab \}\\
			\tab \tab \tab limit = limit - 1;\\
			\tab \tab \}\\
			\tab \}\\
			\tab else \{\\
			\tab \tab result = -1;\\
			\tab \}\\
			\tab return result;\\
			\}\\
			}
		}
	\end{linenumbers}

	\begin{enumerate}
		\item[(a)] Propose a high-quality black-box test suite that contains at least three test cases for the above method \texttt{calcOdds}. Justify your answer.
		\item[(b)] Draw the control flow graph corresponding to the above method.
		\item[(c)] Propose a white-box test suite based on the control flow graph for the above method such that full branch coverage is archieved. Justify your answer.
	\end{enumerate}
	
	\section*{Question Section 5: Petri Nets \& Concurrency}
	\subsection*{Qustion 5.1: [10 marks]}
	Consider th previous partial object lifecycle diagram for the object of class \texttt{Article}.
	
	Apply the procedure from the lectures to translate the partial object life cycle diagram for the object \texttt{:Article} (on the back side of the project proposal) to a corresponding Petri net. Assume the integer variable lines to be initialised to zero.
	
	\section*{Question Section 6: Software Processes}
	\subsection*{Qustion 6.1: [10 marks]}
	Cosider Scrum as presented in the lectures and practicals.
	\begin{enumerate}
		\item[(a)] Briefly explain Scrum.
		\item[(b)] Is Scrum appropriate for the development of OPS? Justify your answer by referring to OPS.
	\end{enumerate}
\end{document}