Freezing by features or major functional areas
* This would allow them to refactor areas that are not getting new features while the new features are going in.
When a new feature is required, refactor the section that feature must go into until it is easy to add the feature (inspired by Fowler's book)
Working Effectively with Legacy Code, Michael Feathers
* write tests to verify that the code currently does what is specified
* then start modifying the code and using the tests to verify that the functionality has not changed
"Split Testing" -- form of usability testing
* provide one design to one group and a different design to a different group and measure what we care about the most
Observed user testing -- this involves watching the user, being totally unhelpful, and digging out of the user what they really expect to see happening.
One technique when working in a large tangled mess is to define different layers or areas of responsibility, separate those areas with some sort of interface. Then each area can begin to change/improve independently. Good description of that technique in a presentation at InfoQ - Strategies for Effectively Managing Legacy Systems
Refactoring Martin Fowler
Refactoring to Patterns by Joshua Kerievsky
Strangler Application - description of a pattern where you gradually replace old code with new
Comments (1)
Savanni D'Gerinel said
at 3:04 pm on Feb 27, 2010
"Refactoring" -- Martin Fowler
"Refactoring to Patterns" -- ???
You don't have permission to comment on this page.