
나는 SI/SM 회사에서 일하고 있다.
회사에서 고객사에게 프로젝트 사전영업을 한다고 하는데, pm님이 공수 산정하는 것을 한번 해보라고 나에게 challenge를 던져주셨다. 그동안 SM 업무를 해왔기 때문에 MM(Man-Month)를 어떻게 계산해야 하는지조차 감이 안 왔다....😭 공수 산정에 앞서 FP(Function Point)를 알아야 한다고 해서 공부한 것을 써보려 한다.
Function Point (FP)는 소프트웨어의 기능적 요구사항을 기반으로 소프트웨어 규모를 측정하는 방식이다. 이는 시스템의 기능을 측정해 개발 공수나 비용을 산정하는 데 유용합니다. 기능이 얼마나 복잡한지에 따라 FP 점수를 할당하고, 이를 통해 프로젝트의 규모와 리소스를 예측한다.
FP는 주로 5가지 기본 요소로 나뉜다.
- 외부 입력 (External Input, EI): 시스템 외부에서 입력되는 데이터나 제어 정보. 예를 들어, 사용자가 입력하는 폼 데이터.
- 외부 출력 (External Output, EO): 시스템이 외부로 출력하는 데이터. 보고서나 알림 메시지 등
- 내부 논리 파일 (Internal Logical File, ILF): 시스템 내부에 저장된 논리적 데이터 그룹. 예를 들어, 데이터베이스 테이블.
- 외부 인터페이스 파일 (External Interface File, EIF): 다른 시스템에서 관리하는 데이터, 하지만 이 시스템에서 참조하는 데이터. 예를 들어, 외부 API를 통해 얻는 데이터.
- 외부 질의 (External Inquiry, EQ): 입력과 출력이 결합된 형태로, 사용자가 시스템에 질의하면 시스템이 응답하는 기능.
쇼핑몰 웹사이트를 개발한다고 가정할 때
• 고객 로그인 기능은 외부 입력 (EI)
• 주문 확인 페이지는 외부 출력 (EO)
• 고객 정보 데이터베이스는 내부 논리 파일 (ILF)
• 외부 결제 시스템과의 연동은 외부 인터페이스 파일 (EIF)
• 주문 상태를 조회하는 기능은 외부 질의 (EQ)
각 기능에 따라 복잡도를 산정한 후, FP 점수를 할당하고 이를 기반으로 공수를 계산할 수 있다. FP 분석은 개발이 필요한 기능의 크기를 정량적으로 평가하여 프로젝트의 전체적인 규모를 정확하게 산출하는 데 도움을 준다.