Prüfung Software Engineering II (IB)



Ähnliche Dokumente
Prüfung Software Engineering I (IB)

Prüfung Software Engineering I (IB)

Prüfung Software Engineering I (IB)

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Prüfung Algorithmen und Datenstrukturen I

Prüfung Softwareentwicklung II (IB)

Prüfung Algorithmen und Datenstrukturen I

Test-Driven Design: Ein einfaches Beispiel

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Scala kann auch faul sein

Otto-von-Guericke-Universität Magdeburg

Prüfung Softwareentwicklung I (IB)

Prüfung Softwareentwicklung I (IB)

Prüfung Funktionale Programmierung

Software Entwicklung II (SS12)

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Information Security Management System. Klausur Wintersemester 2009/10 Hochschule Albstadt-Sigmaringen

Einführung in die Programmierung

Vorname:... Matrikel-Nr.:... Unterschrift:...

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Prüfung Softwareentwicklung I (IB)

Einführung in die Programmierung für Wirtschaftsinformatik

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Prüfung Softwareentwicklung II (IB)

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

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

Fachbereich 5 Wirtschaftswissenschaften Univ.-Prof. Dr. Jan Franke-Viebach

Übungen zur Softwaretechnik

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Vertraulich. Nachname: Vorname: Matrikel-Nummer: Studiengang: Datum: 30. Januar 2015

Programmierkurs Java

Objektorientierte Programmierung

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte!

Professionelle Seminare im Bereich MS-Office

Probeklausur Softwareengineering SS 15

Java: Vererbung. Teil 3: super()

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Eigene Suchmaschine erstellen mit Google Eine kurze Anleitung Stand: 28. November 2007

Ihre Matrikel Nummer: Ihre Unterschrift

Klausur in Programmieren

Name: Klausur Programmierkonzepte SS 2011

Klausur Software Engineering für WI (EuI)

K L A U S U R D E C K B L A T T

BFV Widget Kurzdokumentation

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

Name (in Druckbuchstaben): Matrikelnummer: Unterschrift:

HP Software Patch- und Version-Notification

Hinweise für das Schreiben einer Bachelor-Arbeit im Fachbereich Wirtschaftspsychologie

Marketing IV - Investitionsgüter- und Technologiemarketing (WS 2014/15)

Name: Matr.-Nr. Datum: Bitte beachten Sie:

Prüfung: Vorlesung Finanzierungstheorie und Wertpapiermanagement

Aufgabenheft. Fakultät für Wirtschaftswissenschaft. Modul Business/IT-Alignment , 09:00 11:00 Uhr. Univ.-Prof. Dr. U.

Zeichen bei Zahlen entschlüsseln

Klausur Softwaretechnik Feb. 2008

K L A U S U R D E C K B L A T T

Anleitung - Archivierung

Übungen Programmieren 1 Felix Rohrer. Übungen

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

Kapiteltests zum Leitprogramm Binäre Suchbäume

Antrag auf Feststellung der besonderen Eignung für den Master-Studiengang Betriebswirtschaftslehre

Graphic Coding. Klausur. 9. Februar Kurs A

Programmierung für Mathematik (HS13)

Bachelor Prüfungsleistung

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

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

Java Kurs für Anfänger Einheit 5 Methoden

TECHNISCHE UNIVERSITÄT DRESDEN Fakultät Wirtschaftswissenschaften Prof. Dr. W. Esswein Lehrstuhl Wirtschaftsinformatik, insbesondere Systementwicklung

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

1 Vom Problem zum Programm

BAPS Basel Psychologie Studien

BIF/SWE - Übungsbeispiel

Digitaler*Ausstellungsbegleiter*für*Mobilgeräte ** * * * Alter: Studiengang: Geschlecht: $ $ $ $ Datum: Falls%Ja,%welches? Falls%ja, %welches?

Bearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre.

Propädeutikum zur Programmierung

Folge 18 - Vererbung

Übung - Erstellen von Benutzerkonten in Windows XP

Klausur zu den Teilgebieten Software-Management und Software-Qualitätsmanagement

Überblick. Lineares Suchen

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Software Maintenance - Musterlösung zum Übungsblatt 1

5. Tutorium zu Programmieren

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Qualifikationsverfahren Montage-Elektrikerin EFZ Montage-Elektriker EFZ

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

FULFILLMENT VON ALLYOUNEED

Loggen Sie sich in Ihrem teamspace Team ein, wechseln Sie bitte zur Verwaltung und klicken Sie dort auf den Punkt Synchronisation.

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

IBM SPSS Statistics Version 23. Einführung in Installation und Lizenzierung

Ablauf Vorstellungsgespräch

Klausur zu den Teilgebieten Software-Management und Software-Qualitätsmanagement

Unsere Webapplikation erweitern

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

Liebe Interessierte an technischen Lösungen für die Sicherheit zu Hause,

sondern alle Werte gleich behandelt. Wir dürfen aber nicht vergessen, dass Ergebnisse, je länger sie in der Vergangenheit

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Wir arbeiten mit Zufallszahlen

Transkript:

Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 4 A Sommersemester 2015 Prüfung Software Engineering II (IB) Datum : 20.07.2015, 12:30 Uhr Bearbeitungszeit : 90 Minuten Prüfer : Prof. Dr. Oliver Braun Hilfmittel : keine Erreichbare Punkte : 90 Name: Vorname: Matrikelnummer: Studiengruppe: Hörsaal: Platz Nr.: Unterschrift: Bitte kontrollieren Sie, ob Sie eine vollständige Angabe mit 8 Aufgaben auf 11 Seiten erhalten haben. Aufgabe 1 2 3 4 5 6 7 8 Summe max. Punkte 10 20 12 10 9 11 6 12 90 Anmerkungen: Nutzen Sie einen dokumentenechten Stift für alles was bewertet werden soll. Auch bei Skizzen ist die Verwendung eines Bleistifts nicht zulässig. Schreiben Sie die Lösungen in die dafür vorgesehenen Kästchen bzw. direkt zur Aufgabe. Sollte Ihnen der Platz dabei nicht reichen, benutzen Sie die Rückseite und vermerken Sie das bei der entsprechenden Aufgabe! 1/11

Aufgabe 1 (10 Punkte) Erklären Sie die folgenden Begriffe im Zusammenhang mit dem Testen von Software kurz und in eigenen Worten. (a) Verifikation (b) Validierung (c) Testautomatisierung (d) Systemtests (e) Whitebox-Test 2/11

Aufgabe 2 (20 Punkte) Gegeben sei folgender Scala-Code: import scala.collection.immutable.queue class Stove(capacity: Int = 1) { private var queue = Queue[List[Pizza]]() def +=(pizza: Pizza): Stove = { if (queue.isempty) { queue = Queue(List(pizza)) else { val last: List[Pizza] = queue.last queue = if (last.length < capacity) { queue.init :+ (pizza :: last) else { queue :+ List(pizza) this def +=(listofpizza: List[Pizza]): Stove = listofpizza.foldleft(this) { (stove, pizza) => stove += pizza def next(): List[Pizza] = if (queue.isempty) { List() else { val first = queue.head queue = queue.tail first und dazu folgende Spec: 1 import models.{stove, Pizza 2 import org.junit.runner.runwith 3 import org.specs2.mutable.specification 4 import org.specs2.runner.junitrunner 5 import org.specs2.scalacheck 6 7 @RunWith(classOf[JUnitRunner]) 8 class StoveSpecification extends Specification with ScalaCheck { 9 3/11

10 "The stove" should { 11 12 "... (Test 1)" in { 13 val stove = new Stove(aaaaa) 14 val listofpizza = List(new Pizza, new Pizza, new Pizza) 15 stove += listofpizza 16 stove.next().length must_== bbbbb 17 stove.next() must beempty 18 19 20 "... (Test 2)" in { 21 val stove = new Stove(ccccc) 22 val listofpizza = List(new Pizza, new Pizza, new Pizza) 23 stove += listofpizza 24 stove.next().length must_== ddddd 25 stove.next().length must_== eeeee 26 stove.next() must beempty 27 28 29 "returns pizza in a correct way" in { 30 prop { (capacity: Int, noofp: Int) => 31 32 var capa = Math.abs(capacity % 10) 33 if (capa == 0) capa = 1 34 var noofpizza = Math.abs(noOfP % 50) 35 if (noofpizza == 0) noofpizza = 25 36 37 val stove = new Stove(capa) 38 stove += List.fill(noOfPizza)(new Pizza) 39 40 var returnedpizza = 0 41 var noofnext = -1 42 var nextpizza: Int = 0 43 do { 44 nextpizza = stove.next().length 45 noofnext += 1 46 returnedpizza += nextpizza 47 while (nextpizza!= 0) 48 49 returnedpizza must_== noofpizza 50 noofnext must_== (noofpizza / capa + 51 (if (noofpizza % capa > 0) 1 else 0)) 52 53 54 55 4/11

Beantworten Sie in Bezug auf obigen Code die folgenden Fragen. (a) Welche Werte müssen die Variablen i. aaaaa = i. ii. bbbbb = ii. iii. ccccc = iii. iv. ddddd = iv. v. eeeee = annehmen, damit Test 1 und Test 2 erfolgreich sind? (b) Beantworten Sie die folgenden Fragen bezüglich des Tests returns pizza in a correct way. i. Was bedeutet der Code in der Zeile 30? (5) v. ii. Was berechnet der Code in den Zeilen 40 bis 47? (5) 5/11

Aufgabe 3 (12 Punkte) (a) Nennen Sie zwei Klassen von Schnittstellenfehlern und beschreiben Sie diese. (6) (b) Beschreiben Sie das Vorgehen in der Testgetriebene Entwicklung (Test-driven (6) development (TDD)). 6/11

Aufgabe 4 (10 Punkte) Gegeben sei der folgende Scala-Code: trait Log { def warning(message: String) def error(message: String) final class Logger { def log(level: Level, message: String) { /*... */ implicit class LoggerToLogAdapter(logger: Logger) extends Log { def warning(message: String): Unit = logger.log(warning, message) def error(message: String): Unit = logger.log(error, message) val log: Log = new Logger() (a) Was sind Design Patterns und für was werden diese verwendet? (4) (b) Wie heißt das oben verwendete Design Pattern? (c) Was ist allgemein der Zweck dieses Design Patterns (nicht auf das Beispiel (4) bezogen erklären, sondern allgemein)? (b) 7/11

Aufgabe 5 (9 Punkte) (a) Nennen Sie 3 Gründe dafür, dass Softwareveränderungen unvermeidbar sind. (b) Nennen Sie 3 Faktoren die die Wartungskosten beeinflussen. (c) Nennen Sie 3 mögliche Aktivitäten im Reengineering-Prozess. 8/11

Aufgabe 6 (11 Punkte) (a) Erklären Sie in eigenen Worten was eine Softwareprodukfamilie ist. (4) (b) Nennen Sie 3 Arten der Spezialisierung einer Softwareproduktlinie. (c) In welchen Schritten werden neue Produktinstanzen entwickelt? (4) 9/11

Aufgabe 7 (6 Punkte) (a) Was ist Service Engineering? (b) Was ist Softwareentwicklung mit Services? 10/11

Aufgabe 8 (12 Punkte) (a) Erklären Sie in eigenen Worten was ressourcenbasiert im Zusammenhang mit (4) REST bedeutet. (b) Ein REST-Service für eine Pizzawebseite antwortet auf einen GET-Request mit der URL http://pizzainitial.herokuapp.com/api/user/1 mit folgendem JSON: { user: { id: 1, name: "Hugo", links: [ { rel: "self", href: "http://pizzainitial.herokuapp.com/api/user/1", method: "GET", { rel: "remove", href: "http://pizzainitial.herokuapp.com/api/user/1", method: "DELETE" ] i. Welche Attribute hat die zurückgegebene Ressource Person? ii. Warum werden Links in die Antwort eingebettet? iii. Wie genau kann Hugo gelöscht werden? 11/11