독립적으로 개발된 상용 컴포넌트들을 소스 코드 수정 없이 조립하여 재사용하기 위해서는 컴포넌트간 인터페이스 불일치 문제를 해결해야 한다. 본 논문에서는 이러한 문제를 해결하기 위한 새로운 컴포넌트 모델 및 조립 방법을 제안한다. 제안한 컴포넌트 모델은 각 컴포넌트가 서비스를 제공하는 하위 컴포넌트의 인터페이스에 의존하는 대신 서비스 요청에 관한 인터페이스를 독자적으로 정의하여 내장하고 이를 메타데이타로 노출한다. 조립 시에는 컴포넌트들의 요청 및 서비스 제공 인터페이스에 대한 메타데이타를 읽어 글루 컴포넌트 템플릿 코드를 자동 생성하여 인터페이스 정합에 필요한 중재 코드를 삽입하는 구조이다. 또 프레임워크에서 컴포넌트들에 대한 인스턴스를 관리하고 런타임시 의존성 주입 방식으로 조립을 수행하며, 글루 컴포넌트를 미들웨어 서비스 포인트 및 실시간 모니터링 포인트로 활용하는 방안도 제안한다. 이와 한께 본 논문은 제안한 컴포넌트 모델에 따르는 컴포넌트를 개발하고 조림하는 도구를 구현하여, 실용 가능성을 입증하였다.
독립적으로 개발된 상용 컴포넌트들을 소스 코드 수정 없이 조립하여 재사용하기 위해서는 컴포넌트간 인터페이스 불일치 문제를 해결해야 한다. 본 논문에서는 이러한 문제를 해결하기 위한 새로운 컴포넌트 모델 및 조립 방법을 제안한다. 제안한 컴포넌트 모델은 각 컴포넌트가 서비스를 제공하는 하위 컴포넌트의 인터페이스에 의존하는 대신 서비스 요청에 관한 인터페이스를 독자적으로 정의하여 내장하고 이를 메타데이타로 노출한다. 조립 시에는 컴포넌트들의 요청 및 서비스 제공 인터페이스에 대한 메타데이타를 읽어 글루 컴포넌트 템플릿 코드를 자동 생성하여 인터페이스 정합에 필요한 중재 코드를 삽입하는 구조이다. 또 프레임워크에서 컴포넌트들에 대한 인스턴스를 관리하고 런타임시 의존성 주입 방식으로 조립을 수행하며, 글루 컴포넌트를 미들웨어 서비스 포인트 및 실시간 모니터링 포인트로 활용하는 방안도 제안한다. 이와 한께 본 논문은 제안한 컴포넌트 모델에 따르는 컴포넌트를 개발하고 조림하는 도구를 구현하여, 실용 가능성을 입증하였다.
It is difficult to assemble independently developed software components because of discrepancies between their interfaces. In order to resolve such problem, we propose a new component model, Active Binding Technology, in which each component has its own independently-defined interface for service re...
It is difficult to assemble independently developed software components because of discrepancies between their interfaces. In order to resolve such problem, we propose a new component model, Active Binding Technology, in which each component has its own independently-defined interface for service request that is revealed in its metadata, instead of passively following the interface of a service-providing component. This model Includes the use of the glue component, an interface mediating place, whose template code is automatically generated by reading in the metadata of the components to be combined. We also propose a runtime framework that holds the pool of component instances, completes the assembly of components in the manner of dependency injection, and performs middleware services and real-time system monitoring through glue components. In order to test the practical value of Active Binding Technology, we have made a tool, which supports the development and assembly of Active Binding components.
It is difficult to assemble independently developed software components because of discrepancies between their interfaces. In order to resolve such problem, we propose a new component model, Active Binding Technology, in which each component has its own independently-defined interface for service request that is revealed in its metadata, instead of passively following the interface of a service-providing component. This model Includes the use of the glue component, an interface mediating place, whose template code is automatically generated by reading in the metadata of the components to be combined. We also propose a runtime framework that holds the pool of component instances, completes the assembly of components in the manner of dependency injection, and performs middleware services and real-time system monitoring through glue components. In order to test the practical value of Active Binding Technology, we have made a tool, which supports the development and assembly of Active Binding components.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
그러나 독립적으로 개발된 컴포넌트의 소스 코드를 구할 가능성도 희박할 뿐더러, 타인이 작성한 소스 코드 분석과 수정에 소요되는 비용이 처음부터 새로 개발하는 것에 비해 크게 절감되는 것도 아니다. 따라서 시장에서 저렴한 비용으로 구할 수 있는 컴포넌트를 소스 코드를 수정하지 않고 재사용할 수 있어야 비로소 뚜렷한 생산성 향상 및 비용 절감 효과를 거둘 수 있는 것이다. 그러나 Jav由EJB[5], .
본 논문에서 제안한 액티브 바인딩 기술은 독립적으로 개발된 컴포넌트의 소스 코드 수정 없는 재사용을 실천할 수 있는 기반을 제공한다. 그러나 상용 컴포넌트를 구입하여 “조립에 의한 개발(development by assembly)" 방식으로 애플리케이션을 개발하는 CBD의 이상을 제대로 달성하기 위해서는 컴포넌트의 부품화 및 그 조립 방안과는 별도로 개발자가 필요로 하는 컴포넌트들의 신속한 검색과 자동 조립을 지원할 수 있도록 컴포넌트의 기능과 규격 정보를 정형화하여 표현하는 방법이 더 연구되어야 한다.
본 논문은 기존의 컴포넌트 기술들이 왜 재사용을 효과적으로 지원하지 못하는가를 분석하고, 그 결함을 보정해줄 실용적인 방법을 고안하기 위하여 수행되었다. 본 논문에서는 상용 컴포넌트의 구입과 조립을 통한 소프트웨어 개발을 가능하게 하기 위하여 기존 컴포넌트 모델들과 다른 액티브 바인딩 기술(Active Binding Technology)이라는 명칭의 새로운 컴포넌트 모델을 제안한다. 이 컴포넌트 모델은 상하위 컴포넌트간 의존 관계를글루 코드에서 정합하고 조립하는 기본 구조를 갖는다.
본 논문에서는 서로 다른 개발자들에 의해 독립적으로 개발되어 인터페이스가 상이한 컴포넌트들을 소스 코드 수정 없이 조립할 수 있도록 하는 새로운 컴포넌트 모델을 제안하고 이 모델을 적용한 컴포넌트 개발 및 조립 도구를 구현하였다. 또한 제안한 방법에 따라 독립적인 인터페이스를 갖는 컴포넌트들을 개발하고, 조립하는 실험을 통해 액티브 바인딩 컴포넌트 모델과 자동화 도구가 그 목적을 효율적으로 달성하는 것을 확인하였다.
즉, 컴포넌트 재사용은 아직도 소프트웨어 위기를 타개할 유일한 해결책으로 그 실현이 절실히 필요하다. 본 논문은 기존의 컴포넌트 기술들이 왜 재사용을 효과적으로 지원하지 못하는가를 분석하고, 그 결함을 보정해줄 실용적인 방법을 고안하기 위하여 수행되었다. 본 논문에서는 상용 컴포넌트의 구입과 조립을 통한 소프트웨어 개발을 가능하게 하기 위하여 기존 컴포넌트 모델들과 다른 액티브 바인딩 기술(Active Binding Technology)이라는 명칭의 새로운 컴포넌트 모델을 제안한다.
본 논문은 다음과 같은 실험을 통하여 액티브 바인딩 컴포넌트 모델이 독립적으로 개발된 컴포넌트들의 조립을 실제로 가능케 하는 것을 확인하였다. 먼저 간단한 수강 신청 프로그램의 아키텍처를 그림 7과 같이 3계층으로 설계한 다음 각 계층의 컴포넌트들을 식별하고 각 컴포넌트가 지원해야 할 기능 리스트를 만들었다.
이때 인터페이스 세부 규격은 각 팀이 독자적으로 설계하되 다른팀과는 상의할 수 없게 하여 컴포넌트간의 인터페이스 불일치를 의도적으로 조장하였다. 본 논문은 이렇게 만들어진 액티브 바인딩 컴포넌트들을 조립하여 수강 신청프로그램을 만들고 그 동작을 확인하였다.
셋째, 기업용 애플리케이션 아키텍처에서 일반적으로 사용되는 다계층 분산시스템 설계에서 얻은 경험과 최신 상용 컴포넌트 기반 기술들이 이음새 없이 조화를 이루어야 한다. 본 논문은 이상의 조건들을 충족시키기 위한 컴포넌트 구조와 개발 프로시저, 조립 방법과 컴포넌트 프레임워크, 자동화 도구를 포함하는 새로운 컴포넌트 모델을 제시한다.
액티브 바인딩 조립에서 생성되는 글루 컴포넌트가 성능에 미치는 영향을 측정하기 위해 다음과 같은 실험을 수행하였다. 클라이언트 컴포넌트는 레코드 개수와 지연시간을 서버 컴포넌트에 매개변수로 전달한다.
가설 설정
서버 컴포넌트는 5개의 스트링 타입 필드와 3개의 정수 타입 필드, 2개의 데이타 타입 필드로 이루어지고 있는 526 바이트 데이타 전송 객체(DTO : Data Transfer Object) 를 클라이언트 컴포넌트로부터 매개변수로 받은 레코드 개수만큼 만들어 클라이언트 컴포넌트에 결과값으로 전달한다. 클라이언트 컴포넌트에서 전달한 지연시간은 서버 컴포넌트의 비즈니스 로직 처리시간을 가정한 것이다. 서버 컴포넌트는 클라이언트 컴포넌트에서 설정한 지연시간이 지난 후 레코드 셋을 클라이언트 컴포넌트에게 전달한다.
제안 방법
컴포넌트 조립시에는 상위컴포넌트의 서비스 요청 인터페이스와 하위 컴포넌트의 서비스 제공 인터페이스를 읽어들여 글루 코드를 자동으로 생성한다. 글루 코드에서 컴포넌트간 상호 일치하지 않는 인터페이스를 정합하도록 함으로써 독립적으로 개발되어 인터페이스가 다른 컴포넌트들을 소스 코드 수정 없이 유연하게 조립, 재사용할 수 있는 길을 열었다 본 논문은 다음과 같이 구성된다, 2장에서 소프트웨어컴포넌트 재사용 및 조립을 위한 기존 연구들을 살펴보고, 3장에서 본 논문에서 제안한 액티브 바인딩 컴포넌트 구조 및 조립 모델에 대해 설명한다. 4장에서는 액티브 바인딩 컴포넌트를 지원하는 액티브 바인딩 프레임워크에 대해 소개한다, 5장에서 본 논문에서 제안한 모델과 프레임워크를 구현한 조립 도구를 소개한 후, 6장에서 결론을 맺는다.
실제로 가능케 하는 것을 확인하였다. 먼저 간단한 수강 신청 프로그램의 아키텍처를 그림 7과 같이 3계층으로 설계한 다음 각 계층의 컴포넌트들을 식별하고 각 컴포넌트가 지원해야 할 기능 리스트를 만들었다. 이어서 실험에 참여한 학생들을 여러 팀으로 나누어 각각의 컴포넌트를 독립적으로 개발하게 하였다.
본 논문에서 제안한 액티브 바인딩 기술의 실용성을 검증하기 위해 액티브 바인딩 컴포넌트의 개발과 조립을 지원하는 아트컴포저(ArtComposer)를 개발하였다. 아트컴포저는 글루 컴포넌트 생성 마법사를 제공한다.
0을 이용하여 개발하였다. 본 실험은 다음 3가지 조립 방법에 대해 응답시간을 비교 측정하였다.
먼저 간단한 수강 신청 프로그램의 아키텍처를 그림 7과 같이 3계층으로 설계한 다음 각 계층의 컴포넌트들을 식별하고 각 컴포넌트가 지원해야 할 기능 리스트를 만들었다. 이어서 실험에 참여한 학생들을 여러 팀으로 나누어 각각의 컴포넌트를 독립적으로 개발하게 하였다. 이때 인터페이스 세부 규격은 각 팀이 독자적으로 설계하되 다른팀과는 상의할 수 없게 하여 컴포넌트간의 인터페이스 불일치를 의도적으로 조장하였다.
5MB로 만들어 실험한 결과 값이다. 표 1과 마찬가지로 비즈니스 로직의 처리 지연 시간을 1ms ~ 100ms까지 변화시키며, 각 조립 방법에 따라 응답시간을 측정하였다. 그 결과, 지연 시간이 1ms인 경우와 10ms인 경우 ABT-CBV 조립방법의 응답시간이 다른 조립방법에 비해 0.
또 성능 실험을 통해 글루 컴포넌트로 인한 성능 부담이 무시할 정도라는 것도 확인하였다. 한편 본 논문에서는 개발자들에게 학습 부담과 오류를 유발할 수 있는 완전히 새로운 컴포넌트 모델을 만드는 대신 기존의 최신 상용 컴포넌트 모델과 자동화 도구를 확장함으로써 완성도 높은 개발 효율성을 유지하면서 재사용성과 유지 보수 효율성을 높이는 방안을 제시하였다. 컴포넌트가 소스 코드 수정 없이 재사용될 수 있으려면 서비스 제공 인터페이스와 서비스 요청 인터페이스를 모두 갖추어야 한다는 것은 새로운 발상이 아니다.
성능/효과
할지라도 그 성능 부담은 무시할 수 있는 수준이라는 것을 보여준다. ABT-CBV 조립방법의 실험결과는 글루 컴포넌트에서 매개변수나 결과값의 복사 부담이 발생할 경우 성능에 미치는 영향을 보인다. 복사 부담의 정도를 높이기 위해 매 호출마다 레코드 3000개, 즉 약 1.
표 1과 마찬가지로 비즈니스 로직의 처리 지연 시간을 1ms ~ 100ms까지 변화시키며, 각 조립 방법에 따라 응답시간을 측정하였다. 그 결과, 지연 시간이 1ms인 경우와 10ms인 경우 ABT-CBV 조립방법의 응답시간이 다른 조립방법에 비해 0.156ms 느리게 나타났고, 지연시간이 100ms인 경우는 DC 조립방법과 ABT-CBV 조립방법이 0.156ms 느린 응답시간을 보였다.
즉 플랫폼이나 컴포넌트 프레임워크에 대한 종속성은 피할 수 없다고 하더라도 컴포넌트간의 종속성은 완전히 해소되어야 한다. 둘째, 컴포넌트 조립 비용이 컴포넌트 개발 비용에 비해 현저하게 저렴해야 한다. 이를 위해서는 비주얼 모델 방식의 조립 방법과 글루 컴포넌트 코드(glue component code)를 생성해주는 자동화 도구와 같이 컴포넌트들을 쉽고 신속하게 조립할 수 있는 환경이 필요하다.
또한 제안한 방법에 따라 독립적인 인터페이스를 갖는 컴포넌트들을 개발하고, 조립하는 실험을 통해 액티브 바인딩 컴포넌트 모델과 자동화 도구가 그 목적을 효율적으로 달성하는 것을 확인하였다. 또 성능 실험을 통해 글루 컴포넌트로 인한 성능 부담이 무시할 정도라는 것도 확인하였다. 한편 본 논문에서는 개발자들에게 학습 부담과 오류를 유발할 수 있는 완전히 새로운 컴포넌트 모델을 만드는 대신 기존의 최신 상용 컴포넌트 모델과 자동화 도구를 확장함으로써 완성도 높은 개발 효율성을 유지하면서 재사용성과 유지 보수 효율성을 높이는 방안을 제시하였다.
조립 도구를 구현하였다. 또한 제안한 방법에 따라 독립적인 인터페이스를 갖는 컴포넌트들을 개발하고, 조립하는 실험을 통해 액티브 바인딩 컴포넌트 모델과 자동화 도구가 그 목적을 효율적으로 달성하는 것을 확인하였다. 또 성능 실험을 통해 글루 컴포넌트로 인한 성능 부담이 무시할 정도라는 것도 확인하였다.
이를 위해서는 비주얼 모델 방식의 조립 방법과 글루 컴포넌트 코드(glue component code)를 생성해주는 자동화 도구와 같이 컴포넌트들을 쉽고 신속하게 조립할 수 있는 환경이 필요하다. 셋째, 기업용 애플리케이션 아키텍처에서 일반적으로 사용되는 다계층 분산시스템 설계에서 얻은 경험과 최신 상용 컴포넌트 기반 기술들이 이음새 없이 조화를 이루어야 한다. 본 논문은 이상의 조건들을 충족시키기 위한 컴포넌트 구조와 개발 프로시저, 조립 방법과 컴포넌트 프레임워크, 자동화 도구를 포함하는 새로운 컴포넌트 모델을 제시한다.
위의 실험 결과, 주어진 모든 조건에서 DC 조립 방법과 ABT-CBR 조립방법의 응답 시간이 같거나, 1 타임 틱(time tick) 범위 내에서 DC 조립방법이 빠르거나 ABT-CBR 조립방법이 빠르게 나타났다. 이 실험 결과는 닷넷 프레임워크 등의 현대 런타임 환경이 메소드 호출을 매우 효율적으로 처리하므로 글루 컴포넌트를 통한 조립에 의해 한번의 메소드 호출이 추가된다.
4KB로 설정하고, 비즈니스 로직의 처리 지연 시간을 1ms~L00ms까지 변화시켰을 때, 각 조립 방법에 따라 응답시간을 측정한 결과이다. 측정 결과를 살펴보면, 지연 시간이 1ms인 경우 ABT-CBR 조립 방법의 응답시간이 L875ms로 다른 조립방법에 비해 0.156ms 빠르게 나타났고, 지연시간이 10ms인 경우는 ABT-CBV 조립방법이 0.156ms 빠른 응답시간을 보였다. 그러나 지연시간이 100ms인 경우는 모든 조립방법이 동일한 응답시간 결과가 나왔다.
후속연구
수 있는 기반을 제공한다. 그러나 상용 컴포넌트를 구입하여 “조립에 의한 개발(development by assembly)" 방식으로 애플리케이션을 개발하는 CBD의 이상을 제대로 달성하기 위해서는 컴포넌트의 부품화 및 그 조립 방안과는 별도로 개발자가 필요로 하는 컴포넌트들의 신속한 검색과 자동 조립을 지원할 수 있도록 컴포넌트의 기능과 규격 정보를 정형화하여 표현하는 방법이 더 연구되어야 한다. 또 컴포넌트의 재사용율을 더욱 높이기 위해서는 애플리케이션마다 달라지는 비즈니스 데이타 객체에 대한 서비스 컴포넌트의 종속성을 제거하는 연구도 필요하다.
그러나 상용 컴포넌트를 구입하여 “조립에 의한 개발(development by assembly)" 방식으로 애플리케이션을 개발하는 CBD의 이상을 제대로 달성하기 위해서는 컴포넌트의 부품화 및 그 조립 방안과는 별도로 개발자가 필요로 하는 컴포넌트들의 신속한 검색과 자동 조립을 지원할 수 있도록 컴포넌트의 기능과 규격 정보를 정형화하여 표현하는 방법이 더 연구되어야 한다. 또 컴포넌트의 재사용율을 더욱 높이기 위해서는 애플리케이션마다 달라지는 비즈니스 데이타 객체에 대한 서비스 컴포넌트의 종속성을 제거하는 연구도 필요하다.
내세운 데는 이유가 있다. 이미 개발된 컴포넌트가 새로운 용도에 일부 부적합할 경우 소스 코드를 적절히 수정해주면 얼마든지 재사용할 수 있을 것이다. 그러나 독립적으로 개발된 컴포넌트의 소스 코드를 구할 가능성도 희박할 뿐더러, 타인이 작성한 소스 코드 분석과 수정에 소요되는 비용이 처음부터 새로 개발하는 것에 비해 크게 절감되는 것도 아니다.
참고문헌 (22)
B. W. Boehm, M. H. Penedo, E. D. Stuckle, R. D. Williams and A.B.Pyster, 'A Software Development Environment for Improving Productivity,' IEEE Computer, Vol.17, No.6, pp. 30-44, June, 1984
P. Clements, 'From Subroutines to Subsystems: Component-Based Software Development,' The American Programmer, Vol.8, No.11, November, 1995
Steve Latchem, 'Component Infrastructures: Placing Software Components in Context,' Chapter 15 of Component-Based Software Engineering: Putting the Pieces Together, Addison-Wesley, 2001
Antonio Vallecillo, Juan Hernandez and Jose M. Troya, 'New Issues in Object Interoperability,' In Object-Oriented Technology: ECOOP 2000 Workshop Reader, No. 1964 in LNCS, pp. 256-269, Springer Verlag, 2000
Richard Monson-Haefel. 'Enterprise JavaBeans,' O'Reilly, Second edition, 2000
'An Introduction to Microsoft .NET. White Paper,' Microsoft Corporation, 2001
Object Management Group, 'CORBA Component Model Specification,' April 2006
J. Bosch, 'Design and Use of Software Architectures: Adopting and Evolving a Product-Line Approach,' Addison-Wesley, Boston, 2000
Thomas Erl, 'Service-Oriented Architecture(SOA): Concept, Technology, and Design,' Prentice Hall, 2005
Andrea Bracciali, Antonio Brogi and Franco Turini, 'Coordinating Interaction Patterns,' In Proceedings of ACM Symposium on Applied Computing, Las Vegas, United States, 2001
Andrea Bracciali, Antonio Brogi and Carlos Canal, 'Systematic component adaption,' In Proceedings of Workshop on Formal Methods and Component Interaction (FMCI 2002), Malaga, Spain, pp. 340-351, 2002
Ines Mouakher, Arnaud Lanoix and Jeanine Souquieres, 'Component Adaptation: Specification and Verification,' In 11th International Workshop on Component Oriented Programming, Nantes, France, 2006
R. H. Reussner, 'Adapting Components and Predicting Architectural Properties with Parameterised Contracts,' In Tagungsband des Arbeitstreffens der GI Fachgruppen 2.1.4 und 2.1.9, Bad Honnef, W. Goerigk, Ed., 2001, pp. 33-43
M. Fowler, 'Inversion of Control Containers and the Dependency Injection pattern,' http://martinfowler.com/articles/injection.html
Robin Milner, 'The polyadic ${\pi}-calculus:$ a tutorial,' Technical report, University of Edinburgh, 1991
Jean R. Abrial, 'The B Book : Assigning Programs to Meanings,' Cambridge University Press, 1996
K. Whitehead, 'Component-based Development: Principles and Planning for Business Systems,' Addison-Wesley, 2002
Ira R. Forman and Nate Forman, 'Java Reflection in Action,' Manning, 2005
Hari Shankar, 'Reflection in .NET,' http://www.csharpcorner.com, February 26, 2001
Bruce A. Tate and Justin Gehtland, 'Spring: A Developer's Notebook,' O'REILLY, 2005
※ AI-Helper는 부적절한 답변을 할 수 있습니다.