소프트웨어 개발은 일정 지연, 비용 초과, 품질 저하 -> 유지보수 비용도 더욱 증가
=> 그렇게 때문에 계획이 중요
개발 비용 산정이 어려움: 사람(개발자)이 중심이기 때문에 개발 인력의 능력에 따라 품질의 차이가 크다, 개발 프로세스가 다양하기 때문에 표준화, 자동화가 어려움
개발 비용 산정에 영향을 주는 요소: 프로그래머 자질, 소프트웨어 복잡도, 소프트웨어 크기, 가용 시간, 요구되는 신뢰도 수준, 기술 수준 (고급 언어, 저수준 언어 등)
: 경험이 많은 여러 전문가가 프로젝트를 수행하는 데 비용이 어느 정도 들어가는지 평가한 금액을 개발 비용으로 산정 -> 짧은 시간에 개발비를 산정하거 입찰에 응해야 하는 경우에 사용
+: 신뢰성이 있고 편리
-: 경험에만 의존시 부정확할 수도 O
조정자(coordinatior)를 둔다
: 프로젝트 세부 작업 단위별로 비용을 산정한 후 전체 비용을 합산하는 방법
: 비관치/ 낙관치/ 기대치 측정 -> 예측치 계산 -> 비용 산정 (노력, 비용, 생산성)
낙관치: 한 모듈의 라인 수를 가장 적게 생각할 때의 예상 라인 수 (가중치 1 부여)
비관치: 한 모듈의 라인 수를 가장 많게 생각할 때 (1 부여)
중간치: 한 모듈의 라인 수를 보통으로 생각할 때 (4 부여)
추정 LOC: (낙관치 + (4 * 중간치) + 비관치) / 6
노력 (인/ 월수) = (참여 인원 / 월) * 개발 기간 = 추정 LOC / 1인당 월평균 생산 코드 라인 수
개발 비용 = (M/M) X 단위 비용
개발 기간 = (M/M) / 참여 인원
생산성 = LOC / (M/M)
E= ATS X S
: 각 기능을 구현하는 데 필요한 M/M 을 소프트웨어 개발 생명주기의 각 단계에 적용해 단계별로 산정한다.
: SW 규모(LOC) 예측 후 SW 종류에 따라 각 비용 산정 공식에 대입하여 비용을 산정한다.
LOC 추정 -> 준비된 식에 대입 -> M/M 예측
프로그램에 유형에 따른 가중치, 4가지 특성(제품, 컴퓨터, 개발자, 프로젝트) 에 따른 15가지 분류 고려
-> 갈수록 M/M이 더 필요
2.보정 계수 반영하기
노력 조정 수치 (EAF) = 필요한 각 항목별 승수 값을 모두 곱한 값
: 원시 코드의 라인 수를 정확히 예측하기 어렵다. 그렇기 때문에 소프트웨어 개발 프로젝트가 진행된 정도에 따라 3가지 다른 모델.
단계별로 값을 예측 -> 인건비 예측
공수 (MM=PM=노력=E)
기능 점수 (FP)
- 내부 논리 파일 (Internal Logical File, ILF)
- 외부 연계 파일 (External Interface File, ELF)
- 외부 입력 (External Input, EI)
- 외부 출력 (External Output, EO)
- 외부 조회(External inQuiry, EQ)
+: 사용자의 요구사항만으로 기술을 추출해 측정, 객관적인 요구사항만으로 측정, 모든 개발 단계에서 사용
-: 높은 분석 능력 필요, 기능 점수 전문가 필요, 내부 로직 위주의 소프트웨어에는 다소 부적합, 개발 공수보다 개발 규모 측정에 적합
과거에 수행한 소프트웨어의 기능 점수 산정 결과를 분석해 5가지 유형에 적용된 복잡도를 계산한 가중치의 평균값
내부 논리 파일: 7.5
외부 연계 파일: 5.4
외부 인력: 4
외부 출력: 5.2
외부 조회: 3.9
데이터 기능 점수 = (ILF 개수 X 7.5) + (EIF 개수 X 5.4)
복잡도는 입력, 출력, 조회의 개수로 계산된다.
트랜잭션 기능 점수 = {(EI 개수 X 4.0) + (EO 개수 X 5.2) + (EQ 개수 X 3.9)}
미조정 기능 점수 (Unadjusted Function Point, UFP) : 데이터 기능 점수 + 트랜잭션 기능 점수
보정 전 개발 원가 = 미조정 기능 점수 X 기능 점수당 단가
- 연계 복잡성 수준: 연계 기관 수에 따른 보정 계수 적용
- 성능요구 수준: 사용자가 빠른 응답 시간 또는 높은 처리율을 요구
- 운영 환경 호환성: 개발 완료되어 설치할 때 운영 환경이 단순하지 않고 다영할 때
- 보안성 수준: 시큐어 코딩, 웹 취약점, 암호화 점검, 개인정보 보호
보정 후 개발 원가 = 보정 전 개발 원가 X (규모 보정 계수 X 연계 복잡성 수준 보정 계수 X 성능 요구 수준 보정 계수 X 운영 환경 보환성 보정 계수 X 보안성 수준 보정 계수)