-
CBD 방법론Data Engineer 2024. 1. 11. 07:20728x90
재사용성, 대체성
- 재사용성 : 컴포넌트가 독립적인 기능 혹은 서비스를 제공하는 독립적인 모듈이므로 이를 필요로 하는 여러 애플리케이션에서 반복적으로 재사용되도록 하는 것을 의미
개발하고자 하는 시스템에서 필요로 하는 기능 및 서비스를 제공하는 컴포넌트를 식별하고 이를 정의하는 것이 핵심
기존 개발 방식과는 달리 특정 프레임워크 상에서 실행되는 부품화된 컴포넌트를 바탕으로 이를 조립하여 더 큰 컴포넌트를 만들거나 애플리케이션을 개발하는 새로운 기법
분석 - 설계 - 구현 - 테스트 및 인도
컴포넌트 자체를 생산하거나 테스트 완료된 컴포넌트를 조립하여 사용자 요구에 맞는 소프트웨어를 만드는 방법
1. 복잡한 개발 문제를 적당한 구현 단위로 분해하고, 조립 방식으로 애플리케이션을 개발할 수 있어 개발 생산성을 높일 수 있음
- 독립적인 개발과 배포가 가능
2. 컴포넌트가 제공하는 완벽한 캡슐화 기능을 통해 변화 또는 애러의 영향을 해당 컴포넌트 내부로 한정시킬 수 있어 유지보수성이 높음
3. 성능 극대화를 위해 개발된 애플리케이션을 시스템/네트워크에 최적으로 분산 배치할 수 있는 단위로 나눌 수 있어서 시스템의 업사이징 또는 다운사이징에 신속하게 대응할 수 있다.
개발 생명주기의 모든 활동(요구분석, 아키텍처, 설계, 구현, 시험, 전개, 기술적 인프라 지원 및 프로젝트 관리)이 컴포넌트 기반으로 이루어지는 소프트웨어 개발 방법
CD(Component Development)
- 재사용 가능한 비즈니스 로직 획득에 초점을 맞춤
- 고품질의 컴포넌트 개발
- 컴포넌트 생산자
CBSD(Component-base Software Development)
- 기능 식별과 컴포넌트 획득에 초점
- 컴포넌트를 획득하고 조합하여 어플리케이션 개발
- 컴포넌트 소비자 / 컴포넌트 조립자
아키텍처 중심 개발
- 아키텍처 중심의 소프트웨어 설계
- 컴포넌트는 아키텍처 모델에 플러그 앤 플레이될 수 있다.
재사용 중시
- 재사용을 고려하여 컴포넌트를 설계
- 축적한 컴포넌트를 기반으로 시스템 개발 방법을 제공한다
UML 사용(United Modeling Language : 소프트웨어 공학에서 사용되는 표준화된 범용 모델링 언어)
- 프로젝트 전체 라이프사이클을 지원하는 일관성 있는 모델링 및 산출물을 작성
- 유스케이스 다이어그램, 시퀀스 다이어그램, 컴포넌트 다이어그램, 클래스 다이어그램, …
반복적 개발 생명주기
- 여러 개발주기에 걸쳐 반복적, 점증적으로 개발
- 일련의 반복을 통해 개발 위험을 식별하고 제거
장점
1. 소프트웨어 개발 시간 단축 및 비용의 절감
- CBD 도입 초기에는 재사용 컴포넌트를 식별하고 개발하는 비용이 소요되지만, 컴포넌트가 축적됨에 따라 시스템 개발 시간 및 비용이 획기적으로 감소
- 라이브러리 재사용에 비해 재사용 단위가 크므로 비용 및 개발 시간 단축이 가능
2. 소프트웨어의 품질 강화
- 이미 검증된 컴포넌트의 재사용으로 신규 시스템의 품질 강화
- 독립된 단위 컴포넌트를 조립하여 신규 시스템을 구축하므로, 오류 식별이 용이하고 컴포넌트 간의 영향 요소가 최소화
3. 유지 보수 비용의 절감
- 컴포넌트의 조립을 통해 개발된 시스템은 개별 컴포넌트의 변경이 다른 컴포넌트에 미치는 영향이 적음
- 컴포넌트 명세를 통해 변경 영향도가 예측 가능하기 때문에 유지 보수 비용 절감
4. 표준화된 아키텍처를 준수하므로 내부 설계나 코드와 같은 컴포넌트 구현부를 새로운 기능 혹은 향상된 성능을 제공하는 다른 컴포넌트로 손쉽게 교체할 수 있다.
- 사용자들이 시장에서 필요한 컴포넌트를 공급받아 조립/생산하는 방식
- 각 주체들이 목적과 역할에 따라 컴포넌트의 내용을 정확하게 이해하는 것이 중요
CB : 완전한 시스템을 만드는 것이 아닌 재사용 가능한 부품을 만드는 것이기 때문에 해당 도메인을 상세하게 분석, 범용성이 높은 부품을 정의하는 것이 좋음
CBD : 요건에 적합한 시스템을 완성하는 것이 중요
실제로 어떻게 적용했는가?
1. 각 프로젝트별로 전담 인원들이 모여 서브시스템 및 표준 컴포넌트 목록 리스트를 먼저 작성
2. 표준화 문서 작성 > 적용하기 / 개발하기 총 2문서
회사에서 코드 회고의 일환으로 CBD 방법론과 TDD 방법론을 결합한 방식으로 개발 컴포넌트를 구성한다고 한다.
내 경험에 빗대어 보면, 일반화가 가장 먼저 해야될 일이다.
어떤 프로젝트가 있다고 가정해보자.
프로젝트에는 계정관리 시스템, 게시판 관리(CRUD) 시스템, 데이터 전처리 시스템, 데이터 파이프라인 등등 여러 서브 시스템들이 존재할 것이다. CBD는 이를 구획화하여 각각의 시스템을 추후에 있을 개발 프로세스에서 하나의 컴포넌트로 사용하기 위해 도입하는 것이다.
## 소비자 관리 시스템 (메인 시스템) #### 계정관리 시스템 #### 데이터 파이프라인 시스템 #### 데이터 전처리 시스템 #### 게시판 관리 시스템(이상 서브 시스템)
이렇게 서브 시스템으로 나누어 문서화하는 작업이 진행될 것이다.
정리가 완성되기까지 도입하지 않았을 때보다 더 많은 시간이 소요되겠지만, 차후에 들어갈 개발 프로세스는 훨씬 더 빨리 질 것이다.
728x90'Data Engineer' 카테고리의 다른 글
Dockerfile & Docker-compose (0) 2024.02.20 [Security] Microsoft Defender (0) 2024.02.19 Git add / commit / push 취소 (0) 2023.12.15 정형, 비정형, 반정형 (0) 2023.12.15 concurrent.futures (2) 2023.12.07