INTRODUCCIÓN
En los últimos años la industria de software ha obtenido un desarrollo vertiginoso, sin embargo resulta elevada la cifra de proyectos que no culminan con éxito (StandishGroup 2015). Entre las principales causas del fracaso de los proyectos se encuentran las asociadas a factores humanos, como son la asignación no adecuada del personal y los problemas de trabajo en equipo (Ángeles et al. 2005; Neil 2006; StandishGroup 2015). El proceso de formación de equipos de proyectos se torna complejo en medianas y grandes empresas, teniendo en cuenta la totalidad de roles a cubrir y trabajadores disponibles.
En la bibliografía consultada se reportan varios trabajos que proponen modelos que afrontan la asignación de personas a proyectos de software, entre los que se encuentran (Barreto 2003; DeCarvalho 2003; Ngo-The and Ruhe 2008). Este trabajo toma como antecedente el modelo presentado en (André et al. 2011) por considerarse el más completo, ya que toma en cuenta no solo factores individuales para la asignación de personas a roles sino factores que contribuyen a la formación del equipo como un todo.
El modelo propuesto en (André, Baldoquín and Acuña 2011) responde a un problema combinatorio multiobjetivo en tanto considera tres objetivos: maximizar las competencias de los trabajadores, minimizar las incompatibilidades entre los miembros del equipo y balancear la carga de trabajo. Igualmente, el modelo incluye doce tipos de restricciones, que restringe la asignación de personas a roles definidos como incompatibles, la cantidad máxima de roles que pueden ser desempeñados por un individuo, así como la carga máxima de trabajo que este puede tener, entre otras.
Para dar solución al modelo se han utilizado las variantes monobjetivo y multiobjetivo de los algoritmos de trayectoria Escalador de Colinas, Recocido Simulado y Búsqueda Tabú (Infante 2012) y la técnica de rechazo para el tratamiento de las restricciones. Sin embargo, de acuerdo a un conjunto de pruebas realizadas teniendo en cuenta un tamaño de problema de 500 trabajadores y cuatro roles a cubrir, se comprobó que la técnica de rechazo para el tratamiento de restricciones presenta inconvenientes ya que, más del 60% de las soluciones generadas son no factibles (Escalera et al. 2015).
Existen otras técnicas para el tratamiento de las restricciones como son la penalización (acepta una solución no factible penalizando la función objetivo), la reparación (aplica un operador de reparación a cada solución no factible que se genere con el objeto de transformarla en otra factible) y la preservación (obtiene una representación del problema o un operador que siempre garantice obtener soluciones factibles) (Talbi 1965).
Existen numerosos trabajos donde se utilizan técnicas para el tratamiento de restricciones como: penalización, reparación y preservación (Centeno et al. 2012; Coello and Cortés 2004; Coello 2003; Gupta et al. 2009a; Jadaan et al. 2009a; Lukasiewycz et al. 2008a; Lukasiewycz et al. 2008b; Mezura and Coello 2003; Rasjido et al. 2011; Valdez et al. 2011; Villagra et al. 2010a; Villagra et al. 2010b; Vose 1990). El estudio de las fuentes analizadas permite concluir que restringir el área de búsqueda a la región factible con la técnica de preservación, es una buena manera de tratar problemas con restricciones, pero esta técnica resulta difícil de implementar ya que no es sencillo, para un problema específico encontrar una representación del problema u operadores que garanticen la factibilidad de la solución (Michalewicz and Koziel 1998).
Teniendo en cuenta lo planteado anteriormente este trabajo tiene como objetivo implementar nuevas técnicas para el tratamiento de restricciones al problema de formación de equipos de proyectos de software para disminuir el tiempo de respuesta de los algoritmos.
MATERIALES Y MÉTODOS
Modelo de formación de equipos de proyectos de software
El problema de formación de equipos de proyecto de software plantea la asignación de n personas a m roles, donde una persona puede desempeñar más de un rol y un rol puede ser desempeñado por más de una persona. El modelo propuesto en (André, Baldoquín and Acuña 2011) plantea:
Maximizar las competencias de los trabajadores en el rol o los roles asignados.
max i=1 𝑛 𝑗=1 𝑚 𝑐 𝑖𝑗 𝑥 𝑖𝑗 , siendo 𝑥 𝑖𝑗 = 1 si el empleado i es asignado al rol j y 0 en caso contrario, y 𝑐 𝑖𝑗 la competencia neta del empleado i para desempeñar el rol j.
Minimizar las incompatibilidades entre los miembros de un equipo de proyecto.
min ℎ=1 𝑛−1 𝑖>ℎ 𝑛 𝑠 ℎ𝑖 𝑢 ℎ 𝑢 𝑖 , siendo 𝑠 ℎ𝑖 la incompatibilidad existente entre los trabajadores h e i y 𝑢 𝑖 = 1 si el empleado i es asignado al menos a un rol y 0 en caso contrario.
Balancear la carga del personal del equipo.
𝑚𝑖𝑛 𝑖=1 𝑛 𝐿 𝑖 + 𝑗=1 𝑚 𝑏 𝑗 𝑥 𝑖𝑗 −𝑀𝐸 2 , donde 𝐿 𝑖 = 𝑗=1 𝑚 𝑔 𝑖𝑗 y 𝑀𝐸= 𝑗=1 𝑚 𝑖=1 𝑛 𝑔 𝑖𝑗 + 𝑏 𝑗 𝑛 , g ij es la carga de trabajo del empleado i en el rol j según los proyectos a los que está asignado y 𝑏 𝑗 es la carga de trabajo que implica asumir el rol j en un proyecto determinado.
Minimizar el costo de trabajar a distancia. Este es un objetivo que no está incluido en el modelo por defecto, sino en una versión ampliada ya que solo es aplicable a organizaciones que enfrentan esta variante de desarrollo.
min 𝑖=1 𝑛 𝑗=1 𝑚 𝑙 𝑖𝑗 𝑥 𝑖𝑗 , donde 𝑙 𝑖𝑗 es el costo del empleado i según la lejanía que tenga del proyecto y el rol j que va a desempeñar.
y doce tipos de restricciones, seis de las cuales plantean que:
Los roles deben ser cubiertos en función de la cantidad necesaria de personas a desempeñarlo.
Una persona no puede desempeñar al mismo tiempo roles que se consideren incompatibles entre sí.
Restringir el número máximo de roles que puede desempeñar cualquier trabajador en el proyecto a una cantidad fijada por el usuario.
Para que una persona desempeñe un rol debe cumplir los requisitos mínimos de nivel de competencia para desempeñar dicho rol.
La carga de trabajo total asignada a un empleado no debe ser mayor que un valor máximo.
Garantizar que la variable 𝑢 𝑖 tome valor 1 ó 0.
Otro conjunto de restricciones refleja la relación que existe entre los roles de Belbin , los tipos psicológicos de Myers Briggs2 y los roles a desempeñar en un equipo de proyecto de software (André, Baldoquín and Acuña 2011):
Un conjunto de restricciones garantiza que en el equipo de desarrollo se representen las tres categorías de roles propuestas por Belbin (roles de acción, roles mentales y roles sociales).
En el equipo de trabajo la preferencia de desempeñar roles de acción debe sobrepasar la preferencia por desempeñar los roles mentales.
En el equipo de trabajo la preferencia de desempeñar roles mentales debe sobrepasar la preferencia por desempeñar los roles sociales.
La persona que desarrolla el rol de Jefe de Proyecto debe tener como preferido los roles de Belbin: Impulsor o Coordinador.
En el equipo al menos una persona debe tener como preferido el rol mental Cerebro.
La persona que desarrolla el rol Jefe de Proyecto debe ser extrovertida y planificada (subtipo E_ _J) según el test de Myers-Briggs.
En los problemas de optimización que incluyen restricciones, el espacio de soluciones se divide en dos subconjuntos (el espacio de soluciones factibles y el espacio de soluciones no factibles) (Rasjido, Pandolfi and Villagra 2011). Los algoritmos de búsqueda generan soluciones en ambos espacios. Por lo tanto, el problema consiste en cómo tratar las soluciones no factibles generadas. Este problema tiene la peculiaridad de que debe satisfacer tanto restricciones individuales como restricciones de equipo, estas últimas solo se pueden chequear una vez conformado el equipo, por lo que son más difíciles de garantizar en el momento de conformar la solución.
Representación del problema de formación de equipos de proyectos de software
Para el problema planteado, la representación de una solución se muestra en la Figura 1. Dado que el problema consiste en asignar trabajadores a los roles definidos en un equipo de proyecto y que se pueden asignar varios trabajadores a un mismo rol, se define como solución, una lista de elementos, donde cada elemento está compuesto por un rol y la lista de trabajadores que juegan ese rol.
El operador definido es el de sustitución (Infante 2012), el cual escoge uno de los roles de la solución y sustituye uno de los trabajadores que juegan ese rol por otro del espacio de soluciones, de forma aleatoria. Esto trae como consecuencia que en muchas ocasiones los trabajadores seleccionados no cumplan con los requisitos mínimos de competencias para desempeñar el rol. Por lo que el operador utilizado no garantiza la factibilidad de la solución.
Técnicas para el tratamiento de restricciones en problemas de optimización
Muchos de los problemas de optimización están sujetos a restricciones, por lo que existen técnicas para su manejo que actúan principalmente en la representación de la solución o de la función objetivo. Estas técnicas se pueden clasificar como: rechazo, penalización, reparación, preservación y decodificación (Talbi 1965). En la Tabla 1 se muestran las técnicas con sus variantes y una breve descripción de estas. En la Tabla 2 se pueden observar las referencias a los 35 trabajos más relevantes de los analizados, relacionados con el empleo de técnicas para el tratamiento de restricciones en la solución de problemas de optimización. Este análisis permite identificar que las técnicas más utilizadas son: penalización, reparación y preservación.
Análisis del cumplimiento de las restricciones del problema de formación de equipos de proyectos de software
Con el propósito de analizar el problema, determinar el por ciento de soluciones no factibles obtenidas y saber cuáles son las restricciones que más se violan utilizando la técnica de rechazo, se realiza un estudio del problema teniendo en cuenta tres escenarios. Los datos utilizados para realizar las pruebas fueron generados a partir de encuestas realizadas a un grupo de especialistas de software, debido a que no se dispone de datos reales y tampoco se conoce de bases de datos de pruebas a nivel internacional para este tipo de problema. Los datos necesarios para aplicar el modelo y que fueron recogidos en la encuesta incluyó: Niveles de competencia de los trabajadores, experiencia de los trabajadores en el desempeño de roles, carga de trabajo, incompatibilidades entre los trabajadores, características psicológicas a través de los test de Myers-Briggs y Belbin.
En pruebas realizadas para un tamaño de problema de 500 trabajadores y cuatro roles a cubrir se obtuvo que el 60% de las soluciones generadas son no factibles. Con el propósito de identificar cómo se comporta el por ciento de soluciones no factibles en otros escenarios y cuáles son las restricciones que más se incumplen, se realizaron otro conjunto de pruebas en tres escenarios, tal como se muestra en la Tabla 3. Para los tres escenarios diseñados se tuvieron en cuenta los algoritmos: Escalador de Colinas (EC), Recocido Simulado (RS), Escalador de Colinas Estocástico Multiobjetivo (ECEMO) y Recocido Simulado Multiobjetivo Multicaso (RSMMC). Todos los algoritmos toman como condición de parada un número máximo de evaluaciones de las funciones objetivo, definida como 100000 y se realizaron 20 ejecuciones de cada algoritmo.
En la Tabla 3 se muestra para cada uno de los escenarios diseñados el por ciento de soluciones no factibles que como promedio se obtienen por cada algoritmo. Para los escenarios diseñados aproximadamente el 60% de las soluciones generadas con la técnica de rechazo son no factibles. Esto provoca que se pierda un tiempo considerable en la generación de soluciones no factibles que luego serán rechazadas.
Con el objetivo de identificar cuáles son las restricciones que más se incumplen, se realizaron varios experimentos teniendo en cuenta los escenarios diseñados anteriormente y todas las restricciones que propone el modelo. Las tres restricciones que se incumplen son: roles de Belbin (71% de restricciones violadas), niveles de competencias (28% de restricciones violadas) y cantidad máxima de roles (1% de restricciones violadas).
Selección de técnica para el tratamiento de restricciones
Teniendo en cuenta las técnicas más usadas de acuerdo a la bibliografía consultada, las particularidades del problema y la premisa de evaluar el desempeño de técnicas más sencillas antes de otras más complejas se decide implementar las siguientes técnicas:
Técnica de penalización: la penalización estática propuesta en (Homaifar et al. 1994; Michalewicz, Dasgupta, Richie and Schoenauer 1995), donde para cada restricción se asume un nivel de violación y para cada nivel un coeficiente de penalidad.
Técnica de preservación: según el criterio de los autores estudiados al implementarse esta técnica se logra encontrar una estructura que permite preservar la factibilidad de las soluciones. Para implementar esta técnica se modificará el operador de sustitución implementado con el objetivo de restringir el área de búsqueda a soluciones factibles.
RESULTADOS Y DISCUSIÓN
Técnica de penalización
Se implementa la técnica de penalización para las soluciones no factibles a través de un peso asociado a cada restricción, dándole mayor peso a las restricciones más violadas. La función objetivo penalizada es: F p x =f x ± i=1 m C i δ i , donde F p x es la función objetivo penalizada, f x es la función objetivo sin penalizar, δ i toma valor 1 si la restricción i es violada y 0 en caso contrario y C i es igual a la suma de los pesos asociados a cada restricción violada. Para determinar el valor de los pesos se tuvo en cuenta el por ciento de violación para cada restricción utilizando la técnica de rechazo (roles de Belbin 71%, niveles de competencias 28%, cantidad máxima de roles 1%).
Técnica de preservación
Se implementa la técnica de preservación con el objetivo de organizar el espacio de búsqueda de forma tal que se garanticen las restricciones asociadas a los niveles mínimos de competencias de los trabajadores y las relacionadas con los roles de Belbin. Para ello se procede a acotar el espacio de búsqueda utilizando una multilista auxiliar, la cual contiene por cada rol necesario para conformar el equipo de proyecto, las siete combinaciones posibles de roles de Belbin. Cada combinación de rol de Belbin es definido por un código binario de tres dígitos correspondientes a rol de acción, mental y social respectivamente, donde el valor 1 indica que el trabajador posee dicho rol y 0 en caso contrario. Por cada combinación de rol de Belbin se tiene la lista de los trabajadores que las poseen. De esta manera una vez que se tenga el trabajador a cambiar, en vez de seleccionar uno aleatoriamente del área de búsqueda inicial que contiene todos los trabajadores, se toma de la lista de trabajadores que poseen las competencias para desempeñar este rol en el equipo y que cumpla con las restricciones asociadas a los roles de Belbin, asegurando así una solución factible. En la Tabla 4 se muestra esta representación. Ver Figura 2
Análisis experimental
Para analizar el comportamiento de las técnicas propuestas se diseñaron cuatro escenarios de pruebas, teniendo en cuenta escenarios de organizaciones medianas, grandes y especialmente grandes: 250 trabajadores y 4 roles a cubrir, 500 trabajadores y 4 roles a cubrir, 500 trabajadores y 6 roles a cubrir, 1500 trabajadores y 6 roles a cubrir.
Los casos de prueba a realizar tienen en cuenta las tres funciones objetivo del modelo: Maximizar competencias, minimizar incompatibilidades y balancear carga de trabajo. Se tomaron en cuenta las restricciones de que un trabajador solo puede desempeñar un rol y las competencias mínimas establecidas para cada rol. Además, se tomaron en cuenta las restricciones asociadas con la sinergia del equipo: considerar la presencia de todas las categorías de roles de Belbin, elegir la presencia de al menos una persona con el rol cerebro y que exista un balance entre las categorías de roles de Belbin (la presencia de miembros del equipo con preferencia por los roles de acción deben ser mayor que los que tienen preferencia por los roles mentales y la preferencia por los roles mentales deben ser mayor que por los roles sociales).
Las condiciones relacionadas con el ambiente experimental fueron: la implementación de los algoritmos en Java bajo el ambiente de desarrollo Eclipse 3.2, compilados con el JDK 1.7.0 y las corridas fueron ejecutadas en un Intel Core 2 Duo con 2.66 GHz y 4 Gb de RAM. Se ejecutaron 20 corridas de cada uno de los algoritmos implementados para cada escenario de prueba.
Para evaluar el desempeño de las dos técnicas de tratamiento de restricciones implementadas se seleccionaron dos de los métodos de solución de problemas multiobjetivo: factores ponderados y multiobjetivo puro. Se emplean los algoritmos Escalador de Colinas Estocástico Multiobjetivo (ECEMO), Escalador de Colinas Estocástico Multiobjetivo con Reinicio (ECEMOR), Escalador de Colinas Estocástico Multiobjetivo de mayor Distancia (ECEMODist) y Recocido Simulado Multiobjetivo Multicaso (RSMMC) con el método multiobjetivo puro, y los algoritmos Escalador de Colinas (EC) y Recocido Simulado (RS) con el método factores ponderados, debido a que son los que mejor comportamiento tuvieron en la solución del problema en los experimentos realizados en (Infante 2012).
Los parámetros utilizados para la ejecución de los algoritmos se muestran en la Tabla 5. Los valores establecidos para los parámetros son los mismos en todos los escenarios.
Medidas de rendimiento de los algoritmos
Todos los métodos de solución utilizados tienen en cuenta la medida Tiempo. Para comparar el rendimiento de los algoritmos metaheurísticos implementados con el método de solución de factores ponderados se tiene en cuenta la medida calidad de la solución, expresada en función de la evaluación ponderada de todos los objetivos (el valor ideal de la medida es que la evaluación sea 1). Para realizar las pruebas se utilizan como pesos en los objetivos: Maximizar competencias (0.36), Balancear carga de trabajo (0.31) y Minimizar incompatibilidades (0.33), teniendo en cuenta las encuestas aplicadas a expertos en (André, Baldoquín and Acuña 2011).
Para evaluar el rendimiento del método de solución multiobjetivo puro se utilizan las métricas:
Tasa de error (Veldhuizen and Lamont 2000): Indica el porciento de soluciones que no son miembros del frente de Pareto verdadero. El valor ideal de la métrica es 0.
Distancia generacional (Veldhuizen and Lamont 2000): Indica qué tan lejos están los elementos del frente de Pareto actual respecto al frente de Pareto verdadero. El valor ideal es 0.
Dispersión (Schott 1995): Mide la varianza de la distancia de cada miembro del conjunto de óptimos de Pareto con respecto a su vecino más cercano. Su valor ideal es 0.
Se tomó como “frente de Pareto verdadero” aquellas soluciones no dominadas de las obtenidas por todos los algoritmos ejecutados en cada escenario, respectivamente; debido a que no se conoce y no es factible calcular el frente de Pareto verdadero real.
Para analizar los resultados de las medidas antes mencionadas se utiliza el test no paramétrico prueba de Friedman (Derrac et al. 2011) y los post-hoc de Holm y Shaffer, con el objetivo de decidir cuál algoritmo y/o técnica es superior.
Análisis de los resultados obtenidos por técnica utilizando las medidas
En la Tabla 6 se muestran los resultados de comparar todas las técnicas entre sí (N técnicas vs N técnicas), utilizando el método de factores ponderados. Se muestran los rankings de Friedman para cada técnica y medida. En la última fila de la tabla aparece el valor del p-value. La técnica de mejor ranking se encuentra sombreada y marcada en negrita y cursiva.
De acuerdo al ranking en cuanto a la medida calidad de la solución, las técnicas de preservación y rechazo superan a la técnica de penalización. Aunque teniendo en cuenta el valor de p-value se puede decir que no existen diferencias significativas entre los resultados. En cuanto a la medida tiempo, la técnica que supera al resto es preservación, aunque la técnica de penalización ofrece mejores resultados que la de rechazo. Por otra parte, el valor de p-value muestra que existen diferencias significativas entre los resultados obtenidos ya que el p-value es menor que 0,05, por lo que se realiza un análisis post-hoc para caracterizar estas diferencias, tal como se muestra en la Tabla 7.
Teniendo en cuenta los resultados de la Tabla 7 y utilizando un nivel de significancia (α) = 0.05, los dos métodos seleccionados aceptan dos de las tres hipótesis. Estas hipótesis se muestran sombradas en gris y marcadas en negrita. Las técnicas de preservación y penalización superan significativamente a la técnica de rechazo.
En la Tabla 8 se muestran los rankings de Friedman por cada técnica para cada medida, utilizando el método multiobjetivo puro. En la última fila de la tabla aparece el valor del p-value. La técnica de mejor ranking se encuentra sombreada de color gris y marcada en negrita.
De acuerdo al ranking, la técnica que supera al resto por ser la primera, en cuanto a las medidas de calidad, es penalización. En cuanto a la medida tiempo la mejor técnica es preservación. En cuanto a las medidas tasa de error, distancia generacional y tiempo el p-value es menor que 0.05 por lo que se puede decir que existen diferencias significativas entre los resultados y se procede a utilizar los post-hoc para caracterizar estas diferencias, tal como se muestran en las tablas 9, 10 y 11.
En cuanto a la medida tasa de error, se aceptan dos de las tres hipótesis, las que se muestran sombreadas en gris y marcadas en negrita en la Tabla 9. No se detectan diferencias significativas entre las técnicas de preservación y rechazo, y la técnica de penalización supera significativamente a las técnicas de preservación y rechazo.
En cuanto a la medida distancia generacional, se acepta una de las tres hipótesis, las que se muestran sombreadas en gris y marcadas en negrita en la Tabla 10. La técnica de penalización supera significativamente a la técnica de rechazo.
En cuanto a la medida tiempo, se aceptan dos de las tres hipótesis, las que se muestran sombreadas en gris y marcadas en negrita en la Tabla 11. La técnica de preservación supera significativamente a las técnicas de rechazo y penalización.
Una vez analizados todos los resultados obtenidos para cada una de las técnicas, en la Tabla 11 se muestra un resumen de las técnicas que por medida quedaron primero en el ranking, así como las diferencias significativas encontradas con los post-hoc.
CONCLUSIONES
Una vez culminado el trabajo se concluye que:
De acuerdo a la bibliografía consultada las técnicas más utilizadas para el tratamiento de las restricciones en problemas de optimización son penalización, reparación y preservación.
En el problema de formación de equipos de proyectos de software se obtiene un por ciento significativo (60%) de soluciones no factibles generadas utilizando la técnica de rechazo y se identifican las restricciones asociadas a los niveles mínimos de competencias, la cantidad máxima de roles y el balance de los roles de Belbin como las más violadas.
Basado en los estudios realizados para determinar de las restricciones que propone el modelo de formación de equipos las que más se incumplen y las diferentes técnicas para el tratamiento de restricciones se incorporaron a la solución del modelo las técnicas de penalización y preservación.
De acuerdo a los resultados obtenidos aplicando el test de Friedman para obtener el comportamiento de las técnicas implementadas, se pudo comprobar que:
La técnica de preservación es la que mejor se comporta en cuanto a la medida tiempo utilizando ambos métodos de solución.
La técnica de preservación es la que mejor se comporta utilizando el método factores ponderados en cuanto a la medida calidad de la solución.
La técnica penalización es la que mejor se comporta utilizando el método multiobjetivo puro en cuanto a las medidas de calidad de la solución (tasa de error, distancia generacional y dispersión).
A pesar de que al aplicar las pruebas de Friedman teniendo en cuenta la medida tiempo no se logra una diferencia significativa entre las técnicas implementadas para todos los algoritmos, si se logra una disminución visible de los tiempos con las técnicas propuestas.
Para futuros trabajos se recomienda:
Aplicar otras técnicas para el tratamiento de restricciones, como la técnica de reparación.
Aplicar diferentes variantes de la técnica de penalización como la adaptativa y la dinámica en el problema de formación de equipos de proyecto de software.
Probar las nuevas técnicas implementadas utilizando algoritmos poblacionales.
Recopilar datos reales para la aplicación del modelo y realizar pruebas conformando equipos más cercanos a la realidad cubana como son: un trabajador con varios roles y un rol asignado a varios trabajadores.