estimación del esfuerzo de desarrollo de software · una actividad previa a la planeación es la...

62
Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007 Zacatecas Estimación del esfuerzo de desarrollo de software Estimación del esfuerzo de desarrollo de software Contenido General 1) Introducción 2) Técnicas de estimación 3) Caso de estudio 4) Conclusiones 5) Recomendaciones

Upload: others

Post on 11-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

Estimación del esfuerzo de desarrollo de software

Contenido General

1) Introducción2) Técnicas de estimación3) Caso de estudio4) Conclusiones5) Recomendaciones

Page 2: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

1) Introducción

Fecha: Del 7 al 11 de octubre de 1968 en Garmisch, Alemania

Organizador: Comité de Ciencia de la Organización del Tratado del Atlántico Norte (OTAN)

Asistentes: Poco más de medio centenar de personas provenientes de la industria, academia y gobierno de once países.

Finalidad: Discutir diversos problemas relacionados con el desarrollo de software.

Page 3: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

Uno de los problemas tratados durante esta reunión fue la dificultad para cumplir con los planes de proyectos de software.

Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada como uno de los tres grandes desafíos de la ciencia computacional

Además de la planeación y control del proyecto, las técnicas de estimación se usan dentro de las empresas para la presupuestación, administración de riesgos y el análisis de mejoramiento de inversión.

1) Introducción

Page 4: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

1.1 Estimación del software

Diversos rubros pueden ser estimados dentro del ámbito de la estimación de proyectos de software:

1. Tamaño (líneas de código o puntos de función)

2. Esfuerzo (en minutos, días, semanas o meses-persona)

3. Costos (en pesos o dólares)4. Duración (tiempo calendario en

meses)5. Recursos de computadora6. Personal (número)7. Calidad (defectos)

1) Introducción

Page 5: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

1) Introducción

1.2 Estimación del esfuerzo de desarrollo de software

El software es especialmente difícil de estimar por lo siguiente:

1. Los requerimientos son difíciles de establecer con precisión;

2. El producto es esencialmente invisible hasta que éste haya sido finalizado;

3. El producto es difícil de medir (por su naturaleza intangible);

Page 6: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

1.2 Estimación del esfuerzo de desarrollo de software

El proceso de estimación del esfuerzo de desarrollo consiste en actividades específicas:

1. Obtención de datos a partir de proyectos anteriores;

2. Generación de modelos de estimación;

3. Verificación y validación de modelos con base en su precisión.

1) Introducción

Page 7: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

Diversas técnicas de estimación han sido propuestas e investigadas durante los pasados 30 años. Las investigaciones están dirigidas a

1) Determinar cual técnica tiene la mayor precisión para predecir el esfuerzo

2) Proponer nuevas o combinadas técnicas que pudieran proveer mejores estimaciones.

2) Técnicas para la estimación del esfuerzo de desarrollo de software

Page 8: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

En general, las técnicas pueden encontrarse dentro de las siguientes tres categorías

2) Técnicas para la estimación del esfuerzo de desarrollo de software

2.1 Juicio Experto

Técnica ampliamente utilizada para derivar estimaciones basadas en la pericia de expertos en proyectos similares.

El significado de derivar una estimación de este tipo no es explícita y por lo tanto no es repetible.

Page 9: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

2.1 Juicio Experto

Aunque la estimación experta es comúnmente usada, es probable que no sea por su precisión; de hecho, parece ser tan imprecisa como el uso de modelos formales.

Puede ser especialmente útil y frecuentemente la única opción para compañías con ya sea deficiente experiencia documentada de proyectos desarrollados o bien por tener recursos limitados para el proceso de estimación.

El término estimación experta no está claro y cubre un amplio rango de enfoques de estimación. Una característica común es, sin embargo, que los procesos intuitivos constituyen la mayor parte de la estimación.

2) Técnicas para la estimación del esfuerzo de desarrollo de software

Page 10: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

2.2 Modelos Algorítmicos

intentan representar la relación entre el esfuerzo y una o más características del proyecto.

El principal conductor de costo en tales modelos es usualmente tomado del tamaño del software.

Su forma general es una ecuación de regresión lineal o no lineal:

E = a + b(X)

E = a (X)b

2) Técnicas para la estimación del esfuerzo de desarrollo de software

Page 11: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

2.3 Aprendizaje de Máquina

Estas técnicas han sido usadas en años recientes como complemento o alternativa al juicio experto y modelos algorítmicos. Entre estos aparecen:

1) Redes neuronales artificiales

2) Razonamiento basado en casos (la estimación por analogía es untipo de éste)

3) Programación genética

4) Lógica difusa

2) Técnicas para la estimación del esfuerzo de desarrollo de software

Page 12: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

2.4 Comparación de técnicas

La estimación se puede ver desde tres perspectivas diferentes:

(1) El problema de estimación (¿qué etapa del proceso se estimará: desarrollo, mantenimiento, etc.

(2) El problema particular (¿qué producto se estimará?) y

(3) La técnica de estimación a usar dentro de las tres mencionadas categorías generales.

2) Técnicas para la estimación del esfuerzo de desarrollo de software

Page 13: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

2.4 Comparación de técnicas

Algunos investigadores han encontrado que la estimación por analogía genera mejores resultados que la regresión estadística, mientras que otros han reportado resultados opuestos.

Por lo tanto, ningún método o modelo debería preferirse sobre los otros.

La clave está entonces en usar una variedad de técnica y luego investigar las razones del por qué las estimaciones provistas por una, podrían diferir significativamente de aquellas provistas por otra.

2) Técnicas para la estimación del esfuerzo de desarrollo de software

Page 14: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

“En lógica difusa todo, incluyendo la verdad, es un asunto de grado “

Pedrycz W., Gomide F. An Introduction to Fuzzy Sets.

The MIT Press. 1998

Desde su origen por Zadeh en 1965, la lógica difusa ha sido objeto de importantes investigaciones: robótica, medicina y procesamiento de imágenes.

3) Lógica Difusa

Page 15: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

Una desventaja en los modelos estadísticos es la forma por la que ellos disminuyen la comprensión de cómo son añadidas las variables, interacciones y transformaciones.

Este problema puede ser al menos parcialmente superado con el uso de la lógica difusa, la cual fue desarrollada por la insatisfacción de la lógica clásica de todo o nada.

La afirmación central subyacente de este enfoque difuso es que las entidades en el mundo real simplemente no pertenecen a una sola categoría. Por ejemplo, un proyecto no es solo pequeño, mediano o grande, sino podría de hecho ser un gran proyecto en su mayoría, pero también mediano en su minoría.

Esto puede ser representado con un grado de pertenencia en una categoría lingüística particular.

3) Lógica Difusa

Page 16: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

Todas las técnicas de estimación tienen una característica importante: el software es descrito usando datos categóricos (en escala nominal u ordinal) tales como pequeño, mediano, promedio o alto.

Un enfoque más comprensivo para tratar con valores lingüísticos es precisamente usando la teoría de la lógica difusa.

3) Lógica Difusa

Page 17: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

3.1 Conjuntos difusos

Un conjunto difuso es un conjunto con una función de membresía m en el intervalo real [0, 1].

Esta definición extiende aquella del conjunto clásico donde la función de membresía está en el par {0, 1}.

Los conjuntos difusos pueden ser efectivamente usados para representar valores lingüísticos tales como bajo, mediano o complejo.

La representación por un conjunto difuso tiene las siguientes ventajas: (1) Es más general (2) Imita la forma en la que la mente de los humanos interpretan los

valores lingüísticos y (3) La transición de un valor es más gradual que abrupto.

3) Lógica Difusa

Page 18: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

3.2 Reglas difusas

Con base en el conocimiento previo del comportamiento de los datos (correlación, por ejemplo), deben establecerse reglas difusas del tipo si-entonces, ejemplos:

Si (Tamaño del programa es Pequeño) entonces (Esfuerzo es Bajo)

Si (Tamaño del programa es Mediano) entonces (Esfuerzo es Promedio)

Si (Tamaño del programa es Grande) entonces (Esfuerzo es Alto)

3) Lógica Difusa

Page 19: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

3.3 Funciones de membresía

Existen diversos tipos de funciones de membresía. Los más utilizados dentro de la estimación del esfuerzo son del tipo triangular, gausiana y trapezoidal:

3) Lógica Difusa

Page 20: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

3.3.1 Función de membresía triangular

Función de tres puntos, definidos como valores mínimo (a), máximo (b) y un punto entre ambos (m), esto es, FM(a,m,b) donde a ≤ m ≤ b.

Sus parámetros escalares (a, m, b) se definen como sigue:

FM(x) = 0 si x < a FM(x) = 1 si x = mFM(x) = 0 si x > b

3) Lógica Difusa

Page 21: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

1. Programas desarrollados con base en prácticas del Proceso de Software Personal

2. Población de 52 desarrolladores

3. Muestra de 37 desarrolladores

4. 105 programas de 30 desarrolladores para generar los modelos de regresión lineal simple, múltiple y difusos

5. Verificación de modelos

6. 20 programas de otro grupo de 7 desarrolladores para validar losmodelos de regresión lineal simple y difusos

Page 22: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

Modelos de Procesos

CMMI

SDCE

SCAMPI

Bootstrap

Trillium

IPD-CMM

PSM

ISO 15939

SCE

ISO/IEC 15504

SW-CMM

People CMM

ISO/IEC 90003

SE-CMM

FAA- ICMM

SA-CMM

EFQM

SPICE

CBA IPI

EIA/IS 731

SECAM

EIA 632

ISO/IEC 15288

ISO 9000 Series

Q9000

TL9000

ISO/IEC 12207

IEEE/EIA 12207

MIL-STD 498

DOD-STD- 7935A

DOD-STD- 2168

DOD-STD- 2167A

J-STD- 016

RTCA DO-178B

PSP TSP

FAM

SSE- CMM

Baldrige

SAM

IEEE 1220

MIL-STD- 499B

MOPROSOFT

MPS Br

Sustituye a

Basado en

Usa/Referencia

Page 23: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

Capability Maturity Model

(CMM)

El CMM es relevante para México dado que las metas de crecimiento de la industria del software de nuestro paísse basan en niveles de madurez del CMM.

Page 24: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

Niveles organizacionales

CMM

TSP

PSP

Organización

Equipos

Personas

Page 25: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

CMM-TSP-PSP

Page 26: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Directrices Diseño

Código

Compilación

Pruebas

PM

Cuadernos

Resumen del Plan

Requerimientos

Guía

Producto Terminado

PlaneaciónPlan

Desarrollo

Datos del procesoy del proyecto

Proceso de Software Personal

TiempoDefectos

Page 27: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudioEstándares de codificación y cuantificación de código

Estándar de cuantificación de código

If a>b

Then a-b;

Else a+b;

If

a>b

then

Begin

a-b;

end

Else

Begin

a+b;

End;

Vs.

Estándar de codificación

Page 28: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Sumario del Plan del Proyecto

Page 29: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Cuaderno de registro de tiempos

Page 30: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Cuaderno de registro de defectos

Page 31: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudioClasificación de defectos

Page 32: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Lista de revisión de código

Page 33: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Lista de revisión de diseño

Page 34: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Siete programas fueron desarrollados por cada desarrollador.

Los criterios bajo los que se basa la muestra extraída son los siguientes:

a) Incluye solo aquellos programas del cuarto al séptimo (por tener prácticas iguales dentro del proceso de desarrollo, lo que del primero al tercero no sucede).

4.2 Recolección de datos para verificación de modelos

Page 35: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

b) Se excluyen programas muy pequeños (cuyo número de NyC se encuentre alejado, en desviaciones estándar, de la media del resto de los demás datos)

4.2 Recolección de datos para verificación de modelos

Page 36: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.2 Recolección de datos para verificación de modelos

c) Se excluyeron observaciones atípicas o de influencia cuando se haya encontrado la justificación para ello.

Page 37: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.2 Recolección de datos para verificación de modelosDiagrama de dispersión de la muestra

Resumen de programas excluidos

Valor de la correlación de la muestra:

r = 0.72r2 = 0.52

⎥⎥⎦

⎢⎢⎣

⎡⎟⎟⎠

⎞⎜⎜⎝

⎛=⎟⎟

⎞⎜⎜⎝

⎛=⎥

⎥⎦

⎢⎢⎣

⎡⎟⎟⎠

⎞⎜⎜⎝

⎛=⎟⎟

⎞⎜⎜⎝

⎛=

⎥⎦

⎤⎢⎣

⎡⎟⎟⎠

⎞⎜⎜⎝

⎛=⎟

⎠⎞⎜

⎝⎛−⎥⎦

⎤⎢⎣⎡

= •

=

∑∑∑∑

∑∑∑

−−

=

22

12

112

1

1)1( 1

ini y

ini ynn

i xi

ni xn

ini y

ini y

ixn i

ni x

r

Page 38: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.3 Recolección de datos para validación de modelos

Con base en los criterios establecidos para la muestra, de los 49 programas originales quedaron 20, los otros 29 se resumen enseguida:

Page 39: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.4 Generación de Modelos

4.4.1 Regresión lineal múltiple (85 programas con código reutilizado)

Esfuerzo = 56.71 + (0.77*NyC ) – (0.129*Reutilizado)

Page 40: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.4 Generación de Modelos

4.4.2 Regresión lineal simple (105 programas)

( )( )( )21

21

111 )(

∑∑

∑∑∑

=−⎟⎟⎠

⎞⎜⎜⎝

⎛=

==−⎥⎦⎤

⎢⎣⎡

= •=

ni xi

ni xn

ni yi

ni xn

i iy

ixn

b i

nxb

nya

n

i

n

i i ∑∑ == −= 11

Esfuerzo = 53.291 + 0.687 * NyC

Page 41: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.4 Generación de Modelos

4.4.3 Modelos difusos (105 programas)

Page 42: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.4 Generación de Modelos

4.4.3 Modelos difusos (105 programas)

Page 43: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.4 Generación de Modelos

4.4.3 Modelos difusos (105 programas)

Page 44: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.5 Criterios de evaluación de modelos

Validación basada en MRE, MER,MMRE y MMER

Page 45: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.5 Criterios de evaluación de modelos

Page 46: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.6 Obtención de estimaciones con base en ecuación de regresión lineal simple (ejemplo con NyC = 81)

Esfuerzo = 53.291 + 0.687 * NyC

Esfuerzo = 53.291 + 0.687 * 81

Esfuerzo = 108.9

Page 47: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.6 Obtención de estimaciones con base en modelos difusos con funciones de membresía triangular (ejemplo con NyC = 81)

Page 48: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.6 Obtención de estimaciones con base en modelos difusos con funciones de membresía gausiana (ejemplo con NyC = 81)

Page 49: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

4.6 Obtención de estimaciones con base en modelos difusos con funciones de membresía trapezoidal (ejemplo con NyC = 81)

Page 50: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio4.7 Verificación de modelos

Page 51: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Estos resultados, permiten concluir que…

Tras la verificación de los modelos lineal y difusos, no existe diferencia significativa entre las medias de las MER de los cuatro modelos.

4.7 Verificación de modelos

Page 52: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Cálculo de las MRE y MER por programa

4.8 Validación de modelos

Page 53: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Análisis de heterocedasticidad de los datos (dependencia entre MER o MRE y esfuerzo).

4.8 Validación de modelos

Page 54: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Análisis de

heterocedasticidad

MER-Esfuerzo

4.8 Validación de modelos

Page 55: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

División por submuestras por

presencia de heterocedasticidad

4.8 Validación de modelos

Page 56: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

4) Caso de estudio

Cálculo de MMER (primera submuestra)

4.8 Validación de modelos

Page 57: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

5) Conclusiones

El modelo que mostró mejores resultados en su predicción (con base en su MMER) es el modelo difuso con funciones de membresía triangular. Esto por las siguientes tres razones:

1) Sin considerar heterocedasticidad en los datos, presentó la menor MMER (con 0.23) que el resto de los tres modelos (dos difusos y uno de regresión).

2) Al dividirse el conjunto de datos en dos submuestras (A y B), tras la demostración de la existencia de heterocedasticidad, en la submuestra A presentómejor MMER (con 0.23), mientras que en la submuestra B sólo fue igualado por otro modelo difuso con funciones trapezoidales.

3) Considerando o no la heterocedasticidad, la regresión lineal nunca fue mejor que el modelo difuso con base en su MMER.

Page 58: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

Tres hipótesis de investigación fueron aceptadas:

1) A partir de una población, la muestra extraída posee una correlación (r) mayor o igual a 0.71 entre las líneas de código y el esfuerzo, es decir, un r2 ≥ 0.50.

2) En la verificación de los modelos lineal y difusos, no existe diferencia significativa entre las medias de las MER de los cuatro modelos.

3) En la validación de los modelos, en la predicción de programas a nivel personal haciendo uso de un modelo difuso, se obtiene una MMER ≤ 0.25.

5) Conclusiones

Page 59: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

En 1972 Zadeh mencionaba que la lógica difusa podría abrir muchas fronteras nuevas en psicología, sociología, ciencias políticas, filosofía, fisiología, economía, lingüística, investigación de operaciones, administración y otros dominios; con el cumplimiento de la meta de esta tesis podría adicionarse a su lista, que la lógica difusa es asimismo útil para predecir el esfuerzo de desarrollo de software.

5) Conclusiones

Page 60: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

6) Recomendaciones

Lotfi Zadeh

(Lógica difusa)

Watts Humphrey

(CMM, TSP, PSP)Barry Boehm

(Estimación del esfuerzo de desarrollo)

Page 61: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

Sesión de

Preguntas

Page 62: Estimación del esfuerzo de desarrollo de software · Una actividad previa a la planeación es la estimación del esfuerzo de desarrollo de software, que incluso ha sido considerada

Editor: Cuauhtémoc López Martín. [email protected] Octubre 12, 2007

ZacatecasEstimación del esfuerzo de desarrollo de software

¡Muchas Gracias!