메뉴보기

[채성수의 소프트웨어 인사이드] 소프트웨어는 프로젝트로 개발된다

발행일자 | 2020.03.04 00:00
[채성수의 소프트웨어 인사이드] 소프트웨어는 프로젝트로 개발된다

프로젝트의 정의는 뚜렷한 목표를 가지고 한정된 기간 내에 일을 완수하는 임시적인 업무를 말한다. 영원불변이 아니고 주기적이고 반복적인 일도 아니다. 잠시 동안만 시간을 내서 목표를 위하여 일을 진행할 뿐이다. 시간이 정해져 있기 때문에 요구된 시간 내에 일을 완료해야 한다. 그래서 프로젝트에 참여하는 사람들은 스트레스를 많이 받는다. 오늘 할 일을 오늘 하지 못하면 납기가 지연되기 때문이다.
 
소프트웨어는 체계적으로 개발되어야 하기 때문에 계획을 수립하여 추진된다. 초기의 계획은 상세하지 않다. 고객의 요구 사항이 명확하지 않기 때문에 상세한 계획을 수립할 수 없다. 분석을 통하여 요구사항이 명확하게 정의가 되면 상세한 계획을 수립할 수 있다. 요구사항이 명확하지 않았던 프로젝트 초기에 시작 일정과 종료 일정을 수립하고 추진된 프로젝트는 요구사항의 내용에 따라 시간이 부족할 수도 있다. 이런 상황이 발생하면 요구사항을 조정하는 일을 하거나 일정을 조정하는 일을 해야 한다. 그러나 고객에게 일정 조정을 요청하거나 요구사항의 범위를 조정하는 일은 만만치 않은 일 중의 하나이다. 잘 받아들여지지 않는 경우가 비일비재하다.
 

프로젝트를 추진하는 팀은 이러한 문제점이 발생하는 것을 경험적으로 잘 알고 있다. 경험 많은 프로젝트 관리자들은 항상 최악의 경우를 대비하여 계획을 수립하고 싶어한다. 그래서 항상 프로젝트 일정을 수립할 때는 여유 시간을 포함시킨다. 일정을 빡빡하게 수립하여 프로젝트를 진행하다 나중에 문제가 발생할 때 시간 부족으로 고생할 소지가 많기 때문이다. 시간을 더 잡아 둔다는 것은 비용을 더 쓰겠다는 말과 같다. 여유로 잡아 두는 시간은 회사로써 보면 손실 비용이다. 돈을 더 쓰겠다는 것은 경영자들과 고객에게는 쉽게 용납이 되는 일이 아니다. 계획 단계에서 가장 어려운 점이 이것이다.
 
프로젝트를 효과적으로 추진하기 위하여 조직을 체계화하여 일을 과학적으로 처리하는 것이 프로젝트 관리이다. 관리의 핵심은 계획을 수립하여 실제의 일들이 계획을 달성했는지 확인하고 잘 된 부분과 잘 안된 부분을 구분하여 잘 안된 부분에 대해서는 계획을 재수립하여 달성할 수 있도록 하는 것이다. 프로젝트 관리는 일반적으로 계획, 실행, 통제의 경영 활동과 동일한 단계를 거치게 된다.
 

[채성수의 소프트웨어 인사이드] 소프트웨어는 프로젝트로 개발된다

프로젝트를 추진하는 단계는 크게 5가지로 구분된다. 프로젝트 시작 혹은 착수, 프로젝트 계획, 프로젝트 실행, 프로젝트 통제 그리고 프로젝트 종료이다. 프로젝트 시작은 의사결정자의 공식적인 승인으로 시작한다. 제안서의 제출로 시작하는 경우가 많이 있다. 기업 내부의 프로젝트라면 사업 추진 계획 혹은 투자심의를 통하여 시작한다. 프로젝트 계획은 실행을 위한 세부적인 계획을 수립하는 단계이다. 프로젝트 계획에 따라 사람과 자원이 투입되어 일을 진행하며 이를 프로젝트 실행이라고 한다. 프로젝트는 최종적으로 프로젝트 관리자에 의해서 통제가 된다. 통제는 계획과 실행 결과의 차이를 확인하여 계획을 새로 수립할 수 있도록 모니터링하는 것을 의미한다.
마지막으로 프로젝트 종료 단계에서는 완료한 프로젝트를 평가하며, 모든 프로젝트 활동을 마무리하고 고객에게 결과를 인계한다. 프로젝트는 계획, 실행, 통제 활동 중에 중단될 수 있다. 기업 내부의 변심, 외부의 환경 변화, 목표의 변경, 기술의 변화, 추진의 미비 및 결과의 실패 예상 등 다양한 원인에 따라 중단된다. 우리는 시작한 프로젝트가 종료 할 때까지 지속되어야 하는 것이 아님을 항상 인식해야 한다.
 
프로젝트 관리를 위한 프로세스는 여러 가지가 있다. 예를 들면 범위관리, 일정관리, 품질관리, 자원관리, 위험관리, 의사소통관리 등이 있다. 규모가 작은 프로젝트임에도 불구하고 관리 프로세스의 모든 것을 적용하는 것은 낭비이고 힘에 겨울 수 있다. 모든 프로세스를 다 관리할 수 없다면 최소한으로 적용하여 효과를 볼 수 있도록 하는 지혜가 필요하다. 프로젝트 관리자의 경험에 따라 중요하게 생각하는 프로세스가 있다. 고객 관계를 중요하게 생각하는 사람이라면 의사소통관리를 중요하게 생각할 것이고, 실패를 경험한 사람이라면 위험관리를 중요하게 생각할 것이다. 납기 지연의 경험이 있었다면 일정관리를 중요하게 생각할 것이다. 소프트웨어에서 문제가 많이 생겼다면 품질관리를 상대적으로 중요하게 생각할 것이다. 저마다의 경험에 따라 어떤 프로세스를 더 중요하게 생각할 지가 갈리는 것이다.

채성수 chaesungsoo@iabacus.co.kr 소프트웨어개발 전문기업 ㈜애버커스 사업총괄부사장. 엘지전자와 엘지씨엔에스(LG CNS)에서 다년간 컴퓨터 관련 사업을 추진한 전문가이다. 국가 공인 최고 자격인 정보관리기술사로 대학에서 컴퓨터 관련 연구를 하였다. ‘속도경쟁사회’, ‘코딩을위한컴퓨팅사고력’, ‘소프트웨어 인사이더’ 등 6권의 책을 저술하였으며 넥스트데일리의 컬럼니스트로 활동하고 있다.

(*이 칼럼은 Nextdaily의 편집방향과 다를 수 있습니다.)

칼럼

많이 본 기사

실시간 기사