앞에서 설명한 기능점수에 의한 추정과 계획/관리 기법을 예를 들어 설명한다.
?
- 기능점수 산출
먼저 개발할 기능의 기능점수를 산출한다. 그 결과 아래와 같이 기능점수가 산출되었다고 가정하자.
?
기능명 |
EI |
EO |
EQ |
ILF |
EIF | |||
입력 |
수정 |
삭제 | ||||||
결재요청 |
결재문서작성 |
1 |
결재문서 |
|||||
결재선입력 |
1 |
결재선 |
||||||
? |
결재양식선택 |
? |
? |
? |
? |
1 |
결재양식 |
? |
결재선검색 |
1 |
사용자 |
||||||
결재처리 |
결재문서목록조회 |
? |
? |
? |
? |
1 |
결재문서 |
? |
? |
결재문서조회 |
? |
? |
? |
? |
1 |
결재문서 |
? |
? |
결재처리 |
? |
1 |
? |
? |
? |
결재문서 |
? |
? |
결재상태조회 |
? |
? |
? |
? |
1 |
결재문서 |
? |
? |
결재문서출력 |
? |
? |
? |
? |
2 |
결재문서 |
? |
정보관리 |
사용자관리 |
1 |
1 |
1 |
? |
2 |
사용자 |
? |
? |
부서관리 |
1 |
1 |
1 |
? |
2 |
부서 |
? |
? |
결재양식관리 |
1 |
1 |
1 |
? |
2 |
결재양식 |
? |
? |
월별결재통계 |
? |
? |
? |
1 |
? |
결재문서 |
? |
?
이를 정리하여 실제 구현할 트랜잭션 기능의 점수만을 산출하면 아래와 같다.
기능명 |
EI |
EO |
EQ | |
결재요청 |
결재문서작성 |
1 |
||
결재선입력 |
1 |
|||
? |
결재양식선택 |
? |
? |
1 |
결재선검색 |
1 | |||
결재처리 |
결재문서목록조회 |
? |
? |
1 |
? |
결재문서조회 |
? |
? |
1 |
? |
결재처리 |
1 |
? |
? |
? |
결재상태조회 |
? |
? |
1 |
? |
결재문서출력 |
? |
? |
2 |
정보관리 |
사용자관리 |
3 |
? |
2 |
? |
부서관리 |
3 |
? |
2 |
? |
결재양식관리 |
3 |
? |
2 |
? |
월별결재통계 |
? |
1 |
? |
합계 |
12 |
1 |
13 |
?
즉, 이를 기능점수로 계산하면 아래와 같다.
기능유형 |
평균복잡도 |
합 계 | ||
외부입력(EI) |
12 |
× |
4.0 |
48.0 |
외부출력(EO) |
1 |
× |
5.2 |
5.2 |
외부조회(EQ) |
13 |
× |
3.9 |
50.7 |
총 기능점수 |
103.9 |
?
즉, 개발계획을 수립해야할 기능의 총 기능점수는 103.9점이다.
?
- 프로젝트 투입자원 산출
위 기능을 구현하는데 총 4주가 주어졌다고 하자. 계산을 쉽게 하기 위하여 모든 개발자는 개발속도가 10점/Week 라고 가정한다면,
적정 개발인력 = 103.9 / (4주 * 10) = 2.6 |
이 된다. 따라서, 개발인력을 3명을 투입하기로 한다.
?
- 프로젝트 주기계획수립
프로젝트 기간은 총 4주가 주어졌으므로, 4주간의 주기계획을 수립한다. 개발보고는 주로 주단위로 하게 되므로, 각 주기를 1주로 잡고, 각 주기의 일정을 작성한다.
개발주기 |
시작일 |
완료일 |
주기1 |
2012-08-27 |
2012-08-31 |
주기2 |
2012-09-03 |
2012-09-07 |
주기3 |
2012-09-10 |
2012-09-14 |
주기4 |
2012-09-17 |
2012-09-21 |
?
- 개발계획 수립
주기와 투입인력이 정해졌다면, 기능점수를 산출한 각 기능에 대하여 개발계획을 작성한다. 이 때, 개발할 주기와 담당자 등을 모두 지정하여 계획을 수립한다.
기능 |
개발계획 |
개발관리 | ||||
우선순위 |
기능점수 |
개발주기 |
담당자 |
상태 | ||
결재요청 |
결재문서작성 |
2 |
4.0 |
주기3 |
개발자1 |
|
결재선입력 |
2 |
4.0 |
주기3 |
개발자1 |
||
결재양식선택 |
2 |
3.9 |
주기3 |
개발자2 |
||
결재선검색 |
2 |
3.9 |
주기3 |
개발자2 |
||
결재처리 |
결재문서목록조회 |
3 |
3.9 |
주기3 |
개발자3 |
|
결재문서조회 |
3 |
3.9 |
주기3 |
개발자3 |
||
결재처리 |
3 |
4.0 |
주기4 |
개발자1 |
||
결재상태조회 |
4 |
3.9 |
주기4 |
개발자1 |
||
결재문서출력 |
4 |
7.8 |
주기4 |
개발자2 |
||
정보관리 |
사용자관리 |
1 |
19.8 |
주기1, 주기2 |
개발자1 |
|
부서관리 |
1 |
19.8 |
주기1, 주기2 |
개발자2 |
||
결재양식관리 |
1 |
19.8 |
주기1, 주기2 |
개발자3 |
||
월별결재통계 |
4 |
5.2 |
주기4 |
개발자3 |
?
- 개발주기검증
각 개발주기별로 적정한 개발분량이 분배되었는지를 검증할 필요가 있다. 앞에서 작성한 개발계획을 이용하여 각 주기별 기능점수를 계산하여 검증한다.
개발주기 |
기능 |
개발관리 |
총포인트 | |||
기능점수 |
담당자 |
상태 | ||||
주기1,2 |
정보관리 |
사용자관리 |
19.8 |
개발자1 |
59.4 | |
부서관리 |
19.8 |
개발자2 |
||||
결재양식관리 |
19.8 |
개발자3 |
||||
주기3 |
결재요청 |
결재문서작성 |
4.0 |
개발자1 |
23.6 | |
결재선입력 |
4.0 |
개발자1 |
||||
결재양식선택 |
3.9 |
개발자2 |
||||
결재선검색 |
3.9 |
개발자2 |
||||
결재처리 |
결재문서목록조회 |
3.9 |
개발자3 |
|||
결재문서조회 |
3.9 |
개발자3 |
||||
주기4 |
결재처리 |
4.0 |
개발자1 |
|||
결재상태조회 |
3.9 |
개발자1 |
20.9 | |||
결재문서출력 |
7.8 |
개발자2 |
||||
정보관리 |
월별결재통계 |
5.2 |
개발자3 |
?
위 표에서 각 주기별로 균등하지만 않지만, 대략 비슷하게 점수가 배분되었으므로 이에 따라 진행하는 것으로 결정한다.
?
- 인력할당계획 검증
주기에 대한 적정성이 검증되었다면 각 개발자의 업무부하의 적정성을 검증한다. 앞의 주기검증과 마찬가지로 개발계획을 다시 각 개발자별로 분류하여 개발자당 개발 기능점수를 산출한다.
?
담당자 |
총포인트 |
개발주기별 포인트 | |||
주기1 |
주기2 |
주기3 |
주기4 | ||
개발자1 |
35.7 |
9.9 |
9.9 |
8 |
7.9 |
개발자2 |
35.4 |
9.9 |
9.9 |
7.8 |
7.8 |
개발자3 |
32.8 |
9.9 |
9.9 |
7.8 |
5.2 |
총계 |
29.7 |
29.7 |
23.6 |
20.9 |
?
이 역시 검증 결과, 각 개발자 별로 거의 비슷한 점수를 개발하므로, 적정하다고 판단한다.
?
- 진척관리
적정한 일정 및 인력계획을 수립했으므로, 계획대로 프로젝트를 진행한다. 구현단계에서 실제 개발 진척도의 관리는 이미 수립한 개발계획을 기반으로 개발주기별로 완료한 점수를 체크하여 관리한다.
?
총 기능점수 |
103.9 |
||||
개발주기 |
기능점수 |
번다운계획 |
실완료포인트 |
실제번다운 |
진척도 |
시작 |
0 |
103.9 |
0 |
103.9 |
0% |
주기1 |
29.7 |
74.2 |
28 |
75.9 |
27% |
주기2 |
29.7 |
44.5 |
25 |
50.9 |
51% |
주기3 |
23.6 |
20.9 |
15 |
35.9 |
65% |
주기4 |
20.9 |
0 |
35.9 |
0 |
100% |
?
?
번다운은 완료한 기능을 기준으로 하는 것이 아니라 남은 기능, 즉, 앞으로 개발을 해야 하는 기능을 기준으로 산출된다. 즉, 시각적으로 얼마나 많은 일이 남아 있는지를 표현하므로 프로젝트의 진행상황을 파악하기에 매우 용이하다. 위 표를 이용하여 번다운 차트를 작성하여 아래와 같이 표시할 수 있다.
위와 같이 계획과 실진척을 하나의 그래프로 표현하여 진척상황을 쉽게 파악할 수 있다. Agile 측에서는 이와 같은 시각적인 차트를 잘보이는 곳에 출력하여 게시할 것을 권장하고 있다. 실제로 진척상황을 개발팀이 항상 보이는 곳에 게시하면 진척에 대한 자극제 역할을 할 수 있다.
?
- 성과관리
진척관리를 할 때, 주기별 진척도만을 관리할 수도 있지만, 앞에서 설명한 바와 같이 각 개발자의 평균 개발속도를 산출하거나, 각 개발자의 프로젝트 기여도에 따른 성과 및 보상을 하려는 경우, 각 개인별로 개발한 기능점수를 관리하는 것이 좋다.
프로젝트를 수행하다보면 일반적으로 계획과 실제 개발이 다르게 진행될 때가 많다. 개발담당자도 각 개발자의 개발속도 차이에 의하여 실제로 계획과 다른 개발자가 개발할 수도 있으므로, 각 주기별로 실제 기능별 개발자를 기록하여 프로젝트 종료시 전체 개발성과를 산출한다. 이 데이터를 지속적으로 관리하여 각 개발자의 평균개발속도의 정확도를 높일 수 있다. 또한 각 개발자의 개발기여도를 산출하여 성과에 반영할 수도 있다.
?
담당자 |
계획기능점수 |
개발기능점수 |
개발기간㈜ |
평균 개발속도 |
개발자 1 |
35.7 |
39.7 |
4 |
9.9 |
개발자 2 |
35.4 |
31.4 |
4 |
7.9 |
개발자 3 |
32.8 |
32.8 |
4 |
?