목표는?
소프트웨어 아키텍처의 목표는 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화하는 데 있다
- 설계 품질을 재는 척도는 고객의 요구를 만족시키는 데 드는 비용을 재는 척도와 다름 없다
- 새로운 기능을 출시할 때마다 비용이 증가한다면 나쁜 설계
사례 연구
- 그림 1.1 엔지니어링 직원 수의 증가 추이
- 그림 1.2 동일한 기간의 생산성
- 그림 1.3 동일한 기간의 코드 라인당 비용
- 개발자의 수는 지속적으로 증가했지만, 코드 생산성과 그에 따른 비용이 급격하게 증가
- 이러한 비용 곡선은 모델의 수익을 엄청나게 고갈시키며, 회사의 성장을 방해한다
엉망진창이 되어 가는 신호
경영자의 시각
- 그림 1.5 출시별 월 인건비
- 인건비를 점점 높여도 얻은게 거의 없다
무엇이 잘못되었나?
- 토끼와 거북이 일화
- 개발자도 생산성을 유지할 수 있다고 자신의 능력을 과신한다
- 하지만 엉망진창인 코드가 서서히 쌓이면 생상성은 낮아지고, 코드가 엉망이 되는 추세는 멈추지 않는다