{"id":588,"date":"2019-08-14T21:15:56","date_gmt":"2019-08-14T19:15:56","guid":{"rendered":"https:\/\/fsr.cs.uni-potsdam.de\/?p=588"},"modified":"2019-08-14T21:15:56","modified_gmt":"2019-08-14T19:15:56","slug":"software-engineering-ii-2012","status":"publish","type":"post","link":"https:\/\/fsr.cs.uni-potsdam.de\/?p=588","title":{"rendered":"Software Engineering II 2012"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"aufgabe_1_design-patterns_10_punkte\">Aufgabe 1 [Design-Patterns] (10 Punkte)<\/h1>\n\n\n\n<p>\nW\u00e4hlen sie aus den nachfolgend aufgelisteten Design-Patterns <strong>zwei<\/strong> aus und erl\u00e4utern sie diese n\u00e4her:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> Strategy (Strategie)\n<\/li><li> Facade (Fassade)\n<\/li><li> Composite (Kompositum)\n<\/li><li> Singleton (Einzelst\u00fcck)\n<\/li><li> Mediator (Vermittler)\n<\/li><li> Factory Method (Fabrikmethode)\n<\/li><\/ul>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufgabe_2_observer-pattern_5_punkte\">Aufgabe 2 [Observer-Pattern] (5 Punkte)<\/h1>\n\n\n\n<p>\nDas Observer-Pattern ist durch folgendes Klassendiagramm gegeben:\n<\/p>\n\n\n\n<p>\n(\u2026 Bild muss noch portiert werden \u2026)\n<\/p>\n\n\n\n<p>\nNehmen sie an, <code>KonkreterObserver<\/code> sei bereits als Beobachter von <code>KonkretesSubjekt<\/code> registriert. Nun soll <code>KonkretesSubjekt<\/code> den Beobachter \u00fcber den aktuellen Wert eines seiner Attribute benachrichtigen. Dieser Wert wird von der Methode <code>getStatus()<\/code> zur\u00fcckgegeben.\n<\/p>\n\n\n\n<p>\nNotieren sie die komplette Reihenfolge der Methodenaufrufe, um eine solche Benachrichtigung <strong>im Sinne des Observer-Patterns<\/strong> zu realisieren. Vermerken sie dabei auch, von wem die jeweilige Methode aufgerufen wird.\n<\/p>\n\n\n\n<p>\n<strong>BONUS:<\/strong> Notieren sie diese Interaktion mit Hilfe eines UML-Sequenzdiagramms.\n<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufgabe_3_sib-implementierung_15_punkte\">Aufgabe 3 [SIB-Implementierung] (15 Punkte)<\/h1>\n\n\n\n<p>\nBis auf <code>import<\/code>-Anweisungen sei ein SIB folgenderma\u00dfen definiert:\n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@SIBClass(\"se2\/klausur\/WhatSIB\")\npublic class WhatSIB implements Executable {\n  public static final String[] BRANCHES = {SIB.ERROR, SIB.DEFAULT};\n  public ContextExpression value = new ContextExpression(\"${input}\", Integer.class, false);\n  public ContextKey result = new ContextKey(\"result\", Scope.LOCAL, true);\n\n  public String trace(ExecutionEnvironment env) {\n    try {\n      Integer inc = (Integer) value.evaluate(env);\n      inc++;\n      env.put(result, inc);\n      return SIB.DEFAULT;\n    } catch (Exception e) {\n      return SIB.ERROR;\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\"><li> Welche Rolle spielt die Annotation in Zeile 1?\n<\/li><li> Welche Branches und welche Parameter\n sind im SIB-Inspektor-Fenster des jABC-Tools sichtbar, wenn im\nSLG-Editor (Hauptfenster) ein Exemplar des <code>WhatSIB<\/code> durch Anklicken aktiviert ist?\n<\/li><li> Wodurch wird die <code>trace<\/code>-Methode aufgerufen?\n<\/li><li> Auf welcher Datenstruktur basiert der Ausf\u00fchrungskontext <code>env<\/code>?\n<\/li><li> Welche Ausf\u00fchrungssemantik hat der Methodenaufruf <code>value.evaluate(env)<\/code>?\n<\/li><li> Welche Ausf\u00fchrungssemantik hat der Methodenaufruf <code>env.put(result, inc)<\/code>?\n<\/li><li> Welche Bedeutung hat der R\u00fcckgabewert vom Typ <code>String<\/code> der <code>trace<\/code>-Methode?\n<\/li><li> Welche Funktionalit\u00e4t realisiert der <code>WhatSIB<\/code>? (Eine verbale Erkl\u00e4rung gen\u00fcgt. Benutzen sie aber die korrekten Termini zur Bezeichnung der Eingabe- und Ausgabewerte.)\n<\/li><\/ol>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufabe_4_testen_15_punkte\">Aufabe 4 [Testen] (15 Punkte)<\/h1>\n\n\n\n<ol class=\"wp-block-list\"><li> Erl\u00e4utern Sie die Begriffe Black-Box- und White-Box-Testen.\n<\/li><li> Wenn ein Test mit optimal gew\u00e4hlten\nTestf\u00e4llen (bei 100% Abdeckung) keine Fehler offenbart, ist dann die\ngetestete Software sicher fehlerfrei? Begr\u00fcnden sie!\n<\/li><li> Schreiben sie f\u00fcr die Klasse in Abbildung 2 einen Zweig\u00fcberdeckungstest (C<sub>1<\/sub>) mit JUnit.\n<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Coverage {\n  public int x = 0;\n  public int y = 0;\n  public int z = 0;\n\n  public void methode01(int a, int b) {\n    if (a &lt; b) {\n      x = b;\n      z = 1;\n    }\n\n    if (a + b &lt; 10) {\n      y = x + z;\n    }\n    else {\n      y = x + a;\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufgabe_5_enterprise_applications_15_punkte\">Aufgabe 5 [Enterprise Applications] (15 Punkte)<\/h1>\n\n\n\n<ol class=\"wp-block-list\"><li> Was verstehen sie unter dem Begriff <em>Inconsistent Read<\/em>?\n<\/li><li> Definieren sie den Begriff der <em>Transition<\/em> im Sinne der Architektur von Enterprise Applications. Erl\u00e4utern sie die Bedeutung aller definierenden Eigenschaften.\n<\/li><\/ol>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufgabe_6_das_statische_typsystem_20_punkte\">Aufgabe 6 [Das statische Typsystem] (20 Punkte)<\/h1>\n\n\n\n<p>\nDie Sprache <strong>JAUS+<\/strong> ist folgenderma\u00dfen definiert.\n<\/p>\n\n\n\n<p>\n<strong>Syntax<\/strong> in erweiterter BNF:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> <code>n ::= 0 | [1-9][0-9]*<\/code>\n<\/li><li> <code>x ::= m | p<\/code>\n<\/li><li> <code>b ::= true | false<\/code>\n<\/li><li> <code>e ::= n | b | x | (e+e) | (e*e) | !e<\/code>\n<\/li><\/ul>\n\n\n\n<p>\n<strong>Typsprache<\/strong> in BNF:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> <code>t ::= int | boolean<\/code>\n<\/li><\/ul>\n\n\n\n<p>\n<strong>Typregeln<\/strong>:\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img5aa9401a3872910970bc4c5e5e6eb155.png\" alt=\"$ \\texttt{[INT]}\\frac{}{A~\\vdash~n:~\\texttt{int}} $\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img3cfa5b9827adf2d08b78057cdf04b2fe.png\" alt=\"$ \\texttt{[BOOL]}\\frac{}{A~\\vdash~b:~\\texttt{boolean}} $\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img00592b31133c47727999eef442ec6d5c.png\" alt=\"$ \\texttt{[VAR]}\\frac{x:~t\\in A}{A~\\vdash~x:~t} $\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img64b3eb5baba175b1f5585758ead2ee94.png\" alt=\"$ \\texttt{[ADD]}\\frac{A~\\vdash~e_1:~\\texttt{int}~~~~~A~\\vdash~e_1:~\\texttt{int}}{A~\\vdash~(e_1+e_2):~\\texttt{int}} $\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img37d314b628b9ec6bd5e49a0d298e1151.png\" alt=\"$ \\texttt{[MULT]}\\frac{A~\\vdash~e_1:~\\texttt{int}~~~~~A~\\vdash~e_1:~\\texttt{int}}{A\\vdash~(e_1*e_2):~\\texttt{int}} $\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/imgf9b83fdff137d1ea0eca0b94b34cbfc1.png\" alt=\"$ \\texttt{[NOT]}\\frac{A~\\vdash~e:~\\texttt{boolean}}{A~\\vdash~!e:~\\texttt{boolean}} $\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img2cbaf8d87f07e8f6509976455f136498.png\" alt=\"$ \\texttt{[DIS]}\\frac{A~\\vdash~e_1:~\\texttt{boolean}~~~~~A~\\vdash~e_1:~\\texttt{boolean}}{A~\\vdash~(e_1+e_2):~\\texttt{boolean}} $\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/imgd362205ed3b02687d7b34e80959dd225.png\" alt=\"$ \\texttt{[KON]}\\frac{A~\\vdash~e_1:~\\texttt{boolean}~~~~~A~\\vdash~e_1:~\\texttt{boolean}}{A~\\vdash~(e_1*e_2):~\\texttt{boolean}} $\"\/><\/figure>\n\n\n\n<p>\n<strong>Berechnungsregeln<\/strong>:\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img4e1ca77d66478bb03fae39320fb80a2e.png\" alt=\"$ \\texttt{[B-ADD]}\\frac{}{(n_1+n_2)\\rightarrow m}~~\\texttt{mit}~~\\lsem m\\rsem_N=\\lsem n_1\\rsem_N+\\lsem n_2\\rsem_N $\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img3d4bde44ef45dc403dbea6233087d8bd.png\" alt=\"$ \\texttt{[B-MULT]}\\frac{}{(n_1*n_2)\\rightarrow m}~~\\texttt{mit}~~\\lsem m\\rsem_N=\\lsem n_1\\rsem_N+\\lsem n_2\\rsem_N $\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img77251907e68a49930657eb18ca029605.png\" alt=\"$ \\texttt{[B-TRUE]}\\frac{}{\\texttt{!true}~\\rightarrow~\\texttt{false}}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/imgbe9b13359bf64e5f7b66b92a325a399e.png\" alt=\"$ \\texttt{[B-FALSE]}\\frac{}{\\texttt{!false}~\\rightarrow~\\texttt{true}}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/imgfc3d942211250d1ac0366961e5383b15.png\" alt=\"$ \\texttt{[B-DIS-TT]}\\frac{}{(\\texttt{true}+\\texttt{true})~\\rightarrow~\\texttt{true}}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/imge834a75f51743d83f789a4ca65cdb7c9.png\" alt=\"$ \\texttt{[B-DIS-TF]}\\frac{}{(\\texttt{true}+\\texttt{false})~\\rightarrow~\\texttt{true}}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img538551c6b3518dc0a1b7de4724f0198b.png\" alt=\"$ \\texttt{[B-DIS-FT]}\\frac{}{(\\texttt{false}+\\texttt{true})~\\rightarrow~\\texttt{true}}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img764271e71478347095f78e787fd61610.png\" alt=\"$ \\texttt{[B-DIS-FF]}\\frac{}{(\\texttt{false}+\\texttt{false})~\\rightarrow~\\texttt{false}}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/imgb6976f107fb2b9489addb5d875e8e239.png\" alt=\"$ \\texttt{[B-KON-TT]}\\frac{}{(\\texttt{true}*\\texttt{true})~\\rightarrow~\\texttt{true}}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/imgcf114d71f671584114059ca85c4db79f.png\" alt=\"$ \\texttt{[B-KON-TF]}\\frac{}{(\\texttt{true}*\\texttt{false})~\\rightarrow~\\texttt{false}}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img1efd562ed4de6ae113fa852f282ee4da.png\" alt=\"$ \\texttt{[B-KON-FT]}\\frac{}{(\\texttt{false}*\\texttt{true})~\\rightarrow~\\texttt{false}}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img4279e2b90747b5ce595cc88f1aa631c6.png\" alt=\"$ \\texttt{[B-KON-FF]}\\frac{}{(\\texttt{false}*\\texttt{false})~\\rightarrow~\\texttt{false}}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img95219d69a1df0ff99bccdefa94d7053a.png\" alt=\"$ \\texttt{[B-NOT]}\\frac{e~\\rightarrow~e'}{!e~\\rightarrow~!e'}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img26b75a6ffd1c6b1a1b84bcffa843fa09.png\" alt=\"$ \\texttt{[B+L]}\\frac{e_1~\\rightarrow~e'_1}{(e_1+e_2)~\\rightarrow~(e'_1+e_2)}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img0e52b5793583059ea088df86793ebdc5.png\" alt=\"$ \\texttt{[B*L]}\\frac{e_1~\\rightarrow~e'_1}{(e_1*e_2)~\\rightarrow~(e'_1*e_2)}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img0590dbf3581d0d4a7daf99ef0ab6377c.png\" alt=\"$ \\texttt{[B+R]}\\frac{e~\\rightarrow~e'_1}{(v+e)~\\rightarrow~(v+e')}$\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fara.cs.uni-potsdam.de\/lib\/exe\/fetch.php?media=wiki:latex:\/img43bf4b81941e88d5943a89ea1aea2742.png\" alt=\"$ \\texttt{[B*R]}\\frac{e~\\rightarrow~e'_1}{(v*e)~\\rightarrow~(v*e')}$\"\/><\/figure>\n\n\n\n<ol class=\"wp-block-list\"><li> Welche der folgenden Ausdr\u00fccke sind in <strong>JAUS+<\/strong> syntaktisch korrekt? (Ankreuzen!)\n<ul><li> <code>(m+p)<\/code>\n<\/li><li> <code>(17+(m*2))<\/code>\n<\/li><li> <code>(p!+(p*false))<\/code>\n<\/li><li> <code>(p+!(p*false))<\/code>\n<\/li><\/ul>\n<\/li><li> Es seien die Variablen <code>m<\/code> und <code>p<\/code> wie folgt definiert und initialisiert:<br \/>\n<code>int m = 6;<\/code><br \/>\n<code>boolean p = true;<\/code><br \/>\n<br \/>\nNotieren sie die dadurch definierte Typumgebung!\n<\/li><li> Weisen sie die Typkorrektheit des Ausdrucks <code>e=!(!p+(true*p))<\/code> mit Hilfe eines Herleitungsbaums nach.\n<\/li><li> Wird die Information der\nTypkorrektheit zur Compile-Zeit oder zur Laufzeit gewonnen? Welche\nFehler sind dadurch zu welchem Zeitpunkt ausgeschlossen?\n<\/li><li> Werten sie diesen Ausdruck <code>e<\/code> mit Hilfe der Berechnungsregeln aus und rechtfertigen sie den ersten Berechnungsschritt mit einem Herleitungsbaum.\n<\/li><\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Aufgabe 1 [Design-Patterns] (10 Punkte) W\u00e4hlen sie aus den nachfolgend aufgelisteten Design-Patterns zwei aus und erl\u00e4utern sie diese n\u00e4her: Strategy (Strategie) Facade (Fassade) Composite (Kompositum) Singleton (Einzelst\u00fcck) Mediator (Vermittler) Factory Method (Fabrikmethode) Aufgabe 2 [Observer-Pattern] (5 Punkte) Das Observer-Pattern ist durch folgendes Klassendiagramm gegeben: (\u2026 Bild muss noch portiert werden \u2026) Nehmen sie an, KonkreterObserver <a class=\"more-link\" href=\"https:\/\/fsr.cs.uni-potsdam.de\/?p=588\">weiterlesen&#8230;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-588","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=\/wp\/v2\/posts\/588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=588"}],"version-history":[{"count":0,"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=\/wp\/v2\/posts\/588\/revisions"}],"wp:attachment":[{"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}