등장 배경
객체지향 개발 방법론은 소프트웨어 엔지니어링에서 중요한 발전으로 여겨져 왔습니다. 객체지향 방법론은 데이터와 그 데이터를 처리하는 함수들을 하나의 '객체'로 묶는 방식을 기반으로 합니다. 이 방법론은 데이터의 은닉, 상속, 다형성 등의 특징을 가지며, 코드의 재사용성과 유지보수성을 높여줍니다. 객체지향 프로그래밍은 클래스라는 구조를 사용하여 객체를 정의하고, 이러한 객체들의 상호작용을 통해 프로그램을 구성합니다.
그러나 객체지향 방법론이 많은 장점을 가지고 있음에도 불구하고, 몇 가지 한계점이 드러나기 시작했습니다.
- 객체 간의 긴밀한 결합으로 인해 한 객체의 변경이 다른 객체에 영향을 미칠 수 있습니다. 이로 인해 소프트웨어의 복잡성이 증가하고, 수정이 필요할 때마다 전체 시스템에 영향을 줄 수 있는 재컴파일이 필요하게 됩니다.
- 객체지향 프로그래밍은 프로그램의 초기 설계 단계에서 많은 노력을 요구하며, 대규모 시스템의 경우 관리가 복잡해질 수 있습니다.
CBD 방법론은 이러한 한계점을 극복하기 위해 등장했습니다.
CBD 방법론( Component Based Developement)
CBD(Component-Based Development, 컴포넌트 기반 개발) 방법론은 소프트웨어를 독립적이고 작은 단위인 컴포넌트(Component)로 개발하는 접근 방식입니다. 이 방법론의 핵심은 각각의 컴포넌트가 특정 기능을 수행하며, 이러한 컴포넌트들이 결합하여 복잡한 시스템을 형성한다는 점입니다.
CBD 방법론은 컴포넌트의 재사용성, 모듈성, 인터페이스 중심의 설계, 유연성과 확장성, 기술 독립성, 그리고 표준화 및 호환성을 통해 소프트웨어 개발의 효율성을 높이고, 복잡한 시스템의 관리와 통합을 용이하게 하는 중요한 특징들을 가지고 있습니다.
재사용성
컴포넌트의 재사용성은 CBD 방법론의 큰 장점으로, 한 번 개발된 컴포넌트는 다양한 프로젝트에서 다시 사용될 수 있기 때문에 개발 과정의 효율성을 크게 높여줍니다.
모듈성
각 컴포넌트는 독립적으로 작동하며, 이는 시스템 전체의 복잡성 관리를 용이하게 합니다. 컴포넌트별 독립성은 각 컴포넌트를 별도로 개발, 테스트, 수정할 수 있게 해주어, 시스템의 안정성과 유지보수가 용이해집니다.
인터페이스 기반 설계
CBD 방법론은 인터페이스 중심의 설계를 강조합니다. 컴포넌트 간의 상호작용은 정의된 인터페이스를 통해 이루어지며, 이는 다양한 컴포넌트의 통합을 용이하게 합니다. 이러한 인터페이스 기반 설계는 시스템의 유연성과 확장성을 크게 증가시키며, 필요에 따라 새로운 컴포넌트를 추가하거나 기존의 것을 변경하는 것이 가능합니다.
독립성 보장 및 표준화
CBD 방법론은 기술적인 제한성을 최소화하는 기술적 독립성을 제공합니다. 컴포넌트는 다양한 기술과 프로그래밍 언어로 개발될 수 있으며, 이는 개발자에게 더 넓은 선택의 자유를 제공합니다. 또한, 특정 표준에 따라 개발된 컴포넌트들은 서로 호환되며, 다른 시스템이나 애플리케이션과의 통합이 용이해집니다.
CBD 방법론 개발 절차
컴포넌트 개발 (Component Development)
- 도메인 분석: 소프트웨어가 운용될 도메인에 대한 이해와 분석을 통해, 필요한 컴포넌트의 기능적 요구사항을 도출합니다.
- 컴포넌트 추출: 분석된 요구사항에 기반하여 개발될 컴포넌트들을 식별합니다.
- 컴포넌트 설계: 추출된 컴포넌트들의 상세한 설계를 진행합니다. 이때 컴포넌트 간의 인터페이스와 상호작용 방식도 정의됩니다.
- 컴포넌트 구현: 설계된 컴포넌트를 코드로 구현합니다.
- 컴포넌트 인증: 구현된 컴포넌트가 설계 사양에 부합하는지 검증하고 인증합니다.
- 컴포넌트 저장: 인증된 컴포넌트를 컴포넌트 저장소에 보관합니다.
컴포넌트 기반 개발 (Component Base Development)
- 요구 분석: 소프트웨어의 요구사항을 분석합니다.
- 컴포넌트 기반설계: 요구사항을 만족시킬 수 있는 컴포넌트들을 컴포넌트 저장소에서 선택하거나 새로운 컴포넌트를 설계합니다.
- 컴포넌트 결합: 선택된 컴포넌트들을 서로 결합하여 소프트웨어의 구조를 만듭니다.
- 컴포넌트 조립: 결합된 컴포넌트들을 조립하여 전체 소프트웨어를 구축합니다.
- 시스템 통합 및 시험: 조립된 소프트웨어 시스템의 통합성과 기능을 시험합니다.
CDB 방법론의 핵심 정리
성공 요인
- 아키텍쳐 중심: 소프트웨어의 전체적인 구조를 아키텍쳐를 통해 이해하고, 이를 통해 프로젝트의 가시성을 확보하고 위험을 조기에 식별하며 대응합니다. 이는 복잡한 시스템 개발에 있어서 통합성과 시스템의 일관성을 유지하는 데 중요합니다.
- 엔지니어링 도구: 자동화된 도구의 사용으로 개발 생산성과 정확성을 향상시키며, Stub/Driver 모듈을 통한 사전 기능의 자동 검증을 가능하게 합니다.
- 프레임워크 기반: 컴포넌트의 상호 연동을 자동화하고, 이를 통해 개발 생산성과 품질을 향상시키는 기반 역할을 수행합니다.
- 조직간 R&R 명확: 각 팀의 역할과 책임을 명확히 하여, 비즈니스 분석, 컴포넌트 개발, 프레임워크 개발, 품질 보증 등 각 팀이 효과적으로 협업할 수 있도록 합니다.
- 표준 및 방법론: .NET, J2EE, CCM 등의 실행 환경 표준과 UML 기반의 자동화 도구, RUP 기반 프로세스 등 개발 표준을 정립합니다.
- 개발팀 역량강화: 객체지향 및 컴포넌트 구현 기술, 표준에 대한 이해와 준수 능력을 강화합니다.
- 재사용 관리 체계: 컴포넌트 재사용에 대한 지식과 경험을 축적하고, 컴포넌트의 형상 관리 및 품질 관리 체계를 구축합니다.
위험요소와 대응방안
- 재사용 컴포넌트 부재: 전사적인 컴포넌트 관리 체계를 수립하고, RFP(Request For Proposal)에 컴포넌트 현황을 공개하여 활용을 권장합니다.
※ RFP: 조직이나 기업이 특정 프로젝트나 서비스, 제품의 구매 혹은 공급을 위해 필요한 상세한 제안 요청을 하기 위해 발행하는 문서 - 경험부족 및 비용 증가: 개발 난이도가 높고 사용 빈도가 높은 컴포넌트를 우선적으로 도출하고 개발합니다.
- 낮은 재사용 빈도: 컴포넌트의 표준 명세를 작성하고 지식관리시스템(KMS)을 구축하여 우수한 적용 사례를 발굴하고 전파합니다.
CDB 개발 방법론의 핵심은 아키텍쳐를 중심으로 한 체계적인 접근, 자동화된 엔지니어링 도구의 사용, 효율적인 프레임워크 활용, 조직 간 명확한 역할 분담, 표준화된 개발 방법론의 적용, 개발팀의 전문성 강화, 그리고 재사용 가능한 컴포넌트의 체계적 관리와 이를 통한 위험 요소의 최소화 및 대응 방안 마련에 있습니다.
'프로그래밍 이론' 카테고리의 다른 글
[SWF] 객체 지향 프로그래밍(OOP: Object-Oriented Programming) (0) | 2024.04.05 |
---|---|
[SWF] 객체 지향 설계 원칙(SOLID) (0) | 2024.04.05 |