Approaches to reducing cost
Design for change (proactive)
Information hiding, layering, open
implementation, aspect-oriented programming,
etc.
Tools to support change (reactive)
grep, etc.
Reverse engineering, program