estimación de tamaño de software: puntos funcionalesisis2603/... · 2011-01-12 · puntos de...
TRANSCRIPT
Estimación de Tamaño de
Software: Puntos Funcionales
Grupo de Construcción de Software
Facultad de Ingeniería
Universidad de los Andes
Puntos de Función
Métrica para cuantificar la funcionalidad de un
sistema de software tal como la percibe el
usuario/comprador
Propuesta originalmente por A. Albrecht (IBM) en
1979.
Permite medir el tamaño del sistema a partir de sus
requisitos iniciales
Puede usarse muy tempranamente en el proceso de
desarrollo ya que resulta relativamente fácil de
visualizar
Cálculo de los puntos de función
Los puntos de función son un número positivo con
escala arbitraria que refleja el tamaño de la
funcionalidad del sistema (i.e. a mayor tamaño
mayor número de puntos de función)
Cálculo de los puntos de función (cont.)
Se calculan de acuerdo con las siguientes fórmula:
Puntos de Función = Puntos de función Sin Ajuste x Factor
de Complejidad de Procesamiento
donde,
Factor de Complejidad de Procesamiento = 0.65 + (0.01
x Puntos de Complejidad de Procesamiento
Puntos de función Sin Ajuste (PSA)
Es una medida de la funcionalidad del sistema que
no pretende reflejar su complejidad interna
Se mide contando en el sistema:
Entradas (inputs)
Salidas (outputs)
Consultas (inquiries)
Almacenamientos lógicos (logical files)
Interfaces con otros sistemas
Complejidad y pesos
Tipo Simple Promedio Complejo
Entradas 3 4 6
Salidas 4 5 7
Almacenamientos
lógicos
7 10 15
Interfaces 5 7 10
Consultas 3 4 6
Puntos de Complejidad de
Procesamiento (PCP)
Son una medida del grado de influencia en la
complejidad del sistema, de una serie de factores
preestablecidos
Se consideran 14 factores diferentes
Cada factor se evalúa en una escala de 0 (no
tiene influencia) a 5 (influencia muy fuerte)
Factor de Complejidad de
Procesamiento (FCP)
Permite ajustar el total de puntos de función en
35% (hacia arriba o hacia abajo) de acuerdo con
la complejidad de procesamiento
Se calcula con la fórmula:
Factor de Complejidad de Procesamiento =
0.65 + (0.01 x Puntos de Complejidad de Procesamiento)
Su rango de valores está entre 0.65 (0 puntos de
complejidad ) hasta 1.35 (70 puntos de
complejidad)
Comunicación de datos
Actualización en línea
Servicios distribuidos
Procesamiento complejo
Desempeño
Reusabilidad
Ambiente de uso sobrecargado
Facilidad de instalación
Rata de transacciones
Facilidad de operación
Entrada de datos en línea
Múltiples lugares de operación
Eficiencia del usuario final
Facilidad de modificación
Factor de Complejidad de
Procesamiento (FCP)
Ejemplo de cálculo: Puntos de
Complejidad de Procesamiento (PCP)
Comunicación de datos 5
Actualización en línea 5
Servicios distribuidos 5
Procesamiento complejo 3
Desempeño 4
Reusabilidad 0
Ambiente de uso
sobrecargado 1
Facilidad de instalación 1
Rata de transacciones 5
Facilidad de operación 3
Múltiples lugares de operación 4
Eficiencia del usuario final 5
Facilidad de modificación 3
Total de puntos de complejidad de procesamiento
(PCP) = 44
Ejemplo de cálculo: Puntos de
Complejidad de Procesamiento (PCP)
Ejemplo de cálculo: Resultado final
Factor de Complejidad de Procesamiento (FCP):
FCP = 0.65 + (0.01 x PCP)
= 0.65 + (0.01 x 44)
= 1.09
Total de Puntos de Función (FP):
FP = PSA x FCP
= 63 x 1.09
= 68.67
¿Cómo contar los puntos de función?
El objetivo es encontrar cuáles son las entradas,
salidas, consultas, cuántos almacenamientos lógicos
hay...
Desarrollar un diagrama de contexto del sistema
Identificar todas las interacciones del sistema con
entidades externas del mundo real
A partir de los requerimientos del sistema
identificar los puntos funcionales
Puntos de función de tipo entrada
Cada una de las entradas del usuario que
adiciona o cambia información en el
almacenamiento interno o cambia el estado del
sistema se cuenta como una entrada
Una entrada se considera única si tiene un formato
distinto o si requiere una lógica de procesamiento
diferente (es manejada por código diferente)
Una entrada puede recibirse directamente del
usuario (i.e. en línea) o en batch mediante un
archivo de comandos
Puntos de función de tipo
entrada (cont)
No debe contarse los archivos de entrada que
contienen datos generados por otras aplicaciones,
ya que éstos serán contados como puntos de
función del tipo interface. Lo mismo aplica para las
entradas recibidas directamente de otras
aplicaciones
No cuente la parte de entrada de una consulta
Clasificación de los puntos de función
de tipo entrada
Simple
Contiene pocos datos/tipos/campos, pocos archivos
internos se ven afectados en su procesamiento, y/o su
interfaz de usuario es simple/fácil de desarrollar
Promedio
No es claramente ni simple ni complejo
Complejo
Contiene muchos datos/tipos/campos, muchos archivos
internos se ven afectados en su procesamiento, y/o su
interfaz de usuario es compleja/difícil de desarrollar
Puntos de función de tipo salida
Cada salida enviada al usuario como resultado
de algún procesamiento realizado dentro del
sistema
Una salida se considera única si tiene un formato
distinto o si requiere una lógica de procesamiento
diferente (es manejada por código diferente)
Una salida puede ser enviada al usuario
directamente (i.e. en línea) o en batch como un
archivo de mensajes
Puntos de función de tipo
salida (cont.)
No deben contarse los archivos de salida
generados para uso de otras aplicaciones, ya
que éstos serán contados como puntos de función
del tipo interface
Lo mismo aplica para las salidas enviadas
directamente a otras aplicaciones
Clasificación de los puntos de
función de tipo salida
Simple
Contiene pocos datos/tipos/campos, pocos archivos
internos son consultados en su procesamiento, y/o su
formato es simple/fácil de producir
Promedio
No es claramente ni simple ni complejo
Complejo
Contiene muchos datos/tipos/campos, muchos archivos
internos son consultados en su procesamiento, y/o su
formato es complejo/difícil de producir
PF de tipo almacenamiento lógico
Cada uno de los grupos lógicos de datos que deben
ser mantenidos internamente por el sistema para
soportar su funcionalidad
Se considera único si guarda un tipo de información
diferente, o si requiere una lógica de procesamiento
distinta (código diferente) para ser manipulado
Puede corresponder a una o más estructuras de
datos, archivos o tablas de relacionales o a una
parte de una de ellas
Puntos de función de tipo
almacenamiento lógico (cont)
Desde el punto de vista del usuario, los
almacenamientos lógicos pueden mirarse como
depósitos de información internos, que contienen
variables de estado del sistema y/o constantes o
parámetros de operación
No deben contarse los almacenamientos lógicos
que no intervengan en el procesamiento de al
menos una de las entradas, salidas, interfaces o
consultas identificadas para el sistema
Clasificación de los puntos de función
de tipo almacenamiento lógico
Simple
Contiene pocos datos/campos, con relaciones
estructurales simples entre ellos. No hay requisitos
significativos de desempeño o recuperación
relacionados con él
Promedio
No es claramente ni simple ni complejo
Clasificación de los puntos de función
de tipo almacenamiento lógico
Complejo
Contiene muchos datos/campos, con relaciones
estructurales complejas entre ellos. Hay requisitos
significativos de desempeño o recuperación
relacionados con él
Puntos de función de tipo interface
Cada grupo lógico de datos o información de
control, recibido o enviado desde/hacia otra
aplicación, directamente o en batch
En el caso de comunicación en batch, cada tipo de
archivo aceptado o generado por la aplicación
cuenta como una interfaz diferente
Puntos de función de tipo interface
Para interfaces directas (en línea), cada
mensaje o evento diferente recibido de o
enviado a otra aplicación, cuenta como una
interfaz diferente
Las entradas recibidas de otras aplicaciones,
relacionadas con el propósito principal de la
aplicación deben ser contadas como puntos de
función de tipo entrada. Lo mismo aplica para
las salidas
Clasificación de los puntos de
función de tipo interface
Simple
Contiene pocos datos/campos, y posee una estructura
o formato simple
Promedio
No es claramente ni simple ni compleja
Compleja
Contiene muchos datos/campos, y posee una
estructura o formato complejo
Puntos de función de tipo consulta
Cada combinación lógica de entrada/salida,
dónde la entrada causa una salida inmediata, y
ningún almacenamiento interno es actualizado
(i.e. no cambia el estado del sistema)
Una consulta se considera única si sus porciones
de entrada y/o salida tienen formatos diferentes
de las de otras consultas, o si requiere un
procesamiento lógico (código) diferente
Clasificación de los puntos de
función de tipo consulta
Se clasifica la parte de entrada de la consulta
como simple, promedio o compleja, como en el
caso de los puntos de función de tipo entrada
Se clasifica la parte de salida de la consulta como
simple, promedio o compleja, como en el caso de
los puntos de función de tipo salida
La complejidad de la consulta es la mayor de las
dos clasificaciones anteriores
Obtención de los puntos de
complejidad de procesamiento
Se estima el grado de influencia que cada uno de
los 14 factores de complejidad de procesamiento
tiene en la implantación del sistema, y se suman
estos valores
Obtención de los puntos de
complejidad de procesamiento
Valores posibles para estimar el grado de
influencia:
0 = No está presente, no tiene ninguna influencia si lo está
1 = Influencia poco significativa
2 = Influencia moderada
3 = Influencia medianamente significativa
4 = Influencia significativa
5 = Influencia muy fuerte, en toda la extensión del sistema
Factores de complejidad del
procesamiento
Comunicación de datos
Los datos y la información de control utilizados por la
aplicación son enviados o recibidos por medio de
servicios de comunicación electrónica.
Servicios distribuidos
La aplicación mantiene datos distribuidos (en múltiples
computadores) o procesa información en forma
distribuida.
Factores de complejidad del
procesamiento
Desempeño
Los requisitos de desempeño de la aplicación, ya sea
en tiempo de respuesta o capacidad de
procesamiento de datos, tienen influencia en su diseño,
desarrollo, instalación o soporte.
Factores de complejidad del
procesamiento
Ambiente de uso sobrecargado
Se desea correr la aplicación en equipo existente o
comprometido que tendrá una alta carga de
operación.
Factores de complejidad del
procesamiento
Rata de transacciones
La rata de transacciones es alta y tendrá influencia en
el diseño, desarrollo, instalación o soporte de la
aplicación.
Factores de complejidad del
procesamiento
Entrada de datos en línea
La aplicación ofrece servicios de entrada de datos y
control en línea.
Factores de complejidad del
procesamiento
Eficiencia del usuario final
Las operaciones en línea ofrecidas, deben diseñarse o
implantarse con un énfasis en la eficiencia de los
usuarios
Factores de complejidad del
procesamiento
Actualización en línea
La aplicación ofrece actualización en línea de los
almacenamientos de datos lógicos
Factores de complejidad del
procesamiento
Procesamiento complejo
Muchas interacciones de control y puntos de decisión,
uso extensivo de operaciones lógicas y matemáticas,
amplia necesidad de código de manejo de casos
excepcionales resultante de operaciones incompletas o
fallidas.
Factores de complejidad del
procesamiento
Reusabilidad
El código de la aplicación será diseñado
específicamente para ser reutilizado en otras
aplicaciones.
Facilidad de instalación
La facilidad de conversión o instalación, aparece como
parte de los requisitos.
Factores de complejidad del
procesamiento
Facilidad de operación
Se ofrecerán procedimientos efectivos de arrancada,
copias de respaldo (back-up) y recuperación y éstos
serán probados en la fase de pruebas. La aplicación
debe reducir al mínimo la necesidad de intervención
del operador.
Factores de complejidad del
procesamiento
Múltiples lugares de operación
La aplicación será diseñada específicamente para ser
instalada en varios lugares de operación y/o en
varias organizaciones
Facilidad de modificación
La aplicación será diseñada específicamente para ser
flexible a los cambios (i.e. altamente parametrizada,
fácilmente modificable, etc)
Factores de complejidad del
procesamiento
Estimación del tamaño
El tamaño de la aplicación puede estimarse
correlacionando los puntos de función con el número
de líneas de código
Puede utilizarse una regla de proporcionalidad
(regla de tres) basada en tablas como las
mostradas anteriormente.
También puede usarse la técnica de regresión
lineal con base en proyectos anteriores. Este
método puede resultar mucho más confiable.
Estimación del tamaño (cont.)
Los puntos de función pueden contarse antes y
después del desarrollo, con lo cual es posible hacer
correlaciones que permitan ajustar las estimaciones
para lograr una mayor precisión.
La correlación entre los puntos de función y el
tamaño de las aplicaciones es normalmente alta.
Consideraciones finales
Los puntos de función son un método relativamente
sencillo para estimar el tamaño de una aplicación.
Los puntos de función son un proxy de estimación
muy conveniente, ya que son fácilmente
observables a los largo del desarrollo.
Consideraciones finales
Su uso está limitado en buena parte a las
aplicaciones de corte comercial. Otro tipo de
aplicaciones puede requerir de métodos diferentes.
Es posible refinar el método modificando los pesos
de los distintos elementos, los factores de
complejidad de procesamiento, o los pesos de estos
últimos. Este proceso, sin embargo, puede ser
bastante complejo.
Referencias
A. J. Albretch, J. E. Gaffney, Software Function, Source Lines of Code, and Development Effort Prediction: A Software Science Validation, IEEE Transactions on Software Engineering, Vol 9, No. 6, noviembre de 1983.
C. R. Symons, Function Point Analysis: Difficulties and Inprovements, IEEE Transactions on Software Engineering, Vol 14, No. 1, enero de 1988.
C. F. Kemerer, B. S. Porter, Improving the Reliability of Function Point Measurement: An Empirical Study, IEEE Transactions on Software Engineering, Vol 18, No. 11, noviembre de 1992.
International Function Point Users Group (IFPUG) Home Page, http://www.ifpug.org/home/docs/ifpughome.html
IFPUG, Guidelines to Software Measurement, IFPUG, 1994.