한 줄 요약 : 아키텍처의 궁극적인 목표는 시스템의 수명과 관련된 비용은 최소화하고, 프로그래머의 생산성은 최대화하는데에 있다.
시스템 아키텍처는 개발팀이 시스템을 쉽게 개발할 수 있도록 해야한다.
소프트웨어 아키텍처는 쉽게 배포할 수 있도록 만들어야 한다. 배포 비용이 높아질 수록 시스템의 유용성이 떨어진다고 생각하자.
시스템 아키텍처는 유스케이스, 기능, 시스템의 필수 행위를 first-class 엔티티로 만들고, 개발자들에게 이들을 주요 목표로 인식 되도록 해야한다.
→이를 통해 시스템 이해가 쉬워진다.
유지보수는 가장 비용이 많이 드는 부분이지만, 아키텍처를 신중하게 만들면 이 비용을 줄일 수 있다.
탐사와 그것으로 인한 위험요소에 대한 비용이 제일 많이 들기 때문에, 더욱 신경써야한다.
소프트웨어를 부드럽게 유지하려면, 중요하지 않은 세부사항을 가능한 많이, 그리고 오랫동안 열어두는 것이다.
→ 좋은 아키텍트는 결정되지 않는 것들의 수를 최대화 해야한다.
장치독립적인 것을 중요하다. 장치 종속적일 경우 장치마다 해당 코드를 생성해야하기 때문이다.
오늘날 운영체제는 장치 독립적이다.
저자의 경험이 담겨있다.
정책을 세부사항으로 분리하고, 어떤장치를 사용할 지에 대한 결정을 최대한 미뤘다는 내용이 담겨있다.
정책을 물리적 구조로 부터 독립시킴으로써 애플리케이션과 하드웨어를 분리할 수 있었다.
좋은 아키텍트는 세부사항에 대한 결정을 가능한 한 오랫동안 미룰 수 있는 방향으로 정책을 설계한다.