Articulo de referencia

Punto de función

El punto de función es una "unidad de medida" para expresar la cantidad de funcionalidad empresarial que un sistema de información (como producto) proporciona a un usuario. Los ...

El punto de función es una "unidad de medida" para expresar la cantidad de funcionalidad empresarial que un sistema de información (como producto) proporciona a un usuario. Los puntos de función se utilizan para calcular una medida de tamaño funcional (FSM) del software. El costo (en dólares u horas) de una sola unidad se calcula a partir de proyectos anteriores. [ 1 ]

Estándares

Existen varios estándares reconocidos y/o especificaciones públicas para el dimensionamiento de software basado en puntos de función.

1. Normas ISO

  • FiSMA: ISO/IEC 29881:2010 Tecnología de la información – Ingeniería de sistemas y software – FiSMA 1.1 Método de medición del tamaño funcional.
  • IFPUG : ISO/IEC 20926:2009 Ingeniería de software y sistemas – Medición de software – Método de medición del tamaño funcional IFPUG.
  • Mark-II: ISO/IEC 20968:2002 Ingeniería de software – Análisis de puntos de función Ml II – Manual de prácticas de conteo
  • Nesma: ISO/IEC 24570:2018 Ingeniería de software – Método de medición de tamaño funcional de Nesma, versión 2.3 – Definiciones y directrices de conteo para la aplicación del análisis de puntos de función.
  • COSMIC : ISO/IEC 19761:2011 Ingeniería de software. Un método de medición de tamaño funcional.
  • OMG : ISO/IEC 19515:2019 Tecnología de la información — Object Management Group Puntos de función automatizados (AFP), 1.0

Los primeros cinco estándares son implementaciones del estándar general para la medición del tamaño funcional ISO/IEC 14143. [ 2 ] La especificación OMG Automated Function Point (AFP), liderada por el Consortium for IT Software Quality , proporciona un estándar para automatizar el conteo de puntos de función de acuerdo con las directrices del International Function Point User Group ( IFPUG ). Sin embargo, las implementaciones actuales de este estándar tienen una limitación al no poder distinguir la salida externa (EO) de las consultas externas (EQ) de forma predeterminada, sin alguna configuración previa. [ 3 ]

Introducción

Los puntos de función se definieron en 1979 en Measuring Application Development Productivity por Allan J. Albrecht en IBM . [ 4 ] Se identifican los requisitos funcionales del usuario del software y cada uno se clasifica en uno de cinco tipos: salidas, consultas, entradas, archivos internos e interfaces externas. Una vez que la función se identifica y clasifica en un tipo, se evalúa su complejidad y se le asigna una cantidad de puntos de función. Cada uno de estos requisitos funcionales del usuario se corresponde con una función empresarial del usuario final, como la entrada de datos para una Entrada o la consulta del usuario para una Consulta. Esta distinción es importante porque tiende a hacer que las funciones medidas en puntos de función se correspondan fácilmente con los requisitos orientados al usuario, pero también tiende a ocultar las funciones internas (por ejemplo, algoritmos), que también requieren recursos para su implementación.

Actualmente no existe ningún método FSM reconocido por la ISO que incluya la complejidad algorítmica en el resultado del dimensionamiento. Recientemente se han propuesto diferentes enfoques para abordar esta debilidad percibida, implementados en varios productos de software comerciales . Las variaciones del método IFPUG basado en Albrecht, diseñadas para compensar esta (y otras debilidades), incluyen:

  • Puntos de función tempranos y sencillos: se ajusta a la complejidad del problema y de los datos con dos preguntas que proporcionan una medición de complejidad algo subjetiva; simplifica la medición al eliminar la necesidad de contar los elementos de datos.
  • Puntos de función de ingeniería: se cuentan los elementos (nombres de variables) y los operadores (p. ej., aritméticos, igualdad/desigualdad, booleanos). Esta variación resalta la función computacional. [ 5 ] La intención es similar a la de las medidas de complejidad de Halstead basadas en operadores/operandos .
  • Medida Bang: Define una métrica de función basada en doce recuentos primitivos (simples) que afectan o muestran Bang, definido como "la medida de la función real que se entrega según la percepción del usuario". La medida Bang puede ser útil para evaluar el valor de una unidad de software en términos de la cantidad de función útil que proporciona, aunque existe poca evidencia en la literatura sobre dicha aplicación. El uso de la medida Bang podría aplicarse cuando se considera la reingeniería (ya sea completa o parcial), como se analiza en Mantenimiento de sistemas operativos: una visión general.
  • Características destacadas: Se añaden cambios para mejorar la aplicabilidad a sistemas con un procesamiento interno significativo (por ejemplo, sistemas operativos, sistemas de comunicaciones). Esto permite tener en cuenta funciones que el usuario no percibe fácilmente, pero que son esenciales para un funcionamiento correcto.
  • Puntos de función micro ponderados : uno de los modelos más recientes (2009) que ajusta los puntos de función utilizando ponderaciones derivadas de la complejidad del flujo del programa, el vocabulario de operandos y operadores, el uso de objetos y el algoritmo.
  • Puntos de función difusa: propone una transición difusa y gradual entre complejidades bajas x medias y medias x altas [ 6 ].

Contraste

El uso de puntos de función en lugar de líneas de código busca abordar varios problemas adicionales:

  • Existe el riesgo de que se produzca una "inflación" en las líneas de código generadas, lo que reduce el valor del sistema de medición, si se incentiva a los desarrolladores a ser más productivos. Los defensores de la programación funcional se refieren a esto como medir el tamaño de la solución en lugar del tamaño del problema.
  • Las medidas de Líneas de Código ( LOC ) favorecen a los lenguajes de bajo nivel porque se necesitan más líneas de código para ofrecer una cantidad similar de funcionalidad en un lenguaje de nivel superior. [ 7 ] C. Jones ofrece un método para corregir esto en su trabajo. [ 8 ]
  • Las medidas LOC no son útiles durante las fases iniciales del proyecto, cuando estimar la cantidad de líneas de código que se entregarán resulta complicado. Sin embargo, los Puntos de Función se pueden derivar de los requisitos y, por lo tanto, son útiles en métodos como la estimación indirecta.

Crítica

Albrecht observó en su investigación que los Puntos de Función estaban altamente correlacionados con las líneas de código, [ 9 ] lo que ha llevado a cuestionar el valor de dicha medida si se dispone de una medida más objetiva, como el conteo de líneas de código. Además, se han realizado múltiples intentos para abordar las deficiencias percibidas de la medida mediante la ampliación del régimen de conteo. [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] Otros han ofrecido soluciones para sortear los desafíos mediante el desarrollo de métodos alternativos que crean un indicador indirecto de la cantidad de funcionalidad entregada. [ 16 ]

Véase también

Referencias

  1. Thomas Cutting, Estimating Lessons Learned in Project Management – ​​Traditional , Consultado el 28 de mayo de 2010
  2. ISO/IEC JTC 1/SC 7 Ingeniería de software y sistemas (01/02/2007). "ISO/IEC 14143" . Organización Internacional de Normalización . Consultado el 26/02/2019 .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  3. Especificación OMG/CISQ "Puntos de función automatizados", febrero de 2013, documento OMG número ptc/2013-02-01 http://www.omg.org/spec/AFP/1.0
  4. AJ Albrecht, "Medición de la productividad en el desarrollo de aplicaciones", Actas del Simposio conjunto SHARE, GUIDE e IBM sobre desarrollo de aplicaciones, Monterey, California, 14-17 de octubre, IBM Corporation (1979), págs. 83-92.
  5. Sistema de seguimiento y puntos de función de ingeniería, Centro de soporte de tecnología de software. Archivado el 11 de noviembre de 2010 en Wayback Machine . Recuperado el 14 de mayo de 2008.
  6. Lima, Osías de Souza; Farías, Pedro Porfirio Muñiz; Belchior, Arnaldo Días (1 de junio de 2003). "Modelado difuso para análisis de puntos funcionales". Revista de calidad del software . 11 (2): 149– 166. doi : 10.1023/A:1023716628585 . ISSN 1573-1367 . S2CID 19655881 .  
  7. Jones, C. y Bonsignour O. La economía de la calidad del software, Addison-Wesley, 2012. págs. 105-109.
  8. Jones, C. Medición de software aplicada: asegurando productividad y calidad. McGraw-Hill. Junio ​​de 1996.
  9. Albrecht, A. Función del software, líneas de código fuente y estimación del esfuerzo de desarrollo: una validación de la ciencia del software. 1983.
  10. Symons, CR "Análisis de puntos de función: dificultades y mejoras." IEEE Transactions on Software Engineering. Enero de 1988. págs. 2-111.
  11. Hemmstra, F. y Kusters R. "Análisis de puntos de función: evaluación de un modelo de estimación de costos de software." European Journal of Information Systems. 1991. Vol. 1, n.° 4, págs. 229-237.
  12. Jeffery, R y Stathis, J. "Dimensionamiento de software basado en especificaciones: una investigación empírica de métricas de funciones". Actas del Decimoctavo Taller Anual de Ingeniería de Software. 1993. págs. 97-115.
  13. Symons, C. Dimensionamiento y estimación de software: Mk II FPA (Análisis de puntos de función). John Wiley & Sons, Inc. Nueva York, 1991
  14. Demarco, T. "Un algoritmo para dimensionar productos de software." ACM Sigmetrics Performance Evaluation Review. 1984. Volumen 12, Número 2. pp 13-22.
  15. Jeffrey, DR, Low, GC y Barnes, M. "Una comparación de técnicas de conteo de puntos de función". IEEE Transactions on Software Engineering. 1993. Volumen 19, Número 5. págs. 529-532.
  16. Schwartz, Adam. "Uso de casos de prueba para dimensionar sistemas: un estudio de caso". Novena Conferencia Internacional sobre Tecnologías de la Información - Nuevas Generaciones, 2012. Abril de 2012. pp. 242-246.
  • El Grupo Internacional de Usuarios de Puntos de Función (IFPUG)