상세 컨텐츠

본문 제목

CBD 방법론 - 특징, 적용, 의견

카테고리 없음

by 화천사장 2023. 12. 28. 19:36

본문

반응형

CBD ( Component-Based Development ) 방법론은 이름 그대로 컴포넌트들을 개발하고 조림하여 소프트웨어를 완성하는 방법론입니다. 

각 컴포넌트는 독립적이고 재사용 가능하도록 설계하고 개발됩니다. 

 

개인적으로 아주 매력적인 방법론이라고 생각되는 방법론 중 하나입니다. 

제 첫 직장에서 이 방법론을 기반으로 여러 어플리케이션 및 시스템을 개발하였기 때문에 저에게는 매우 소중한 추억의 방법론이 되겠습니다. 

 

[목차]

특징

  • 컴포넌트 중심 설계 
    • 소프트웨어를 여러 개의 독립적인고 재사용 가능한 컴포넌트로 분해해서 설계합니다. 
    • 컴포넌트들은 기능이나 역할에 따라 구분되고 독립적으로 개발 및 테스트할 수 있습니다.
  • 컴포넌트 재사용 
    • 컴포넌트의 재사용을 강조합니다. 
    • 기 개발된 컴포넌트들을 재활용하여 비슷한 기능이 필요한 소프트웨어 개발 시에 활용할 수 있습니다. 
    • 따라서, 개발 시간을 단축하고 품질을 향상시키는 데 도움이 됩니다. 
  • 인터페이스와 표준화 
    • 각 컴포넌트의 인터페이스를 명확히 정의하고, 이를 통해 컴포넌트 간의 상호 작용을 지원합니다. 
    • 컴포넌트들의 표준화된 구조와 프로토콜을 준수하여 상호 운영성을 보장합니다.
  • 테스트와 유지보수
    • 각 컴포넌트는 독립적으로 테스트될 수 있습니다. 
    • 독립성이 유지되므로, 개별 컴포넌트를 수정해도 전체 시스템에 영향을 최소화할 수 있습니다.

적용 방법

  1. 컴포넌트 기반 설계 
    • 시스템을 기능적 또는 물리적으로 독립된 작은 모듈(컴포넌트)로 나누고, 이들을 정의하고 문서화해야 합니다.
  2. 컴포넌트 선택과 설계 
    • 재사용 가능하고 독립적인 컴포넌트를 설계해야 합니다. 
    • 컴포넌트 간의 인터페이스를 명확히 정의하고 표준을 준수해야 합니다. 
  3. 컴포넌트 테스트 
    • 컴포넌트는 독립적으로 테스트되어야 합니다. 
    • 컴포넌트 단위의 테스트는 그 품질을 보장하고 전체 시스템의 안정성으로 높일 수 있습니다. 
  4. 컴포넌트 재사용
    • 기 존재하는 컴포넌트를 재사용하여 개발 시간을 단축하고 품질을 향상시킬 수 있습니다. 
    • 이를 위해 컴포넌트의 분류와 관리가 필요합니다. 
  5. 인터페이스 표준화 
    • 컴포넌트 간의 상호 작용을 위한 인터페이스와 통신 프로토콜을 표준화하고 문서화해야 합니다. 
    • 재사용성과 호환성을 보장해야 합니다. 
  6. 유지보수 및 관리 
    • 개발된 컴포넌트들은 지속적인 유지보수가 필요합니다. 
    • 따라서, 각 컴포넌트의 버전 관리와 업데이트가 매우 중요합니다.

의견

다른 방법론들과 비교하면 CBD는 매우 구체적이고, 실제적인 사례도 주변에서 많이 찾을 수 있을 만큼 오랫동안 사랑받은 방법론이라고 볼 수 있습니다. 

이제는 생소해진 OCX(OLE Control Extension) , ActiveX , ATL (Active Template Library) 것들이 있습니다. 

지금은 EJB ( Enterprise JavaBeans)나, .NET Framework 등이 익숙하겠습니다. 

 

이 방법론으로 개발하던 당시에 가장 어려웠던 부분은 인터페이스 표준, 문서화, 그리고 버전 관리였습니다.
특히 버전 관리는 매우 어려웠는데, 그 이유는 아래와 같습니다.
1. 하나의 기능을 수행하는 컴포넌트는 여러 프로그램에서 재사용되어야 하며, 유지보수도 동일하게 이루어져야 합니다.
2. 다양한 프로그램에서 컴포넌트를 재사용하면서 각각의 요구사항에 따라 인터페이스가 추가되거나 변경되는 경우가 생깁니다.
3. 컴포넌트는 독립적이어서 수정과 검증은 비교적 쉬우나, 모든 프로그램에 적용하는 것은 비용이 많이 들 수 있습니다.
4. 이러한 이유로 버전이 분할되는 경우가 생기기 시작합니다.
5. 이러한 과정에서 복잡성이 증가하게 되었습니다.
결과적으로 이러한 상황들로 인해 버전 관리가 복잡해지고, 어느 순간에는 굉장히 복잡한 상황이 벌어지게 되었습니다.

언제나 원칙을 지키는 것은 어렵습니다.

특히, 유지보수를 고려하지 않은 계획은 당장은 문제가 되지 않지만, 언젠가 아주 큰 시련의 토대가 될 수 있음을 교훈으로 얻었습니다. 

 

CBD에 심취해있던 저는 어느 날 선배에게 이런 질문을 했던 적이 있습니다. 

"선배님, 컴포넌트를 조합해서 다른 컴포넌트를 만들던가, 프로그램을 만들 수 있는데요. 
  적절한 컴포넌트가 없을때 그 컴포넌트는 어떤 방법론으로 만들어야 하나요? " 

여러분들의 대답은 어떤가요 ? 

 

 

반응형