Sunday, May 3, 2009

A Max status bar

JUnit Max 1.1.26 offers two improvements: The status bar now contains a widget that shows the state of the last Max run: red=failed, green=passed, and gray=running). This is intended to be the first toehold for an overall UI to complement the in-situ feedback. Please let me know what you think and what you’d like to see there. Long-running tests are now correctly terminated when you start a new test. I learned two lessons in developing this release. The first is to deploy as soon as there is additional value. I had the trim widget done yesterday by noon. I thought about deploying. Then I looked at the punch list for the GA release and though, “Nah… I can get one more item off my list.” Mistake. The one more item took me a day and a half of serious re-design. The second lesson is that changes to concurrency strategies are one of those “rippling” changes Yourdon and Constantine warned about, at least the way I design the original strategy. I kept getting tripped up by making a change then needing to change three places that (often silently) depended on the first change, and then… The automated functional tests still haven’t fully recovered. Okay, and one bonus lesson: when you have a mess, make a bigger mess before cleaning up. I had a lot of complexity down in a leaf object that spawned a VM and an object to talk to it. I couldn’t see how to clean up to support reliable cancellation of long-running tests. Once I had inlined as much of that object’s complexity to its caller as possible, though, the way forward became clear. The calling object was now a mess, but it was easier to factor cleanly. Trying to hide away the complexity earlier had made my job harder. Inlining to get all the gunk in one place made it easier.

No comments:

Post a Comment