정은주*․유천수**
A Software Maintenance Cost Estimation Model based on Real Maintenance Efforts
Eunjoo Jeong*․Cheonsoo Yoo**
Abstract
The cost of software maintenance occupies about two thirds in the software lifecycle. However, it is not easy to estimate the cost of software maintenance because of various viewpoints about software maintenance, unclear estimation methods, and complex procedures. Until now, the cost estimation model has used compensation factors for software characteristic and environment on the basis of program size.
Especially, most of existing models use maintenance rate of total software cost as a main variable.
This paper suggests the software maintenance cost estimation model that uses the result of calculating real maintenance efforts. In this paper, we classify functional maintenance and non-functional maintenance as software maintenance activity type. For functional maintenance, present function point of target software is needed to evaluate. The suggested maintenance cost evaluation model is applied to a software case in public sector. This paper discusses some differences between our model and other modes.
Keywords:Software Maintenance, Cost Estimation Model, Real Maintenance Efforts
1)
논문접수일:2012년 05월 07일 논문게재확정일:2012년 06월 17일
※ 본 논문은 한국국방연구원 정책연구과제(11-10-136)의 일부 결과를 활용하여 작성되었습니다.
* 교신저자, 국방전산정보원 군수정보체계운영담당, 광운대학교 대학원 방위사업학과 박사과정, e-mail : [email protected]
** 한국국방연구원 국방획득연구센터 책임연구위원, 경영정보공학 박사, e-mail : [email protected]
1. 서 론
소프트웨어 유지보수란 개발된 소프트웨어를 인도 후에 기술발전에 따른 운영환경의 변화 또 는 업무처리절차상의 변경으로 인하여 운영하 는 소프트웨어를 변경하는 활동이다. 그 활동은 대상 소프트웨어의 오류를 수정하거나 기능을 향상시키는 활동 및 새로운 운영환경에 적응토 록 프로그램 소스 코드를 변경하는 것이다[한국 소프트웨어산업협회, 2012]. 소프트웨어 유지보 수 활동은 소프트웨어 수명주기 프로세스의 한 과정으로 전체 활동의 67% 이상을 차지하는 주 요한 활동이며, 유지보수 비용 또한 소프트웨어 개발비의 50~75%를 차지할 정도로 중요한 비 중을 차지하고 있다[김진수, 2004].
정보화 촉진에 따라 기관별로 다양한 정보체 계들을 구축하여 운영함에 따라 유지보수 활동 이 중요한 이슈로 대두되고 있다. 개발된 정보 체계들은 시간이 지남에 따라 새로운 기술의 발 전과 사용자들의 다양한 요구사항 수용으로 소 프트웨어 크기는 증가하고, 정보체계 운영 환경 변화에 따른 업무처리 방식이 다양화되어 유지 보수 규모는 더욱 증대되고 있다. 즉, 유지보수 비용은 매년 증대되고 있지만 유지보수에 대한 시각차가 다양하고, 유지보수비 산정방법 및 절 차가 불명확 하여 적정한 유지보수비를 산정하 여 예산에 반영하는 것이 어려운 실정이다[유천수, 2011].
현재 공공기관에서 소프트웨어 유지보수비 산정은 대부분 체계 개발 계획단계에서 산정된 개발비를 기초로 일정 요율을 반영하는 요율제 적용방식을 채택하고 있어, 실제 유지보수에 투 입되는 노력과 소프트웨어의 규모를 고려하지 못하고 있다. 또한, 유지보수 비용산정 기준 자 체가 다양한 정보화 프로젝트를 대상으로 유도 되지 않았고 검증되지 못하여 현재의 소프트웨
어 규모를 고려한 성능개선 사업비나 적정 유지 보수비를 반영하지 못하고 있는 실정이다[이성일, 2011].
본 연구에서는 소프트웨어 유지보수 비용의 산 출근거를 보다 객관적으로 제시하기 위하여 현재 운용하고 있는 소프트웨어 규모를 기능점수(FP, Function Point)로 실측하고, 유지보수 활동을 유 형별로 구분하여 기능개선을 포함한 유지보수에 투입된 노력량을 측정하여 전체 비용을 산정하는 방식으로 접근한 새로운 소프트웨어 유지보수 비 용산정 모형을 제안하여 유지보수 추정비용에 대 한 객관성을 확보하고, 공공기관의 유지보수 예산 편성 요구 시 객관성 있는 근거자료로 활용함은 물론 계약 시 발주자와 수주자 모두가 공감할 수 있는 타당성 있는 비용산정 모형을 제안함을 목적 으로 한다.
본고의 구성은 다음과 같다. 제 2장에서는 소 프트웨어 유지보수 비용산정 관련 연구에 대하 여 살펴본다. 특히, 현재 활용되고 있는 비용산 정 모형과 모형개선을 위한 연구 문헌들을 고찰 한다. 제 3장에서는 유지보수 유형별 투입노력 양에 기반한 비용산정 모형을 제안한다. 제 4장 은 연구에서 제안한 비용산정 모형을 적용하여 현재 운용중인 정보체계에 적용하여 유지보수 비를 산정하고, 기존 모형을 적용하여 산정된 유지보수비와 비교하여 차이점과 원인을 분석 한다. 제 5장은 제안된 모형의 의미와 제안된 모델의 한계점에 대하여 논의하고, 향후 연구과 제 등을 기술한다.
2. 관련 연구
2.1 소프트웨어 유지보수 유형
소프트웨어 유지보수는 소프트웨어 산물이 사용자에게 인도된 후 필요한 기능을 수정과 보 완으로 최적화하는 작업으로써 개발과 같이 분
석, 설계, 구현, 시험단계를 거치게 된다. 하지 만, 신규개발과는 달리 기존의 소프트웨어를 교 정하고 새로운 기능을 추가하며 모든 기능들이 예전처럼 작동되도록 하여야 하므로 개발에 버 금가는 힘든 작업이라 할 수 있다[Mishra et al., 2011]. 이러한 소프트웨어 유지보수는 운영 과정에서 발생하는 결점 및 오류사항을 보완하 는 하자보수(corrective), 보다 편리한 사용을 위 한 기능개선(perfective), 사용 환경변화에 따른 무결성 유지를 위한 환경적응(adaptive) 유지보 수로 구분할 수 있다. 더불어 오류가 나타나기 전에 잠재적인 결점을 탐지하고 수정하는 예방 조치(preventive)도 포함된다[한국소프트웨어산 업협회, 2012].
소프트웨어 유지보수 비용산정을 통해 제시 된 규모는 예측치에 해당한다. 유지보수 대상 소프트웨어 규모를 측정하는 방법으로는 LOC (Line of Code), 기능점수, 객체점수 등이 사용 될 수 있으나, IFPUG(International Function Point Users Group)에서는 유지보수 활동의 기능개선을 소프트웨어 개선(enhancement) 프로젝트와 동 일한 개념으로 간주하여 기능점수를 적용하여 소프트웨어 유지보수 규모를 측정한 후 대가를 산정하는 모델을 제안하고 있다[IFPUG, 2000].
2.2 공공분야 소프트웨어 비용산정 모형 공공분야의 소프트웨어 유지보수 비용산정 방식은 IFPUG의 기능점수 산정방식을 벤치마 킹하여 지식경제부에서 고시한 “소프트웨어사업 대가의 기준”을 근거로 하고 있다[지식경제부, 2010]. 현재는 민간 자율로 결정하도록 유도하 기 위하여 2012년 2월 26일부로 이를 폐지한 후 한국소프트웨어산업협회에서 “SW 사업 대가산정 가이드”를 제시하여 적용토록 하고 있다[한국 소프트웨어산업협회, 2012]. 이 가이드에서는 SW
사업 대가산정 프로세스를 기획단계, 구현단계, 운영단계로 구분하고 운영단계의 대가산정 유형 을 소프트웨어 유지보수비와 운영비로 구분한다.
유지보수 대가산정 방식은 기본적으로 요율제 방식, 고정비/변동비 방식, SLA(Service Level Agreement) 기반 정산방식 등 3가지 방식으로 대가를 산정토록 하고 있다.
요율제 대가산정 방식에서는 먼저 대상 소프 트웨어의 규모를 현재가치로 재평가한다. 다음으 로 시스템 난이도 총점수를 이용하여 유지보수 요율(10~15%)을 결정하고, 현재 계약시점에서 재평가된 소프트웨어 가치에 결정된 유지보수 요율을 곱한 다음 직접경비를 더하여 계산한다.
고정비/변동비 대가산정 방식은 소프트웨어 유지보수를 운영과 기능개선으로 구분한다. 운 영은 시스템을 운영하는데 소요되는 고정된 인 력운영비로 보고 투입공수 또는 요율제 방식으 로 산정하고, 기능개선은 기능변경이나 개선에 투입되는 변동비로 소프트웨어 개발비 산정방 식을 적용한다. 대가산정은 운영에 해당하는 고 정비와 기능개선에 해당하는 변동비를 합한 다 음 직접경비를 더하여 계산한다.
SLA 기반 정산 방식은 SLA 협약에 따라 정의 된 서비스 측정 항목 및 기준을 적용하여 매월 서비스 평가를 시행하고, 평가결과를 토대로 유 지보수 대가를 사후에 정산하는 방식이다[정상철, 2008].
2.3 유지보수 비용산정 관련 문헌 고찰 류성열의 연구에서는 유지보수 비용 예측을 위해 소프트웨어 수명주기 각 단계에서 소모된 공수를 프로그램의 크기로 산정하고, 이 프로 그램의 크기와 실제 사용한 노력을 이용한 경 험적 고정 단일 변수 모형을 만들어 프로그램 크기에 따른 소요공수를 계산한다. 유지보수
비용은 소프트웨어의 복잡도, 유지보수자의 숙 련도, 요구되는 신뢰도 및 완료일자에 따라 소 요되는 노력이 달라지므로 이를 조정할 수 있 는 노력 보정계수를 설정하여 점진적으로 정확 도를 높일 수 있도록 예측 모형을 설계하였다 [류성열, 1996].
안연식의 연구에서는 유지보수 소프트웨어 규 모를 IFPUG에서 개발된 기능점수법을 적용하여 산정한다. 소프트웨어 유지보수 프로젝트의 생산 성에 영향을 미치는 유지보수 환경, 프로덕트, 투입인력 등 3개 영역에서 도출된 유지보수의 생산성 요소를 고려한다. 생산성 요소는 적용업 무에 대한 실무지식, 해당 프로그래밍 언어에 대한 지식, 해당 소프트웨어의 시스템 환경지식, 모듈의 구조성, 모듈의 독립성, 프로그래밍 언어 의 종류, 프로그램의 재사용성, 문서화 상태, 자원 의 표준화 준수상태, 시스템 설치의 용이성 등 10개의 특성으로 이루어지며 이를 보정요소로 설정한 후 유지보수 비용 예측을 위한 소요인력 규모를 측정하는 비선형 회귀모형을 제시하였다 [안연식, 1999].
배준수의 연구에서는 유지보수 대상 시스템 의 규모인 기능점수를 통하여 유지보수 사업을 예측한다. 특히, 투입될 공수를 예측하는 회귀 모형을 제안하고, 유지보수 유형(기능 변경, 비 기능 변경, 사용자 지원, 어플리케이션 운영)에 따라 비용요인이 다르기 때문에 차별화된 대가 모형을 사용하여 유지보수 생산성에 기반한 대 가산정 모델을 제안하였다[배준수, 2004].
상기의 여러 연구에서는 유지보수 비용을 예 측하기 위하여 소요공수를 계산하는 방식으로 접근하고 있다[Stark, 2011]. 본 연구에서는 소 프트웨어 유지보수 유형별 세부적인 활동을 정 의하고, 유형별로 투입된 노력 양을 측정하여 전체 유지보수 비용을 산정하는 새로운 모형을 제안하고자 한다.
3. 투입노력 기반의 유지보수 비용산정 모형
3.1 소프트웨어 유지보수 비용 구조
소프트웨어 유지보수 활동은 시스템을 운영 하면서 운영환경 또는 업무처리절차 변경에 따 라 소프트웨어를 변경시키는 활동이다. 이 개념 을 확대하면 소프트웨어 유지보수 유형은 시스 템을 운영하는 과정에서 발생하는 결점 및 오류 사항을 보완하는 하자보수(corrective)와 변경된 사용자 환경이나 요구를 반영하는 개선(enhance- ment)으로 구분되며, 여기에 운영을 포함하는 개념으로 볼 수 있다[한국국방연구원, 2007]. 이 중에서 개선은 비용이나 시간적으로 많은 노력 이 소요되면서 큰 비중을 차지한다[Lee et al., 2011].
유지보수 활동유형은 대상 시스템의 기능을 개선하거나 변경하는 기능적 유지보수 활동과 기능 변경과 관련 없이 단순히 대상 시스템을 운영하는 비기능적 유지보수 활동으로 대별할 수 있다. 따라서 소프트웨어 유지보수 비용구조 는 크게 기능적 유지보수 활동에 소요되는 기능 적 유지보수비, 기능변경과는 관련 없이 단순운 영에 소요되는 비기능적 유지보수비, 체계를 운 영하는데 소요되는 직접경비 그리고 유지보수 활동 수행자들의 이윤 등으로 구분할 수 있다.
기능개선 및 변경 요구사항에 대하여는 업무 처리절차 변경이나 운영환경 변화 등 사전에 변 경소요를 인지하고 프로그램 및 데이터 변경에 따른 영향요인을 분석 후 작업소요와 일정을 계 획하여 추진하는 계획적 유지보수와 체계를 운 영하면서 계획되지 아니한 긴급 개선소요 또는 사용자의 즉각적인 변경요구에 긴급 대응하는 비계획적 유지보수로 구분할 수 있으며, 소프트 웨어 운영 특성상 계획 유지보수 보다는 비계획
유지보수 사항이 더 많은 특징을 보인다[한국전 산원, 2002]. 일반적으로 계획 유지보수 사항은 계약 이전에 식별되어 유지보수 용역계약시 계 약 목적물로 첨부되어 수행된다.
정보 체계의 진화적 유지보수 개념을 고려하 여 소프트웨어 유지보수 비용산정 방식을 기능 변경 부분은 소프트웨어 개발비 산정방식에 적 용한 “기능점수 방식”을 적용하고, 체계 운영지 원을 위해 고정적으로 투입되는 인력은 “투입 공수제” 방식을 적용하는 방안이 적절하다고 판 단된다[Khatibi and Dayang, 2010]. 따라서 연 간 소프트웨어 유지보수에 소요되는 경비는 계 획된 기능적 유지보수비, 비계획된 기능적 유지 보수비, 비기능적 유지보수비(운영), 직접경비 그리고 이윤 등을 고려하여 계산할 수 있으며
<그림 1>과 같이 도시할 수 있다.
소프트웨어 유지보수비
기능적 (계획) 유지보수비
기능적 (비계획) 유지보수비
기능비적 유지보수비
직 접
경 비 이 윤
<그림 1> 소프트웨어 유지보수 비용 구조
3.2 유지보수 유형별 비용산정 및 절차 3.2.1 기능적(계획) 유지보수비
계획된 기능적 유지보수비 산정은 유지보수 범위에 해당하는 규모의 기능점수를 측정하고, 기능점수 단가와 보정계수를 곱하여 산정할 수 있다. 이를 수식으로 표기하면 다음과 같다.
기능적(계획) 유지보수비 =
기능점수(측정범위 : 유지보수 범위에 한정) × 기능점수 단가 × 보정계수
3.2.2 기능적(비계획) 유지보수비
계획되지 아니한 기능적 유지보수비 산정은 체계 운영 중 사용자의 긴급개선 요구에 의해 수시로 발생하는 기능개선 분야를 유지보수 하 는 것으로 사업범위가 계획되어 있지 않아 정확 한 규모를 사전에 알 수 없다. 다만, 이에 대한 유지보수비 산정은 유지보수 대상이 되는 소프 트웨어 규모를 측정하여 과거 비계획 유지보수 실적을 근거로 예상치를 추정하여 활용할 수 있다.
따라서 계획되지 아니한 기능적 유지보수비 산 정은 유지보수 예상 건수를 예측하여 유지보수 1건당 투입되는 노력을 곱한 다음 여기에 기능 점수 단가와 보정계수를 곱하여 추정할 수 있다.
이를 수식으로 표기하면 다음과 같다.
기능적(비계획) 유지보수비 = 비계획 유지보수 예상건 수 ×
유지보수 1건당 유지보수 노력(FP/건) × 기능점수 단가 × 보정계수
여기서 계획되지 않은 유지보수 예상 건수는 당해 연도 비계획 유지보수 예상 건수를 이전 년도 유지보수 종료 후의 소프트웨어 규모와 이 전 년도 비계획 유지보수 이력 건수의 비율을 사용하여 예측한 후 활용한다. 이를 위하여 당 해 연도 소프트웨어 규모는 계획단계에서 개략 적으로 산정되어 있어야 한다. 다음으로 유지보 수 1건당 유지보수 노력(FP/건)은 이전 년도 유 지보수 추진실적 자료(분기별 Log 자료)를 활용 하여 계산한다. 유지보수 상세 데이터 부족 등 으로 유지보수 1건당 기능점수를 계산하지 못 하는 경우에는 유지보수 1건당 투입인력 자료 를 활용하여 1건당 유지보수 비용으로 환산하 여 대신 사용할 수도 있다. 다음으로 기능점수 단가와 보정계수를 곱하여 산정한다.
3.2.3 비기능적 유지보수비
비기능적 유지보수비 산정은 체계운영에 투 입되는 인력운영비로 투입 인력 수에 투입기간 과 기술자등급별 단가를 곱하여 산정한다. 이를 수식으로 표기하면 아래와 같다.
비기능적 유지보수비(운영) =
투입 인력수× 투입기간× 기술자등급별 단가
3.2.4 직접경비 및 이윤
직접경비는 대상 소프트웨어 유지보수에 소 요되는 직접적인 경비를 의미하며, 포함되는 항 목들은 유지보수에 활용되는 컴퓨터 시스템 또 는 소프트웨어 도구 사용료, 전문가 비용, 인쇄 및 청사진비, 자료조사 및 출장 여비 등 SW 사 업 대가산정 가이드를 참조한다[한국소프트웨어 산업협회, 2012].
이윤은 순수한 유지보수비를 기준으로 원가 의 25% 이내에서 산정한다[한국소프트웨어산업 협회, 2012].
3.2.5 유지보수 비용산정 절차
앞에서 언급한 유형별 산정비용을 모두 합한 값이 전체 유지보수 비용이 되며, 이를 산정 절 차대로 도시하면 아래 <그림 2>와 같다.
<그림 2> 유지보수 비용산정 절차
3.2.6 유지보수 비용산정 수식
유지보수 비용산정을 위한 유형별 산정수식 및 파라미터는 <표 1>과 같이 정의한다. 여기 서 X는 유지보수 비용을 산정하고자 하는 당해 연도를 의미하며, 유지보수 계획시점 연도는 X-1 로 한다.
구 분 당해 연도(X)
기능점수/투입공수 비용
S/W
총 규모
기능적(계획)
유지보수 (=
) 기능적(비계획)
유지보수 (= *)
비기능적
유지보수 (투입공수)
직접경비
이윤
<표 1> 유형별 유지보수비 산정 수식
∙ : 유지보수 대상 S/W에 대하여 당 해 년도 유지보수 후 S/W 규모 예측값
∙ : 단위기능 에 대하여 당해 년도 유지보수 계획에 반영된 유지보수 노력
∙ : 유지보수 대상 S/W의 계획산정 시점의 규모(
)∙ : 단위기능 에 대하여 현재 시 점(X년 초)에 산정한 기능점수
∙ : 단위기능 에 대하여 당 해 연도 유지보수 유형별(추가, 삭제, 수정) 기존 기능점수에 대한 영향요인
∙ : 당해 연도(X년)에 대한 계획 유지 보수 비용
∙ : 당해 연도(X년)에 대한 계획 유지보수 대상 기능에 대한 기능점수의 총합
∙ : 당해 연도(X년)에 예상되는 비 계획 유지보수 건수
∙ : 유지보수 1건당 평균 유지보수 노력 ( =
)
∙ : 당해 연도(X년)에 대한 비계획 유 지보수 비용
∙ : 당해 연도(X년)에 대한 비 계획 유지보수 대상 기능에 대한 기능점 수의 총합
∙ : 당해 연도(X년)에 대한 비기능적 유지보수 비용
∙ : 당해 연도(X년) 유지보수 사업에 대한 직접경비
∙ : 당해 연도(X년) 유지보수 사업에 대 한 이윤
∙ : 당해 연도(X년) 유지보수 사업에 대한 총 비용(즉, 계획 예산)
3.3 유형별 비용산정 세부절차 3.3.1 기능적 계획 유지보수비 산정
기능적 계획 유지보수비 산정은 유지보수 범 위에 한정된 기능변경 규모를 기능점수 방식을 사용하여 산정한다. 기능적 유지보수 유형은 새 로운 기능을 추가(add)하거나 기존 기능을 삭제 (delete) 또는 수정(modify)하는 형태로 구분하 여 유지보수 노력을 산정한다. 여기서 기능 수 정은 데이터 함수에 대한 수정과 트랜잭션 함수 에 대한 수정으로 세분화하여 산정한다. 다음으 로 유지보수 유형별 기존 기능점수에 대한 영향 요인(impact factor)을 적용하는데, 영향요인은 NESMA의 소프트웨어 기능점수 분석모델에서 식별된 각 기능(데이터, 트랜잭션)의 변경정도 를 벤치마킹하여 적용한다[NESMA, 2009]. 이 를 수식으로 표기하면 다음과 같다.
∙ 계획 유지보수 기능점수()
= 기능점수(측정범위 : 유지보수 범위에 한정) × 영향요인 값
= ×
∙ 계획 유지보수의 총 기능점수() =
⦁ 기능적 계획 유지보수비 대가 산정
=
× 단계별 기능점수 단가
×보정계수
3.3.2 기능적 비계획 유지보수비 산정
계획되지 않은 기능적 유지보수비 산정은 유 지보수 규모를 파악할 수 없으므로 과거 유지보 수 이력 데이터(Log Data)자료를 활용하여 예 측치 규모의 노력정도를 추정한다. 계획되지 않 은 유지보수의 예상 건 수()를 파악할 수 있 으면 여기에 건당 평균 유지보수 노력 양을 곱 하여 계획되지 않은 유지보수의 노력 양을 예측 할 수 있다. 따라서 예상 유지보수 건수는 유지 보수 대상 소프트웨어의 현재 규모(FP), 즉 이전 년도 유지보수 종료 후 소프트웨어 규모( ) 와 당해 년도 유지보수 후 소프트웨어 규모(), 그리고 이전 년도 비계획 유지보수 이력 건수 ( )를 사용하여 예측한다.
×
또한, 유지보수 1건당 유지보수 노력()은 이전에 수행한 비계획 유지보수 1건당 평균 유 지보수 노력으로 계산한다.
=
계획되지 않은 기능적 유지보수의 예상 건수 와 1건당 평균 유지보수 노력이 파악되었으므 로 기능점수를 구하는 수식은 다음과 같이 표기 할 수 있다.
⦁비계획 유지보수 기능점수(
)
= 비계획 유지보수 예상건수
× 유지보수 1건당 평균 유지보수 노력(FP/건)
=
×
=
× ×
다음으로 계획되지 않은 유지보수 규모인 비 계획 기능점수를 예측하였으므로 유지보수 1건 당 평균 유지보수 노력을 곱하여 비계획 유지보 수 대가를 산정할 수 있다. 유지보수 1건당 평 균 유지보수 노력은 과거 유지보수 이력자료를 기초로 기능점수 단가 또는 평균 인건비를 계산 하여 산정할 수 있다.
첫 번째 방안으로 과거 유지보수 이력 자료를 활용하여 유지보수 1건당 기능점수 단가를 사용하여 산정하기 위한 수식은 다음과 같다.
⦁ 기능점수 기반의 비계획 유지보수비 대가 = × 기능점수단가 × 보정계수
두 번째 방안으로 과거 유지보수 이력 자료를 활 용하여 유지보수 1건당 투입한 평균 인건비를 사용 하여 산정 시 표기된 수식은 다음과 같다.
⦁ 투입인력 기반의 비계획 유지보수비 대가
= ×
3.3.3 비기능적 유지보수비 산정
비기능적 유지보수비는 대상 체계를 운영하
는 인력운영비로 고정비용 개념으로 산정한다.
방식은 투입 인력 수, 투입 기간, 기술자별 등급 단가를 사용하여 유지보수 노력을 산정한다. 이 를 수식으로 표기하면 다음과 같다.
⦁ 비기능적 유지보수비()
= 투입 인력 수× 투입 기간× 기술자별 등급단가 + 제경비 + 기술료
3.3.4 총 유지보수비 산정
직접경비()는 기능적 유지보수 및 비기 능적 유지보수에 소요되는 직접적인 경비로 컴 퓨터 및 소프트웨어 도구사용료, 특정기술 도입 과 관련된 전문가 자문비, 산출물 인쇄비, 자료 조사비, 기자재 시험비, 여비 및 현장 운영비 등 소프트웨어 유지보수 수행 시 요구되는 직접경 비 항목들을 반영한다.
소프트웨어 유지보수비의 이윤은 기능적 유 지보수 및 비기능적 유지보수에 대하여 유지보 수 원가의 25% 범위 내에서 반영한다.
⦁ 유지보수 이윤()
= {기능적(계획) 유지보수비+ 기능적(비계획) 유지보수비 + 비기능유지보수비}
× 비율(0~25%)
이상에서 기술한 바와 같이 총 유지보수비 산 정은 기능적(계획, 비계획) 유지보수비 및 비기 능적 유지보수비 그리고 직접경비와 이윤을 모 두 합하여 총 유지보수비를 계산한다.
⦁ 총 유지보수비용()
= 기능적 계획 유지보수비(
) + 기능적 비계획 유지보수비(
) + 비기능 유지보수비()
+ 직접경비() + 이윤()
연도별 개발비 기준 (억 원)
유지보수
예산(억 원) 요율(%)
2012 194 23.9 12.3
2011 194 19.9 10.2
2010 161 8.13 5.1
2009 161 8.05 5.0
2008 161 10.1 6.3
2007 161 7.74 4.8
2006 161 11.1 6.8
2005 161 11.2 6.9
<표 2> A 체계 유지보수 예산
4. 모형별 유지보수비 산정 적용사례
4.1 적용 체계 소개
앞 장에서 제안한 유지보수 비용산정 모형에 적용할 사례는 ○○부처에서 사용하고 있는 A 체계를 사례로 적용한다. A 체계는 161억 원의 개발비로 2001년 5월에 개발을 완료하여 전국 161개소에 서버를 분산 설치하여 운영하다가 2009년 6월에 성능개선비 33억 원을 투입하여 성능개선을 추진한 결과 서버를 통합하여 중앙 에 단일 서버를 위치시키고, 부처 내의 타 정보 체계와 연동부분을 추가로 개발하여 현재에 이 르고 있다. 체계 규모는 C++ 및 Delphi 언어로 개발되어 프로그램 수 2,470본으로 전체크기는 2,089,186 LOC(Line of Code)와 1,206개의 데이 터베이스 테이블로 구성되어 있으며, 등록된 사 용자 수는 5,300여명으로 구성된 대형 체계이다.
현재까지 유지보수비 편성은 개발 이전단계 에서 추정한 체계개발비를 기준으로 요율제를 적용하여 연간 개발비의 5~6%를 반영하다가 2011년 이후 성능개선비를 포함하여 10~12%
를 반영하고 있다.
본 고에서는 A 체계를 대상으로 2011년도 유 지보수비 산정에 적용하여 분석하고자 한다. 분 석방법은 ○○부처에서 산정하는 방식, 공공분
야에서 적용하는 SW 사업 대가산정 가이드 방 식 그리고 본 연구 모형에 의한 적용방식 등 3 가지 모형을 통해 산정된 유지보수 비용을 상호 비교 분석한다.
4.2 ○○부처 유지보수 비용 산정방식 적용
○○부처에서 적용한 유지보수비 대가산정 방식 은 아래와 같다.
유지보수 대가
= 최초 개발비×유지보수 요율(5~15%)
⦁ 2011년도 적용 유지보수비
= 194억 원(초기+성능개선 개발비) × 10.2%
= 19.8억 원
이 방식에서는 실제로 유지보수 대상 체계의 소프트웨어 규모를 고려하지 않고, 개발비 적용 기준도 대가산정 시점이 아닌 초기 개발 계획단 계의 개발비를 적용하였다. 적용요율(10.2%) 또 한 명확한 근거가 부족하고, 부처 내에서 편성 가용한 예산을 고려한 것으로 판단된다.
4.3 SW 사업 대가산정 가이드 적용
한국소프트웨어산업협회에서 제시한 SW 사 업대가산정가이드를 기준으로 적용하는 산정식 은 다음과 같다.
유지보수 대가
= 대상 소프트웨어의 계약시점에 재산정된 개발비× 유지보수 요율(5~15%) + 직접경비
2011년도 기준 계약시점에서 개발비를 재산
대상 시스템의
특성
단순 보통 복잡
기준
(1년) 점수 기준
(1년) 점수 기준 (1년) 점수 유지보수
횟수 4회 이하 0 12회
이하 20 12회 초과 35 자료처리
건수 (트랜잭션
수)
10만 미만 0 10~50만 10 50만 초과 25
타 시스템
연계 없음 0 1~2개 5 3개 이상 10
실무지식 필요성
별도지식
불필요 0 기초지식
이해필요 5 전문실무
능력필요 10 분산처리
여부
실시
않음 0 일부
분산처리 10 순수 분산처리 20
<표 4> 유지보수 난이도 산정 평가표
정할 경우 성능개선 시점의 기능점수는 32,220 이다. 이를 분석, 설계, 시험, 구현단계별 가중치 를 적용하고, 시스템 유형과 개발언어 등에 따 른 보정계수를 적용하여 개발원가를 산정한 후 직접경비와 이윤을 합하여 개발비를 재산정하 면 265.67억 원이 된다. <표 3>은 이러한 계산 결과를 보여준다.
총 FP
단계별 가중치
기능 점수 단가
단계별 단가
보정 계수 규모
금액(원)
32,220 0.19
497,427 94,511
규모 : 1.24 유형 : 1 언어 : 1.2
품질 : 1
3,775,984,275 0.24 119,382 4,769,664,347 0.32 159,177 7,631,462,955 0.25 124,357 5,962,080,434 합계(개발원가) 22,139,192,010 이윤(10)% 2,213,919,201 직접경비(개발원가의 10%로 가정) 2,213,919,201 소프트웨어 개발비(부가세 별도) 26,567,030,412
<표 3> A 체계 계약시점의 개발비 재산정
유지보수 대상 체계의 난이도는 <표 4>를 기준으로 유지보수 횟수, 자료처리 건수, 타 시 스템과 연계, 실무지식의 필요성, 분산처리 여
부 등을 고려하여 결정한다. A 체계의 난이도 계산은 유지보수 횟수가 12회 초과로 35점, 자 료처리 건수가 50만 건 초과로 25점, 타 시스템 과 연계는 3개 이상으로 복잡하여 10점, 전문실 무능력이 필요하여 10점, 순수분산처리로 20점 등 난이도(TMP)는 100점으로 계산된다. 이를 기초로 유지보수 요율을 계산하면 15%이다.
⦁ 유지보수 요율
= 10 + [5 × (TMP/100) ] = 15%
위 계산을 근거로 직접경비를 10% 반영하여 유지보수 대가를 산정하면 아래와 같다.
⦁ 유지보수 대가
= 소프트웨어 개발비 × 요율 + 직접경비 = 265.67억 원×15%
+ (265.67억 원 × 15% × 10%) = 43.84억 원
※ 직접경비를 10%로 계산
4.4 연구에서 제안한 비용산정 모형 적용 본 연구에서 제안한 유지보수 비용산정 모형 으로 유지보수 대가를 산정하는 수식은 아래와 같다.
유지보수 대가 = 기능적(계획) 유지보수비 + 기능적(비계획) 유지보수비 + 비기능적 유지보수비 + 직접경비
+ 이윤
4.4.1 기능적 계획 유지보수비 계산
계획된 기능적 유지보수비를 산정하기 위해 서는 먼저 단위기능별로 현재의 기능점수를 확
총유지 보수 EFP
단계별 기능 점수 가중치
기능점수 단가 (원)
단계별 단가
보정
계수 금액(원)
1,812 0.19
497,427
94,511 규모 : 1.24 유형 : 1 언어 : 1.2
품질 : 1
212,355,168 0.24 119,382 268,238,107 0.32 159,177 429,180,971 0.25 124,357 335,297,633
합계 1,245,071,879
<표 6> 기능적(계획) 유지보수비 계산결과표
비계획 유지보수 예상건수 (단위: 건)
1건당 유지보 수 노력
총 유지 보수 FP
기능 점수 단가 (원)
보정 계수
금액 (원)
515 8.15 4,197 283,533
규모 : 1.24 유형 : 1 언어 : 1.2
품질 : 1
1,770,704,581
* 유지보수 1건당 유지보수 노력(FP/건) = 4,197/515.
<표 7> 기능점수로 환산한 기능적(비계획) 유지보수비
인하고, 유지보수 유형별 영향요인을 곱하여 유 지보수 기능점수(EFP)를 계산한다.
= ×
A 체계의 단위기능별 현재의 기능점수를 구 한다음 여기에 유지보수 유형별 영향요인을 데 이터와 트랜잭션으로 구분하여 적용한다. 다음 으로 단위기능별 기능점수에 데이터 변경비율 과 트랜잭션 변경비율을 구분하여 영향요인을 적용한 결과 유지보수 기능점수(EFP)는 1,812 로 산정되었다. <표 5>에서는 유지보수 기능점 수를 산정하는 방법을 나타내고 있다.
단위기능 현재
FP
유지보수 유형
유지 보수 FP 영향요인
추 가
삭 제
수정 데이터 트랜잭션 1 0.40.25/0.5/
0.75/1.0
0.25/0.5/0.
75/1.0/1.5 단위소별
불출관리 36.9 0.25 9.23
○○ 자재현황 20.2 0.75 15.15
⦁⦁⦁
○○ 수입현황 46.5 0.5 23.25
계 1,812
<표 5> 단위기능별 유지보수 FP 계산표
다음으로 단계별 기능점수 가중치에 따른 단 가와 보정계수를 곱하여 계산한 기능적 유지보 수비는 <표 6>과 같다.
4.4.2 기능적 비계획 유지보수비 계산
계획되지 않은 기능적 유지보수비 산정은 유 지보수 규모를 파악할 수 없으므로 과거 유지보 수 이력 데이터(Log Data)를 활용하여 예측치 규모의 노력정도를 산정하여 추정한다.
=
× ×
여기서는 이전 년도 유지보수 종료 후의 소 프트웨어 규모와 당해 연도 유지보수후의 소프 트웨어 규모가 동일하다고 가정하여 515건수를 추정치로 설정하여 계산을 진행한다. 계획되지 아니한 기능적 유지보수 1건당 유지보수 노력 은 기능점수로 환산하는 경우와 인건비로 환산 한 경우 두 가지 경우로 산정할 수 있다.
먼저 기능점수로 환산한 경우의 유지보수비는
<표 7>과 같이 계산된다. 여기서 기능점수 단가 는 유지보수의 노력정도를 사용자의 긴급개선 요구에 대응하는 노력을 감안하여 분석 및 설계
구 분 소프트웨어 노임단가
투입 공수 (M/M)
한달
일수 금액(원) 기술사 358,777 -
21.5 - 특급기술자 340,973 48 351,884,136
고급기술자 251,772 - -
중급기술자 208,943 18 80,860,941 초급기술자 162,862 24 84,036,792 직접인건비 합계 516,781,869 제경비(직접인건비의 110~120%) 594,299,149
기술료([직접인건비+제경비]의
20~40%) 333,324,306
합계 1,444,405,324
<표 9> 비기능적 유지보수비
단계는 생략된다는 가정하에 제외하고, 구현 및 시험단계만을 노력정도로 고려하여 283,533원으 로 계산한다.
다음으로 유지보수 1건당 유지보수 노력을 인건비로 환산한 유지보수비는 <표 8>과 같다.
비계획 유지보수 예상건수 (단위 : 건)
유지보수 1건당 유지보수 노력 (단위 : 원/건)
금액(원)
515 187,424 96,523,360
<표 8> 인건비로 환산한 기능적(비계획) 유지보수비
4.4.3 비기능적 유지보수비 계산
비기능적 유지보수비는 기능적 변경이 아닌 단순 운영이기 때문에 투입되는 인력의 노력만 으로 순수한 인건비를 산정하고, 제경비와 기술 료를 더하여 산정한다.
비기능적 유지보수비
= 투입인력수× 투입기간× 기술자별 등급단가 + 제경비 + 기술료
즉, 투입되는 인력의 투입기간과 기술자별 등
급단가를 합산한 후 제경비와 기술료를 고려한다.
A 체계의 연간 비기능적 유지보수비 산정은 제 경비를 직접인건비의 115%, 기술료를 기준액의 30%를 반영할 경우 <표 9>과 같은 계산결과가 나온다.
4.4.4 총 유지보수 비용 계산
직접경비는 기능적 유지보수 및 비기능적 유 지보수비 합계의 10%로 계산하고, 이윤은 앞 모형에서와 같이 배제하기로 한다.
결과적으로 A 체계의 전체 유지보수 비용을 연구모형을 적용하여 산정하면 아래의 <표 10>
과 같이 계산할 수 있다.
구 분 금액(원)
기능적(계획)
유지보수비 1,245,071,878 기능적(비계획)
유지보수비
Case ① EFP 환산
Case ② 인건비 환산 1,770,704,581 96,523,360 비기능적
유지보수비 1,444,405,324 직접경비 446,018,178 278,600,034
이윤 -
합계 4,906,199,962 3,064,600,596
<표 10> 유지보수 전체 비용
4.5 적용사례 결과분석
○○부처에서 사용하는 A 체계를 사례로 적 용하여 3가지 방식으로 소프트웨어 유지보수 비용을 산정한 결과는 <표 11>과 같다. 현재
○○부처에서 사용하는 모형과 SW사업 대가산정 가이드에서 제시한 모형에 따른 비용산정 결과 는 19.8억 원 대비 43.84억 원으로 큰 차이를 보 인다. 이는 최초 소프트웨어 개발비(194억 원) 와 현재 가치로 재산정된 개발비(265.67억 원) 의 차이에 기인한 것으로 판단된다. 즉 2001년
구 분
○○부처에서 적용한 모형
SW사업 대가산정 가이드 모형
연구 모형(안)
FP 유지 보수비 (억 원)
기능점 수 (FP)
유지 보수비 (억 원)
기능 점수 (FP)
유지 보수비 (억 원)
결과값 19.8
32,320 (전체 규모)
43.84 6,009 EFP
① 49.06
② 30.65
요율 10.21% 15% ① 16.79%
② 10.49%
개발비 194 265.67 265.67
<표 11> 3가지 모형 적용사례
5월 개발 이후 현재까지 운영하면서 사용자 요 구사항 또는 운영환경 변화에 따라 소프트웨어 규모가 현격히 비대해진 것으로 판단되지만, 자 료수집 과정에서 개발비를 현재 가치로 재산정 시 적용한 기능점수의 과다 계산도 배제할 수는 없다.
본 연구에서 제안한 모형에서는 실제 유지보 수에 투입된 노력 양을 기준으로 접근한 결과 기존의 2개 모형에 비해 유지보수 비용이 높게 나타났다. 원인을 분석하면 기능적 유지보수 중 에서 비계획 유지보수에 해당하는 노력이 계획 유지보수에 비해 과다하게 산정된 결과라고 추 측할 수 있다. 이는 단순한 수리 유지보수 활동 에 대하여 기능을 변경하는 복잡한 완전 유지보 수 활동과 동일한 기능점수 단가를 적용한 데 기인한 것으로 판단된다. 즉, 사용자의 긴급개 선 요구에 즉응하는 비교적 단순한 기능적 유지 보수 노력의 단가를 제도개선에 따른 시스템 분 석 및 프로그램 변경 노력의 단가와 동일하게 적용하는 것이 타당하지 않고 작업의 난이도에 관계없이 기능점수별 동일 단가를 적용하는 것 이 전체 비용산정 측면에서는 객관적이지 못함 을 보여준다. 따라서 계획 유지보수와 비계획 유지보수의 기능점수 단가를 차등하여 적용할
수 있는 연구가 추가 되어야 함을 알 수 있다.
또한, 기능적 비계획 유지보수비 산정에서 유 지보수 1건당 유지보수 노력을 인건비로 산정 한 경우에는 요율로 보면 10.49%로써 현재 ○
○부처에서 적용한 모형(10.21%)과 SW사업 대 가산정 가이드에서 제시한 적용 모형(15%) 사 이에 위치한다. 앞으로 유지보수 인력의 숙련 정도와 상관관계 등의 추가 분석을 통해 차이를 확인하는 것이 필요하다고 본다.
5. 결론 및 향후연구
본 연구에서는 소프트웨어 유지보수 활동에 실제 투입된 노력 양에 기초한 유지보수 비용을 추정할 수 있는 비용산정 모형을 제안하고 논의 하였다. 이는 기존의 유지보수 비용산정 모형에 비하여 보다 객관적인 논리체계와 타당성을 확 보하였다고 판단된다. 먼저, 소프트웨어 유지보 수 활동을 기능적 유지보수와 비기능적 유지보 수 활동으로 구분한 다음 계획된 기능적 유지보 수의 경우 실제 유지보수에 투입된 노력을 대상 정보체계의 기능에 가해지는 추가, 변경, 삭제 로 구분하여 이를 정량적 기능점수로 산정하는 방법으로 접근하였다. 비계획된 기능적 유지보 수에 대해서는 과거의 유지보수 이력을 활용한 통계적인 예측기법을 활용하였다. 즉, 대상 정 보체계의 규모에 비례하여 과거의 비계획 유지 보수 발생건수를 비율적으로 반영하여 차기년 도에 예상되는 비계획 유지보수 건수를 추정하 도록 한다. 비기능적 유지보수에 대해서는 현행 제도와 같이 실제 투입인력을 기초로 하는 투입 공수 방식을 적용하도록 유지하였다. 따라서, 기존의 요율제 적용방식과 달리 유지보수 활동 에 실제 투입되는 노력 양을 기준으로 비용을 추정함으로써 산정된 비용의 객관성을 높일 수 있는 모형이다.
제시한 모형은 다음과 같은 특징을 갖는다.
첫째, 개발된 정보체계를 외주용역을 통해 유지 보수할 경우 유지보수 비용을 산정하기 위한 모 형이다. 둘째, 유지보수 예산편성에 활용하기 위한 목적을 가지므로 차기년도 유지보수 예산 반영이 필요한 정보체계를 대상으로 한다. 셋 째, 유지보수 활동범위는 성능개량을 포함한다.
넷째, 정보체계의 소스코드를 변경하는 기능적 유지보수와 인력을 투입하여 일상적인 백업이 나 기술지원 등을 포함하는 비기능적 유지보수 비용산정을 모두 고려한다.
이번 연구에서 제시한 모형을 현장에 적용하 기 위해서는 비용산정을 위해 도입된 여러 변수 에 대한 추가적인 검증 및 확인이 필요하다. 특 히, 현재의 정보체계에 대한 기능점수(FP) 산정 의 정확성이 요구되므로 객관적이고 전문적인 산정 방안을 구비할 필요가 있다. 평균값을 활 용하는 비계획 유지보수 예측 값이 본래의 평균 값으로 대표성을 확보할 수 있도록 이력자료의 축적이 요구된다. 금번 작업에서는 이력자료 작 업내용을 정리하여 공식화한 분기별 형상관리 위원회 회의록을 기준으로 발췌하여 사용했지 만, 실제 작업에 투입된 노력 양의 정확성 여부 를 검증하지는 못하였다. 또한, 사용자들의 긴 급 개선소요 부분을 기능적 측면의 수정량으로 정리하는 것에 대한 타당성 여부도 추가적으로 검증되어야 할 부분이다.
산정모형에 도입된 파라미터와 유형별 기능 점수에 대한 적용단가의 보다 객관적인 검증도 추가적으로 보완할 사항이다. 유지보수와 관련된 이력 데이터(Log Data)의 정확한 관리가 무엇 보다 중요하다는 점도 인식하는 계기가 되었다.
자원관리정보체계 분야 1개 체계에 적용해 봄으로써 분석한 결과값의 편중여부를 구별하기 어려웠다. 향후 다양한 분야의 정보체계에 적용 을 통하여 모형의 타당성을 검증할 필요가 있다.
참 고 문 헌
[1] 김진수, 국방정보시스템 유지보수 추진 방 안 연구, 한국국방연구원, 2007. 12.
[2] 배준수, “생산성 기반의 소프트웨어 유지보 수 대가산정 모델”, IE Interfaces, Vol. 17, Special Edition, 2004, pp. 122-130.
[3] 류성열, 백인섭, 김하진, “유지보수 관리체계 의 정형화 및 비용 예측 모델에 관한 연구”, 한국정보처리학회 논문지, 제3권 제4호, 1996, pp. 846-854.
[4] 안연식, “소프트웨어 유지보수 프로젝트의 투입인력 규모예측 모형”, 한국 OA학회 논 문지, 제4권 제2호, 1999, pp. 61-69.
[5] 유천수, 정은주, “국방정보화 추진 접근방 법에 대한 경영효율화 관점에서의 진단 및 개선방안 연구”, 국방정책연구, 제27권 제2 호, 2011, pp. 67-99.
[6] 이성일, 황경태, “정보보호 거버넌스 프레 임워크 개발에 관한 연구”, JITAM, 제18권 제2호, 2011, pp. 91-108.
[7] 지식경제부, 소프트웨어사업 대가의 기준, 고 시 제 2010-52호, 2010. 2. 26.
[8] 정상철, 김명숙, “SLA 기반 IT서비스 관리 시스템의 품질개선 후보요인 도출방안 연구”, JITAM, 제15권 제4호, 2008, pp. 103-121.
[9] 한국소프트웨어산업협회, SW사업 대가산정 가이드, 2012. 2. 24.
[10] 한국국방연구원, 정보체계 비용분석 방법론 연구, 2002. 12.
[11] 한국전산원, 소프트웨어 유지보수 대가기준 모형 연구, 2004. 10.
[12] IFPUG, “Function Point Counting Practice Manual”, Release 4.1.1, IFPUG, Troy Michigan, 2000.
[13] Khatibi, V. and Dayang, N. A. Jawawi,
“Software Cost Estimation Method : A Review”, Journal of Emerging Trends in Computing and Information Sciences, Vol. 2, No. 1, 2010.
[14] Lee, T. H., Choi, D. O., and Baik, J. M.,
“Empirical Study on Enhancing the Accu- racy of Software Cost Estimation Model for Defense Software Development Project Applications”, International Conference on Advanced Communications Technology, Vol.
7, No. 10, February, 2010, pp. 1117-1122.
[15] Mishra, S., Hazra, K., and Mall, R., “A
Survey of Metrics for Software Development Effort Estimation”, International Journal of Research and Reviews in Computer Science (IJRRCS), Vol. 2, No. 5, October 2011, pp.
1199-1204.
[16] NESMA, “Function Point Analysys for Software Enhancement Guidelines”, Ver.2.2.1 2009.
[17] Stark, G., “A Comparison of Parametric Software Estimation Models Using Real Project Data”, CrossTalk-Jan/Feb, 2011, pp. 22-27.
저자소개
유 천 수
국방과학연구소 선임연구원, 한국 정보화진흥원 전자거래연구부 장과 한국국방연구원 정보화 연구센터장을 역임하였으며, 현재 한국국방연구원 책임연구위원 으로 재직 중이다. 경북대학교 전자공학과 학사, 홍익대학교 대학원(전자계산기학 전공) 석사를 마치고, 한국과학기술원(KAIST) 테크노경영대학원에서 경영정보공학 박사를 취득하였다. Information and Management, Information Systems와 같은 국제 저널과 경영과학, 경영정보학연구, 국방정책연구 등에 다수의 논문을 게재하였다. 또한, HICSS, INFORMS/KORMS, DSI, SCI 등의 국제 학회 에 참여하여 이론과 현장을 접목한 논문들을 발 표하였다. 주요 관심분야는 소프트웨어 프로세스 및 개발 방법론, 데이터 품질 측정, 국방정보화 정책 및 기획계획 체계, 국방정보시스템 비용분 석, 국방 IT융합 비즈니스 모델 개발 등이다.
정 은 주
국방전산정보원 군수정보체계 담당(육군중령)으로 근무하고 있다. 계명대학교 통계학과 졸업 후 육군소위로 임관하여 야전 제대 및 육군본부에서 정보체 계운영과 소프트웨어 개발업무를 담당하였고, 국방부 정보화기획실에서 국방정보화 정책수립 을 담당하였다. 국방대학원(전자계산학)에서 석 사학위를 취득하였고, 광운대학교 대학원 방위 사업학과를 수료하였다. 주요 관심분야는 소프 트웨어 개발 방법론, 프로젝트 관리, 정보체계 비용분석 등이다.
이 논문은 2012년 05월 07일 접수하여 2012년 06월 17일 게재확정되었습니다.