Final Exam
CSE403 Summer 2005

Assigned: Aug 16, 2005
Due: Aug 18, 2005 at 10pm
Question #	Points	
1		
2		
3		
4		
5		
6		
7		
8		
9		
10		
11		
12		
13		
14		
15		
16		
17		
18		
19		
20		
TOTAL:		

NAME:	

Instructions:
– This is a take-home final exam.  It is due by the date and time indicated above.  The submission is electronic via the usual mechanism.  In addition to the electronic submission, please turn in a hard copy of your solutions at the beginning of class on the day following the exam due date.
– We expect you to work on the exam by yourself, though you are free to consult the readings, the class notes, and the World Wide Web for resources.  It is further expected that if you use a particular resource, you will properly cite it in your solutions.
– There are 15 short-answer questions, and 5 longer or essay-type questions.  Each question indicates how many points it is worth.  The maximum total number of points is 80.
– Although you have two days during which the exam will be available, we anticipate that it will take you no more than 3 hours to complete.  That said, starting early is, as always, strongly advised.
– In your answers we will be looking primarily for solid understanding of the main concepts and ideas, as well as reasoning about how they interrelate, not evidence of strong memory or knowledge of “the right answer.”
– Conciseness is a virtue.  No answer (even to the essay-type questions) is expected to take more than ½ page.
– Please type in your solutions inside this document, each one immediately following the corresponding question.
Q1 (3 pts):  Consider the following two graphs that (roughly) represent the time spent on developing a product at each point between the initial gathering of requirements (start) and the deployment / shipping (deadline).  One graph characterizes the waterfall lifecycle model, while the other corresponds to the spiral lifecycle model.

Waterfall

Spiral

Time spent working on the product

deadline

deadline

Time spent working on the product

What causes the key differences, illustrated on the graphs, between the two models?

Q2 (3 pts):  Consider the value proposition statement covered early in the quarter.  It adhered to the following template:
For (target customer)
who (statement of need or opportunity)
the (product or company name)
is a (product or company category)
that (statement of key benefit / compelling reason to buy).
Unlike (primary “competitive” alternative),
our product (statement of primary differentiation).

Using that template, describe the value that your team provides to the customer(s) through the product you have built.

Q3 (3 pts):  Describe a situation in which a legal constraint would affect the design of a software system.  Explain briefly.

Q4 (3 pts):  Is your project’s final release “good enough”?  Explain briefly.

Q5 (3 pts):  It has been estimated that each dollar invested in early defect tracking saves the project $3‑$10 later on.  What could be the reason why the savings are so high?  What implications does that have for how testing is best conducted?

Q6 (3 pts):  From a design perspective, would it make more sense to design a class that exports a minimal interface (i.e., set of public methods) to its clients rather than to design that class in a way that exports an interface including all methods that its clients might potentially need?  Explain and, if possible, support your claim with an example.

Q7 (3 pts):  In the lecture on Scheduling we discussed that, according to data cited in Code Complete, the breakup of development time for a 10-15KLOC project is:
	13% - architecture
	20% - detailed design
	20% - coding and debugging
	20% - unit testing
	12% - integration
	15% - system testing
How does this distribution compare to the time your team spent on the respective activities?  Where are the main deviations from the above data?  What might have caused them?
 
Q8 (3 pts):  To paraphrase Barry Boehm, verification is akin to asking “Are we building the product right?”, while validation corresponds to the question “Are we building the right product?”  When and how often in the lifecycle does each of the two activities take place?  Which members of the team are typically in charge of each one?  Explain briefly.

Q9 (3 pts):  Describe one risk that doing code reviews addresses and one risk that configuration management deals with.  For each of these risks, suggest one alternative practice that may help mitigate or eliminate that risk.  Explain briefly.

Q10 (3 pts):  Consult the handout on Influence Diagrams and look at the relevant lecture slides.  Sketch an influence diagram by connecting the following four states with arrows that describe implications between pairs of states.  Briefly explain your reasoning in words.  For the specific situation at hand, how might one “break” the resulting positive feedback loop in the case when it reinforces an undesirable outcome?

sleep

pressure
(stress)

work left undone

productivity
(focus)

Q11 (3 pts):  Name two risks that are specific to geographically distributed development teams (operating across time zones and/or countries).  How might you, in the role of a team manager, proactively tackle each of those risks before they cause a crisis?

Q12 (3 pts):  How can aspects of test-driven development support the process of refactoring?  Give an example.

Q13 (3 pts):  Which type(s) of refactoring will not simplify future maintenance, and why?

Q14 (3 pts):  Consider an e-commerce server program that is responsible for communicating with a backend database to process orders.  Think about how the program may deal with the loss of connectivity to the database during a specific transaction.  Should there be an assertion in the server code that checks whether the connection is present, or an exception handler that catches the connectivity problem, or regular program logic that reports an error?  Justify your choice and state your assumptions of the context in which the connectivity loss occurs.

Q15 (3 pts):  Consider the definition of the method installDoor(), written in Java-like pseudo-code, from the Contractor class:

class Contractor {
   // any necessary instance variables 
   // and methods defined here

   installDoor() {
      subcontractor = YellowPages.getSubcontractor();
      carpenter = subcontractor.getCarpenter();
      doorHandle = carpenter.getDoorHandle();
      doorBody = carpenter.getDoorBody();
      screws = carpenter.getScrews();
      door = carpenter.assemble(doorHandle, doorBody, screws);
      securityExpert = subcontractor.getSecurityExpert();
      securityExpert.installDoorSensors(door);
   }
}

What is a major design flaw evident from the definition of the method?  You can assume that errors are handled properly.

Q16 (5 pts):  Perform an individual heuristic evaluation on the following candy machine interface.

To purchase candy from Grandma’s vending machine, a user puts money into the coin slot and then presses two numbers associated with the desired item.  For instance, “Grandma’s Peanut Butter Cookie” has a sign underneath that reads “#21 – 45c”.  Unfortunately, many users end up pressing “4,5” instead of “2,1”, realizing their mistake only after the wrong item gets dispensed.

Write up two violations of the Nielsen heuristics in the format shown in class, with severity ratings and suggested fixes.

Q17 (5 pts):  What changes to your team’s product would be required in order to deploy it in multiple countries?  (Localization is the technical term for this activity.)  Be specific: go beyond just saying “We need to translate the menus and ensure that it is culturally acceptable.”
Briefly describe how these changes would be implemented in the context of your current product.  How can you proactively anticipate (and prepare for) such changes at the early stages of development?

Q18 (5 pts):  Looking back at your project, which lifecycle model (among those discussed in class and in the readings) most closely resembles your team’s development process?  Support your claim with concrete examples.

Q19 (10 pts):  Describe or show an example of your best work as part of the project team this quarter.  Was this a significant contribution to the value that the final product provides to the customer?
This can be a task that you did during any part of the project: concepts, requirements, design, development, test, delivery, project management, etc.  Describe what you did and why you think it was of high quality.  Then, from the customer’s point of view, discuss the value that this work added to the project.  If it did not add value (for example, if it was not used in the final release), explain why that happened.

Q20 (10 pts):  Thinking back over your team’s project, describe two aspects of the team process that you thought were successful, and two aspects of the team process that you thought were unsuccessful.  Include specific examples.  Were some of these aspects due to taking into account (or not taking into account) the assigned readings?  If so, which ones?