기능 성숙도 모델 (CMM) 및 CMMI에 대한 심층 분석
비즈니스 운영에서 다양한 기능을 확장하는 것은 매우 중요합니다. 기업이든, 시스템이든, 그룹이든, 역량에 대한 깊은 이해는 필수적입니다. 비즈니스 내 여러 기능을 세분화한 후에는 각 기능의 성과를 평가하고 이에 기반하여 명확한 표준과 목표를 설정해야 합니다.
개별 기능과 직원들의 성과를 정확하게 측정하고 관리하기 위해서는 견고한 솔루션이 필요합니다. 이러한 솔루션을 통해 기업은 복잡한 문제들을 효과적으로 처리하고 확장에 필요한 정확성을 확보할 수 있습니다.
여기서 기능 성숙도 모델(CMM)이 중요한 역할을 합니다. 이번 글에서는 CMM과 CMMI의 정의, 수준, 차이점을 자세히 살펴보겠습니다.
그럼, 시작해볼까요?
기능 성숙도 모델 (CMM) 이란 무엇인가?
기능 성숙도 모델(CMM)은 조직의 애플리케이션 개발 프로세스를 구축하고 개선하는 데 사용되는 체계적인 방법론입니다. 이를 통해 개발자는 소프트웨어 개발 과정을 향상시켜 일관성과 효율성을 높일 수 있습니다. 개발 팀 내 어떤 역할에 있든 CMM에 대한 이해는 성과 향상에 크게 기여합니다. 즉, CMM은 소프트웨어 개발 프로세스를 평가하고 발전시키며, 지속적으로 개선할 수 있도록 돕는 핵심 도구입니다.
CMM은 엔지니어링, 관리, 계획 단계를 포함하는 소프트웨어 개발 및 기타 프로세스에 대한 기본 절차를 제시합니다. CMM은 한 번에 큰 변화를 추구하기보다는 점진적인 개선을 통해 꾸준히 발전해나가는 것을 중요하게 생각합니다.
또한, CMM은 소프트웨어 개발 프로세스의 지속적인 개선을 위한 플랫폼을 제공합니다. 이 프레임워크를 통해 작은 변화들을 여러 성숙도 수준으로 나누어 관리할 수 있습니다. 이러한 방법론은 제품과 서비스 개발 품질을 향상시키기 위해 설계된 관리 시스템의 핵심적인 역할을 합니다.
CMM은 미국 국방부가 후원하는 연구 개발 센터인 SEI(Software Engineering Institute)에서 개발하고 보급했습니다. 현재 카네기 멜론 대학교에 속해 있습니다. SEI는 1984년에 소프트웨어 문제 해결과 방법론 발전을 위해 설립되었습니다.
SEI는 국방부(DOD)의 소프트웨어 조달 시스템 개발, 획득 및 유지 관리 프로세스를 최적화하기 위해 설립되었습니다. SEI는 CMM의 진화된 형태인 CMM 통합(CMMI)의 산업 적용을 적극적으로 지원하고 있습니다.
CMM이 왜 필요할까?
CMM은 시간과 비용 절감이라는 중요한 이점을 제공합니다. 이 모델은 개선 과정에서 결함을 효과적으로 식별할 수 있도록 설계되었으며, 다른 모델에 비해 효율성이 높습니다.
또한 CMM은 비즈니스 프로세스를 개선하고 생산 일정 변경을 최소화하는 데 도움이 됩니다. CMM은 산업 프로세스 개선을 위해 설계된 최초의 모델이었으며, 이후 CMMI, 비즈니스 역량 성숙도 모델(BCMM)과 같은 다양한 모델 개발의 기초가 되었습니다.
CMM은 어떤 분야에 속하든 개발 팀이 있다면 활용 가능한 유연한 모델입니다. 팀원들은 CMM을 통해 프로세스의 오류를 수정하고 효율성을 높일 수 있습니다.
CMM의 5단계 성숙도
CMM(Capability Maturity Model)은 개발 프로세스를 다섯 가지 수준으로 나누어 평가합니다. 각 수준은 다음과 같습니다.
#1. 초기 단계
이 단계에서는 프로세스가 체계적이지 않고 혼란스러운 경우가 많습니다. 성공은 개인의 노력에 크게 의존하며, 프로세스가 반복 가능하게 문서화되거나 정의되지 않았기 때문에 성공을 재현하기 어렵습니다. 따라서 소프트웨어 개발 환경은 불안정하고 임시적입니다. 또한, 제품 품질과 완료 시간을 예측하기 어렵습니다.
#2. 반복 가능 단계
이 단계에서는 필요한 프로세스가 비교적 잘 정립되고 문서화되어 있습니다. 프로젝트 관리 기술이 효과적으로 적용되고 일부 핵심 프로세스 영역에서 성공을 재현할 수 있습니다. 반복 가능한 수준은 프로젝트 관리에 대한 기본적인 정책 수립을 통해 달성할 수 있습니다. 이전 프로젝트 경험을 활용하여 유사한 프로젝트를 관리하고, 프로젝트에 필요한 자원, 목표, 제약 조건 등을 정의합니다.
이 단계에서는 성공적인 소프트웨어 완성을 위한 세부 계획을 제시합니다. 기본적인 목표는 소프트웨어 수명 주기 동안 구성 요소의 성능을 유지하는 것입니다. 고객 피드백과 검토 관리 또한 중요한 부분이며, 이를 통해 요구 사항 변경을 수용할 수 있습니다. 이 단계에서는 소프트웨어 개발을 위한 자격 있는 계약자를 관리하는 하도급 관리도 포함됩니다. 소프트웨어 품질 보증은 개발 과정에서 특정 규칙 및 표준에 따라 고품질 소프트웨어 제품을 생산하는 것을 목표로 합니다.
#3. 정의됨
이 단계에서는 지침 및 절차가 체계적으로 문서화됩니다. 이는 잘 정의된 소프트웨어 엔지니어링 프로세스와 관리 방식을 의미합니다. 여기에는 다음 요소들이 포함됩니다.
- 동료 검토: 검사, 친구 확인, 워크스루 등 다양한 검토 프로세스를 통해 결함을 제거합니다.
- 그룹 간 조정: 여러 개발 팀 간의 상호 작용을 통해 효율적인 요구 사항 충족을 보장합니다.
- 조직 프로세스 정의: 소프트웨어 개발 프로세스 개발 및 유지 관리에 중점을 둡니다.
- 조직 프로세스 초점: 조직 프로세스 기능을 향상시키기 위한 관행 및 활동을 포함합니다.
- 교육 프로그램: 팀원의 지식과 기술을 향상시켜 업무 효율성을 높이는 데 초점을 맞춥니다.
#4. 관리됨
이 단계에서는 조직의 소프트웨어 제품 품질과 프로세스에 대한 명확한 정량적 목표가 설정됩니다. 수행된 측정을 통해 프로세스 및 제품 품질을 예측할 수 있습니다. 또한, 정량적 분석 및 제품 품질을 개발하고 이해하기 위한 전략과 계획이 포함되며, 프로젝트 성과 관리에 집중합니다.
#5. 최적화됨
최적화 단계는 조직의 개발 프로세스를 지속적으로 개선하는 데 초점을 맞춘 CMM 성숙도의 마지막 단계입니다. 기술, 평가, 도구를 사용하여 소프트웨어 프로세스를 개선함으로써 결함의 재발을 방지합니다. 이 단계에는 다음 요소들이 포함됩니다.
- 프로세스 변경 관리: 소프트웨어 개발 프로세스를 지속적으로 개선하여 제품 품질, 주기 시간 및 생산성을 향상시킵니다.
- 기술 변경 관리: 기술과 식별 기술을 활용하여 제품 품질을 향상시키고 개발 시간을 단축합니다.
- 결함 예방: 결함 원인을 파악하고 재발을 방지하여 프로젝트 정의 프로세스를 개선합니다.
기능 성숙도 모델 통합 (CMMI)
CMMI(Capability Maturity Model Integration)는 제품, 서비스, 프로젝트 개발 과정에서 개발 프로세스를 강화하고 효율성을 높이며, 워크플로 생산성을 개선하는 데 사용되는 프로세스 모델입니다. CMMI를 통해 프로세스 전반에 걸쳐 위험을 줄일 수 있습니다.
CMMI는 카네기 멜론 대학교에서 개발 및 도입되었습니다. 특정 영역에서 지속적인 개선이 가능한 조직의 능력을 측정하고, 여러 모델을 단일 프레임워크로 통합하여 성숙도 모델의 효율성을 높이는 것을 목표로 합니다.
CMMI는 2002년 첫 번째 버전을 시작으로 2006년 다음 버전, 2010년 1.3 버전, 2018년 최신 버전인 2.0 버전이 출시되었습니다.
CMMI는 COBIT 프레임워크와 같은 인증을 가진 ISACA(이전 정보 시스템 감사 및 제어 협회)에서 구입했습니다. CMMI는 제품 및 서비스 개발 프로세스 전반에 걸쳐 조직을 지원하는 프로세스 및 행동 모델입니다.
CMMI의 목표는 명확합니다. 고객의 기대를 충족시키고 시장에서 조직의 가치를 높이는 모델을 따라 서비스 또는 제품 품질을 개선합니다. 또한 비즈니스 평판과 업계 이해관계자의 가치를 평가하는 데도 도움을 줍니다.
CMMI는 현재 다음과 같은 영역을 다루고 있습니다.
- CMMI for Development: 제품 및 서비스 개발에 적용됩니다.
- CMMI for Services: 서비스 구축, 제공, 관리에 적용됩니다.
- CMMI for Acquisition: 제품 및 서비스 구매에 적용됩니다.
CMMI 표현 방식
CMMI 표현 방식을 통해 조직은 개선 목표를 설정하고 추구할 수 있습니다. 두 가지 주요 표현 방식이 있습니다.
단계적 표현
- 정의된 개발 프로세스 영역 집합을 사용하여 개선 경로를 설명합니다.
- 일련의 개선 사항을 제공하며, 각 단계는 다음 개선을 위한 구조 역할을 합니다.
- 성숙도 수준을 통해 개선된 경로를 정의합니다. 성숙도는 조직 내 다양한 프로세스 성숙도를 나타냅니다.
- 다양한 성숙도 수준을 바탕으로 여러 조직을 비교할 수 있습니다.
연속적 표현
- 특정 프로세스 영역을 선택할 수 있습니다.
- 능력 수준을 사용하여 개별 프로세스의 개선을 측정합니다.
- 프로세스 영역별로 조직 간 비교가 가능합니다.
- 연속적 표현을 통해 조직은 더 나은 개선을 위해 다양한 프로세스를 선택할 수 있습니다.
- 조직은 개선 순서를 선택하여 목표를 효과적으로 달성하고 위험을 줄일 수 있습니다.
CMMI의 단계
단계적 표현을 사용하는 CMMI에는 5가지 성숙 단계가 있습니다.
#1. 초기 단계: 개발 프로세스가 제대로 제어되거나 관리되지 않는 단계입니다. 개발 프로세스 결과는 예측하기 어렵고, 혼란스럽고 임시적인 접근 방식이 사용됩니다. 정의된 핵심 프로세스 영역(KPA)을 찾을 수 없으며, 제품 품질이 낮고 위험도가 가장 높습니다.
#2. 관리 단계: 이 단계에서는 요구 사항이 적절히 관리되고 개발 프로세스가 계획 및 제어됩니다. 프로젝트는 문서화된 계획에 따라 관리 및 구현되지만 위험은 여전히 존재합니다. 하지만 초기 단계보다는 위험도가 낮습니다.
#3. 정의 단계: 개발 프로세스가 적절한 절차, 표준, 도구 및 방법을 사용하여 설명되고 특성화되는 단계입니다. 제품 품질은 중간 수준이며 위험도 또한 중간입니다.
#4. 정량적 관리 단계: 이 단계에서는 품질 및 성능 프로세스에 대한 정량적 목표가 설정됩니다. 조직 및 고객 요구 사항을 기반으로 하며, 프로세스 성과 측정이 정량적으로 분석됩니다. 낮은 위험과 높은 품질의 프로세스를 확인할 수 있습니다.
#5. 최적화 단계: 성능 및 프로세스의 지속적인 개선을 목표로 하는 최종 단계입니다. 이 단계에서는 혁신적이고 점진적인 개선이 이루어지며, 프로세스와 성능이 더욱 향상되고 위험도가 가장 낮습니다.
CMMI의 기능 수준
기능 수준은 프로세스 영역과 관련된 조직의 프로세스를 향상시키기 위한 관련 지침을 제공합니다. CMMI 모델에는 6가지 기능 수준이 있습니다.
- 기능 수준 0 (미완성): 프로세스가 미완성, 부분적 또는 수행되지 않은 상태를 의미하며 일반적인 목표가 없습니다.
- 기능 수준 1 (수행됨): 프로세스 성능이 안정적이지 않으며, 비용, 일정 및 품질 목표가 충족되지 않습니다. 프로세스는 특정 사례를 수행해야 합니다.
- 기능 수준 2 (관리됨): 프로세스가 모니터링, 제어 및 계획됩니다. 모델, 품질, 일정 및 비용과 같은 항목에 대한 목표가 설정되며, 조직은 메트릭을 사용하여 프로세스를 능동적으로 관리해야 합니다.
- 기능 수준 3 (정의됨): 프로세스가 잘 관리되고 조직 지침 및 표준을 충족하는 단계입니다. 프로세스 표준화에 중점을 둡니다.
- 기능 수준 4 (정량적으로 관리됨): 프로세스가 정량 및 통계 기법을 사용하여 제어됩니다. 프로세스 성능은 메트릭과 통계적 용어로 이해됩니다.
- 기능 수준 5 (최적화됨): 프로세스 성능을 지속적으로 개선하는 데 초점을 맞추는 단계입니다. 혁신적이고 점진적인 개선을 통해 성능이 향상됩니다.
CMM과 CMMI: 차이점
CMMI는 CMM의 최신 업데이트 모델입니다. SEI는 CMM을 표준화하고 통합하기 위해 CMMI를 개발했으며, 다양한 기능에 대한 여러 모델을 하나의 프레임워크로 통합했습니다. 이러한 통합은 프로세스를 유연하고 효율적으로 만듭니다.
핵심 프로세스 영역, 사례, 성숙도 수준, 목표 측면에서 CMMI 구조는 CMM 구조와 유사하지만, CMMI는 프로세스에 대한 두 가지 다른 표현 방식을 제공합니다.
CMM과 CMMI의 차이점을 더 자세히 비교해 보겠습니다.
CMM | CMMI | |
정의 | 1984년에 개발된 기능 성숙도 모델 (Capability Maturity Model) | 2006년에 개발된 기능 성숙도 모델 통합 (Capability Maturity Model Integration) |
목적 | 조직의 소프트웨어 개발 프로세스를 측정하기 위한 행동 모델 | CMM 모델을 보다 작업 지향적이고 효과적으로 개선 |
주요 목표 | 소프트웨어 개발 프로세스의 성숙도 수준 평가 | 서로 다른 소프트웨어 모델을 하나의 시스템으로 결합하고 CMM의 단점 극복 |
단계 | 초기, 반복, 정의, 관리, 최적화의 5단계 | 초기, 관리, 정의, 정량적 관리, 최적화의 5단계 |
효율성 | 상대적으로 덜 효과적 | 더 효과적 |
방향 | 프로세스 지향적 | 목표 지향적 |
결론
기능 성숙도 모델(CMM)은 산업 분야의 소프트웨어 개발 프로세스를 위한 강력한 문제 해결 시스템입니다. 기업이 프로세스 문제를 효율적으로 처리할 수 있도록 도와줍니다.
반면 CMMI는 CMM보다 발전된 방법론을 제공합니다. 고객 기대 충족, 가치 창출, 마케팅 성장, 제품 및 서비스 품질 향상, 명성 제고를 포함한 다양한 목표를 달성하는 데 도움을 줍니다.
소프트웨어를 예정된 기간 내에 예산 범위 안에서 최고 품질로 개발하고 제공하는 데 필요한 애플리케이션 수명 주기 관리 프레임워크를 추가로 살펴볼 수 있습니다.