김수동(金修東) 교수 약력
-84년 Missouri State University, 전산학과 학사
-88년 University of Iowa, 전산학 석사
-91년 University of Iowa, 전산학 박사
-현재 숭실대학교 컴퓨터학부 교수
-한국 소프트웨어 컴포넌트 컨소시엄, 운영위원
◇진정한 컴포넌트란?
컴포넌트 기반 소프트웨어 개발(CBD) 기술에 대한 관심과 시장의 규모가 커지면서 소프트웨어 패키지, # 라이브러리, GUI객체 등이 컴포넌트란 이름으로 소개되고 있서 사용자에게 혼란을 주고 있다. 진정한 컴포넌트란 어떤 것인가에 대한 지난 수년간의 국제적인 연구와 토론을 바탕으로 살펴본다.
컴포넌트는 객체보다 큰 재사용 단위다. 객체가 한 물체, 개념을 표현한다면 컴포넌트는 관련된 여러개의 객체들을 포함해 사용자 입장에서 보는 큰 기능성을 제공하는 부품이다. 뱅킹의 예를 보면 하나의 수신업무 컴포넌트가 여러 종류의 구좌(Account) 객체와 트랜잭션 객체 및 수신관련 일계 객체들로 이뤄져 있다. 즉 하드웨어로 비교하면 객체는 한 개의 칩이며 컴포넌트는 여러 칩(Chip)들을 조립해 만든 보드(Board)와 같은 것이다.
소프트웨어 개발자는 이러한 컴포넌트 단위의 재사용을 통해 개발 생산성을 크게 향상시킬 수 있으며 효과적으로 애플리케이션을 설계하고 구현할 수 있다.
컴포넌트는 개별적인 객체의 인터페이스가 아니라 컴포넌트 자체의 상위 인터페이스를 제공한다. 자바 언어의 패키지(Package)도 여러 클래스를 묶는 장치이지만 패키지 수준의 상위 인터페이스는 갖고 있지 않다. 이는 마치 컴퓨터 하드웨어 보드가 메인 보드에 장착될 때의 접속 부분이 된다. 메인 보드는 개별적인 칩을 통하는 것이 아니라 보드의 인터페이스를 통해 필요한 작업을 실행하는 원리와 동일하다. 컴포넌트는 그 자체의 인터페이스를 통해 작업이 요청되면 컴포넌트 내부의 여러 객체들에게 일련의 메시지 전송을 통해 객체단위의 작업을 수행하고 그 결과를 컴포넌트의 외부 호출자에게 전달하는 것으로 블랙박스와 같다. 따라서 컴포넌트를 재사용하는 입장에서는 컴포넌트 인터페이스만 이해하고 필요한 작업을 실행할 수 있어 애플리케이션 개발 과정이 매우 간단해진다.
컴포넌트는 특정 도메인에 종속적이다. 대부분의 Java, # 라이브러리를 보면 어떤 애플리케이션에서도 사용이 가능한 범용 기능만을 제공한다. 따라서 특정 애플리케이션에서 요구되는 대부분의 기능은 개발자가 모두 구현해야 한다. 컴포넌트는 도메인의 여러 애플리케이션이 공통으로 사용하는 기능을 모델링하고 구현한 준 완성(Semi Completed) 소프트웨어이므로 그 도메인에 속하는 애플리케이션에서만 효과적으로 사용될 수 있어 도메인 종속적이다. 결과적으로 도메인 종속적인 컴포넌트는 한 애플리케이션 안에 포함돼 차지하는 비율이 높아지므로 재사용률이 높아진다.
컴포넌트는 도메인의 표준화된 비즈니스 로직 및 업무 모델을 구현한 재사용 부품이다. 한 도메인내의 여러 애플리케이션에서 재사용되기 위해서 컴포넌트는 공통적인 비즈니스 로직, 데이터, 워크플로를 갖고 있어야 한다. 따라서 표준화가 잘 된 도메인에서 CBD가 잘 적용될 수 있으며 컴포넌트의 사용이 활발해질수록 그 도메인의 표준화가 유도되는 것이다. 도메인의 표준을 컴포넌트 설계에 반영하는 과정이 위에서 설명한 공통성 및 가변성 분석이며 이 과정을 통해 표준 모델을 추출해낼 수 있다.
컴포넌트는 효과적인 특화 장치와 특화 부분을 제공한다. 컴포넌트의 어떤 기능이 여러 애플리케이션들간의 공통 기능이라 하더라도 그 기능을 실행하는 알고리듬, 로직, 사용되는 데이터 및 워크플로는 다소 차이가 날 수 있다. 예를 들면 뱅킹에서 이자를 계산하는 기능은 공통 기능인데, 이자 계산에 사용되는 공식과 로직은 은행간에 차이가 있다. 컴포넌트는 특화해 사용해야 하는 부분을 정의해야 하며 최적의 특화 기법을 명시하고 있어야 한다.
대표적인 특화 방법으로는 상속을 통한 함수 재정의, 다형성, 추상클래스 객체를 서브클래스 객체로 대치하는 플러그 인 오브젝트(Plug-in Object), 선택문, #의 탬플릿과 같은 매체변수화된 클래스, 콘트랙트(Contract) 등이 있다.
컴포넌트는 소스 코드의 형태보다는 이진(Binary) 코드나 바이트 코드 형태를 더 선호한다. 소스 코드 형태의 재사용 부품은 개발자들이 직접 수정해 사용하거나 재사용 부품의 내부 장치를 이해해 내부 장치에 종속적인 애플리케이션를 개발하기가 쉬우며 애플리케이션을 수정해야 될 경우 포함된 재사용 부품도 모두 검사하거나 수정해야 한다. 이는 재사용 부품의 소스 코드가 개발자에게 노출됐기 때문이다. 컴포넌트를 이진 코드처럼 실행코드 형태로 제공할 경우 개발자는 컴포넌트의 외부 인터페이스에만 의존해 애플리케이션을 개발하게 되므로 개발이 더 쉬워지고 유지보수시에도 추가된 애플리케이션 코드만 수정 대상이 된다.
이상과 같은 컴포넌트의 특징은 기존의 라이브러리나 소프트웨어 패키지와 비교해 상당한 차이가 있음을 알 수 있다.
진정한 컴포넌트 기능과 특징을 갖춘 소프트웨어 재사용 부품을 생산, 재사용함으로 해서 라이브러리나 소프트웨어 패키지가 제공하지 못하는 높은 재사용성, 개발생산성, 효율성, 유지보수성, 확장성을 기대할 수 있다.
◇CBD의 핵심 요소 기술
CBD 핵심기술은 컴포넌트 사업의 성공 여부에 매우 중요한 요소다. CBD관련 핵심 요소 기술은 크게 컴포넌트 개발방법론, 컴포넌트 구현 기술, 도메인 표준화 기술, 컴포넌트 시험 및 품질인증 기법, 컴포넌트 분류체계 및 유통 기술, 컴포넌트 특화 및 활용기법으로 요약된다.
컴포넌트 개발 방법론은 그림에서처럼 여러 요구사항으로부터 공통된 기능을 모델링해 컴포넌트화하는 컴포넌트 개발 과정과 개발된 컴포넌트를 조립해 목표 애플리케이션을 개발하는 과정을 모두 포함하고 있어야 한다.
컴포넌트 개발 기술은 객체기술에 기반을 두고 있는데, 개발자들의 컴포넌트 방법론의 실무적 차원에서의 적용 능력이 매우 중요한 성공 요소다.
<그림>
공통 기능과 특성을 컴포넌트화하기 위해서는 각 도메인의 업무 처리 과정과 로직의 표준화가 선행돼야 한다. 컴포넌트 시험 및 품질 인증 지침은 컴포넌트의 품질을 평가해 사용자들에게 검증된 고품질의 컴포넌트를 제공하기 위한 기술이며 이런 컴포넌트가 효과적으로 검색되고 활용되기 위해서 컴포넌트 표준 분류체계 및 형상관리 기법이 필요하다.
◇컴포넌트를 개발하기 위한 표준 플랫폼
C&V분석과 상세 설계를 통해 정의된 컴포넌트는 컴포넌트 개발 플랫폼에 의해 구현되는데, 현재 산업계에서 널리 사용되는 표준으로 선사의 엔터프라이즈 자바빈스(EJB:Enterprise JavaBeans)와 마이크로소프트의 COM·DCOM을 들 수 있다. EJB는 서버 쪽에서의 비즈니스 로직을 구현한 컴포넌트 개발에 적합하며 최근들어 PDA, HPC 등 이동 컴퓨터 및 단말기에 사용되는 Thin Client 아키텍처를 지원하는데 효과적인 플랫폼으로서 미국 등지에서는 서버 컴포넌트 개발의 최적 플랫폼으로 활용되고 있다. 이 외에도 OMG그룹에서 개발한 코바 컴포넌트 모델이 발표됐지만, 이 모델로 상용 컴포넌트를 구현한 사례는 드물다.
국내의 컴포넌트 기술 현황을 간략히 살펴보면 정보통신부와 한국전자통신연구원의 컴퓨터 소프트웨어 연구소가 연구 환경의 조성 및 견인차 역할을 하고 있으며 여러 대학들과 중소·대기업들도 역할을 분담해 국가 컴포넌트 기술 개발에 박차를 가하고 있어 우리의 기술이 미국과 비교해도 큰 차이는 나지 않는 상태다. 예를 들면 광주은행에서는 클라이언트 서버 아키텍처에서 더 나아가, EJB 컴포넌트와 웹기반의 차세대 뱅킹시스템 개발을 이미 지난해부터 개발해 오고 있으며 아이티플러스는 웹로직을 이용한 다양한 정보시스템 구축, 사이버피아의 컴포넌트 기반 전자상거래 시스템 개발 등 국내에도 상당수의 성공 사례를 찾아볼 수 있다. 또한 여러 국가 기관의 대형 정보 시스템 구축에도 컴포넌트 방식을 택하고 있어 이 기술의 급속한 보급과 더불어 국제수준의 컴포넌트 기술 축척이 예상된다.
그러나 산업계의 일선 개발자나 관리자들의 경우 컴포넌트의 실체와 개발 기술에 대한 심층적인 이해와 실무적 경험이 전체적으로 부족한 실정이다. 이를 위해 정기적인 컴포넌트 기술 교육 및 세미나를 통해 일반 개발자들에게 소프트웨어 재사용 및 컴포넌트의 이해도를 높여 나가야 한다. 소프트웨어 산업의 경쟁력 확보와 국제 수준에서의 개발생산성 향상을 위해 CBD 기술이 범국가적 차원에서 지속적으로 추진돼야 하며 국제 수준의 CBD 기술 확보를 위해 활발한 산·학·연 협동 연구와 산업계의 컴포넌트 생산 노력이 있어야 한다. CBD 기술을 통해 국내의 소프트웨어 위기 문제가 근원적으로 해결되기를 기대한다.
많이 본 뉴스
-
1
스타링크 이어 원웹, 韓 온다…위성통신 시대 눈앞
-
2
美 마이크론 HBM3E 16단 양산 준비…차세대 HBM '韓 위협'
-
3
LG 임직원만 쓰는 '챗엑사원' 써보니…결과 보여준 배경·이유까지 '술술'
-
4
단독CS, 서울지점 결국 '해산'...한국서 발 뺀다
-
5
애플페이, 국내 교통카드 연동 '좌초'…수수료 협상이 관건
-
6
NHN클라우드, 클라우드 자격증 내놨다···시장 주도권 경쟁 가열
-
7
초경량 카나나 나노, 중형급 뺨치는 성능
-
8
美매체 “빅테크 기업, 엔비디아 블랙웰 결함에 주문 연기”
-
9
카카오헬스, 매출 120억·15만 다운로드 돌파…日 진출로 '퀀텀 점프'
-
10
BYD, 전기차 4종 판매 확정…아토3 3190만원·씰 4290만원·돌핀 2600만원·시라이언7 4490만원
브랜드 뉴스룸
×