FAST Function Points David Seaver Director Estimation and Measurement Fidelity Investments david.seaver@fmr.com 8-563-6753
Outline of the Presentation Overview of function points (IFPUG based Technique) FAST Function Points Overview An example of a requirements based Function Point Count An example of a Screen based completed project Function Point Count
What is a Function Point Function Points measure software size by quantifying the functionality provided to the user based solely on logical design and functional specifications. With this in mind, the objectives of FP counting are to: measure functionality that the user requests and receives measure software development and maintenance rates and size independently of the technology used for implementation provide a normalizing measure across projects and organizations
What is Function Point? External Input Application Being Considered External Interface Files External Output External Inquiry Internal Logical File External Input External Output External Inquiry Other Applications Functionality as viewed from the user s perspective
How to Count Function Points
How to Count Function Points Displays Reports Master Files Size Control Files Reference Files Signals
Steps in FP Counting Determine Type of Count Identify Counting Scope and Application Boundary Count Data Functions Count Transactional Functions Determine Unadjusted Function Point Count Determine Value Adjustment Factor Calculate Adjusted Function Point Count
FP Overview: What Is Counted EI P1 Update Master File ILF Master File P2 Produce Weekly Report EO Weekly Summary Report Key Details EQ P3 Master File Details Reference File on another System EIF System Boundary
Data Storage Internal Logical File (ILF) Logical group of data maintained by the application (e.g., Employee file) External Interface File (EIF) Logical group of data referenced but not maintained (e.g., Global state table)
Transactions External Input (EI) Maintains ILF or passes control data into the application External Output (EO) Formatted data sent out of application with added value (e.g., calculated totals) External Query (EQ) Formatted data sent out of application without added value
Functional Size (Unadjusted Function Size) Function Type Low Average High EI x 3 x 4 x 6 EO x 4 x 5 x 7 EQ x 3 x 4 x 6 ILF x 7 x 10 x 15 EIF x 5 x 7 x 10
Value Adjustment Factor Based on 14 General System Characteristics (User Business Constraints Independent of Technology) Examples: data communications, response times, end user efficiency, multiple sites and flexibility Adjusts FP count by up to + / - 35%
Software Development Challenges Size of Requirements Changes to Requirements Estimation Based on Requirements Measuring and Improving Productivity and Quality
Size of Requirements Requirements Complete Business Terms Mutual Understanding Document Assumptions Size
Changes to Requirements Changes to Requirements Change Inevitable Trade-offs Customer Definition of Quality Size
Estimation Based on Requirements Estimation Based on Requirements Multiple Models Weighted Inputs: Language Skills Methodology Risk Factors Size Historical Base
Function Points Some Resources International Function Point Users Group http://www.ifpug.org/ International
Problems (real and alleged) with Function Points Takes a long time experienced counter can count 1500 function points a day Boring Cannot perform accurate count until design in reasonably complete Inconsistency
Function Points (My personal opinions) Core strength of the technique is the relationship it establishes between user transaction & data and software costs & schedules Very strong communication tool Proactively applied early in a project function points can accelerate the requirements and high level design process
Steps in FP Counting IFPUG Determine Type of Count Identify Counting Scope and Application Boundary Count Data Functions Count Transactional Functions Determine Unadjusted Function Point Count Determine Value Adjustment Factor Calculate Adjusted Function Point Count FAST Document Purpose of Estimate Identify Scope and Boundary Count Transactions Assign Data Functions to appropriate transactions Determine Unadjusted Function Point Count Determine Value Adjustment Factor Calculate Adjusted Function Point Count
How to Accelerate FP Counts Develop a profile of your Transactions and Data Functions Example Most of my use case have following attributes Create/new data function Edit No delete Edit or delete has an implicit inquiry Maintain 1 logical data group 1 report In function point speak 2 inputs add/edit 1 inquiry 1 file 1 ouput
How to Accelerate FP Counts Develop a profile of your typical complexity outputs are medium 5 Function Points inputs are low 3 Function Points inquiries are low 3 Function Points files are low 7 Function Points external interface files are not found 0 Function Points For my typical Use Case 2 inputs 6 Function Points 1 inquiry 3 Function Points 1 output 5 Function Points 1 File 7 Function Points General System Characteristics =1.12 AFP =23.52 round up to 24 Function Points for each use case
Accelerate Function Point Counts Take advantage of available Data ISBGS has average complexity numbers for the projects in the data base (700) Also have product delivery rate data for industry and platform PDR = hour/function point Platform Mainframe Midrange PC Useful as a inexpensive benchmarking tool
Accelerate Function Point Counts Low Average High ISBGS inputs 3 4 6 4.3 outputs 4 5 7 5.4 queries 3 4 6 3.8 files 7 10 15 7.4 xfiles 5 7 10 5.5 Low, Average and High are the IFPUG values for Transactions and Data Functions Values in ISBGS column are the average values for the Transaction and Data Functions from the International Software Benchmarking Groups Database of projects
Estimating Examples Cost Categories BSV PPI SRA Function Points 93 819 1,436 total hours 947 8,859 15,788 Total Cost $ 99,481 $ 885,876 $ 1,578,803 rate/hour 105 105 105 person months 6 57 102 person years 0.5 4.8 8.5 Defects 13 147 273 FP/PM 15 14 14 Project Start 6/1/00 6/1/00 6/1/00 SRA/PPI Complete 6/10/00 7/25/00 8/8/00 TSD Complete 8/1/00 11/21/00 1/4/01 TPD Complete 9/7/00 2/14/01 4/21/01 SIT Complete 9/7/00 2/14/01 4/21/01 System Test Complete 9/21/00 3/24/01 6/7/01 Install Complete 9/27/00 4/8/01 6/25/01 Management wants to know how cost went from $100K to $1.5M You can use function points to explain what happened You can use function points to get approval of what's happening before you get into trouble
Function Point Count at BSV BSV Estimate 8 2 4 3 0 93 83 34 11 15 22 0 Name inputs outputs inquiries files ex files Index Note inputs outputs inquiries files ex files maintain core personnel data 3 2 1 1 35 data elements, add, edit, delete 13 11 4 7 0 online help 2 2 1 9 0 8 7 0 maintain users access data 3 1 1 13 0 4 7 0 Simple project, administer 35 data elements for all employees in the company, simple GUI, online help, maintain user access for security reasons Total of 93 Function Points Created from system context diagram
Assumption Made to Generate Estimate System developed in Oracle Team has completed several Oracle Projects Team has completed several projects of this type Team has experience in this industry Requirements are stable
Estimate At BSV Function Points BSV Estimate Defects/ Function Points/ Function Hours Points 93 1.97 0.14 Activity Requirements Analysis Preliminary Design System Designers/ Analysts Programmers Test Engrs. Project Mgt. QA/ CM Tech Pubs Total Hours Activity Length (Days) Start Dates End Dates 104 0 49 12 17 7 189 9 6/1/2000 6/10/2000 76 24 30 10 12 6 157 28 6/2/2000 6/30/2000 Detail Design 115 36 45 15 18 9 236 54 6/7/2000 8/1/2000 Code and Unit Test 8 45 11 3 12 2 80 58 6/21/2000 8/18/2000 Integration and Test 35 24 59 7 39 7 171 72 6/27/2000 9/7/2000 System Integn & Test 20 7 20 3 16 3 68 112 6/1/2000 9/21/2000 Installation 17 6 9 2 11 2 47 62 7/27/2000 9/27/2000 Total 374 141 223 51 124 35 947 118 6/1/2000 9/27/2000
Function Point Count at SRA SRA Size Estimate 74 13 24 34 0 819 731 318 70 91 252 0 Name inputs outputs inquiries files ex files Index Note inputs outputs inquiries files ex files maintain core personnel data 3 2 1 1 35 data elements, add,edit,delete 13 11 4 7 0 online help 2 2 1 9 0 8 7 0 maintain users access data 3 1 1 13 0 4 7 0 0 0 0 0 0 add 4 other data types 12 4 4 4 support 5 different data feed formats 52 22 15 30 0 international data differences 2 1 1 UK 9 0 4 7 0 4 1 1 Japan 17 0 4 7 0 10 1 5 Germany 43 0 4 37 0 2 1 1 China 9 0 4 7 0 0 0 0 0 0 Data Providers 7 7 7 data providers 0 38 0 52 0 0 0 0 0 0 Data Consumers 36 12 12 12 data consumers 155 0 46 89 0
Assumption Made to Generate Estimate System developed in Oracle Team has completed several Oracle Projects Team has completed several projects of this type Team has experience in this industry Requirements are stable?
Estimate At SRA Function Points Defects/ Function Points FP/Person Month 819 14.3 0.18 SRA Estimate Activity System Designers/ Analysts Prog. Test Engrs. Project Mgt. QA/ CM Tech Pubs Total Hours Activity Length (Days) Start Dates End Dates Requirements Analysis 958 0 451 107 155 63 1733 54 6/1/2000 7/25/2000 Preliminary Design 725 225 283 92 113 54 1490 81 6/19/2000 9/9/2000 Detail Design 1087 337 424 138 169 81 2235 118 7/26/2000 11/21/2000 Code and Unit Test 61 359 90 26 94 14 643 104 9/17/2000 12/30/2000 Integration and Test 343 229 571 68 382 69 1662 119 10/18/2000 2/14/2001 System Integn & Test 190 68 195 27 152 27 659 296 6/1/2000 3/24/2001 Installation 155 56 89 18 100 18 436 163 10/27/2000 4/8/2001 Total 3519 1273 2102 475 1164 326 8859 311 6/1/2000 4/8/2001
Function Point Count at SDS 124 47 25 54 0 1435 1282 533 254 95 400 0 Name inputs outputs inquiries files ex files Reference Note inputs outputs inquiries files ex files Data Encryption 5 5 encryp any standard phone inputs if international 22 0 0 37 0 0 0 0 0 0 Ad HOC report Writer 3 6 1 1 13 32 4 7 0 0 0 0 0 0 error notification 14 initial error notification and correction notification 0 76 0 0 0 0 0 0 0 0 data push 21 7 7 initiate data correction to providers 90 38 0 52 0 data pull 21 7 7 initiate data correction from consumers 90 38 0 52 0
Assumption Made to Generate Estimate System developed in Oracle Team has completed several Oracle Projects Team has completed several projects of this type Team has experience in this industry Requirements are stable?
Estimate At SDS Function Points Defects/ Function Points FP/Person Month 1,436 14.1 0.19 SDS Estimate Activity System Designers/ Analysts Programmers Test Engrs. Project Mgt. QA/ CM Activity Tech Pubs Total Hours Length (Days) Start Dates End Dates Requirements Analysis 1699 0 800 190 274 111 3074 68 6/1/2000 8/8/2000 Preliminary Design 1297 402 506 165 201 96 2667 100 6/26/2000 10/4/2000 Detail Design 1945 603 759 247 302 145 4000 145 8/12/2000 1/4/2001 Code and Unit Test 104 611 153 45 160 23 1095 131 10/13/2000 2/21/2001 Integration and Test 617 411 1029 122 688 124 2991 151 11/21/2000 4/21/2001 System Integn & Test 342 122 350 48 272 49 1185 371 6/1/2000 6/7/2001 Installation 277 99 159 32 179 32 777 204 12/3/2000 6/25/2001 Total 6281 2248 3754 847 2077 581 15788 389 6/1/2000 6/25/2001
Function Points for Estimate Tab 16 3 8 8 0 196 175 69 16 30 59 0 Name inputs outputs inquiries files interfaces Index Note inputs outputs inquiries files interfaces Model 2 1 2 2 9 5 8 15 0 Equation 1 0 5 0 0 0 Increment Phasing 2 1 1 1 9 5 4 7 0 Increment Breakage 2 1 1 9 0 4 7 0 Labor Cost 2 1 1 9 0 4 7 0 APM 3 1 1 13 0 4 7 0 MN APM 3 1 1 13 0 4 7 0 Description 2 1 1 9 0 4 7 0
8 17 9 5 0 221 197 34 92 34 37 0 Name inputs outputs inquiries files interfaces Me Note inputs outputs inquiries files interfaces New Estimate 1 1 4 0 0 7 0 Open Estimate 1 0 0 4 0 0 Save Estimate 0 0 0 0 0 Save Estimate As 1 4 0 0 0 0 Copy Estimate 0 0 0 0 0 Close Estimate 0 0 0 0 0 Load Model 1 1 4 0 0 7 0 Import Comands 1 1 4 0 0 7 0 Save Commands as 1 1 4 0 4 0 0 Exit 0 0 0 0 0 0 0 0 0 0 Component List 1 0 0 4 0 0 Component Tree View 1 0 0 4 0 0 Estimate List 1 0 0 4 0 0 Window List 1 0 0 4 0 0 Create Component Window 0 0 0 0 0 Close Reports for Other Estimates 0 0 0 0 0 Close All Reports 0 0 0 0 0 0 0 0 0 0 Reports 16 0 86 0 0 0 0 0 0 0 0 Constrain Project 2 1 1 1 9 5 4 7 0 0 0 0 0 0 Set Default Model 1 1 1 4 0 4 7 0 Start with empty estimate 0 0 0 0 0 reset preferences 0 0 0 0 0 Help 1 0 0 4 0 0
Function Points for COSTAR Function Points Component # Component Name Component Summary inputs outputs inquiries files interfaces 1 Estimate TAB 196 77 18 34 66 0 Component 2 TAB 202 77 24 34 66 0 3 Menu Items 221 39 103 38 41 0 Total 618 193 145 106 174 0