2930 views
# SE Gedächtnisprotokoll Wise 2020/2021 *Ein kollaborativ erstelltes Gedächtnisprotokoll für die SE Klausur im WiSe 2020/2021.* ## Aufgabe 1 (28 Punkte) ### a) Unterscheidung functional / non-functional Requirements 3 Unterscheidungsfälle (2 Punkte pro Unterscheidungsfall) 3 Merkmale von Elementary Business Prozessen nennen (3 Punkte) ### b) Code Review - Zwei Rollen angeben Nenne den Unterschied zwischen Verifizierung und Validierung (2 Punkte) ### c) Nenne einen Vorteil und einen Nachteil des Layered Architekturstils (2 Punkte) ### d) Architektur: Service-Based: Service: domain partitioned und technically partitioned beschreiben und unterscheiden. (3 Punkte) - Was sind zwei Ziele die man mit Abstract Factory erreichen will? (Also essentiell + Punkte nennen) - Nenne zwei Komponenten aus dem Abstract Factory Pattern und erkläre sie kurz ### e) Hier war ein Feature-Diagramm (dabei wurde für ein Feature eine Variable i in [0...50] definiert) gegeben. ![](https://md.darmstadt.ccc.de/uploads/upload_d74cc5a8d0a91e17e777465d1d652558.png) Root -> (A(optional) -> (D XOR E), B (Mandatory), C (Mandatory) -> (F XOR G)) mit F requires E Entscheide welche der folgenden 4 Produkte nicht gültig sind: P1: {Root,A,B,C(50),E,F} P2: {Root,A,B,C(100),G} P3: {Root,A,B,C(500),D,F} P4: {Root,A,B,C(50),E,F,G} (6 Punkte) ### f) 5-tägige Iterationen. Berechne die Velocity und die maximale Anzahl an SP in der nächsten Iteration. Bestimme außerdem die Userstories der nächsten Iteration. (6 Punkte) ## Aufgabe 2 (15 Punkte) Domänenmodell aufstellen. Personen haben einen Namen, eine Telefonnummer und ein Passwort. Personen sind Teil einer Gruppe. Eine Gruppe hat einen einmaligen Gruppennamen. Eine Gruppe besteht aus mindestens zwei Personen. Personen können in beliebig vielen Gruppen sein. Personen können Nachrichten verfassen. Nachrichten haben eine Identifikationsnummer. Nachrichten können als Audionachricht oder als Textnachricht verfasst werden. Jede Nachricht wird von einer Person verfasst. Eine Person kann beliebig viele Nachrichten verfassen. Marker haben eine Beschreibung und gehören jeweils zu einer Person und einer Nachricht. Jede Nachricht kann beliebig viele Marker haben und jede Person kann beliebig viele Markierungen machen. ## Aufgabe 3 - Testing (15 Punkte) Angeben der minimal nötigen Testfälle für Condition Coverage --> Begründung angeben falls Full Coverage nicht möglich. (11 Punkte) ```java= public void magic(int[] a, int[] b, int esp){ if (a.length != b.length || /*Condition c1*/ esp < 0){ /*Condition c2*/ throw new InvalidArgumentException(); } for(int i = 0; 0 < a.length /*Condition c3*/; i++){ if(a[i] + esp < b[i] || /*Condition c4*/ a[i] - esp > b[i]) /*Condition c5*/ return true; } return false; } ``` Angeben der minimal nötigen Testfälle für die Condition c2 bei der MCDC, oder falls nicht möglich kurz begründen warum. (4 Punkte) ```java= public void magic(int l, int m, int h){ if(l > 0 & /*Condition c1*/ l < m & /*Condition c2*/ m < h){ /*Condition c3*/ return true; } return false; } ``` ## Aufgabe 4 - Kohäsion (20 Punkte) (Hier war ein langer Code-Auschnitt von einer Klasse die über 30 Tage stündlich den Puls maß und dies in einem Array verzeichnete. Zusätzlich hatte sie noch Funktionalitäten um sich bei einem Server zu authentifizieren, und mit dem Server zu synchronisieren. Sie hatte ein paar java-standard Klassen importiert wie z.B. IOException, aber auch einige Klassen aus nicht-standard Packages wie HealthServer oder AESKey256) a) Angeben der direkten Kopplungen zu Klassen, Package durfte ausgelassen werden. (7 Punkte) b) Einschätzen wie gut die Wiederverwendbarkeit der Klasse aufgrund Kopplung mit anderen (2 Punkte) c) LCOM-Diagramm zeichnen und LCOM-Wert bestimmen (6 Punkte) d) Einschätzen des LCOM-Wertes. Zu hoch oder richtig? (2 Punkte) e) Wäre es besser Klasse aufzuteilen, wäre es sinnvoll im Bezug auf Kohäsion und Kopplung? (3 Punkte) ## Aufgabe 5 - Observer-Pattern und Abstract Factory (12 Punkte) Implementieren der Update()-Funktion im konkreten Observer Einfügen der notifyObservers()-Funktion an benötigten Stellen im konkreten Subjekt Konkreten Observer in der Main-Methode erstellen und mit Subjekt koppeln (8 Punkte) Nennen sie zwei Ziele der Abstract Factory (1-2 Punkte?) Nennen sie zwei Participants der Abstract Factory und beschreiben Sie deren Aufgabe (1-2 Punkte?) *Insgesamt 90 Punkte*