모든 소프트웨어는 이해관계자에게 서로 다른 두 가지 가치를 제공한다. 행위(Behavior)와 구조(Structure)이다. 행위 누군가가 프로그래머를 고용하는 이유는 아래와 같다. 수익 창출 비용 절약 이해관계자는 기능 명세서와 요구 사항 명세서를 고용된 프로그래머에게 제공한다. 프로그래머는 이러한 요구 사항들을 만족하도록 코드를 작성하며, 요구 사항을 위반할 때 디버깅을 진행한다. 구조 소프트웨어(software)는 부드러운(soft)과 제품(ware)의 합성어이다. 여기서 부드럽다는 변경하기 쉽다는 것을 뜻한다. 즉, 소프트웨어는 변경하기 쉬운 제품을 의미한다. 프로그래머는 변경하기 쉬운 제품을 만들기 위해 소프트웨어의 구조를 잘 만들고, 이 구조를 향상하거나 유지해야 한다. 더 높은 가치(행위 v..