Musterlösung Klausur Softwaretechnik



Ähnliche Dokumente
Programmierkurs Java

Objektorientierte Programmierung

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

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Software Entwicklung II (SS12)

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Lösungsvorschlag für Übungsblatt 6 Software Engineering 1 (WS 2012/13)

Hochschule Karlsruhe Klausur EAI Prof. Dr. Christian Pape. Klausur EAI WS 05/06. Note: Bearbeitungszeit 90 Minuten Keine Hilfsmittel

1 Vom Problem zum Programm

Probeklausur Softwareengineering SS 15

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Java Einführung Operatoren Kapitel 2 und 3

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Grundlagen der Theoretischen Informatik, SoSe 2008

5. Tutorium zu Programmieren

Objektorientierte Programmierung. Kapitel 12: Interfaces

Graphic Coding. Klausur. 9. Februar Kurs A

Diana Lange. Generative Gestaltung Operatoren

Software Engineering I

Arbeiten mit UMLed und Delphi

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Grundlagen der Softwaretechnik

Whitebox-Tests: Allgemeines

Große Übung Praktische Informatik 1

Übung 4. Musterlösungen

Hardware/Software-Codesign

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Prüfung Software Engineering I (IB)

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

U08 Entwurfsmuster (II)

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Prüfung Computation, Programming

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Umzug der abfallwirtschaftlichen Nummern /Kündigung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

SEQUENZDIAGRAMM. Christoph Süsens

Anleitung für die Online-Bewerbung über LSF auf Lehrveranstaltungen aller Lehramtsstudiengänge

Softwaretechnik (Allgemeine Informatik) Überblick

Übersicht Programmablaufsteuerung

Einführung in die Algebra

Einführung in die Programmierung (EPR)

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Übungen zu C++ Kapitel 1

Kurzanleitung für Verkäufer

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Objektorientierte Programmierung

Einführung in die Programmierung

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Zur drittletzten Zeile scrollen

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Dr. Monika Meiler. Inhalt

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Einführung in die Java- Programmierung

Datenbanken Microsoft Access 2010

Repetitionsaufgaben Wurzelgleichungen

SWE5 Übungen zu Software-Engineering

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Das Modul ARTIKEL-BARCODE ermöglicht den Druck von Barcode-Etiketten der EAN-Codes 8 und 13.

SEP 114. Design by Contract

Informatik Grundlagen, WS04, Seminar 13

2) Geben Sie in der Anmeldemaske Ihren Zugangsnamen und Ihr Passwort ein

RUP Analyse und Design: Überblick

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Typo3: Nachrichten verfassen

Erste Schritte ANLEITUNG Deutsche Sportausweis Vereinsverwaltung Schnittstelle zum Portal des Deutschen Sportausweises unter

Aufgabensammlung Bruchrechnen

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, Uhr Bearbeitungszeit: 105 Minuten

368 4 Algorithmen und Datenstrukturen

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

Vorgehensweise bei Lastschriftverfahren

Algorithmen & Datenstrukturen 1. Klausur

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Test-Driven Design: Ein einfaches Beispiel

Softwaretechnologie Wintersemester 2009/2010 Dr. Günter Kniesel, Pascal Bihler

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Zählen von Objekten einer bestimmten Klasse

1 topologisches Sortieren

Einführung in. Logische Schaltungen

Aufklappelemente anlegen

Erstellen der Barcode-Etiketten:

Tutorium zur Mikroökonomie II WS 02/03 Universität Mannheim Tri Vi Dang. Aufgabenblatt 3 (KW 44) ( )

Klausur Nr. 1. Wahrscheinlichkeitsrechnung. Keine Hilfsmittel gestattet, bitte alle Lösungen auf dieses Blatt.

Erwin Grüner

Zeichen bei Zahlen entschlüsseln

Einführung in die C++ Programmierung für Ingenieure

Java: Vererbung. Teil 3: super()

4. AuD Tafelübung T-C3

Nina. bei der Hörgeräte-Akustikerin. Musterexemplar

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Datenbank LAP - Chefexperten Detailhandel

Erstellen von x-y-diagrammen in OpenOffice.calc

Transkript:

Musterlösung Klausur Softwaretechnik 08.09.2006 Prof. Dr. Walter F. Tichy M. Sc. A. Jannesari Dipl.-Inform. G. Malpohl Note Punkte 5,0 0,0 18,5 4,0 19 21,5 3,7 22 24,5 3,3 25 27,5 3,0 28 30,5 2,7 31 33,5 2,3 34 37,5 2,0 38 41,5 1,7 42 45,5 1,3 46 49,5 1,0 50 60

Aufgabe 1: Aufwärmen (4+2+2,5+2+3+1,5= 15P) a.) Kreuzen Sie an, ob die Aussage wahr oder falsch ist. (4 P) 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. wahr falsch Aussage Die Durchführbarkeitsuntersuchung und Erzeugung des Pflichtenhefts werden beide in der Definitionsphase durchgeführt. Wenn eine Klasse eine abstrakte Methode besitzt, dann ist sie auch selbst abstrakt. Jedes Modul verbirgt eine wichtige Entwurfsentscheidung hinter einer Schnittstelle, die sich bei einer Änderung der Entscheidung mitändert. Die Zuordnung von Modulen zu Schichten in der Schichtenarchitektur ist immer eindeutig. Bei Rekursionseliminierung ist eine Transformation in die iterative Form nicht mehr schwierig, sobald eine rechtsrekursive Form vorliegt. Kontrollflussorientierte Tests und datenflussorientierte Tests gehören zu der statischen Analyse von Programmen. Die einfache Bedingungsüberdeckung fordert, dass die atomaren Bedingungen mit allen möglichen Kombination der Wahrheitswerte W und F belegt werden. Im "Synchronisiere und Stabilisiere-Model" ist die Priorisierung nach Funktionen nicht möglich. b.) Welche vier Arten von Anforderungen gibt es bei der Anforderungsermittlung? (2 P) Funktionale Anforderungen Nicht funktionale Anforderungen Sicherheitsanforderungen (Safety/security requirements ) Einschränkungen (Constraints or Pseudo requirements ) c.) Sie entwerfen ein Modul nach dem Geheimnisprinzip. Nennen Sie fünf Aspekte, die Sie dabei möglicherweise verbergen wollen. (2,5 P) Implementierung von Datenstrukturen und Operationen an diesen Datenstrukturen (abstract data types) Maschinennahe Details (z. B. Gerätetreiber, Steuerung von Ein- /Ausgabe, Zeichencodes und deren Ordnung, Speicherwortgröße etc.) Betriebssystemnahe Details (Ein-/Ausgabeschnittstellen, Dateiformate, Netzwerkprotokolle, Kommandosprache, etc.) Grundsoftware wie Datenbanken, Oberflächen-Bibliotheken, o.ä. Ein-/Ausgabeformate Klausur Softwaretechnik Sommersemester 2006 Seite 2 von 11

Benutzungsschnittstellen Text von Dialogen und Fehlermeldungen (Sprache!) Größe von Datenstrukturen Reihenfolge der Verarbeitung d.) Nennen Sie vier Techniken, die bei der Optimierung auf Ebene der Algorithmen und Datenstrukturen zum Einsatz kommen. (2 P) Speicherung von Zwischenergebnissen statt Neuberechnung Vorverarbeitung von Daten Teile und Herrsche Dynamisches Programmieren e.) Definieren Sie die Begriffe Testobjekt, Testfall und Testtreiber. (3 P) Die zu überprüfende SW-Komponente oder Konfiguration wird Testling, Prüfling oder Testobjekt genannt. Ein Testfall besteht aus einem Satz von Daten für die Ausführung eines Teils oder des ganzen Testlings. Ein Testtreiber oder Testrahmen versorgen Testlinge mit Testfällen und stoßen die Ausführung der Testlinge an (interaktiv oder selbsttätig). f.) Nennen Sie drei Kategorien von Tätigkeiten in der Wartungs- und Pflegephase. (1,5 P) 4 Kategorien der Wartungs- & Pflege korrektive Tätigkeiten Stabilisierung / Korrektur Optimierung / Leistungsverbesserung progressive Tätigkeiten Anpassung / Änderung Erweiterung. Klausur Softwaretechnik Sommersemester 2006 Seite 3 von 11

Aufgabe 2: Entwurfsmuster (5+3+3= 11P) a.) Ein binärer arithmetischer Ausdruck enthält einen Operanden, einen Operator (+ - * /) und einen anderen Operanden. Die Operanden können entweder eine Zahl sein oder selbst wieder ein anderer binärer arithmetischer Ausdruck. Entwerfen Sie mit Hilfe eines Entwurfsmusters ein Klassendiagramm, um die Bestandteile eines binären arithmetischen Ausdrucks zu einer Baumstruktur zusammenzufügen und seine Bestands- Hierarchien zu repräsentieren. Nennen Sie das verwendete Entwurfsmuster. Hinweis: z.b. 2 + 3 und (2 + 3) + (4 * 6) sind beide gültige arithmetische Ausdrücke. (5 P) Verwendetes Entwurfsmuster: Kompositum ArithmetischerAusdruck 2 NumerischerOperand BinäreOperation 1 Division Addition Multiplikation Subtraktion b.) Gegeben sind das folgende Klassendiagramm und Sequenzdiagramm: Compiler Klient Instr compile(string s) CodeGenerator Instr generatecode(ast tree) Lexer Token [] gettokens(string s) Optimizer AST optimize(ast tree) Parser AST generateparsetree(token [] tokens) TypeChecker AST check(ast tree) Klausur Softwaretechnik Sommersemester 2006 Seite 4 von 11

KlientObjekt acompiler alexer aparser atypechecker anoptimizer acodegenerator Compile(s) tk=gettokens(s) t=generateparsetree(tk) t=check(t) t= optimize (t) i= generatecode (t) Welches Entwurfsmuster wäre für den oben stehenden Entwurf geeignet? Zu welcher Kategorie gehört dieses Muster und welchen Zweck erfüllt es im Allgemeinen? (3 P) Die Fassade. (1P) Bequemlichkeits-Muster (1P) Die Compiler-Klasse bietet eine einheitliche Schnittsstelle, welche die Benutzung des Subsystems vereinfacht. (1P) (oder Fließband,Kategorie: Entkopplungs-Muster) c.) Implementieren Sie nun die Methode compile() der Compiler-Klasse in Java. Achten Sie auf die Rolle der Compiler-Klasse in dem Klassendiagramm und dem Sequenzdiagramm. (3 P) public class Compiler { private Lexer alexer = new Lexer(); private Parser aparser = new Parser(); private TypeChecker atypechecker = new TypeChecker (); private CodeGenerator acodegenerator = new CodeGenerator(); private Optimizer anoptimizer = new Optimizer(); public Instr compile(string s) { Token [] tokens = alexer.gettoken(s); AST tree = aparser.generateparsetree(tokens); tree = atypechecker.check(tree); tree = anoptimizer.optimize(tree); Instr code = acodegenerator.generatecode(tree); return code; (-0,5 für jeden Fehler) Klausur Softwaretechnik Sommersemester 2006 Seite 5 von 11

Aufgabe 3: Aktivitätsdiagramm (11P) Entwerfen Sie ein Aktivitätsdiagramm, das die Durchführung einer Klausur beschreibt. Halten Sie sich dabei so eng wie möglich an die nachfolgende Beschreibung und achten Sie darauf, parallele Aktivitäten korrekt zu synchronisieren. Beginnen Sie mit der Modellierung der Aktivitäten nach Betreten des Hörsaals. Hinweis: Aktivitäten der Studenten sind nicht zu modellieren. Die Klausuraufsicht wird von drei Personen durchgeführt, die alle Mitarbeiter der Universität sein müssen: Der Hauptverantwortliche (A1) wird von zwei Helfern (A2 und A3) unterstützt, alle drei tragen Uhren. Nach Betreten des Hörsaals beginnt A1 die Tafel zu beschriften, während einer seiner Helfer die Etiketten auslegt und der andere die mitgebrachten Türschilder ( Bitte nicht stören! Klausur! ) an den Türen anbringt. Auf den Etiketten stehen der Vor- und Nachname jedes Studenten, seine Matrikelnummer und eine fortlaufende Nummer, die später die Verwaltung der Klausur vereinfacht. Sind diese Aufgaben erledigt, kann der Einlass beginnen. Dazu öffnen die Helfer die Türen des Hörsaals und A1 beaufsichtigt den Einlass. Solange noch nicht alle Studenten ihren Platz gefunden haben, helfen A2 und A3 bei der Platzsuche. Der Hauptverantwortliche A1 wartet ab, bis alle ihre Plätze gefunden haben. Dann erklärt er den Ablauf, beaufsichtigt das Austeilen der Klausurblätter und verkündet den Beginn der Klausur. Anschließend beaufsichtigt er 60 Minuten lang die Klausur und sagt das Ende der Klausur an. Nachdem A1 den Ablauf der Klausur angesagt hat, sind A2 und A3 für das Austeilen der Klausur, die anschließende Aufsicht zuständig. Während der Bearbeitungszeit geht zusätzlich einer von beiden herum und kontrolliert die Studentenausweise, während der andere Aufsicht führt. Während der Klausur verlässt keine Aufsicht den Hörsaal. Klausuraufsicht 1 (Hauptverantwortlicher, A1) Klausuraufsicht 2 (Helfer, A2) Klausuraufsicht 3 (Helfer, A3) Klausur Softwaretechnik Sommersemester 2006 Seite 6 von 11

Tafel beschriften Etiketten auslegen Türschilder anbringen Einlass beaufsichtigen Türen öffnen Türen öffnen Alle Studenten haben Platz gefunden [Ja] Alle Studenten haben Platz gefunden [Ja] [Nein] [Nein] Bei Platzsuche helfen Bei Platzsuche helfen Ablauf ansagen Austeilen beaufsichtigen Klausur austeilen Klausur austeilen Beginn verkünden Klausur beaufsichtigen (60 Minuten) Ausweise kontrollieren Aufsicht führen Ende verkünden Klausur Softwaretechnik Sommersemester 2006 Seite 7 von 11

Aufgabe 4: Abbildung von UML auf Code (12 P) Das folgende Zustandsdiagramm veranschaulicht die Zustände einer Stoppuhr. Sie kann sich in einem der folgenden Zustände befinden: Bereit, Laufend oder Stopp. Vervollständigen Sie den Java-Code für das gegebene UML-Diagramm. Implementieren Sie den Code so, dass sie möglichst genau das durch das Zustandsdiagramm spezifizierte Verhalten an den Tag legen. Verwenden Sie hierfür die Lücken der Vorlage auf dieser und der folgenden Seite. Achten Sie auf korrekte Java-Syntax! Hinweis: Sobald ein Knopf gedrückt wird, wird die zuständige Methode (z.b. startstop- Knopf()) durch den Event-Handler ausgeführt. einschalten Bereit entry: zaehlerzuruecksetzen() entry: anzeigeaktualisieren() exit: zaehlerstarten() startstop Knopf Laufend entry: anzeigeaktualisierungstarten() exit: anzeigeaktualisierungstoppen() reset Knopf startstop Knopf Stopp entry: zaehlerstoppen() entry: anzeigeaktualisieren() public class StoppUhr { private enum Zustand { BEREIT, LAUFEND, STOPP private Zustand aktuellerzustand; public StoppUhr() { aktuellerzustand = Zustand.BEREIT; private void zaehlerzuruecksetzen() { private void anzeigeaktualisieren() { private void zaehlerstarten() { private void anzeigeaktualisierungstarten () { private void anzeigeaktualisierungstoppen () { private void zaehlerstoppen() { public void einschalten() { public void startstopknopf() { switch (aktuellerzustand) { case BEREIT: // Zustand Bereit zaehlerstarten(); // Exit-Aktion anzeigeaktualisierungstarten (); // Entry-Aktion aktuellerzustand = Zustand.LAUFEND; // Übergang Klausur Softwaretechnik Sommersemester 2006 Seite 8 von 11

break; case LAUFEND: // Zustand Laufend anzeigeaktualisierungstoppen (); // Exit-Aktion zaehlerstoppen(); // Entry-Aktion anzeigeaktualisieren(); // Entry-Aktion aktuellerzustand = Zustand.STOPP; // Übergang break; case STOPP: // Zustand Stopp break; // oder default: break; //anstelle des letzten Falls //8P public void resetknopf() { if (aktuellerzustand == Zustand.STOPP) { zaehlerzuruecksetzen(); // Entry-Aktion anzeigeaktualisieren(); // Entry-Aktion aktuellerzustand = Zustand.BEREIT; // Übergang //4P (-1P für Semantikfehler und -0,5 für Syntax Fehler) Klausur Softwaretechnik Sommersemester 2006 Seite 9 von 11

Aufgabe 5: Testen (6+3+1= 10 P) Gegeben ist die folgende Java-Funktion. Es wandelt eine Binärzahl in eine Dezimalzahl um. public static long wandledezimalzahl(string binaer) { long zahl = 0; if (binaer!= null) { for (int i = 0; i < binaer.length(); i++) { char zeichen = binaer.charat(i); zahl *= 2; if (zeichen == '1') { zahl++; else if (zeichen!= '0') { zahl = -1; break; return zahl; a.) b.) Erstellen Sie auf der folgenden Seite den Kontrollflussgraphen der Funktion wandledezimalzahl(). Wenden Sie dabei das aus der Vorlesung bekannte Verfahren an. (6 P) Grob: 2P für for, 3P für if-else und 1P für den Rest Erstellen Sie zwei minimale Testfall-Mengen: Eine, für die Anweisungsüberdeckung und eine andere für die minimale Zweigüberdeckung des obigen Programms. Begründen Sie Ihre Antworten. (3 P) Anweisungsüberdeckung (1P) : { 1x, x!= { 0,1 alle Anweisungen sind durchlaufen: n start, n 1, n 2, n 3, n 4,, n 8, n stopp Zweigüberdeckung (2P): {null, 10, x oder {null, 10x, (0,5 Punkt für jeden Testfall) alle Zweige sind durchlaufen: (n start, n 1 ), (n 1, n stopp ) und (n start, n 1 ), (n 1, n 2 ), (n 2, n 3 ), (n 3, n 4 ), (n 4, n 5 ),, (n 10, n Stopp ). (Punkte nur mit Begründung) (0,5 für Begründung) c.) Gibt es für dieses Programm eine Testfallmenge, die das Kriterium der Pfadüberdeckung erfüllt? Begründen Sie Ihre Antwort. (1 P) Nein, Pfadüberdeckung ist nicht möglich. Man kann eine beliebig große Anzahl an Pfadausführungen in der for-schleife haben. oder: Ja, wegen String-Beschränkung in Java Klausur Softwaretechnik Sommersemester 2006 Seite 10 von 11

n start Eingabe: binaer n 1 long zahl = 0; íf not (binaer!= null) ja n 2 int i=0; nein n 3 if not (i < binaer.length() ) ja nein n 4 char zeichen = binaer.charat(i); zahl = zahl * 2; if not (zeichen == '1') nein ja n5 zahl ++; n 6 if not (zeichen!= '0') ja nein n7 i++; n 8 zahl = -1; n stopp return zahl; Klausur Softwaretechnik Sommersemester 2006 Seite 11 von 11