프로그램 아키텍쳐/소프트웨어공학

소프트웨어 프로젝트 성패에 영향을 미치는 요소

본클라쓰 2011. 11. 8. 11:55

 

첫째, 의사소통(communication skill)이다.

 

발주자는 컴퓨터 및 소프트웨어에 대한 지식이 부족하고, 개발자는 발주자의 전문 분야에 대한 지식이 부족하다. 발주자와의 의사 소통 문제를 해결하기 위해서는 인터뷰 기술을 사용하거나 설문지 등 요구 분석 방법을 사용해야 한다.

 

또한, 개발자들 사이의 의사 소통 문제가 발생하는데 개발자가 많이 투입된다고 해서 생산성이 높아지지 않는다. 이는 개발 인원이 많아질 수록 의사소통이 많아지기 때문이다. 이를 극복하기 위해서는 문서화하여 글로 표현해 명확하게 프로젝트를 진행해야 한다.

 

 

둘째, 프로젝트의 성격이다.

 

작성되는 소프트웨어의 성격에 따라 프로젝트의 성패가 결정된다. 자료 처리를 위한 것인지, 제어를 위한 것인지 등과 크기와 복잡도에 따라 프로젝트 성패가 결정되는데, 소규모는 1명의 프로그래머가 1~6개월 정도 소요되고 원시코드 줄은 2000줄 정도의 규모이고, 중규모는 2~5명의 프로그래머가 1~2년 정도 원시코드 줄은 5만줄 내외의 규모, 대규모는 5~20명이 2~3년 작업에 10만줄 정도의 규모를 가진다.

 

 

셋째, 프로그래머의 역량이다.

 

소프트웨어 개발은 노동집약적 산업이다. 프로그래머의 능력은 프로그래밍 능력, 커뮤니케이션 능력, 응용 분야에 대한 이해, 프로세스, 도구에 대한 이해와 경험이다.

 

프로그래밍의 생산성 차이는 평균 1:15이다. 디버깅 능력은 1:28 정도이다.(Sackman의 실험) 프로그래머의 역량에 따른 생산성 차이는 기타 제조업과 비교할 수 없이 심하다.

 

또한, 미숙한 프로그래머가 작성한 모듈은 전체 품질이나 일정에 영향을 미친다. 이런 문제를 방지하기 위해 소프트웨어 공학의 체계적이고 조직적인 접근법을 사용해야 한다.

 

 

넷째, 프로젝트 관리 기술이다.

 

관리 기술은 프로그래밍 경험과 관리 능력이 필요하다. 소프트웨어 프로세스를 관리하기 위해서는 일정, 예산, 인력, 형상, 품질을 관리해야 한다.