Tuesday, March 17, 2009

Function Points

FP Overview
- Standard method measuring software development
- FP – unit of measure
- FP measure work-product of software development
- FP – not measure internal architectural or technological aspects of an application
- FP – size (create, modify) software and existing applications
- ISO approved standard for measuring functional size

Objective
- Measure software based primarily on logical design
- Measure software development and maintenance independently of technology
- Measure software development and maintenance consistently across projects and organizations

Benefit (performance indicator)
- Productivity – How much software can we create per unit of effort and how fast can we deliver it?
- Quality – How many defects are found after delivery based on the size of the application?
- Support Rates – How many resources are required to support each existing application?
-- Estimate Development and support
-- Monitor outsourcing agreements
-- Drive business-related decisions

Count Procedure
- Determine the type of count
- Identify counting scope & application boundaries
- Count data functions
- Count transactional functions
- Determine unadjusted function point count
- Determine the value adjustment factor
- Calculate the adjusted function point count

Type of Count

- Development project – Functions provided with first installation of the software delivered (include conversion)
- Enhancement project – Modifications to existing application (add, change, delete user functions) delivered (inc. conversion)
- Application – Installed application (baseline, installed, or asset count). Measures current functions provided to the user by the application

Definitions (D/C = data & control info)

- ILF (internal logical file) – user identifiable (D/C) group within app boundary
- EIF (external interface file) – user identifiable (D/C) group referenced by app but maintained by another app
- EI (external input) – process with D/C from outside app boundary
- EQ (external inquiry) – process sending D/C outside app boundary
- EO (external output) – process sending D/C outside app boundary
- DET (data element type) – user recognizable, non-repeated field

Function Points - Diagram











Determine the complexity
- Determine the number of data elements that exist and are user recognizable
- Identify a subgroup of user recognizable data elements within a logical file
- Determine how many files are read and/or maintained by a transactional function

Complexity Matrix




















Value Adjustment Factor
VAF is calculated based on an assessment of 14 general system characteristics (has TDI)
- Data Communications
- Distributed Data Processing
- Performance
- Heavily Used Configuration
- Transaction Rate
- On-line Data Entry
- End-User Efficiency
- On-line Update
- Complex Processing
- Reusability
- Installation Ease
- Operational Ease
- Multiple Sites
- Facilitate Change

When to use AFP vs. UFP
- UFP (Unadjusted Function Points)
-- Estimation
- Input to Estimation Tools (will adjust)
-- AFP (Adjusted Function Points)
- Reporting Productivity
- Reporting Project Size
- Reporting Application Size

Formula
- Value Adjustment Factor (Total Degree of Influence) VAF = (TDI * 0.01) + 0.65
- Development Project Function Point Count DFP = (UFP + CFP) * VAF
- Enhancement Project Function Point Count EFP = ((ADD + CHGA + CFP) * VAFA)) + (DEL * VAFB)
- Application Function Point Count AFP = ADD * VAF
- Application Function Point Count after enhancement AFP = ((UFPB + ADD + CHGA) - (CHGB + DEL)) * VAFA

Formula Definition
- ADD - UFP of the functions added through the project
- CFP – Unadjusted function point count of conversion functions
- CHGA - UFP of the functions changed after project
- CHGB - the original UFP of the functions changed before the project
- DEL - the UFP of the deleted functionality
- TDI - total degrees of influence of the GSC’s
- UFP - Unadjusted function point count of the project
- UFPB - the UFP before the enhancement project
- VAF - value adjustment factor
- VAFA - VAF after the enhancement
- VAFB - VAF before the enhancement












Classify each unique functional requirement into Type












Putting It All Together (An example)
Determine complexity, allocate numeric weighting depending on type & complexity, then calculate UFP.











Measured in Adjusted Function Points


1 comment: