• 제품정보
  • 고객센터
  • 제품문의
  • 솔루션링크 바로가기
  • top
  • Korea
  • English
  • 솔루션링크 바로가기
Home > PMS란? > 프로젝트관리

SW 프로젝트 관리

about Software PMS : 국내외 많은 IT조직에서 소프트웨어 프로젝트 관리 향상을 위하여 PMS(Project Management System)를 도입하고 있다. 

국내외 많은 IT조직에서 소프트웨어 프로젝트 관리 향상을 위하여, PMS(Project Management System)를 도입하고 있다.
이러한 추세는 단순한 수작업으로 SW 프로젝트 관리를 수행하기에는 체계의 복잡성이나 업무의 양 자체가 매우 크다는 것을 입증한다. 실제로 PMS와 같은 자동화 시스템 없이 다수의 프로젝트를 체계적인 관리 한다는 것은 현실적으로 불가능하다. 때문에 수많은 조직에서 앞다투어 PMS를 도입하고 있다.

그러나 PMS를 도입한 많은 IT 조직의 상당 수에서 PMS의 실질적 활용도가 저조한 것을 빈번히 목격할 수 있다. 소프트웨어 공학 역량이 선진국에 비하여 뒤쳐지는 국내의 경우는 더욱 그러하다. 그렇다면 그 원인이 무엇일까? 20년간 소프트웨어 공학을 연구한 연구원의 입장에서, 필자에게 그 근본적 원인을 묻는다면 "소프트웨어 개발 프로젝트는 일반 타 산업의 프로젝트와는 다르기 때문이다." 라고 답변할 것이다.
이는 사실상, 필자의 개인적 의견이 아니라 전세계 소프트웨어 공학분야 석학들이 수십 년간 연구 끝에 내린 결론이며, 유럽과 미국의 연구진들은 이미 10여년 전부터 이러한 사실을 인지하고 실무에 반영해왔다.

소프트웨어 공학 분야에서 소프트웨어 프로젝트 관리란 소프트웨어 개발 과정 중 수행되는 활동들에 대한 관리를 의미하며, Software Process Management란 영역에 속한다. 전세계적으로 1980년대부터 Software Process Management 분야에 대한 연구는 크게 두 가지 관점에서 수행되어 왔다. 첫 번째는 "성공적인 소프트웨어 개발을 위해서는 어떤 활동들이 수행되어야 하는가?" 에 대한 것이며, 두 번째는 "소프트웨어 개발 과정상 활동을 어떻게 하면 효과적으로 자동화하여 관리 할 수 있을까?" 에 대한 연구이다.

전자의 경우, 연구의 결과물로서 탄생한 것들이 소프트웨어 프로세스 관련 표준이며 우리가 알고 있는 SW-CMM, CMMI, SPICE/ASPICE, ISO 9000,ISO/IEC 12207 등이 대표적인 예이다.

후자의 경우엔, 소위 Software Process Centered Software Engineering Environment, Software Process Automation과 같은 세부 연구 분야가 탄생하였으며, 우리가 이야기하는 소프트웨어 프로젝트 관리 시스템도 이 범주에 속한다.

상기 두 분야에 대하여 연구와 적용은 지난 수십년간 이루어져 왔으며, 특히 소프트웨어 프로젝트 관리 자동화에 대하여서는 이미 십 수년 전부터 전문가들에 의해 많은 lessons-learned와 방향성이 제시되어왔다. 다만, 국내에서는 소프트웨어 프로세스 자동화 분야의 전문가가 매우 적었었고, 산업공학/제조 분야의 접근을 기초로한 잘못된 SW 프로젝트 관리 자동화의 사례가 많았다. 때문에 전부터 사용하던 범용 프로젝트 관리 시스템을 소프트웨어 프로젝트 관리에 사용하다가 어려움을 호소하는 경우가 많다. 물론 간단한 WBS (Work Breakdown Structure) 작성 도구 같은 경우는 사용해도 무방하나 그 이상은 소프트웨어 개발의 특성상 논리적인 한계들이 존재한다. 그렇다면 올바르고 효과적인 소프트웨어 프로젝트 관리 시스템에서 고려되어야 하는 사항은 어떤 것들이 있을까?

이 질문에 대한 해답은 다음과 같다.

  • 지식 산업으로서 소프트웨어 프로젝트의 특성이 반영되어야 한다.

    소프트웨어 프로젝트와 일반 제조산업 프로젝트의 가장 큰 차이점은 소프트웨어 개발은 제조에 비해 매우 극단적인
    지식 활동이라는 것이다. 다시 말해 지식활동으로서 일어난 소프트웨어 개발 활동의 비 정형적 특성들(지식의 공유, 지식 자산의 재사용, 소통, 진행 과정의 변경과 진화 등)이 고려되어야 한다. 
  • 빠르게 변하는 Software 개발 기술에 대한 의존성이 최소화되어야 한다.

    제조나 타 산업군과는 다르게 소프트웨어 개발의 기술/기법/방법론 등은 빠르게 진화한다(e.g. OOAD, CBD, IE 등)
    하지만 특정 개발 방법론에 의존적인 관리 시스템은 빠르게 변화하는 신 기술 환경에 맞추어 적응할 수 없다.
  • 비 프로젝트 활동에 대한  고려가 필요하다.

    소프트웨어 개발 조직의 특성상 일반적으로 개발자들의 공수는 투입된 프로젝트에 대한 직접 투입 공수보다 비 프로젝트 업무
    (회의, 유지보수, 기획 등)에 많이 소모되는 경향이 있다. 이러한 비 프로젝트 활동은 리소스 관점에서 프로젝트의 품질에 직접적인 영향을 주게 되므로 반드시 관리되어야 한다.
  • 프로젝트 구성원들의 다양한 역량 수준이  고려되어야 한다.

    비 지식산업에서 쓰이는 많은 PMS에서는 프로젝트 구성원들의 업무 능력에 대한 차이를 고려하지 않은 채 단순히 태스크 할당의 성격으로
    업무를 진행하는 경우가 많다. 그러나 소프트웨어 프로젝트의 경우, 소프트웨어 공학에 대한 역량 차이에 따라 구성원들의 태스크 수행품질도 크게 좌우된다. 단순히 한두 번의 교육으로 이룰 수 없다. 이러한 특성을 충분히 고려하여 관리시스템에 필요 지식이 녹아 들어 있어야 처음 접하는 소프트웨어 엔지니어들도 원활하게 사용할 수 있다.
  • Best Practice에 대한 제공이 필요하다.

    건축, 제조 분야와는 다르게 소프트웨어 산업 분야에서는  CMMI, SPICE 등 과 같이 소프트웨어 개발 조직의 역량 수준에 따른
    Best Practice들을 제시하고 있다. 이는 지식 산업의 특성이다. 소프트웨어 프로젝트 관리 시스템은 이러한 Best Practice를 지원하는 것에 그치지 않고, 나아가 실무와 Best Practice 간 매끄러운 연결고리 역할을 수행해야 한다.
  • 협업의 특성이 고려되어야 한다.

    소프트웨어 개발은 단순한 업무 지시와 개별 작업만으로 수행될 수 없다. 구성원들은 주어진 역할 별로 업무를 수행하되
    협업과 소통이 함께 수행되어야 한다. 이 또한 지식 산업으로서 소프트웨어 개발 활동의 빼놓을 수 없는 특성이다.
  • 프로젝트 타입 별 특성이 고려되어야 한다.

    2명이 한달 동안 하는 소규모 프로젝트와 50명이 1년동안 하는 대규모 프로젝트는 각각의 특성과 환경은 매우 다르다. 이러한 특성을
    무시한 일원화된 관리는 소프트웨어 프로젝트의 실패를 야기할 수 있다.  그러므로 다양한 프로젝트 타입 별 특성에 대한 고려가 필요하다.
  • 멀티 프로젝트에 대한 컨트롤 타워 기능이 필요하다.

    멀티 프로젝트에 대한 체계적인 관리와 통제 기능은 개별 프로젝트의 성공을 좌우한다.
  • 타 도구와의 연계가 지원되어야 한다.

    소프트웨어 개발 및 관리에 있어서 PMS외 다양한 도구에 대한 지원 및 주변 시스템과의 연계가 필요하다.
    이러한 주변 도구와의 연계는 조직 차원의 업무 효율성을 높이게 된다.
  • 측정 데이터의 지속적인 축적이 필요하다.

    동일한 소프트웨어 프로젝트를 동일인이 진행한다고 하여도 프로젝트를 수행할 때 마다 프로젝트의 생산성, 품질 등의 성과는 다르게
    나타날 수 있다. 이는 소프트웨어 프로젝트는 제조 프로젝트처럼 간단한 수학 공식을 적용해 그 성과에 대한 예측을 수행하는 것이 불가능한 인적자원 중심의 지식 산업이기 때문이다. 이러한 특성을 고려하여 소프트웨어 프로젝트에서는 보다 정확한 예측을 위하여 다양한 프로젝트 측정과 척도에 대한 통계적 관리 지원이 필요하다.