구성요소들간의 관계, 환경, 설계와 발전을 관리하는 원칙으로 이루어진 시스템의 근본적인 구조
-IEEE 소프트웨어 정의
Ralph - "너무 포괄적인(거시적인) 컴포넌트 개념으로 정의했다"
많은 수의 컴포넌트와 연관관계 속에서 어떤 것을 선택하고 배제할 것인가
프로젝트를 주도하고 있는 팀원 간 프로젝트에 대한 이해도가 잘 공유되어야 함
아키텍쳐는 반드시 프로젝트가 시작되기 전에 정의되어야 한다
Ralph - "왜냐하면 그때로 돌아가고 싶기 때문이다"
소프트웨어 시스템이나 아키텍쳐를 설계할 때 무엇이 중요한지 핵심가치에 대해 생각한다
무엇을 핵심가치로 둘 것인가?
아키텍쳐에서는 이러한 핵심가치를 위한 결정들이 중요한 것
좋은 아키텍쳐, 모듈러 디자인을 가지고 있더라도 외부인에게는 보이지 않는다
소프트웨어의 품질을 평가하는 사람들은 외부의 사람들이다
내부 품질은 직접적으로 보이지 않는다
그러나
동일 기능이지만
고품질에 비싼 제품과 저품질에 저렴한 제품 중 선택한다면
저품질에 저렴한 제품을 선택한다
소스코드가 플랫폼화 되고, 이 플랫폼 위에서 더 빠르게 개발할 수 있다
낮은 품질의 제품은 시간을 계속해서 잡아먹는다
결국 경제학적인 관점에서 소프트웨어 아키텍쳐가 중요하다