모든 소프트웨어 시스템은 이해관계자에게 서로 다른 두 가지 가치인 행동(behavior)와 구조(structure)를 제공한다.
기능 명세서나 요구사항 문서를 구체화할 수 있도록 도우며, 기계가 이 요구사항을 만족하도록 프로그래머는 코드를 작성하고, 에러를 처리한다.
소프트웨어는 soft + ware 의 합성어로, 기계의 행위를 쉽게 변경할 수 있도록 하기 위해 만들어진 것이다.
소프트웨어가 가진 본연의 목적을 추구하려면,
아키텍처는 형태에 독립적, 실용적이여야 한다.
동작은 하지 않지만 변경이 쉬운 프로그램이 더 높은 가치를 가진다.
아키텍처가 후순위가 되면 시스템을 개발하는 비용이 더 많이 들고, 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해진다.
개발하기 쉽고, 수정에 용이하며, 확장하기 쉬운 아키텍쳐를 만들어야한다.