8.5.1. Parameter Model

소프트웨어는 다음과 같이 Parameter model을 이용하여 Model을 구현한다:

Figure: Parameter Model

위에서, param은 model에 포함되는 데이터이며, param_acessor는 param 집합에서 개별적인 param을 access하기 위한 클래스이다. param_accessor에서 파생되는 param_container와 asc_param_container는 다수의 파라메터를 갖는다. asc_param_container는 param을 param::id 순으로 정렬하여 유지한다.

param_model은 parameter container, change mediator, lock을 템플릿 파라메터로 가지며, transaction을 지원하기 위해 param_mementors를 포함한다.

change mediator는 observer와 subject가 m:n의 관계로 연결되어 있을 경우, subject의 변경을 효과적으로 observer가 처리할 수 있도록 한다.

예를 들어 다음과 같이 observer가 subject를 attach한 경우를 가정하면,

Figure: Observer-Subject with M:N relation

S1과 S2가 동시에 변경된 경우, S1에 의해 O2와 O3의 update가 호출되고, S4에 의해 O2의 update가 호출되어, O2는 두번 호출되고 O3는 한번 호출된다.

change mediator를 사용할 경우, 다음과 같이 표현할 수 있는데,

Figure: Observer-Subject with Change mediator

위에서 S1과 S4를 변경한 후, S1과 S4의 Id로 change mediator의 update()를 호출한 후, change mediator의 notify()를 호출하면, change mediator는 my_observers를 순회하며 update가 된 경우, observer의 update()를 호출한다.

8.5.2. Algorithm Handler

algorithm handler는 input parameter 중 하나가 변경되면, 실행되어 output parameter를 변경하며, output parameter는 또 다른 algorithm handler의 input parameter가 되어 해당 algorithm handler가 실행되는 구조를 갖는다.

예를 들어 다음 그림은 P1, P2, P3, P4, P5, P6, P7 파라메터가 있고, Alg1, Alg2, Alg3가 있으며, Alg1은 P1, P2를 input parameter로, P4, P6를 output parameter로 연결되며, Alg2는 P3를 input parameter로, P2, P5를 output parameter로 연결되며, Alg는 P4, P5를 input parameter로, P7을 output parameter로 연결되어 있는 모습을 나타낸다.

Figure: Algorithm handlers with parameters

아래 그림은 algorithm handler가 Alg1, Alg2, Alg3의 순서로 Algorithm container에 포함되어 있을 경우를 보여준다:

Figure: Algorithm container before sorting

우리는 algorithm handler간 크기를 input parameter와 output parameter를 비교하여, 만약 algorithm handler 1의 output parameter가 algorithm handler 2의 input parameter가 될 경우, algorithm handler 1이 algorithm handler 2보다 작다라고 판단하고, 위의 algorithm container를 정렬하면 다음과 같다:

Figure: Algorithm container after sorting

algorithm container가 algorithm handler을 정렬한 경우, 소프트웨어는 첫 번째 algorithm handler부터 마지막 algorithm handler까지 순회하며 파라메터의 변경을 처리하면 된다.

Algorithm handler의 내부 구조는 다음과 같다:

Figure: Algorithm handler class structure

8.5.3. Image Controller

Image controller는 사용자의 GUI control을 조작에 대응하는 하드웨어를 제어한다.

Figure: Image controller class structure

X event가 sync_queue에 삽입되면, Image controller는 sync_queue에서 X event를 꺼내, Image controller의 event dispatch 구조를 통해 적절한 handler로 보낸다. handler는 X event를 처리하는 과정에서 parameter model의 파라메터를 변경한다. algorithm_container는 algorithm_handler를 순회하며 변경된 파라메터를 observe하는 Handler를 모두 실행한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다