Function Point Analysis
Function Point Analysis
INTRODUCTION
FPA is a method to break systems into smaller components, so they can be better understood and analyzed. It also provides a structured technique for problem solving. Function Point Analysis is a structured method to perform functional decomposition of a software application. Function Points measure software by quantifying its functionality provided to the user based primarily on the logical design. The user is a sophisticated user ( Someone that would understand the system from a functional perspective --- more than likely someone that would provide requirements or does acceptance testing.) There are a variety of different methods used to count function point. What is on the surface? The image to the right represents the tip of an iceberg. The real issue is not the tip, but what is under the surface of the water and can not be seen. The same is true when you design a software application. One of the largest misconceptions of function points is understanding what functionality is being exposed to an end user versus the delivered functionality. One trend happening in software development today is self service applications like most major airlines are using. EXAMPLE: If you visit American Airlines Website and/or Expedia, you will see a relatively simple screen exposed to the end user. The end user simply puts in their departure and destinations and the dates of travel. This appears on the surface to be a simple inquiry, but this is extremely complex. The process actually includes 1,000s of elementary processes, but the end user is only exposed to a very simple process. All possible routes are calculated, city names are converted to their international three characters, interfaces are sent to all the airline carriers (each one being unique), this is an extremely complex and robust process! When we size software applications we want to understand what is exposed and what is under the surface.
Elementary Process:
A software application is in essence a defined set of elementary processes. When these elementary processes are combined they interact to form what we call a software system or software application. An elementary process is not totally independent existing alone, but the elementary processes are woven together becoming interdependent. On a conceptual level, function point analysis helps define two abstract levels of data 1) data at rest and 2.)data in motion. Data in motion Data in motion is handled via transactional function types or simple transactions. All software applications will have numerous elementary processes or independent processes to move data. Transactions (or elementary processes) that bring data from outside the application domain (or application boundary) to inside that application boundary are referred to as external inputs. Transactions (or elementary processes) that take data from a resting position (normally on a file)
to outside the application domain (or application boundary) are referred as either an external outputs or external inquiries Data at rest Data at rest that is maintained by the application in question is classified as internal logical files. Data at rest that is maintained by another application in question is classified as external interface files.
Performance tuning may or may not have anything to do with functionality. Performance tuning is more a result of trying to understand application throughput and processing time. There are better metrics to utilize when measuring this type of work.
in a project life cycle. 4. There is no agreed upon method to count lines of code. The statement and type of statements used in Visual C++, Assembler, COBOL, SQL are completely different. It is common for applications to have a combination of different languages being utilized.
Productivity:
The definition of productivity is the output-input ratio within a time period with due consideration for quality. Productivity = outputs/inputs (within a time period, quality considered) The formula indicates that productivity can be improved by (1) by increasing outputs with the same inputs, (2) by decreasing inputs but maintaining the same outputs, or (3) by increasing outputs and decreasing inputs change the ratio favorably. Software Productivity = Function Points / Inputs Effectiveness v. Efficiency: Productivity implies effectiveness and efficiency in individual and organizational performance. Effectiveness is the achievement of objectives. Efficiency is the achievement of the ends with least amount of resources.
Software Productivity:
Software productivity is defined as hours/function points or function points/hours. This is the average cost to develop software or the unit cost of software. One thing to keep in mind is the unit cost of software is not fixed with size. What industry data shows is the unit cost of software goes up with size. Average cost is the total cost of producing a particular quantity of output divided by that quantity. In this case to Total Cost/Function Points. Marginal cost is the change in total cost attributable to a one-unit change in output Why increasing Marginal Costs for Software Development? There are a variety of reasons why marginal costs for software increase as size increases. The following is a list of some of the reasons As size becomes larger complexity increases. As size becomes larger a greater number of tasks need to be completed. As size becomes larger there is a greater number of staff members and they become more difficult to manage. A the numbers of individuals in a project increases the number of communication paths increase also. Communication in large projects can be very difficult.
4. Identify and rate data function types to determine their contribution to the unadjusted function
point count.
5. Determine the value adjustment factor (VAF) 6. Calculate the adjusted function point count. The unadjusted function point (UFP) count is determined in steps 3 & 4. It is not important if step 3 or step 4 is completed first. In GUI and OO type applications it is easy to begin with step 3.
same time the transactions are counted a tally should be kept of all FTRs (file types referenced) that the transactions reference. It will be made clear in later chapters that every FTR must have at least one or more transactions.
6. All files are summed to create a file unadjusted function point count.
Standard Documentation:
1. General Specification Documents 2. Interface Documents
3. 4. 5. 6. 7. 8.
Other metric reports Interviews with the users User Documentation Design Documentation Requirements Data flow diagrams
Technology Issues:
Internet/Intranet Applications The boundary for an Internet/Intranet application is defined in a similar way for traditional applications. For traditional applications the boundary is not drawn just around the user interface or a group of screens but around the entire application. Frequently, Internet/Intranet applications are just extensions to current and existing applications. There is a tendency to create a "new" application for the Internet/Intranet extension, but this approach is incorrect. Client/Server The boundaries for client/server applications need to be drawn around both the client and server. The reason is that neither the client nor server supports a users (or sophisticated) view. That is, one alone does not represent a total application. As mentioned early, any complete application needs both data at rest (server) and data in motion (client).
Tabulating:
There is no special tabulating that needs to take place for establishing the boundary, but the boundary can dramatically impact the number of external inputs and external outputs.