절차적 권고
아키텍쳐는 반드시 한명의 Architect나 한명의 리더를 가진 소그룹의 architect들에 의해 만들어져야 한다.
Architect (or team)는 반드시 시스템을 위한 기능 요구사항을 참조해야 한다.그리고 시스템의 목표를 만족시키기 위한 품질 속성과 그것의 우선순위를 결정해야 한다.
아키텍쳐는 최소한 하나이상의 static view와 dynamic view로 문서화되어야 하며, view를 위한 표기법은 모든 관련 당사자들이 이해하고 동의하는 방법을 사용해야 한다.
아키텍쳐는 반드시 시스템의 모든 관련 당사자들과 공유되어야 한다. 관련 당사자들은 적극적으로 아키텍쳐 review에 참가해야 한다.
아키텍쳐는 너무 늦어서 변경할 수 없기 전에 정량적으로 분석되고 평가되어야 한다.
아키텍쳐는 skeletal 시스템을 통해서 incremental 구현을 리드해야 한다.
시스템의 자원 경합은 최소화되어야 하며 자원 경합에 대한 해결은 명확히 명시되고 공유되며 유지 관리되어야 한다.
구조적 권고
아키텍쳐는 모듈화가 잘되어있어야 한다. 각 모듈의 기능적 역할이 분명해야 한다. 각 모듈은 잘 정의된 인터페이스를 가지고 있어야 한다. 인터페이스는 모듈 내부의 변경으로부터 외부모듈을 보호하며, 팀이 독립적으로 작업할 수 있게 도와준다.
품질 속성은 잘 알려진 아키텍쳐적 전략을 이용하여 성취되어야 한다.
아키텍쳐는 절대로 특정 버전의 상업적 제품이나 툴에 의존적이어서는 않 된다. 그러나 어쩔 수 없는 경우에는 반드시 다른 툴로 변경할 수 있도록 구조를 설계해야 한다.
데이터를 생성하는 모듈과 데이터를 사용하는 모듈을 분리해야 한다.. 데이터의 Producer와 Consumer가 별도로 변경되는 경우가 많기 때문에 modifiability를 높일 수 있다.
병행 프로세싱 시스템을 위해, 아키텍쳐는 프로세스나 쓰레드의 모습을 잘 정의해야 한다. 이때 쓰레드나 프로세스 구조가 모듈 구조를 반영할 필요는 없다. 모든 task나 process가 특정 processor에 할당되어야 하면 그 관계를 명확히 기술한다. 아키텍쳐에서 interaction 유형은 단순하고 숫자가 적어야 한다.