Function Points Addams England 2/23/2004 CIS 6516 Dr. Roggio Overview Introduction Function Point History Function Point Variations Problems with Lines of Code What are Function Points? Objectives of Function Points How do Function Points Overcome LOC Problems? Uses of Function Points When Should You Count Function Points? Who Should Count Function Points? Function Point Counting Function Point Counting Example References Introduction Increasingly important facet of software development is the ability to estimate the associated cost of development early in the development process Estimating software size is a difficult problem that requires specific knowledge of the system functions in terms of – Scope – Complexity – Interactions Most frequently cited sources of software size metrics are – Lines of code – Function point analysis Function Point History Developed by Allan Albrecht in the late 1970s while working at IBM The function point technique was refined and a counting manual was produced by IBM's GUIDE organization in the early 1980s The International Function Point Users Group (IFPUG) was founded in the late 1980s and produced its own Counting Practices Manual In 1994, IFPUG produced Release 4.0 of its Counting Practices Manual The Function Point Counting Practices Manual 4.1 was released in 1999 Function Point Variations Mk II Function Points – Discovered weaknesses in Albrecht's approach Feature Points – Function points were not working for all classes of applications 3D Function Points – Designed to solve two problems with Albrecht approach Problems with Lines of Code Lack of a universally accepted definition for exactly what a line of code is Language dependence (high-level versus low-level programming languages) It is difficult to estimate the number of lines of code that will be needed to develop a system from information that is available in analysis and design phases Lines of code places all emphasis on coding, which is only part of the implementation phase of a software development project Why IFPUG Thinks You Should Not Use LOC? Lines of code tend to reward profligate design and penalize concise design There is no industry standards (ISO or otherwise) for lines of code Lines of code cannot be used for normalizing across platform, language or by organization Some 4GL do not even use lines of code Lines of code can be positively misleading – refer to Capers Jones Productivity Paradox. What Are Function Points? Function Points measure software size by quantifying the functionality provided to the user based solely on logical design and functional specifications Function point analysis is a method of quantifying the size and complexity of a software system in terms of the functions that the system delivers to the user It is independent of the computer language, development methodology, technology or capability of the project team used to develop the application What Are Function Points? … Function point analysis is designed to measure business applications (not scientific applications) Scientific applications generally deal with complex algorithms that the function point method is not designed to handle How Do Function Points Overcome LOC Problems? Function points are independent of the language, tools, or methodologies used for implementation (ex. Do not take into consideration programming languages, DBMS, or processing hardware) Function points can be estimated early in analysis and design Since function points are based on the system user’s external view of the system, non-technical users of the software system have a better understanding of what function points are measuring Uses of Function Points Measure productivity (ex. Number of function points achieved per work hour expended) Estimate development and support (cost benefit analysis, staffing estimation) Monitor outsourcing agreements (Ensure that the outsourcing entity delivers the level of support and productivity gains that they promise) Drive IS related business decisions (Allow decisions regarding the retaining, retiring and redesign of applications to be made) Normalize other measures (Other measures, such as defects, frequently require the size in function points) Why IFPUG Says We Should Use Function Points? You cannot manage internally what you do not measure Approximately 40% of all projects fail due to lack of management control (Coopers & Lybrand – Sept. 1995) Measurement gives you a tool to communicate to your customers the size of their request, and extrapolate productivity, quality and estimating accuracy Many competitors may already have these insights You measure to understand and improve your processes Objectives of Function Point Counting Measure functionality that the user requests and receives Measure software development and maintenance independently of technology used for implementation Simple enough to minimize the overhead of the measurement process A consistent measure among various projects and organizations When Should You Count Function Points? Early and often The sooner you can quantify what a project is delivering, the sooner it is under control Under IFPUG 4.1, there are rules and guidelines that make it possible to count function points once the requirements have been finalized During requirements gathering the estimate of size in function points can be refined continuously Function points should be recounted throughout the development process and counts can be compared to measure scope creep and breakage Who Should Count Function Points? Recommended: One day class and on-the-job training by an experienced counter Technical people have long been the main function point counters Senior level users can also be trained to count function points For a large organization, a small group involved with function point counting and other estimating activity is ideal – Count frequently enough to stay current with the rules – Independent of the projects/ less biased feedback – Consistent counting and help from other group members Function Point Counting Steps Determine the type of function point count Identify the counting scope and application boundary Determine the Unadjusted Function Point Count Count Data Functions Count Transactional Functions Determine the Value Adjustment Factor Calculate the Adjusted Function Point Count Function Point Counting Diagram Early Counting Steps Determine the type of function point count – Development project – Enhancement project – Application Identify the counting scope and application boundary Determine the Unadjusted Function Point Count The unadjusted function point count (UFP) reflects the specific countable functionality provided to the user by the project or application. The UFP calculation is broken into two categories with five sub-categories: – Data Functions • Internal Logical Files • External Interface Files – Transactional Functions • External Inputs • External Outputs • External Inquiries Count Data Functions Data functions represent the functionality provided to the user to meet internal and external data requirements Data functions are either internal logical files or external interface files. An internal logical file (ILF) is a user identifiable group of logically related data or control information maintained within the boundary of the application An external interface file (EIF) is a user identifiable group of logically related data or control information referenced by the application, but maintained within the boundary of another application Assign each identified ILF and EIF a functional complexity based on the number of data element types (DETs) and record element types (RETs) associated with the ILF or EIF Count Data Functions… Count Data Functions… Count Transactional Functions Transactional functions represent the functionality provided to the user to process data Transactional functions are either external inputs, external outputs, or external inquiries An external input (EI) is an elementary process that processes data or control information that comes from outside the application’s boundary An external output (EO) is an elementary process that sends data or control information outside the application’s boundary An external inquiry (EQ) is an elementary process that sends data or control information outside the application boundary Assign each identified EI, EO and EQ a functional complexity based on the number of file types referenced (FTRs) and data element types (DETs) Determine the Value Adjustment Factor The value adjustment factor (VAF) indicates the general functionality provided to the user of the application The VAF is comprised of 14 general system characteristics (GSCs) that assess the general functionality of the application Each characteristic has associated descriptions that help determine the degree of influence of the characteristic The degrees of influence range on a scale of zero to five, from no influence to strong influence Value Adjustment Factor 14 Characteristics Data Communications Online Update Distributed Data Complex Processing Processing Performance Heavily Used Configuration Transaction Rate Online Data Entry End-User Efficiency Reusability Installation Ease Operational Ease Multiple Sites Facilitate Change Degrees of Influence 0 1 2 3 4 5 Not present, or no influence Incidental influence Moderate influence Average influence Significant influence Strong influence throughout Procedures to Determine the VAF Evaluate each of the 14 general system characteristics on a scale from zero to five to determine the degree of influence (DI) Add the degrees of influence for all 14 general system characteristics to produce the total degree of influence (TDI) Insert the TDI into the following equation to produce the value adjustment factor. VAF = (TDI * 0.01) + 0.65 For example, the following value adjustment factor is calculated if there are three degrees of influence for each of the 14 GSC descriptions (3*14) VAF = (42 * 0.01) + 0.65 VAF = 1.07 Calculate the Adjusted Function Point Count The adjusted function point count is calculated using a specific formula for a development project, enhancement project, or application (system baseline) function point count Development Project Function Point Calculation The development project function point calculation consists of three components of functionality: – Application functionality included in the user requirements for the project – Conversion functionality included in the user requirements for the project – Application value adjustment factor Development Project Function Point Calculation… Development project function point formula – DFP = (UFP + CFP) * VAF – DFP is the development project function point count – UFP is the unadjusted function point count for the functions that will be available after installation – CFP is the unadjusted function points added by the conversion unadjusted function point count – VAF is the value adjustment factor Development Project Function Point Count Example Conclusions Function point analysis is a method of quantifying the size and complexity of a software system in terms of the functions that the system delivers to the user Function point analysis is a complex process that provides many benefits if it can be implemented correctly Function point analysis has been around since the late 1970s and is still used by many organizations today References http://www.ifpug.org Function Point Counting Practices Manual Release 4.1, The International Function Point Users Group, 1999. http://www.carfield.com.hk/document/software_engine/fpa.pdf Matson, Jack E., Barrett, Bruce E., Software Development Cost Estimation Using Function Points, IEEE Transactions on Software Engineering, Volume 20, No. 4, April 1994. Furey, Sean, Why We Should Use Function Points, IEEE Magazine, March/April 1997, pp.28-31. Orr, George, Reeves, Thomas E., Function point counting: one program’s experience, The Journal of Systems and Software, Volume 53, 2000, pp.239-244. Jeffery, D.R., Low, G.C., A Comparison of Function Point Counting Techniques, IEEE Transactions on Software Engineering, Volume 19, No. 5, May 1993. Probasco, Leslee, Dear Dr. Use Case: What About Function Points and Use Cases?, The Rational Edge e-zine, 2002. http://ourworld.compuserve.com/homepages/softcomp/fpfaq.htm http://www.qpmg.com/fp-intro.htm http://www.ifpug.com/fpafund.htm