MUSTERLÖSUNG Softwaretechnik

Ähnliche Dokumente
Klausur Softwaretechnik

KLAUSUR SOFTWARETECHNIK

Klausur Softwaretechnik

Klausur Softwaretechnik I

Klausur Softwaretechnik

Klausur Softwaretechnik

KLAUSUR SOFTWARETECHNIK I

KLAUSUR SOFTWARETECHNIK

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Klausur Softwaretechnik I

Klausur Softwaretechnik Prof. Dr. Walter F. Tichy Dipl.-Inform. T. Gelhausen Dipl.-Inform. G. Malpohl. Musterlösung

Klausur. Softwareentwurf. 13. März 2013 Bearbeitungszeit: 120 Minuten

Probeklausur: Programmierung WS04/05

Klausur Grundlagen der Programmierung

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Theorie zu Übung 8 Implementierung in Java

Klausur Softwaretechnologie SS 2017

Semestrale Softwaretechnik: Software-Engineering

Aufgaben Objektentwurf

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006

Einstieg in die Informatik mit Java

Bachelorprüfung: Objektorientierte Softwareentwicklung

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

2 Teil 2: Nassi-Schneiderman

Klausur. Softwareentwurf. 14. Februar 2011 Bearbeitungszeit: 120 Minuten

Sichtbarkeiten, Klassenmember und -methoden

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Klausur Software-Entwicklung März 01

UNIVERSITÄT SIEGEN Fachbereich 12, Elektrotechnik und Informatik Fachgruppe Betriebssysteme / verteilte Systeme

Klausur. Softwareentwurf. 22. März 2011 Bearbeitungszeit: 120 Minuten

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Objektorientierung. Marc Satkowski 20. November C# Kurs

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Zweck: sequentieller Zugriff auf Elemente eines Aggregats

Programmieren in Java

Java: Eine kurze Einführung an Beispielen

Klausur Softwaretechnologie WS 2014/15

Objektorientierte Programmierung Studiengang Medieninformatik

Einführung in die Programmierung

Entwurfsmuster (Design Patterns)

Probeklausur 2. Name: Vorname: Matrikelnr.: Datum:

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Unified Modelling Language

PRÜFUNG. Grundlagen der Softwaretechnik

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Einstieg in die Informatik mit Java

Konzepte der Programmiersprachen

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Klausur - Informatik I SS 05. Note: Bearbeitungszeit 120 Minuten Keine Hilfsmittel

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Klausur Softwaretechnik

Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2018/19 - Dr. Günter Kniesel. Übungsblatt 10 Lösungen

UML -Klassendiagramme

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

Programmierung WS12/13 Lösung - Präsenzübung M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

hue12 January 24, 2017

Objektorientierte und Funktionale Programmierung SS 2014

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Aufgabe S1: Einmal quer durch s Skript

Klausur. Softwareentwurf. 04. Februar 2013 Bearbeitungszeit: 120 Minuten

Semestralklausur Informatik I - Programmierung

Anweisungen zur Ablaufsteuerung

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur

1. Teilklausur Gruppe A. Bitte in Druckschrift leserlich ausfüllen!

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Objektorientierte Systementwicklung

Programmierung für Mathematik HS11

Programmierung für Mathematik (HS13)

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

4. Übung zu Software Engineering

Programmieren in Java -Eingangstest-

Gliederung der Folien

Softwaretechnik 1 Übung 2

Welche Informatik-Kenntnisse bringen Sie mit?

Einführung in die Programmierung. (K-)II/Wb17

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

Programmieren I. Kapitel 5. Kontrollfluss

Objektorientierte Programmierung Studiengang Medieninformatik

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Fakultät IV Elektrotechnik/Informatik

Klausur zur Vorlesung Informatik 1 im Wintersemester 2014/2015 am 18. Februar Bearbeitungszeit: 90 Minuten Gesamtpunktezahl: 90 Punkte

Transkript:

MUSTERLÖSUNG Softwaretechnik 14.03.2008 Prof. Dr. Walter F. Tichy Dipl.-Inform. T. Gelhausen Dipl.-Inform. A. Paar Hier das Namensschild aufkleben. Zur Klausur sind keine Hilfsmittel und kein eigenes Papier zugelassen. Die Bearbeitungszeit beträgt 60 Minuten. Die Klausur ist vollständig und geheftet abzugeben. Mit Bleistift oder roter Farbe geschriebene Angaben werden nicht bewertet. Aufgabe 1 2 3 4 Maimal 18 13 17 12 60 K1 K2 K3

Aufgabe 1: Aufwärmen (18P) a.) Nennen Sie fünf in der Vorlesung genannte Kapitel eines Lastenheftes. (2,5P) Zielbestimmung Produkteinsatz Produktfunktionen 5 0,5 = 2,5P Produktdaten Produktleistungen, Qualitätsanforderungen, Ergänzungen, Glossar b.) Nennen Sie drei Anforderungs-Erhebungstechniken. Geben Sie für jede Technik jeweils einen Vor- und einen Nachteil an. (3P) z.b. Introspektion, Vorteil: einfach, schnell, billig Nachteil: oft nicht anwendbar 1 + 1 +1 = 3P z.b. Umfragen, Fragebögen, Vorteil: kann über das Web durchgeführt werden, Nachteil: wenig Kontet z.b. Ethnografie, Vorteil: zuverlässig, reichhaltiger Kontet, Nachteil: etrem zeitaufwendig c.) In der Vorlesung wurden für den Vergleich zweier Objekte mehrere Stufen von Gleichheit definiert. Geben Sie die Definitionen für Gleichheit 0. und 1. Stufe an. (3P) Gleichheit 0. Stufe: Es handelt sich um dasselbe Objekt, die Objekte sind identisch. (1P) Gleichheit 1. Stufe: Es handelt sich entweder um dasselbe Objekt oder zwei verschiedene Objekte, die aber in allen Attributen/Assoziationen identische Werte besitzen (Gleichheit 0. Stufe oder paarweise Gleichheit 0. Stufe in allen Attributen). (2P) Klausur Softwaretechnik Wintersemester 2007/2008 Seite 2 von 11

d.) Gegeben sind die folgenden Definitionen der Java-Klassen A und B. class A { public void print() { System.out.println("A"); class B etends A { public void print() { System.out.println("B"); Kreuzen Sie die Ausgabe der folgenden Java-Anweisungen an. (1P) A a = new B(); a.print(); A B AmbiguousCallEception e.) Erläutern Sie: Was ist Kontravarianz bei Eingabeparametern? Was ist Kovarianz bei Ausgabeparametern? (2P) Kontravariante Eingabeparameter: Mit zunehmender Spezialisierung der Klasse in der eine Methode überschrieben wird nimmt die Spezialisierung des Eingabeparameters ab. (1P) Kovariante Ausgabeparameter: Mit zunehmender Spezialisierung der Klasse in der eine Methode überschrieben wird nimmt die Spezialisierung des Ausgabeparameters zu. (1P) f.) Wie wurde die Benutzt -Relation in der Vorlesung definiert? (1P) Programmkomponente A benutzt Programmkomponente B genau dann, wenn A für den korrekten Ablauf die Verfügbarkeit einer korrekten Implementierung von B erfordert. (1P) Klausur Softwaretechnik Wintersemester 2007/2008 Seite 3 von 11

Wahr Falsch g.) Kreuzen Sie an, ob die folgenden Aussagen wahr oder falsch sind. (5,5P) Hinweis: Jedes korrekte Kreuz zählt 0,5 Punkte, jedes falsche Kreuz bewirkt 0,5 Punkte Abzug. Die Teilaufgabe wird mindestens mit 0 Punkten bewertet. Aussage Ein Pflichtenheft spezifiziert die Anforderungen an eine Software in eindeutiger Weise, so dass sie implementiert werden können. Ein Modul sollte ohne Kenntnis der späteren Nutzung entworfen, implementiert, getestet und überarbeitet werden können. Kontravariante Eingabe-Parameter erfüllen das Substitutionsprinzip. In Java ist das Entwurfsmuster Null-Objekt durch das Schüsselwort null realisiert. Das Test-Rahmenwerk JUnit erzeugt für ein gegebenes Programm automatisch Testfälle für kontrollflußorientierte Testverfahren. Ein Laufzeitübersetzer (JIT) kann bestimmen, ob die ausgerollte oder die nicht ausgerollte Variante einer Schleife für die aktuelle Laufzeitumgebung besser geeignet ist. Um ein Programm zu testen, können Regressionstests und Zusicherungen kombiniert werden. Das Entwurfsmuster Strategie bietet die Möglichkeit, eine Klasse mit einer von mehreren möglichen Verhaltensweisen zu konfigurieren. Eine Fabrikmethode kann eine Einschubmethode bei einer Schablonenmethode für Objekterzeugung sein. In einem UML-Anwendungsfalldiagramm werden typische Interaktionen des Benutzers mit dem System modelliert. In UML-Aktivitätsdiagrammen wird nicht zwischen Objekt- und Kontrollflüssen unterschieden. Klausur Softwaretechnik Wintersemester 2007/2008 Seite 4 von 11

Aufgabe 2: Entwurfsmuster (13P) Sie möchten einen Zerteiler (Parser) für arithmetische Ausdrücke programmieren. Die folgenden Java-Klassen repräsentieren die einzelnen Bestandteile solcher arithmetischer Ausdrücke. Konkrete arithmetische Ausdrücke können somit als Baum von Instanzen dieser Klassen im Speicher dargestellt werden. rechteseite <<Interface>> IAusdruck linkeseite + prettyprint() BinaererAusdruck + stroperator : String + prettyprint() Variable + strname : String + prettyprint() a.) Betrachten Sie den arithmetischen Ausdruck = a + b. Geben Sie für diesen konkreten arithmetischen Ausdruck ein entsprechendes UML-Objektdiagramm an. Verwenden Sie die gegebenen Klassendefinitionen. Hinweis: Sie brauchen die Objekte nicht zu benennen, sondern können anonyme Objekte verwenden. (3,5P) linkeseite :Variable strname = :BinaererAusdruck stroperator = = linkeseite :Variable strname = a rechteseite :BinaererAusdruck stroperator = + rechteseite :Variable strname = b Klausur Softwaretechnik Wintersemester 2007/2008 Seite 5 von 11

b.) Die Klassen BinaererAusdruck und Variable weisen beide die gemeinsame Funktion prettyprint() auf. Während sich die Struktur des Klassenmodells in Zukunft nicht verändern wird, sind für die weitere Entwicklung eine Reihe von neuen Operationen für die Klassen BinaererAusdruck und Variable geplant. Sie entscheiden sich daher, vorausschauend das Entwurfsmuster Besucher zu verwenden und die Operation prettyprint() in einer Besucherklasse zu kapseln. Zeichnen Sie ein UML-Klassendiagramm, das für das gegebene Klassenmodell eine abstrakte Besucherklasse und einen konkreten PrettyPrintBesucher enthält. Deklarieren Sie alle Methoden als public. (3,5P) Besucher {abstract + besuchebinaerenausdruck(b : BinaererAusdruck) + besuchevariable (v :Variable) PrettyPrintBesucher + besuchebinaerenausdruck (b : BinaererAusdruck) + besuchevariable (v :Variable) c.) Vervollständigen Sie das folgende Klassendiagramm um Funktionen, die für das Verwenden des in Aufgabenteil b.) entworfenen Besuchers notwendig sind. Deklarieren Sie alle Methoden als public. (1,5P) rechteseite <<Interface>> IAusdruck linkeseite + empfangebesucher(b : Besucher) BinaererAusdruck + stroperator : String + empfangebesucher(b : Besucher) Variable + strname : String + empfangebesucher(b : Besucher) Klausur Softwaretechnik Wintersemester 2007/2008 Seite 6 von 11

d.) Die folgende Schnittstelle IAusdrucksVisualisierer wird von Ihrem Programm als visuelle Komponente verwendet, um arithmetische Ausdrücke auf dem Bildschirm auszugeben. Der Methode zeichne(s : String) übergibt man dazu den arithmetischen Ausdruck als Zeichenkette, die von dem konkreten AusdrucksVisualisierer dargestellt wird. Verwenden Sie das Entwurfsmuster Dekorierer um einen RahmenDekorierer zu entwerfen. Dieser soll eine zusätzliche Methode zeichnerahmen() bieten, die die visuelle Komponente mit einem Rahmen dekoriert. Ergänzen Sie dazu das folgende UML- Klassendiagramm um einen abstrakten Dekorierer und um einen konkreten Rahmendekorierer. Geben Sie die Implementierung der zeichne(s : String) Methode in dem konkreten Dekorierer an (Die Implementierung der Methode zeichnerahmen() brauchen Sie nicht anzugeben). (4,5P) <<Interface>> IAusdrucksVisualisierer komponente + zeichne(s : String) 1,5P AusdrucksVisualisierer Dekorierer {abstract + zeichne(s : String) + zeichne(s : String) komponente.zeichne(s) 2P RahmenDekorierer 1P + zeichnerahmen() + zeichne(s : String) super.zeichne(s) zeichnerahmen() oder komponente.zeichne(s) zeichnerahmen() Klausur Softwaretechnik Wintersemester 2007/2008 Seite 7 von 11

Aufgabe 3: Objektorientierte Analyse & Entwurf (17P) Gegeben sei folgender Auszug aus der Anwendungsdomänenbeschreibung von HOAX, einem Rechtemanagement-System für Videodateien: [ ]Alle Inhalte sind entweder mit dem Verfahren AES-128 oder Triple-DES verschlüsselt. Der zu einem Inhalt gehörende Schlüssel wird vom Abspielgerät aus dem im Gerät gespeicherten und gesicherten DeviceKey und dem auf dem Medium gespeicherten MediaKey berechnet. Bei vorbespielten Medien haben alle Kopien eines Titels den gleichen MediaKey. Bei Leermedien hat jedes Medium einen eigenen, individuellen MediaKey; es gibt also keine zwei Leermedien mit dem gleichen MediaKey. Ein Aufzeichnungsgerät muss daher für jedes Leermedium einen eigenen, vom MediaKey des Mediums und vom DeviceKey abhängigen Schlüssel für den Inhalt erzeugen. [ ] a.) Nehmen wir an, HOAX soll in einer zukünftigen Version mit weiteren Verschlüsslungsalgorithmen arbeiten können. Welches Entwurfsmuster sollte dann verwendet werden? Begründen Sie Ihre Aussage. Geben Sie an, wer welche Rolle des Musters annimmt. (2P) Hinweis 1: Das Entwurfsmuster Oberklasse ist nicht gemeint. Hinweis 2: Sie sollen das Entwurfsmuster in Aufgabenteil b.) auch einsetzen. Entwurfsmuster: Strategie. (0,5P) AES, Triple-DES und weitere sind alle Verschlüsselungsalgorithmen und bilden eine Familie (0,5P). Der Klient (=Abspielgerät, 0,5P) möchte sie einheitlich verwenden und einfach austauschen (Kapselung, Zweck: Austausch/Variation, 0,5P) können. b.) Modellieren Sie den beschriebenen Teil von HOAX möglichst genau in einem einzigen UML-Klassendiagramm. Sachverhalte, die man nicht mit dem Klassendiagramm ausdrücken kann, geben Sie bitte in OCL an. Verwenden Sie Ihr in Aufgabenteil a.) identifiziertes Entwurfsmuster und markieren Sie es deutlich. (15P) Hinweise: Modellieren Sie nichts, das nicht im Tet erwähnt wird oder für die Implementierung des Entwurfsmusters notwendig ist. Vergessen Sie insbesondere nicht die Methoden, die für das Entwurfsmuster notwendig sind. Modellieren Sie keine Sichtbarkeiten. Geben Sie aber überall Multiplizitäten und Assoziationsnamen an. Geben Sie Rollen wo nötig an. OCL-Tipp: Die Kollektion X.allInstances enthält alle Instanzen der Klasse X. Klausur Softwaretechnik Wintersemester 2007/2008 Seite 8 von 11

contet VorbespieltesMedium inv: VorbespieltesMedium.allInstances->forAll( other (self.titel = other.titel) implies self.meinschlüssel.istgleich( other.meinschlüssel ) contet Leermedium inv: Leermedium.allInstances->forAll( other self.meinschlüssel.istgleich( other.meinschlüssel ) implies (self = other) Klausur Softwaretechnik Wintersemester 2007/2008 Seite 9 von 11

Aufgabe 4: Testen (12P) public static enum Color { Cyan, Magenta, Yellow, Black ; public int applygamma( int value, Color c, int[] gammatable ) { switch( c ) { case Cyan: value *= 1.2; break; case Magenta: value *= value; // no break!!! case Yellow: value *= 1.7; break; case Black: value = (int)math.sqrt( value ); break; value = gammatable[value]; return value; a.) Beschreiben Sie ein Verfahren, wie man die in der Vorlesung nicht behandelte switch- Anweisung aus Java in die strukturerhaltende Zwischensprache aus der Vorlesung überführen kann. Geben Sie zur Veranschaulichung das entstehende Zwischensprachprogramm an. (insges. 9P) Hinweis: Den default-fall brauchen Sie nicht zu beachten. Beschreibung der Umsetzungsvorschrift (5P): Man verwandelt die switch-anweisung in eine Kaskade von bedingten Sprüngen in einen Codeblock, der alle inneren Instruktionen der switch-anweisung in der selben Reihenfolge enthält (1P). Jeder Fall wird zu einem bedingten Sprung (1P). Jedes label (case XY: ) wird zu einem Sprungziel (1P). Jedes break zu einem unbedingten Sprung an das Ende des ganzen Blocks (1P). Bei einem fehlenden break (1P) ist nichts zu tun ( fall-through ). Klausur Softwaretechnik Wintersemester 2007/2008 Seite 10 von 11

Zwischensprachprogramm (4P): public int applygamma( int value, Color c, int[] gammatable ) { 10: if (c==cyan) goto 60; 20: if (c==magenta) goto 80; 30: if (c==yellow) goto 90; 40: if (c==black) goto 110; 50: goto 130; // falls kein Fall zutrifft 60: value *= 1.2; 70: goto 130; 80: value *= value; 90: value *= 1.7; 100: goto 130; 110: value = (int)math.sqrt( value ); 120: goto 130; 130: value = gammatable[value]; (1P pro korrekt umgesetztem Fall) b.) return value; Übertragen Sie Ihre Erkenntnisse aus Teilaufgabe a.) auf den allgemeinen Fall: Was ist Voraussetzung, wenn man Zweigüberdeckung für eine beliebige switch-anweisung erreichen will? Und unter welchen speziellen Voraussetzungen erfüllen Testdaten, die für eine switch-anweisung Anweisungsüberdeckung erreichen, gleichzeitig auch die Kriterien der Zweigüberdeckung? (3P) Hinweis: Den default-fall brauchen Sie nicht zu beachten. Um bei einem switch-ausdruck Zweigüberdeckung zu erreichen, muss jeder Fall ein Mal angesprungen werden (1P). Testdaten für die Anweisungsüberdeckung erfüllen auch dann die Voraussetzungen für die Zweigüberdeckung, wenn kein break fehlt (kein fall-through ) (1P) und keine weiteren Verzweigungen in den Code-Blöcken vorkommen (1P). (Hinweis: Fehlende breaks führen dazu, dass Anweisungsüberdeckung leichter zu erfüllen ist, Zweigüberdeckung dann aber gerade nicht mehr erfüllt wird!) Klausur Softwaretechnik Wintersemester 2007/2008 Seite 11 von 11