compendio de ingeniería del...

40
2.3 ESTIMACION DE PROYECTOS Ingeniería de Software INF - 163 Resumen preparado por Miguel Cotaña 1 25/08/2011

Upload: ngoque

Post on 24-Sep-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

2.3 ESTIMACION DE PROYECTOS

Ingeniería de SoftwareINF - 163

Resumen preparado por Miguel Cotaña1

25/08/2011

Larry Putnam, ha apuntado que la

gestión del desarrollo de software

considera la estimación como una

actividad que permite obtener,

principalmente, respuestas a las

siguientes preguntas:

¿Cuánto Costará?

¿Cuánto tiempo llevará hacerlo?2

La gestión de un proyecto es una tarea

vital para el éxito del mismo. Dentro de

la gestión, la planificación juega un

importante rol, debido a que es en esta

etapa donde se debe hacer las

asignaciones de los recursos

disponibles, para lo que es necesario

estimar costos y plazos para el

proyecto a realizar.

3

La planificación del proyecto software

tiene que estimar 3 cosas antes de que

comience el proyecto: cuanto durará,

cuanto esfuerzo requerirá y cuanta

gente estará implicada.

Uno de los parámetros críticos de la

estimación es determinar su exactitud.

Además el planificador debe predecir

los recursos de Hw y Sw que va a

requerir y el riesgo implicado.4

No sólo es necesario

aportarle una solución sino que

ésta solución debe implantarse en un tiempo y con unos costes

acordados.

5

COSTE

TIEMPO

REQUISITOS

OBJETIVO

La estimación requiere: experiencia,buena información histórica, coraje deconfiar en las métricas, para obtenerbuenos resultados, debido a que cadaproyecto es diferente, cada empresa esdiferente y el contexto de los sistemasque desarrollamos cambianconstantemente, no existe un métodoque se adapte completamente acualquier proyecto, así la estimacióndebe ajustarse localmente.

6

7

Estimar

Horas

hombre

Estimar

El

costo

Determinar

Plazos de

entrega

Determinar

Personal

involucrado

Estimación enfoque tradicional

Existe cuatro factores que influyensignificativamente en las estimaciones:

La complejidad del proyecto;

El tamaño del proyecto;

El grado de incertidumbreestructural;

Disponibilidad de informaciónhistórica.

8

Técnicas de descomposición: Tamaño del Sw.

9

¿Cómo se define tamaño del software?

Es un resultado cuantificable delproyecto. Se pueden asumir dosenfoques:

Directo: se mide mediante líneasde código (LDC);

Indirecto, se mide mediante puntosde función (PF).

10

Puntos de

Función sin

ajustar

Puntos de

Función

ajustados

Líneas

De código

Del software

Ratio

Líneas de

Código PF

Estimación: método Punto Función

11

Putman y Myers sugieren:

Tamaño de lógica difusa;

Tamaño de punto de función;

Tamaño de componentes estándar;

Tamaño del cambio.

Estos resultados se fusionanestadísticamente para crear unaestimación basada en tres puntos odel valor esperado, se desarrolla:valores optimistas (bajos), valoresprobables y valores pesimistas (altos)

12

Estimación basada en el problema:

Los datos de LDC y PF son distintastécnicas de estimación, pero que tienenvarias características en común, y seutilizan en dos formas para estimar elproyecto de software:

Como variable para estimar eltamaño del software;

Como métrica de línea baserecolectada de proyectoshistóricos.

13

Estimación con casos de uso:Desarrollar un enfoque de estimación decasos de uso es un problema debido a:

Están descritos con diferentes grados deabstracción (dependen del usuario);

Los casos de uso no explican lacomplejidad de las funciones y de lascaracterísticas del software;

Los casos de uso no explican elcomportamiento de las diferentes funcionesy características.

14

Para evitar estos problemas Smithsugiere el uso de los casos de uso en laestimación pero dentro de un contextode “jerarquía estructural”, ésta sedescribe con no más de 10 casos de usoy 30 escenarios distintos para cada casode uso.

Como en toda estimación utilizamosdatos históricos según la ecuación:

15

LDC estimada = N x LDCprom + [(Sa/Sh - 1) + (Pa/Ph – 1)] x LDCajuste

Donde:

N = número real de casos de uso

LDCprom = promedio histórico de LDC

LDCajuste = diferencia entre este proyecto y los

proyectos promedio

Sa = escenarios reales de casos de uso

Sh = escenarios promedio de casos de uso

Pa = páginas reales por caso de uso

Ph = páginas promedio por caso de uso

Modelos empíricos de estimación

16

No hay ningún modelo específico paratodo proyecto de software, como vimosen las secciones anteriores utilizamosdatos históricos, pero éstos estánlimitados a una muestra pequeña deproyectos anteriores, además que cadaescenario y grupo de trabajo esdiferente, da lugar a que cada modelose debe adecuar localmente.

17

Estimar

Horas

hombre

Estimar

Tiempo

total

Determinar

Personal

involucrado

Estimar

El

costo

Determinar

Lineas de

codigo

Establecer

Plazo de

entrega

Estimación: método COCOMO

Estimación del Costo

18

La estimación de costos es una de las

más difíciles y erráticas tareas de la

ingeniería de software; es difícil hacer

estimaciones exactas durante la fase de

planeación de un desarrollo debido a la

gran cantidad de factores desconocidos

en ese momento.

Reconociendo este problema, algunas

organizaciones utilizan una serie de

estimadores de costos.

19

Los factores principales queinfluyen en el costo delsoftware son: Capacidad del

programador; Complejidad del

producto; Tamaño del programa; Tiempo disponible; Confiabilidad requerida; Nivel tecnológico.

20

Capacidad del programador: Por

numero de líneas que puede generar al

mes. En proyectos muy grandes, las

diferencias individuales tienden a

compensarse, pero en proyectos de cinco

programadores o menos la diferencia

puede ser muy importante.

21

COMPLEJIDAD DEL PRODUCTO

Programas de Aplicación

Programas de Apoyo

Programas de Sistema

Procesamiento de datos

Compiladores Sistemas de Bases de Datos

Programas científicos Ligadores Sistemas Operativos

Sistema de Inventarios

Sistemas de Tiempo Real

22

Esfuerzo total en meses delprogramador (PM):

KDSI (número de millares de instrucciones decódigo fuente entregadas con el producto)

Prog. aplicación: PM= 2.4 * (KDSI)** 1.05

Prog. apoyo : PM= 3.0 * (KDSI)** 1.12

Prog. sistema: PM= 3.6 * (KDSI)** 1.20

23

Tiempo de desarrollo para unprograma (TDEV) en meses:

Ya habiendo calculado PM

Prog. aplicación: TDEV= 2.5 * (PM)** 0.38

Prog. apoyo : TDEV= 2.5 * (PM)** 0.35

Prog. sistema: TDEV= 2.5 * (PM)** 0.32

24

Nivel promedio de contratación(personas por proyecto):

Dado el número total de meses programador deun proyecto y el tiempo nominal de desarrollorequeridos

Prog. Aplic.: 176.6 PM / 17.85 MO = 9.9 programadores

Prog. apoyo: 294 PM / 18.3 MO = 16 programadores

Prog. Sist.: 489.6 PM / 18.1 MO = 27 programadores

25

Tiempo disponible:

Es el esfuerzo total del proyecto que se

relaciona con el calendario del trabajo asignado

para la terminación del proyecto. Donde para

Boehm es muy importante las siguientes

variables.

Esfuerzo Relativo ( E/ E Nominal)

Calendario Relativo T Deseado/ T Nominal

Para Putman, el esfuerzo de un proyecto es

inversamente proporcional al tiempo de

desarrollo elevado a la cuarta que se ve

reflejado en una curva.

E = K/ /Td**4).

26

Confiabilidad requerida:

La confiabilidad de un producto puede

definirse como la probabilidad de que un

Programa desempeñe una función requerida

bajo ciertas condiciones especificadas y durante

cierto Tiempo.

La confiabilidad puede expresarse en términos

de los siguiente puntos:

Exactitud;

Firmeza;

Cobertura;

Consistencia del código fuente.

27

Las características de la confiabilidad pueden

instrumentarse en un producto de

programación, pero existe un costo asociado

con los siguiente puntos:

Nivel de análisis;

Diseño;

Instrumentación;

Esfuerzo de verificación;

Validación.

28

Factores multiplicadores de esfuerzopara ajustes por confiabilidad.

CATEGORIA CONSECUENCIA DE LA FALLA FACTOR

Muy baja Alguna molestia menor 0,75

Baja Pérdidas fáciles de recuperar 0,88

Nominal Dificultad relativa a la recuperación

1,00

Alta Gran pérdida financiera 1,15

Muy alta Riesgo de una vida 1,40E

29

Nivel tecnológico:

El nivel de tecnología empleado en un

proyecto de programación se refleja en el

lenguaje utilizado, las practicas y las

herramientas de programación utilizadas.

Sabemos que el número de líneas de código

fuente escrita por día es independiente del

lenguaje de programación y que las

proposiciones escritas en un lenguaje de alto

nivel como JAVA o el VISUAL BASIC suelen

generar varias instrucciones a nivel de

Maquina .

Técnicas de estimación de costos

30

En la mayor parte de las organizaciones,

la estimación de costos se basa en las

experiencia pasadas.

La estimación de costos puede llevarse a

cabo en forma jerárquica de abajo hacia

arriba o de arriba hacia abajo.

31

La estimación hacia abajo se enfoca

primero a los costos del nivel del

sistema, así como a los costos de

manejo de la configuración, del

control de calidad, de la integración

del sistema , del entrenamiento y de

las publicaciones de la

documentación.

32

Estimación hacia arriba, primero se

estima el costo del desarrollo de

cada modulo; tales costos se

integran para obtener un costo

total. Esta técnica tiene la ventaja

de enfocarse directamente a los

costos del sistema.

Algunos enfoques consideran:

Juicio experto;

Estimación de costo por la

técnica Delfi;

Estructuras de división de

trabajo;

Modelos de costo por algoritmos

o módulos.

33

Razones de difícil estimación

No existe un modelo universal;

Hay muchas personas implicadas en

los proyectos que precisan de

estimaciones;

La utilidad de una estimación

dependerá de la etapa de desarrollo

en la que nos encontremos;

La estimación, a menudo se realiza

superficialmente;

34

35

Las estimaciones claras, completas y

precisas son difíciles de formular;

Las características del Sw y de su

desarrollo hacen difícil la estimación;

Existe tendencia aparente hacia la

subestimación;

Existen malas interpretaciones;

El estimador tiende a reducir en

algún grado, para hacer más

aceptable la oferta.

36

QUÉproducto

CON QUÉsignificado

QUIÉNPersonal

CÓMOProyecto

PARA QUIÉNusuario

Tamaño sw RestriccionesOrdenador

Calidad personal

Req. durac. Proyecto

participación

Calidadrequerida

Tiempo ejec. Resp. Mem.

Experiencia Dilatación comprensi.

estabilidad

Compleji-dad del Sw

Herramientas Organiza-ción

experiencia

Nivel de utilización

Técnicas Prototipado conocimientos

Documen-tación

Programación Modeladoágil

Equipos

Tipo aplicación

Equipo de programación

Matriz de organizació

procedimiento

Requisitos de un buen estimador

No tiene ningún interés, directo ni

indirecto en los resultados del proceso

de estimación:

Formación y experiencia profesional;

Juicio independiente;

Basarse en metodos que pueda ser

explicado, cuestionado, discutido y

auditado por otros expertos;

Usa herramientas de estimación;

Documentar la estimación.37

Salidas del proceso de estimación

¿cuánta gente se necesita?;

¿De qué perfiles?;

¿Cuáles son los riesgos?;

¿Cómo afectan las restricciones

impuestas a las estimaciones?;

¿Cuánto esfuerzo se necesita para

realizar cada fase del ciclo de vida?;

¿Cómo impacta este proceso en el

resto de proyectos de la empresa?;

38

39

¿Cuál será el esfuerzo para

mantener este proyecto?;

¿Cuál será el tamaño del sistema

(lineas de código)?;

¿Cuántos defectos tendrá el

producto?;

¿Cuánta documentación será

generada?;

¿Cuál será el esfuerzo para generar

dicha documentación?.

Riesgos en la Estimación

Subestimación del tamaño;

El tiempo requerido para desarrollar

el producto está subestimado;

La tasa de reparación de defectos

está subestimada;

Información imprecisa acerca delproyecto a estimar; Caos en el procesos de desarrollo delproducto; Imprecisión del mismo proceso deestimación.

40