2장 두 가지 가치에 대한 이야기
모든 소프트웨어 시스템은 이해관계자에게 서로 다른 두 가지 가치를 제공한다.
- 행위
- 구조
소프트웨어 개발자는 두 가치를 모두 반드시 높게 유지해야 하는 책임을 진다.
행위
프로그래머를 고용하는 이유는 이해관계자를 위해 기계가 수익을 창출하거나 비용을 절약하도록 만들기 위해서다.
아키텍처
소프트웨어가 가진 본연의 목적을 추구하려면 변경하기 쉬워야 한다. 이해관계자가 기능에 대한 생각을 바꾸면, 이한 변경사항을 간단하고 쉽게 적용할 수 있어야 한다. 이러한 변경사항을 적용하는 데 드는 어려움은 변경되는 범위(scope)에 비례해야 하며, 변경사항의 형태(shape)와는 관련이 없어야 한다.
소프트웨어 개발 비용의 증가를 결정짓는 주된 요인은 변경사항의 범위와 형태의 차이에 있다. 개발 비용은 요청된 변경사 항의 크기에 비례한다.
아키텍처가 특정 형태를 다른 형태보다 선호하면 할수록, 새로운 기능을 이 구조에 맞추는 게 더 힘들어진다. 따라서 아키텍처는 형태에 독립적이어야 하고, 그럴수록 더 실용적이다.