Tentamen in2705 Software Engineering



Vergelijkbare documenten
Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Abstracte klassen & Interfaces

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

IMP Uitwerking week 13

Tentamen Imperatief Programmeren

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Overerving & Polymorfisme

NAAM: Programmeren 1 Examen 29/08/2012

TENTAMEN Programmeren 1

Modelleren en Programmeren

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Design patterns Startbijeenkomst

Tree traversal. Bomen zijn overal. Ferd van Odenhoven. 15 november 2011

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Scala. Korte introductie. Sylvia Stuurman

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.


Elementary Data Structures 3

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Ingebouwde klassen & methodes

Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Programmeren (1) Examen NAAM:

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

NAAM: Programmeren 1 Examen 21/01/2011

Project 2: LOTTO simulatie Programmeren I

Design patterns.

Modelleren en Programmeren

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Tree traversal. Ferd van Odenhoven. 15 november Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering. Doorlopen van bomen

Java Les 3 Theorie Herhaal structuren

Tentamen Programmeren in C (EE1400)

Java Programma structuur

Modelleren en Programmeren

Stacks and queues. Hoofdstuk 6

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Datastructuren Werkcollege Intro

Tentamen Programmeren in C (EE1400)

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Lessen Java: Reeks pag. 1

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

Recursie. public static int faculteit( int n ){ // Deze functie berekent n! // pre: n = N en n >= 0 // post: faculteit = N!

Kleine cursus PHP5. Auteur: Raymond Moesker

1 Ontwerppatronen. 1.1 Het Command patroon

Game of Life in Java

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Datastructuren en algoritmen

eerste voorbeelden in Java

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

li d a l n s V a l GEMEENTE MAARTENSDIJK r Nbo bestemmingsplan buitengebied g g Nbo Nbo Schaal 1:5000 plankaart noord

X. Grafische elementen

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers

Tentamen Programmeren in C (EE1400)

Modelleren en Programmeren

Ontwerp van Informatiesystemen

Modulewijzer Tirdat01

Datastructuren: stapels, rijen en binaire bomen

DOMjudge teamhandleiding

Tentamen Objectgeorienteerd Programmeren

Zelftest Programmeren in Java

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Programmeren in Java 3

Een fragment wordt afgeleid van de basis klasse "Fragment".

Vakgroep CW KAHO Sint-Lieven

Tweede college algoritmiek. 12 februari Grafen en bomen

Een inleiding in de Unified Modeling Language 67

Transcriptie:

Tentamen in2705 Software Engineering Voorbeeld (bijna tweemaal te groot) U mag meenemen naar dit tentamen: Lethbridge, afdrukken PPT slides, afdrukken handouts. 1. De TU wil een nieuw systeem ontwikkelen voor het beheren van studieresultaten van studenten. a. (4 pt) Welke gebruikers voor dit systeem kunt u onderscheiden? b. (4 pt) Welke kwaliteiten zijn voor dit systeem van belang, en waarom? c. (4 pt) Op welke wijze(n) zou u de requirements voor dit systeem kunnen verzamelen? d. (4 pt) Welke architectuur zou u voor een dergelijk systeem kiezen? Motiveer uw keuze. 2. Euler (http://mathschallenge.net) is een systeem ter ondersteuning van een internet wedstrijd in programmeren. Ingeschreven deelnemers kunnen een opgave kiezen en de oplossing invoeren. De oplossing wordt dan gecontroleerd. De oplossing is altijd een geheel getal. De waarde van een probleem is een positief getal in de range 1..20. De score van een deelnemer is de som van de waarden van alle problemen die hij heeft opgelost. Naarmate meer deelnemers een probleem oplossen neemt de waarde van dat probleem af. De score van een deelnemer kan dus ook afnemen, zonder dat hij iets doet. a. (10 pt) Geef een Use-Case beschrijving van het kiezen, oplossen en laten controleren van en opgave. b. (10 pt) Geef een volledig klassendiagram voor het bovenbeschreven systeem. Voorzie associaties van zoveel mogelijk informatie, en onderscheid waar nodig ook aggregatie en compositie. Klassen uit de gebruikersinterface mag u weglaten. c. (10 pt) Geef (gebaseerd op het klassendiagram van onderdeel b) een sequence diagram van het insturen van een oplossing. 3. (10 pt) Het cruise-control systeem van een auto heeft een interface bestaande uit een schakelaar en twee toetsen, A en B. Met behulp van de schakelaar kan het systeem worden ingeschakeld en op elk moment ook weer worden uitgeschakeld. Als het systeem is ingeschakeld is het nog niet meteen actief. Pas als toets A wordt ingedrukt wordt het systeem actief, het zorgt er dan voor dat de auto de snelheid behoudt die hij had op het moment dat toets A werd ingedrukt. In deze toestand kan de snelheid worden gewijzigd door een van beide toetsen in te drukken: indrukken van toets B verhoogt de snelheid iets, indrukken van toets A verlaagt de snelheid. Maakt de bestuurder in deze toestand gebruik van het rem- of koppelingspedaal, dan gaat het systeem op non-actief. Het kan dan op twee manieren weer geactiveerd worden: met toets B wordt de laatst ingestelde snelheid de richtsnelheid, met toets A wordt de huidige snelheid de richtsnelheid. Geef een state diagram voor de toestanden en overgangen van het cruisecontrole systeem. 1

4. Geef aan de hand van onderstaand klassendiagram OCL-specificaties: a. (4 pt) Begin- en eindpunt van een weg moeten verschillend zijn. Geef een OCL-beschrijving van deze eigenschap. b. (8 pt) In de klasse Route komt de methode lengte voor. De lengte van een route is de som van de lengten van de wegen in de route. Geef een OCL-specificatie van deze methode. Route lengte() * Weg lengte van naar Plaats naam 5. (Zie bijlage B) a. (5 pt) Welke vorm(en) van koppeling vindt u tussen de klasse BinExpressie en de klasse Expressie? b. (5 pt) Welke vorm(en) van koppeling vindt u tussen de klassen LiteralExpressie en de klasse BinExpressie? 6. (Zie bijlage B) a. (6 pt) Welke design principes worden geschonden door de methode tostring in de klasse Expressie? b. (6 pt) Welke design principes worden geschonden in de klasse BinExpressie? 7. (10 pt) In bijlage A ziet u een implementatie van een Queue met behulp van de LinkedList uit het package java.util. Welk Design Pattern herkent u hier? Geef aan welke rollen uit het template van het pattern door welke elementen uit de implementatie worden gespeeld. 8. (10 pt) a. In een recent project werden 200000 regels C-code geschreven. Wat zijn de nominale kosten in mensmaanden volgens het COCOMOmodel, uitgaande van een embedded project? Hoe lang zal het duren? Welke teamgrootte zou u voor dit project adviseren? b. Een mijlpaal in een project wordt bereikt na 30 weken, vijf weken voor de geplande 35 weken. Daartoe zijn wel meer mensen ingezet: deze mijlpaal kostte 30 mensmaanden, in plaats van de geplande 24 MM. Laat zien hoe deze gegevens in een earned value chart worden weergegeven. 9. (20 pt) In de methode aantaldelers wordt het aantal delers van het getal n geteld. We beginnen met d = 2, maar omdat 1 ook tot de delers van n wordt gerekend, krijgt aantal startwaarde 1. 2

public int aantaldelers(int n){ int d = 2; int aantal = 1; while (d <= n){ if (n % d == 0) aantal = aantal + 1; d = d + 1; return aantal; Geef de flow graaf van de methode aantaldelers.hoeveel paden zijn er door deze graaf? Beperk u tot paden die de herhalingslus niet meer dan twee maal doorlopen. Geef zo mogelijk voor elk pad een waarde van n die tot dit pad aanleiding geeft. 10. (15 pt) Gegeven is de methode aantalwortels: public int aantalwortels (int a, int b, int c) Deze methode bepaalt het aantal wortels van de vergelijking ax 2 + b x + c = 0. De methode aantalwortels moet worden getest. Verdeel de mogelijke invoer voor deze methode in equivalentieklassen, en geef een testgeval voor elke klasse. Geef ook testgevallen voor randwaarden. p1 t1 p2 p3 p4 t2 t3 t4 p5 p6 p7 t5 11. (25 punten) Gegeven is bovenstaand petrinet. Cirkels zijn plaatsen, horizontale streepjes zijn transities en stippen in cirkels zijn tokens. a. Geef vanuit de gegeven marking een firing-sequence die willekeurig vaak herhaald kan worden. b. Geef vanuit de gegeven marking een firing-sequence die tot deadlock leidt. 3

c. We geven het net een nieuwe marking, met tokens op p1 en p6. Laat zien dat ook vanuit deze marking deadlock kan ontstaan. d. Ga uit van de marking onder c). We noteren deze met de vector: (1,0,0,0,0,0,1). Welke markings zijn vanuit deze marking bereikbaar? e. Is het net met de marking onder c) i. safe? ii. bounded? iii. conservative? Bijlage A import java.util.*; interface Queue{ void enqueue(int[] item); int[] dequeue(); boolean isempty(); class ListQueue implements Queue{ private LinkedList list = new LinkedList(); public void enqueue(int[] item){ list.addlast(item); public int[] dequeue(){ int [] antwoord = (int [])list.getfirst(); list.removefirst(); return antwoord; public boolean isempty(){ return list.isempty(); Bijlage B abstract class Expressie{ public abstract int eval(int x); //public abstract Expressie add(expressie exp); public String tostring(){ if (this instanceof LiteralExpressie) return "" + eval(0); else return "X"; 4

class XExpressie extends Expressie{ public int eval (int x){ return x; class LiteralExpressie extends Expressie{ private int waarde; public LiteralExpressie(int k){ waarde = k; public int eval (int x){ return waarde; class BinExpressie extends Expressie{ static final char PLUS = '+', MIN = '-', MAAL = '*', DEEL = '/'; private Expressie left, right; private char op; public BinExpressie(Expressie l, char op, Expressie r){ left = l; this.op = op; right = r; public int eval(int x){ int leftvalue = left.eval(x); int rightvalue = right.eval(x); switch (op){ case PLUS : return leftvalue + rightvalue; case MIN : return leftvalue - rightvalue; case MAAL : return leftvalue * rightvalue; case DEEL : return leftvalue / rightvalue; return 0; public String tostring(){ return '(' + " " + left.tostring() + " " + op + " " + right.tostring() + " " + ')'; 5