Professional Documents
Culture Documents
4. ESTIMACIN EN
DESARROLLO DE
SOFTWARE.
1. INTRODUCCIN.
Este tema se centra en la estimacin del esfuerzo que tendr que realizar
una empresa para desarrollar una aplicacin. Por esfuerzo nos referimos a la
cantidad de recursos humanos, usualmente medidos en meses/hombre.
Partiremos de que ya se ha realizado un anlisis estructurado y disponemos
de la especificacin de requerimientos del sistema. Por desgracia esto no es
habitual, como dice Edward Yourdon un problema de la estimacin es que se
nos pide que la realicemos cuando an no est claro que desea el usuario (no
disponemos de la especificacin).
Comparando esta ingeniera con la arquitectura (construccin de
edificios), el arquitecto para valorar lo que costar construir un edificio
necesitar tener los planos de ste. Adems, lo que en urbanismo se conoce
con el nombre de edificio singular ,edificios que tienen formas extraas (la
Sagrada Familia de Gaudi, etc.), tienden a salirse del standard y deben ser
valorados cuidadosamente. En el desarrollo de software nos podemos
encontrar con algo similar, la gran mayora de las aplicaciones que se
desarrollan se hacen muy a medida del usuario, es decir se apartan con
mucha frecuencia de lo que seran aplicaciones fcilmente estimables.
Descompondremos el proceso de estimacin del esfuerzo necesario para
realizar el desarrollo de una aplicacin informtica como muestra la figura 1.
13
figura 1
PLANIFICACIN DE PROYECTOS INFORMATICOS
Especificacin de
requerimientos
Medir lo que
quiere el
usuario
Medida de lo que
quiere el usuario
Requisitos a
Cumplir
Tareas a
realizar
Estimacin Descomponer
del Esfuerzo por fases y
tareas
Estimar lo
que Costara
(esfuerzo)
Historial
Empresa
14
15
16
3. PUNTOS DE FUNCIN.
Esta tcnica de medicin y estimacin trata de evaluar una aplicacin
informtica en base a sus caractersticas externas. Estas caractersticas se
descomponen en dos grupos: la funcionalidad que provee el sistema y los
factores de complejidad. La funcionalidad que provee el sistema son aquellos
elementos que dan soporte a formularios de entrada, salidas, consultas y
ficheros a los que debe dar soporte la aplicacin. Los factores de
complejidad son indicadores del entorno en que se ha de desarrollar y
explotar la aplicacin informtica.
Este mtodo de estimacin contempla la aplicacin a desarrollar como
una caja negra, es decir, no se interesa por las interioridades de la aplicacin,
sino que se centra en lo que puede ver el usuario.
El ejemplo clsico de una caja negra es el equipo de msica, en el que los
usuarios estn interesados por su funcionamiento externo, la calidad del
sonido y el coste, prescindiendo usualmente de como estn construidos los
circuitos integrados o sus transistores.
Por otra parte evaluamos de forma explcita los factores de desarrollo que
influyen sobre la productividad como lenguajes de desarrollo, entornos de
trabajo, etc. Seguiremos manteniendo la idea de caja negra, ya que los
17
18
figura 2
figura 3
PLANIFICACIN DE PROYECTOS INFORMATICOS
una lgica distinta. Nos realizamos las siguientes preguntas para asegurarnos
de contar una entrada:
Cuestin:
Entran datos desde exterior de la aplicacin
Existen datos en algn fichero lgico interno que son actualizados
El proceso es la unidad mnima de actividad que tiene sentido para el
usuario
El proceso es completo y deja al sistema en un estado consistente
Para el proceso subyacente se debe de cumplir
A
Lgica del proceso exclusiva de esta entrada, o la primera vez
que la contamos
B
Los datos elementales son diferentes de otras entradas
Respuesta
S
S
S
S
AoB
3.1.2. SALIDAS
En esta categora clasificaremos los procesos elementales que elaboran
informaciones dentro del sistema y que se transmitan a un usuario u otra
aplicacin atravesando la frontera del sistema. En la figura 3 se muestra su
apariencia en el DFD.
Las salidas estn asociadas a:
20
Respuesta
S
S
S
AoB
21
figura 4
PLANIFICACIN DE PROYECTOS INFORMATICOS
3.1.3. CONSULTAS.
En esta categora clasificaremos los procesos elementales que estn
formados por una combinacin de entrada y salida, produciendo una consulta
a los datos.
La salida no puede contener informacin derivada (calculada). Como
consecuencia de una consulta no se modifican los datos del sistema (de
ningn Fichero Lgico Interno).
En la figura 4 se muestra su
apariencia en el DFD.
22
Respuesta
S
S
S
S
S
S
S
AoB
figura 5
2. ESTIMACIN DE ESFUERZO EN DESARROLLO DE SOFTWARE
A
B
figura 6
Respuesta,
S
S
S
S
DIAGRAMA DE CONTEXTO
Nmero de
Campos o
1-4 Atributos
CLASIFICACIN
SALIDAS
0 1 ficheros accedidos
2 3 ficheros accedidos
4 ms ficheros accedidos
Nmero de
Campos o
1-5 Atributos
BAJA
4
BAJA
4
MEDIA
5
BAJA
BAJA
MEDIA
5-15 Atributos
3
3
4
BAJA
MEDIA
ALTA
6-19 Atributos
BAJA
4
MEDIA
5
ALTA
7
4
6
16 ms Atrib.
MEDIA
4
ALTA
6
ALTA
6
20 ms Atrib.
MEDIA
5
ALTA
7
ALTA
7
Nmero de
o
1-19Campos
Atributos
Complejidad FICHEROS
INTERFAZ EXTERNOS
1 Registro Lgico
2-5 Registros Lgicos
6 o ms Registros Lgicos
Nmero de
o
1-19Campos
Atributos
BAJA
BAJA
MEDIA
BAJA
BAJA
MEDIA
7
7
10
5
5
7
20-50 Atributos
BAJA
7
MEDIA
10
ALTA
15
51 o Atributos
MEDIA
10
ALTA
15
ALTA
15
20-50 Atributos
51 Atributos
BAJA
MEDIA
MEDIA
ALTA
5
7
10
ALTA
ALTA
7
10
10
Se han de contar los campos que hacen falta para mantener las
relaciones con otros ficheros Internos o Externos.
26
27
Tipo Elemento
Dificultad
Entradas
Simple
Media
Compleja
Total Puntos de
Funcin
Entradas
Simple
Media
Compleja
Total Puntos de
Funcin Salidas
Simple
Media
Compleja
Total Puntos de
Funcin
Consultas
Simple
Media
Compleja
Total Puntos de
Funcin
Ficheros
Simple
Media
Compleja
Total Puntos de
Funcin
Ficheros
de
Interfaz
Salidas
Consultas:
Mximo Complejidad(
Entrada, Salida )
Ficheros Internos
Ficheros de
Interfaz
Total Puntos de
Funcin
Sin
Peso
3
4
6
Cantid
ad
E1
E2
E3
Total
Puntos
3 * E1
4 * E2
6 * E3
Total Elemento
Peso * Ei
4
5
7
S1
S2
S3
4 * S1
5 * S2
7 * S3
3
4
6
C1
C2
C3
3 * C1
4 * C2
6 * C3
7
10
15
F1
F2
F3
7 * F1
10 * F2
15 * F3
5
7
10
I1
I2
I3
5 * I1
7 * I2
10 * I3
Peso * Si
Peso * Ci
Peso * Fi
Peso * Ii
Peso*Xij
2) PROCESO DISTRIBUIDO.
Existen Procesos o Datos distribuidos, y el control de estos forma parte
del sistema.
0 Sistema totalmente Centralizado o no tiene como objetivo el transferir
datos o procesos entre componentes del sistema.
1 El sistema realiza sus procesos en un equipo, pero las salidas se
preparan de modo que son utilizadas va software de otros equipos.
Por ejemplo a la salida del sistema se accede va una hoja de clculo o
un procesador de textos en un PC.
2 El sistema captura los datos en un equipo, que les da formato, siendo
enviados a otro equipo del sistema que los trata.
3 Proceso distribuido pero con transferencia de datos "en lnea" en una
sola direccin.
4 Proceso de datos distribuidos y transferencia de datos "en lnea" en
ambas direcciones. Por ejemplo una red de cajeros automticos en
donde stos procesan parte la transaccin.
5 El sistema esta ejecutndose en una red con procesos cooperantes
ejecutndose en distintos equipos.
3) OBJETIVOS DE RENDIMIENTO.
Si el rendimiento es un requisito del sistema. Es decir es crtico algn
factor como tiempo de respuesta o cantidad de operaciones por hora. Se
tendr que hacer consideraciones especiales durante el diseo, codificacin y
mantenimiento.
0 Rendimiento normal (el que suelen dar los sistemas informticos en los
que no se pone nfasis en este tema).
30
32
Mens.
Uso de ratn.
Ventanas de "pop-up".
Toma el valor:
0 No hay especial nfasis en los interfaces de uso con el usuario.
1 De uno a tres de los factores anteriores.
2 De cuatro a cinco.
3 Seis o ms factores, pero sin especiales requerimientos de eficiencia.
4 Ms de seis factores, con requerimientos lo suficientemente especficos
como para justificar en el diseo estudios de los factores humanos.
Ejemplo: minimizar la cantidad de pulsaciones, proveer valores por
defecto, uso de marcos estandarizados, etc..
5 Igual al anterior, pero los requerimientos son tan fuertes que se
demanda la construccin de prototipos y utilizacin de herramientas
para su evaluacin y comprobar que se alcanzarn los objetivos.
8) ACTUALIZACIONES EN-LNEA.
Los ficheros maestros y las Bases de Datos son modificadas directamente
de forma interactiva.
0 No hay actualizaciones interactivas.
1 Actualizacin en lnea de uno a tres ficheros con informacin de
control. Ejemplo fichero con usuarios, horas en que se puede acceder,
etc.. La cantidad de actualizaciones es baja y es fcil recuperar el
fichero.
2 Igual al anterior, pero con cuatro o ms ficheros de control.
34
consecuencia
de
36
Valoraremos con:
0 No se especifica nada, en todo caso lo que debieran ser procedimientos
usuales de back-up.
1 a 4 sumar la cantidad de tems en la lista anterior.
5 Sistema automtico sin intervencin humana.
13) INSTALACIONES MLTIPLES
El sistema ha de incluir los requerimientos de diversas empresas o
departamentos en donde se ejecutar (incluso distintas plataformas). Estas
caractersticas estarn presentes durante el diseo, codificacin y pruebas.
0 En slo un lugar.
1 Mltiples lugares pero con idntico Hardware y entorno Software.
2 En el diseo se ha de tener en cuenta que rodar en diferentes
entornos, pero con Hardware y Software similares.
3 La aplicacin deber rodar en mltiples entornos de Hardware o
Software y se tiene en cuenta desde la fase de diseo.
38
Toma el valor::
0 No se especifica nada.
1 Se da un tem de los descritos anteriormente con valor 1.
39
40
Factor de Complejidad
Comunicacin de Datos.
Proceso Distribuido.
Objetivos de Rendimiento
Tasa de Transacciones
Actualizaciones EN-LNEA
10
11
12
Facilidad de Operacin
13
Instalaciones Mltiples
14
Facilidad de Cambios
Valor (0..5)
Valori
Fact
or de
41
35
70
42
De todos modos esto no deja de ser una orientacin ya que como indica
Thomsett algunas organizaciones usan valores como 40 horas por punto de
funcin en COBOL.
Dreger comenta que la productividad no slo vara entre programadores,
sino que tambin con el tamao del proyecto. Indica que en algunos estudios
se ha llegado a la conclusin de que un equipo medio, en un proyecto de 400
PFA, utiliza 20 horas por punto de funcin, mientras que en un proyecto de
2000 PFA, pasa a ser de 52 horas por punto de funcin.
En cualquier caso nuestra empresa deber mantener una base de datos con
la informacin de los proyectos realizados en sta. Se deber tener como
mnimo los puntos de funcin que se estimaron en cada proyecto, los que
resultaron a final del proyecto, el esfuerzo que cost, el entorno y los
lenguajes utilizados. Si deseamos una mejor informacin deberamos
mantener la informacin de base para calcular los puntos de funcin, factores
de complejidad y aadir aquellos factores que pensemos que son relevantes
en nuestra organizacin. Un ejemplo de esto puede ser el suponer que el
apoyo de la alta direccin es un elemento clave, as pues lo valoraremos de 0
a 5 y mantendremos esta informacin para posibles interpretaciones futuras.
Con todas las cautelas que hemos indicado, podemos calcular el esfuerzo
requerido en nuestra organizacin para un proyecto como:
Esfuerzo = PFA * Promedio_Organizacin( Lenguaje )
44
6. BIBLIOGRAFA Y REFERENCIAS A
CONSULTAR.
1. Albrecht, A.J. and Gaffney, J.E.. "Software Function, Source Lines of
Code, and Development Effort Prediction: A Software Science
Validation". IEEE Transaction on Software Engineering, Vol. SE-9, N 6,
Nov. 1983, pp. 639-648. (Hemeroteca UPV).
2. Boehm, Barry. Software Engineering Economics. Reimpreso en Software
Management (4 ed.), Donald J. Reifer, IEEE Computer Society Press
1993. (Biblioteca UPV).
3. Dreger, J.B. "Function Point Analysis", Prentice Hall, 1989. (Biblioteca
UPV).
4. Gibson, Robin. Managing Computer Projects. Avoiding the Pitfalls.
Prentice Hall, 1992. (Biblioteca UPV).
5. International Function Point Users Group: "Function Point as an Asset Reporting to Management", 1992. (Disponible para consulta restringida
en el Dpto.).
45
46