주요 원인 : 코드 분석 시간 증가와 코드 변경 시간 증가
소프트웨어의 가치 : 변화
"keep being useful in a changing world"
=> 낮은 비용으로 변화할 수 있어야 함
캡슐화 + 다형성(추상화)