최근에 프로그램 제작에서 유지 보수 비용이 차지하는 비용이 늘어가는 추세입니다. 그리고 이미 전체 제작 비용의 3분의 2 정도가 유지 보수 비용에 들어간다고 합니다. 이는 프로그램 제작 시에 유지 보수 비용을 최소화할 수 있게 개발하는 것이 전체 개발비를 낮출 수 있음을 의미합니다. 프로그램을 제작할 때 유지 보수 비용을 줄이는 방법은 여러가지 방법이 존재하는데 그 중에 하나가 요소들 간의 종속성을 제거하여 관계를 느슨하게 만들어 유연성 높이는 것입니다.
아키텍쳐링 작업과 설계 작업은 구체적인 구현에 앞서 역할과 기능을 정의하고 관계를 느슨하게 만드는 작업 등을 수행합니다. 이 책의 많은 부분은 아키텍쳐링과 설계 작업을 다룰 것입니다. 필요하면 개발 방법론을 다루는 별도의 레퍼런스를 참고하세요.
아키텍쳐는 시스템을 구성하는 요소와 요소들 간의 관계로 이루어진 시스템 구조를 말합니다. 아키텍쳐링 작업은 시스템을 구성할 요소를 구분하는 작업에서 출발합니다. 일반적으로 요소를 구분하는 작업은 역할에 따라 구분합니다. 이러한 작업을 통해 구분한 시스템 요소를 컴포넌트라 부릅니다.
그리고 시스템 아키텍쳐는 소프트웨어 아키텍쳐와 하드웨어 아키텍쳐로 구분할 수 있습니다. 특히 소프트웨어 아키텍쳐는 요구 분석 및 정의에서 파악한 것을 반영하고 하드웨어 아키텍쳐에 맞게 작성해야 합니다. 그리고 이를 기반으로 설계 작업을 수행합니다.