208. CMMI (Capability Maturity Model Integration) 프로세스 평가
⚠️ 이 문서는 기업이나 소프트웨어 개발사(SI 업체)가 코드를 얼마나 잘 짜는지 평가할 때, 똑똑한 천재 해커 1명이 있는지 없는지(개인의 역량)를 보는 것이 아니라, **회사 전체의 '일하는 방식(프로세스)'이 얼마나 체계적이고 통제 가능하며 계속해서 진화할 수 있는 튼튼한 공장 시스템을 갖추었는지를 1레벨(원시인)부터 5레벨(신)까지 5단계 성적표로 냉혹하게 매겨버리는 글로벌 품질 인증 마크인 'CMMI (역량 성숙도 통합 모델)'**을 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: "너희 회사, 우연히 운 좋아서 소프트웨어 성공한 거 아니야? 내일 다시 짜도 똑같은 고품질로 찍어낼 수 있는 '시스템(규정, 프로세스)'이 있어?"를 묻는 조직 프로세스 품질 감사표다.
- 가치: 미 국방부(DoD)가 엉터리 코드를 짜는 외주 업체를 걸러내기 위해 처음 만들었다. 지금도 공공기관 1,000억짜리 초대형 IT 프로젝트에 입찰하려면 "우리 회사는 CMMI Level 3 이상 인증을 받았습니다"라는 자격증이 필수 스펙으로 요구된다 (입찰 티켓).
- 기술 체계: 아무 룰 없이 주먹구구로 일하는 Level 1 (초기) 부터 시작해, 프로젝트 단위로 관리되는 Level 2 (관리), 회사 전체 표준이 잡힌 Level 3 (정의), 통계적 수치(데이터)로 관리하는 Level 4 (정량적 관리), 마지막으로 끝없이 자기 최적화(개선)를 이루는 Level 5 (최적화) 로 계단을 밟고 올라간다.
Ⅰ. 천재 한 명의 딜레마: 왜 프로세스 성숙도가 중요한가?
홍길동이 퇴사하면 회사가 망한다? 그것은 CMMI 레벨 1의 전형적인 하급 회사다.
- 영웅 중심(Hero-driven) 개발의 한계:
- A 회사는 천재 개발자 김 대리가 있다. 김 대리가 키보드를 잡으면 버그 하나 없는 완벽한 쇼핑몰이 1달 만에 뚝딱 완성된다.
- 그런데 김 대리가 이직했다. 남은 신입사원들이 코드를 이어받았는데, 메뉴얼도 없고 코드 룰도 없어서 쇼핑몰이 붕괴하고 프로젝트가 1년 지연되었다.
- CMMI의 탄생 철학 (Process Focus):
- 미 국방부는 수조 원어치 무기 소프트웨어를 발주하면서 깨달았다. "사람(천재)을 믿지 마라. 사람이 바뀌어도 일관된 품질을 붕어빵처럼 똑같이 찍어낼 수 있는 **'조직의 업무 프로세스(공정)'**가 훌륭한 회사를 찾아라."
- CMMI는 소스코드의 예쁨을 검사하는 게 아니다. 요구사항은 문서로 100% 남겼는지, 테스트 계획서는 누가 컨펌했는지, 버전 관리(형상관리)는 툴을 썼는지를 샅샅이 캐묻는 '행정 및 공정' 심사다.
📢 섹션 요약 비유: 할머니가 끓여주는 국밥집은 맛집이지만, 할머니가 돌아가시면 맛의 대가 끊깁니다(영웅 중심, Level 1). 반면 맥도날드는 갓 스무 살 된 알바생이 어제 입사해서 감자튀김을 튀겨도, 정확히 '기름 온도 180도, 3분 조리'라는 완벽한 메뉴얼(프로세스) 시스템이 작동하여 전 세계 어디서든 똑같은 품질의 맛을 찍어냅니다. CMMI는 이 회사가 동네 국밥집인지, 글로벌 맥도날드 시스템을 갖췄는지를 심사하는 미슐랭 가이드입니다.
Ⅱ. CMMI의 5단계 계단 (Maturity Levels)
레벨 3 이하는 대형 프로젝트에 명함도 못 내민다.
- Level 1: Initial (초기 / 원시인 단계):
- 상태: 룰(Process)이 아예 없다. 그냥 코딩부터 친다.
- 프로젝트 성공 여부는 오직 투입된 개발자의 그날그날 컨디션과 야근 체력에 달려있다. 혼돈과 주먹구구식 개발의 극치다. (인증 불가 수준)
- Level 2: Managed (관리 / 동네 구멍가게):
- 상태: 프로젝트 매니저(PM)가 등장했다.
- 요구사항 관리, 일정 계획, 형상 관리(Git) 등 기본적인 '프로젝트 단위'의 룰이 생겼다. 하지만 A 프로젝트와 B 프로젝트의 일하는 방식이 다 다르다. (회사 전체 룰은 없음)
- Level 3: Defined (정의 / 엔터프라이즈의 시작) $\star$:
- 상태: 회사 전사적(Organizational) 차원의 헌법(표준 프로세스)이 만들어졌다.
- 입찰에 참여하는 대형 SI 업체들의 필수 컷오프(Cut-off) 레벨이다. 어느 부서의 어떤 프로젝트를 하든 회사의 표준 템플릿(문서 양식, 코드 룰)을 가져다 쓰며, 품질 보증(QA) 부서가 존재한다.
- Level 4: Quantitatively Managed (정량적 관리 / 데이터 경영):
- 상태: "이번 프로젝트는 품질이 좋네요" 같은 뜬구름 잡는 소리를 죽여버린다.
- 무조건 데이터와 통계로 말한다. "이번 프로젝트의 버그 밀도는 1,000줄당 0.5개이며, 허용 편차 3 시그마 내에 완벽하게 통제(Control)되고 있습니다."라고 수학적 지표(KPI)로 관리한다.
- Level 5: Optimizing (최적화 / 신의 경지):
- 상태: 프로세스가 고여있지 않고 스스로 진화한다.
- 에러가 나면 그냥 고치고 끝나는 게 아니라, "어째서 이 에러가 났는가? 다음부턴 코딩 표준 룰 15번 항목을 이렇게 고치자!" 라며 지속적 개선(Continuous Improvement)과 최신 툴 자동화 도입을 자발적으로 해내는 궁극의 체질 혁신 조직이다.
📢 섹션 요약 비유: 목수에게 벤치를 만들어 오라 했습니다. Level 1은 그냥 눈대중으로 대충 자릅니다(길이가 맨날 다름). Level 2는 그 목수 혼자만 쓰는 줄자가 생겨서 자기 벤치는 똑같이 만듭니다. Level 3는 회사 차원에서 모든 목수에게 통일된 '센티미터(cm)' 표준 자를 나눠줘서 100명이 똑같은 벤치를 만듭니다. Level 4는 센티미터 오차가 $\pm 1mm$가 넘어가면 삐- 하고 불량이 쳐지는 정밀 통계 레이저를 달았습니다. Level 5는 벤치 만들다 다치면 아예 톱날 각도를 개선하여 영원히 피 안 나는 신형 톱으로 개조해 버리는(스스로 룰 개선) 극한의 생태계입니다.
Ⅲ. CMMI의 2가지 표현 방법 (Continuous vs Staged)
회사 전체를 평가받을 것인가, 아니면 딱 한 파트만 평가받을 것인가.
- 단계적 표현 (Staged Representation):
- 목적: "우리 회사 CMMI 레벨 3 땄어!"라고 외부 영업용(광고용) 자격증이 필요할 때 쓴다.
- 조직 전체의 모든 성숙도를 퉁쳐서 종합 성적표(레벨 1~5) 딱 1개로 도장을 찍어주는 방식이다. 제일 많이 쓰이는 대중적인 평가법이다.
- 연속적 표현 (Continuous Representation):
- 목적: 영업용이 아니라, 우리 회사의 어느 부서가 약한지 '내부 약점 수술용'으로 쓴다.
- 회사 전체를 하나로 보지 않고 영역별로 성적을 찢어서 매긴다.
- "우리 회사는 코드 형상 관리(Git) 영역은 레벨 4인데, 고객 요구사항 분석 영역은 아직 레벨 1 쓰레기 수준이네."
- 강점과 약점을 거미줄 그래프(레이더 차트)로 쫙 뽑아내어, 취약한 프로세스만 집중적으로 돈을 부어 치료할 수 있는 핀셋 진단법이다.
📢 섹션 요약 비유: 고등학생의 성적표 체계입니다. **단계적 표현(Staged)**은 전과목 평균을 내서 "수능 전체 등급 3등급!"이라고 대학교에 낼 한 장짜리 종합 성적표(자격증)를 떼주는 겁니다. 밖에서 자랑하기 딱 좋습니다. 반면 **연속적 표현(Continuous)**은 모의고사 세부 분석표입니다. "너 수학은 1등급(Level 4)인데, 영어 빈칸 추론이 7등급(Level 1)이구나. 이번 달은 영어 학원부터 다녀라"라고 내 약점을 정확히 짚어주어 성적을 끌어올릴 작전을 짜게 해주는 내부 오답 노트입니다.