Transcript FPA ch01

Chapter 3
Measuring with Function Points


Chapter 3
Function points를 어떻게 software
measurement program에 포함시킬 것인가?
소프트웨어 정의, 개발, 배치, 유지 보수를
지원하는데 공통적으로 이용되는 측정
Function Point Analysis: Measuring Practices for Successful Software Projects
1
소개(Introduction)






Chapter 3
Software measurement program은 의미 있고 명백히 기술된
목표를 가져야 하고, 절차, 정책, 역할, 책임이 분명히 문서화되고
시행되어야 함
가장 중요한 것은, 프로그램은 계속적으로 개선되어 조직에 부가
가치가 있는 정보를 제공해야 함
Function points를 어떻게 이용할 것인가?
소프트웨어 개발과 유지보수 환경을 효과적으로 관리하기 위해
function points를 다른 척도와 함께 어떻게 이용할 것인가?
function point repository, 측정 데이터의 분석, 측정 기록과 같은
다른 주요 요소의 중요성
소프트웨어 측정은 척도가 다른 것들과 결합되어 이용되고
분석될 때에만 효과적임
Function Point Analysis: Measuring Practices for Successful Software Projects
2
생명 주기와 Function Points



Function points 관련 모든 측정치를 확인하는 것은 비실용적이고
가치도 없으므로, 효과적으로 이용된 주요 척도에 초점을 맞춤
Function points 측정을 생산성, 품질, 재정, 유지보수의 네 부류로
나누어, 각 경우에 측정의 의미, 이용 방법, 계산 방법을 확인
Function points 크기는 정규화된 척도의 역할을 함
» 시스템 A가 시스템 B보다 두 배의 결함을 가지고 있을 때, B의
품질이 A보다 높은가?
» 크기에 관한 척도가 없다면, 비교를 할 수 없음
» Function points를 이용하여 B가 A의 ¼의 크기라는 것을 발견하면,
A가 B보다 높은 품질이라고 할 수 있음
» 시스템 A는 기능 당 더 적은 수의 결함을 가짐
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
3
Function Point 측정: 생산성

Hours per function point는 기업 수준의 단위 작업 척도로, 한 function
point를 개발하는데 필요한 시간 수를 측정하는 것
» 프로젝트 레벨의 생산성을 평가하기 위해 이용되고, 개인의 performance의
척도로 결코 이용되지 않아야 함
» Total number of project hours / Number of function points delivered
» 위 식의 분자 분모는 모두 특정 프로젝트에 대한 값이고, 특정 프로젝트에
대해 기록된 Total number of hours는 프로젝트에 관련된 모든 노력을 포함
» 이 척도는 새로운 개발, 확장, 혹은 상이한 기술과 같은 다양한 범주에 관한
생산성을 표현하는데 종종 이용됨, 예를 들어 새로운 개발 vs. 확장, 혹은
클라이언트-서버 생산성 vs. 메인프레임 생산성
» 이 척도는 빈번하게 function points delivered per person-month로
표현되었으나, person-month가 척도로 이용될 경우 이를 정의하는 기업
표준이 없으므로 문제임
» 대신 hour를 척도로 사용하는 것이 더욱 일관성이 있음
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
4
Function Point 측정: 생산성(계속)


Information technology productivity는 IT 조직의 전체적인 생산성으로,
하청(outsourcing) 계약에서 기준선(baseline) 척도로 공통적으로 이용됨
IT 생산성은 전체 수준의 performance,를 나타내지만, 포함된 작업이
혼합된 것은 고려하지 않음
» 예를 들어, 새로운 개발을 전혀 하지 않지만 주로 레거시 시스템을 유지
보수하는 조직의 전체적인 IT 생산성은 새로운 클라이언트-서버와 웹 기반
응용을 개발하는 조직의 그것과는 매우 다를 것임
» Total function points / Total IT work effort
» 이 척도는 전체적인 생산성을 관리하기 위해 상급 관리자 수준에서
효과적으로 이용될 수 있음
» 하청(아웃소싱) 계약 기간 동안, 이 값은 개선 경향을 추적하는데 이용될 수
있고, 그러한 추적은 혼합된 작업이 다음 해에 급격하게 변경되지 않음을
가정
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
5
Function Point 측정: 생산성(계속)




Rate of delivery는 요구되는 소프트웨어를 최종 사용자에게 인도하기
까지 걸린 캘린더 시간을 측정하는 척도
조직이 기능을 얼마나 빨리 이용하게 하는가를 예시하는 서비스 수준의
척도로 종종 이용
출하 시간(time-to-market) 척도로 표현됨
Number of function points / Elapsed calendar time
» Elapsed time은 월을 기준으로 한 calendar time으로 대개 정의되고,
요구사항의 도입부터 소프트웨어 설치까지 이르는 시간을 나타냄
» 비교분석을 위해 이 척도를 사용할 때, elapsed time을 조직 내에서 일관성
있게 측정하도록 보장해야 함
» Elapsed time은 프로젝트 개발이 일시적으로 중단된 기간인 dead time을
배제해야 함
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
6
Function Point 측정: 생산성(계속)




Delivered functionality와 developed functionality는 대조적인 척도로,
개발된 기능의 생산성 비율과 관련하여 얼마나 많은 기능이 최종
사용자에게 실제로 전 나타냄
예를 들어, 상용으로 가용한 소프트웨어 패키지의 구입을 통해 만족될
수 있는 기능의 일부를 소프트웨어가 포함할 수도 있고 나머지 기능은
자체적으로(in-house) 개발되어야 하므로, 자체적으로 개발된
소프트웨어와 구입한 소프트웨어 모두와 관련된 기능을 계산해야 함
Total cost / Total functionality delivered
Total development effort hours / Total functionality developed in-house
» 구입한 패키지의 설치를 포함할 때, Total functionality developed는 구입
제품을 기존 시스템과 연결하기 위해 필요한 인터페이스와 관련된 기능을
포함해야 함
» Functionality developed는 구입한 소프트웨어에 필요한 기능의 변경, 삭제,
추가를 또한 포함해야 함
» Total functionality delivered를 측정하는 장점은 제공되는 모든 기능을
사용자에게 예시할 수 있고, 유지 보수 지원을 필요로 할 전체기능 값을
이해할 수 있음
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
7
품질

Functional requirement size는 최종 사용자가 요구하는 function
points로 표현되는 전체 기능을 측정
» 이 척도는 궁극적으로 개발자와 최종 사용자 모두에게 유용할 수 있음
» 개발자와 최종 사용자는 context diagram이나 다른 도구로 요구되는
산출물을 이해

Completeness는 원래 요구된 기능에 대해 전달된 기능의 척도
» 최종 사용자가 요구한 모든 기능을 전달 받았는가?
» 사용자가 요청한 100 function points를 받았으나 전달된 100 function
points가 원래 요구한 동일한 100 function points,를 나타내는가?

Rate of change는 개발 과정 동안 발생하는 기능 명세 변경의 양을 측정
» 프로젝트 비용과 일정을 더욱 효과적으로 관리할 목적으로 프로젝트 내에
추가된 기능을 추적하는데 이용될 수 있음
» 요구 분석 과정의 효율성을 판단하기 위해 이용될 수 있음
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
8
품질(계속)

Defect removal efficiency는 소프트웨어의 인도(delivery) 이전에 발견된
결함의 총 수를 인도 이전과 이후에 모두 발견된 결함의 총 수와
비교하여 측정개발 과정 동안 발생하는 기능 명세 변경의 양을 측정
» Function point 척도는 이 식의 부분이 아니지만, 예를 들어 defects per
function pint 와 같이 전형적으로 이 측정치와 함께 이용
» Defect removal efficiency는 시스템의 품질과 시스템의 개발 동안 실행된
품질 실제(practices)의 효율성 모두의 진정한 척도
» Total number of defects found prior to delivery / Total number of defects

Defect density는 프로젝트 생명주기의 하나 이상의 단계에서 식별된
결함의 수를 측정하여 응용의 전체 크기와 비교하는 것
» 상이한 생명주기 단계간이나 상이한 개발 노력간의 density level을
비교하는데 이용
» Number of defects (by phase or in total) / Total number of function points
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
9
품질(계속)

Test case coverage는 프로젝트 개발의 테스팅 동안 적절하게
지원하는데 필요한 테스트 케이스의 수를 측정
» 테스트 케이스의 효율성을 나타내지 않고, 모든 조건이 테스트되었음을
보장하지 않으나, 특정 크기의 시스템 개발에 필요한 테스팅을 위한
예상되는 요구사항을 예측하기 위한 효과적인 비교 척도가 될 수 있음
» Number of test cases / Total number of function points

Volume of documentation은 개발 노력을 지원하는데 있어서 생성되거나
예상된 페이지의 수를 측정하거나 추정하는데 이용 가능
» Pages per function point 값은 개발 생명주기 동안 생성된 임의의 문서에
관해 유도 가능
» Number of pages (per document) / Total number of function points
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
10
재정(Financial)

Cost per function point는 개발된 각 function point에 관한 비용을
식별하고, 이 측정은 대개 프로젝트나 조직 수준에서 적용됨
» 프로젝트 레벨에서 cost per function point가 계산되고 조직의 기준선
값(baseline organizational value)과 비교됨
» Overall cost per function point는 전체 조직에 대해 계산되어 기준선을 설정
» Cost per function point는 자체적으로 개발하는 비용과 상용 패키지를
구입하는 비용을 비교 혹은 내부 비용과 외부(벤치마크) 비용을 비교하는데
이용 가능
» 비교시 프로젝트 비용에 프로젝트 전체 노력(labor), 프로젝트 관련 도구,
프로젝트 관련 출장 및 주거 경비, 그리고 경상비를 포함하는 충분히 정의된
부대 비용으로 대개 구성되는 프로젝트 비용을 일관성 있게 적용
» Total cost / Total function points
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
11
재정(계속)

Repair cost ratio는 운영 중인 어플리케이션을 수리하는데 드는 비용을
추적하기 위해 이용되고, 대개 새로 설치된 어플리케이션에 관한 감시
척도(monitoring metric)로 이용
» (Total hours to repair × cost per hour) / Release function points

Portfolio asset value는 시스템 소프트웨어의 전체 조직의 portfolio의
가치를 추적하는데 이용
» 레거시 시스템의 잠재적인 대체 비용을 잘 이해할 수 있음
» Cost per function point × Total function points
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
12
유지보수

Maintainability는 어플리케이션을 유지 보수하는데 필요한 노력(비용)을
측정하는데, 어플리케이션 수준의 유지 보수 비용을 관리
» Maintenance cost / Application function points

Reliability는 어플리케이션의 고장 횟수를 functional size에 관해 측정,
이 측정치는 시스템 성능을 추적하고 어플리케이션에 관련된 서비스
수준의 측정치를 관리하는데 이용
» Number of production failures / Total application function points

Assignment scope는 어플리케이션을 지원하는데 필요한 FTE(full-time
equivalent) 자원의 수를 측정
» Total application function points / Number of full-time resources required to
support the application

Rate of growth는 규정된 시간 이상의 어플리케이션 기능의 증가를 측정
» 어플리케이션의 급격한 성장을 관리 하거나, 역으로 어플리케이션이 성숙
수준에 도달했거나 성장의 멈춤 여부를 판단할 때 이용
» Current number of function points / Original number of function points
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
13
유지보수(계속)

Portfolio size는 조직의 function points 포트폴리오 측정
» 이 척도는 예산 설정 목적 혹은 하청(아웃소싱) 계약과 결합하여 종종 이용
» 조직의 포트폴리오로 모든 어플리케이션에 관한 전체 function points의 수

Backfire value는 전체 라인 수와 프로그래밍 언어의 복잡도 수준에
기초하여 계산된 function point 값
» 최근에는 더욱 발전된(그리고 복잡한) 언어가 등장함에 따라 덜 유용하게 됨
» Function point 방법론의 변화를 반영하여 갱신되지 못했고, 라인 수를 세는
일관된 표준이 부재한 어려움 때문에 비교 목적으로는 문제가 있음

Stability ratio는 어플리케이션이나 확장이 사용자의 기대를 얼마나
효과적으로 만족하는지를 관리하는데 이용
» Number of changes / Number of application function points
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
14
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
15
Function Point 데이터의 효과적 이용


(비효율적인) 측정 프로그램에 관한 대부분의 불만은 수집된
측정 데이터를 적절하게 기록하는데 실패하는데 기이
측정 결과의 성공적인 전달을 위해 세 가지 주요 요소가 존재
1.
2.
3.
Chapter 3
Establishing a metrics repository
Consistently reporting results
Analyzing (not just reporting) the data
Function Point Analysis: Measuring Practices for Successful Software Projects
16
측정 프로필의 개발
Chapter 3
Function Point Analysis: Measuring Practices for Successful Software Projects
17
기업 수준의 비교 가능




Chapter 3
Function point 척도는 내부적으로 많이 이용되었지만, 가장 큰 장점
중의 하나는 function point 기반의 기업 데이터(industry data)의
가용성에 있음
기업 데이터(industry data)는 조직이 자신을 측정하고 유사한 다른
기업과 자신을 비교하는 것을 가능케 함
최근에 industry best practices에 매우 흥미가 높은데, 이 정보는 종종
사전에 기술된 도구, 기술, 방법론을 실행하여 달성될 수 있는 질적
개선의 수준을 나타내고, 이러한 모든 정보에 관한 기본 크기는 function
points임
경쟁에 직면하거나 industry best practices 경험으로부터 학습하는데
관심이 있는 모든 조직은 엄격한 function point 프로그램과 측정 데이터
수집을 시작할 것을 권고 받음
Function Point Analysis: Measuring Practices for Successful Software Projects
18