다양한 기록

CMM, CMMI 본문

소프트웨어공학

CMM, CMMI

라구넹 2024. 12. 13. 18:14

CMM (Capability Maturity Mode)

목표:

조직에서 사용중인 소프트웨어 프로세스에 있는 현재 결점에 집중해서

조직이 해당 프로세스를 개선할 수 있는 방법을 알려줌

SEI(Software Engineering Institute)가 설립되어 관리

 

종류:

SW-CMM : 소프트웨어 관리

P-CMM : 인적 자원 관리

SE-CMM : 시스템 엔지니어링

IPD-CMM : 통합 프로덕트 개발

SA-CMM : 소프트웨어 획득

 

CMMI (Capability Maturity Model Integration)

- 다섯개의 기존 모델을 통합


CMM의 정의

- 소프트웨어 프로세스를 정의, 구현, 측정, 제어 및 개선하는 동안에 소프트웨어 조직의 프로세스 발전 단계를 기술

- 소프트웨어 프로세스 개선 전략을 수립하는데 지침서로 활용

* 현재 소프트웨어 프로세스 능력의 결정

* 소프트웨어 품질 및 프로세스 향상에 있어 가장 중요한 문제의 식별

 

CMM은 지속적인 개선에 기반

- 진화적이지만 혁신적이지 않은 변화

- SW-CMM 프레임워크는 5단계의 진화 단계(또는 성숙도 레벨)로 구성

- 성숙도 수준은 보다 성숙된 소프트웨어 프로세스 획득하기 위해 잘 정의된 진화적인 고원

 

CMM의 역할

- 목표 설정

- 프로젝트 개선을 위한 우선순위 식별

- 조직의 프로세스 능력 판단

- 프로젝트들의 향후 프로세스 능력 예측

- 산업계에서의 현행 프로세스 수준 비교

 

CMM의 성숙도 수준 (Maturity Level)

Level 1: 초기 수준

Level 2: 반복 수준 .. 훈련된 프로세스

Level 3: 정의 수준 .. 표준화된 프로세스

Level 4: 관리 수준 .. 예측 가능한 프로세스

Level 5:  최적화 수준 .. 지속적인 프로세스 개선

 

Level 1 : 초기 수준 (Inital Level)

- 소프트웨어 프로젝트의 관리 능력이 부족하고 프로세스 상의 불안정성

- 일부 프로세스가 정의되어 있고, 프로젝트의 성공이 특정한 개인의 노력(능력, 지식)에 의존

- 초기 수준의 조직은 소프트웨어 프로세스가 작업의 진행 상태에 따라 끊임없이 변경됨

- 일정, 예산, 기능, 제품 품질에 관한 예측이 어려움

 

Level 2 : 반복 수준 (Repeatable Level)

- 기본적인 프로젝트 관리 프로세스의 확립 및 문서화 

    - 요구사항 관리, 프로젝트 계획, 추적과 감독, 외주 관리

    - 비용, 스케줄 및 기능성 추적

    - 문제점 파악 및 해결

- 새로운 프로젝트를 계획하고 관리하는 것은 과거의 유사한 프로젝트 경험에 의존

    - 이전에 성공한 프로젝트와 유사한 프로젝트를 성공적으로 반복 수행 가능

- 기본적인 소프트웨어 형상 관리 및 품질 보증 활동을 수행

 

Level 3 : 정의 수준 (Defined Level)

- 관리와 공학적인 활동에 대한 소프트웨어

- 조직에서 공식적으로 사용하는 표준 소프트웨어 프로세스 정립

- 정립된 프로세스는 소프트웨어 프로젝트 관리자와 전문 개발자가 더욱 효과적으로 프로젝트를 수행할 수 있게 해줌

 

Level 4 : 관리 수준 (Managed Level)

- 소프트웨어 프로세스와 제품 품질에 대한 상세한 측정값을 수집

- 일관성있게 잘 정의된 측정 수단 제공

- 정량적인 품질 목표 정립과 통계적 품질 관리 수행

 

Level 5 : 최적화 수준 (Optimizing Level)

- 프로세스 능력 향상을 위하여 프로세스를 평가하고 지속적인 개선 활동을 수행

- 프로세스, 혁신적인 아이디어 및 기술로부터 피드백을 통하여 최적화

- 이미 알려진 결합의 재발 방지


핵심 프로세스 영역 (Key Process Area)

핵심 프로세스 영역은 수준에 도달하기 위해 다루어야 할 프로세스 영역

- 각각의 성숙도 수준에 여러 개의 핵심 프로세스 영역 지정

- 핵심 프로세스 영역은 해당 성숙도 수준에 도달하기 위한 필수 요구사항

- 각각의 핵심 프로세스 영역에 핵심 실천 사항(Key Practices)들을 나열

- Level 1인 초기 수준에 대한 핵심 프로세스 영역의 정의는 없음

 

Level 2 : 반복 수준 핵심 프로세스 영역

프로젝트 관리에 초점

- 요구사항 관리 (Requirement Management)

    - 고객과 고객의 요구사항에 대한 소프트웨어 프로젝트 사이에서 공통의 이해를 확립

    - 공통의 이해는 소프트웨어 프로젝트에 대한 계획과 관리에 대한 기반을 제공함

- 소프트웨어 프로젝트 계획 (Software Project Planning)

    - 소프트웨어 공학의 수행과 소프트웨어 프로젝트 관리를 위한 합리적인 계획을 수립

    - 해야 할 일, 요구되는 자원, 사용될 방법, 이에 따르는 활동들을 포함

- 소프트웨어 프로젝트 추적과 감독 (Software Project Tracking and Oversight)

    -프로젝트의 수행이 계획에서 벗어날 때 효과적인 조치를 취할 수 있도록 진행 과정에 충분한 가시성 제공

    - 문서화된 추정이나 의지, 계획에 맞춰 소프트웨어 프로젝트의 성취와 결과를 추적/검토하고 실제 성취와 결과에 따라 계획을 적용

- 소프트웨어 외주 관리 (Software Subcontract Management)

    - 자격이 있는 소프트웨어 외주 계약자를 선정하고 효과적으로 관리

- 소프트웨어 품질 보증 (Software Quality Assurance)

    - 품질 요건들을 충종시키기 위하여 사용되는 운영 기법 및 활동

    - 프로세스와 산출물에 대하여 충분한 가시성을 갖도록 프로젝트를 관리함

- 소프트웨어 형상 관리 (Software Configuration Management)

    - 시스템의 형상 항목들을 정의하고 식별하고, 시스템의 생명 주기동안 항목들을 제어하며, 항목들에 대한 변경요구의 처리 및 형상 항목들의 상태를 기록하고 완전성 증명

    - == 버전 관리 .. 소프트웨어 산출물 문서를 관리

 

Level 3 : 정의 수준 핵심 프로세스 영역

프로젝트와 조직 차원의 문제를 다룸

- 조직 프로세스 초점 (Organization Process Focus)

    - 조직의 전체 소프트웨어 프로세스 능력을 향상시키는 소프트웨어 프로세스 활동에 조직 상의 책임을 확립

- 조직 프로세스 정의 (Organization Process Definition)

    - 유용한 소프트웨어 프로세스를 확립하고 유지함으로서 프로젝트들에 걸쳐 프로세스 효율성을 향상시키고 조직의 장기적인 이익 도모

- 훈련 프로그램 (Tranining Program)

    - 개인의 기술과 지식을 고양시켜 각자의 역할을 효율적이고도 효과적으로 수행하도록 함

- 통합 소프트웨어 관리 (Integrated Software Management)

    - 소프트웨어 공학 및 관리 활동들을 집약적이고도 정의된 소프트웨어 프로세스에 통합하는 것

    - 해당 소프트웨어 프로세스는 조직 프로세스 정의에 기술되어 있는 조직의 표준 소프트웨어 프로세스 및 관련된 유용한 프로세스로부터         목적에 부합되게 조정된 것임

- 소프트웨어 제품 공학 (Software Product Engineering)

    - 정확하고 일관성 있는 소프트웨어 제품을 효율적이고도 효과적으로 생산하기 위한 모든 소프트웨어 공학 활동들이 통합되어 있는 잘            정의된 공학 프로세스를 일관성 있게 수행하는 것을 목적으로 함

    - 프로젝트의 기술적인 활동들(요구사항분석, 설계, 코딩, 테스트)을 말함

- 그룹 간 협력 (Inter Group Coordination)

    - 하나의 그룹이 다른 그룹의 활동에 적극적으로 협력할 수 있는 방법을 확립함으로써 프로젝트에 고객의 요구사항을 더욱 효과적이고            효율적으로 만족시켜 줄 수 있도록 함

- 동료 검토 (Peer Review)

    - 소프트웨어 개발 과정에서 결함을 가능한 한 초기에 효율적으로 제거

    - 결함이 발생한 이후에 제거하려고 하기보다는 예방을 해야 함

 

Level 4 : 관리 수준 핵심 프로세스 영역

소프트웨어 프로세스와 개발하는 제품을 계량적으로 관리하는데 초점

- 계량적 프로세스 관리 (Quantative Process management)

    - 소프트웨어 프로젝트의 프로세스 수행을 계량적으로 제어하는 것을 목적으로 함

- 소프트웨어 품질 관리 (Software Quality Management)

    - 소프트웨어 제품이 갖는 품질에 대해 계량적으로 관리하고, 특정한 품질 목표를 성취하는 것을 목적으로 함

 

Level 5 : 최적화 수준 핵심 프로세스 영역

조직과 프로젝트가 측정 가능한 지속적인 소프트웨어 프로세스 개선을 구현해야 함

- 결함 예방 (Defect Prevention)

    - 결함의 원인을 식별하고 재발을 방지

- 기술 변경 관리 (Technology Change Management)

    - 유용한 새로운 기술(도구, 방법, 그리고 프로세스)을 식별하고, 규칙적인 방법에 따라 조직에 해당 기술을 적용

    - 지속적으로 변화하는 기술 환경에 대응하여 효율적으로 기술 혁신을 수행하는 것에 초점

- 프로세스 변경 관리 (Process Change Management)

    - 조직에서 사용하는 소프트웨어 프로세스를 지속적으로 개선시키는 것을 목적으로 함

    - 소프트웨어 품질 향상, 생산성 증가, 그리고 제품 개발을 위한 주기 시간을 단축시키려는 의도를 포함


핵심 실천 사항 (Kep Practice)

- 각각의 핵심 프로세스 영역의 목표를 달성하기 위해 필요한 핵심 실천 사항을 상세히 기술

- 핵심 실천 사항은 핵심 프로세스 영역의 효과적인 구현과 규정에 도움을 주는 활동 및 인프라를 기술함

- 핵심 실천 사항은 어떻게 해야 하는가가 아닌 무엇을 해야 하는가를 기술함

 

핵심 실천 사항들은 5가지 공통 특징으로 분류됨

- 수행 의지 (Commitment to perform)

- 수행 능력 (Ability to perform)

- 수행 활동 (Activites performed)

- 측정과 분석 (Measurement and analysis)

- 구현 검증 (Verfying implmentation)


단계 1 > 2 : 3년 내지 5년 소요

단계 2 > 3 : 1.5년 내지 3년이 소요

각 성숙도 단계에 대해 SEI는 조직이 다음 성숙도 단계에 도달하려는 노력의 대상으로 KPA(Key Process Area)들의 시리즈를 강조

'소프트웨어공학' 카테고리의 다른 글

Software Design  (0) 2024.12.13
Requirement Engneering  (0) 2024.12.13
Extreme Programming (XP)  (0) 2024.12.12
User story  (0) 2024.12.02
MIS, CRM, ERP, SCM  (0) 2024.10.29