Joined: 08/02/2012 13:47:56
The first step in performing a function point count is to use the Functional User Requirements to identify the purpose of the count. The purpose of a function point count is to provide an answer to a business question and that purpose will help you identify the type of count, the counting scope and the application boundary. The purpose might, for example to determine the size of a suite of software for the purpose of negotiating an outsourcing contract for maintenance.
Based on the purpose you will determine the type of count you are performing (development, enhancement or application). For example, if you've made changes to a production application and want to know the change in size, you would do an enhancement count. If you're dealing with an enhancement count you use the existing counting scope and application boundary that was set when you performed your baseline count.
Next you would use the purpose and the type of count to establish the counting scope. In our example of an enhancement count, the counting scope would include all transactional and data functions added, changed or deleted as well as any conversion requirements.
Finally you establish the application boundary based on the user view of the application, not on technical considerations. For example, a company may have an application to monitor when employees are in a company facility. It's been decided that the purpose of the count is to establish a size of the application for comparison against other products developed by outside vendors. The leads us to perform an application count of the running application with a counting scope that includes all functionality currently present in the application. The boundary exists between the application and each user.
Different classes of users may be established to allow different functionality. For example, an employee has the ability to enter and exit the building using their company ID. Another class of users exist in the HR department, their functionality includes the ability to allow employees access to some facilities but not others, and to set the time of day and days of the week that they will be allowed to enter. Building security probably has some functionality which allows them to block specific employees on a temporary basis.
There is a different type of user that is often overlooked and can severely affect that accuracy of a function point count. This is the non-human user. Put simply there may be other machine who are allowed to perform unique tasks with the application and this functionality must be counted as well. Remember that everything counted is based on the business requirements and not on technical considerations. One phrase that is sometimes used to describe this is "functionality requested and received by the user" and can be found in the documentation that you gathered at the start of your function point count.
I hope that this helps. - Royce