Function Points
A Function Point (FP) is “a synthetic measure of program size which is easier to understand and derive from requirement specifications than SLOC.
Function Points were initial used by IBM and have since become an industry standard. The International Function Point User Group (IFPUG) is a non-profit organization that promotes the use Function Points for software development and maintenance.
Function Point measurements differ from SLOC measurements in that the SLOC is dependant on the
language used where as a Function Point is independent of the language. Once an organization has enough historical data on project Function Points and SLOC then the two can be converted between each other easily through the use of backfiring tables.
Function Point Analysis (FPA) is the method used to determine the size of a project based on the number of Function Point Elements. FPA requires an organization to maintain accurate historical project metrics.
These metrics are used to further refine project size measurements.
Determine the Project Scope
The FP count can be for a new development project, an enhancement to a previous project or a count of an existing application. By determining the scope each FP to be counted is identified.
If a project is broken up into phases then the FP sizing should be created for each phase. It is important to identify exactly what the scope is for each FP count.
Identify Application Boundary
In order to identify the FP elements the boundary of the application needs to be established. This is determined by identifying what data the application is responsible for maintaining and what interactions it will have with the environment.
IFPUG defines the application boundary as the border between the software being measured and the user domain. It should be noted that the term users refers to people as well as other applications that could interact with the software.
The application boundary could encompass several platforms and, as such, it should not be drawn solely based on the hardware or systems the application runs on. The boundary should be viewed in terms of how an experienced user would view the software.
Count the Function Points
Once the scope has been determined and the application boundary established each FP element should be self-evident so each is identified and counted. There are five different types of FP elements and they are inputs, outputs, queries, data files, and interfaces.
FP elements reflect a Database Centric view of the world and as such they are conceptually easy to recognize.
- External Inputs (EI) are ways that end-users or other programs can change a programs data. Changing data includes updates, deletes and additions. EIs can be application forms, message calls or even dialog boxes.
- External Outputs (EO) are ways that the program can let the end-user or other programs know what the programs current data is. Types of outputs are reports, forms, graphs or messages.
- External Queries (EQ) are input / output combinations in which an end-user or program submits a simple input to the program and receives a simple output. This is directly analogous to querying a relational database system.
- Internal Logical Files (ILF) refers to end-user data or control information that is manufactured and stored within the application. Examples include single flat files or a single entity in a relational database.
- External Interface Files (EIF) refers to data which is managed and controlled by other programs but is required to be used by the application being created. EIF are better known as interfaces to other systems and includes web services and flat files produced by other systems and imported into the current application.
Evaluate the Function Point Complexity
Each Function Point Element can be classified by its complexity as Simple, Medium or High. A complexity of Simple indicates the FP has few unique data types, minimal user interaction or limited access. A complexity of High indicates that the FP has a large number of unique data types, extensive user interaction or a large amount of access. A complexity of Medium applies to FPs that are more complex then Simple but not as complex as High.Function Point Complexity Multipliers from IFPUG:
| Function Point Element | Low | Medium | High |
|---|---|---|---|
| External Inputs | x3 | x4 | x6 |
| External Outputs | x4 | x5 | x7 |
| External Queries | x3 | x4 | x6 |
| Internal Logical Files | x7 | x10 | x15 |
| External Interfaces Files | x5 | x7 | x10 |
Calculate the Value Adjustment Factor
The Value Adjustment Factor (VAF) is based on the evaluation of fourteen non-functional General Systems Characteristics (GSC) and ranges in value from 0.65 to 1.35. The formula for VAF is:
VAF = 0.65 + 0.01 * ∑ GSCThe specific value for the GSC is determined by how much influence the characteristic has on the system:
- Data Communication
- 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