• 검색 결과가 없습니다.

Implementaion and Use of a COM Component for Distribution Number Generation

N/A
N/A
Protected

Academic year: 2021

Share "Implementaion and Use of a COM Component for Distribution Number Generation"

Copied!
7
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

J ournal of K or ean

D a ta & I nf orma t ion S cience S ocie ty 2 002 , Vol. 13, N o.1 p p . 1 7~2 3

Im p le m e n t aio n an d U s e o f a COM Co m p o n e n t f o r D i s t rib u t io n N u m b e r Ge n e r at io n

Ch an g Hy u c k Oh

1

) , S u kin Ju n g

2

) , an d M ira Le e 2 )

A b s tra c t

M icr os oft ' s com pon en t t echn ology , COM , is int r odu ced an d a COM obj ect for g en er at in g distr ibut ion n um b er s is im plem ent ed . E x am ple s u sin g th e obj ect in v ariou s lan gu ag e env ir on m ent s ar e giv en . A str at eg y for st at ist ical s oft w ar e dev elopm ent u sin g com pon en t s is dis cu s sed .

K e y w o rd s : Com pon en t S oft w ar e, COM , S t atist ical S oft w ar e, Dist r ibu t ion Nu m b er s

1 . 서 론

통계에서 컴퓨터의 사용은 필수적이다. 자료의 수집과 정리, 분석에서 뿐만 아니라, 통계적 씨뮬레이션 연구 등에서도 컴퓨터는 아주 중요한 도구이다. 현재와 같이 통계 처리의 일반화에는 컴퓨터를 이용한 통계소프트웨어의 발전이 큰 공헌을 하였다. 통 계소프트웨어에는 SA S나 SP S S와 같은 범용통계패키지나, S - PLUS나 IM SL과 같은 연구용 통계패키지 이외에도 다양한 종류가 있다. 통계소프트웨어들의 대부분은 자본 과 인력이 풍부한 외국회사의 제품이고, 국내에서는 이정진과 강근석(1999)이 개발한 정보통계 가 간신히 명맥을 유지하고 있다. 이는 통계소프트웨어를 포함한 모든 소프 트웨어의 개발과 유지보수에 많은 인력과 자본이 필요하기 때문이다.

소프트웨어 개발에서 겪는 공통적 어려움인 개발과 유지보수를 보다 효율적으로 할 수 있는 여러 가지 방법론이 제시되어 왔다. 그 중에서 객체지향프로그래밍과 컴 포넌트화는 소프트웨어의 재사용성과 확장성을 크게 향상시킨 개념이다. 특히 마이크 로소프트사에서 시작한 컴포넌트화 기술은 객체화개념과 결합하여, 소프트웨어 개발 환경을 획기적으로 향상시킨 것으로 인정받고 있다. Ober g (1999) 참조. 컴포넌트화 기 술은 마이크로소프트 사의 COM , OM G의 CORBA , S UN의 JA VA B ean 등이 있다.

각국에서는 컴포넌트화를 소프트웨어 산업의 발전을 위한 핵심기술로 인지하여 컴포 1. Profes sor , Dept . of St atist ics , YeungNam Univ ersity , Kyungs an , 712- 749, Kor ea.

E - m ail : choh @yu .ac.kr

2. Graduat e Student , Graduat e School, YeungNam Univ ersity , KyungS an 712- 749, Korea.

(2)

넌트 산업의 발전에 지원을 아끼지 않고 있다. 우리 나라에서도 이러한 흐름에 발맞 추어 1999년에 정보통신부의 소프트웨어 컴포넌트 기술 개발사업 계획을 발표하고 사 업을 시행하고 있다. 김명준 외(2000), 윤태권 외(2000) 참조.

이러한 소프트웨어 개발 분야의 흐름을 통계소프트웨어 개발에서 적용하는 예를 보이기 위하여, 본 연구에서는 컴포넌트화 기술 중에서 마이크로소프트사의 COM 을 소개하고, 씨뮬레이션 연구에 흔히 사용되는 여러 가지 분포수발생함수를 컴포넌트로 구현하고 이를 여러 가지 언어 환경에서 사용하는 방법을 보였다. COM 을 이용한 인 터넷 통계소프트웨어의 개발은 한경수 외(1999)에 의해 이미 발표된 바 있다.

제2절에서는 COM 의 소개, 제3절에서는 구현된 함수의 소개와 여러 가지 언어환 경에서의 사용 예를 보였다. 4절에서는 이러한 COM 기술을 이용한 통계소프트웨어의 개발방향에 관한 논의를 하였다.

2 . C OM 의 소 개

소프트웨어의 개발과 유지보수에서 효율성을 높이기 위해서 다양한 개념이 도입되 었는데, 그 중에서 중요한 개념은 객체화와 부품화이다. Ob er g (1999 )와 S zy p er ski (1998) 참조.

객체지향프로그래밍은 소프트웨어의 재사용성에 큰 진전을 가져온 개념으로 평 가받고 있다. 객체화에서 객체는 클래스로 표현되며, 클래스는 상태를 나타내는 자료 (pr oper t y )와 행동을 나타내는 기능 (m et h od )으로 구성된다. 클래스를 이용하여 소프트 웨어를 작성할 때, 클래스의 상속성, 은닉성, 다형성 등을 이용하면, 이미 구현된 객체 의 재사용성과 확장성이 용이해진다. 그러나 클래스 수준의 재사용은 클래스 라이브 러리 수준에서 이루어지므로 언어종속적이며, 응용프로그램의 일부 기능을 개선하려 는 경우에도 전체 프로그램의 컴파일과 링크가 이루어져야 하고, 실행파일 전체를 재 배포하여야 하는 어려움이 있다. 특히 언어종속성은 네트워크 환경과 같은 다양한 환 경이 복합적으로 얽혀 있는 경우에는 그 한계가 더욱 뚜렷해진다.

한편 소프트웨어의 부품화는 특정기능을 수행하는 프로그램의 조각을 독립적 모 듈로 만들고 이 모듈을 필요로 하는 응용 프로그램에 붙여서 사용하는 것이다. 윈도 우 환경에서 부품화는 마이크로소프트의 Visu al Basic의 VBX 컨트롤에서 시작되었 다. VBX 콘트롤은 재사용에 초점을 맞추어 고안되어 윈도우즈 환경에서 공통으로 사 용되는 버튼과 같은 것을 컨트롤로 만들어 필요한 곳에 붙여서 쓸 수 있도록 하였다.

V BX 컨트롤은 Visu al B a sic에 한정되어 사용되는 것으로, 그 자체는 더 이상 발전하 지 않았지만, 이로부터 컴포넌트의 개념이 본격적으로 도입된 DLL (dyn am ic linkin g lib r ary )을 개발하는 계기가 되었다. DLL은 응용프로그램의 실행시 연결되는 라이브러 리로 부품화를 이루었으나, 버전의 호환성에 따른 기능 장애 등의 단점이 발견되었다.

VBX나 DLL의 연장선 상에서 개발된 OLE 1.0은 객체화의 개념이 적용된 컴포

넌트화가 이루어졌으나 자료공유의 불안정성 등의 구조적 취약성이 많았으나, 1993년

COM 즉, Com p on ent Obj ect M odel의 개념을 적용한 OLE 2.0의 발표로 소프트웨어

의 부품화와 객체화가 완전히 접목하게 되었다. OLE의 기초가 되는 COM 은 소프트

웨어 부품화와 객체화에 관한 명세서이다. M icr os oft (1995) 참조. COM 의 핵심 명세는

다중인터페이스, 이진표준, 위치투명성 등이다. COM 의 명세를 만족하는 프로그램을

COM 객체라고 한다.

(3)

COM 객체는 여러 개의 인터페이스를 가질 수 있으며, 이는 객체화에서 중요한 개념인 다형성을 지원하도록 하는 데 적절한 개념이다. 다중인터페이스의 기능을 활 용하면, COM 객체의 기존의 인터페이스의 기능을 개선할 때, 기존의 인터페이스는 그대로 둔채, 기능이 개선된 인터페이스를 추가할 수 있다. 따라서 기존의 인터페이스 를 사용하는 응용프로그램에게는 전혀 영향을 주지 않으면서 개선된 기능의 새로운 인터페이스를 추가할 수 있다. 더욱이 COM 에서는 각각의 인터페이스가 다른 인터페 이스의 포인터를 찾아 사용할 수 있으므로 하나의 인터페이스는 기존의 인터페이스의 기능을 이용할 수 있어 인터페이스 수준에서도 재사용성이 가능하다.

COM 은 윈도우즈 OS 수준의 이진표준이므로 서로 다른 언어에서 작성된 프로 그램을 작성된 언어와는 상관없이 어떠한 언어에서도 사용할 수 있도록 구현할 수 있 다. 즉, 포인터의 구조를 생성할 수 있는 언어인 C, C++, P as cal, A da, Sm allt alk , BA S IC과 같은 언어환경에서 COM 객체의 생성 및 사용이 가능한 언어 독립을 실현하 였다. 더욱이 인터넷 웹브라우저용 스크립트 언어인 Jav aS cript나 A SP 등에서도 사용 할 수 있다. 이진표준은 소스코드 수준에서의 객체를 정의하는 객체지향프로그래밍에 비해 재사용성을 크게 향상시켰다. M icr os oft (2000) 참조.

한편 COM 객체는 하나의 응용프로그램이 사용하게 되면 기억장소에 인스턴스가 생성되며, 또 다른 응용프로그램에서 해당 COM 객체를 이용하고자 하는 경우, 이미 생성되어 있는 인스턴스를 사용하고, 인스턴스는 자신이 이용되고 있지 않으면, 기억 장소에서 소멸되도록 설계되어 있어, 실행시 기억장소나 속도에 대한 추가적 부담이 거의 없다. 또한 COM 객체는 네트워크 상에 물리적으로 떨어져 있는 컴퓨터에서의 분산컴퓨팅이 가능하여 여러 서버나 서버와 클라이언트에 분산되어 있는 COM 을 연 계하여 실행시킬 수 있다. 특히 인터넷 환경에서 응용프로그램의 구축에도 적절하다.

COM 을 기반으로 네트워킹 상에서 운용되는 대형 업무용 응용프로그램의 효율 적 실행을 위하여 M icr osoft (2000)는 COM +를 발표하였으며, 윈도우즈 2000의 모든 기능을 컴포넌트화하여 컴포넌트화의 활용성을 입증하였다.

소프트웨어 개발자가 COM 을 이용하여 응용프로그램을 작성하는 경우의 장점은 여러 가지가 있다. 먼저 데스크탑 컴퓨터 사용자의 대부분이 윈도우즈 환경을 사용하 고 있으므로 시장이 넓다는 점이다. 둘째는 이진코드를 사용하므로 언어독립이 되어 재사용성이 극대화된다는 것이다. 셋째는 응용프로그램의 부분적 기능의 수정을 위하 여 몇 개의 컴포넌트의 수정이 이루어졌을 경우 전체 응용프로그램의 재컴파일과 링 크 등의 과정이 필요없고 해당 컴포넌트만 배포하면 된다. 더욱이 온라인 상으로 배 포가 가능하다. 이는 유지보수의 비용을 크게 절감할 수 있게 해준다. 넷째는 각각의 COM 개체가 다중 인터페이스 기능을 지원하므로 재사용성을 크게 향상시킨다. 다섯 째 다양한 프로그래밍 도구가 있다는 것이다.

3 . 분 포 수 발 생 함 수 의 컴 포 넌 트 구 현 과 활 용

이 절에서는 COM 객체를 구현하고 이의 사용법을 여러 가지 언어 환경에서 보인

다. 구현된 컴포넌트는 여러 가지 분포수를 발생하는 함수들로 구성되어 있다. 여기에

서 구현한 COM 객체에 포함된 정규분포수를 비롯한 여러 가지 분포수 발생함수는

시뮬레이션 연구에 많이 사용되고 있다. 여기서는 Ripley (1987)과 B ank s (1998),

Rubin st ein (1981), R os s (1997 )의 문헌을 참고하여 23개 종류의 분포수 발생함수를 구

(4)

현하였다. 표 1에서는 분포수 발생함수와 관련된 분포와 발생 알고리즘의 출처를 명 시해 두었다. 이들 분포수 발생함수는 IM SL의 분포수발생함수 21개를 모두 포함하고 있다. 구현에 사용된 언어는 C++이며, 컴파일러는 M icr osoft사의 Visual C ++ v er . 6.0 을 사용하였다.

표 1 . 분 포 와 발 생 함 수 , 참 고 문 헌

정규 n orm al ( float m u , float v ar , float *pV al), Ban k s , p . 154 연속균일 unif ( float a, float b , float *pV al), Bank s , p. 150 지수 E x p ( float loca , float a , float *pV al), Ban k s , p . 150 와이블 w eibull ( float a , float b , float *pVal), B ank s , p. 151 베타 b et a ( float a , float b , float *pV al), Rubin st ein , p . 84 카이제곱 chisqu ar e ( int n , float *pV al), Rubin st ein , p. 93 감마 g am m a ( float a , float b , float *pV al), Ru bin st ein , p . 73

로그정규 logn or m al ( float m u , float sigm a , float *pV al), Ru bin st ein , p . 91

삼각 tr ian g ular ( float a , float b , float c, float *pV al), Ban k s , p . 159 폰마이시스 v on_m ises ( float k , float *pVal), B ank s , p. 160

이산균일 dis cUnif ( int a , int b , long *pVal), Bank s , p . 161 포아송 pois son ( float lam da, lon g *pV al), Bank s , p. 166 기하 g eom etr ic ( con st float p , lon g *pV al ), Bank s , p . 161

음이항 nbinomial ( int r , con st float p, lon g *pV al), Rubin st ein , p . 105 초기하 hy per g eom etr ic ( in t m , int n , int n 1, lon g *pV al ), Ru bin st ein , p . 106

로그 log ar it hm ic ( float a , lon g *pV al ), IM S L C/ S t at/ Libr ar y , p . 426, Ros s , p . 51

이항 bin om ial ( in t n , con st float p , lon g *pV al ), Bank s , p . 164

다변량정규 M u lt in or m al (int n , float *pM u , float **ppCov , float * pV al ), Ban k s , p . 167

코시 cau chy (float a , float b , float *pV al), Ban k s , p . 159

극단값 extr em e (float m u , float sigm a, float *pVal), Bank s , p . 152 역가우수 inv er s e_g (float m u , float lam da , float *pVal), B ank s , p . 156 스튜던트 t (int nu , float *pVal), B ank s , p. 155

혼합지수 m ix E x p (float loca 1, float s cale 1, float loca2, float scale2, float m ix r atio, float *pV al ), IM S L C/ S t at/ Libr ar y , p . 439

F F ( int k 1, in t k 2, float *pV al), Ru bin st ein , p . 95

일반이산 discRan d ( int nu m S y m b ols , con st float * pr ob , lon g *pV al), Ripley , p . 231

이중지수 dex p (float loca, float scale, float *pVal), J ohn s on 외, p. 552

Visu al C++를 이용하여 생성한 COM 객체는 dll 형식의 파일이며, 파일이름은

oGen Dist .dll이다. 이 COM 객체에 할당된 CL S ID는 6328454E - A E 1A - 11D4 -

A 1E B - 0020A F 531B31 이다. 생성된 COM 객체는 r eg sv r 32를 이용하여 윈도우즈 시스

(5)

템 레지스트리에 등록한 후 사용할 수 있다.

여기에서는 정규분포수를 발생하는 함수 norm al의 사용 예를 살펴본다. 위의 표 1의 여러 가지 분포수발생함수의 사용법도 동일하다. 정규분포수를 발생하는 함수

H RE S ULT n or m al (float m ean , float v ar , float *pV al );

은 평균값 m ean과 분산값 v ar를 넘겨받아 정규분포수를 *pVal로 반환한다.

Visu al C ++에서의 사용법은 주어진 COM 객체의 h eader 파일을 포함시킨 후 다 음과 같이 코드를 이용하여 COM 객체를 사용할 수 있다.

float fRe sult ;

CoIn it ialize (N ULL ); / / COM 사용환경 설정 CoCr eat eIn st an ce (CL S ID_Gen Dist , / / COM 객체 연결

NULL , CL S CT X_S E RV E R , IID_IDist , (v oid **) &pIDist );

pIDist - > n orm al (0., 1., &fR esu lt ); / / COM 의 함수 사용 pIDist - > Relea se (); / / COM 객체 접속 해제 CoU ninitialize (); / / COM 사용 환경 해제 여기에서 CSLID 대신에 이를 정의한 CLSID_GenDist를 사용하였다.

한편 JAVA에서의 사용법은 마이크로소프트의 J ++와 Sun의 J av a에서의 사용법 이 조금 다른 데, 여기에서는 J ++에서 사용하는 예를 보인다. M icr os oft Visu al J ++

환경에서 COM w r apper를 이용하여 해당 개체를 포함시킨 후 다음과 같은 코드를 사 용하면 된다.

oog en dist .GenDist g en = n ew oog en dist .GenDist ();

float v al = g en .n or m al (0.,1.);

Visu al Ba sic에서 사용하기 위해서는 라이브러리 ooGen Dist T y pe Lib r ary "를 참조하도록 환경을 설정한 이후에 다음과 같이 COM 객체를 사용할 수 있다.

S et oR an dom = N ew ooGen Dist Dim R esu lt a s Double

Re sult = oRan dom .N orm al (0,1)

마이크로소프트사의 엑셀에서는 Visu al Basic을 이용할 수 있으므로, 같은 방법으로 COM 객체를 사용할 수 있다.

Jav aS cr ipt와 마이크로소프트사의 a sp는 웹브라우저에서 사용되는 스크립트 언 어이며, 이들 언어 환경에서 COM 객체를 사용하기 위해서는 COM 객체를 Cabinet 파 일로 만들어 웹서버의 디렉토리에 저장한 후 다음과 같은 코드를 사용하여 htm l파일 에서 정규분포수를 생성할 수 있다.

< OBJE CT CLA S S ID ="clsid :6328454E - A E 1A - 11D4 - A 1E B - 0020A F 531B31"

(6)

CODE BA S E ="p a th/ r an dom .cab#v er sion =1,0,0,1" id ="Bob "> < / OBJE CT >

< s cr ipt lan g u ag e ="j av a s cr ipt ">

< !- - fu n ct ion R an dom () {r esu lt = B ob .n or m al (0,1) } / / - - > < / script >

생성된 COM 객체는 저자에게 연락하면 이용할 수 있다.

4 . 논 의

앞의 3절에서 소개한 분포수 생성함수 객체는 현재 상업용으로 판매되고 있는 수학 통계용 C 라이브러리인 IM SL에서 구현된 분포수 생성함수 모두에 3 가지를 더 포함 하고 있다. 본 연구에서 구현한 COM 객체의 기능은 IM SL 사용설명서의 분량에 따 른 판단을 한다면 대체로 IM SL의 1/ 26에 해당하는 분량이다. 따라서 수학 및 통계관 련 연구 인력 20~30명이 일정한 계획에 따라 수학 및 통계 관련 기능의 COM 객체를 분야 별로 제작한다면 I M S L 수준 이상의 기능을 가지면서 여러 가지 언어 환경에서 사용 가능한 수학통계 함수의 라이브러리를 단기간 내에 개발할 수 있다고 판단된다.

통계적 전문지식이 필요한 통계소프트웨어와 같은 경우, 국내의 통계학 전문가 들이 일정한 계획 하에 부품 소프트웨어를 나누어서 개발하여 조립하는 방식을 도입 하면 개발과 유지, 기능개선 등이 신속히 이루어지는 경쟁력 있는 통계소프트웨어의 개발이 가능하다고 판단된다.

참 고 문 헌

1. 김명준, 김채규, 양영종 (2000). 컴포넌트 활성화 방안, 「정보처리」, 제7권 4호, 3 - 9.

2. 윤태권, 정한일 (2000). 컴포넌트 소프트웨어 산업 동향, 「정보처리」, 제7권 4호, 79 - 84.

3. 이정진, 강근석 (1999 ). W in dow 용 통계패키지 정보통계 개발연구, P r oceedin g s of t h e A u t um n Confer en ce, K or ean S t at istical S ociet y , 67 - 72.

4. 한경수, 김석기, 최숙희 (1999 ). On t h e Dev elopm en t of S t at ist ical S o ft w ar e u sin g M icr os oft COM T echn olog y on t h e In t er n et E nv ir on m ent ,

한국통계학회 논문집, 제6권 2호, 533- 542.

5. Ban k s , J . (1998 ). H an db ook of S im ula t ion , John W iley & S on s , In c.

6. J ohn son , N . L ., Cot z, S . an d Balakr ishn an , N . (1994 ). Cont inu ou s Univ ar iat e Dist r ibu t ion s , V ol. 1, S econ d E d ., John W iley & S on s , In c.

7. M icr osoft Cor por ation (1995 ) T he Com Obj ect M od el Sp ecif ica tion, h tt p :/ / w w w .m icr os oft . com/ com/ r es ou r ces/ specs .a sp .

8. Ob er g , R . J . (2000) Un d ers tand ing & P r og ram m ing COM +, P r en t ice H all In c.

9. Ripley , B . D . (1987 ). S t ochas tic S im ula tion , J oh n - W iley & S on s , In c.

10. Ros s , S . M . (1997 ). S im ulation , A cadem ic P r es s .

11. Rub in st ein , R . Y . (1981). S im ula t ion and the M on te Carlo m e thod , W iley .

12. S zy p er ski, C. (1998 ). Com p on en t S of tware - B ey on d Obj ect - Or ien ted

(7)

P rog ram m ing , A ddison - W esley / A CM P r es s .

13. Visu al Nu m er ics , In c. (1996 ). I M S L , C/ S ta t/ L ibrary , C f un ct ions f or

s ta t is tical analy s is .

참조

관련 문서

Experience of the use of smarter connection arrangements for distributed wind generation facilities..

이에 본 연구에서는 이러한 스트레스를 줄이기 위하여 하타요가 프로그램을 실시하였다.요가는 자세의 완성에 목표를 두기 보다는 전체적인 에너지 순환,무리 없는

본 연구에서는 여러 가지 자생식물 중에서 오래전부터 여러 가지 약리 효과로 인해 민간요법으로 사용하는 약제 중 하나인 바디나물( Angel i c dec ur s i va)

Maximum heat generation, temperature distribution(case) considering various time, maximum von-mises stress and maximum deformation under discharge current(1.25 A discharge)

중대사고 환경하에서 생존 가능 필수 계측기 개발 및 고장·탐지 진단 기술 개발 없음 사고 극복 위한 필수기기 가용성 증진 기술 개발 없음..

Figure 6-15 shows a distribution for the typical cost components of OPEX for a deepwater development. The percentage of each cost component of the total OPEX varies from

w ater level in case of water injection into spreading com

Lastly, the Juvenile Protection Act doesn't clarify appeal proceedings against a decision of the National Youth Com- mission as media materials harmful