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 understanding, system summarization, …