2016년 2월 5일 금요일

프로젝트 위험과 이슈에 대한 개념

SW개발 프로젝트의 수행에 있어서 위험요소는 지금까지 수행된 모든 프로젝트에 내제 되어 있음에도 불구하고 위험요소가 지닌 불확실성(발생가능성, 영향도, 대안의 적합성 등)으로 인하여 위험요소들을 추적하고 관리하는 것은 매우 어려운 현실이다.

SW개발이 단순 패키지가 아닌 통합시스템이라는 부분까지 확장되는 현실에서 프로젝트 수행의 규모와 복잡성이 점점 커지고 있다. 대규모 개발조직이 장기간에 걸쳐 다양한 구성요소들을 개발, 통합하게 되면서 각각의 위험요소들이 기하급수적으로 증가하게 되고 프로젝트 수행시 효과적인 위험관리가 프로젝트 성공의 핵심요인으로 부상하게 된 것이다.

프로젝트 관리자가 뛰어난 사람인지 아닌지를 판단할 수 있는 방법은 여러 가지가 있다. 그중 하나가 위험관리에 대한 부분이다. 위험에 대한 정의가 명확한 편인데도 불구하고 현장에서는 위험(Risk)과 이슈(Issue)에 대한 구분이 어려운 상황이다.

< 위험과 이슈 >

위험은 아직 발생하지 않은 확률적 사건이고 이슈는 발생해서 프로젝트의 발목을 잡고 있는 문제점이다. 결국 위험이 발견되면 이슈가 된다고 볼수 있다. 이것이 위험관리와 이슈관리를 혼동하는 주요 이유이기도 하다. 이러한 위험은 관리되어야 한다. 위험이 추상적인 상태에서는 문제로 되기전(이슈화 되기 전)에 대응책을 생각해 내는 과정인 것이다.

새로운 프로젝트 일정관리 소개

일정관리는 프로젝트를 납기일 이내에 완료하기 위한 계획수립과 통제활동을 의미한다. 모든 활동의 시작일과 종료일이 정의된 것을 일정이라고 부른다. 또한 일정은 달력에 표시할 수 있어야 한다가 전제다.

프로젝트 실패의 요인 중 하나인 납기를 통제하고 프로젝트 갈등과 품질, 비용, 일정의 상관관계를 고려했을 때 가장 통제하기 어려운 자원중 하나이며 기간 산정의 불확실성, 자원의 제한성으로 인해 잘못된 가정을 수립할 확률이 높은 분야다.


SW개발 프로젝트의 일정관리는 프로젝트 관리에서 가장 기초적이고 관리적 요소가 가장 많이 들어가는 부분이다. 현장에서의 일정관리는 도구 또는 파일을 통해 진척사항을 관리하고 있지만 세부 태스크별 활동까지는 연계하고 있지 못하고 있다. 그렇기 때문에 현장에서 가장 이슈가 되고 있는 것은 일정관리의 진척율 또는 진행상황이 객관적이지 못하고 주관적으로 표기되는 것이다.

현장에서 사용하는 일정관리는 대부분 아래의 그림처럼 나타내어 질 것이다. 일정관리의 대표적인 도구는 마이크로소프트사의 MSPROJECT로 도구를 사용하던 엑셀을 활용하던 대부분의 표현방식은 아래와 같다.

< 현장에서 사용하는 일정관리 시트(예시) >

하나의 총괄시트에 WBS나 활동들을 기준으로 나열하는 방식으로 전체적인 일정관리가 쉽지 않다. 도구에 따라서 해당 활동을 누르면 자원과 담당자들이 기술되기도 하지만 도구를 활용한다는 측면에서 한눈에 보고 관리하기가 쉽지 않다. 특히나 보여주기식 관리 시트라 실제 프로젝트에서 활용한다기보다는 발주자나 관리자에게 보고하기에 적합하게 구성되어 있다.

완벽한 형태의 일정관리라기 보다는 기존의 방식에서 조금더 개선된 방식이라고 보면 될 것 같다. 새로운 방식을 이용해 보고 싶거나 이러한 스케줄링 방식을 활용하고 싶은 엔지니어들은 edwardtufte.com을 통해 확인할 수 있다.



일정관리에 있어서 가장 좋은 방법은 유사사례에 대한 벤치마킹과 일정관리 SW공학도구의 적절한 활용이 프로젝트 성공의 열쇠라고 말할 수 있다.

SW개발 비용의 산정

현장에서의 비용산정은 아직도 공수 아니 M/M 방식의 투입인력 카운트에 의지하여 진행되고 있다. 미래창조과학부(구. 정보통신부)의 권고에 따라 기능점수 방식을 활용한 것이 벌써 9년(’04년 2월, 구. 정보통신부 고시 제 2004-8호)이 지났다. ’12년 2월 SW사업 비용산정을 기능점수로 산정하라는 권고가 ‘SW사업대가의 기준 일몰제’에 의해 고시 폐지되고 민간이양 되었지만 기획재정부의 예산편성지침에 매년 SW사업 예산편성시 기능점수를 권고하고 있어 공공부문에서는 기능점수 사용권고가 아직 유효한 상태다.

과거 제 살 깎기 경쟁에 내몰린 SW업계의 애로 해소차원에서 사업대가기준 산정 주체를 정부에서 민간으로 바꾸었지만 개선(안)을 제시하지 못해 업계혼란이 가중되고 있다. SW사업대가기준이 민간으로 이양되어 신뢰성이 떨어져 발주기관과 사업자간의 비용산정시 갈등만 더 커졌다는 것이 업계의 주장이다.

그럼에 불구하고 비용산정을 수행해야 하는 현장에선 어떻게 반응하고 있을까? 일부의 경우긴 하겠지만 사업대가기준이 없어졌다는 것을 빌미로 발주자에게 그들이 사용하고 있는 투입인력방식을 제시하고 있는 실정이다. 투입인력 방식이 나쁜 것은 아니다. 투입인력 방식을 도출하는 과정에 문제가 있기 때문에 기능점수방식을 권고한 것이다.


현장에서의 투입인력방식은 단순 인력 카운트만을 수행하고 투입인력별 노력(effort)을 산정하지 않는데 문제가있다. 'effort'를측정하는단위가바로기능점수인것이다. effort를측정하는 단위는 본수, 스텝수, 코드라인, 기능점수 등으로 분류되는데 본수와 스텝수 방식은 주관적인 요소가 포함되고, 코드라인방식은 개발자 스타일에 따라 차이가 나게 되므로 국제 표준인 기능점수를 권고하게 된 것이다.

비용산정 모델의 측면에서 보면 인력수는 결과이지 과정일수 없다. SW개발 비용의 산정은 규모파악을 통한 소요공수와 투입자원 및 소요기간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 것이다. 발주자가 프로젝트 발주시 예정가격의 산정과 개발업자가
수주한 개발용역에 대하여 적정한 대가를 산정할 수 있는 기준으로 단위작업공수(비용)를 통한 총공수(총비용)를 산정하게 되는 것이다.

SW개발비를 산정할 때는 문제의 복잡도, 시스템의 크기, 신뢰도에 따라 프로젝트 요소를 고려하고 인적자원과 하드웨어자원에 대한 자원요소, 개발자 능력과 방법론에 따른 생산성 요소들도 고려하여야 한다.

< SW비용산정 모델시 고려요소 >


SW개발비용의 산정은 하향식 산정방법과 상향식 산정방법으로 나뉜다. 현장에서 가장 선호하는 방법은 하향식 산정방법으로 경험과 전문지식이 많은 개발자들이 참여한 회의나 토론을 통해 산정하는 방식이다. 하향식 산정방법은 전문가의 판단(expert judgment)과 델파이(Delphi)식 산정방법이 있지만 도출된 결과를 객관화하거나 정량화하기 힘들어 SW개발에서는 대략의 비용 사이즈를 도출할 때 많이 사용한다.

상향식 산정방법은 하향식 산정방법의 비과학성을 보완하기 위하여 개발할 시스템을 WBS 등으로 정의하고 각 구성요소에 대한 산정을 독립적으로 수행한 후 이를 합산하는 방식을 의미하며, 국내에서 가장 많이 활용되었던 SW사업대가기준에서 제시하고 있는 코드라인, 스텝수, 본수, 기능점수(FP) 등이 대표적인 방법이다.