본문 바로가기
소프트웨어 공학

컴포넌트 기반 개발(Component Based Development, CBD)에 대한 이해와 동향

by iwuooh 2022. 1. 6.

컴포넌트(Componenet)란 무엇인가?

인터넷 환경이 보편화되고 빠르게 변화하는 비즈니스 환경에 발 빠르게 대응하는 시스템을 개발하기 위해서는 소프트웨어를 컴포넌트화하여 재사용성을 높이는 것이 필수적이다. 컴포넌트는 코드의 재사용과 반복을 줄이기 위해 등장했기에, 재사용성이 컴포넌트를 정의함에 있어서 가장 중요하다고 할 수 있다. 즉 컴포넌트란 재사용이 가능하도록 이미 소스코드가 아닌 실행코드를 기반으로 모든 구현이 완벽하게 이루어져 있어야 하고 용도나 유형, 기술표준 등에 관한 인터페이스의 명세가 잘 정의되어 있어야 한다. 그리고 컴포넌트를 대체할 또 다른 컴포넌트를 개발할 때는 표준을 준수하여 개발해야 하며 개발이 완료된 후 배포될 때는 관련 문서나 코드들이 한데 모여 독립적인 단위로 패키지화되어 있어야 한다. 또한, 컴포넌트는 독립적인 업무의 단위로 개발된 것이므로 사용자가 필요한 기능만을 취합하여 사용하여 재사용할 수 있게끔 독립적으로 배포하는 것도 가능해야 한다. 재사용성이라는 관점에서 봤을 때 컴포넌트는 객체나 클래스와 공통점을 가지지만 이는 서로 다르므로 컴포넌트를 만들 때 반드시 객체나 클래스로 개발해야 하는 것은 아니다. 기존에 개발된 모듈을 컴포넌트화 해도 되고 현재 컴포넌트 기술 표준들과 핵심적인 개념들이 객체지향에서 비롯된 것이 많기 때문에 이 기술을 바탕으로 개발하는 것이 전자보다 효과적일 수 있다. 하나의 컴포넌트를 개발할 때는 최소 하나의 클래스를 바탕으로 개발하 수 있고 이렇게 개발된 컴포넌트가 실행될 때는 컴포넌트 객체 즉, 컴포넌트의 인스턴스(Instance)가 수행된다. 컴포넌트 내부의 정보는 외부로부터 완벽하게 숨겨진다. 외부에서 컴포넌트 내부를 들여다보려면 인터페이스가 필수적이다. 따라서 인터페이스는 외부와의 소통을 위해 반드시 필요하고 이처럼 컴포넌트가 내부의 정보는 숨긴 채 인터페이스만을 외부에 제공하므로 소프트웨어도 마치 하드웨어처럼 조립이 가능해지는 것이다.

컴포넌트 기반 개발(Component Based Development, CBD)이란 무엇인가

컴포넌트 기반 개발은 소프트웨어를 개발하는 다양한 방법론 중의 하나로, 개발하고자 하는 소프트웨어를 이루는 프로그램을 각각 독립적인 컴포넌트로 떼어낸 후 이를 조립하여 전체의 프로그램을 만들어내는 방식을 말한다. 이를 구현하기 위해서는 객체 컴포넌트 기술과 관련된 프레임워크를 기반으로 프로그램을 개발해야 한다. 재사용성이 뛰어난 컴포넌트를 기반으로 하므로 애플리케이션의 개발 생산성을 높이고 품질도 향상할 수 있다. 그리고 시스템의 유지보수 비용을 최소화할 수 있게 된다. 또한 다른 소프트웨어 프로그램과의 이식성 및 호환성이 뛰어나므로 소프트웨어 개발 생산성이 높다는 장점이 있다. 컴포넌트 기반 개발이 성공하기 위해서는 해당 프로세스를 구성하는 요소에 대한 역할과 활동이 명확하게 정의되어야 하고 컴포넌트의 재사용을 위한 자동화 도구가 필요하다. 그리고 조직적인 차원에서 체계적인 접근법이 요구되며 충분히 활용 가능한 다양한 컴포넌트를 확보하고 저장해야 한다. 

컴포넌트 기반 개발(Component Based Development, CBD)의 능력 및 미래

정보화 사회가 고도화됨에따라 소프트웨어를 개발하는 생명 주기도 점점 단축되고 비용적, 시간적 측면에서 봤을 때 소프트웨어를 개발하는 기간이 단축되어야 하는 것이 절실하다. 그리고 급속히 보급된 인터넷은 다양한 플랫폼 환경에서 다양한 소프트웨어를 지원할 수 있게 되어 서로 이질적인 소프트웨어 컴포넌트들을 조직적으로 분류하고 조립하는 기술도 필요하게 되었다. 컴포넌트 기반 개발은 향후 소프트웨어 아키텍처, 비즈니스 아키텍처 등 영역별로 세분화하고 전문화될 것이다. 미들웨어와 UML(Unified Modeling Language) 및 컴포넌트 기반의 소프트웨어 구현 툴이 발전함에 따라 컴포넌트 기반 개발도 더불어 확산되고 촉진될 것이다. 컴포넌트 기반 개발은 개발의 신속성, 용이성, 플랫폼 독립성과 같은 강력한 장점을 토대로 소프트웨어의 위기를 극복하는 하나의 방법이 될 것이다.

댓글