Final Exam
CSE403 Summer 2006

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

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 (i.e., eSubmit).  In addition to the electronic submission, please turn in a hard copy of your solutions at the beginning of Friday’s class.  (Single-spaced, double-sided printing is appreciated.)
– We expect you to work on the exam individually, 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 18 short-answer questions, and 2 longer essay-type questions.  Each question indicates how many points it is worth.  The maximum total number of points is 86.
– 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 look 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 single 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 value proposition statement discussed 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.

Q2 (3 pts):  In his book “The Mythical Man-Month”, Brooks states that the written specification must “describe everything the user does see, including all interfaces.”  Should the specification also describe the parts that the user does not see?  Explain and, if appropriate, give an example.

Q3 (3 pts):  What are some design-related shortcomings of using global data in your programs?

Q4 (3+3 pts):  Consider the following snippet written in Java-like pseudocode:

public class Button {
   private Lamp itsLamp;
   // other necessary instance variables

   public void poll() {
      if (/* some condition */)
         itsLamp.turnOn();
   }
   // other necessary methods
}

a) What design flaw is evident in the above class definition?  Which design principle(s) are violated?
b) How would you fix the design?

Q5 (3 pts):  How does the Strategy Pattern support the principle of Information Hiding?

Q6 (4 pts):  Pick one of the design patterns discussed in class and give an example (different from those that were mentioned) of that pattern’s manifestation outside the domain of software.  Explain the correspondence between the elements of your chosen pattern (they were discussed in class) and the respective elements of your example.

Q7 (3 pts):  The senior management at your company has decided to consolidate two products that are under development.  As part of this reorganization, the relatively large overlap in existing functionality between the two is to be eliminated and the product teams are to be merged.  In their development so far, the two teams have tackled similar challenges, but have ultimately adopted different solutions.
What factors – technical and non-technical – should management consider when merging the teams and products?

Q8 (3 pts):  Jane needed to write a class to fulfill a set of customer requirements.  Having just attended a seminar on test-driven software development she took the following approach.  She looked at the simplest requirement and wrote a unit test for it.  She then wrote just enough of the class to pass the test.  Jane then examined her class to make sure that she hadn’t introduced any undue coupling and that the class had good cohesion.  She then repeated the above steps for each of the remaining requirements.
What crucial step did Jane leave out?  What makes this step so important?

Q9 (3 pts):  In the discussion on software quality, we identified four criteria for “good enough” quality.  Describe a situation which highlights the importance of the last (fourth) criterion – i.e., when further development is more harmful than helpful.
Hint:  One example situation is when there is a looming hard deadline.  What are other situations?

Q10 (3 pts):  What are some downsides of having testers be part of development teams as opposed to organizing them in a separate test team within the company (but still working with the development teams)?

Q11 (3 pts):  What are some potential benefits and drawbacks of ensuring that, at all times, there is a releasable version of a software product?

Q12 (3 pts):  What are the benefits of doing retrospectives (debriefs) after each project release?  What risks does this practice help to mitigate?

Q13 (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?

Q14 (3+3 pts):  Consider the following code snippet in Java:

public class PrimeGenerator {
   private static int s;
   private static boolean[] f;
   private static int[] primes;

   private static int[] generatePrimes(int maxValue) { ... }
   private static void initializeSieve(int maxValue) { ... }
   private static void loadPrimes() { ... }

   private static void sieve() {
      int i;
      int j;
      for (i=2; i<Math.sqrt(s) + 1; i++) {
         if ( f[i] ) {     // if i is uncrossed, cross out its multiples
            for ( j=2*i; j < s; j+=i )
               f[j] = false;  // multiple is not prime
         }
      }
   }
}

a) Identify any aspects that need to be refactored and explain which refactoring techniques you would use.
b) Give a snippet showing the code after your refactoring.

Q15 (2+2+2 pts):  Consider the following scenario.  As part of a larger project contract, a moderate-size team had to produce a deliverable at the end of a 30-day milestone stage.  The graph below shows how the manager’s estimate of the remaining work (measured in number of hours) evolved during this 30-day period.
a) What do you notice?  What evidence of challenges and problems faced by the team is visible from the graph?
b) What might have caused those issues?
c) How were the problems likely resolved?
Analyze and annotate by pointing to particular spots in the graph that provide clues for your answers.

Time
(days)

Remaining
Work
(hrs)

20

30

25

10

15

5

0

1

1000

2000

3000

Q16 (2+2 pts):  Describe a case (from software or any other domain) that exhibits a misalignment of incentives, as discussed in lecture 21.  What happened as a result of the misalignment?  How could it have been prevented in the first place?

Q17 (2+2 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.

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

Q19 (10 pts):  Did your team make any of the “classic mistakes” listed in the Rapid Development text (section 3.3)?  If so, which ones, why did this happen, and when did your team realize that this was a problematic situation?

Q20 (5+5 pts):  Describe or show an example of your best work as part of the project team this quarter.  (This can be a task that you did during any part of the project: concepts, requirements, design, development, test, delivery, project management, etc.)
a) Describe what you did and why you think it was of high quality.
b) From the customer’s point of view, discuss the value that this work added to the project.  If it did not add value (e.g., if it was not used in the final release), explain why that happened.
Hint:  Depending on what you choose to present as an example, a snapshot may be an effective way to augment your presentation in order to clarify (and visualize) what may take many words to explain.