Conceptual View 
Conceptual View는 어플리케이션 도메인에 밀접하게 연관되어 있다. 이 View에서는 시스템의 기능요구들이 Conceptual Component, Coordination connectors에 의해 제어되는 data 전송이 라는 아키텍쳐 요소들로 멥핑된다.
Conceptual View는 3Cs에 의해 표현된다고 보면된다.
예를 들어 Pipe & Filter에서 filter는 Component이고 pipe는 Connector이다.
Conceptual View는 도메인에서 Problem과 Solution이 기본적으로 보여지게 된다. Conceptual View는 H/W나 특정 S/W에 독립적이어야 한다.

다음 내용들이 Conceptual View에서 보여져야 한다.
1. How does the system fulfills the requirements?
2. How are the commercial off the self(COTS) components to be integrated and how do they
   interact(at functional level) with the rest of the system?
3. How is functionality partitioned into product releases?
4. How does the system in corporate portions of the prior generations of the product and how
   will it support future generations?
5. How are product lines supported?
6. How can the impact of changes in requirements or the domain be minimized?

Module View 
Module View에서 Conceptual View에서 정의된 컴포넌트나 컨넥터가 서브시스템이나 모듈로 멥핑된다. 여기서 아키텍트는 개념적 Solution이 어떻게 현재의 Software platform이나 기술로 구현될지가 고려된다.

Module View에서 다루어져야 할 내용들은
1. How is the product mapped to the software platform?
2. What system support/services does it use, and exactly where?
3. How can testing be supported?
4. How can dependencies between modules be minimized?
5. How can reuse of modules and subsystems be maximized?
6. What techniques can be used to insulate the product from changes in COTS software, in
   the software platform, or changes to standards?

Execution View
Execution Views 각 모듈들이 실행환경에 의해 제공되는 요소들이나 하드웨어에 멥핑될 것인가를 정의한다. Execution View는 시스템의 runtime entity와 그들의 속성(메모리사용량등)을 정의한다.
Execution View의 중요한 부분은 제어의 흐름이다. Conceptual View는 논리적 제어의 흐름을 설명하는 반면 Execution View는 실행환경의 제어의 흐름을 다룬다.

1. How does the system meet its performance, recovery, and reconfiguration requirements?
2. How can one balance resource usage(for example, load balancing)?
3. How can one achieve the necessary concurrency, replication, and distribution without   
   adding too much complexity to the control algorithms?
4. How can the impact of changes in the runtime platform be minimized?

Code View
Code View는 아키텍트가 실행뷰로 부터 정의된 실행 엔티티들을 어떻게 deployment component로 멥핑할 것인가에 대한 문제를 다룬다. 또한 모듈뷰에서 정의된 모듈들이 소스컴포넌트(소스 파일)로 어떻게 멥핑될 것이가에 대해서 또한 분배 컴포넌트가 어떻게 소스 컴포넌트로 부터 만들어질 것인가에 대한 문제를 다룬다.

1. How can the time and effort for product upgrades be reduced?
2. How should product versions and releases be managed?
3. How can build time be reduced?
4. What tools are needed to support the development environment?
5. How are integration and testing supported?

 

참고 : Applied Software Architecture

Posted by sjokim
,