- 소프트웨어 아키텍처는 선을 긋는 기술이며, 이러한 선을 경계라고 부른다
- 경계는 소프트웨어 요소를 서로 분리하고, 한편에 있는 요소가 반대편의 요소를 알지 못하도록 막는다
- 아키텍트의 목표인 인적 자원의 효율을 떨어뜨리는 요인은 너무 일찍 내려진 결정에 따른 결합
- 좋은 시스템 아키텍처는 이러한 결정을 가능한 한 최후의 순간에 내릴 수 있게 해주며, 결정에 따른 영향이 크지 않게 만든다
두 가지 슬픈 이야기
- P 회사에 대한 슬픈 이야기
- 일련의 회사 차량을 관리해주는 지역 기업인 W사
FitNesse
- 워드 커닝햄이 인수 테스트 작성을 위해 만든 FIT 도구를 기반으로 하는 간단한 위키 페이지 개발
- FitNesse의 요구에 특화된, 우리만의 웹 서버를 직접 작성하기로 결정
- 이르 통해 웹 프레임워크를 사용할지에 대한 결정을 훨씬 나중으로 연기 가능
- 또 다른 결정은 데이터베이스에 대해 고민하지 말자는 것
- 데이터 접근 영역과 데이터 저장소 영역 사이에 인터페이스를 추가하는 간단한 설계 방식 사용
- 영속성을 구현해야 하는 시점이 왔을 때도 파일 시스템을 이용
- 개발 초기에 업무 규칙과 데이터베이스 사이에 경계선을 그었다
- 경계선을 긋는 행위는 결정을 늦추고 연기하는 데 도움이 되었고 시간을 엄청나게 절약
어떻게 선을 그을까? 그리고 언제 그을까?
- 관련이 있는 것과 없는 것 사이에 선을 긋는다
- 데이터베이스는 업무 규칙이 간접적으로 사용할 수 있는 도구
- 스키마, 쿼리 언어 또는 데이터베이스와 관련된 나머지 세부사항에 대해 어떤 것도 알아서는 안된다