Modelo para la estimación del esfuerzo de desarrollo en tareas de ingenieria de proyectos de software empleando aprendizaje automático

  1. Velarde Bedregal, Héctor Raúl
Dirigida por:
  1. Jorge Casillas Barranquero Director/a

Universidad de defensa: Universidad de Granada

Fecha de defensa: 21 de febrero de 2017

Tribunal:
  1. Antonio González Muñoz Presidente/a
  2. Patricia Paderewski Rodríguez Secretario/a
  3. Pedro González García Vocal
  4. María Luque Rodriguez Vocal
  5. José Raúl Romero Salguero Vocal

Tipo: Tesis

Resumen

Resumen Dentro del contexto de las inexactitudes de las primeras etapas de un proyecto de software se encuentra que uno de los aspectos más críticos es la estimación del esfuerzo. En la actualidad, el desarrollo ágil de software ha ganado en popularidad, sobre las metodologías tradicionales. A pesar que existen múltiples estudios donde se aplican técnicas para el desarrollo ágil, éstas no resultan efectivas en este entorno de desarrollo. Como promedio, estas técnicas tienden a subestimar el esfuerzo de desarrollo ágil en un 55% y a sobre estimarlo en un 25,5%. Razón por la cual, la estimación del esfuerzo basada en el desarrollo ágil se sigue considerando un reto. Sin embargo, en la actualidad, el desarrollo ágil de software ha ganado en popularidad, sobre las metodologías tradicionales. Es por ello que el objetivo de la presente investigación, es el de definir un modelo para la estimación del esfuerzo de desarrollo de software empleando técnicas de aprendizaje automático y a partir del análisis e interpretación del razonamiento que sigue el modelo, entrenar al responsable de proyectos para que este optimice el tiempo, rediseñando las características de software de sus tareas de ingeniería. Como resultado, se propuso un nuevo método para la estimación del esfuerzo de desarrollo de software, especialmente diseñado para metodologías ágiles basada en tareas de ingeniería, para ello, se introdujo una nueva base y se sugirieron nuevas métricas de evaluación del desempeño del equipo de trabajo y de evaluación del proyecto. Además, se propusieron dos nuevos algoritmos de estimación del esfuerzo de desarrollo de proyectos de software: EEperd, basado en la combinación de clasificadores en serie; y ETTpred, basado en tareas de ingeniería y el árbol de regresión M5P, diseñado especialmente para la estimación en el desarrollo ágil. El algoritmo EEpred es un multiclasificador que funciona en serie y se basa en el conteo de líneas de código fuente. Primero realizando una clasificación granular, basada en un árbol de decisión, donde determina si el proyecto será orgánico, semi-libre o empotrado; posteriormente, se realiza una predicción fina, basada en árboles de regresió y devolviendo el valor del esfuerzo estimado. Éste, fue sometido a un proceso de validación interna que permitió analizar su robustez y capacidad de generalización, así como el error en la predicción, lo cual demostró que EEpred es capaz de predecir el esfuerzo de proyectos orgánicos y semi-libre, con una precisión de hasta el 78%. El algoritmo ETTpred, el cual fue sometido a un proceso de validación interna que permitió analizar su robustez y capacidad de generalización, así como el error en la predicción, lo cual demostró que el método propuesto es capaz de predecir el esfuerzo con una precisión de hasta el 85% y un error relativo de 47,24%. De igual forma, se demostró la superioridad de la estimación del esfuerzo de desarrollo de software basado en tareas de ingeniería sobre las basadas en conteo de líneas de código y puntos de función. Este método de estimación basada en tareas de ingeniería, está orientado a su empleo en metodologías ágiles. La principal ventaja de EEpred y ETTpred, ante el resto de los modelos estudiados, es que ambos presentan un mecanismo de interpretación de los resultados sobre la base de un conjunto de reglas semánticas que son de fácil entendimiento, lo cual los convierte en modelos entendibles para los expertos en el área de aplicación.