19
Klausur im Fach Software-Engineering – Einführung 04.08.2014 Nachname: ___________________ Vorname: ___________________ Matrikelnummer: ____________________ Bitte beachten Sie folgende Punkte: Die Klausur umfasst 17 Seiten (ohne dieses Deckblatt) auf 9 Blättern mit 8 Aufgaben. Prüfen Sie zu Beginn die Klausur auf Vollständigkeit! Die Bearbeitungszeit beträgt 90 Minuten. Es sind alle Aufgaben zu bearbeiten. Hilfsmittel sind nicht erlaubt! (Auch keine Wörterbücher!) Die Aufgaben sind unabhängig voneinander lösbar. Sie können in beliebiger Reihenfolge bearbeitet werden. Nur im Folgenden unterschriebene Klausuren werden benotet! Viel Erfolg! Unterschrift: Aufgabe 1 2 3 4 5 6 7 8 maximal 10 6 12 14 16 12 12 8 90 Punkte Zeichen Datum Unterschrift Prüfer Note Datum Unterschrift Mitarbeiter Klausur eingesehen am Datum Unterschrift Student Institut für Datentechnik Fachgebiet Echtzeitsysteme Prof. Dr. rer. nat. Andy Schürr

Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Embed Size (px)

Citation preview

Page 1: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Klausur im Fach

Software-Engineering – Einführung 04.08.2014

Nachname: ___________________ Vorname: ___________________

Matrikelnummer: ____________________

Bitte beachten Sie folgende Punkte:

• Die Klausur umfasst 17 Seiten (ohne dieses Deckblatt) auf 9 Blättern mit 8 Aufgaben. Prüfen Sie zu Beginn die Klausur auf Vollständigkeit!

• Die Bearbeitungszeit beträgt 90 Minuten. Es sind alle Aufgaben zu bearbeiten. • Hilfsmittel sind nicht erlaubt! (Auch keine Wörterbücher!) • Die Aufgaben sind unabhängig voneinander lösbar. Sie können in beliebiger

Reihenfolge bearbeitet werden. • Nur im Folgenden unterschriebene Klausuren werden benotet!

Viel Erfolg! Unterschrift:

Aufgabe 1 2 3 4 5 6 7 8 ∑ maximal 10 6 12 14 16 12 12 8 90 Punkte Zeichen

Datum Unterschrift Prüfer Note

Datum Unterschrift Mitarbeiter Klausur eingesehen am Datum Unterschrift Student

Institut für Datentechnik Fachgebiet Echtzeitsysteme Prof. Dr. rer. nat. Andy Schürr

Page 2: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“
Page 3: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Matrikelnummer:

| 1

Aufgabe 1: Allgemeine Fragen __ / 10 Beantworten Sie die nachfolgenden Fragen und ergänzen Sie die Lücken durch passende Aussagen und/oder Begriffe.

(1) Nennen Sie einen der drei Hauptgründe für das Scheitern von Software-Projekten. ________________________________________________

(2) Ein Software-System ist (funktional) korrekt, wenn es sich genauso verhält, wie…

________________________________________________ ________________________________________________

(3) Was zeichnet robuste Software aus?

________________________________________________ ________________________________________________

(4) Was zeichnet portierbare Software aus?

________________________________________________ ________________________________________________

(5) Nennen Sie zwei der wesentlichen Endergebnisse einer Machbarkeitsstudie.

________________________________________________

(6) Wie heißen die zweite (a) und die dritte (b) Phase des Wasserfallmodells? (Verwenden Sie die üblichen Bezeichnungen aus der Vorlesung bzw. der Übung.) (a)_____________________________ (b)_____________________________

(7) Nennen Sie zwei Kritikpunkte am einfachen Wasserfallmodell!

________________________________________________ ________________________________________________

(8) Mit welchem Begriff werden zusammenfassend Interessensgruppen bei Software-

Projekten bezeichnet? (Gesucht ist ein englischer Begriff). ______________________

(9) Nennen Sie drei unterschiedliche Arten von Datenbanken.

1._______________________________________________ 2._______________________________________________ 3._______________________________________________

(10) Was versteht man unter dem Begriff des Refactoring?

________________________________________________ ________________________________________________ ________________________________________________

Page 4: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

| 2

Aufgabe 2: Logik in der OCL __ / 6 In der Object Constraint Language (OCL) wird eine dreiwertige Logik verwendet. Beantworten Sie unter dieser Voraussetzung die folgenden beiden Teilaufgaben. a) Welche konkreten Logikwerte kennt die OCL?

1. _______________ 2. _______________ 3. _______________

b) Füllen Sie bitte die folgende Wahrheitstabelle für zwei Variablen „a“ und „b“ (beide

können je jeden Wert aus a) annehmen) sowie das Ergebnis des logischen Ausdrucks not (a or b) für die jeweils möglichen Werte für „a“ und „b“ aus.

a b not (a or b)

Page 5: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Matrikelnummer:

| 3

Aufgabe 3: UML - Use-Cases __ / 12 Im Folgenden ist eine Beschreibung eines technischen Systems in natürlicher Sprache gegeben. Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“ erfasst. Nutzen Sie für Ihre Lösung die Vorlage auf der nachfolgenden Seite und vervollständigen Sie diese entsprechend. Zeichnen Sie dabei auch alle relevanten Akteure ein.

Hintergrund: Ein Reisebüro benötigt eine Software für die Verwaltung seiner Reiseangebote. Sie sollen nun die wichtigsten Use-Cases der Software in Form eines Use-Case-Diagramms erfassen und dokumentieren.

User-Story - „Verwaltungssoftware eines Reisebüros“

• Die Reiseangebote des Reisebüros können durch Gäste, registrierte Kunden, und Reisebüromitarbeiter abgefragt werden.

• Reisebüromitarbeiter können im System Reiseangebote, die immer entweder Bahnreiseangebote oder Flugreiseangebote sind, anlegen.

• Registrierte Kunden können Tickets für Reiseangebote buchen. Manchmal kann es vorkommen, dass die Buchung für ein Reiseangebot nicht mehr möglich ist. In einem solchen Fall soll das System dem Kunden eine Alternative vorschlagen.

• Reisebüromitarbeiter können Planänderungen für eine Reise im System melden. Bei einer solchen Meldung werden die betroffenen Kunden über die Planänderung durch das Versenden einer E-Mail informiert.

• Zusätzlich können Reisebüromitarbeiter die Rechnung für eine Buchung hochladen. In diesem Fall wird der jeweilige Kunde durch das Versenden einer E-Mail vom System über die Rechnung informiert. Der Kunde kann im System seine Rechnung herunterladen.

Page 6: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

| 4

- Diese Seite wurde bewusst leer gelassen -

Page 7: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Matrikelnummer:

| 5

Akteure Verwaltungssoftware eines Reisebüros

Page 8: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

| 6

Aufgabe 4: UML – Klassendiagramm, Java und OCL __ / 14

a) Vervollständigen Sie die Java-Codefragmente auf den nachfolgenden Seiten anhand des

oben gezeigten Klassendiagramms. Achten Sie dabei auf die korrekte Abbildung wichtiger Details, wie beispielsweise der Sichtbarkeiten und der Multiplizitäten. Hinweise:

• Nicht alle Lücken müssen zwingend ausgefüllt werden! • Verwenden Sie nur passende Collection-Untertypen aus der Java-API! Beachten

Sie hierbei ggf. Mengen- bzw. Listensemantiken.

b) Schreiben Sie, passend zum Klassendiagramm, OCL-Ausdrücke für die nachfolgenden Aussagen. Achten Sie auf korrekte OCL-Syntax. Beachten Sie, dass ein vollständiger Ausdruck sowohl die Art des Constraints als auch dessen Kontext aufführen muss.

i. Bezüglich Classifier soll gelten: keine zwei Reference-Instanzen mit identischem name-Wert sollen in der Menge references existieren.

ii. Es soll für jeden Classifier gelten, dass die Operation-Instanzen der jeweiligen Classifier-Instanz, die in der Menge methods enthalten sind, diese Classifier-Instanz selbst nicht unter den exceptions enthalten dürfen.

kursiv!

kursiv!

Page 9: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Matrikelnummer:

| 7

Zu Aufgabe 4:

public Visibility {

; }

public Classifier {

id ;

name ;

references ;

methods ;

( f

) {…} }

public NamedElement {

getName ( f

); }

public Operation {

name ;

classifier ;

exceptions ;

( f

) {…} }

Page 10: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

| 8

public TypedElement {

visibility ;

type ;

isUnique (); }

public Reference {

derived ;

name ;

classifier ;

( f

) {…}

( f

) {…} }

ACHTUNG: bitte auch den Aufgabenteil b) („OCL“, S. 6) beachten!

Page 11: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Matrikelnummer:

| 9

Aufgabe 5: Datenbank-Entwurf __ / 16 a) Gegeben sei das nachstehende Klassendiagramm als Ergebnis eines konzeptionellen

Datenbankentwurfs (Die Attributtypen sind nur der Vollständigkeit halber angegeben):

Übersetzen Sie den Entwurf in ein relationales DB-Modell in Form einer Menge von Relationenschemata (nutzen Sie hierfür die Notation aus der Vorlesung/Übung, vgl. Teilaufgabe c)). Markieren Sie notwendige Primärschlüssel (durch Unterstreichen). Erläutern Sie ggf. auch Fremdschlüssel (z.B. durch eine entsprechende Bepfeilung), und achten Sie dabei darauf, dass die im Diagramm angegebenen Multiplizitäten möglichst exakt eingehalten werden (vgl. Teilaufgabe b)).

(weiterer Platz auf der nächsten Seite)

Page 12: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

| 10

(Fortsetzung der Lösung zu Aufgabe 5 a))

b) Identifizieren Sie eine Stelle, an welcher die geforderten Multiplizitäten aus dem Diagramm nicht auf einfache Relationen abgebildet werden können. Begründen Sie Ihre Antwort, und stellen Sie dabei auch einen Bezug zu Ihrer Lösung aus Aufgabenteil a) her.

Page 13: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Matrikelnummer:

| 11

c) Gegeben sei das folgende Relationenschema einer Datenbank:

Rel = {A,B,C,D,E,F,G}

Für das Schema ist der Primärschlüssel Key wie folgt definiert:

Key = {A,B} Es bestehen zusätzlich folgende nicht-triviale, funktionale Abhängigkeiten:

A,B D B C A E,F E,F G

(1) An welcher Stelle bzw. an welchen Stellen wird die 2NF verletzt? (Kurz begründen!)

(2) Welche Verletzungen der 3NF gibt es zusätzlich zu den Verletzungen, die bereits die 2NF verletzen würden? (Kurz begründen!)

(3) Geben Sie eine vollständige Menge von Relationen an, wie sie sich nach einer Normalisierung („3NF erfüllt“) ergeben würden.

Page 14: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

| 12

Aufgabe 6: Petri-Netz __ / 12 In dieser Aufgabe sollen Sie das sichere Verhalten von Ampeln an einer Straßenkreuzung mit einem einfachen Petri-Netz beschreiben. Die nachfolgende Skizze zeigt die zu modellierende Situation:

• Fahrspuren führen von 3 Richtungen aus (Links, Unten, Rechts) in die Kreuzung, die in 2 Richtungen (nach unten oder nach rechts) verlassen werden kann. An der Kreuzung steht jeweils eine Ampel für jede ankommende Spur. Jede Ampel kann entweder rot oder grün sein.

• Die Ampelanlage soll gefährliche Situationen vermeiden, in denen es zu einer Kollision auf der Kreuzung kommen kann.

• Die Tabelle rechts von der obigen Skizze listet alle erlaubten Ampelzustände auf. • Bei jeder Ampelzustandsänderung ist immer der Farbwechsel genau einer Ampel

erlaubt. Z.B. ein Wechsel von (grün, rot, rot) auf (rot, grün, grün) ist verboten, weil in diesem Fall alle drei Ampeln ihre Farbe gewechselt haben.

• Die Reihenfolge in der Tabelle definiert keine Schaltungsreihenfolge. Z.B. ist die Schaltungsreihenfolge (rot, rot, grün) → (rot, grün, grün) → (rot, rot, grün) erlaubt.

Hinweise:

• Modellieren Sie jede Ampel als einen separaten Platz im Petri-Netz, auf dem genau ein Token liegt, wenn die Ampel grün ist. (Wenn die Ampel rot ist, muss ein solcher Platz leer sein.)

• Das Petri-Netz kann neben den 3 vorgegebenen Plätzen noch weitere Plätze enthalten. Plätze dürfen eine maximale Kapazität und Kanten ein Gewicht haben.

• Nutzen Sie Transitionen, um den Farbwechsel von Ampeln zu modellieren. • Im Petri-Netz müssen alle erlaubten Ampelzustände erreichbar sein und alle

erlaubten Zustandsübergänge, bei denen genau eine Ampel ihre Farbe wechselt, unterstützt werden.

• Beachten Sie, dass alle gefährlichen Situationen in der Kreuzung unbedingt vermieden werden müssen!

Page 15: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Matrikelnummer:

| 13

a) Zeichnen Sie das Netz für eine initiale Markierung, bei der alle Ampeln rot sind.

Beschriften Sie Plätze und Transitionen zur Erklärung ihrer jeweiligen Bedeutung!

b) Ist das Petri-Netz aus Aufgabenteil a) lebendig? Begründen Sie Ihre Antwort!

L R

U

Page 16: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

| 14

Aufgabe 7: UML - Statecharts __ / 12 Wandeln Sie das unten gegebene Statechart mit seinen parallelen Unterzuständen in ein äquivalentes, „flaches“ Statechart ohne parallele Unterzustände um. Nutzen Sie dazu die Vorlage auf der nächsten Seite. Transitionen, die aufgrund unmöglich zu erfüllender Bedingungen niemals schalten würden, sollen nicht eingezeichnet werden ( Guards dürfen nicht eingezeichnet werden!). Markieren Sie ggf. nicht erreichbare Zustände.

Page 17: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Matrikelnummer:

| 15

Zu Aufgabe 7:

B,X

C,Z

Page 18: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

| 16

Aufgabe 8: Design-Pattern __ / 8

a) Identifizieren Sie 3 Entwurfsmuster (Design-Patterns) im auf der nächsten Seite gegebenen Klassendiagramm. Beantworten Sie hierbei die folgenden zwei Fragen für jedes identifizierte Entwurfsmuster:

• Wie heißt das Entwurfsmuster? • Welche Klassen aus dem Diagramm sind Teil des Entwurfsmusters?

Page 19: Klausur im Fach Software-Engineering – Einführung · Erstellen Sie daraus ein Use-Case-Diagramm nach UML-Notation, welches alle wesentlichen Aspekte des „funktionalen Verhaltens“

Matrikelnummer:

| 17

b) Vervollständigen Sie das unten gegebene Diagramm mit Attributen bzw. Methoden, die in den identifizierten Entwurfsmustern jeweils eine zentrale Rolle spielen. (Hinweis: jedes fettgerahmtes Rechteck soll genau einen Eintrag enthalten. Darüber hinaus sind keine weiteren Nennungen erlaubt! Mehrere Lösungsoptionen können aber existieren. In diesem Fall ist dann eine Variante frei auszuwählen.)

- Ende der Klausur -