Function point: Difference between revisions

Content deleted Content added
Fix cite date error
Removed misplaced good faith addition by Noureldin Abbaker Zakria Adam; minor copy editing.
Line 1:
A '''function point''' is a "unit of measurement" to express the amount of business functionality an [[information system]] (as a product) provides to a user. Function points are used to compute a functional size measurement (FSM) of software. The cost (in dollars or hours) of a single unit is calculated from past projects.<ref>Thomas Cutting, [http://www.pmhut.com/estimating-lessons-learned-in-project-management-traditional Estimating Lessons Learned in Project Management – Traditional], Retrieved on May 28, 2010</ref>
 
{{As of|2013}}, there are several recognized standards and/or public specifications for sizing software based on Function Point.
 
'''1. ISO Standards'''
Line 15:
[[Object Management Group|OMG]], an open membership and not-for-profit computer industry standards consortium, has adopted the Automated Function Point (AFP) specification led by the [[CISQ|Consortium for IT Software Quality]]. It provides a standard for automating the Function Point counting according to the guidelines of the International Function Point User Group ([[IFPUG]]) However, the current implementations of this standard have a limitation in being able to distinguish External Output (EO) from External Inquiries (EQ) out of the box, without some upfront configuration.<ref>OMG/CISQ Specification "Automated Function Points",February 2013, OMG Document Number ptc/2013-02-01 http://www.omg.org/spec/AFP/1.0</ref>
 
== RPURE tools <ref>{{cite journal|last1=Adem|first1=Noureldin|title=Automating Function Points analysis based on functional and non functional requirements text|journal=IEEE|date=26–28 February 2010|doi=10.1109/ICCAE.2010.5451322|accessdate=9 April 2010}}</ref>==
also there are many automaton tools that used to calculate FPA automatically one of this tools is RPURE tools which is used with natural text requirement at the early of software development and it contributes in establishing the link between goal and scenario based requirements and cost.
the following figure<ref>{{cite journal}}</ref>
== Introduction ==
Function points were defined in 1979 in ''Measuring Application Development Productivity'' by Allan Albrecht at [[IBM]].<ref>A. J. Albrecht, "Measuring Application Development Productivity," Proceedings of the Joint SHARE, GUIDE, and IBM Application Development Symposium, Monterey, California, October 14–17, IBM Corporation (1979), pp. 83–92.</ref> The [[functional requirements|functional user requirements]] of the software are identified and each one is categorized into one of five types: outputs, inquiries, inputs, internal files, and external interfaces. Once the function is identified and categorized into a type, it is then assessed for complexity and assigned a number of function points. Each of these functional user requirements maps to an end-user business function, such as a data entry for an Input or a user query for an Inquiry. This distinction is important because it tends to make the functions measured in function points map easily into user-oriented requirements, but it also tends to hide internal functions (e.g. algorithms), which also require resources to implement.
Line 26 ⟶ 23:
* Engineering function points – Elements (variable names) and operators (e.g., arithmetic, equality/inequality, Boolean) are counted. This variation highlights computational function.<ref>Engineering Function Points and Tracking System, [http://www.stsc.hill.af.mil/crosstalk/1994/11/xt94d11e.asp Software Technology Support Center], Retrieved on May 14, 2008</ref> The intent is similar to that of the operator/operand-based [[Halstead complexity measures]].
* Bang measure – Defines a function metric based on twelve primitive (simple) counts that affect or show Bang, defined as "the measure of true function to be delivered as perceived by the user." Bang measure may be helpful in evaluating a software unit's value in terms of how much useful function it provides, although there is little evidence in the literature of such application. The use of Bang measure could apply when re-engineering (either complete or piecewise) is being considered, as discussed in Maintenance of Operational Systems—An Overview.
* Feature points – Adds changes to improve applicability to systems with significant internal processing (e.g., operating systems, communications systems). This allows accounting for functions not readily perceivable by the user, butessentialbut essential for proper operation.
* [[Weighted Micro Function Points]] – One of the newer models (2009) which adjusts function points using weights derived from program flow complexity, operand and operator vocabulary, object usage, and algorithmicalgorithm.
 
== Benefits ==
The use of function points in favor of lines of code seek to address several additional issues:
* The risk of "inflation" of the created lines of code, and thus reducing the value of the measurement system, if developers are incentivized to be more productive. FP advocates refer to this as measuring the size of the solution instead of the size of the problem.
* Lines of Code ([[Source lines of code|LOC]]) measures reward low level languages because more lines of code are needed to deliver a similar amount of functionality to a higher level language.<ref>Jones, C. and Bonsignour O. The Economics of Software Quality, Addison-Wesley, 2012. pp. 105-109.</ref> C. Jones offers a method of correcting this in his work.<ref>Jones, C. Applied Software Measurement: Assuring Productivity and Quality. McGraw-Hill. June 1996.</ref>
* LOC measures are not useful during early project phases where estimating the number of lines of code that will be delivered is challenging. However, Function Points can be derived from requirements and therefore are useful in methods such as estimation by proxy.
 
== Criticism ==
Albrecht observed in his research that Function Points were highly correlated to lines of code,<ref>Albrecht, A. Software Function, Source Lines of Code, and Development Effort Estimation – A Software Science Validation. 1983.</ref> which has resulted in a questioning of the value of such a measure if a more objective measure, namely counting lines of code, is available. In addition, there have been multiple attempts to address perceived shortcomings with the measure by augmenting the counting regimen.<ref>Symons, C.R. "Function point analysis: difficulties and improvements." IEEE Transactions on Software Engineering. January 1988. pp. 2-111.</ref><ref>Hemmstra, F. and Kusters R. "Function point analysis: evaluation of a software cost estimation model." European Journal of Information Systems. 1991. Vol 1, No 4. pp 229-237.</ref><ref>Jeffery, R and Stathis, J. "Specification-based software sizing: An empirical investigation of function metrics." Proceedings of the Eighteenth Annual Software Engineering Workshop. 1993. p 97-115.</ref><ref>Symons, C. Software sizing and estimating: Mk II FPA (Function Point Analysis). John Wiley & Sons, Inc. New York, NY, USA.1991</ref><ref>Demarco, T. "An algorithm for sizing software products." ACM Sigmetrics Performance Evaluation Review. 1984. Volume 12, Issue 2. pp 13-22.</ref><ref>Jeffrey, D.R, Low, G.C. and Barnes, M. "A comparison of function point counting techniques." IEEE Transactions on Software Engineering. 1993. Volume 19, Issue 5. pp 529-532. </ref> Others have offered solutions to circumvent the challenges by developing alternative methods which create a proxy for the amount of functionality delivered.<ref>Schwartz, Adam. "Using Test Cases To Size Systems: A Case Study." 2012 Ninth International Conference on Information Technology- New Generations. April 2012. pp 242-246.</ref><ref>Fischman, L. [http://www.crosstalkonline.org/storage/issue-archives/2001/200102/200102-Fischman.pdf "Evolving Function Points" Crosstalk: The Journal of Defense Software Engineering. 2001. Volume 14, Issue 2. pp 24-27. ] Retrieved on July 2, 2014.</ref>
 
== See also ==