Klausur Softwaretechnik

Ähnliche Dokumente
Klausur Softwaretechnik

Klausur Softwaretechnik I

KLAUSUR SOFTWARETECHNIK

Klausur Softwaretechnik

MUSTERLÖSUNG Softwaretechnik

KLAUSUR SOFTWARETECHNIK

Klausur Softwaretechnik

KLAUSUR SOFTWARETECHNIK I

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

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

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

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

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

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

Programmierung für Mathematik HS11

Klausur Grundlagen der Programmierung

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Probeklausur: Programmierung WS04/05

Klausur Softwaretechnologie SS 2017

Tag 8 Repetitorium Informatik (Java)

Sichtbarkeiten, Klassenmember und -methoden

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

Objektorientierte Programmierung Studiengang Medieninformatik

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

Das Interface-Konzept am Beispiel der Sprache Java

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

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

Umsetzung einer Klassenkarte in einer Programmiersprache

12 Abstrakte Klassen, finale Klassen und Interfaces

Programmieren 1 09 Vererbung und Polymorphie

Theorie zu Übung 8 Implementierung in Java

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Klausur Softwaretechnik I

Matrikelnummer:

Programmieren in Java -Eingangstest-

Verkettete Datenstrukturen: Listen

7. Objektorientierung. Informatik II für Verkehrsingenieure

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Algorithmen und Datenstrukturen 06

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Semestralklausur Informatik I - Programmierung

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

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

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Klausur Softwaretechnik

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Implementieren von Klassen

HdM-Stuttgart, FB1, MI Probeklausur 1, Informatik 4 Prof. Dr. Edmund Ihler. Fachhochschule Stuttgart Hochschule der Medien.

Informatik II. Semesterklausur

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

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

Klausur Informatik 1 WS 07/08. Aufgabe Max. Punkte Punkte. Gesamtpunkte:

III.1 Prinzipien der funktionalen Programmierung - 1 -

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

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

Fakultät IV Elektrotechnik/Informatik

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten. Lesen Sie die Aufgaben jeweils bis zum Ende durch; oft gibt es hilfreiche Hinweise!

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

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

Unified Modelling Language

Informatik I Eprog HS12

Abschnitt 11: Korrektheit von imperativen Programmen

Objektorientierung. Programmierstarthilfe WS 2010/11 Fakultät für Ingenieurwissenschaften und Informatik

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

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

Aufgabe 1: Quer durch Java (4 Punkte) super abstract abstract protected

Bachelorprüfung: Objektorientierte Softwareentwicklung

Delegates. «Delegierter» Methoden Schablone Funktionszeiger. Dr. Beatrice Amrhein

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

Einführung in die Programmierung

Transkript:

Klausur Softwaretechnik 04.09.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 5 Maimal 17 12 13 12 6 60 K1 K2 K3

Aufgabe 1: Aufwärmen (17P) a.) Nennen Sie zwei der in der Vorlesung genannten Anforderungen an marktreife Software. (1P) Funktionstreue, Qualitätstreue, Kostentreue, Termintreue b.) Nennen Sie drei Prinzipien der Softwaretechnik, die die Entwicklung kompleer Software ermöglichen. (1,5P) Hierarchisierung, Modularisierung, Strukturierung, (Abstraktion) c.) Nennen Sie zwei Ergebnisse (Dokumente) der Planungsphase. (1P) Durchführbarkeitsstudie, Lastenheft, Projektkalkulation, Projektplan d.) Gegeben ist folgendes Java-Programm. class A { public static void main(string[] args) { Object[] arrobjects = new String[5]; arrobjects[0] = new A(); } } System.out.println(arrObjects[0]); Kreuzen Sie die Ausgabe des obigen Java-Programms an. (1P) null A java.lang.arraystoreeception Klausur Softwaretechnik Sommersemester 2008 Seite 2 von 12

e.) Nennen Sie zwei Kriterien mit denen Anforderungen an Software validiert werden. (1P) Korrektheit, Vollständigkeit, Konsistenz, Realisierbarkeit, Rückverfolgbarkeit f.) Vervollständigen Sie die folgende Definition für ein Modul. (1P) Ein Modul ist eine Menge von Programmkomponenten, die nach dem Geheimnisprinzip... gemeinsam entworfen... und geändert werden g.) Für welche vier Eigenschaften steht der Begriff ACID -Prinzip? (2P) A:.. Atomicity C:.. Consistency I:.. Durability D:.. Isolation h.) Ein kontrollflussorientiertes Testverfahren für Kriterium subsumiert ein Testverfahren für Kriterium y, wenn jede Menge von Pfaden, die Kriterium erfüllt, auch Kriterium y erfüllt. Welche kontrollflussorientierten Teststrategien werden vom Boundary-Interior Pfadtest subsumiert, welche von der Minimal-mehrfachen Bedingungsüberdeckung? (2,5P) Der Boundary-Interior Pfadtest subsumiert die und die. Die Minimal-mehrfache Bedingungsüberdeckung subsumiert die..., die und die. Klausur Softwaretechnik Sommersemester 2008 Seite 3 von 12

Wahr Falsch i.) Kreuzen Sie an, ob die folgenden Aussagen wahr oder falsch sind. (6P) 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 Software ist leichter zu ändern als ein physisches Produkt vergleichbarer Kompleität. Die Anforderungserhebungstechnik Introspektion ist im Vergleich zur Ethnographie besonders zeitaufwendig und teuer. Funktionale Attribute spezifizieren wie gut die Software ihre Funktionen erfüllt. Durch Werkzeuge kann die Einhaltung von Methoden, Verfahren, Standards und Notationen erhöht werden. In der Planungsphase wird die softwaretechnische Realisierbarkeit eines Produktes untersucht. Ein Pflichtenheft beschreibt die Eigenschaften, die das Produkt aus der Sicht des Kunden erfüllen soll. Bei Gleichheit 0. Stufe handelt es sich um identische Objekte. Das Entwurfsmuster Abstrakte Fabrik konzentriert sich auf den schrittweisen Konstruktionsprozess kompleer Objekte. Im Gegensatz zu Black Bo -Tests beweisen White Bo -Tests die Korrektheit eines Programms. Zusicherungen (z.b. mit dem Schlüsselwort assert in Java) werden zur Laufzeit eines Programs ausgeführt. In Java muss eine abstrakte Klasse, die eine Schnittstelle implementiert, alle in der Schnittstelle vorgegebenen Methoden implementieren. Regressionstests helfen verhindern, dass alte Fehler wieder auftreten. Klausur Softwaretechnik Sommersemester 2008 Seite 4 von 12

Aufgabe 2: Entwurfsmuster (Brücke und Beobachter) (12P) Der Begriff Shading bezeichnet in der 3D-Computergrafik im allgemeinen Sinne die Simulation der Oberfläche eines Objekts. Für die Berechnung der Oberfläche gibt es viele verschiedene Verfahren unter anderem das Flat Shading (Abb. links oben) und das Gouraud Shading (Abb. links unten). Sie haben einen Flat Shader für die DirectX-Programmierschnittstelle entsprechend dem folgenden UML-Klassendiagramm entworfen. Die Methode shade() in der Klasse FlatShaderDirectX implementiert den Flat Shading-Algorithmus und verwendet die Methode draw(:int, y:int, c:int), um einen Punkt unter Verwendung der DirectX-Programmierschnittstelle zu zeichnen. <<Interface>> IShader draw(:int, y:int, c:int) shade() FlatShaderDirectX draw(:int, y:int, c:int) shade() Neben Flat Shading möchten Sie zusätzlich noch das Gouraud Shading-Verfahren anbieten. Außerdem möchten Sie beide Shading-Verfahren sowohl für die DirectX-API als auch für die OpenGL-Programmierschnittstelle implementieren. a.) Verwenden Sie das Entwurfsmuster Brücke um die Abstraktion (Methode shade) von der Implementierung (Methode draw) zu trennen. Hinweis: Trennen Sie die obige Schnittstelle IShader geeignet auf und erweitern Sie Ihr UML-Klassendiagramm um die konkreten Klassen DirectXImpl und OpenGLImpl, FlatShader und GouraudShader. Tragen Sie Vererbungsbeziehungen und Assoziationen entsprechend dem Entwurfsmuster Brücke ein. (7P) Klausur Softwaretechnik Sommersemester 2008 Seite 5 von 12

b.) Geben Sie nachfolgend in Java-Notation an wie entsprechend dem geforderten Entwurf mit dem Entwurfsmuster Brücke die Methode shade im FlatShader einen schwarzen Punkt (c = 0) mit den Koordinaten =23 und y=42 zeichnen kann. (1P) impl.draw(23, 42, 0); Klausur Softwaretechnik Sommersemester 2008 Seite 6 von 12

c.) Das Gittermodell, für das Ihre Shader-Klassen die Darstellungen der Oberflächen berechnen, wird von der Klasse Gittermodell verwaltet. Bei jeder Änderung des Gittermodells (Subjekt) soll der verwendete Shader (Beobachter) benachrichtigt werden. Verwenden Sie das Entwurfsmuster Beobachter und erweitern Sie das folgende UML- Klassendiagramm um Methoden-Signaturen für das An- und Abmelden, Benachrichtigen und Aktualisieren des Beobachters. (3P) Hinweis: Definieren Sie keine zusätzlichen abstrakten Subjekt- und Beobachterklassen sondern verwenden und erweitern Sie lediglich die gegebene Schnittstelle Shader und die Klasse Gittermodell. Gittermodell meldean(s:shader) meldeab(s:shader) benachrichtige() <<Interface>> Shader beobachter * aktualisiere() d.) Geben Sie eine Java-Datenstruktur für die beobachter-assoziation in obigem UML- Klassendiagramm an. Geben Sie für diese Datenstruktur in Java-Notation die Implementierung für das Benachrichtigen angemeldeter Shader an. (1P) Vector beobachter; for (Shader s : beobachter) { s.aktualisiere(); } Klausur Softwaretechnik Sommersemester 2008 Seite 7 von 12

Aufgabe 3: Abbildung von Zustandsautomaten (13P) a) Vergleichen Sie die implizite und eplizite Speicherung des Zustandes eines Objektes. Geben Sie Definitionen und drei Vor- bzw. Nachteile der Verfahren an. (5P) Definition der impliziten Speicherung: Implizit: Zustand wird (aus Attributwerten) berechnet. (1P) Definition der epliziten Speicherung: Eplizit: Zustand wird in einer dedizierten Instanzvariablen gespeichert. (1P) Vor-/Nachteile: Vorteile Implizit (=Nachteile Eplizit): Keine zusätzlichen Instanzvariablen nötig (spart Speicherplatz) Nachteile Implizit (=Vorteile Eplizit): Zustand muss jedes Mal neu berechnet werden (kostet ggf. Rechenzeit), Übergangsfunktion implizit, weniger offensichtlich, Vergessen bei Änderungen, Ggf. komplizierter, Methode nicht immer möglich (je Vorteil/Nachteil 1P, ma. 3P) b) Wie realisieren wir in der Vorlesung die ausgelagerte eplizite Speicherung des Zustands eines Objektes? Skizzieren Sie grob die Idee. (2P) State Pattern Objekt kennt nur seinen Zustand (1P) und delegiert alle Nachrichten an das jeweilige Zustands-Objekt (1P) Klausur Softwaretechnik Sommersemester 2008 Seite 8 von 12

c) Realisieren Sie folgenden Zustandsautomaten für die Klasse P als eingebettete eplizite Speicherung mit Java-Code. (6P) A B y C y y Instanzvariable für den Zustand (0,5P) Zustandsvariable mit Zustand A initialisiert (0,5P) Ein Endzustand wurde eingeführt (0,5P) Methoden und y (diese Namen!) angelegt (0,5P) Korrekte Behandlung (Abfrage und Übergang) von A in (0,5P) Korrekte Behandlung (Abfrage und Fehler) von B in (0,5P) Korrekte Behandlung (Abfrage und Übergang) von C in (0,5P) Korrekte Behandlung (Abfrage und Fehler) vom Endzustand in (0,5P) Korrekte Behandlung (Abfrage und Übergang) von A in y (0,5P) Korrekte Behandlung (Abfrage und Übergang) von B in y (0,5P) Korrekte Behandlung (Abfrage und Übergang) von C in y (0,5P) Korrekte Behandlung (Abfrage und Fehler) vom Endzustand in y (0,5P) Klausur Softwaretechnik Sommersemester 2008 Seite 9 von 12

Aufgabe 4: Objektorientierte Analyse & Entwurf (12P) a) Modellieren Sie folgende Domänenbeschreibung der doppelten Buchführung möglichst genau in einem einzigen UML-Klassendiagramm. (9P) Hinweise: Jeder Satz erzeugt mindestens ein Modellelement. Modellieren Sie nichts, das nicht im Tet erwähnt wird. Modellieren Sie keine Sichtbarkeiten. Geben Sie aber überall eplizit Multiplizitäten und Assoziations- und Rollennamen an. Für die Deklaration von Attributen dürfen Sie nur die in Java verfügbaren Typen verwenden. Die Konten der doppelten Buchführung haben jeweils einen Namen und einen aktuellen Wert. Jedes Konto hat genau eine Soll- und eine Habenseite und kann sowohl als Sollkonto und als auch als Habenkonto verwendet werden. Die Soll- und die Habenseite sind geordnete Listen von Einträge aus jeweils einem Betrag und einem Datum. Dieser Betrag muss immer positiv sein! Jeder Geschäftsvorfall erzeugt einen Buchungssatz, der jeweils aus einem Datum, einem Buchungstet, dem Sollkonto, dem Habenkonto und dem Betrag besteht. Sollkonto ist das Konto, bei dem der Betrag zum angegebenen Datum abgezogen wird, Habenkonto das, bei dem der Betrag zum angegebenen Datum hinzugefügt wird. Alle Buchungssätze werden im selben, zentralen Journal gespeichert. Klausur Softwaretechnik Sommersemester 2008 Seite 10 von 12

b) Für die Korrektur eines Buchungsfehlers erzeugt das Programm einen neuen, zusätzlichen Buchungssatz im Journal, der dem zu korrigierenden Buchungssatz eakt entspricht, außer dass Sollkonto und Habenkonto vertauscht sind. Geben Sie einen OCL- Ausdruck an, der sicherstellt, dass zu jeder Korrekturbuchung im Journal (mindestens) eine normale Buchung eistiert und die zuvor genannten Bedingungen gelten. Ihr OCL- Ausdruck muss zu ihrem Modell passen erweitern Sie daher Ihr Modell aus Aufgabenteil a) nach Bedarf. (3P) contet Journal inv: self.sätze->forall(k k.korrekturbuchung=true implies self.sätze->eists( b b.korrekturbuchung=false and b.datum=k.datum and b.tet=k.tet and b.betrag=k.betrag and b.habenkonto=k.sollkonto and b.sollkonto=k.habenkonto)) Klausur Softwaretechnik Sommersemester 2008 Seite 11 von 12

Wahr Falsch Aufgabe 5: Kontrollflussorientierte Testverfahren (6P) Gegeben sei nachfolgender Code: void drawlineh( int 0, int 1, int y0, int y1 ) { int dy = y1 - y0; int d = 1-0; int step = 1; int stepy = 1; if( dy < 0 ) { dy = -dy; stepy = -1; }; if( d < 0 ) { d = -d; step = -1; }; dy = dy*2; d = d*2; int fraction = dy - (d/2); while( 0!= 1 ) { if( fraction >= 0 ) { y0 += stepy; fraction -= d; } 0 += step; fraction += dy; setpiel( 0, y0 ); } } Hinweis: Wenn man der Methode setpiel() ungültige Werte übergibt, passiert nichts, sie ignoriert den Aufruf einfach (keine Ausnahme). a) Bestimmen Sie die Anzahl der Äquivalenzklassen die benötigt werden, um die Schleife boundary-interior zu testen (2P, keine Punkte ohne Rechenweg/Begründung!) 4 Pfade außerhalb der Schleife, 2 für Grenztest vs. Interieurtest, 2 Schleifenquerer, 1 Weg, die Schleife zu verlassen (da weder setpiel() noch eine der Rechenoperationen in der Schleife Ausnahmen produzieren) 4 2 2 1 = 16 Äquivalenzklassen b) Kreuzen Sie an, ob die folgenden Aussagen wahr oder falsch sind. (4P) Hinweis: Jedes korrekte Kreuz zählt 1 Punkt, jedes falsche Kreuz bewirkt 1 Punkt Abzug. Die Teilaufgabe wird mindestens mit 0 Punkten bewertet. Aussage X X X X Die Werte 0 =1, 1 =4, y 0 =1, y 1 =4 führen zu Anweisungsüberdeckung. Die Werte 0 =5, 1 =1, y 0 =4, y 1 =1 führen zu Zweigüberdeckung. Die Werte 0 =1, 1 =2, y 0 =1, y 1 =1 führen zu einem Grenztest der Schleife. Die Werte 0 =1, 1 =3, y 0 =2, y 1 =1führen zu einem Interieurtest der Schleife. Klausur Softwaretechnik Sommersemester 2008 Seite 12 von 12