"소프트웨어 아키텍처"와 "소프트웨어 디자인"은 상당히 많은 정의를 가지고 있고 정식 정의도 없기 때문에 이에 대한 명확한 답은 없습니다.
이것을 생각하는 좋은 방법은 Len Bass, Paul Clements, Rick Kazman의 말이다. "모든 아키텍처는 디자인이지만 모든 디자인은 아키텍처가 아니다"[Software Architecture in Practice] 아키텍처에 다른 활동이 포함될 수 있기 때문에 이에 동의하지는 않지만 아키텍처는 디자인의 중요한 하위 세트를 처리하는 디자인 활동이라는 본질을 포착합니다.
약간의 플립 팬트 정의 ( SEI 정의 페이지에 있음 )는 잘못 결정한 경우 프로젝트가 취소되도록하는 일련의 결정입니다.
몇 년 전 Amnon Eden과 Rick Kazman은 "건축, 설계, 구현"이라는 제목의 연구 논문에서 아키텍처, 설계 및 구현을 개념으로 분리하려는 유용한 시도를 수행했습니다. http : //www.sei.cmu .edu / library / assets / ICSE03-1.pdf . 그들의 언어는 상당히 추상적이지만 간결하게 말하면 아키텍처 는 많은 맥락에서 사용될 수있는 디자인 이며 시스템 전체에 적용될 수 있으며, 많은 맥락에서 사용될 수 있지만 특정 부분에 적용될 수있는 (err) 디자인입니다. 시스템의 구현에 따라 구현 은 컨텍스트에 따라 디자인되어 해당 컨텍스트에 적용됩니다.
따라서 아키텍처 결정은 RPC가 아닌 메시징을 통해 시스템을 통합하기로 결정한 것일 수 있습니다 (따라서 여러 곳에서 적용 할 수 있고 전체 시스템에 적용 할 수있는 일반적인 원칙). 설계 결정은 마스터를 사용하는 것일 수 있습니다. 시스템의 입력 요청 처리 모듈에서 / slave 스레드 구조 (어디서나 사용할 수 있지만이 경우 하나의 모듈에서 사용되는 일반적인 원칙) 및 마지막으로 구현 결정은 요청 라우터에서 보안에 대한 책임을 옮기는 것일 수 있습니다. 요청 관리자 모듈의 요청 핸들러 (해당 컨텍스트에서 사용되는 해당 컨텍스트에만 관련된 결정)
이게 도움이 되길 바란다!