Prüfungsteilnehmer Prüfungstermin Einzelprüfungsnummer Kennzahl: . Kennwort: Frühjahr TT 66116 Arbeitsplatz-Nr.: 2 0 1 2 Erste Staatsprüfung für ein Lehramt an öffentlichen Schulen — Prüfungsaufgaben — Fach: Informatik (vertieft studiert) Einzelprüfung: Datenbanksysteme, Softwaretechnologie Anzahl der gestellten Themen (Aufgaben): 2 Anzahl der Druckseiten dieser Vorlage: 13 Bitte wenden! Frühjahr 2012 Einzelprüfungsnummer 66116 Seite 2 Thema Nr. 1 Teilaufgabe 1: 1. Entity-Relationship-Modell Ein Handelsunternehmen möchte seine Struktur verbessern und ein Datenbanksystem zur Verwaltung seiner Filialen, angebotenen Waren und Kunden erstellen. Die Basis dieses Systems bilden die Filialen des Unternehmens. Jede Filiale ist eindeutig durch ihre Filialnummer gekennzeichnet und befindet sich in einer Stadt. Außerdem hat jede Filiale einen Filialleiter. Zu jeder Filiale gehört genau ein Lager mit einer eindeutigen Lagernummer und ebenfalls einem Leiter. Jedes Lager verfügt über eine bestimmte Menge an verschiedenen Waren. Jede Ware kann in mehreren Lagern vorrätig sein und ist über eine Nummer, einen Namen und einen Preis gekennzeichnet. Ein Kunde kann in einer Filiale des Unternehmens Bestellungen aufgeben. Der Kunde hat eine Kundennummer, einen Namen und eine Adresse, Eine Bestellung enthält dabei jeweils einen Warenartikel, dessen gewünschte Menge und das Datum, an dem die Bestellung abgeholt wird. a) Erstellen Sie ein Entity-Relationship-Diagramm für obige Datenbank. b) Setzen Sie das in Teilaufgabe a) erstellte Entity-Relationship-Diagramm in ein Relationenschema um. Relationships sollen mit einer möglichst geringen Anzahl von Relationen realisiert werden. Dabei sind unnötige Redundanzen zu vermeiden. Ein Relationenschema ist in folgender Form anzugeben: Relation (Attributl, Attribut2, ...). Schlüsselattribute sind dabei zu unterstreichen. Achten Sie bei der Wahl des Schlüssels auf Eindeutigkeit und Minimalität. 2. Normalisierung Gegeben sei folgende Datenbank für Wareneingänge eines Warenlagers. Die Primärschlüssel-Attribute sind unterstrichen. Artikelname ZulieferungsNr |ArtikelNr |Datum Menge 1 1 01.01.2009 |Handschuhe [5 1 2 01.01.2009 |Mütze 10 2 3 05.01.2009 |Schal 2 2 1 05.01.2009 |Handschuhe 18 3 4 06.01.2009 |Jacke 2 a) Erläutern Sie, inwiefern obiges Schema die 3. Normalform verletzt. b) Geben Sie für obige Datenbank alle vollen funktionalen Abhängigkeiten (einschließlich der transitiven) an. c) Überführen Sie das obige Relationenschema in die 3. Normalform. Erläutern Sie die dazu durchzuführenden Schritte jeweils kurz. Fortsetzung nächste Seite! Frühjahr 2012 Einzelprüfungsnummer 66116 Seite 3 3. SQL Gegeben sei das folgende Relationenschema: Fahrzeug (MNR:int (3) t ' ne a i KMStand: int ( FZGNR: char (12) Baujahr:int (4), 5), P int 7 r Preis (5)) Modell (MNR:int (3), HNR:int (3), Typ:char{20), Neupreis:int (5), ps:int(3)) , Hersteller (HNR:int (3), Name:char(20)) Dabei sind die Schlüsselattribute jeweils unterstrichen und zusätzlich für alle Attribute die Typen angegeben. Formulieren Sie die folgenden Anfragen bzw. Anweisungen in SQL. a) Geben Sie die Anweisungen in SQL-DDL an, die notwendig sind, um die Relationen „Fahrzeug“, „Modell“ und „Hersteller“ zu erzeugen. Achten Sie dabei darauf, die Primärschlüssel der Relationen zu kennzeichnen. b) Bestimmen Sie die Typen aller Modelle des Herstellers mit Namen BMW. c) Bestimmen Sie den Mindestpreis, bezogen auf das Attribut „Preis“, der Fahrzeuge eines jeden Herstellers. d) Bestimmen Sie die Namen der Hersteller, für die von jedem ihrer Modelle mindestens ein Fahrzeug in der Datenbank gespeichert ist. e) Bestimmen Sie die Namen aller Hersteller, von denen mindestens fünf Fahrzeuge eines beliebigen Modells in der Datenbank gespeichert sind. Fortsetzung nächste Seite! Frühjahr 2012 Einzelprüfungsnummer 66116 Seite 4 Teilaufgabe 2: Aufgabe 1 Welche Tätigkeiten sind in der Anforderungsanalyse für ein zu entwickelndes Softwaresystem durchzuführen? Welche Probleme können typischerweise in der Anforderungsanalyse auftreten? Aufgabe 2 Gegeben sei das Klassendiagramm in Abb. 1. hat * 1..* gehört B wert: Real : 2 . b: Boolean D 1.8 von I E . name: String name: String A x: Integer ort: String name: String - hat * Cc wert: Real Abbildung 1: Klassendiagramm a) Konstruieren Sie ein (gemäß des Klassendiagramms zulässiges) Instanzendiagramm, das möglichst ri wenige Objekte aber mindestens ein Objekt der Klasse E enthält. Gemeinsame Attribute und Assoziationen können in Oberklassen zusammengefasst werden. Konstruieren Sie auf diese Weise ein Klassendiagramm mit geeigneten Oberklassen und Vererbungsbeziehungen, das genau dieselben Instanzendiagramme zulässt wie das Klassendiagramm in Abb. 1. Falls sich dabei abstrakte Oberklassen ergeben, sind diese zu kennzeichnen. Fortsetzung nächste Seite! Frühjahr 2012 Aufgabe 3 Einzelprüfungsnummer 66116 Seite 5 Die (statistische) Struktur eines einfachen Faxübertragungssystems wird durch das Klassendiagramm in Abb. 2 beschrieben. Faxgerät Leitung 0.1 0.1 sender QL 0.1 empfänger Das Sequenzdiagramm in Abb. 3 beschreibt ein Szenario, in dem ein Fax mit zwei Seiten erfolgreich übertragen wird. sender:Faxgerät empfänger:Faxgerät T . 1 ' verbinden(nr) ! . i i 1 I 4 } verbunden() ; I { \ sende(seite) > tO ; empfange(seite) i t \ : okt) ! T t I \ i i | t v 1 t 5 ! i i 4 1 5 q I i 4 1 t i I 4 1 i 1 i 3 i ‘ i i ' I hee seiteGesendetO i sende(seite) R to I empfange(seite) : I okO t _____ seiteGesendet() 1 . \ fertig) : __ beenden) „, i : erfolgreichO t 1 1 1 Abbildung 3: Sequenzdiagramm a) Falls der Empfänger belegt ist oder falls eine Seite nicht richtig beim Empfänger angekommen ist, soll der Vorgang mit entsprechender Rückmeldung an den Sender abgebrochen werden. Erstellen Sie für jedes dieser beiden Szenarien ein Sequenzdiagramm. b) Konstruieren Sie ein Zustandsdiagramm für die Klasse Leitung. Das Zustandsdiagramm soll das in den drei Szenarien (vgl. Abb. 3 und Teil a)) beschriebene Verhalten eines Leitungsobjekts integrieren, so dass beliebig viele Seiten übertragen werden können. Fortsetzung nächste Seite! Frühjahr 2012 Einzelprüfungsnummer 66116 Seite 6 Aufgabe 4 a) Was versteht man unter einem Entwurfsmuster bei der Entwicklung von Softwaresystemen? Erläutern Sie kurz die Vorteile von Entwurfsmustern. Abb. 4 zeigt, in UML-Notation, das statische Modell des Observer-Patterns (aus dem Design-Pattern Katalog von Gamma et al.). b) Erläutern Sie die Wirkungsweise des Observer-Patterns. Gehen Sie dabei auch auf die Aufgabe der einzeinen Operationen ein. Subject “ Observer observers attach(o: Observer) update) detach(o: Observer) a | _| notify( | | ' ConcreteSubject ConcreteObserver a subject subjectState observerState | setState() update() getState() . Abbildung 4: Observer-Pattern c) Schildern Sie eine typische Anwendung des Observer-Patterns und erläutern Sie dessen Nutzen. Frühjahr 2012 Einzelprüfungsnummer 66116 Seite 7 | Thema Nr. 2 Teilaufgabe 1: 1. Datenbankanfragen in SOL Wir betrachten die Datenbank FUSSBALL-EUROPAMEISTERSCHAFT mit den folgenden Tabellen: - Spieler (Rückennummer Land, Name, Vorname, Länderspiele, Verein, Land-V): Spielerinformation, einschließlich des Heimatlandes (Land), der Anzahl der Länderspiele, dem Verein und dem Land des Vereins (Land-V) - Nationen(Land, Hauptstadt): Informationen zu den teilnehmenden Nationen - nimmt _teil_ an(Rückennummer, Land, Spiel_ID): Beteiligung eines Spielers an Spielen. - Spiele(Spiel_ID, Land_Heim, Land_Gast, Datum, Stadion_ID, Tore_Heim, Tore_Gast): Informationen zu den Spielen, wobei Land_Heim und Land_Gast die beiden an einem Spiel beteiligten Nationen sind - Stadion(Stadion_ID, Stadt, Land, Zuschauerkapazität): Informationen zu den Stadien Erstellen Sie in SQL folgende Anfragen: a) Bestimmen Sie alle teilnehmenden Spieler, die beim "FC Bayern München" (Verein) spielen. b) Bestimmen Sie alle Spiele, die im Heimatland von einer der beiden beteiligten Nationen stattfinden. c) An wie vielen Spielen nimmt "Bastian Schweinsteiger" teil? d) Bestimmen Sie für jede Nation den Spieler mit den meisten Länderspielen. Dazu können Sie eine Unteranfrage oder eine Sicht (View) verwenden, die in der Hauptanfrage aufgerufen wird. Fortsetzung nächste Seite! Frühjahr 2012 Einzelprüfungsnummer 66116 Seite 8 2. Datenmodellierung und Datenbankaufbau Wir betrachten die Datenbank FUSSBALL-EUROPAMEISTERSCHAFT aus Aufgabe 1. a) Definieren Sie die Relationenschemata „Spieler“ und „nimmt _teil_an“ in SQL mittels CREATE TABLE und geben Sie dabei geeignete Schlüssel- und Fremdschlüsselbedingungen an. Nehmen Sie dabei an, dass die anderen Tabellen schon erzeugt sind. b) Fügen Sie in SQL mittels INSERT in jede der beiden Relationen „Spieler“ und „nimmt teil_an“ jeweils mindestens ein Tupel ein, so dass die natürlichen Schlüssel- und Fremdschlüsselbedingungen aus Teilaufgabe a) erfüllt sind. Eventuelle weitere Fremdschlüsselbedingungen auf andere Tabellen müssen nicht berücksichtigt werden. c) Geben Sie ein ER-Diagramm mit Funktionalitätsbedingungen für das Datenbankschema an, in dem möglichst viele Relationen als Relationships modelliert sind. 3. Funktionale Abhängigkeiten Gegeben sei das Relationenschema R = (U, F) mit der Attributmenge U = {A4,B,C,D,E,G} und der folgenden Menge F von funktionalen Abhängigkeiten: F=fA>BAB>CDCD-E)}. a) Bestimmen Sie die Attributhiillen {A} und {C, D}. b) Erklären Sie, warum die funktionale Abhängigkeit CD > E zu Update-Anomalien (d. h. beim Einfügen, Löschen und Andern) führt. c) Bestimmen Sie alle Schlüssel von R. d) Bestimmen Sie eine Basis und eine 3NF-Zerlegung von R. e) Zerlegen Sie R bezüglich der BCNF-verletzenden funktionalen Abhängigkeit CD— E. Fortsetzung nächste Seite! Frühjahr 2012 | __Einzelprüfungsnummer 66116 Seite 9 Teilaufgabe 2: 1. Testen Gegeben sei folgendes Modul, das einen ganzzahligen Wert element in die sortierte, verkettete Liste list einfügt. Gleiche Werte werden nur einmal aufgenommen. Der Wert element ist bereits im Knoten newNode gespeichert. if (list.first == null) { } list.first = newNode; else if (element < list. first.element) { newNode .next = list.first; list. first = newNode; else { actualNode = list.first; while (actualNode != null) { if (actualNode.element < element && actualNode.next == null) { actualNode .next = newNode; } else if (actualNode.element < element && element < actualNode.next.element) { newNode.next = actualNode. next; actualNode.next = newNod bates Fe ae actualNode = actualNode .next; Bestimmen Sie anhand des Kontrollflussgraphen des obigen Code-Fragments die maximale Anzahl linear unabhängiger Programmpfade, also die zyklomatische Komplexität nach McCabe. Kann für dieses Modul eine 100%-ige Pfadüberdeckung erzielt werden? (Grenzen aufgrund physikalischer Gegebenheiten sind dabei nicht zu berücksichtigen). Begründen Sie Ihre Antwort. Geben Sie einen möglichst kleinen Testdatensatz an, der eine 100%-ige Verzweigungsüberdeckung dieses Moduls erzielt. Beschreiben Sie kurz, welche Eigenschaften eine Testfallmenge allgemein haben muss, damit sie das datenflussorientierte Überdeckungskriterium „all-uses“ erfüllt. Welche Anforderungen stellt das kontrollflussorientierte Testkriterium „boundary-interior“ („Schleife-Inneres-Überdeckung“) an den Tester? Skizzieren Sie die drei klassischen Strategien beim Software-Integrationstest: „bottom-up“, „topdown“ und „sandwich“ Fortsetzung nächste Seite! Frühjahr 2012 Einzelprüfungsnummer 66116 | Seite 10 2. Prozessmodelle 2) b) c) d) Um welche Aspekte erweitert das V-Modell 97 das „ältere“ Wasserfallmodell? Modellen wie V-Modell oder Wasserfallmodell? Beschreiben Sie kurz die folgenden vier Kategorien von Anforderungen und geben Sie jeweils ein entsprechendes kurzes Beispiel an: „funktional“, „qualitativ“, „systembezogen“, „prozessbezogen“. Erläutern Sie knapp mit je einem Satz die folgenden vier klassischen Wartungsanlässe und skizzieren Sie dabei jeweils den Unterschied zu den anderen: „corrective“, „adaptive“, „perfective“, „preventive“. Nennen Sie die fehlenden Angaben (Zwischenprodukte und Testarten) - jeweils mit ihrer Nummer - im folgenden, am V-Modell 97 angelehnten Prozessmodell: = oS — Absichten & Aufgaben v Genutztes System LG) te Dd ge Mey Dane (3) SW-Moduie Fortsetzung nächste Seite! Frühjahr 2012 Einzelprüfungsnummer 66116 | Seite 11 3. Formale Verifikation Gegeben sei das folgende Programmfragment „MinMax“ mit zwei ganzzahligen Parametern x und y: int h; if (x > y) { h = x; x= y; y = h; } Unter Verwendung des Hoare-Kalküls weisen Sie folgende Aussage nach: {x, ye N} MinMax {x S \ Vv + schlachtenQ : final void en Mince 4 fichErzeugen | Lu oT + melkeng : float | EierlegendeWollMiichSau ee 7 Sahsiracıs + melkenf) : finat rs WolleGebend # aierSammeing : int # scherenf) double a) Geben Sie den Code der Klassen EierLegend und Schaf aus dem obigen Klassendiagramm in einer objekt-orientierten Sprache Ihrer Wahl an und annotieren Sie ihn mit verständlichen Kommentaren. Etwaige Methodenrümpfe können Sie leer lassen, auch wenn dies zu einem Compiler-Fehler führen würde. Beachten Sie die Sichtbarkeiten (# = protected) und dass SCHWARZ sowie schlachten () final sind! b) Warum kann es die Klasse EierlegendeWollMilchSau in Java nicht geben? Beschreiben Sie kurz aber vollständig, welche minimalen Änderungen Sie an der obigen Architektur vornehmen würden, damit die Klasse EierlegendeWollMilchSau in Java doch implementiert werden kann, sie aber weiterhin eine Unterklasse von Sau bleibt. © Now tellen Sie sich eine Klasse Bauer mit einer Methode alltag () vor: In dieser Methode werden zunächst je zwei Instanzen der Klassen Huhn bzw. Schaf erstellt. a Danach muss der Bauer bei seinen Hiihnern die eierSammeln (), das erste Schaf scheren () und das zweite melken (). Schließlich erstellt er sich noch eine Instanz von Sau, die er gleich im Anschluss schlachten () kann. Mit welcher UML-Diagrammart würden Sie das obige Szenario modellieren? Warum halten Sie diese Diagrammart für besonders geeignet? d) Modellieren Sie die Methode alltag () in der vorangehend gewählten Diagrammart Ihrer Wahl.