소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi

포인트1. 프로젝트 시작단계에 해야 할 일은 무엇인가?

포인트2. 어떻게 목표를 정하고 일정을 계획하는가?

포인트3. 어떻게 프로젝트 비용을 산정하는가?

포인트4. 개발 팀은 어떻게 구성하는가?

포인트5. 프로젝트 수행어떻게 모니터링하고 제어하는가?

포인트6. 어떤 위험 요소가 있으며 이를 관리하는 방법은 무엇인가?


프로젝트 - 정해진 기간 안에 한정된 자원으로 일정한 목적을 달성하기 위해 수행하는 업무

프로젝트는 여러 분야의 업무에서 진행이 되지만 소프트웨어 개발 작업에서의 관리는 다음과 같은 어려움이 따른다.

  1. 개발 대상이 눈에 보이지 않는 소프트웨어이다 -> 개발 진행상황 파악이 어렵다
  2. 조직마다 프로세스가 다르다 -> 표준화된 절차와 방법이 없음
  3. 기술 발전이 매우 빠르며 프로젝트마다 특징이 다르다 -> 과거 프로젝트에서 얻는 지식, 경험을 다음 프로젝트에 적용하기 어렵다

프로젝트 관리의 네 가지 활동

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
프로젝트 계획의 4 가지 활동 ( 출처 - 소프트웨어 공학의 모든 것 91page )
  • 계획
  • 조직
  • 모니터링
  • 조정

프로젝트 관리의 목표

  • 최종 결과고객의 요구를 만족해야 함
  • 프로덕트 및 프로젝트에 대한 속성(품질, 보안, 생산성, 비용 등)이 요청 수준에 맞아야 함
  • 계획된 일정에 맞게 진행되어야 함
  • 팀 구성원이 효과적으로 작업하고 능력을 발휘하여야 함
  • 실행 과정을 모니터링하고 조정하여야 함
  • 프로젝트를 실패로 만들 수 있는 리스크를 미리 예측, 대비 하여야 함
  • 요청된 도구와 기타 자원이 사용 가능하고 효과적으로 쓰여야 함

3-1. 프로젝트 시작

프로젝트의 첫 작업목표 설정가치리스크 이해이다.

프로젝트를 시작 할 것인지 말 것인지를 결정하는 것은 프로젝트 가치와 리스크에 의해 결정된다.

- 프로젝트 가치

프로젝트 가치를 평가하는 방법

  • 투자회수기간 - 투자금과 같은 금액을 벌어들이는 데 걸리는 시간
  • ROI(Return Of Investment) - 총 비용에 대한 연간 평균 이익률
  • 순수 현재 가치 - 현재 투자금미래 수익금현재 가치로 비교하는 방법
  • 평가표 - 금액적 요소 이외에 기술, 품질, 시간 여유, 인력 등을 고려하여 점수화
  • SWOT - 프로젝트의 강점(Strength), 약점(Week), 기회 요인(Opportunity), 위험 요인(Threat)파악

- 프로젝트 리스크

고려해야 할 위험 요인들

  • 자원
  • 현재 사용량과 가용성
  • 예상 사용량과 가용성
  • 프로젝트의 우선 순위 및 중요도

- 타당성 분석

프로젝트를 공식적으로 인정하고 기관의 목표와 연결시키는 문서 - 프로젝트 선택에 기초가 됨

포함되어야 할 내용들

  • SOW - 프로젝트가 성취하여야 할 일
  • 비즈니스 목표(가치) - 프로젝트의 결과물
  • 예산 - 비용과 수익의 요약
  • 프로젝트 일정 - 대략적인 일정
  • 프로젝트 리스크 - 위험 요소
  • 대안 - 구축, 구매 등의 방법
  • 평가 - 프로젝트 가치에 대한 평가 결과

3-2. 프로젝트 계획과 스케줄링

프로젝트 초기에는 다음과 같은 사항들에 대해 계획한다.

  • 목표 설정
  • 일정 정의
  • 비용 추정
소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
프로젝트 일정 계획 ( 출처 - 소프트웨어 공학의 모든 것 - 93page )

- 목표 설정

목표 설정 = 범위 설정 -> 프로젝트 관리의 중요한 활동 중 하나

목표에는 프로젝트에서 다루어야 할 모든 작업들이 포함되어야 하며, 범위 밖의 작업이 포함되어서는 안된다.

프로젝트 범위에는 다음과 같은 내용들이 들어가야 한다

  • 프로젝트 목표 및 요구 - 달성하여야 할 목표, 수행되어야 할 기본 작업(WBS), 산출해야 할 결과물, 승인조건들
  • 가정과 제약조건 - 프로젝트 성공을 위해 만족해야 할 조건들, 주로 발주자 입장에서 기대하는 조건들을 의미
  • 산출물과 점검 일정 - 프로젝트에서 정해진 일정에 산출하여야 할 결과물 의미

- 프로젝트 범위

  • 사용자가 이해하는 용어로 정확히 범위를 정해야 함 (전문용어 사용 지양)
  • 현재의 상황을 잘 파악하고, 구현될 시스템의 목표 및 제약조건 등을 정의해야 함
  • 문제의 배경과 응용분야를 잘 이해해야 함 (사용자와 면담, 현장 관찰, 실제업무 수행 필요)

[ 예시 ] 수강신청 시스템의 프로젝트 범위 정하기

문제가 광범위하고 부수적 문제가 많으면 시스템의 범위가 크고 따라서 복잡할 것이다.

프로젝트 범위를 정하는 목적 범위를 좁히는 것이다.

시스템의 문제정의에 '시스템은 교무행정실의 모든 기능을 자동화 한다' 라고 적으면 밑에 있는 그림처럼 매우 광범위하게 된다.

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
광범위한 문제 범위 ( 출처 - 소프트웨어 공학의 모든 것 95page )

모든 기능을 포함할 가능성이 열려 있기 때문이다.

범위를 정하기 위해서는 시스템이 해결할 것으로 예상되는 문제들을 모두 리스트로 적는 것이다.

문제 리스트에서 몇 가지를 삭제하여 별도의 프로젝트로 남김으로써 범위를 줄일 수 있다.

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
축소된 범위 ( 출처 - 소프트웨어 공학의 모든 것 95page )

- WBS ( Work Breakdown Structure )

개발 팀이 프로젝트 목표를 달성하고 결과물을 산출하기 위하여 수행해야 할 작업계층적으로 분할 한 것

소작업들에 대한 소요 일정이 예측되어야 프로젝트의 일정을 계획할 수 있다.

작성 목적 - 프로젝트에서 진행하는 모든 작업을 찾아내기 위한 것

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
재고 관리 시스템 개발을 위한 WBS ( 출처 - 소프트웨어 공학의 모든 것 96page )

위 그림에 재고 관리 시스템 개발 프로젝트의 주요 작업들이 표시되어 있다.

WBS

  • 작업 프로세스 위주로 작성
  • 작업 단위를 산출물 위주로 작성
  • 최하위 단위 작업프로젝트 단위 조직이 책임져야 할 규모의 목표가 되어야 한다.
  • 프로젝트에서 수행할 작업을 정의하는 데 효과적, 목표 관련 작업잘 보여준다.
  • 작업과 비용을 정의, 모니터링에 유용, 작업을 책임 진 부서를 파악할 수도 있음
  • 프로젝트 스케줄링 작업의 입력이 됨

- 스케줄링

WBS를 기초로 하여 일정을 정의하는 것

  • 작업 사이의 의존 관계 파악
  • CPM 방법을 이용여유 시간 계산
  • 소요 자원의 할당

> 작업 의존 관계

작업을 수행하는 순서는 논리적으로 정해져 있다. 예를 들어서 기둥을 세우기 전에 지붕부터 세울 수는 없는 것처럼

작업 사이의 의존 관계는 강한 관계, 약한 관계가 존재한다.

  • 강한관계 - 코딩 후에 테스팅을 할 수 있음, 계약이 끝나야 라이브러리를 사용하여 코딩 시작이 가능
  • 강한 관계 제거를 위해서는 재작업 비용이 필요
  • 약한 관계 - 사용할 수 있는 자원과 수준에 따라서 다른 순서로 진행이 가능
소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
작업의 의존 관계 ( 출처 -소프트웨어 공학의 모든 것 97page )

위에 표는 작업의 의존 관계와 소요 시간을 표로 나타낸 것이다.

선행작업은 말 그대로 작업을 시작하기 전에 완료되어야만 하는 작업이다.

ex > C 작업을 하기 위해서는 A를 먼저 완료해야 함

이러한 관계는 WBS자체에서는 나타나지 않는다.

> CPM(Critical Path Method) 네트워크

노드와 간선으로 구성 된 네트워크

노드에는 작업을 표시, 간선작업사이의 선후 의존관계를 나타낸다.

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
CPM 네트워크와 임계 경로 ( 출처 - 소프트웨어 공학의 모든 것 98page )

CPM 네트워크프로젝트 완성에 필요한 작업을 나열하고, 각 작업들의 선후 관계를 한 눈에 볼 수 있도록 나타내어 전체 프로젝트의 최소 소요 기간을 구하는 데 사용된다.

> 임계 경로와 여유 시간 계산

CPM 네트워크를 통하여 계산한 소요기간이 가장 긴 경로임계경로(Critical Path)라고 한다.

여유시간(TS = slack time) = TL(Latest Start Time) - TE(Earliest Start Time)

TE - 그 작업을 시작할 수 있는 최단 시간 즉, 각 작업이 최대한 빠르게 시작할 수 있는 날짜

TL - 그 작업을 최대로 늦추어 시작할 수 있는 날

예를 들어 C 작업을 통해 계산해 본다고 해 보자 ( CPM 네트워크란에 있는 그림 참고 )

C 작업의 TE는 A작업이 끝나고 나서 바로 시작할 수 있으니 A작업을 수행하는 데 걸리는 8일이 될 것이다.

C 작업의 TL최대 경로인 55일에서 구하고자 하는 작업을 포함하여 뒤에 있는 작업들의 경과시간을 빼면 나오게 된다.

C(15일), I(15일), K(7일), L(10일) = 47일

55 - 47 = 8일이 나오게 된다.

즉, TE와 TL이 같게 나오므로 TS(여유시간)는 0이 될 것이다.

여유시간이 0이라는 것은 C 작업은 임계 경로에 있다는 것을 의미한다.

임계 경로에 있다는 것해당 작업이 늦춰지게 되면 전체 프로젝트가 지연 된다는 의미이기에 더욱 신경을 써 주어야 한다.

E 작업에 대해서 여유시간을 계산 해 보면

TE는 15일이 나오고

TL은 55 - ( 10 + 15 ) = 30일이 나온다.

즉, 여유시간이 15일이 있음으로 임계경로에 존재하지 않는다는 것을 알 수 있다.

> 자원 할당과 간트 차트

간트차트 - 각 작업에 대한 여유시간을 구한 후 작업별로 시작, 종료 기간을 수평 막대로 표현한 것

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
간트차트 ( 출처 - 소프트웨어 공학의 모든 것 100page )

소프트웨어 개발에 필요한 자원

  • 인력 - 주어진 작업을 수행할 인원투입률 (간트차트에 표기된 작업 단위로 할당)
  • 장비 - 주어진 작업을 수행할 때 필요한 도구 또는 하드웨어 및 소프트웨어
  • 재료 - 주어진 작업을 수행할 때 필요한 소모품이나 재료
소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
소요자원의 할당 ( 출처 - 소프트웨어 공학의 모든 것 100page )

소요자원인력이 작업에 투입된 시간으로 표기된다.

간트차트의 각 열에는 투입된 자원의 총량이 표시된다.


3-3. 비용 예측 기법

프로젝트 계획 작업에서는 개발 비용기간에 대해 예측을 할 필요가 있다.

먼저 노력(Effort), 자원(Resource), 기간(Duration)의 관계는 다음과 같다.

D = E / M 

여기서 M(Manpower)투입되는 인력의 투입 비율의 총합이다. 

비용 예측 기법

  • 전문가 판단 - WBS를 기초로 경험 많은 전문가가 각 작업에 소요되는 비용을 추정
  • PERT(Program Evaluation and Review Technique) - 기간을 결정하기 위하여 기대치를 계산하는 방법
  • 하나의 작업에 세 가지 관점의 추정치를 구한다.
  • 낙관적(Optimistic)일 때 소요될 것으로 예측되는 기간(a), 보통(Most Likely)일 때 소요되는 기간(b), 비관적(Pessimistic)일 때 소요될 것으로 예측되는 기간(c)을 통하여 기대치는 다음과 같은 식이 성립한다.

기대치 = (a + 4b + c) / 6

  • 알고리즘식 방법 - 프로젝트에 소요되는 노력을 체계적으로 결정하는 방법, 프로젝트의 측정 가능한 특징을 찾아 함수를 정의한다.

알고리즘식 방법의 종류

  • COCOMO 초기 모델
  • COCOMO 2 
  • 기능점수 방법

- COCOMO-81

규모를 기반으로 하는 수학적 공식을 사용한다.

노력 = A x ( Size )^B x M

A - 개발 기관의 특징개발 소프트웨어의 유형에 좌우되는 상수

Size - 개발될 소프트웨어의 원시코드 라인 수기능 점수

B - 1~1.5사이의 값

M - 프로젝트에 영향을 주는 여러 가지 다른 요소들 ( 제품의 성격, 목표 컴퓨터 시스템의 특성, 개발 구성원의 특성 등 )에 따라 달라지는 계수

M예측한 노력을 보정하기 위해서 사용한다

승수 요소(B)는 밑에 나와 있는 표를 참고하면 된다.

비용 승수 요소 승수값
매우 낮음 낮음 정상 높음 매우 높음 극히 높음
제품의 특성
요구되는 신뢰도 0.75 0.88 1.00 1.15 1.40  
데이터베이스 크기   0.94 1.00 1.08 1.16  
제품의 복잡도 0.7 0.85 1.00 1.15 1.30 1.65
컴퓨터의 특성
실행시간의 제약     1.00 1.11 1.30 1.66
주기억 장치의 제약     1.00 1.06 1.21 1.56
H/W, S/W의 안전성   0.87 1.00 1.15 1.30  
처리 시간   0.87 1.00 1.07 1.15  
개발 요원의 특성
분석가의 능력 1.46 1.19 1.00 0.86 0.71  
응용 경험 1.29 1.13 1.00 0.91 0.82  
컴퓨터와의 친숙성 1.21 1.10 1.00 0.90    
프로그래머 능력 1.42 1.17 1.00 0.86 0.70  
프로그래밍 언어 경험 1.14 1.07 1.00 0.95    
프로젝트 성격
소프트웨어 공학 원리의 사용 1.24 1.10 1.00 0.91 0.82  
소프트웨어 도구의 사용 1.24 1.10 1.00 0.91 0.83  
요구되는 개발 일정 1.23 1.08 1.00 1.04 1.10  

프로젝트에 대한 노력규모에 선형적으로 비례하지 않으며 지수함수의 형태를 띄게 된다.

예시

더보기

 초기 COCOMO-81 모델에 대한 예시이다.

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
COCOMO 81 모델 ( 출처 - 소프트웨어 공학의 모든 것 104page )

위 표는 규모를 KDSI(Kilo Delivery Source Instruction) 으로 정하고 세 가지 프로젝트 유형에 따른 산출 공식을 적어 놓은 표이다.

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
COCOMO-81에 의한 비용 예측 ( 출처 - 소프트웨어 공학의 모든 것 104page )

위 그래프는 표에 있는 세 가지 유형의 프로젝트들의 KDSI 별 PM을 그래프로 나타낸 것이다.

- 단

  • 프로젝트의 초기 단계에서는 요구 명세밖에 없기 때문에 Size값을 예측하는 것이 어렵다
  • 기본 예측 모델에서 B와 M의 값에 영향을 주는 요소들이 주관적이다 - 사람마다 경험에 따라 달라진다
  • 규모 기반 모델을 사용 할 때는 과거 프로젝트 데이터를 이용하여 모델과 데이터를 계속 보정 해 주어야 한다
  • 보정을 하기 위해 충분한 데이터를 수집하는 기관이 드물기 때문공개된 속성값을 사용하는데 팀의 고유 환경과 얼마나 일치하는지 파악하기 어려움

- COCOMO II

COCOMO II 모델은 소프트웨어 개발 프로젝트가 진행된 정도에 따라 단계 별로 세 가지 다른 모델을 제시한다.

1단계 - 프로토타입을 만드는 단계

  • 화면이나 출력 등 사용자 인터페이스, 3세대 언어 컴포넌트 개수를 세어 응용점수를 계산한다
  • 이를 바탕으로 노력을 추정

2단계 - 초기 설계 단계

  • 대안이 되는 자세한 구조와 기능을 탐구할 수 있음
  • 1단계보다 더 정확한 예측이 가능
  • 규모측정을 위해 기능 점수 방법을 채택

3단계 - 구조설계 이후 단계

  • 시스템에 대한 자세한 이해를 바탕으로 노력을 추적하는 방법 사용

노력 추정에 사용되는 기본 모델

E = b*S^(c)*m(X)

b S^(c)기초 소요노력 벡터값을 의미하며, m(X)비용승수의 벡터이다.

응용합성모델

  • 프로토타입 구축에 필요한 노력을 추정하는 모델
  • 컴포넌트 기반의 소프트웨어 개발 프로젝트에 많이 사용

모델을 사용한 노력 추정 과정

1. 애플리케이션을 구성하는 화면, 보고서, 3세대 언어 컴포넌트의 숫자를 센다.

2. 밑에 있는 표를 이용하여 화면과 보고서복잡도 수준을 결정한다.

화면 보고서
포함된 뷰의 개수 자료 테이블의 개수 포함된 섹션의 개수 자료 테이블의 개수
< 4 < 8 8+ < 4 < 8 8+
< 3 단순 단순 중간 0 or 1 단순 단순 중간
3~7 단순 중간 복잡 2 or 3 단순 중간 복잡
8 > 중간 복잡 복잡 4 이상 중간 복잡 복잡

3. 밑에 있는 표를 이용하여 화면과 보고서, 3세대 언어 컴포넌트를 위한 복잡도 가중치를 찾는다.

객체 타입 복잡도 가중치
단순 중간 복잡
화면 1 2 3
보고서 2 3 8
3세대 언어 컴포넌트     10

4. 화면, 보고서, 3세대 언어 컴포넌트의 개수가중치를 곱하여 객체 점수(Object Point)를 계산한다.

5. 재사용률(reuse)을 예측하여 다음 공식에 대입하면 NOP(New Object Point)를 구할 수 있다.

NOP = OP x (100 - Reuse)/100

6. 밑에 있는 표를 이용하여 객체 점수 생산성(PROD)을 결정한다.

개발자의 경험, 능력, 개발도구 경험, 성능  매우 낮음 낮음 중간 높음 매우 높음
PROD(NOR/Month) 4 7 13 23 30

7. 객체 점수 생산성을 식 PM = NOP/PROD에 대입하여 최종PM(Person Month)값을 구한다.

예시

더보기

시스템의 일부를 프로토타이핑 하고자 한다.

프로토타입은 3개의 화면, 4개의 보고서가 필요하고, 3세대 언어 컴포넌트는 사용되지 않는다.

각 화면은 뷰가 1개, 서버 자료 테이블이 1개 포함된다.

한 보고서는 2개의 섹션이 있으며 자료 테이블은 사용하지 않는다.

다른 보고서는 2개는 각각 4개이상의 섹션이 있으며 4개의 서버 테이블을 접근한다. 프로토타입의 50%는 이미 존재하는 컴포넌트를 재사용할 것이다. 개발환경은 중간급이며 응용 도메인에 대한 경험은 거의 없다고 한다.


우선 복잡도 수준을 결정해야 한다.

화면에는 뷰가 1개, 서버 자료 테이블이 1개 있으므로 표를 이용하여 복잡도 수준은 '단순'임을 알 수 있다.

그리고 한 보고서에는 2개의 센션이 있고 자료 테이블은 0개이니 보고서의 복잡도 역시 '단순'이다.

그리고 나머지 2개의 보고서는 4개 이상의 섹션, 4개의 서버테이블이 있으니 '복잡'이다.

이 것들을 통하여 복잡도 가중치를 찾아 준다. 화면은 각각 1점을 가지게 되어 총 4점을 가지고, 1개의 보고서는 2점, 나머지 2개의 보고서는 각각 8점의 점수를 가진다.

점수를 합하여 객체 점수(Object Point)를 계산하게 되면 OP = 4 + 2 + 16 = 22점이 나오게 된다.

재사용률이 50%이므로 이를 적용하면

NOP = 22 x ( 100 - 50 ) / 100 = 11점이 나오게 된다.

이제 PROD를 계산 해 보자.

개발 환경은 중간급이므로 표를 통해 13점이 나오며, 응용 도메인에 대한 경험은 거의 없으므로 개발자의 경험이 낮다고 볼 수 있다. 즉, 7점으로 산정되게 된다.

두 점수의 평균은 10점이므로 PROD는 10점이다.

따라서 노력 = NOP/PROD = 11/10 = 1.1MM이 된다.

- 기능 점수 방법

기능점수

  • 소프트웨어 시스템이 가지는 기능을 정량화한 것
  • 원시코드 작성 전에는 정확한 라인수는 예측 불가
  • 일반적인 소프트웨어가 갖는 기능(입, 출력, 질의, 파일, 인터페이스)으로 규모, 복잡도를 나타냄

입력 개수 - 사용자가 시스템에 제공하는 입력 자료의 개수

출력 개수 - 시스템이 사용자에게 제공하는 출력의 개수

질의 개수 - 사용자가 시스템의 특정 기능을 요청하는 데 필요한 대화형 질의의 개수

파일 개수

  • 시스템이 유지 보관하는 정보의 그룹
  • 응용 분야에 따라 매우 다르다.
  • 비즈니스 자료 처리 응용 분야 SW는 파일의 개수가 많음

인터페이스 개수

  • 다른 외부 시스템과인터페이스
  • ex > 다른 시스템에서 만든 파일을 읽거나 통신 라인으로 자료를 전달받는 경우 해당됨
  • 다른 시스템에서 만든 파일읽는 기능이 있다면 입력 항목인터페이스 항목 모두 해당됨 ( 시스템에 제공 되고, 다른 시스템에서 전달을 받는 것이기 때문 )

주의할 점

  • 입/출력 개수는 입/출력 화면이나 파일 단위의 그룹 항목 개수를 세어야 한다
  • 입력 화면 안에 있는 개별 항목은 세지 않는다.

기능점수(Function Point) 구하기

FP(기능점수) = GFP(총 기능점수) x PCA(보정계수)

방법

1. 다섯 가지 기능 분야에 해당되는 개수를 파악하여 밑에 있는 표에 채운다.

  기능 분야 개수 복잡도 가중값  
단순 보통 복잡 FP = 개수 x 가중값
1 입력(트랜잭션)   3 4 6  
2 출력(화면 및 출력 양식)   4 5 7  
3 질의   3 4 6  
4 파일   7 10 15  
5 응용 인터페이스   5 7 10  
          GFP  

2. 각 다섯 기능에 대한 복잡도(단순, 보통, 복잡)를 결정하여 표시한다.

3. 총 기능점수(GFP)를 구한다. ( FP들의 총 합 )

4. 다음 표에 있는 14개의 질문을 이용하여 각 처리 복잡도의 정도에 따라 0~5까지 할당한다.

0 - 영향없음

1 - 미미

2 - 약간

3 - 보통

4 - 상당

5 - 많음

특성 처리 복잡도
1. 시스템이 신뢰도 높은 백업과 복구를 요구하는가?  
2. 테이터 통신이 필요한가?  
3. 분산 처리 기능이 있는가?  
4. 성능이 중요한가?  
5. 시스템이 과부하 운용 환경에서 실행되는가?  
6. 온라인 데이터 입력이 필요한가?  
7. 온라인 입력이 다중 화면 위에 구축되기 위하여 입력 트랜잭션이 필요한가?  
8. 마스터 파일이 온라인으로 갱신되어야 하나?  
9. 입력, 출력, 파일, 질의가 복잡한가?  
10. 내부 처리가 복잡한가?  
11. 재사용 되도록 설계하여야 하나?  
12. 변환과 설치가 설계에 포함되어 있나?  
13. 다중사이트에 설치되기 위하여 설계되었나?  
14. 변경과 사용이 쉽도록 설계되었나?  

5. 처리 복잡도 보정계수(PCA)를 다음 식을 이용하여 구한다.

PCA = 0.65 + 0.01 x (1~14번의 처리 복잡도 합)

0.65는 경험에 의한 상수값이며, 0.65~1.35의 범위 내에서 정한다.

6. 다음 식에 넣어 기능 점수(FP)를 구한다.

FP = GFP x PCA

예시

더보기

개발하여야 하는 소프트웨어는 다음과 같이 구성될 것이다.

사용자 입력 = 10개, 사용자 출력 = 5개, 사용자 질의 = 8개, 자료 파일 = 30개, 외부 인터페이스 = 4개, 모두 복잡도는 '단순'이다.

처리복잡도를 계산하기 위한 14개의 질문들에는 신뢰도 높은 백업, 사용 친근성은 '복잡도가 매우 높음'이고, 나머지는 '복잡도가 보통'이다.

개발팀의 생산성은 주당 60 기능점수를 구현하면 이 프로젝트를 수행하기 위한 노력은 얼마인가?


먼저 GFP를 계산 해 준다.

표를 이용하면 GFP = 10 x 3 + 5 x 4 + 8 x 3 + 30 x 7 + 4 x 5 = 304FP 가 나오게 된다.

처리 복잡도가 보정된 PCA를 계산하면 PCA = 0.65 + 0.01 x ( 5 x 2 + 3 x 12 ) = 0.65 + 0.46 = 1.11이 나온다.

여기에서 기능점수(FP)를 계산한다. FP = GFP x PCA = 304 x 1.11 = 337.44

마지막으로 노력을 계산한다.

E = FP / Productivity = 337.44 / 60 = 5.624 person-weeks

즉 이 프로젝트를 수행하기 위한 노력은 5.624가 된다.

문제점

  • 모든 항목에 일률적인 가중치가 적용됨 - 디테일한 부분이 미흡
  • 단순 처리로 가능한 입력복잡한 처리가 필요한 입력같이 취급

국내 기능점수 산정 가이드

  • 한국 소프트웨어 산업협회에서 제공하는 대가 산정 기준
  • 기준의 큰 틀은 COCOMO2 초기 설계 단계의 모델을 따름

기능 타입

  • 외부 입력 - 내부 파일의 내용에 영향을 주는 사용자 데이터 또는 제어 입력 (트랜잭션 단위로 카운트)
  • 외부 출력 - 소프트웨어 외부로 표출되는 사용자 데이터 또는 제어 출력 (트랜잭션 단위로 카운트)
  • 내부 논리 파일 - 소프트웨어에 의해 생성, 사용, 관리되는 파일, 시스템에 존재하는 데이터 및 제어 정보의 그룹
  • 외부 인터페이스 파일 - 소프트웨어 시스템 사이에 전달, 공유파일
  • 외부 조회 - 중간 출력을 생성하는 외부 조회

각 기능 요소들을 카운트 한 다음에는 밑에 있는 표 들을 이용하여 복잡도 수준과 가중치를 계산한다.

복잡도 판별 표

내부논리파일과 외부 인터페이스 외부 출력과 조회 외부 입력
레코드의 개수 자료 요소의 개수 파일 타입 개수 자료 요소의 개수 파일 타입 개수 자료 요소의 개수
1~19 20~50 50+ 1~5 6~19 20+ 1~19 20~50 50+
3 단순 단순 중간 0~1 단순 단순 중간 0~1 단순 단순 중간
2~5 단순 중간 복잡 2~3 단순 중간 복잡 2~3 단순 중간 복잡
6+ 중간 복잡 복잡 4+ 중간 복잡 복잡 3+ 중간 복잡 복잡

기능 유형별 복잡도 가중치

기능 타입 복잡도 가중치
단순 중간 복잡
내부 논리적 7 10 13
외부 인터페이스 5 7 10
외부 입력 3 4 6
외부 출력 4 5 7
외부 조회 3 4 8

예시

더보기

어떤 시스템의 사용자 지원을 위한 '서비스 가이드' 서브시스템을 개발하려고 한다.

서브시스템의 기능은 도움말, 사용자 질문 등록, 사용자 질문 응답, FAQ, 자료실이다.

기능점수 방법을 이용하여 노력을 추정해 보자.

개발하여야 할 소프트웨어는 다음과 같은 기능 분야로 구성될 것으로 추정된다.

내부 논리파일 4개(FAQ 제외), 외부 인터페이스 파일 0개, 외부 입력(입력, 수정, 삭제 각 5개씩) 15개, 외부 출력 0개, 외부 조회 5개

먼저 각 기능 요소에 대하여 복잡도 판별 표를 통하여 복잡도를 판별하여야 한다.

복잡도 판별이 어려운 경우 국내 기능점수 산정 가이드에서는 기능 유형별 평균 복잡도를 다음 표에서와 같이 간이법을 이용하게 된다.

복잡도를 고려한 기능점수(간이 계산)

기능 타입 UFP
개수 복잡도 평균 기능 점수
내부 논리적 4 7.5 30
외부 인터페이스 0 5.4 0
외부 입력 15 4 60
외부 출력 0 5.2 0
외부 조회 5 3.9 19.5
    UFP 109.5

이렇게 구해진 기능점수에 국내 평균 생산성(기능점수당 투입 공수)을 곱하면 노력 산정값이 나온다.

2019년 기준 국내 기능점수당 평균 생산성

구분 예외값 하한 평균생산성 예외값 상한
생산성(FP/MM) 21.8 23.4 25.6

평균 노력 E = FP / 평균 생산성 = 109.5/23.4 = 4.67MM 이 된다.


3-4. 프로젝트 팀 조직

조직의 구성소프트웨어 개발 생산성에 큰 영향을 미친다.

프로젝트 팀 조직은 다음 세 가지를 정하는 일

  • 역할과 책임어디에 있는가?
  • 어떤 통로정보가 전달되고 결정되는가?
  • 어떻게 갈등을 해소 할 것인가?

팀 역할

  • 프로젝트 관리자
  • 시스템 운영자
  • 시스템 분석가
  • 시스템 개발자
  • 데이터베이스 엔지니어
  • QA관리자
  • 기술 지원
  • 하드웨어 엔지니어
  • 웹 개발자 및 디자이너

직능별 조직

역할에 따라 같은 부서에 속하게 하는 것

인력의 효율적 운영, 전문지식 공유 가능 -> 기술 발전, 기업 노하우 축적

서로 다른 부서가 한 프로젝트의 다른 단계에 들어와 작업을 수행한다.

프로젝트의 협력은 부서별로 이루어지며, 한 부서의 작업 결과가 다른 부서에 전달되어야 하므로 문서나 회의의사 전달체계가 잘 확립되어야 한다.

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
직능별 프로젝트 조직 ( 출처 - 소프트웨어 공학의 모든 것 117page )

프로젝트별 조직

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
프로젝트별 조직 ( 출처 - 소프트웨어 공학의 모든 것 118page )

서로 다른 역할을 담당하는 직능별 개발자들이 한 프로젝트 안에 배정

의사전달 경로가 짧으며 인력, 진도 등 프로젝트 관리가 수월하다.

프로젝트 관리자가 독립성을 가지고 관리할 수 있다.

비교 대상 직능별 조직 프로젝트별 조직
장점 효과적인 인력 사용
전문성 유지 및 개발 용이
기술 전수 용이
공동 협력적, 안정적, 보안적
개인 소통이 덜 요구됨
일정 및 비용 관리가 용이
고객과의 연결이 간단함
빠른 회신
커뮤니케이션 라인이 간단함
관리, 교육이 용이함
프로젝트 파악이 쉬움
단점 고객 인터페이스가 약함
프로젝트 관리가 취약함
수평적인 소통이 취약함
회신이 느림
기술적인 불확실성이 있음
전문가 사용이 비효율적
미래 작업의 배정이 불투명
프로젝트 사이의 기술적 정보 교류가 취약

매트릭스 조직

프로젝트별 조직 구성 + 직능별 조직 구성

관리자, 개발자직능별 조직에 속함

전문지식이 필요한 프로젝트를 위해 간헐적으로 일함

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
매트릭스 조직 ( 출처 - 소프트웨어 공학의 모든 것 119page )

매트릭스 조직의 구분

- 강한 매트릭스

  • 프로젝트 관리자프로젝트에 책임을 짐
  • 팀원들은 직능별 조직보다 프로젝트에 더 개입

- 약학 매트릭스

  • 프로젝트의 책임직능별 관리자에게 맡김
  • 팀원들여러 프로젝트를 적극담당

애자일 조직

서로 밀접하게 협력하는 5~9명의 팀

결과와 이슈에 대한 오너쉽을 공유함

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
애자일 조직 ( 출처 - 소프트웨어 공학의 모든 것 120page )

스크럼 - 대표적 애자일 방법

스크럼의 역할

  • 스크럼 마스터 - 프로젝트 진도 측정, 문제 해결, 외부의 영향으로부터 팀 보호
  • 고객 - 고객도 개발조직에 포함되어 요구분석 결과물의 오너가 된다
  • - 작업을 수행하기 위해 스스로 조직, 책임을 짐

애자일 팀의 단점

  • 너무 작은 인원으로 구성 - 규모가 큰 프로젝트에는 맞지 않다
  • 이것을 극복하기 위해 팀을 여러 개 구성하는 경우도 있음

3-5. 실행과 모니터링

- 프로젝트 실행

  • 작업 시작 미팅 - 작업이 시작됨을 공식 선포, 팀원과의 소통을 위해 회의 진행
  • 작업 결과 수집 - 프로젝트의 결과물을 체계적으로 수집하기 위한 목적의 작업

- 프로젝트 모니터링

목적 : 프로젝트의 현황 파악, 차이 분석을 하여 필요하면 조치를 취하기 위함

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
프로젝트 모니터링 ( 출처 - 소프트웨어 공학의 모든 것 121page )

중점적 모니터링의 대상

  • 일정 - 프로젝트가 예정보다 빠르게 또는 지연 진행되고 있는지 확인
  • 비용 - 예산보다 적게 또는 많이 쓰고 있는지 확인

일정 모니터링

주어진 시간 계획의 스냅샷을 기초로 실행값을 비교

실제 시작한 날, 종료한 날, 실제로 들어간 노력과 진행상황을 비교한다.

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
일정 모니터링 ( 출처 - 소프트웨어 공학의 모든 것 122page )

프로젝트에 투입된 노력을 시간단위로 환산하여 데이터를 수집할 수도 있음

작업단위로 투입된 각 개발자의 노동시간을 수집하여 합하면 주 또는 달별로 투입된 노력을 구할 수 있음

장점

  • 직관적이며 간단

단점

  • 프로젝트의 진행 상황 한 번에 볼 수 없음

어닝 밸류 분석

비용과 일정을 통합된 방법으로 모니터링 하는 것

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
어닝 밸류 분석 ( 출처 - 소프트웨어 공학의 모든 것 123page )

계획 된 노력(비용), 실제 진적도(어닐 밸류), 노력(실제 비용) 을 금전적 가치로 측정하여 통합된 모니터링을 제공

>> 계획, 작업, 진척도를 같은 단위측정, 비교 가능

계획된 비용과 실제 사용된 비용을 누적하여 표현하되 결과물의 달성도를 금액으로 환산한 가치로 나타낸다.

계획, 실행 단계를 비교하여 진행상황의 추이 확인 가능, 미래 비용과 일정 예측 가능

장점

  • 전체적인 진척 상황을 이해하기 좋다
  • 진척도를 노력으로 비교할 수 있으며, 예산과 비용이 녹아 있어 사용이 편리

단점

  • 과정이 복잡하다

번다운 차트

수행 될 작업보다는 남아 있는 작업에 대해 초점을 두어 일정을 모니터링하는 것

목표 - 기능이 출시되는 속도를 측정하는 것


3-6. 리스크 관리

목적 - 위험이 발생되었을 때의 영향을 줄이기 위함

소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
리스크 관리 ( 출처 - 소프트웨어 공학의 모든 것 124page )

리스크 파악

프로젝트에 기본적으로 영향을 줄 수 있는 리스크가 무엇인지 이해하고, 특징을 문서화 한다.

리스크를 찾는 방법

  • 회의
  • 문서 분석
  • 리스크 분할 구조, 체크리스트 - 리스크 아이템을 분할하여 계층 구조로 그리거나 체크리스트 제작
  • 유추 - 비슷한 프로젝트 유형과 비교하여 유추한다
소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
리스크 요소 ( 출처 - 소프트웨어 공학의 모든 것 125page )

리스크 평가

리스크를 프로젝트에 대한 영향도에 따라 평가하고 우선순위를 매긴다.

확률과 리스크가 발생했을 때 미치는 영향우선순위를 좌우

정성적인 방법

  • 확률에 대한 정확한 정보가 없을 때 사용
  • 다음 표에 있는 리스크 매트릭스에 리스크 요소를 표시
  • 발생 빈도가 높고 영향이 큰 것 (E)신경을 써서 관리하여야 하며, 그렇지 못하면 실패할 가능성이 높다.
  • 그 다음으로 중요한 리스크(H)는 면밀히 모니터링 해야 함
  • 그 이외의 요소들은 일반적으로 해가 되는 요소들임
소프트웨어 프로젝트 계획서 예시 - sopeuteuweeo peulojegteu gyehoegseo yesi
리스크 매트릭스 ( 출처 - 소프트웨어 공학의 모든 것125page )

리스크 관리

위험 요소를 해소하기 위한 방법을 강구하고 프로젝트를 실행하는 동안 이를 적용하는 작업

방법

  • 위협적인 요소(E)에 대해서는 리스크를 피하기 위해 계획을 변경 또는 다른 기관에 맡김
  • 빈도, 영향도를 낮추기 위해 프로토타이핑을 할 수도 있음
  • 불확실성 제거를 위해 유능한 인재 등용, 제 3자와 협업을 할 수도 있음

완전히 큰 위험 요소는 파악할 필요가 없음 -> 프로젝트 시작을 포기하는게 더 나음

영향을 원인과 혼돈하지 말 것

ex> 프로젝트 지연, 지체 보상금 부과는 프로젝트에 미치는 영향이다.


프로젝트 계획서

프로젝트 계획서에는 개요, 자원 및 일정 예측, 조직 구성, 작업 분해, 기술 관리 방법 등이 포함되어야 함

1. 개요

 1.1 프로젝트 개요
 1.2 프로젝트 산출물
 1.3 정의, 약어

2. 자원 및 일정 예측

 2.1 자원

    가. 인력
  나. 비용

 2.2 일정

3. 조직 구성 및 인력 배치

 3.1 조직 구성
 3.2 직무 기술

4. WBS

5. 기술 관리 방법

 5.1 변경 관리
 5.2 위험 관리
 5.3 비용 및 진도 관리
 5.4 문제점 해결 방안

6. 표준 및 개발 절차

 6.1 개발 방법론

7. 검토 회의

 7.1 검토회 일정
 7.2 검토회 진행 방법
 7.3 검토회 후속 조치

8. 개발 환경

9. 성능 시험 방법

10. 문서화

11. 유지 보수

12. 설치, 인수

13. 참고 문헌 및 부록

개요

  • 프로젝트의 목적과 산출물 및 배경 등을 간략하게 기술
  • 계획에서에서 참조하는 모든 문서를 나열
  • 미리 용어와 약어에 대해 설명
  • 계획서 상의 자세한 내용을 한 눈에 보아 알 수 있는 요약이 됨

자원 및 일정 예측

  • 소작업 정의
  • 각 작업 사이의 의존 관계 기술
  • 프로젝트를 수행하기 위해 필요한 자원들 기술
  • 자원을 어떻게 배정할 것인가 기술
  • 일정 계획 포함

조직 구성 및 인력 배치

  • 개발 조직의 구성도 기술
  • 각 조직의 의무 및 기능 기술

WBS

  • 제품의 생명 주기, 개발 조직의 구성의 두 가지 관점에서 기술
  • 프로세스 모델(소프트웨어 개발)을 위한 여러가지 소작업과 프로젝트 기능 기술

기술 관리 방법

  • 관리를 위한 철학, 목표, 우선순위들을 나열
  • 필요성과 일정, 예산, 형편, 위험도에 따라 분류
  • 프로젝트를 위해 요구되는 인원수, 자질, 기간 제시

표준 및 개발 절차

  • 개발에 사용될 하드웨어, 소프트웨어, 운영체제, 개발 방법, 팀 구성, 프로그래밍 언어, 도구, 기술 포함
  • 문서화, 코드 표준도 포함

부록

  • 외주 용역 관리 계획
  • 보안 계획
  • 검증 계획
  • 교육 계획
  • 하드웨어 교정 계획
  • 설치 계획
  • 제품 유지보수 계획