참고자료


컴포넌트


컴포넌트에 대한 정의는 다양함.

그 이유는 컴포넌트가 재사용 단위라는 의미로 많이 사용되기 때문이다.

재사용이라는 측면을 넓은 의미로 보면 소프트웨어 개발에 있어서 재사용되는 모든 단위들을 컴포넌트라고 보는 것.

  • 재사용되는 문서

  • 재사용 모델

  • 재사용 테이블

  • 재사용 코드

  • 재사용 라이브러리 등


컴포넌트의 특징


1. 컴포넌트는 독립적인 소프트웨어 모듈.

  • 컴포넌트는 소프트웨어 시스템에서 독립적인 업무 또는 독립적인 기능을 수행하는 모듈

    • 시스템을 유지보수하는데 있어서 교체가 가능한 부품
  • 소프트웨어 컴포넌트는 하드웨어의 그래픽카드와 같은 개념으로 독립적인 기능을 수행하는 소프트웨어 모듈이라고 설명 가능

  • 소프트웨어 컴포넌트는 컴포넌트란 말로 대체되어 사용

2. 컴포넌트는 구현, 명세화, 패키지화 그리고 배포될 수 있어야 한다.

컴포넌트의 정의나 형태는 관점에 따라 다양하게 존재하지만 재사용 부품으로서의 컴포넌트가 되기 위해서는 아래의 내용들을 만족해야만 한다

  • 소스코드(Source Code)가 아닌 실행코드(Executable Code) 기반으로 재사용할 수 있도록 이미 구현(Implementation)이 완료되어 있어야 한다.

  • 교체 가능한 컴포넌트를 개발하기 위해서는 표준(Standard)을 준수하여 개발해야 한다.

  • 컴포넌트가 개발되어 배포될 때 관련 문서와 코드들이 독립적인 단위로 패키지화(Packging)되어 있어야 한다.

  • 컴포넌트는 독립적인 업무 단위로 개발된 것이므로 사용자가 필요한 기능만을 패키지한 컴포넌트를 재사용 할 수 있도록 독립적으로 배포(Deployment) 가능해야 한다.

3. 하나의 컴포넌트는 하나 이상의 클래스들로 구성될 수 있다.

  • 컴포넌트와 클래스는 다른 개념이며 컴포넌트와 객체 또한 다른 개념

    • 그러므로 컴포넌트가 되기 위해서 반드시 클래스나 객체로 만들어야 하는 것은 아니다.
  • 기존의 C나 Cobol로 개발된 모듈 또한 컴포넌트로 만들 수 있으나 현재의 컴포넌트 기술 표준과 핵심 개념들이 객체지향에서 비롯된 개념들이 많아 컴포넌트를 개발하는데 있어 객체지향 기술을 바탕으로 하는 것이 보다 효과적일 수 있다.

  • 하나의 컴포넌트를 개발하기 위해서는 하나 이상의 클래스들을 바탕으로 개발할 수 있다

    • 이렇게 개발된 컴포넌트가 실행 될 때 해당 컴포넌트의 인스턴스인 컴포넌트 객체가 수행된다.

    • 이때 컴포넌트 내부에는 하나 이상의 클래스에 대응하는, 하나 이상의 객체들이 수행되고 있는것이라고 생각할 수 있다.

4. 컴포넌트는 인터페이스를 통해서만 접근할 수 있다.

  • 컴포넌트 내의 정보는 외부로부터 모두 숨겨진다

    • 때문에 외부에서 접근할 수 있도록 컴포넌트가 제공하는 서비스를 정의한 인터페이스만을 제공

    • 컴포넌트를 사용하기 위해서는 어떤 인터페이스를 사용해야 하는지 만을 알 수 있다.

    • 따라서 인터페이스는 외부와의 연결을 위해 반드시 존재해야만 한다

  • 이처럼 컴포넌트가 내부 정보를 숨기고 인터페이스만 제공함으로써 소프트웨어도 하드웨어처럼 조립 기반으로 갈 수 있게 되는 것이다.