ECE450 - Software Engineering II

Winter 2007

Sample Midterm Questions

Before reading the following questions, a few warnings: They are a very short sample of the type of questions you will get on the midterm, not of the topics of the midterm's questions. They are only three examples, and they do not, by far, cover the full extent of the course's materials. They should not be used as a study guide under any circumstances.

Question 1

Your manager intends to introduce eXtreme Programming (XP) as the new methodology of your company. The company has 60 developers, works on major contracts for financial institutions, and, for the past four projects, has been involved in catastrophically failed projects due to requirements errors. Until now, your company was not following any methodology in particular. Your manager asks for your advice regarding the switch. What do you respond, and why?

Hints for an answer: This is not a small company, and introducing *any* methodology all of a sudden will be a very risky and time consuming endeavour. Moreover, XP works well for small groups of developers, since it is harder to implement in larger teams --if the company has small teams working on separate components, it may work; otherwise the switch will only lead to another disaster. Note as well that the company's customers are financial institutions, which regularly demand detailed contracts and requirements specifications. XP cannot provide them with that, since it rejects documentation and upfront analysis. You may want to suggest improvements to your process that help mitigate the requirements problems you have had: prototyping or iterative development, for example, might be safer choices in this particular scenario.

Question 2

Dijkstra said that GOTOs should be considered harmful, and since then they have all but disappeared from modern programming languages. Some people now claim that Java exceptions are nothing more than disguised GOTOs. First, they introduce chaos: we raise an exception in one method and have no idea where will it be handled; which breaks the structure of the program. Second, they are misused: some developers use exceptions as common exit mechanisms. Third, they are unnecessary: anything that you write with an exception can be written without it. Do you agree with these statements? Why? Are there cases where exceptions are truly necessary? As a community of developers, are we using exceptions properly?

Hints for an answer: In this case, there really is no right answer. An insightful discussion in favour of exceptions gets as many marks as one against them. Do not be superficial, substantiate your arguments, and think critically about your own opinions, and you're on a good track.

Question 3

A software project has identified four major requirements, but will not have enough money to develop all of them. The developers have asked the paying customer for the project to rank the value of each requirement using AHP. This is the resulting table:
A B C D
A 1 3 1/3 3
B 1/3 1 1/5 7
C 3 5 1 7
D 1/3 1/7 1/7 1
Additionally, the developers have estimated the cost of implementing each requirement:
A $200,000
B $250,000
C $400,000
D $70,000
Plot these requirements in a Cost/Value chart.


Hints for an answer: There will be at least one question in the exam with a right/wrong answer, not necessarily using AHP. To answer this particular question, read the lecture notes on prioritization, and then apply the AHP process.