Marco Teórico Como consecuencia de la globalización y constante desarrollo y avances tecnológicos, las empresas dedicadas a la creación, construcción y mantenimiento de Software se ven obligadas a ofrecer trabajos de calidad que demuestren su competitividad y las mantenga a flote. Para lograr estos objetivos, las empresas buscan obtener certificaciones de calidad en la industria que aporte más valor a sus productos, reduzcan costos y tiempos de trabajo [1]. Con el propósito mejorar la calidad del Software, dentro de la Ingeniería de Software se han desarrollado modelos y metodologías de procesos de Software que determinan los pasos a seguir, los posibles inconvenientes y roles del equipo de trabajo que garanticen un desarrollo óptimo [1]. Estos procesos son un conjunto de técnicas tradicionales, modernas y ágiles de modelado de sistemas que permiten desarrollar Software con calidad que incluyen aspectos de la construcción y criterios de comparación de modelos de sistemas [2]. De acuerdo a [2], las metodologías de desarrollo tradicional tienen como objetivo ordenar el caos del desarrollo de Software que dio como resultado la Crisis del Software. Las metodologías tradicionales entienden al proyecto en una sola dimensión y con una estructura definida. Sus procesos son secuenciales y de una sola dirección. Debido a que el desarrollo de un software no puede estandarizarse por completo, se han definido múltiples métodos de desarrollo de Software. Estas se clasifican en ágiles y tradicionales. Las metodologías de desarrollo ágil responden a las nuevas necesidades del mundo actual por lo cual, una de las características más importantes de estas metodologías es la flexibilidad con la que se desarrollan los procesos, la concepción de que los proyectos pueden ser divididos en proyectos más pequeños, existe una comunicación más directa con el usuario y sobre todo se adaptan a los cambios [2]. De la misma manera que sucede con los métodos tradicionales, existen múltiples metodologías ágiles como XP, Scrum, Cristal, FDD, MoProsoft, entre otras. La metodología XP, Extreme Programming, se caracteriza por la importancia que le da a las historias, características y funcionalidades que el usuario requiere para el Software. Esta metodología maneja un proceso conocido como Planning Game en la que el cliente determina las fechas, características y define las historias de usuario mientras que el programador establece las características de entrega y el número de iteraciones a realizar. Una característica que la hace destacar de las demás es que se propone que la programación sea en parejas y que estas vayan rotando para que el trabajo sea de equipo y todos tengan el conocimiento de cómo funciona el Software [2]. Además, se menciona que la metodología XP se utiliza de manera dinámica durante el ciclo de vida del Software. El ciclo de vida de Extreme Programming está compuesta por seis fases: la exploración en la que los clientes diseñan las historias de usuario, la planificación de la entrega en la que los programadores establecen los tiempos de entrega en lo que cumplirán con la historia de cada usuario, las iteraciones en las que se van mostrando los progresos y requerimientos cumplidos, la producción que trabaja con los requisitos, pruebas y revisiones de rendimiento, el mantenimiento que se da desde la primera entrega de la producción y la muerte del proyecto cuando el cliente no tiene más historias que incluir en el sistema [3]. La metodología Scrum se centra en un trabajo de equipo eficaz, emplea un conjunto de reglas y define roles que aseguran el correcto funcionamiento del Software [2]. Esta metodología cuenta con cinco fases: el concepto en que se definen las características del producto, la especulación en la que se hacen disposiciones con la información obtenida, se establecen los límites del desarrollo del producto, gastos y agenda, la exploración en la que se incrementa el producto el que se añaden las funcionalidades, la revisión en la que el equipo revisa todo lo que se ha construido y el cierre que es la entrega de acuerdo a la fecha acordada [4]. La metodología Cristal es considerada un conjunto de métodos de desarrollo de Software que se adecúan a gestionar proyectos y se caracteriza de acuerdo a sus dimensiones, tamaño, complejidad y criterios de criticidad. La metodología Cristal se caracteriza por estar orientada a las personas que integran el grupo de trabajo pues son quienes definirán el éxito o fracaso del proyecto. Las fases de este modelo se adaptan, añade, eliminan o conjugan pues son una combinación de acuerdo al tipo de Software que se desarrollen. Además [5] expresa que las fases de la metodología cristal se compone de las metodologías ágiles y metodologías tradicionales. De acuerdo a [6], la metodología Crystal cuenta con fases cómo: establecer los seguimientos imprescindibles del proyecto, verificar las muestras de valor de negocios, los requerimientos, el modelo del dominio, tecnología, el plan de proyecto y el proceso, planificación del siguiente incremento, revisiones y monitoreo, aunque desataca que estas pueden variar. La metodología FDD, traducida como Desarrollo Basado en Funciones, se enfoca en dividir un proyecto de software en pequeñas entregas funcionales en cortos periodos de tiempo [6]. Esta metodología consta de cinco fases: el desarrollo de un modelo general en el que el equipo de trabajo se divide en grupos más pequeños, construir una lista de características las cuales son funcionalidad que son evaluadas por el cliente, planear por características que son ordenadas de acuerdo a su prioridad, diseño por características de acuerdo a la entrega y la construcción en la que se desarrolla el proyecto por entregas hasta que se complete [6,7]. La metodología MoProsoft incorpora prácticas que mejoran la gestión e ingeniería de Software. Está dirigida a al desarrollo y mantenimiento de Software en la pequeña y mediana industria y a las áreas internas de desarrollo de Software. La metodología MoProsoft cuenta con nueve procesos que están detallados en tres categorías. La descripción general que incluye nombre del proceso, categoría, propósito, descripción, descripción, objetivos, indicadores, metas, responsabilidad y autoridad. La descripción de prácticas incluye roles y capacitación, actividades, diagramas de flujo, verificaciones, validaciones, recursos, mediciones y situaciones excepcionales. Y la descripción de guías de ajuste [8]. La metodología MoProsoft determina el nivel de madurez de la capacidad para cada proceso verificado en cinco niveles: proceso realizado, administrativo, establecido, predecible y optimización del proceso [8].Las metodologías tradicionales Las metodologías de desarrollo de software tradicionales se suelen caracterizan por definir total y rígidamente los requisitos al inicio de los proyectos de ingeniería de software. Los ciclos de desarrollo son poco flexibles y no permiten realizar cambios, al contrario que las metodologías ágiles; lo que ha propiciado el incremento en el uso de las segundas. La organización del trabajo de las metodologías tradicionales es lineal, es decir, las etapas se suceden una tras otra y no se puede empezar la siguiente sin terminar la anterior. Tampoco se puede volver hacia atrás una vez se ha cambiado de etapa. Estas metodologías, no se adaptan nada bien a los cambios, y el mundo actual cambia constantemente. Las principales metodologías tradicionales o clásicas son: Waterfall (cascada): es una metodología en la que las etapas se organizan de arriba a abajo, de ahí el nombre. Se desarrollan las diferentes funciones en etapas diferenciadas y obedeciendo un riguroso orden. Antes de cada etapa se debe revisar el producto para ver si está listo para pasar a la siguiente fase. Los requisitos y especificaciones iniciales no están predispuestos para cambiarse, por lo que no se pueden ver los resultados hasta que el proyecto ya esté bastante avanzado. [9]. Prototipado: se basa en la construcción de un prototipo de software que se construye rápidamente para que los usuarios puedan probarlo y aportar feedback. Así, se puede arreglar lo que está mal e incluir otros requerimientos que puedan surgir. Es un modelo iterativo que se basa en el método de prueba y error para comprender las especificidades del producto. [9]. Espiral: es una combinación de los dos modelos anteriores, que añade el concepto de análisis de riesgo. Se divide en cuatro etapas: planificación, análisis de riesgo, desarrollo de prototipo y evaluación del cliente. El nombre de esta metodología da nombre a su funcionamiento, ya que se van procesando las etapas en forma de espiral. Cuanto más cerca del centro se está, más avanzado está el proyecto. [9]. Incremental: en esta metodología de desarrollo de software se va construyendo el producto final de manera progresiva. En cada etapa incremental se agrega una nueva funcionalidad, lo que permite ver resultados de una forma más rápida en comparación con el modelo en cascada. El software se puede empezar a utilizar incluso antes de que se complete totalmente y, en general, es mucho más flexible que las demás metodologías. También tenemos al Diseño rápido de aplicaciones (RAD): esta metodología permite desarrollar software de alta calidad en un corto periodo de tiempo. Los costes son mucho más altos y el desarrollo más flexible, aunque requiere una mayor intervención de los usuarios. Por otro lado, el código puede contener más errores, y sus funciones son limitadas debido al poco tiempo del que se dispone para desarrollarlas. El objetivo es iterar el menor número posible de veces para conseguir una aplicación completa de forma rápida. Metodología La metodología se basa en el análisis y comparación de los diferentes métodos de procesos de Software, destacando sus características, fases, procesos y prioridades de acuerdo a estudios realizados por otros autores de manera que se puedan resaltar los diferencias entre cada modelo en el momento de desarrollo de un Software. Esta investigación es de tipo bibliográfica puesto que recopila información acerca de distintos trabajos de investigación realizados, para a partir de los mismos generar cuadros comparativos, tablas y gráficos estadísticos entre los métodos considerados tradicionales y los métodos ágiles. El tipo de investigación y recopilación de información es cualitativa, exploratoria y descriptiva puesto que se busca, analiza y describe cada uno de los métodos. Este trabajo de investigación recopiló información de fuentes confiables cuyo tema principal estaba relacionado con los modelos de procesos de Software, principalmente investigaciones, artículos científicos y monografías debido a su estructura, entendimiento y desarrollo. Con este trabajo será posible reconocer las ventajas de un modelo de proceso en comparación a los otros de su misma categoría, es decir, se podrá identificar la mejor metodología para poder ponerla en práctica en un futuro proyecto de desarrollo. El análisis, estudio y recopilación de la información, va dirigido hacia las personas que encuentran en el entorno del desarrollo de Software. A través de esta investigación se interesa conocer los parámetros de comparación que mejoren la calidad en el proceso de desarrollo de Software y así garantizar mejores productos junto a la satisfacción del cliente. Para realizar la comparación de los métodos tradicionales y ágiles se van a utilizar las metodologías tradicionales y ágiles mencionadas en el marco teórico. Comparación entre métodos ágiles Los parámetros para la comparación entre los modelos ágiles de desarrollo de Software están clasificados en categorías a las que corresponden varias variables referentes a las prioridades, fases y el equipo de trabajo que caracterizan a los modelos señalados en el marco teórico: XP, Scrum, Cristal FDD y MoProsoft. Para las prioridades se señalará en si cumple, no cumple o cumple parcialmente. Para las fases, los datos serán numéricos y cualitativos. Para el equipo de trabajo se medirá en si cumple, no cumple o cumple parcialmente y datos numéricos. Tabla 1. Comparación entre métodos ágiles acerca de sus prioridades Comparación entre métodos ágiles Parámetros Categoría Métodos Variable XP Participación del usuario final Iteraciones en períodos de tiempo cortos Si cumple Si cumple Scrum Si cumple Si cumple Cristal FDD Si Si cumple cumple Si Si cumple cumple MoProsoft No cumple Si cumple Prioriza a las personas Prioridades (clientes, Si Cumple Si Si usuarios) sobre cumple parcialmente cumple cumple Si cumple la documentación Comunicación Si efectiva cumple Fácil adaptación los cambios a Si cumple Si cumple Si cumple Si Si cumple cumple Si Si cumple cumple Si cumple Si cumple Tabla 2. Comparación entre métodos ágiles acerca de sus fases Comparación entre métodos ágiles Parámetros Métodos Categoría Variable XP Scrum Cristal FDD MoProsoft 5 5 5 9 Número de fases- 6 procesos Fases Tiempos máximos 3 por Determinados Determinados 2 meses por el cliente por el cliente Determinados por semanas el cliente entrega Tabla 3. Comparación entre métodos ágiles acerca de sus equipos de trabajo Comparación entre métodos ágiles Parámetros Categoría Métodos Variable Subdivisión XP Scrum Cristal FDD Si Si Si cumple cumple cumple No No Si No cumple cumple cumple cumple 6 3 8 5 en Si equipos de trabajo cumple Equipo de trabajo Variantes de la metodología de acuerdo al tamaño Roles en el equipo de trabajo MoProsoft Si cumple No cumple 5 Comparación entre métodos tradicionales Cada fase del proceso de desarrollo está debidamente documentada y revisada cuando se utiliza el enfoque tradicional. [10] Por otro lado, debido al tiempo de entrega rápido requerido con el método ágil, los cambios generalmente se realizan directamente en el código, y los desarrolladores solo agregan comentarios y anotaciones Realizaremos una tabla demostrando cada método escogido para analizar sus diferencias desde la descripción de cada método, en qué tipo de proyectos de software podemos aplicarlo, la interacción con el cliente o el usuario en el desarrollo del programa, viendo que tan necesario es que el cliente este en cada paso, las etapas que se realizan paso a paso y las características propias de los mmodelos.[10] Ítem Cascada Prototipos Es el modelo Representa para que Descripción breve desarrollo Incremental el aquellos aspectos proceso evolutivo las mejores enfatiza de del SW que serán que desarrolla en funcionalidades del una secuencia cliente, el cual lo incrementales cascada lógica y cada evalúa, para así prototipos etapa RAD Es un modelo de Es la unión de Es un MLS pero que SW que sigue visibles para el versiones en un ciclo extremadamente corto en modelo el es refina y que se directamente desarrollo de en una versión de alta velocidad desarrollará la anterior de Web y móviles reingeniería Proyectos compuestos con requerimientos claros Web y App Software empresarial SW y siendo una convirtiéndose dependiente de Proyecto Tipo de proyecto de Sw Espiral Aplicaciones móviles Programador Interactúa con Tiene una relación Debe trabajar Trabaja con el No tiene gran relación el usuario en la con el cliente en la junto al cliente toma usuario a medida con el cliente de fase de diseño que avanza el información Análisis proyecto de Investigación Planificación Análisis Modelado de gestión Análisis de riegos Diseño Modelado de datos Programación Modelado de procesos requerimientos preliminar Diseño Diseño Implementació construcción Evaluación por el Pruebas Generaciones n evaluación cliente aplicaciones Pruebas Modificación y Ingeniería de Pruebas y entrega Mantenimiento Diseño técnico Programación y prueba Etapas Operación y mantención Características propias del modelo E puede volver Crea una maqueta, Básicamente Es una Fácil de aprender una etapa atrás la cual muestra la consiste en una aproximación Sus interfaz requerimientos aplicación, son específicos interfaz de Gran impacto la seria de ciclos que muy parecida a implementación se repiten en la evolutiva. Se modelos de negocios estática, forma de espiral, desarrolla no procesa datos comenzando sistema desde el centro satisfacer el para un subconjunto de los requerimientos específicos Resultados y discusión Métodos ágiles Para una mejor comprensión de los datos que constan en las diferentes tablas elaboradas en el apartado anterior acerca de los métodos ágiles. de Prioridades Para los planteamientos se han determinado tres posibles respuestas: cumple, no cumple o cumple parcialmente. Prioridades 5 4 3 2 1 0 Participación del usuario final Iteraciones en períodos cortos de tiempo Cumple Prioriza a las personas No cumple Comunicación efectiva Fácil adapatación a los cambios Cumple Parcialmente Gráfico 1. Prioridades Análisis e Interpretación De los 5 modelos escogidos podemos concluir que: Cuatro de los modelos priorizan la participación del usuario final dentro de sus prioridades siendo estos: XP, Scrum, Cristal y FDD. MoProsoft por otro lado no prioriza este aspecto. Todos los modelos priorizan las iteraciones en períodos cortos de tiempo. Cuatro de los modelos, XP, Cristal, FDD y MoProsoft, priorizan a las personas sobre la documentación mientras que Scrum prioriza de manera parcial pues, a pasar de que los clientes son parte de esta metodología, uno de los pilares fundamentales de este modelo es la documentación por lo que entra en la categoría de Cumple Parcialmente. Todos los modelos priorizan la comunicación efectiva dentro del equipo de trabajo. Todos los modelos priorizan la fácil adaptación a los cambios debido a que son metodologías ágiles y esta es una de sus principales características. Fases Se han determinado dos formas de medir esta categoría comparativa. Para los números de fases se utilizaron datos numéricos que indican la cantidad de fases con las que cuenta cada metodología. Número de fases MoProsoft FDD Cristal Scrum XP 0 1 2 3 4 5 6 7 8 9 Número de fases Gráfico 2. Número de Fases Análisis e Interpretación De los 5 modelos escogidos podemos concluir que: XP cuenta con 6 fases. Scrum, Cristal y FDD cuentan con 5 fases. Moprosoft es el modelo que tiene más fases, siendo éstas 9 fases. Para explicar el tiempo de entrega por cada fase se han utilizado datos cualitativos de acuerdo a la metodología. Tiempos XP Scrum, Cristal y MoProsoft 3 meses 2 semanas FDD Determinado por el cliente Gráfico 3. Tiempos de entrega Análisis e Interpretación El gráfico muestra que: Los modelos Scrum, Cristal y MoProsoft, representando al 60%, tienen sus tiempos de entrega determinados por el cliente. El modelo XP, representando el 20%, determina que por cada fase no deben pasar más de 3 meses. El modelo FDD, representando el 20%, determian que por cada fase el tiempo de entrega no debe exceder las dos semanas. Equipo de trabajo Se han determinado dos formas de medir esta categoría comparativa. Para los aspectos de subdivisión del equipo y las variantes de la metodología de acuerdo al tamaño, se han determinado tres posibles respuestas: cumple, no cumple o cumple parcialmente. Equipos de Trabajo 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% Subdivisión en equipos de trabajo Cumple No cumple Variantes de la metodología de acuerdo al tamaño Cumple Parcialmente Gráfico 5. Equipos de trabajo Análisis e Interpretación De los 5 modelos escogidos podemos concluir que: Todos los modelos cumplen con la subdivisión en equipos de trabajo más pequeños, cada uno de ellos con sus propias características indudablemente. Cuatro de los modelos, tan solo el modelo Cristal presenta variantes de su modelo. Esto lo mencionan [6, 7] al describir que la metodología Cristal se divide en 5 subgrupos nombrados por colores de acuerdo al número de miembros del equipo que existan Para la variable de roles de equipo se han utilizado datos numéricos que señalan la cantidad de roles que se presentan dentro de cada metodología. NÚMERO DE ROLES Número de roles MOPROSOFT 5 FDD 5 CRISTAL SCRUM 8 3 XP 6 Gráfico 6. Roles en el equipo de trabajo Análisis e Interpretación De los 5 modelos escogidos podemos concluir que: La metodología Cristal cuenta con el mayor número de roles siendo éste de 8. La metodología Scrum cuenta con el menor número de roles siendo éste de 3. La metodología XP cuenta con 6 roles en su equipo de trabajo. MoProsoft y FDD cuentan con 5 roles en su equipo de trabajo. Métodos tradicionales Mediante una graficas vamos mejorar el entendimiento de las diferencias en los métodos tradicionales. Etapas Y Etapas y Tiempo con el Usuario 8 7 6 5 4 3 2 1 0 Cascada Prototipos Espiral Trabaja con el programador Incremental RAD Etapas Análisis e Interpretación Lo más significativo de los modelos ya escogidos podemos concluir que: El modelo que menos interacción tiene con el usuario o cliente tiene es el modelo RAD, mientras que los demás casi van a la par ya que tienen que tener una relación obligatoria a lo largo del desarrollo del programa Mientras que en las etapas el modelo que más etapas tiene es el de Prototipos ya que cuenta con siete etapas en total parar dar finiquitado el programa que nos llevara un poco más de tiempo en realizarlo, y los dos que tienen menos es el espiral y el incremental ya que cuentan con solo cuatro etapas [11]. Enlaces para la bibliografía 1. https://dialnet.unirioja.es/servlet/articulo?codigo=4701898 2. https://revistaespirales.com/index.php/es/article/view/269/225 3. https://cia.uagraria.edu.ec/Archivos/VILLA%20LOPEZ%20BRYAN%20J%C3 %93SE.pdf 4. http://openaccess.uoc.edu/webapps/o2/bitstream/10609/17885/1/mtrigasTFC061 2memoria.pdf 5. http://repositorio.utc.edu.ec/bitstream/27000/2467/1/T-UTC-00003.pdf 6. http://repositorio.utp.edu.co/dspace/bitstream/handle/11059/8953/T004.22%20C 828.pdf?sequence=1&isAllowed=y. 7. https://repositorio.unan.edu.ni/5294/1/55950.pdf 8. https://ccc.inaoep.mx/~pgomez/publications/congress/PggITP07.pdf 9. https://www.becas-santander.com/es/blog/metodologias-desarrollosoftware.html 10. https://www.scio.com.mx/blog/metodologia-tradicional-o-agil-software/ 11. https://repositorio.uca.edu.ar/bitstream/123456789/522/1/metodologiasdesarrollo-software.pdf