{"id":585,"date":"2019-08-14T21:11:52","date_gmt":"2019-08-14T19:11:52","guid":{"rendered":"https:\/\/fsr.cs.uni-potsdam.de\/?p=585"},"modified":"2019-08-14T21:11:52","modified_gmt":"2019-08-14T19:11:52","slug":"software-engineering-ii-2011","status":"publish","type":"post","link":"https:\/\/fsr.cs.uni-potsdam.de\/?p=585","title":{"rendered":"Software Engineering II 2011"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"aufgabe_1_enterprise-architekturen_14_punkte\">Aufgabe 1 [Enterprise-Architekturen] (14 Punkte)<\/h1>\n\n\n\n<ol class=\"wp-block-list\"><li> Nennen und Erl\u00e4utern sie 3 Merkmale von Enterprise-Architekturen. (6 Punkte)\n<\/li><li> Jede Transaktion sollte die ACID-Eigenschaften erf\u00fcllen. Erl\u00e4utern sie die Abk\u00fcrzung ACID. (4 Punkte)\n<\/li><li> Beschreiben sie pessimistisches und optimistisches Locking. Wozu wird es eingesetzt? (4 Punkte)\n<\/li><\/ol>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufgabe_2_typen_16_punkte\">Aufgabe 2 [Typen] (16 Punkte)<\/h1>\n\n\n\n<p>\nBetrachten sie die Sprache ganzzahliger Ausdr\u00fccke, deren Syntax in erweiterter BNF folgenderma\u00dfen definiert ist:\n<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> <code>u ::= 0 | [1-9][0-9]*<\/code>\n<\/li><li> <code>n ::= u | -u<\/code>\n<\/li><li> <code>var ::= [a-z][a-z]*<\/code>\n<\/li><li> <code>e ::= n | var | (e+e) | -e<\/code>\n<\/li><\/ul>\n\n\n\n<p>\nEs wird also zwischen vorzeichenfreien (u) und beliebigen (v)\nganzzahligen Literalen unterschieden. Ausdr\u00fccke (e) sind ganzzahlige\nLiterale, Variablen oder zusammengesetzte Ausdr\u00fccke. Die\nzusammengesetzten Ausdr\u00fccke entstehen durch Anwendung des zweistelligen <code>+<\/code>-Operators f\u00fcr die Addition ganzer Zahlen oder des einstelligen <code>-<\/code>-Operators f\u00fcr den Vorzeichenwechsel.\n<\/p>\n\n\n\n<p>\nDefinieren sie geeignete Typregeln f\u00fcr diese Ausdruckssprache, wobei zwischen Typen <code>unsigned<\/code> und <code>int<\/code> unterschieden werden soll:\n<\/p>\n\n\n\n<p>\n<code>t ::= unsigned | int<\/code>\n<\/p>\n\n\n\n<p>\nVariablen d\u00fcrfen f\u00fcr jeden dieser beiden Typen definiert werden, vorzeichenfreie Literale sind zun\u00e4chst vom Typ <code>unsigned<\/code>, andere Literale vom Typ <code>int<\/code>. Eine Umwandlung von <code>unsigned<\/code> in <code>int<\/code>\n ist zul\u00e4ssig, die umgekehrte Umwandlung jedoch nicht, auch nicht durch\nVorzeichenwechsel. Alle Ihre Typregeln sollen Typumgebungen\nber\u00fccksichtigen.\n<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufgabe_3_testen_23_punkte\">Aufgabe 3 [Testen] (23 Punkte)<\/h1>\n\n\n\n<ol class=\"wp-block-list\"><li> Unterscheiden sie statische und\ndynamische Verifikations- und Validierungsverfahren. Nennen sie jeweils 2\n statische und dynamische Verfahren. (6 Punkte)\n<\/li><li> Erl\u00e4utern sie kurz das traditionelle\n Vorgehen beim Testen. Sie k\u00f6nnen diese Aufgabe auch mit Hilfe eines\nBlockdiagramms beantworten. (4 Punkte)\n<\/li><li> Was ist ein Systemtest? (3 Punkte)\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! (2 Punkte)\n<\/li><li> Schreiben sie f\u00fcr die Klasse in\n Abbildung 1 einen Unit-Test mit JUnit Dabei sollen sie folgende\nEigenschaften pr\u00fcfen (8 Punkte):\n<ul><li> Testen sie das Anlegen eines Kontos.\n<\/li><li> Testen sie, ob Geld eingezahlt oder abgehoben werden kann.\n<\/li><li> Testen sie, ob 2 angelegte Konten identisch sind.\n<\/li><\/ul>\n<\/li><li> <strong>BONUS:<\/strong> Erkl\u00e4ren sie den Zusammenhang zwischen Testen und eXtreme Programming. (4 Punkte)\n<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Geld {\n  private double betrag;\n  private String waehrung;\n\n  public Geld(double betrag, String waehrung) {\n    this.betrag = betrag;\n    this.waehrung = waehrung;\n  }\n\n  public double getBetrag() {\n    return this.betrag;\n  }\n\n  public String getWaehrung() {\n    return this.waehrung;\n  }\n\n  public Geld add(Geld addBetrag) {\n    return new Geld(this.betrag + addBetrag.getBetrag(), this.waehrung);\n  }\n}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufgabe_4_java_modeling_language_7_punkte\">Aufgabe 4 [Java Modeling Language] (7 Punkte)<\/h1>\n\n\n\n<p>\nIn Abbildung 2 ist eine (\u2026) Java-Klasse mit einer Methode gegeben.\n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Mathe {\n  private int q;\n  private int r;\n\n  public int methode01(int a, int b) {\n    q = 0;\n    r = a;\n\n    while (!(r &lt; b)) {\n      r = r - b;\n      q = q + 1;\n    }\n    return q;\n  }\n}<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\"><li> Welchen Algorithmus beschreibt die Methode <code>methode01<\/code>? Hinweis: Als Hilfsmittel k\u00f6nnen sie eine Wertetabelle benutzen. (1 Punkt)\n<\/li><li> Die Invariante der Schleife lautet <code>a = qb + r<\/code>. Beschreiben sie in JML die Vor- und Nachbedingungen der Methode <code>methode01<\/code>, sodass diese sinnvolle Werte berechnet. (6 Punkte)\n<\/li><\/ol>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufgabe_5_uml2java_12_punkte\">Aufgabe 5 [UML2Java] (12 Punkte)<\/h1>\n\n\n\n<p>\nImplementieren sie das in Abbildung 3 dargestellte Klassendiagramm in\nJava. Die Java-Klassen sollen alle Parameter und Methodensignaturen\nenthalten. Beschreiben sie die Methodenr\u00fcmpfe in Kommentaren (\u2026). Achten\n sie dabei insbesondere auf die Multiplizit\u00e4ten und Rollen (Einzahl,\nMehrzahl).\n<\/p>\n\n\n\n<p>\n(Klassendiagramm muss noch portiert werden)\n<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufgabe_6_software-wartung_12_punkte\">Aufgabe 6 [Software-Wartung] (12 Punkte)<\/h1>\n\n\n\n<ol class=\"wp-block-list\"><li> Unterscheiden sie die Begriffe Betrieb, Wartung und Evolution. (3 Punkte)\n<\/li><li> Nennen und beschreiben sie 3 verschiedene Arten von Wartung. (6 Punkte)\n<\/li><li> Sie bekommen ein unbekanntes St\u00fcck\nQuellcode und sollen einen (\u2026) finden. Beschreiben sie drei T\u00e4tigkeiten,\n die sie als erstes durchf\u00fchren. Achten sie dabei auf eine sinnvolle\nReihenfolge.\n<\/li><li> <strong>BONUS:<\/strong> Nennen und erl\u00e4utern sie kurz die Gesetze von Lehman und Beladys.\n<\/li><\/ol>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"aufgabe_7_produktlinien_8_punkte\">Aufgabe 7 [Produktlinien] (8 Punkte)<\/h1>\n\n\n\n<p>\nDie Firma Eshopi vertreibt Software f\u00fcr Warenh\u00e4user im Internet. Die\nSoftware kann beim Kauf aus verschiedenen Komponenten zusammengestellt\nwerden. Ein Webshop besteht (\u2026) aus einem Warenkatalog, einem\nBezahlsystem und verschiedenen Sicherheitsstufen. Eine Suche kann (\u2026)\nhinzugebucht werden. Als Bezahloptionen werden Kreditkarten oder\nBankeinzug angeboten. F\u00fcr die Kreditkartenzahlung ist ein hohe\nSicherheitsniveau notwendig, (\u2026) wird alternativ als Standard genutzt.\n<\/p>\n\n\n\n<p>\nZeichnen sie ein Feature Diagramm zum E-Shop-System.\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aufgabe 1 [Enterprise-Architekturen] (14 Punkte) Nennen und Erl\u00e4utern sie 3 Merkmale von Enterprise-Architekturen. (6 Punkte) Jede Transaktion sollte die ACID-Eigenschaften erf\u00fcllen. Erl\u00e4utern sie die Abk\u00fcrzung ACID. (4 Punkte) Beschreiben sie pessimistisches und optimistisches Locking. Wozu wird es eingesetzt? (4 Punkte) Aufgabe 2 [Typen] (16 Punkte) Betrachten sie die Sprache ganzzahliger Ausdr\u00fccke, deren Syntax in erweiterter <a class=\"more-link\" href=\"https:\/\/fsr.cs.uni-potsdam.de\/?p=585\">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-585","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\/585","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=585"}],"version-history":[{"count":0,"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=\/wp\/v2\/posts\/585\/revisions"}],"wp:attachment":[{"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fsr.cs.uni-potsdam.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}