| || || |
The idea of being able to measure the size of software requirements or specifications, independent of the technology used to build the software, was first proposed by Allan Albrecht of IBM in 1979. His method, known as Function Point Analysis (FPA) has evolved into the IFPUG method, supported by the International Function Point User Group based in the USA.
He developed a composite index of counts of the functions required (inputs, outputs, inquiries, logical files and interfaces), and of the degree of influence of some 14 quality and technical requirements. The method could therefore be used for comparing performance across projects using different technologies (using measures such as productivity, defined as size / effort) and as a first step in methods for estimating effort early in a project's life-cycle. This was a big step forward compared with the use of counts of Source Lines of Code (SLOC), which had been the only size measure up to that point.
The IFPUG 4.0 method of sizing software is based on a model of analysing the software requirements or user functionality into five types of components, namely
- External Inputs (EIs - an elementary process on input or control data that comes from outside the system boundary)
- External Outputs (EOs - an elementary process that generates data or control information sent outside the system boundary)
- External Inquiries (EQs - an elementary process made up of an input/output combination that results in data retrieval, but which does not maintain any internal logical files nor derive any data for output)
- Internal Logical Files (ILFs - files whose contents are created and/or updated and/or deleted by External Inputs)
- External Interface Files (EIFs - files whose contents are created, updated and deleted by other distinct software, but which are only read by the software being sized)
The five types of components are classified as 'simple', 'average' or 'complex' depending on the number of Data Element Types (DETs) on the component and other attributes, and are awarded Unadjusted Function Points accordingly. For example a simple EI gets 3 FP, an average EI 4 FP and a complex EI 6 FP. The UFP size of an item of software is the sum of the UFP sizes of all its components of each of the five types.