brunch

You can make anything
by writing

C.S.Lewis

by 김병호 Oct 17. 2019

75. 상품개발 계획수립과 추정(1)

성공적인 소프트웨어 신상품 개발가이드

상품개발 계획서는 어떤 목표(범위, 일정, 예산)를 어떻게(인력, 의사소통, 조달, 리스크 관리) 달성하겠다는 것을 정의한 문서이다. ‘목표’는 수치로, ‘어떻게’는 절차로 정의한다. 어떻게는 기존에 존재하는 템플리트나 샘플을 참조하여 수정하면 되지만, 목표는 프로젝트 관리자와 팀원이 결정해야 한다. 물론 현실에서 목표는 주어지는 경우가 많다.  주어진 업무를 완료하기 위한 기간과 MM는 추정의 영역이다. 추정의 목적은 점쟁이처럼 결과를 맞추는 것이 아니라 프로젝트 목표가 통제 가능한 수준인지를 판단하는 것이다. 이번 섹션에서는 상품개발 계획 시 적용할 수 있는 추정기법과 추정 시 유의할 내용을 설명한다. 


1) 상품개발 일정과 개발규모의 추정기법


하향식 추정(Top down estimating) 

상품개발 계획에서 추정 대상은 상품요구사항 규모, 투입MM, 개발기간이며 상품개발 계획 초기에는 하향식으로 추정하는 것이 일반적이다. 하향식 추정의 순서는 다음과 같다.

① 개발할 상품 요구사항의 전체규모를 추정한다. 하향식 추정에서는 요구사항 규모의 평균과 요구사항 개수를 곱하거나, 개별 상품 요구사항의 규모를 추정하여 합한다.

② 프로젝트 팀의 생산성을 감안하여 주어진 업무를 완료하기 위한 투입MM를 추정한다. (투입 MM = 요구사항 규모/생산성)

③ 투입 가능한 인원을 감안하여 전체 개발기간을 추정한다. ‘기간=투입MM/인원’이지만 적정 인원보다 인원수가 많아지면 의사소통, 시행착오, 관리비용을 추가하여 기간을 조금 늘린다. 하향식 추정은 프로젝트 관리자가 그 동안의 경험을 바탕으로 짧은 시간 내에 프로젝트 투입 MM 또는 개발기간을 추정할 때 주로 활용한다

하향식 추정은 상품개발계획 초기에 주어진 정보로 빠른 시간 내에 투입MM와 개발기간을 추정하기에 적합하지만 정확도는 낮은 편이다. 왜냐하면 각 개별작업의 난이도와 크기에 대한 정보를 전혀 고려하지 않았고, 작업 간의 수행순서, 수행자원의 제약 등을 고려하지 않았기 때문이다.


상향식 추정 (Bottom up estimating) 

상향식 추정은 팀원들이 추정한 각 작업의 기간, MD(또는 MM)를 취합하여 전체 프로젝트의 MM와 개발기간을 추정 할 때 활용한다.

상향식 추정의 작업순서는 아래 그림과 같다. 

상향식 추정의 순서는 다음과 같다.


① 개별 상품 요구사항의 규모를 추정한다.

② 개별 요구사항을 수행할 자원(들)의 역량을 확인한다.

③ 개별 요구사항 개발을 위한 자원의 양(예: MD, Man day)을 계산한다.

④ 자원의 가용성을 고려하여 요구사항 구현을 위한 개발기간을 결정한다. 예를 들어 자원의 양이 10MD이고 100% 투입 가능한 자원 1명이면 개발기간은 2주(Working day 10일)이고 50% 투입 가능하면 4주(Working day 20일)이 된다.

⑤ 개별 요구사항의 작업순서를 감안하여 전체 개발기간을 결정한다. 개발기간이 중첩되는(즉, 병행 개발하는) 요구사항이 많을수록 전체 개발기간은 줄어든다.


역할자가 1명만 투입되는 경우에는 프로젝트 기간 동안 투입비율을 고려하여 MM를 추정하지만 (프로젝트 관리자, 상품기획) 역할자가 개발자, 테스터와 같이 많이 투입되는 경우라면 생산성을 고려하여 MM를 추정한다. 

상향식 추정의 이해를 돕기 위해 계층적으로 정리하면 그림*와 같다.

상향식 추정 시 비용이나 MM는 최하위 작업의 비용이나 MM를 더하면 되지만,개발기간은 중첩을 고려하여 결정해야 한다.   


상향식 추정은 팀원들이 추정한 각 작업의 기간, MD(또는 MM)를 취합하여 전체 프로젝트의 MM와 개발기간을 추정할때 활용한다.


상향식 추정과 하향식 추정을 비교하면 아래 표와 같다.    


모수추정 (Parametric estimating)

조직에 축적된 유사 프로젝트의 과거 실적데이터를 기반으로 함수식을 만들어 추정하는 방식이다. 예를 들어 작업의 수행기간을 도출하기 위한 함수는 다음과 같다. 모수추정은 상향식 추정, 하향식 추정 모두 사용될 수 있지만 주로 하향식 추정에 많이 활용한다.


작업 수행기간 = (업무량 / 인당 생산성) / 투입인원


모수추정의 정확성을 높이려면 다음에 유의해야 한다.


• 모델 수립에 사용한 데이터의 품질이 높아야 한다

모수추정의 모델은 과거 데이터 분석을 통해 만들어진다. 따라서 모델 수립에 사용된 데이터의 품질이 높을수록 모델의 품질(정확성)이 높아진다.


• 변수를 객관적으로 측정할 수 있어야 한다

예를 들어 팀원의 협업과 팀웍은 프로젝트 생산성에 영향을 미치지만 측정하기는 힘들다. 반면 개발자의 역량은 초급, 중급, 고급으로 구분하여 개발생산성을 추정할 수 있다.


• 신상품 개발의 유형별로 추정모델을 개발한다.

대형의 신규상품 개발 프로젝트들로부터 축적된 데이터를 소형의 기능개선 프로젝트에 적용하면 잘 맞지 않을 수 있다. 또는 유형이 다른 다양한 신상품 개발 프로젝트의 데이터를 모두 합쳐서 모델을 만들면 실제로 존재하지 않는 평균의 추정이 된다.  이런 경우에는 모델을 신상품 개발유형 또는 규모별로 나누는 것이 바람직하다.


- 3점 추정 (Three-point estimating)

상향식 추정 시 작업내용을 잘 알면 개발기간의 추정치를 하나의 값으로 이야기할 수 있지만 익숙하지 않은 작업은 하나의 추정치로 말하기 쉽지 않다. 이때는 보통 3개의 시나리오(비관, 낙관, 보통)로 나누어 추정하는 것도 대안이 된다. 예를 들어 새로운 개발도구, 새로운 방법론을 사용할 때 3점 추정을 적용할 수 있다.

3개의 추정치를 활용하여 평균을 계산하는 공식은 다음과 같다.


평균 = (P + 4M + O) / 6

(Pessimistic : 비관치,  Most likely : 보통치, Optimistic : 낙관치)


2) 추정이 불확실한 이유  


추정은 불확실성을 다루는 활동이다. 물론 경영층은 불확실성을 반영하여 개발기간이나 투입 MM를 구간(range)으로 이야기하는 것을 좋아하지 않는다. 프로젝트의 기간, 공수 추정에 영향을 주는 변수는 많으며, 변수의 수와 영향력의 크기에 따라 불확실한 정도도 달라진다. 하나의 값으로 정확한 프로젝트 기간, 공수 추정치를 말하는 것은 서울에서 부산까지 가는 데 걸리는 시간을 정확하게 맞히려고 시도하는 것과 같다. “서울에서 부산까지 승용차로 얼마나 걸릴까요?”라고 물어보면 보통사람이라면 4시간에서 5시간 사이를 이야기할 것이다.(네비게이션의 도착 예정시간을 보지 않는다고 가정하자) 신상품 개발의 추정은 서울에서 부산까지 승용차로 가는 시간을 추정하는 것보다는 훨씬  불확실한데 정확한 하나의 값을 요구하는 경우가 대부분이다. 추정이 정확하다는 것은 추정이 결과와 차이가 작다는 것인데, 그러려면 추정뿐 아니라 실행 및 통제를 제대로 수행하여야 한다. 프로젝트의 추정치를 물어보는 질문에는 아래와 같이 구간이나 확률의 개념으로 답변하는 것이 바람직하지만 현실에서 경영층을 대상으로 적용하면 4개월로 확정되는 부작용(?)이 있을 수 있다. 

“프로젝트 완료를 위해 필요한 기간은 4~5개월이며, 4개월 안에 완료할 가능성은 40퍼센트 정도입니다.” 


추정이 불확실한 대표적인 이유는 다음과 같다.  


추정의 어려움 

추정은 원래 어렵다. 추정하는 사람이 해당 업무 도메인에 대한 전문지식, 기술에 대한 지식이 없는 경우 추정의 불확실성은 더욱 높아진다. 또한 추정하는 업무 규모가 큰 경우에도 추정의 오차가 높아진다. 


프로젝트 팀원 및 프로젝트 관리자의 역량

추정은 미래의 실적을 예상하는 작업이며, 실적은 프로젝트의 실행 및 통제에 따라 달라진다. 또한 실행 및 통제에 영향을 미치는 요인은 개별 팀원의 역량, 팀워크, 프로젝트 관리자의 역량, 조직의 프로세스 성숙도 수준 등 다양하다. 상품개발 조직이 전담으로 상품개선을 지속적으로 하는 경우 기간과 투입MM에 대한 예측가능성은 높지만, 신규상품 개발을 위한 신규 팀을 구성했을 경우에는 팀 생산성을 추정하기 어렵다.


변하기 쉬운 요구사항

상품개발 단계를 진행하면서 상품 요구사항의 불확실성은 감소한다. 스티브 맥코넬은 이를 ‘불확실성의 원뿔 (cone of uncertainty)’이라고 하였다. 그림 *과 같이 프로젝트 개념을 잡는 초기에는 추정의 오차가 무려 16배가 됨을 알 수 있다.

3) 추정, 공약, 계획의 차이  

상품관리자와 프로젝트관리자는 구간 추정이 아닌 점 추정을 요청 받는 것이 현실이다. ‘부산까지 몇 시간 걸리는가’가 추정의 문제라면 ‘부산에 몇 시까지는 도착하겠다’는 공약(commitment)의 문제이다. 추정이 의욕치를 배제한 객관적인 분석의 과정이라면, 공약은 의욕치를 포함한 주관적인 약속의 과정이다. 이런 관점에서 계획은 공약을 달성하기 위한 방안이다. 프로젝트에서 중요한 것은 공약이며, 추정은 공약을 위한 과정이다. 프로젝트를 실패했다는 것은 공약을 지키지 못한 것을 의미하는데, 공약의 실패는 추정의 실패일 수도 있지만 실행의 실패일 수도 있다. 이상을 정리하면 아래 그림과 같다.


4) 상충되는 제약조건의 해결방안 

신상품 개발의 대표적인 제약조건은 범위, 일정, 자원(예산)인데 이는 추정의 대상이 되기도 한다. 제약조건을 해결하기 위한 방법은 다음 세 가지가 있다.


① 자원 제약하에 주어진 업무를 완료하기 위한 일정을 추정

가용한 자원이 제한적인 경우 주어진 자원으로 주어진 업무를 완료할 수 있는 기간을 추정하는 방법이다. 출시일정의 중요도가 낮은 상품개발 시 적용 가능하다.


② 일정제약하에 주어진 업무를 완료하기 위한 자원을 추정

주어진 업무를 주어진 일정 내에 완료하기 위해 필요한 자원을 추정하는 방법이다. 전략적으로 중요한 신상품의 최초 출시를 위해 자원을 집중하는 경우가 이에 해당한다.


③ 제한된 자원이 주어진 일정 내에 완료 가능한 업무를 추정

애자일 적용시 활용하는 추정방법이다. 상품 유지보수를 위한 전담 팀이 있고 매월 상품개선기능을 릴리즈 하는 경우가 이에 해당한다. 상품 요구사항의 우선순위에 따라 릴리즈 일정을 조정 가능할 때 적용한다. 전담 팀이 최선을 다할 것이라는 신뢰를 전제로 적용한다.


이상 세 가지 제약의 유형을 정리하면 아래 그림과 같다.

그러나 현실에서는 아래 그림과 같이 범위제약, 자원제약, 일정제약은 동시에 주어지는 경우가 많다. 일정제약으로 진행한다고 해도 프로젝트 관리자가 원하는 자원을 제공하는 경우는 드물다. 이때 제공되는 자원과 필요한 자원의 갭이 커지면 일차적으로는 잔업으로 버티다 결국 품질을 희생하게 된다.

품질을 희생하는 경우 고객이 알기 힘들고 눈에 드러나지 않는 기술부채(technical debt) 수준이라면 이슈화 되지 않고 버티겠지만, 출시에 문제가 생길 정도의 품질 이슈가 되는 경우 잔업으로는 버티기 힘들고 아래 그림과 같이 일정지연과 원가초과가 발생한다.


https://brunch.co.kr/@kbhpmp/160


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari