Welcome to SOFTGRAM
Untitled Document


CMM은 소프트웨어 기술을 지원하는 조직의 프로세스를 개선하는데 도움을 주기 위하여 1986년 미국 소프트웨어 공학연구소에서 개발된 절차이다. 이 절차는 다섯 개의 잘 정의된 일련의 개발 절차, 즉 초기 단계, 반복 단계, 정의 단계, 관리 단계 및 최적화 단계 등으로 나뉘어진다.
이러한 다섯 단계는 성숙도, 즉 소프트웨어 기술을 사용하는 조직의 역량을 측정하는 서열을 제공하며, 또한 한 조직의 소프트웨어 개선 노력에 우선 순위를 매기는 데에도 도움이 된다. 소프트웨어 사업들을 주어진 예산과 일정 내에 있도록 하는데 있어, 실제 일을 수행하는 개인들보다 형식적인 규칙에 더 많이 의존하는 조직일수록, 그 조직의 소프트웨어 개발 "성숙도"는 더욱 진보된 것으로 판단한다.
우리 나라에서도 정부에서 발주하는 시스템통합 프로젝트에 CMM을 적용할 가능성이 높아지면서, 삼성SDS, LG CNS, 그리고 현대정보기술 등, 국내 대형 SI업체들이 CMM 레벨 획득에 총력을 기울이고 있다.
CMM은 1986년 미국 카네기멜론 대학의 소프트웨어공학연구소(SEI)에서 소프트웨어 개발 모델을 분석하여 개발하고, 미국방성에서 최초로 적용하여, S/W업체의 품질능력 평가척도로 활용하면서 세계적으로 인증받는 모델로 발전해왔다. 현재 미정부 표준화기구(NIST)에서 입찰업체에 대한 자격기준으로 적용하고 있다.
CMM의 구성을 잘 이해하기 위해서는 능력(Capability)과 수행(Performance),성숙도(Maturity)와의 관계를 잘 이해할 필요가 있다.

능력(Capability)은 조직이 가진 역량을 나타내는 것으로 프로젝트의 가능한 예상결과의 폭을 말한다.
또한 소프트웨어 프로세스를 따름으로서 성취되는 기대결과를 말한다. 따라서 차기 프로젝트의 기대결과를 예측하는 수단이 된다.
이는 "비용, 일정, 납기, 고객 만족, 생산성 등의 여러 목표를 달성하는 확률"로 쉽게 이해할 수 있다. 능력 수준이 높을수록 비용, 일정, 품질 등의 목표를 쉽게 달성하고 여러 프로젝트들 사이의 목표 달성 결과의 폭도 그만큼 줄어든다.

수행(Performance)은 실제로 수행된 결과 값을 의미한다. 이렇게 수집된 자료들을 바탕으로 조직의 능력을 평가한다. 그러나 능력이 반드시 수행으로 연결되는 것은 아니다. 바람직한 것은 능력이 수행에 반영 되고, 나아가서는 더 나은 수행결과가 나와서 능력이 향상되는 것이다. 하지만 능력이 있었어도 꾸준히 노력하지 않으면, 수행결과는 능력과는 다르게 나빠질 수도 있다.

성숙도(Maturity)는 조직의 능력을 수행에 반영 시키고, 나아가서는 프로세스 능력을 성장시킬 수 있는 조직의 잠재력을 의미한다. 즉, 성숙도가 갖추어 지면 성능도 향상되고 수행결과가 좋아지는 방식으로 조직은 발전하게 되는 것이다. 그러므로 조직은 성숙도를 높이기 위한 노력을 해야 하는데, CMM이 바로 이러한 성숙도를 높이기 위한 로드맵을 제시한다. CMM은 성숙도를 5단계로 나누어 점증적으로 발전해 가도록 유도하고 있다. CMM을 적용하고자 하는 조직은 먼저 2단계에서 지시하는 사항들을 충족시키고, 점차적으로 3단계, 4단계 그리고 5단계로 나아가게 된다.
CMM에서의 성숙도 수준 2단계에서 5단계는 소프트웨어 프로세스를 설정하거나 개선하기 위하여 조직에 의하여 수행되는 활동, 각 프로젝트에 수행되는 활동, 얻어지는 프로세스 능력들로 특징 지을 수 있다.


Level 1: 초기(Initial)
1단계는 초기(initial) 단계로 가장 낮은 성숙도 수준을 나타낸다. 초기 단계에서 조직은 소프트웨어의 개발과 유지에 안정적인 환경을 제공하지 못한다. 이 단계에서는 사전에 정의된 프로세스가 거의 없으며, 프로젝트의 진행 도중에 절차가 정의되고 변경된다. 1단계 조직에서는 문제가 발생되면, 프로젝트는 계획된 절차를 버리고 코딩과 시험에 집중하게 된다. 또한 대부분의 프로젝트는 비용과 개발 기간이 초과되는 경향이 있으며, 프로젝트의 성공은 뛰어난 개발자에 전적으로 의존한다. 즉, 1단계에서의 능력은 조직이 아닌 개인인 것이다.

Level 2: 반복 (Repeatable)
1단계에서와 같이 프로세스에 대한 가시성이 전혀 없는 상태에서 개선되어야 하는 가장 중요한 것은 프로젝트 관리이다.
2단계에서는 기본적인 프로젝트 관리 프로세스가 설정되어 소프트웨어의 크기, 비용, 일정 등을 추적하고 기록한다. 2단계에 도달한 조직은 성공한 프로젝트에서 얻어진 자료를 기본으로 새로운 프로젝트를 계획하고 관리하기 때문에 프로젝트의 성공을 반복시킬 수 있다.

Level 3: 정의(Defined)
2 단계에서는 프로젝트 단위로 프로세스를 설정하여 이를 시험하고 수정하는 작업을 반복한다. 3단계에서는 그 중 효율적이고 조직과 잘 맞는 프로세스들을 선택하여 조직 차원의 표준 프로세스로 정의한다.
조직에서 수행되는 개별적인 프로젝트들은 이미 정의된 "조직의 표준 프로세스"를 프로젝트의 특성에 맞추어 조정하여 적용한다. 이렇게 조정된 프로세스를 "프로젝트에서 정의된 소프트웨어 프로세스"라고 한다. 이를 위해 조직 내에 SEPG(Software Engineering Process Group)를 구성하여, 조직에 관련된 모든 프로세스 활동을 전담하게 한다.

Level 4: 관리 (Managed)
4단계에서는 소프트웨어 제품과 프로세스에 대한 정량적인 품질 목표를 설정하고 관리한다. 이 단계에서는 조직 차원의 소프트웨어 프로세스 데이터베이스가 구축되어"프로젝트 정의 소프트웨어 프로세스"로부터 얻을 수 있는 데이터를 수집하고 분석하는데 사용한다.
모든 프로젝트에 대한 중요한 소프트웨어 프로세스 활동의 생산성과 품질이 측정되며, 성과의 변동을 수용 가능한 정량적인 범위 내로 최소화하여 제품과 프로세스에 대한 통제를 수행한다.

Level 5: 최적(Optimizing)
조직이 5단계에 이르렀다고 해서 프로세스 개선이 끝난 것은 아니다. 5단계에서는 프로세스 개선이 모든 조직구성원으로 확대되고, 지속적인 프로세스 개선을 위해 노력한다. 새로운 기술이 조직에 적용될 수 있는가를 판단하고, 필요하면 이를 수용하는 방향으로 프로세스를 개선시키며, 조직의 구성원들은 자신의 영역에서 계속해서 프로세스의 개선방안을 제안하고 전체적으로 이를 반영하여 프로세스를 개선한다.
그리고 발견된 결함의 형태가 다시 발생하지 않도록 소프트웨어 프로세스가 평가되고 얻어진 교훈이 전 조직에 확산된다.



CMM은 궁극적으로 소프트웨어 프로세스 개선을 목적으로 사용된다. 이를 위해 프로세스의 현재 상태와 개선 목표를 보다 객관적으로 파악하고, 개선점의 우선 순위를 도출하기 위한 심사의 도구로 사용할 수 있다. 또한 소프트웨어 프로세스의 개선을 위한 전략을 수립하기 위해, 그리고 소프트웨어 프로세스를 정의하기 위해 혹은 실행 계획을 구조화하기 위해 CMM의 핵심 활동이 제시하는 지침을 사용할 수 있다.



Welcome to SOFTGRAM