SWE 437 In Class Exercise #10
Legacy TDD

Names:

Instructions: Work with your neighbors in groups.

This is a legacy TDD exercise. It considers the example from in-class exercise #8 from the TDD legacy perspective.

Suppose we wanted to change the way iterators worked in Java ArrayList. In particular, suppose we wanted to make the treatment of ConcurrentModificationException uniform across the methods in all the iterators ArrayList. Further suppose that we wanted to expand the treatment to cover any modification to the ArrayList made outside the iterator. Let's assume (incorrectly, one hopes) that there are no relevant test sets.

  1. Koskela's first step is to identify change points. What are change points in general, and where are they in this exercise?


  2. Koskela's second step is to identify inflection points. What are inflection points in general, and where are they in this exercise?


  3. Koskela require a local test harness before any code is changed. Design appropriate tests for this exercise. Should these tests pass or fail initially?


  4. The next step is to test-drive the change. What should change first: the tests, or the implementation? How many changes should you make at once? What's the sequence?