Full text
* Las opiniones expresadas en este artículo son las de sus autores, no siendo necesariamente compartidas por sus empleadores Una aproximación Ágil a los niveles de madurez 2 y 3 de CMMI-DEV en entornos de desarrollo Web* C.J. Torrecilla-Salinas1, J. Sedeño1, 2, M.J.Escalona1 and M. Mejías1 1 Grupo IWT2, Universidad de Sevilla {carlos.torrecilla,jorge.sedeno}@iwt2.org {mjescalona,risoto}@us.es 2Agencia Andaluza de Instituciones Culturales [email protected] Resumen. Las metodologías y técnicas Ágiles aparecieron hace aproximadamente 10 años y se han convertido en la actualidad en una alternativa para el desarrollo de software. Este tipo de metodologías son especialmente interesantes en el marco de los desarrollos Web, ya que las características de las técnicas Ágiles pueden encajar muy bien con la especificidad propia de un desarrollo Web. Por otro lado, los modelos de madurez como CMMI-DEV, que se centran en la madurez de una organización que desarrolla software, han probado ser mecanismos validos para incrementar la calidad en los procesos de desarrollo. La propuesta de un conjunto de técnicas Ágiles que permita a una determinada organización alcanzar los objetivo específicos de los niveles de madurez 2 y 3 de CMMI-DEV podría ser muy interesante para aquellas organizaciones (sobre todo pequeñas y medianas) que trabajan en proyectos de desarrollo Web, ya que se podría combinar la adaptabilidad proporcionada por las metodologías y técnicas Ágiles, tan necesaria en el entorno Web, con el incremento de madurez en los procesos posibilitado por CMMI-DEV. En este trabajo se propone un conjunto de técnicas, métodos y metodología que, combinados, podrían ayudar a una organización a alcanzar los objetivos genéricos y específicos de los niveles 2 y 3 de CMMI-DEV. Palabras clave: Metodologías Ágiles, Scrum, Ingeniería Web, CMMI, Ingeniería del Software. 1 Introducción CMMI-DEV (Capability Maturity Model Integration for Development) forma parte de la familia de modelos CMMI. Estos modelos proporcionan un marco de comparación que permite evaluar la madurez de una organización a la hora de desarrollar software [1], asumiéndose que alcanzar sus niveles de madurez más altos está relacionado directamente con incrementos en la calidad del software [2]. Por otro lado, los desarrollos de software en entornos Web tienen ciertas características especiales, co- 145
mo una aproximación flexible a la gestión de requisitos y la necesidad de ciclos cortos de realimentación con los usuarios [3]. En este tipo de desarrollos se pueden encontrar características como la reducción del “time-to-market”, la adaptación rápida a requisitos poco definidos o la entrega rápida de valor [4]. Como se sabe, uno de los principios de las metodologías Ágiles es el abrazar el cambio [5], el cual puede encajar muy bien en el marco de los proyectos de desarrollo Web. Sin embargo, a medida que las aplicaciones Web se vuelven más populares también aumenta sus requisitos de calidad. Si, como se ha mencionado, los niveles más altos de CMMI-DEV están relacionados con mejoras en la calidad; el uso de métodos Ágiles para alcanzar los objetivos propuestos por estos niveles de madurez podría ofrecer a las organizaciones que desarrollan sistemas en entornos Web la posibilidad de combinar calidad y madurez mientras son capaces de responder rápidamente al cambio. En particular, los niveles 2 y 3 de madurez de CMMI-DEV podrían representar un buen compromiso entre nivel de formalismo y adaptabilidad [6, 7]. En base a lo expuesto, el presente trabajo tiene como objetivos: Presentar una serie de metodologías, técnicas y métodos Ágiles que puedan cumplir los objetivos de los niveles de madurez 2 y 3 de CMMI-DEV en entornos Web, proponer un mapeo entre este conjunto frente a los citados objetivos, y extraer una serie de conclusiones relevantes e identificar líneas de investigación. Este trabajo está organizado en los siguientes apartados. Tras esta introducción , el Apartado 2 presenta los trabajos relacionados. El Apartado 3 plantea el conjunto de métodos Ágiles propuesto y el Apartado 4 el mapeo entre este conjunto y los objetivos específicos de los niveles 2 y 3 de CMMI. Por último, el Apartado 5 extrae las principales conclusiones y plantea líneas futuras de investigación. 2 Trabajos relacionados En este apartado se va a presentar un análisis de los trabajos relacionados existentes, entendiendo éstos como aquellos que, bien partiendo del mundo Ágil, bien partiendo del mundo CMMI, intentan incorporar valores y prácticas del otro campo. Así, podemos encontrar trabajos como los de Jakobsen et al. [8, 9] o Sutherland et al. [10], que describen, en forma de casos de estudio, como organizaciones con una fuerte cultura CMMI han incorporado prácticas Ágiles en sus procesos de desarrollo. Sin embargo estos trabajos presentan, en general, a organizaciones ya certificadas en CMMI con lo que ni describen como una organización podría avanzar a través de los distintos niveles de madurez usando exclusivamente prácticas Ágiles, ni presentan un mapeo entre las diferentes técnicas Ágiles utilizadas y los objetivos de CMMI, ni se centran en entornos Web. En el trabajo de Lina et al. [11] encontramos un análisis de cual aproximación sería más adecuada para alcanzar los objetivos de CMMI, si la basada en Scrum o una más formalista. Sin embargo, las conclusiones que se presentan no son exhaustivas, ya que no se analizan gran parte de las áreas de proceso, además de centrarse únicamente en Scrum como método Ágil. Por otro lado podemos encontrar trabajos como los de Cohan et al. [12], Garzas et al. [13] y Baker [14, 15], en los que, también en forma de casos de estudio, se presentan ejemplos de empresas que, usando Scrum o XP, han sido capaces de pasar con éxito evaluaciones CMMI. En el caso del 146
estudio de Garzas, se analiza la viabilidad del uso de Scrum para cubrir los objetivos del nivel 2 de CMMI, sin mencionar los objetivos del nivel 3. Los trabajos de Cohan y Baker se centran más en la descripción del proceso de evaluación, sin proporcionar un mapeo entre las diferentes prácticas y objetivos, o bien haciéndolo a muy alto nivel. Por último, todos estos trabajos se centran en proyectos de desarrollo de software generalistas, sin tener en cuenta las especificidades de los desarrollos Web. Dentro de los trabajos relacionados podemos encontrar también un conjunto de trabajos teóricos, como los de Lukasiewicz et al. [6], Marçal et al. [7] y Diaz et al. [16]. Estos trabajos presentan un mapeo entre un cierto conjunto de prácticas Ágiles y los objetivos de un cierto número de áreas de proceso de CMMI en los niveles 2 y 3. En general, en estos trabajos, encontramos que no hay un mapeo completo de todos los objetivos de todas las áreas de proceso (centrándose únicamente en algunas de ellas) y que se centran en procesos de desarrollo genéricos, sin tener en cuenta las características específicas de los proyectos Web. Como conclusión, podemos observar que no existen trabajos que propongan un mapeo completo entre un conjunto de técnicas Ágiles y todos los objetivos específicos de todas las áreas de proceso de los niveles de madurez 2 y 3 de CMMI-DEV en entornos de desarrollo Web. Sí podemos encontrar en nuestro trabajo previo [17] un mapeo entre Scrum y todas las áreas de proceso del nivel 2 de CMMIDEV, identificando los “gaps” y proponiendo técnicas Ágiles para cubrir los mismos. Éste es el único trabajo que se centra en procesos de desarrollo Web y lo podemos considerar el punto de partida de este estudio. Partiendo de él, presentaremos un conjunto de técnicas Ágiles que puedan cubrir todos los objetivos de las áreas de proceso de los niveles 2 y 3 de CMMI-DEV para proyectos de desarrollo Web. 3 Presentación del conjunto de técnicas Ágiles Nuestra propuesta de técnicas Ágiles se basa en el framework Scrum, que es la metodología Ágil más popular [18]. Alrededor de Scrum se propone tanto un conjunto de metodologías, técnicas y métodos Ágiles y como extensiones ad-hoc al mismo. Las metodologías, métodos y técnicas Ágiles adicionales se presentan en la Tabla 1 y las extensiones ad-hoc a Scrum propuestas se presentan en la Tabla 2: Tabla 1. Metodologías, métodos y técnicas Ágiles propuestas. Propuesta Descripción Scrum Se propone el uso de Scrum [19] como marco para la gestión del proyecto y sus requisitos. Permitirá adecuarse a la gestión de r equisitos difusos propia de desarrollos Web, así como reducir los ciclos de realimentación por parte de los usuarios. XP Del conjunto de técnicas propuestas por eXtreme Programming [20], se propone incorporar las siguientes: Propiedad compartida del código, Control de versiones, Integración continua y Programación en parejas. Estas técnicas permiten alinearse con la necesidad de continuidad de negocio, reducción de “time -to-market” y entrega rápida que, có mo se ha mencionado, caracterizan a los desarrollos Web. Gestión Ágil de Riesgos La gestión Ágil de riesgos [21] es una técnica que permite integrar en el ciclo de vida de Scrum la revision y evaluación continua de los riesgos, así como su reporte a la dirección , lo que se alinea con la necesidad de ciclos de realimentación cortos de los desarrollos Web. Contratación Ágil La contratación Ágil [22] es una técnica que permite crear una relación colaborativa entre cliente y proveedor, facilitando la adaptación a cambios en requisitos característica de los desarrollos Web. 147
Lean En relación a Lean, se propone la inclusión de técnicas como grupos de trabajo para la mejora [23] o am plificación del conocimiento [24], que permitirán alinear los procesos de mejora y de formación sistemática con los ciclos de realimentación cortos necesarios para los desarrollos Web Agile Project Management Se propone incorporar la fase inicial de visionado propuesta por Agile Project Management [25], así como sus diferentes técnicas de toma de decisiones, lo que permitirá ayudar a la toma de decisiones incluso en situaciones en las que las opciones no están del todo definidas. Pruebas Ágiles Se propone la inclusión de dos técnicas: Test Driven Development (TDD) [26] para las pruebas unitarias y Acceptance Test Driven Development (ATDD) [27 ] para las pruebas de aceptación o de usuario. Esta aproximación permitirá una definición temprana de los tests, incorporando al proceso de prueba a los propios usuarios. Arquitectura Ágil Las técnicas de arquitectura Ágil [28], incluyendo conceptos como diseño emergente, “testing” exploratorio, diseño y arquitectura emergente permitirán adecuar el diseño a unos requisitos inicialmente difusos que se van definiendo a lo largo del proyecto. Tabla 2. Extensiones a Scrum. Extensión Descripción Scrum a nivel de empresa La implementación de Scrum a nivel de empresa propuesta por Schwaber [29] permitirá la definición de Scrum como un proceso a nivel de la organización, y su adaptación a las características de la organización y los proyectos Sprint 0 Tal y como se incluye en nuestro trabajo previo [17], se propone la realización de un Sprint inicial de planificación (también denominado Sprint 0), que permitirá esta blecer las bases de la gestión y el desarrollo posterior del proyecto. Otras extensiones Estas extensiones a Scrum, propuestas en nuestro anterior trabajo [17], son relativas a la medición de indicadores de rendimiento, gestión y distribución de información, reports, a la definición de indicadores de calidad y su gestión… 4 Propuesta de mapeo La Tabla 3 muestra la propuesta de mapeo entre las áreas de proceso de los niveles 2 y 3 y el conjunto de metodologías, métodos y técnicas propuesto, basada en el análisis del cumplimiento de los objetivos de las áreas de proceso de CMMI-DEV. El modelo que se plantea debe ser formalizado e integrado de forma consistente así como evaluado, a través de una evaluación formal o autoevaluación, aspectos que se plantearán como líneas de investigación futuras: Tabla 3. Propuesta de mapeo. Áreas de proceso Nivel 2 Áreas de proceso Nivel 3 CM MA PMC PP PPQA REQM SAM DAR IPM OPD OPF OT PI RD RSKM TS VAL VER Propuesta XP Scrum y Extensiones Scrum Contratos Ágiles Agile Project Management Scrum a nivel empresa Lean XP Scrum Gestión Ágil de Riesgos Arquitectura Ágil ATDD XP 148
5 Conclusiones y trabajos futuros La conclusión principal de nuestro trabajo es que la propuesta de un conjunto de técnicas Ágiles permitir la consecución de todos los objetivos específicos de los niveles 2 y 3 de madurez de CMMI-DEV para entornos de desarrollo Web. Como líneas de trabajo futuras se puede sugerir la formalización e integración de las técnicas en un framework consistente, así como continuar con la identificación de técnicas, prácticas y metodología Ágiles que, de forma conjunta, pudieran permitir a las organizaciones alcanzar el resto de niveles de madurez de CMMI-DEV (4 y 5). La definición y formalización de este conjunto de metodologías, técnicas y prácticas Ágiles, combinado con el conjunto ya identificado, permitiría a las organizaciones que desarrollan sistemas Web progresar a través de los diferentes niveles de madurez de CMMI, manteniendo a un nivel de formalismo adecuado y la capacidad de adaptarse rápidamente a los cambios, mientras que el proceso de desarrollo Ágil se institucionaliza y la calidad de los desarrollos aumenta. Combinar esta definición con el desarrollo de herramientas de soporte que puedan ser utilizadas por las organizaciones sería otra línea de trabajo. Para finalizar, una validación del modelo propuesto en una implementación real a través de una evaluación formal o una auto-evaluación será también necesaria, de cara a validar las propuestas incluidas en este trabajo. 6 Agradecimientos Esta investigación ha sido apoyada por el proyecto MeGUS (TIN2013-46928-C3-3- R) del Ministerio de Ciencia e Innovación, el proyecto Tempros (TIN2010-20057- C03-02), y el proyecto NDTQ-Framework (TIC-5789) de la Junta de Andalucía. Referencias 1. CMMI Product Team. “CMMI for Development, Version 1.3.” Nov. 2010. Carnegie Mellon University. http://www.sei.cmu.edu/reports/10tr033.pdf. Accedido marzo 2014. 2. Goldenson, D. et al. “Demonstrating the Impact and Benefits of CMMI: An Update and Preliminary Results”. Carnegie Mellon University, 2003. http://resources.sei.cmu.edu/library/asset-view.cfm?AssetID=6365. Accedido marzo 2014. 3. Ran, H. et al. “Agile Web Development with Web Framework”. Actas de 4th Int. Conf. on Wireless Communications, Networking and Mobile Computing. (Dalian, China, 12-17 Oct. 2008) WiCOM '08. IEEE. 4. Pressman, R.S. “What a Tangled Web We Weave”. IEEE Software, Jan.-Feb., pp. 18-21. Jan-Feb. 2000. 5. Beck, K. et al. “Manifesto for Agile Software Development”. 2001. http://www.agilemanifesto.org. Accedido marzo 2014. 6. Lukasiewicz, K. et al. "Improving Agility and Discipline of Software Development with the Scrum and CMMI," Software, IET, vol.6, no.5, pp.416-422, October 2012. 7. Marcal, A.S.C et al. “Blending Scrum Practices and CMMI Project Management Process Areas”. 2008. ISSE 4. 17-29. 149
8. Jakobsen, C.R.; Sutherland, J. “Scrum and CMMI Going from Good to Great”. Actas de Agile Conference 2009 (Chicago, IL, USA 24-28 Aug. 2009). AGILE ‘09. IEEE. 9. Jakobsen, C. R.; Johnson, K. A. “Mature Agile With a Twist of CMMI”. Aug. 2008. Actas de Agile Conference 2008 (Toronto, Canada 04-08 Aug. 2008). AGILE ‘08. IEEE. 10. Sutherland, J. et al. “Scrum and CMMI Level 5: The Magic Potion for Code Warriors”. Jan. 2008. Actas de 41st annual Hawaii Int. Conf. on System Sciences 2008 (Hawaii, USA 07-10 Jan. 2008). HICSS ’08. IEEE. 11. Lina, Z. et al. "Research on Combining Scrum with CMMI in Small and Medium Organizations". Actas de 2012 Int. Conf. on Computer Science and Electronics Engineering (Hangzhou, China 23-25 Mar. 2012). ICCSEE ’12. IEEE. 12. Cohan, S. et al. “An Agile Development Team’s Quest for CMMI Maturity Level 5”. Actas de Agile Conference 2009 (Chicago, USA 24-28 Aug. 2009). AGILE ‘09. IEEE. 13. Garzás, J. et al. “A case study of software process improvement with CMMI-DEV and Scrum in Spanish companies”. Journal of Software: Evolution and Process, vol. 25, no.12, pp.1325-1333. 2013. 14. Baker, S. W. “Formalizing Agility, Part 2: How an Agile Organization Embraced the CMMI”. Jul. 2006. Actas de Agile Conference 2006 (Minneapolis, USA 23-28 July 2006). AGILE ‘06. IEEE. 15. Baker, S. W. “Formalizing Agility: An Agile Organization’s Journey Toward CMMI Accreditation”. Jul. 2005. Actas de Agile Development Conference 2005 (Denver, USA 24- 29 July 2005). ADC ‘05. IEEE. 16. Diaz, J. et al. “Mapping CMMI Level 2 to Scrum Practices: An Experience Report”. Jan. 2009. SPI 42 93-104. 17. Torrecilla-Salinas, C. et al. “A Scrum-based Approach to CMMI Maturity Level 2 in Web Development Environments”. Actas de Int. Conf. on Information Integration and Webbased Applications & Services 2012 (Bali, Indonesia 3-5 Dec. 2012). iiWAS, 12. ACM. 18. Pikkarainen, M. et al. “The Impact of Agile Practices on Communication in Software Development”. Empirical Softw. Engg. Springer, pp 303-337. May. 2008. 19. Sutherland, J.; Schwaber, K. “The Scrum Guide: The Definitive Guide to Scrum”. 2011. http://www.scrum.org/Scrum-Guides. Accedido en marzo de 2014. 20. Beck, K.; Andres, C. “Extreme Programming Explained: Embrace Change, Second Edition”. Boston: Addison-Wesley. 2004. 21. Lant, M. “Five Simple Steps to Agile Risk Management”. From http://michaellant.com/2010/06/04/five-simple-steps-to-agile-risk-management/. Accedido marzo 2014 22. Jamieson, D. et al. "Agile Procurement and Dynamic Value for Money to Facilitate Agile Software Projects," Sept. 2006. Actas de 32nd EUROMICRO Conf. on Software Engineering and Advanced Applications (Dubrovnik, Croatia, Aug. 29-Sept. 1 2006). SEAA '06. 23. Kniberg, H. “Lean from the Trenches: Managing Large-Scale Projects with Kanban”. Dallas: The Pragmatic Bookshelf. 2012. 24. Poppendieck, M.; Poppendieck, T. “Lean Software Development. An Agile Toolkit”. Boston: Addison-Wesley. 2003. 25. Highsmith, J. “Agile Project Management: Creating Innovative Products, Second Edition”. NJ: Addison-Wesley. 2009. 26. Beck, K. “Test Driven Development. By Example”. Boston: Addison-Wesley. 2008. 27. Adzik, G. “Specification by Example: How Successful Teams Deliver the Right Software”. CT: Manning Publications. 2011. 28. Shore, J.; Warden, S. “The Art of Agile Development”. CA: O’ Reilly. 2007. 29. Schwaber, K. “The Enterprise and Scrum”. Redmond: Microsoft Press. 2007. 150