• 검색 결과가 없습니다.

2.3.1 개요

Yi (2003)는 다양한 농업용 시뮬레이션 모델들의 모듈성을 향상시 킴으로써 시스템의 복잡도를 낮추고, 자기 조직 과정을 모의할 수 있는 GASS를 개발하였다. 궁극적으로 다양한 요인이 영향을 주고 받는 복잡계로서, 농업 시스템에 대하여 범용적으로 활용가능한 시 뮬레이션 환경을 제공하고자 하였다. 이를 위해 데이터와 메소드를 분리하고, 컴포넌트 간에 정보 전달을 일방향으로 제한함으로써 모 델 결합으로 발생하는 복잡도를 낮추었다. 또한 컴포넌트를 결합하 여 점진적으로 시스템을 확장하면서 모의할 수 있으며, 단위 시간을 중심으로 동시성(concurrent)을 보장하여, 개별 컴포넌트는 비동기 적으로 기능을 수행하되 전체를 통괄하는 시스템 시간과 동기화함 으로써 전체 시스템의 모의가 가능하도록 설계하였다.

객체지향 패러다임은 시스템을 구성하는 모든 요소를 객체로 정의하고, 각 객체를 캡슐화하여 다른 객체에서 임의로 접근할 수 없도록 제한함으로써 시스템의 복잡도를 낮추고자 하였다. 객체지향 패러다임을 차용하여, GASS는 컴포넌트라는 단위요소로 모델을 정 의한다. 더 나아가 GASS에서는 컴포넌트를 구성하는 데이터와 메 소드를 분리하여, 데이터를 데이터베이스로 관리함으로써 데이터 관 리의 효율을 높이고자 하였다.

컴포넌트를 중심으로 설계된 GASS가 다른 시뮬레이션 환경과 차별화되는 가장 큰 특징은 일방향 정보전달기법이다. 여러 종류의 컴포넌트가 존재할 때, 인접한 컴포넌트를 조사하여, 처리할 수 있 는 형태의 정보를 가지고 있을 때만 해당 정보를 취득하는 방식을 의미한다. 예를 들어, Figure 2와 같이 토양 컴포넌트(SOIL), 작물 컴포넌트(CROP), 대기 컴포넌트(ATMOSPHERE) 3가지 컴포넌트

는 water 변수만 소유하므로, water 변수의 값을 읽어서 CROP 컴 포넌트를 계산한다. 반면 SOIL 컴포넌트는 관리하는 변수가 없으므 로, CROP 컴포넌트가 인접해 있음에도 아무런 작업을 수행하지 않 는다.

Figure 2 Concept of unidirectional information fetch scheme (Yi, 2003) 이는 PULL방식으로 명명할 수 있으며, 요청은 자유롭게 할 수 있으나, 그 응답을 보장하지 않는 시스템으로 느슨한 연결성을 보장 한다. 느슨한 연결은 객체지향 패러다임의 주요한 원칙 중 하나로, 높은 응집도와 낮은 결합도를 지원하며(Gamma et al. 1994;

McConnell 2004), 개별 요소의 자유도를 향상할 수 있다(Beck and Diehl 2011). 웹 기반 Open API의 근간이 되는 REST(Representational state transfer) 개념 역시 느슨하게 연결 된 분산된 서비스 간의 정보 교환을 가능케 함으로써(Fielding 2000), Web 2.0 시대를 견인하였다(O'reilly 2007).

이러한 독립성을 보장하는 컴포넌트 기반의 환경을 제공함으로 써, 처음부터 시스템을 모두 정의하는 하향식(top-down) 방식이 아닌, 점진적으로 시스템을 확장하면서 개발하는 상향식(bottom-up) 방식으로 모델링이 가능하다. 시스템을 구성하는 개별 컴포넌 트가 전체 시스템을 알지 못한 상태에서 단위 요소로서 주어진 임 무만을 정의한 후, 인접한 컴포넌트를 인지하여 전체 시스템을 모의 함으로써 연구자는 단위 요소의 거동에 집중할 수 있다. 모델을 만 들 때는 전체 시스템과 무관하게 단위 모델만을 개발하면 충분하기 때문에 개발에 필요한 노력이 최소화된다. 모델을 사용할 때는 개발 된 모델의 연결만 정의하면 주어진 도메인에 대하여 모의할 수 있 기 때문에, 기존 시뮬레이션 환경에서 여러 모델을 결합하기 위하여

메인 함수에서 절차와 자료 교환 과정을 정의하는 방식에 비하여 간편하게 이용할 수 있다. 이러한 특징은 관개 시스템 모의, 열전도 모의, 농산물 유통 모의와 같은 다양한 분야의 문제해결에 적용되어 검증되었다(Yi 2003; 김태곤 2007; 서교 et al. 2005).

분석 대상 모델이 되는 단위 컴포넌트는 매 단위시간마다 인접 한 컴포넌트의 값을 이용하여 자신의 컴포넌트 속성을 업데이트하 며, 이 때 인접한 컴포넌트에 인위적으로 값을 주입할 수 없다. 이 는 방어적 프로그래밍 개념으로, 시스템을 구성하는 객체가 서로 레 퍼런스를 공유하면서 값이 의도치 않게 전파되면서 발생하는 부작 용을 방지하는 역할을 수행하여 시스템의 안전도를 향상시킨다 (Bloch 2008; Goodliffe 2007). 방어적 프로그래밍 개념을 기반으 로 각 컴포넌트는 동시에 수행될 수 있었으며(Peierls et al. 2006), 일정 시간마다 동기화를 통하여 각 컴포넌트의 정합성을 유지하였 다.

2.3.2 인접성을 이용한 연결

기존 GASS는 시스템을 구성하는 구성요소간의 연결정보를 컴포넌 트의 위치를 이용한 인접 여부를 기준으로 판단한다. 다음 Figure 3 과 같이 컴포넌트 A, B, C가 존재할 때, 시뮬레이션 환경 GASPanel 위에 각 컴포넌트의 인스턴스를 올려둠으로써 시뮬레이 션을 구동할 수 있다. 이 때 컴포넌트의 인스턴스가 서로 가까이 위 치한다면, 두 인스턴스는 정보를 주고 받을 수 있게 되며, 그렇지 않은 경우에는 정보 교환 없이 독립적으로 컴포넌트의 기능을 수행 한다. 이와 같은 인접성을 이용한 연결정보를 정의함으로써, 사용자 가 시각적으로 관계를 파악하고, 단순히 위치를 이동시키는 작업을 통하여 간단하게 관계를 정의할 수 있다.

Figure 3 Schematic view of established simulation model (Yi, 2003)

이와 같이 GASS에서 컴포넌트의 연결을 물리구조적 인접성을 기준으로 설정한 까닭은 시스템을 구성하는 요소가 MPC 모형에 기 반한다고 가정하였기 때문이다. MPC 모형은 Multilayered Primitive-Composite Models의 약자로, Primitive-Composite 모 형을 개량한 모형이다(배연정 2001). 시설물을 여러 단계로 구분하 기 위한 모형으로, 시설 레이어, 부분 레이어, 요소 레이어, 기본형 레이어로 구분되어, 각 레이어별로 특성을 계층적으로 통합하여 전 체 시설물을 설명할 수 있다. 이러한 실제 시설물을 바탕으로 구성 된 분류법에 따라 시스템을 분해하였기 때문에, 시스템을 구성하는 요소, 즉 컴포넌트의 인스턴스는 실존적 공간을 가진다고 가정하였 다. 따라서, 농업 기반 시설물을 분류하고 모사하는 데에는 적합한 모형이라고 할 수 있다.

2.3.3 속성정보 관리

GASS는 속성정보 관리를 위하여 JAZZ 프레임워크를 이용하였다.

JAZZ 프레임워크는 서울대학교 농업구조 및 시스템 연구실에서 개 발된 통합 데이터베이스 프레임워크로, 다양한 벤더의 데이터베이스 시스템을 동일한 환경에서 사용 가능하도록 제공하였다. 그러나 수 년의 시간이 흐르는 동안 벤더의 기능과 프로토콜이 바뀌는 데 반 해 JAZZ 프레임워크는 지속적으로 업데이트를 할 수 없었고, 현재 에 이르러서는 JAZZ 프레임워크를 활용할 수가 없게 되었다.

현재에 이르러 원활하게 사용할 수 없음에도 불구하고, GASS

는 데이터베이스를 이용하여 속성정보를 저장할 수 있었으며, 속성 정보는 JazzBean 기반의 컴포넌트 기술을 이용하여 각 클래스의 필드로 저장하고, 해당 필드의 접근자를 통해 정보를 주고 받을 수 있도록 개발되었다. JazzBean 기술은 java에서 제안한 기술로 특정 한 규약을 만족할 경우, JazzBean Editor를 이용하여 손쉽게 데이터 객체를 만들고, 제어할 수 있는 기술이었다(Englander 1997).

컴포넌트 간의 정보 전달은 각 컴포넌트에서 원하는 정보에 해 당하는 키워드를 이용하여 인접한 컴포넌트에 자료를 요청한다. 요 청받은 컴포넌트에 해당 키워드의 변수가 있을 경우, 값을 반환하지 만 그렇지 않은 경우에는 아무런 작업을 수행하지 않음으로써, 다양 한 컴포넌트가 결합된 시스템에서 원활하게 시뮬레이션이 구동될 수 있도록 설계하였다.