검수요청.png검수요청.png

컴포넌트

위키원
이동: 둘러보기, 검색

컴포넌트(component)란 여러 개의 프로그램 함수들을 모아 하나의 특정한 기능을 수행할 수 있도록 구성한 작은 기능적 단위를 말한다. 컴포넌트를 이용하면 소프트웨어 개발을 마치 레고(Lego) 블록을 쌓듯이 조립식으로 쉽게 할 수 있다. 모듈(module)이라고도 한다. 상용 컴포넌트에는 DextUpload, r-Mate Chart 등이 있다. 컴포넌트 기반의 개발방법론을 CBD 방법론이라고 한다.

개요

컴포넌트는 프로그램의 한 부분을 의미하며 재사용이 가능한 최소 단위를 말한다. 객체지향언어를 사용할 때 자주 사용되며 재사용이 가능하기 때문에 컴포넌트 단위로 분류하거나 이동 가능하다는 특징이 있다.[1]

유래

소프트웨어는 독립적으로 개발되지 않은 경우가 많고, 독립적으로 개발되어도 다른 모듈과의 호환을 생각하지 않고 개발한다. 이는 소프트웨어의 재사용을 어렵게 하고 유지보수 비용이 크게 증가하는 원인이 된다. 이러한 상황에서 소프트웨어의 재사용의 중요성과 필요성을 위해 나온 기술이 컴포넌트 기술이다.[2]

특징

컴포넌트는 소프트웨어 시스템에서 독립적인 업무 또는 독립적인 기능을 수행하는 모듈로 시스템을 유지보수하는데 있어서 교체가 가능하다. 소프트웨어 컴포넌트는 하드웨어그래픽카드와 같은 개념으로 독립적인 기능을 수행하는 소프트웨어 모듈이라고 할 수 있다.

구현, 명세화, 패키지화, 배포 필요

컴포넌트는 구현, 명세화, 패키지화, 그리고 배포 될 수 있어야 한다. 컴포넌트의 정의나 형태는 관점에 따라 다양하게 존재하지만, 재사용 부품으로서의 컴포넌트가 되기 위해서는 소스코드가 아닌 실행코드 기반으로 재사용할 수 있도록 이미 구현이 완료되어 있어야만 한다.[3] 교체 가능한 컴포넌트를 개발하기 위해서는 표준을 준수하여 개발해야 한다. 컴포넌트가 개발되어 배포될 때 관련 문서와 코드들이 독립적인 단위로 패키지화되어 있어야 한다. 독립적인 업무 단위로 개발된 것이므로 사용자가 필요한 기능만을 패키지한 컴포넌트를 재사용 할 수 있도록 독립적으로 배포 가능해야 한다.[4] 컴포넌트는 해당 컴포넌트의 용도, 유형, 기술 표준과 인터페이스등에 대한 정보들에 대해서 명세화되어 있어야만 하고 교체 가능한 컴포넌트를 개발하기 위해서는 표준을 준수하여 개발해야 한다. 컴포넌트가 개발되어 배포될 때 관련 문서와 코드들이 독립적인 단위로 패키지화되어 있어야만 한다. 컴포넌트는 독립적인 업무단위로 개발된 것이므로 사용자가 필요한 기능만을 패키지한 컴포넌트를 재사용 할 수 있도록 독립적으로 배포 가능해야만 한다.[3]

하나 이상의 클래스들로 구성 가능

컴포넌트는 하나 이상의 클래스로 구성될 수 있다. 컴포넌트와 클래스는 다른 개념이며 컴포넌트와 객체 또한 다른 개념이므로 컴포넌트가 되기 위해서는 반드시 클래스나 객체로 만들어야만 하는 것은 아니다. 하나 이상의 컴포넌트를 개발하기 위해서는 하나 이상의 클래스들을 바탕으로 개발할 수 있으며, 컴포넌트가 실행될 때 해당 컴포넌트의 인스턴스인 컴포넌트 객체가 수행된다.

인터페이스를 통해서만 접근 가능

컴포넌트는 인터페이스를 통해서만 접근이 가능하다. 컴포넌트는 은닉성을 가지고 있어 외부에서 접근할 수 있도록 컴포넌트가 제공하는 서비스를 정의한 인터페이스만을 제공하고 컴포넌트를 사용하기 위해서는 어떤 인터페이스를 사용해야 하는지만을 알 수 있다. 따라서 인터페이스는 외부와의 연결을 위해 반드시 존재해야만 한다.[3] 이와 같이 컴포넌트가 내부 정보를 숨기고 인터페이스만 제공함으로써 소프트웨어도 하드웨어처럼 조립 기반으로 갈 수 있게 된 것이다.[4]

장점

미리 구현되어 있는 컴포넌트를 조립함으로써 소프트웨어 시스템 구축을 가능하게 한다. 컴포넌트를 재사용 함으로써 보다 유연하게 소프트웨어 시스템을 구축할 수 있다는 장점을 가지고 있다. 이는 요구자의 요구가 계속적으로 변화될 수 있기 때문에 변화에 유연하게 대처하기 쉽도록하는 것이다.[5]

컴포넌트 기반 개발방법론

컴포넌트 기반 개발방법론 또는 CBD 개발방법론(CBD; Component Based Development)은 여러 시스템이나 소프트웨어에서 재사용할 수 있도록 여러 컴포넌트들을 만들고 재조립하는 소프트웨어 개발방법론이다. 소프트웨어 전체를 처음부터, 통째로 개발하던 기존 방식과는 달리 각 기능별로 분리하여 개발하고 이를 재사용함으로써 소프트웨어 개발에 드는 반복적인 작업과 시간을 줄일 수 있다.[6]

컴포넌트 모델

애플리케이션의 사용 중, 하나의 컴포넌트는 다른 컴포넌트에게 신호를 보내어 상대방의 속성과 통신 방법을 알아 낼 수 있다. 이러한 방법으로 다른 회사끼리 상대 회사의 어떤 컴포넌트와 함께 운영될 것인지를 사전에 파악하지 않고서도, 상호 동작하는 컴포넌트를 만들 수 있다. 컴포넌트 속성은 하나의 컴포넌트가 자신의 특성을 다른 컴포넌트가 볼 수 있도록 공시할 수 있게 해야하며 이벤트 처리는 컴포넌트가 이벤트에 대해 반을해야 하는 하나 이상의 다른 컴포넌트를 식별할 수 있게 해야한다. 그리고 컴포넌트의 상태가 다음 사용자 세션에서도 유지되도록 한다. 컴포넌트의 중심 개념은 단지 분산 네트웍에 배포가 쉽고 유연할 뿐만 아니라, 개발자가 쉽게 새 컴포넌트를 제작하고 기존 컴포넌트의 속성을 볼 수 있는 것이다.[7]

각주

  1. WEBISFREE, 〈웹에서 말하는 컴포넌트란 무엇인가?〉, 《WEBISFREE》, 2017-09-21
  2. 개발자로 홀로 서기, 〈컴포넌트(Component)란?〉, 《개인 블로그》, 2016-10-20
  3. 3.0 3.1 3.2 FIF, 〈컴포넌트 전의-컴포넌트란 무엇인가?〉, 《FIF's 코딩 팩토리》, 2019-05-24
  4. 4.0 4.1 VincentGeranium Blog, 〈Component(컴포넌트란?)〉, 《VincentGeranium Blog》, 2019-08-26
  5. 29기 김영준, 〈컴포넌트와 CBD 개요〉, 《개인 블로그》, 2015-03-18
  6. 박스여우, 〈Component의 정의와 CBD 방법론〉, 《개인 블로그》, 2019-06-10
  7. 심재범, 〈Component; 컴포넌트〉, 《terms.co.kr》

참고자료

같이 보기


  검수요청.png검수요청.png 이 컴포넌트 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.