From 2603d88913f23e113d4c77a89252490a4fd5d648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Tue, 27 Jun 2017 21:51:21 +0200 Subject: [PATCH] Add SWT-FSE-B exam of WS1617 --- .gitignore | 1 + .../WS1617 FSE.tex | 105 ++++++++++++++++++ .../diag1.png | Bin 0 -> 15692 bytes 3 files changed, 106 insertions(+) create mode 100644 SWT-FSE-B Foundations of Software Engineering/WS1617 FSE.tex create mode 100644 SWT-FSE-B Foundations of Software Engineering/diag1.png diff --git a/.gitignore b/.gitignore index 90d41de..3c97432 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,4 @@ *.xdy *.tdo *.pdf +*.DS_Store diff --git a/SWT-FSE-B Foundations of Software Engineering/WS1617 FSE.tex b/SWT-FSE-B Foundations of Software Engineering/WS1617 FSE.tex new file mode 100644 index 0000000..f3afca2 --- /dev/null +++ b/SWT-FSE-B Foundations of Software Engineering/WS1617 FSE.tex @@ -0,0 +1,105 @@ +\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} \ No newline at end of file diff --git a/SWT-FSE-B Foundations of Software Engineering/diag1.png b/SWT-FSE-B Foundations of Software Engineering/diag1.png new file mode 100644 index 0000000000000000000000000000000000000000..2d032086c10838228a21bb9df7f996826f7f64d9 GIT binary patch literal 15692 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