Eric Armstrong has a couple of interesting ideas on how to design programs to accomodate UI’s, yet remain unit-testable (is that a word?).