parnas-1979.pdf
Designing software to be extensible and easily contracted is
discussed as a special case of design for change. A number of ways that
extension and contraction problems manifest themselves in current
software are explained.