Source: http://docplayer.es/3822571-Framework-para-el-desarrollo-de-software-en-entornos-academicos-jorge-hernan-abad-londono.html
Timestamp: 2018-11-17 08:06:53+00:00

Document:
FRAMEWORK PARA EL DESARROLLO DE SOFTWARE EN ENTORNOS ACADÉMICOS JORGE HERNÁN ABAD LONDOÑO - PDF
FRAMEWORK PARA EL DESARROLLO DE SOFTWARE EN ENTORNOS ACADÉMICOS JORGE HERNÁN ABAD LONDOÑO
Download "FRAMEWORK PARA EL DESARROLLO DE SOFTWARE EN ENTORNOS ACADÉMICOS JORGE HERNÁN ABAD LONDOÑO"
Juan Francisco Olivera Miguélez
1 FRAMEWORK PARA EL DESARROLLO DE SOFTWARE EN ENTORNOS ACADÉMICOS JORGE HERNÁN ABAD LONDOÑO Tesis de maestría presentada como requisito parcial para optar al título de Magister en Ingeniería Asesor Rafael David Rincón Bermúdez UNIVERSIDAD EAFIT ESCUELA DE INGENIERÍA MEDELLÍN
2 Nota de aceptación: Firma del presidente del jurado Firma del Jurado Firma del Jurado Medellín, 8 de Noviembre del
3 A mi madre Mariela Londoño Jaramillo, mujer incansable que durante toda mi vida me ha dado su apoyo y amor, siendo un constante ejemplo de perseverancia y dedicación para mí. A mi hija Mariana, a quién amo entrañablemente. A mi novia Diana, quien siempre estuvo ahí para darme ánimo y foco en la elaboración de este trabajo 3
4 Agradecimientos Quiero dar gracias, mis gracias más sinceras, a todas las personas que contribuyeron sustancialmente a iniciar y concluir este proyecto de grado. A mi asesor, amigo y mentor Rafael David Rincón, quien me animó a realizar este proyecto y me ayudó a comprender la necesidad de esta iniciativa. A los estudiantes que colaboraron con sus trabajos de grado: Luis Felipe Tabares, ingeniero incansable, quien hizo grandes aportes a la estructura y contenido de este framework y que casi se deja atrapar por el sub-óptimo. A Juan Camilo Villa y a Mario López, por la creación de los ejemplos que ayudan al entendimiento del framework de parte de los estudiantes. A la Universidad EAFIT, por darme la oportunidad de realizar este importante aporte, que espero sea de gran apoyo a la academia, y en consecuencia, a la industria, local y nacional. A Dios, el Hacedor, por sus bendiciones incontables en mi vida y por permitirme un recorrido profesional y académico que desemboca en este aporte. 4
5 CONTENIDO pág. 1. LISTA DE TABLAS LISTA DE FIGURAS GLOSARIO RESUMEN PALABRAS CLAVE INTRODUCCIÓN Antecedentes Objetivos Objetivo General Objetivos Específicos MARCO TEÓRICO Proceso Unificado de Rational Principios de desarrollo Ciclo de vida Disciplinas del ciclo de vida del software Elementos de RUP en el framework propuesto Capability Maturity Model Integration (CMMi) Generalidades Componentes del modelo Capacidad y Madurez Niveles de Madurez (representación escalonada) Niveles de Capacidad de los procesos (Representación Continua) Elementos de CMMi en el framework propuesto Project Management Body Of Knowledge (PMBoK)
6 7.3.1 Grupos de procesos de la Gerencia de proyectos Áreas de Conocimiento Relación entre los Grupos de procesos y las Áreas de conocimiento Elementos del PMBoK en el framework propuesto Desarrollo Ágil de Software El manifiesto Ágil Características Elementos de las metodologías ágiles en el framework propuesto METODOLOGÍA DE TRABAJO ELECCIÓN DE LA HERRAMIENTA EMPLEADA PARA LA PUBLICACIÓN DEL FRAMEWORK Características del EPF Composer Terminología y conceptos manejados en el EPF Composer Framework Propuesto Procesos y Proyectos Propuestos Fundamentos del Framework Principios adoptados RUP, CMMi y PMBoK Prácticas adoptadas de las metodologías ágiles Estructura del Proceso Estructura dinámica del framework Estructura estática de la metodología Ejemplos Propuestos Escenarios de Uso Validación del Framework Componentes físicos del framework Licencia del framework Valor Agregado del Framework Frente a Iniciativas Existentes CONCLUSIONES TRABAJOS FUTUROS DATOS DE CONTACTO
7 12. BIBLIOGRAFÍA ANEXOS Presentación de Sensibilización Resultado de las Encuestas
8 1. LISTA DE TABLAS pág. Tabla 1. Niveles de madurez, Áreas de Proceso y Categorías de Áreas de Proceso Tabla 2. Correspondencia entre los Grupos de Procesos y las Áreas de Conocimiento de la Gestión de proyectos Tabla 3. Prácticas ágiles y su momento de uso (Elaboración Propia) Tabla 4. Tabla comparativa de herramientas para publicación del framework (Elaboración Propia) Tabla 5. Características de los proyectos soportados por el framework (Elaboración Propia) Tabla 6. Prácticas ágiles, momento de uso y tipos de proyectos (Elaboración Propia) Tabla 7. Disciplinas vs. Artefactos para Proyectos Tipo 1 (Elaboración Propia) Tabla 8. Disciplinas vs. Artefactos para Proyectos Tipo 2 (Elaboración Propia) Tabla 9. Relación entre Fases Disciplinas Artefactos Obligatoriospara Proyectos Tipo 1 (Elaboración Propia) Tabla 10. Relación entre Fases Disciplinas Artefactos Obligatorios para Proyectos Tipo 2 (Elaboración Propia) Tabla 11. Matriz RACI para los Artefactos del Framework para Proyectos Tipo 1 (Elaboración Propia) Tabla 12. Matriz RACI para los Artefactos del Framework para Proyectos Tipo 2 (Elaboración Propia) Tabla 13. Componentes Físicos del Framework Metodológico (elaboración propia) Tabla 14. Cuadro comparativo entre SOFTWARE EDUP y las iniciativas existentes (elaboración propia)
10 2. LISTA DE FIGURAS pág. Figura 1: Vértices que garantizan un buen producto o servicio. (Gráfica adaptada ) Figura 2: Fases del ciclo de vida del Proceso de Desarrollo de Software de RUP 34 Figura 3: Proceso Unificado de Desarrollo de Software de IBM RATIONAL Figura 4. Representación continua del modelo CMMI Figura 5. Representación escalonada del modelo CMMI Figura 6. Componentes del Modelo CMMI Figura 7. Niveles de Madurez Figura 8. Áreas de Proceso en la Representación Continua y nivel de capacidad (CL: Capability Level) Figura 9. Grupos de procesos de la Gerencia de proyectos Figura 10. The Agile Checklist Figura 11. Contenido del método vs Proceso (en ejemplo en RUP) Figura 12. Un resumen de la terminología propuesta para el Eclipse Process Framework Figura 13. Enfoque de RUP, XP y Scrum (Adaptado de Corallis) Figura 14. Software EDUP - Disciplinas y alcance del ciclo de vida. (Elaboración Propia) Figura 15. Software EDUP - Desplegado Figura 16. Estructura del framework SOFTWARE EDUP Figura 17. Disciplinas en el framework SOFTWARE EDUP Figura 18. Licencia creative commons
11 3. GLOSARIO Artefacto: Producto tangible resultante del proceso de desarrollo de software (o de una etapa del mismo). Algunos artefactos como los casos de uso, diagrama de clases u otros modelos UML ayudan a la descripción de la función, la arquitectura o el diseño del software. Otros se enfocan en el proceso de desarrollo en sí mismo, como planes de proyecto, casos de negocios o enfoque de riesgos. Un artefacto puede ser compuesto por otros artefactos. BPMN (Business Process Management Notation Notación para el Modelado de procesos de negocio): Notación gráfica que presenta un flujo de trabajo sobre un negocio, propuesta por la OMG. Actualmente se encuentra en la versión 2.0. Disciplina: Una disciplina es una categorización de las tareas que están relacionadas con un área importante de interés y la cooperación. Por ejemplo, se pueden identificar en RUP disciplinas de Modelado Empresaria, Requisitos, Arquitectura, Implementación, etc. EDT (Estructura de desglose de trabajo): Estructura jerárquica enfocada en los entregables que serán realizados por el equipo del proyecto. Equivalente a WBS (Work Breakdown Structure) Entregable: Es un grupo de productos de trabajo, generalmente artefactos. También es considerado una salida del proceso que tiene valor para el cliente, usuario, u otro stakeholder. EPF Composer: El Eclipse Process Framework Composer (EPF Composer), es una herramienta gratuita, desarrollada por la comunidad Eclipse, que sirve para 11
12 crear y modificar contenido de métodos, procesos o metodologías, y generar automáticamente documentación adecuada en formato para la web. Esquema: Prototipo de representación simple en donde se emplean trazos, imágenes simples, donde lo que se busca es representar campos de entrada y salida, botones. El foco del esquema no es la riqueza gráfica. Fase: Una fase es un tipo de actividad que representa un periodo de tiempo en un proyecto. Las fases concluyen típicamente con un hito, o con un grupo de artefactos entregados. Framework (marco de trabajo): Conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular, que sirve como referencia para enfrentar y resolver nuevos problemas de índole similar. Guía de adaptación: Parametrización de un método, actividad, artefacto o entregable para un determinado escenario. Hito: Un punto o evento significativo dentro de un proyecto. Iteración: Es una secuencia de actividades que es realizada más de una vez. Las iteraciones ayudan a organizar el trabajo en varios ciclos. Lista de elementos de trabajo (Work Item List): Documento donde se listan las tareas clasificadas por sus etapas durante el proyecto, los responsables de cada tarea y el tiempo estimado. 12
13 Metodología: Conjunto de métodos que se siguen en una investigación científica o en una exposición doctrinal. 1 Plan de gestión de comunicaciones: Documento formal donde se presentan los canales de comunicación que se tendrán entre todos los actores del proyecto. Plan de gestión de riesgos: Documento formal que presenta unos supuestos sobre los riesgos que pueden afectar el proyecto y sus planes de contingencia. Plan de proyecto: Documento formal usado como guía para la ejecución y el control de un proyecto. El uso primario de un plan de proyecto es documentar los planes y decisiones, facilitar la comunicación entre los stakeholders y documentar el alcance, costos y cronogramas. Prototipo: Representación limitada de un sistema, módulo o funcionalidad, permite a las partes entender, probar, o hasta explorar su uso. Puede consistir desde un esquema simple hasta una interfaz enriquecida y con detalles últimos de diseño. Proyecto: Un esfuerzo temporal que se lleva a cabo para crear un producto, servicio o resultado único. 2 1 REAL ACADEMIA ESPAÑOLA. Diccionario de la Lengua Española - Vigésima Segunda Edición. [en línea]. (Citada: 4 de Julio. 2012) < 2 PROJECT MANAGEMENT INSTITUTE. PMBoK (Project Management Body of Knowledge), version 4 [en línea]. (Citada: 16 de Junio de 2012) < Guide and Standards.aspx> 13
14 Refactoring (refactorización): Técnica de Ingeniería de Software para reestructurar el código fuente, modificando su estructura (buscando optimizarla) sin cambiar su comportamiento externo. Esta técnica de modificación de código requiere de dos condiciones: la primera, que exista un acuerdo en donde se consideren los fuentes como propiedad del equipo de trabajo, de forma que la modificación se realice sin solicitar permiso de otro miembro; y la segunda, que exista un repositorio de control de versiones que permita guardar cualquier modificación y devolverse a una versión anterior. Rol: Es un conjunto bien definido de competencias, funciones y responsabilidades que pueden ser realizadas por una sola o varias personas; igualmente, una persona puede desempeñar varios roles. RUP: Rational Unified Process es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas. SOFTWARE: Según la IEEE, software es Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación. SPEM (Software & Systems Process Engineering Metamodel Specification): Es un estándar creado por la OMG (Object Management Group) para documentar procesos de Ingeniería de Software. Actualmente se encuentra en la versión 2.0. Stakeholder (Interesado): Interesado, involucrado, afectado positiva o negativamente por la existencia del proyecto de software. Ejemplos de stakeholders, son: 14
15 El gerente del proyecto El estudiante ejecutor del proyecto El cliente El Sponsor: Persona que patrocina el proyecto con recursos económicos El equipo que construye el proyecto Los futuros usuarios del sistema SUB-OPTIMO: Hacer lo mejor posible algo que no debería hacerse 3. Refinar algo demasiado sin ser necesario y sin que sea observable. Perder tiempo en tareas o minucias que no agregan valor al resultado deseado. TDD (Test Driven Development - Desarrollo guiado por las pruebas): Estrategia de desarrollo de software en la cual se escriben primero las pruebas unitarias y subsecuentemente el código, de esta forma se garantiza que el código está libre de errores. UML (Unified Modeling Language - Lenguaje Unificado de Modelado): Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema, propuesto y mantenido por la OMG. 3 VEGA, Jesús. Subóptimo [en línea] (Citada: 19 de Junio de 2012) < 15
16 4. RESUMEN El Desarrollo de software en escenarios académicos, en especial de pregrado, es caracterizado por extremos, durante mi ejercicio de la docencia tanto en pregrado como en posgrado en las universidades de Colombia he notado que este va desde la informalidad de materias en las que se desarrollan ciertos componentes o módulos, hasta la formalidad en materias enfocadas específicamente en Ingeniería de Software donde se buscan desarrollar pequeños, medianos o hasta grandes sistemas, y donde el esfuerzo del docente se centra en lograr que los estudiantes realicen una apropiación de buenas prácticas de ingeniería, como: análisis, diseño, documentación, versionamiento, modelado, descomposición funcional, buenas prácticas de codificación, entre muchas otras. Este trabajo busca proporcionar un framework metodológico con herramientas, plantillas, instructivos, políticas, métodos, entre otros, útil tanto para los desarrollos formales en materias relacionadas con Ingeniería de Software como en los desarrollos informales en las materias diferentes la misma, adicionalmente en trabajos dirigidos de grado, tesis y en algunos casos proyectos de investigación. El framework se construyó con base en cuatro pilares fundamentales: RUP (metodología probada de IBM), CMMI (estándar que propone la incorporación y el uso de las mejores prácticas de Ingeniería de Software), y PMBoK (mejores prácticas en la gerencia de proyectos), y algunas prácticas Agiles, buscando dar al entorno académico elementos similares al de la industria, pero sin la rigurosidad de la misma, con el fin de proporcionar una herramienta útil al entorno académico y que siente unas bases sólidas para el ejercicio profesional. Esta metodología comprende adaptaciones para proyectos académicos de diferente magnitud, y establece una guía para cada una de los roles implicados en el ciclo de vida del proceso de desarrollo de software. Está orientada principalmente a miembros del equipo de desarrollo que se dedican a las 16
17 actividades del ciclo de vida: modelado del negocio, requisitos, análisis y diseño, implementación, pruebas, implantación, gestión de cambios, y gestión del proyecto. Adicionalmente, es útil para que los estudiantes comprendan y aprendan las actividades a realizar por los diferentes roles en un proyecto tanto al interior de la academia como en la industria 4 : analistas (que especifican los requisitos y el comportamiento del sistema), arquitectos (que diseñan los elementos que satisfacen esos requisitos), desarrolladores (que convierten esos diseños en código ejecutable), testers (que verifican y validan la estructura y comportamiento del sistema) y para el líder de proyecto (que coordinan el equipo y se encargan de lograr la ejecución del proyecto). Para la creación, configuración y publicación del framework metodológico SOFTWARE EDUP (nombrado así debido a que es un framework adaptado del proceso unificado de software para la educación), se empleo el marco de trabajo EPF (Eclipse Process Framework), el cual utiliza el estándar para la representación de modelos de procesos de Ingeniería de Software e Ingeniería de Sistemas SPEM (Software and Systems Process Engineering Metamodel), versión 2.0, definido por el OMG (Object Management Group, Inc.). 4 van der Duim, L., Andersson, J., & Sinnema, M. (2007). Good Practices for Educational Software Engineering Projects. 29th International Conference on Software Engineering (ICSE 07), doi: /icse
18 5. PALABRAS CLAVE RUP, CMMi, Software EdUP, Scrum, metodologías agiles, proceso software, ingeniería de software, cursos académicos, PMBoK, ingeniería de sistemas, ingeniería informática, ciencias de la computación, SPEM, Eclipse Process Framework, MeRinde, UPEDU, metodología para proyectos académicos. 18
19 6. INTRODUCCIÓN El Desarrollo de software es uno de los procesos más complejos de la industria humana; implica conocimiento, conocimientos técnicos, un buen proceso, un buen grado de control y disciplina por parte de todos los involucrados en su realización. Por lo tanto, resolver el cómo realizar el proceso corresponde a las actividades recurrentes en la Ingeniería de Software, la cual se encuentra en constante maduración y evolución, pues ese cómo puede involucrar desde un proceso improvisado de desarrollo de software, que trae consigo malas prácticas y pésimas consecuencias en resultados de tiempo, calidad y dinero; las metodologías robustas, como lo son el IBM Rational Unified Process, con un alto grado de formalismo, protocolo, entregables y documentos, hasta las metodologías Ágiles, que tienen poca documentación, características especiales de contratación y de involucramiento del cliente, y requieren gran disciplina y madurez del equipo de trabajo. Diseñar (o ajustar), enseñar y usar este Proceso Software dentro de una organización puede ser un camino bastante arduo que puede tomar en la adopción de CMMi nivel 3 aproximadamente 25 meses 5, trasladando estos esfuerzos a un escenario académico (objeto de este trabajo) se evidencia la necesidad de esfuerzos adicionales y articulados debido a que los estudiantes en formación no han desempeñado labores profesionales en ingeniería de software. Es común que en el Proceso Software usado en las prácticas y proyectos académicos se encuentre sin directrices claras (fases, actividades, entregables, roles, tareas, procesos y herramientas), y sin la adopción de un modelo que 5 Software Engineering Institute. CMMI for Development SCAMPI Class A Appraisal Results, 2011Update. March [en línea]. (Citada: 22 de Octubre de 2012) < > 19
20 presente las mejores prácticas existentes, que logren producir software de calidad bajo los estándares de documentación y funcionalidad como las que requiere el mercado, trayendo consigo proyectos descontextualizados de su entorno, y estudiantes, grupos de investigación y de trabajo que los ejecutan, sin lineamientos claros que incorporen buenas prácticas y redunden en beneficio de su desempeño profesional, centrándose en un desarrollo heroico que se realiza durante desgastantes horas, pocos días antes de la entrega 6. Similarmente, profesores expertos en áreas de conocimiento específicas de la ingeniería de sistemas, de software, y ciencias de la computación, ejecutan, asesoran y coordinan dichos proyectos sin la adopción de las mejores prácticas de la industria, haciéndolos propensos al fracaso y deteriorando así una excelentes iniciativa. Es de notar, que el entono académico cuenta con características que lo diferencian de los proyectos de la industria: menor presión por cumplimiento de cronograma y presupuesto, debido a que se pueden incorporar recursos a muy bajo costo bajo el esquema de prácticas o pasantías; un control de la calidad más laxo, pues siempre habrán recursos para corregir los errores, baja gestión del riesgo y una pésima gestión del alcance y de los cambios. Esto que hace que su control, ejecución, y adherencia a buenas prácticas, tanto de Ingeniería de Software, como de Gerencia de proyectos, llegue a ser más permisivo, implicando que en el proyecto se inviertan recursos de una forma ineficiente (y hasta ilimitada) y aumentando la probabilidad de fracaso del mismo. Aunado a estos hechos las consecuencias también hacen repercusión en los estudiantes y su ADN cognitivo del Proceso Software, donde esas mejores 6 Kruchten, P. (2011). Experience teaching software project management in both industrial and academic settings th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T), doi: /cseet
21 prácticas de producción de software al no ser suficientemente valoradas y exigidas por el cuerpo docente encargado de la formación traen como consecuencia largos plazos de capacitación en la industria hacia los egresados (incurriendo en costos que debieron haber sido resueltos en la fase de formación profesional), y peor aun viciando las iniciativas de emprendimiento empresarial con malas prácticas que traerán como consecuencia una propensión al fracaso o mayores esfuerzos en alcanzar estándares de la industria. Con esta tesis se quiere proporcionar al ámbito académico universitario de un framework para la ejecución de proyectos de construcción de software, (esfuerzo similar en otras latitudes: Canadá 7 y la República Bolivariana de Venezuela 8 ), empleando las mejores prácticas de desarrollo de software y de gerencia de proyectos, que permita en las diferentes prácticas, tesis y trabajos universitarios generar software con todos sus entregables, actividades, roles y prácticas de calidad, guardando las proporciones y características del entorno, y buscando de una forma sistemática y contextualizada una apropiación del Proceso Software de parte de los estudiantes. 6.1 ANTECEDENTES La mayoría de los estudiantes universitarios tienen por lo general muy poca idea sobre lo que significa un proyecto, ven cualquier proyecto de software como un montón de programación - en su mayoría por la noche -, con un gran heroísmo en 7 Pierre N. Robillard, Philippe Kruchten, Patrick d'astous, "YOOPEEDOO (UPEDU): A Process for Teaching Software Process," cseet, pp.18, 14th Conference on Software Engineering Education and Training, CENTRO NACIONAL DE TECNOLOGÍAS DE INFORMACIÓN. Metodología de la red nacional de integración y desarrollo de software libre (MeRinde): Guía detallada. (Citada: 16 de Junio. 2012) < > 21
22 depuración y su experiencia máxima en equipos de trabajo, consiste en tratar con 3 ó 4 compañeros de trabajo. 9 Bajo este escenario y la experiencia docente en espacios universitarios (en ingeniería de software y gestión de proyectos informáticos) de estos últimos 8 años, se concluye que las prácticas académicas, proyectos de curso, las tesis del ciclo de pregrado y postgrado, proyectos de investigación relacionados con el desarrollo de software se realizan en general, sin un proceso formal que cuente con una metodología definida y clara que incorpore las mejores prácticas de la industria. Basado en la bibliografía y en mi experiencia profesional como docente en pregrados y especializaciones de ingeniería de sistemas, en las materias de ingeniería de software, y gestión de proyectos informáticos en las Universidades de Eafit y Medellín de la ciudad de Medellín, y confirmado por La recepción y asignación de los trabajos por parte de los profesores cuenta actualmente con las siguientes características: No se trabaja de forma estandarizada (en la misma o diferentes asignaturas) En materias donde existe desarrollo de software o componentes de software, los entregables esperados son diferentes en esas asignaturas y en muy pocos casos se solicitan evidencias de un proceso de software organizado. En muchos casos lo único que interesa resultado y no el proceso de obtenerlo Kruchten, P. (2011). Experience teaching software project management in both industrial and academic settings th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T), doi: /cseet Bernhart, M., Grechenig, T., Hetzl, J., & Zuser, W. (2006). Dimensions of software engineering course design. Proceeding of the 28th international conference on Software engineering - ICSE 06, 667. doi: /
23 Existen esfuerzos aislados de diferentes profesores para inculcar buenas prácticas de desarrollo de software pero no es un trabajo coordinado por todo el Departamento/Carrera/Equipo. Existen casos de profesores que enseñan solo su mundo sin mirar donde se encuentra la industria y el mercado local. De igual forma, desde el punto de vista de los estudiantes, los componentes de software, módulos y/o sistemas producidos por ellos cuentan con las siguientes características: Los estudiantes construyen software de la forma que creen o les dicen sus compañeros. Se emplean los artefactos y prácticas que les obligan unos profesores en unas materias pero dejan de ser empleadas al cambiar de asignatura. Los futuros ingenieros de sistemas aprenden a desarrollar software por voz a voz y no saben cuál es la mejor forma de hacerlo. A los estudiantes les importa solo el resultado, sin percibir lo importante de tener un buen proceso. 11 Los estudiantes desarrollan software de forma heroica y no organizada. 12 Los estudiantes por lo general no perciben el desarrollo de software como un ejercicio social, que involucra interacciones entre muchos interesados. 13 El proceso de software no se adhiere a su ADN de estudiantes Kruchten, P. (2011). Experience teaching software project management in both industrial and academic settings th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T), doi: /cseet Íbidem. 13 van der Duim, L., Andersson, J., & Sinnema, M. (2007). Good Practices for Educational Software Engineering Projects. 29th International Conference on Software Engineering (ICSE 07), doi: /icse
24 Debido a lo anteriormente expuesto tanto por parte de profesores y alumnos, se están presentando los siguientes hechos: No se cuenta con un esquema formal de trabajo coherente que sea visualizado por los alumnos, con el cual identifiquen cómo asumir las mejores prácticas para llevar a cabo un proyecto de software exitoso. No existe uniformidad en los entregables producidos, tanto en la documentación funcional como en la técnica. Carencia de documentación de soporte al ciclo de vida en los proyectos académicos de software. Para las materias diferentes a Ingeniería de Software no hay un esquema de control en el cual se asegure que se están adoptando las mejores prácticas de la industria. 15 La evaluación de los trabajos académicos se concentra fundamentalmente en los resultados (producto de software) dejando de lado el proceso realizado y los roles involucrados (dicha evaluación debería contar con un componente de proceso, por ejemplo: repositorio, documentación, pruebas unitarias, pruebas funcionales, etc.) 16 Falta de uniformidad de criterios para construir y gestionar proyectos de software en las asignaturas que los incluyen. 14 Bernhart, M., Grechenig, T., Hetzl, J., & Zuser, W. (2006). Dimensions of software engineering course design. Proceeding of the 28th international conference on Software engineering - ICSE 06, 667. doi: / Kruchten, P. (2011). Experience teaching software project management in both industrial and academic settings th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T), doi: /cseet van der Duim, L., Andersson, J., & Sinnema, M. (2007). Good Practices for Educational Software Engineering Projects. 29th International Conference on Software Engineering (ICSE 07), doi: /icse
25 Los frameworks metodológicos son conocidos por los estudiantes como una referencia cognitiva, mas estos no son concebidos como una herramienta clave del desempeño y éxito profesional. 17 Ausencia de una metodología formal de desarrollo de los proyectos de software en los cursos relacionados con Programación o Construcción de Software. Desconocimiento de tipificación de proyectos para la construcción de software, que permita adaptar la metodología a los diferentes tipos de proyectos. Falta de uniformidad de criterios para construir y gestionar proyectos de software en las asignaturas que los incluyen. 18 No se cuenta con un esquema formal de trabajo coherente, que sea visualizado por los alumnos, con el cual identifiquen cómo asumir las mejores prácticas para llevar a cabo un proyecto de software exitoso. 19 Existe poca o pobre adopción de las mejores prácticas de la industria de software por parte de los alumnos que están realizando sus diferentes prácticas académicas Pierre N. Robillard, Philippe Kruchten, Patrick d'astous, "YOOPEEDOO (UPEDU): A Process for Teaching Software Process," cseet, pp.18, 14th Conference on Software Engineering Education and Training, Tremblay, G., Malenfant, B., Salah, A., & Zentilli, P. (2007). Introducing Students to Professional Software Construction : A Software Construction and Maintenance Course and its Maintenance Corpus, Pierre N. Robillard, Philippe Kruchten, Patrick d'astous, "YOOPEEDOO (UPEDU): A Process for Teaching Software Process," cseet, pp.18, 14th Conference on Software Engineering Education and Training, Bernhart, M., Grechenig, T., Hetzl, J., & Zuser, W. (2006). Dimensions of software engineering course design. Proceeding of the 28th international conference on Software engineering - ICSE 06, 667. doi: /
26 La adopción voluntaria y sin seguimiento de buenas prácticas de Ingeniería de Software por parte de los estudiantes, se convierte en un factor de fricción en la productividad, debido a que al llegar al mundo laboral, requieren largos periodos de entrenamiento e inversiones de parte del empleador, que debieron haber sido realizadas y suplidas en el ciclo de formación profesional. Los emprendimientos realizados por los estudiantes están viciados por errores metodológicos que influencian de forma directa y posiblemente negativa el éxito de la iniciativa Ante estos hechos y falencias, se busca con este trabajo, proporcionar al elementos académicos y didácticos para una absorción en el ADN del estudiante de un buen Proceso Software como la mejor manera de encarar los proyectos. Y así lograr que sea intrínseco para el futuro ingeniero el conocimiento y uso del proceso, la forma de adaptarlo y de emplearlo, y en consecuencia, lograr el dominio de uno de los vértices del triángulo garantiza un buen producto software. (Un buen producto o servicio depende de tres variables: procesos, personas y herramientas) CHRISSIS, Mary Beth, KONRAD, Mike y SHRUM, Sandy. CMMI: Guidelines for Process Integration and Product Improvement. Second Edition. Boston, MA: Pearson Education, Inc.,
27 Figura 1: Vértices que garantizan un buen producto o servicio. (Gráfica adaptada 22 ) Personas Herramientas Procesos Se evidencia una necesidad de dar formalidad, uniformidad y coherencia al proceso de desarrollo de soluciones de software elaboradas en escenarios académicos, similar a los esfuerzos hechos en el 2005 y 2006 en la materias de Ingeniería de Software, Taller de Ingeniería de Software en Eafit, o los realizados por la École Polytechnique de Montréal con UPEDU 23 (el cual apoya la enseñanza de cursos de ingeniería de software, más no a la construcción de todo tipo de software dentro de los diferentes escenarios académicos), o el Gobierno Bolivariano de Venezuela con el Framework de MeRinde 24 (el cual acota como audiencia a cualquier persona implicada en el proceso de desarrollo de software que se lleva a cabo en el Centro Nacional de Tecnologías de Información (CNTI) de la República Bolivariana de Venezuela 22 Ibidem. 23 Pierre N. Robillard, Philippe Kruchten, Patrick d'astous, "YOOPEEDOO (UPEDU): A Process for Teaching Software Process," cseet, pp.18, 14th Conference on Software Engineering Education and Training, CENTRO NACIONAL DE TECNOLOGÍAS DE INFORMACIÓN. Metodología de la red nacional de integración y desarrollo de software libre (MeRinde): Guía detallada. (Citada: 16 de Junio. 2012) < > 27
28 - y también a cualquier individuo, comunidad u organización interesada 25 no se encuentra diseñado con roles, y entregables específicos para el ámbito académico universitario.) permitiendo que tanto profesores y alumnos perciban un proceso estructurado y coherente, para llevar a cabo proyectos de software basándose en las mejores prácticas de la industria y de esa forma lograr una apropiación del conocimiento (tan largo como ancho pues implican gran cantidad de disciplinas, especialidades y técnicas como lo expresa el SWEBOK ) y del proceso por continuo uso (tanto de estudiantes, como profesores y demás involucrados), de forma que este conocimiento del área de Ingeniería de Software redunde en beneficio para la Ingeniería de Sistemas y la Industria de Software en general. Por lo tanto, este trabajo pretende ser apoyo en la consecución de una industria de software local madura con mejores ingenieros, apoyar la formación de ingenieros con insumos lo mas similares posibles al mundo industrial 28, un empresarismo con bases sólidas y con menores tiempos en ciclos de certificación en estándares internacionales, pues busca la asimilación de un proceso software por parte de los estudiantes como uno de los elementos clave en la construcción de soluciones informáticas, para luego replicarlo con éxito en el ámbito profesional. 25 Íbidem 26 Bernhart, M., Grechenig, T., Hetzl, J., & Zuser, W. (2006). Dimensions of software engineering course design. Proceeding of the 28th international conference on Software engineering - ICSE 06, 667. doi: / Abran, A., and Moore, J. W., Guide to the Software Engineering Body of Knowledge: 2004 Edition - SWEBOK, IEEE, Bernhart, M., Grechenig, T., Hetzl, J., & Zuser, W. (2006). Dimensions of software engineering course design. Proceeding of the 28th international conference on Software engineering - ICSE 06, 667. doi: /
29 6.2 Objetivos Objetivo General Construir un framework metodológico para la ejecución de proyectos académicos que involucren el desarrollo de software, tomando como referentes RUP, PMBoK y CMMI DEV 1.3 y prácticas de metodologías ágiles Objetivos Específicos Identificar y tipificar diferentes tipos de proyectos académicos que apoyen tanto la construcción de software en materias de ingeniería de software como en otras que requieran de la construcción del mismo para validar conceptos, de forma que se apoye tanto de forma intersemestral como semestral la construcción de software en las carreras de ingeniería de sistemas, ingeniería informática, ciencias de la computación y afines en el Valle de Aburrá (Antioquia Colombia). Definir los procesos, flujos de trabajo, roles, entregables, actividades, para las diferentes disciplinas de Ingeniería de Software en la ejecución de proyectos académicos que involucren la construcción o el desarrollo de soluciones de software. Desarrollar un sitio web navegable con el framework propuesto. Validar la pertinencia del framework en cursos relacionados con Ingeniería de Software. 29
30 7. MARCO TEÓRICO La Ingeniería de Software ha evolucionado hacia modelos que permiten conocer e implementar la madurez de las organizaciones para desarrollar software CMMi, SPICE, TSP, PSP; de igual forma se han generado grandes bases de conocimiento, como lo son RUP, SWEBoK, MSF, XP, OpenUP, entre otros, donde se consigna desde la mejor forma de construir y gestionar proyectos de software. Esfuerzos como el de la École Polytechnique de Montréal, con un sitio web adaptado de RUP en el que presenta a sus estudiantes una forma de aproximarse al desarrollo de software desde el Proceso Unificado de Desarrollo, orientado a soportar su curso de ingeniería de software de 4 año 29. Otras iniciativas como la del Gobierno Bolivariano de Venezuela, con la Metodología de la Red Nacional de Integración y Desarrollo de Software Libre (MeRinde) 30 en donde presentan una adaptación del Proceso Unificado de Software para el Desarrollo de Software libre en su país, teniendo como audiencia a cualquier persona implicada en el proceso de desarrollo de software que se lleva a cabo en el Centro Nacional de Tecnologías de Información (CNTI) de la República Bolivariana de Venezuela - y también a cualquier individuo, comunidad u organización interesada, teniendo de esta forma una orientación estrictamente industrial, mas no enfocado a proyectos de software dentro de los ámbitos académicos. Cabe anotar, que ninguna de estas dos propuestas tienen características de adaptabilidad, limitando su implementación 29 Pierre N. Robillard, Philippe Kruchten, Patrick d'astous, "YOOPEEDOO (UPEDU): A Process for Teaching Software Process," cseet, pp.18, 14th Conference on Software Engineering Education and Training, CENTRO NACIONAL DE TECNOLOGÍAS DE INFORMACIÓN. Metodología de la red nacional de integración y desarrollo de software libre (MeRinde): Guía detallada. (Citada: 16 de Junio. 2012) < > 30
31 solo para un tipo específico de proyecto, dejando escenarios de trabajo sin cubrir, siendo esta su principal debilidad, adicional a las del entorno para el cual fueron desarrollados y el no reflejar las buenas prácticas de Gestión de proyectos proporcionadas por el PMI (Project Management Institute) en PMBoK (Cuerpo de conocimiento de la Gerencia de proyectos, o en Inglés, Project Management Body of Knowledge). Se presentará la construcción de un marco de trabajo metodológico para el entorno académico, donde se han considerado los 4 pilares que están impactando y orientando la industria de software nacional y constituyen una tendencia mundial: Proceso Unificado de Desarrollo de Software: El cual no es sólo una metodología de desarrollo de software adaptable y comprensible, basada en el desarrollo iterativo e incremental, sino que constituye una base de conocimiento de las mejores prácticas de la industria, realizado por los expertos de IBM, que se mantiene en constante evolución y mantenimiento. Capability Maturity Model Integration DEV v.1.3: Constituye un modelo de referencia para la adopción de buenas prácticas de Ingeniería de Software en el área de construcción de software. Project Management Body of Knowledge: El cual es el compendio de las mejores prácticas para la gestión de cualquier tipo de proyectos y cuenta con bastante aceptación por parte de la industria del software. Metodologías ágiles: Basados en el manifiesto ágil se han desarrollado, mejorado, y adaptado metodologías de desarrollo de software que permiten a los equipos construir software de alta calidad con una inversión de esfuerzo 31
32 bajo pero con una mejora la adopción de mejores prácticas de ingeniería de software. Con estos pilares se desarrolló una metodología adaptable a los diferentes tipos de proyectos a los que se ven avocados los estudiantes en su ciclo de formación, y que cuente con las mejores prácticas de la industria. A continuación se profundizará en los conceptos básicos de cada uno de ellos. 7.1 Proceso Unificado de Rational El Proceso Unificado de Rational, Rational Unified Process en Inglés, habitualmente resumido como RUP, es un proceso de desarrollo de software y junto con El Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos. El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologías adaptables al contexto y necesidades de cada organización. También se conoce por este nombre al software desarrollado por Rational, hoy propiedad de IBM, el cual incluye información entrelazada de diversos artefactos y descripciones de las diversas actividades. Está incluido en el Rational Method Composer (RMC), que permite la personalización de RUP (roles, entregables, flujos de procesos, etc.), de acuerdo con las necesidades, y desplegar un sitio web el cual pueda ser navegable y asequible por todos en la organización Principios de desarrollo El RUP está basado en 6 principios clave, que son: 32
33 Adaptar el proceso: El proceso deberá adaptarse a las características propias del proyecto u organización. Equilibrar prioridades: Los requisitos de los diversos participantes pueden ser diferentes, contradictorios o disputarse recursos limitados. Debe encontrarse un equilibrio que satisfaga los deseos de todos. Gracias a este equilibrio se podrán corregir desacuerdos que surjan en el futuro. Demostrar valor iterativamente: Los proyectos se entregan, aunque sea de un modo interno, en etapas iteradas. En cada iteración se analiza la opinión de los inversores, la estabilidad y calidad del producto, y se refina la dirección del proyecto, así como también los riesgos involucrados. Colaboración entre equipos: El desarrollo de software no lo hace una única persona sino múltiples equipos. Debe haber una comunicación fluida para coordinar requisitos, desarrollo, evaluaciones, planes, resultados, etc. Elevar el nivel de abstracción: Este principio dominante motiva el uso de conceptos reutilizables, tales como patrones de software, lenguajes 4GL o marcos de referencia (frameworks), por nombrar algunos. Esto evita que los Ingenieros de Software vayan directamente de los requisitos a la codificación de software a la medida del cliente, sin saber con certeza qué codificar para satisfacer de la mejor manera los requisitos y sin comenzar desde un principio pensando en la reutilización del código. Un alto nivel de abstracción también permite discusiones sobre diversos niveles y soluciones arquitectónicas. Éstas se pueden acompañar por las representaciones visuales de la arquitectura, por ejemplo, con el lenguaje UML. 33
34 Enfocarse en la calidad: El control de calidad no debe realizarse al final de cada iteración, sino en todos los aspectos de la producción, implicando que el aseguramiento de la calidad forme parte del proceso de desarrollo y no de un grupo independiente al proyecto Ciclo de vida En la metodología RUP, el ciclo de vida de un proyecto se ve gobernado por cuatro fases: Inicio, Elaboración, Construcción y Transición; como se indica en el siguiente esquema (Ver Figura 2: Fases del ciclo de vida del Proceso de Desarrollo de Software de RUP): Figura 2: Fases del ciclo de vida del Proceso de Desarrollo de Software de RUP 31 El ciclo de vida del proceso de desarrollo de software desde la perspectiva de Administración del Proyecto se descompone en el tiempo en cuatro fases, que concluyen cada una con un hito. La finalización de cada una de las fases permite 31 IBM. IBM Rational Unified Process (RUP) para proyectos pequeños [en línea]. (Citada: 16 de Junio 2012) < materials/welcome_2bc5187f.html> 34
35 valorar y aprobar el cumplimiento de los objetivos de dicha fase para continuar con la siguiente. Estas fases se convierten en los indicadores del progreso del proyecto; las fases se detallan a continuación Fase de Concepción. Objetivos: Especificar la visión final del producto y sus casos de negocios. Afinar el alcance del proyecto Establecer los servicios de negocio a desarrollar Fase de Elaboración. Objetivos: Definir la arquitectura del sistema Definir y especificar los servicios Definir la interfaz gráfica del usuario Fase de Construcción. Objetivos: Construir el producto, evolucionando la visión del negocio, la arquitectura y los planes hasta que el producto toda la visión esté listo para transferencia a la comunidad de usuarios. Desarrollar los servicios, casos de uso (funcionalidades), módulos, subsistemas del proyecto. Realizar desarrollo por iteraciones, priorizando los servicios, casos de uso, módulos y/o subsistemas más críticos para el negocio. Realizar pruebas funcionales de cada uno de los servicios, casos de uso, módulos y/o subsistemas, a medida que se vayan desarrollando. 35
36 Fase de Transición. Objetivos: Lograr la transición producto software a la comunidad de usuarios la cual incluye: manufactura, entrega, entrenamiento, soporte, mantenimiento del producto Disciplinas del ciclo de vida del software Para llevar a cabo exitosamente cada una de las iteraciones definidas en las fases, se aplican las disciplinas del ciclo de vida del software: Figura 3: Proceso Unificado de Desarrollo de Software de IBM RATIONAL IBM. IBM Rational Unified Process (RUP) para proyectos pequeños [en línea]. (Citada: 16 de Junio. 2012) < materials/welcome_2bc5187f.html> 36
37 A continuación se explica cómo serán enfocadas las disciplinas que serán usadas en el proyecto y su alcance. Modelado de negocio El propósito de esta disciplina es entender el negocio, principalmente la parte de la organización (procesos, roles, cargos) que interactuarán y/o serán afectados por la presencia del futuro sistema. Su alcance es: Identificar los problemas y posibilidades de mejora en la organización que contará con el sistema. Evaluar el impacto del cambio organizacional. Asegurar que los clientes, usuarios, desarrolladores, y otras partes tienen una comprensión común de la organización. Obtener los requisitos del sistema de software necesarios para apoyar la organización en la que estará inmerso el sistema. Entender cómo encaja en la organización el sistema de software a ser desplegado. Gestión de requisitos. El propósito de la disciplina de Gestión de Requisitos es entender el problema actual en el proyecto e identificar mejoras potenciales, evaluar el impacto de los cambios en la organización, asegurando que todos los interesados en el proyecto manejen un lenguaje unificado para listar los Requisitos. Adicionalmente, establece entre todos los interesados un acuerdo frente a lo que el sistema pueda hacer y a su vez define el alcance total del sistema. 37
38 Su alcance es: Establecer y mantener un acuerdo sobre cuál es la funcionalidad esperada. Entregar a los desarrolladores una descripción clara de los requisitos del sistema. Definir los límites del sistema. Definir el Look and Feel de la aplicación. Proveer la base para la creación del plan de iteraciones, la estimación de costos y esfuerzos. Análisis y diseño. El propósito de la disciplina de Análisis y Diseño es transformar los requisitos de negocio en especificaciones de software, detallar y probar la arquitectura de la solución. Su alcance es: Transformar los requisitos en el diseño del sistema a implementar. Definir una arquitectura robusta para el sistema. Entregar a los desarrolladores una especificación clara de los requisitos del sistema. Adaptar el diseño al ambiente de implementación. Implementación. El propósito de la disciplina de Implementación es codificar o configurar los componentes de software que conforman la solución para ensamblarlos y desplegarlos en unidades totalmente funcionales. Su alcance es: Implementar la solución en términos de creación, codificación y personalización de componentes. 38
39 Definir la organización de componentes como subsistemas o módulos. Probar los componentes como unidades aisladas. Liberar módulos totalmente funcionales. Pruebas. El propósito de la disciplina de Pruebas es evaluar y determinar la calidad del producto. Su alcance es: Buscar y documentar defectos encontrados en el software. Determinar la calidad del software. Validar la especificación de los requisitos frente al sistema liberado. Validar el Diseño y Arquitectura del producto de software. Validar la implementación de los requisitos. Asegurar que todos los defectos fueron corregidos antes de desplegar el producto. Asegurar la correcta ejecución del proceso de desarrollo. Despliegue. El propósito de la disciplina de Despliegue es asegurar que el producto quede disponible para su uso por parte de los usuarios finales del proyecto. Su alcance es: Especificar la instalación del producto. Probar la instalación del producto. Crear el material para consulta y capacitación del usuario. Validar el diseño del producto de software. Asegurar la implementación de los requisitos suplementarios (requisitos no funcionales). 39
40 Entregar el producto funcionando al usuario. Gestión de la configuración y el cambio (disciplina de apoyo). El propósito de la disciplina Gestión de la configuración y el cambio es la definición y conducción de los artefactos que deben ser controlados, dado su alto nivel de interacción dentro del proyecto. Su alcance es: Controlar los cambios a los requisitos. Controlar los cambios a los artefactos. Mantener la integridad de los artefactos. Versionar los artefactos. Permitir conocer el estado de un artefacto. Gestión del Proyecto. El propósito de la disciplina Gestión del Proyecto es proveer un marco de planeación, ejecución, coordinación y control de todas las actividades que hacen parte del proyecto, además de unificar los canales de comunicación dentro del proyecto. Su alcance es: Proveer un framework para proyectos de implementación y desarrollo de software. Proveer prácticas para la planeación, ejecución y monitoreo de proyectos. Proveer un framework para el manejo de riesgos. Gestión del Ambiente. 40
41 El propósito de la disciplina de Gestión del Ambiente es proveer el soporte necesario para la implementación, describiendo los ambientes, las herramientas y la logística para facilitar la ejecución del proyecto. Su alcance es: Proveer la infraestructura (hardware, software y comunicaciones) para la implementación. Proveer las actividades, los artefactos y los lineamientos necesarios para el soporte del proceso Elementos de RUP en el framework propuesto Los elementos de RUP en el framework propuesto se encuentran presentados en el capítulo Principios adoptados. 7.2 Capability Maturity Model Integration (CMMi) CMMI (Capability Maturity Model Integration) es un enfoque de mejora de procesos que proporciona a las organizaciones los elementos esenciales de procesos efectivos, lo que mejorará su rendimiento en tres diferentes aspectos: Servicios, Adquisiciones y Desarrollo de software. Los modelos de CMMI son colecciones de las mejores prácticas que ayudan a las organizaciones para mejorar drásticamente la eficacia, eficiencia y calidad. Las mejores prácticas CMMI se publican en los documentos llamados modelos. En la actualidad hay tres áreas de interés cubiertas por los modelos de CMMI: Desarrollo, Adquisición y Servicios. 41
42 La versión actual de CMMI es la versión 1.3. Hay tres constelaciones de la versión 1.3 disponible: CMMI para el Desarrollo (CMMI DEV o CMMI for Development), En él se tratan procesos de desarrollo de productos y servicios. CMMI para la Adquisición (CMMI ACQ o CMMI for Acquisition). En él se tratan la gestión de la cadena de suministro, adquisición y contratación externa en los procesos del gobierno y la industria. CMMI para Servicios (CMMI SVC o CMMI for Services), está diseñado para cubrir todas las actividades que requieren gestionar, establecer y entregar Servicios. Dentro de la constelación CMMI DEV, existen dos modelos: CMMI DEV CMMI DEV + IPPD (Integrated Product and Process Development) Independientemente de la constelación\modelo que opta una organización, las prácticas CMMI deben adaptarse a cada organización en función de sus objetivos de negocio Generalidades CMMI es la evolución de CMM. CMM Fue desarrollado desde 1987 hasta En 2002 se lanzó CMMI Version 1.1, luego en agosto de 2006 siguió la versión 1.2 y en el 2011 la versión 1.3. El objetivo del proyecto CMMI es mejorar la usabilidad de modelos de madurez, integrando varios modelos diferentes en un solo marco (framework). Fue creado por miembros de la industria, el gobierno y el SEI (Software Engineering Institute). Entre los principales patrocinadores se incluyen la Oficina del Secretario de Defensa (OSD) y la National Defense Industrial Association. 42
43 Se desarrolla sobre el principio de calidad de Jurán: "la calidad del resultado depende principalmente de la calidad de los procesos empleados en su desarrollo" 33. El Modelo tiene dos representaciones: Representación Continua (Continuous Representation) y Escalonada (Staged Representation): Figura 4. Representación continua del modelo CMMI SCRUM MANAGER. Glosario [en línea]. (Citada: 5 de Noviembre de 2012) < > 34 SOFTWARE ENGINEERING INSTITUTE. CMMI for Development, Version 1.3 CMMI-DEV, V1.3, (November). [en línea]. (Citada: 16 de Junio. 2012) < > 43
44 Figura 5. Representación escalonada del modelo CMMI 35 Cada organización puede optar por seleccionar el esquema que se adapte a sus características y prioridades de mejora. Existe una "equivalent stagging" el cual establece que un Nivel de Madurez equivale a tener un conjunto de PA s (Áreas de Proceso Process Area) un determinado para un Nivel de Capacidad asociado. La visión continua proporciona la representación de nivel de capacidad de cada una de las Áreas de Proceso del modelo. La visión escalonada definirá a la organización dándole en su conjunto un nivel de madurez del 1 al Ibid. 44
45 7.2.2 Componentes del modelo Figura 6. Componentes del Modelo CMMI 36 Área de proceso (Process Area PA): Conjunto de prácticas relacionadas que son ejecutadas de forma conjunta para conseguir un conjunto de objetivos. En CMMI las Áreas de Proceso son el pilar del modelo y constituyen el elemento clave para definir la madurez de una organización de software. Estas constituyen un grupo de prácticas relacionadas con un área de trabajo del modelo en donde se definen específicamente los deber ser de cada una de esas PA s. 36 SOFTWARE ENGINEERING INSTITUTE. CMMI for Development, Version 1.3 CMMI-DEV, V1.3, (November). [en línea]. (Citada: 16 de Junio. 2012) < > 45
46 El modelo CMMI v1.3 (CMMI DEV) contiene las siguientes 22 Áreas de Proceso: Análisis de Causas y Resolución (CAR) Gestión de la Configuración (CM) Análisis de Decisiones y Resolución (DAR) Gestión Integrada de Proyectos (IPM) Medición y Análisis (MA) Innovación y Despliegue Organizacionales(OID) Definición de Procesos Organizacionales (OPD) Enfoque Organizacional del Proceso (OPF) Rendimiento del Proceso Organizacional (OPP) Entrenamiento Organizacional (OT) Monitoreo y Control de Proyectos (PMC) Planificación de Proyectos (PP) Aseguramiento de Calidad de Procesos y Productos (PPQA) Integración de Producto (PI) Gestión Cuantitativa de Proyectos (QPM) Gestión de Requisitos (REQM) Desarrollo de Requisitos (RD) Gestión de Riesgos (RSKM) Gestión de Acuerdos con Proveedores (SAM) Solución Técnica (TS) Validación (VAL) Verificación (VER) Componentes Requeridos Objetivo genérico: Los objetivos genéricos asociados a un nivel de capacidad establecen lo que una organización debe alcanzar en ese nivel de capacidad. 46
47 El logro de cada uno de esos objetivos en un Área de Proceso significa mejorar el control en la ejecución del Área de Proceso. Objetivo específico: Los objetivos específicos se aplican a una única área de proceso y localizan las particularidades que describen qué se debe implementar para satisfacer el propósito del Área de Proceso. Componentes Esperados Práctica genérica: Una práctica genérica se aplica a cualquier Área de Proceso porque puede mejorar el funcionamiento y el control de cualquier proceso. Práctica específica: Una práctica específica es una actividad que se considera importante en la realización del objetivo específico al cual está asociado. Las prácticas específicas describen las actividades esperadas para lograr la meta específica de un Área de Proceso. Componentes Informativos Propósito Notas introductorias Nombres Tablas de relaciones práctica objetivo Prácticas Productos típicos Sub prácticas: Una sub práctica es una descripción detallada que sirve como guía para la interpretación de una práctica genérica o específica. 47
48 Ampliaciones de disciplina: Las ampliaciones contienen información relevante de una disciplina particular y relacionada con una práctica específica. Elaboraciones de prácticas genéricas: Una elaboración de una práctica genérica es una guía de cómo la práctica genérica debe aplicarse al Área de Proceso Capacidad y Madurez La capacidad del proceso es la habilidad inherente de un proceso para producir los resultados planeados. El principal objetivo de un proceso de software maduro es el de producir productos de calidad que cumplan los requisitos del usuario. Cuando se habla de madurez del proceso se entiende como el crecimiento alcanzado en la capacidad del proceso de software, y se considera como una actividad de largo plazo. En una compañía de software inmadura, el proceso de software es generalmente improvisado, no existen planes rigurosos, sus actividades se enfocan en resolver las crisis que se presentan, carecen de bases objetivas para evaluar la calidad de los productos o para resolver los problemas que se presentan. De manera contraria, cuando una organización alcanza cierto grado de madurez, posee una gran habilidad para administrar el proceso de desarrollo y mantenimiento de software, se hacen pruebas y análisis costo beneficio para mejorar el proceso, el director supervisa la calidad del producto y la satisfacción del cliente, se llevan registros, y todos las personas están involucradas en el proceso de desarrollo Niveles de Madurez (representación escalonada) El modelo CMMI consta de cinco niveles (representación escalonada), diseñados de manera que los niveles inferiores proveen las bases para el siguiente nivel, 48
49 logrando plasmar un avance progresivo hacia los siguientes niveles. Estas cinco etapas de desarrollo son conocidas como niveles de madurez (ver Figura 7. Niveles de Madurez), y cada uno la organización alcanza una capacidad superior del proceso. CMMI plantea que una organización puede ubicarse en alguno de los cinco posibles niveles de madurez, dependiendo del grado de perfección de sus procesos. Figura 7. Niveles de Madurez 37 Nivel de madurez Inicial: Nivel 1. Las organizaciones en este nivel no disponen de un proceso estable para el desarrollo y mantenimiento de software. Aunque se utilicen técnicas correctas de ingeniería, los esfuerzos se ven consumidos por falta de planificación y se dependen de esfuerzos heroicos y personales para lograr el éxito en un proyecto. A menudo se presentan fracasos y casi siempre retrasos y sobrecostos. El resultado de 37 LIDER DE PROYECTO. CMMI [en línea]. (Citada: 16 de Junio. 2012) < 49
50 los proyectos es impredecible. Este nivel no tiene asociadas Áreas de Proceso. Nivel de madurez Administrado: Nivel 2 (conocido también como proyecto administrado). En este nivel las organizaciones disponen de unas prácticas institucionalizadas de gestión de proyectos, existen unas métricas básicas y un razonable seguimiento de la calidad. La relación con subcontratistas y clientes está gestionada sistemáticamente. Las áreas de procesos asociadas con este nivel, son: o Medición y Análisis (MA) o Monitoreo y Control de Proyectos (PMC) o Planificación de Proyectos (PP) o Aseguramiento de Calidad de Procesos y Productos (PPQA) o Gestión de Requisitos (REQM) o Gestión de Acuerdos con Proveedores (SAM) o Gestión de la Configuración (CM) Nivel de madurez Definido: Nivel 3 (conocido también como proceso definido). El proceso de software se encuentra documentado, estandarizado e integrado en un proceso de software estándar dentro de la organización, para las actividades administrativas y técnicas. El grupo que trabaja en el proceso enfoca y guía sus esfuerzos al mejoramiento del proceso, facilita la introducción de técnicas y métodos, e informa a la gerencia el estado del proceso. La capacidad del proceso está basada en una amplia compresión, dentro de la organización, de las actividades, roles, y responsabilidades definidas en el proceso de software. Las Áreas de Procesos asociadas con este nivel, son: o Gestión Integrada de Proyectos (IPM) o Definición de Procesos Organizacionales (OPD) 50
51 o Enfoque Organizacional del Proceso (OPF) o Entrenamiento Organizacional (OT) o Integración de Producto (PI) o Desarrollo de Requisitos (RD) o Gestión de Riesgos (RSKM) o Solución Técnica (TS) o Validación (VAL) o Verificación (VER) o Análisis de Decisiones y Resolución (DAR) Nivel de madurez Administrado Cuantitativamente: Nivel 4. Se caracteriza porque las organizaciones disponen de un conjunto de métricas significativas de calidad y productividad, que se usan de modo sistemático para la toma de decisiones y la gestión de riesgos. El software resultante es de alta calidad. Las Áreas de Procesos asociadas con este nivel, son: o Rendimiento del Proceso Organizacional (OPP) o Gestión Cuantitativa de Proyectos (QPM) Nivel de madurez Optimizando: Nivel 5. La organización completa está volcada en la mejora continua de los procesos. Se hace uso intensivo de las métricas y se gestiona el proceso de innovación. Las Áreas de Procesos asociadas con este nivel, son: o Innovación y Despliegue Organizacionales(OID) o Análisis de Causas y Resolución (CAR) 51
52 Cada nivel de madurez, con excepción del inicial, se caracteriza por un conjunto de Áreas de Proceso que agrupan buenas prácticas, las cuales, al ser ejecutadas colectivamente, permiten cumplir con algún objetivo que es considerado importante para el modelo. En la Tabla 1. Niveles de madurez, Áreas de Proceso y Categorías de Áreas de Proceso, se ilustra las Áreas de Proceso en cada nivel de madurez, correspondientes a una categoría determinada, y se puede observar que antes de introducir prácticas de un nivel determinado, deben estabilizarse las prácticas del nivel anterior. 52
53 Tabla 1. Niveles de madurez, Áreas de Proceso y Categorías de Áreas de Proceso 38 Nivel Administración de Procesos 5 Innovación y Despliegue Organizacional (OID) 4 Rendimiento del Proceso Organizacional (OPP) 3 Enfoque Organizacional del Proceso (OPF) Gestión de Proyectos Ingeniería Soporte Gestión Cuantitativa de Proyectos (QPM) Gestión Integrada de Proyectos (IPM) Desarrollo de Requisitos (RD) Análisis de Causas y Resolución (CAR) Análisis de Decisiones y Resolución (DAR) Definición de Procesos Organizacionales (OPD) Entrenamiento Organizacional (OT) Gestión de Riesgos (RSKM) Solución Técnica (TS) Verificación (VER) Validación (VAL) 2 Planificación de Proyectos (PP) Monitoreo y Control de Proyectos (PMC) Integración de Producto (PI) Gestión de Requisitos (REQM) Gestión de Acuerdos con Proveedores (SAM) 1 NA NA NA NA Gestión de la Configuración (CM) Aseguramiento de Calidad de Procesos y Productos (PPQA) Medición y Análisis (MA) 38 Elaboración propia 53
54 Además de presentar las Áreas de Proceso por nivel de madurez, el modelo propone una vista alternativa (representación continua), en donde las PA s están agrupadas por categoría, estas categorías reciben el nombre de niveles de capacidad (ver Tabla 1. Niveles de madurez, Áreas de Proceso y Categorías de Áreas de Proceso) Niveles de Capacidad de los procesos (Representación Continua) Los 6 niveles definidos en CMMI para medir la capacidad de los procesos, son: 0. Incompleto: El proceso no se realiza, o no se consiguen sus objetivos. 1. Ejecutado: El proceso se ejecuta y se logra su objetivo. 2. Gestionado: Además de ejecutarse, el proceso se planifica, se revisa y se evalúa para comprobar que cumple los requisitos. 3. Definido: Además de ser un proceso gestionado, se ajusta a la política de procesos que existe en la organización, alineada con las directivas de la empresa. 4. Cuantitativamente gestionado: Además de ser un proceso definido, se controla utilizando técnicas cuantitativas. 5. Optimizando: Además de ser un proceso cuantitativamente gestionado, de forma sistemática se revisa y modifica o cambia para adaptarlo a los objetivos del negocio. Mejora continua. 54
55 Figura 8. Áreas de Proceso en la Representación Continua y nivel de capacidad (CL: Capability Level). 39 Por lo tanto, una organización en vez de decidirse por mejorar su capacidad por niveles de madurez en donde tiene que realizar un esfuerzo general por áreas por varias Áreas de Proceso al tiempo, puede elegir Áreas de Proceso en específico y mejorar por nivel de capacidad (CL: Capability Level) según su interés. En consecuencia, una organización orientada interesada en mejorar su Gestión de Proyectos, probablemente elija llevar las PA s de PP y PMC a un CL3 o superior Elementos de CMMi en el framework propuesto Los elementos de CMMi en el framework propuesto se encuentran presentados en el capítulo Principios adoptados. 39 SOFTWARE ENGINEERING INSTITUTE. CMMI for development, version 1.3 [en línea]. (Citada: 16 de Junio. 2012) < 55
56 7.3 Project Management Body Of Knowledge (PMBoK) La Guía del PMBOK es un estándar en la Administración de proyectos, desarrollado por el Project Management Institute (PMI). La misma comprende dos grandes secciones; la primera sobre los procesos y contextos de un proyecto, la segunda sobre las áreas de conocimiento específico para la gestión de un proyecto. En 1987, el PMI publicó la primera edición del PMBOK en un intento por documentar y estandarizar información y prácticas generalmente aceptadas en la Gestión de proyectos. Actualmente se encuentra en la cuarta edición, la cual provee de referencias básicas a cualquiera que esté interesado en la gestión de proyectos. Posee un léxico común y una estructura consistente para el campo de la gestión de proyectos. Consiste en una colección de procesos y áreas de conocimiento generalmente aceptadas como las mejores prácticas dentro de la Gestión de proyectos. El PMBOK es un estándar reconocido internacionalmente (IEEE Std ) que provee los fundamentos de la Gestión de proyectos que son aplicables a un amplio rango de proyectos, incluyendo construcción, software, ingeniería, entre otros. El 'PMBOK' reconoce cinco Grupos de procesos básicos: Inicio Planeación Ejecución Monitoreo y control Cierre Estos grupos de procesos se encuentran presentes en el desarrollo de un proyecto o fase del mismo. 56
57 Adicionalmente, cuenta con nueve Áreas de Conocimiento comunes a casi todos los proyectos: Gestión de la Integración Gestión del Alcance Gestión del Tiempo Gestión de la Calidad Gestión de Costos Gestión del Riesgo Gestión de Recursos Humanos Gestión de la Comunicación Gestión de las Compras y Adquisiciones Los procesos se traslapan e interactúan a través de un proyecto o fase y son descritos en términos de: Entradas (documentos, planes, diseños, etc.) Herramientas y Técnicas (mecanismos aplicados a las entradas) Salidas (documentos, productos, etc.). A continuación se explican los Grupos de proceso y las Áreas de conocimiento Grupos de procesos de la Gerencia de proyectos 57
58 Figura 9. Grupos de procesos de la Gerencia de proyectos Iniciación: Define el proyecto en sus aspectos principales, como tiempo, costo, alcance, riesgos, recursos, y autoriza el proyecto o una fase del mismo. 2. Planificación: Define, refina los objetivos y planifica el curso de acción requerido para lograr los objetivos y el alcance pretendido del proyecto. Se realiza la manufactura de los diferentes planes que servirán para administrar el proyecto. Está formado por veinte procesos. 40 PROJECT MANAGEMENT INSTITUTE. PMBoK (Project Management Body of Knowledge), version 4 [en línea]. (Citada: 16 de Junio. 2012) < Guide and Standards.aspx> 58
59 3. Ejecución: Compuesto por aquellos procesos realizados para completar el trabajo definido en el plan (plan de planes) a fin de cumplir con las especificaciones del mismo. Implica coordinar personas y recursos, así como integrar y realizar actividades del proyecto en conformidad con el plan para la dirección del proyecto. Está formado por ocho procesos. 4. Seguimiento y Control: Mide, supervisa y regula el progreso y desempeño del proyecto, para identificar áreas en las que el plan requiera cambios. Está formado por diez procesos. 5. Cierre: Formaliza la aceptación del producto, servicio o resultado, y termina ordenadamente el proyecto o una fase del mismo. Está formado por dos procesos Áreas de Conocimiento. 41 Las nueve Áreas del conocimiento mencionadas en el PMBOK, son: 1. Gestión de la Integración del Proyecto: Incluye los procesos y actividades necesarios para identificar, definir, combinar, unificar y coordinar los diversos procesos y actividades de la Gestión de proyectos dentro de los Grupos de procesos de Gestión de proyectos. La integración incluye características de unificación, consolidación, articulación, así como las acciones 41 PROJECT MANAGEMENT INSTITUTE. PMBoK (Project Management Body of Knowledge), version 4 [en línea]. (Citada: 16 de Junio. 2012) < Guide and Standards.aspx> 59
60 integradoras que son cruciales para la terminación del proyecto, la gestión exitosa de las expectativas de los interesados y el cumplimiento de los requisitos. Los procesos de Gestión de la Integración del Proyecto, incluyen: Desarrollar el Acta de Constitución del Proyecto: Desarrollar el documento que autoriza formalmente un proyecto o una fase y documentar los requisitos iniciales que satisfacen las necesidades y expectativas de los interesados. Desarrollar el Plan para la Dirección del Proyecto: Consiste en documentar las acciones necesarias para definir, preparar, integrar y coordinar todos los planes subsidiarios. El plan del proyecto es un plan de planes. Dirigir y Gestionar la Ejecución del Proyecto: Es el proceso que consiste en ejecutar el trabajo definido en el plan para la Gestión del proyecto para cumplir con los objetivos del mismo. Monitorear y Controlar el Trabajo del Proyecto: Es el proceso que consiste en monitorear, revisar y regular el avance a fin de cumplir con los objetivos de desempeño definidos en el plan para la Gestión del proyecto. Realizar el Control Integrado de Cambios: Es el proceso que consiste en revisar todas las solicitudes de cambios, aprobar los cambios y gestionar los cambios a los entregables, a los activos de los procesos de la organización, a los documentos del proyecto y al plan para la Gestión del proyecto. Cerrar Proyecto o Fase: Es el proceso que consiste en finalizar todas las actividades a través de todos los Grupos de procesos de Gestión de proyectos para completar formalmente el proyecto o una fase del mismo. 2. Gestión del Alcance del Proyecto: Incluye los procesos necesarios para garantizar que el proyecto incluya todo (y únicamente todo) el trabajo requerido para completarlo con éxito. El objetivo principal de la Gestión del Alcance del Proyecto es definir y controlar qué se 60
61 incluye y qué no se incluye en el proyecto. Los procesos de Gestión del Alcance del Proyecto incluyen: Recopilar Requisitos: Es el proceso que consiste en definir y documentar las necesidades de los interesados a fin de cumplir con los objetivos del proyecto. Definir el Alcance: Es el proceso que consiste en desarrollar una descripción detallada del proyecto y del producto. Crear la EDT: Es el proceso que consiste en subdividir los entregables y el trabajo del proyecto en componentes más pequeños y más fáciles de manejar. Verificar el Alcance: Es el proceso que consiste en formalizar la aceptación de los entregables del proyecto que se han completado. Controlar el Alcance: Es el proceso que consiste en monitorear el estado del alcance del proyecto y del producto, y en gestionar cambios a la línea base del alcance. 3. Gestión del Tiempo del Proyecto: Incluye los procesos requeridos para administrar la finalización del proyecto a tiempo. Los procesos de Gestión del Tiempo del Proyecto incluyen: Definir las Actividades: Consiste en identificar las acciones específicas a ser realizadas para elaborar los entregables del proyecto. Secuenciar las Actividades: Es el proceso que consiste en identificar y documentar las interrelaciones entre las actividades del proyecto apoyándose en diagramas de red u otras herramientas. Estimar los Recursos de las Actividades: Consiste en estimar el tipo y las cantidades de recursos, tanto humanos como físicos para ejecutar cada actividad. Estimar la Duración de las Actividades: Es el proceso que consiste en establecer aproximadamente la cantidad de períodos de trabajo necesarios para finalizar cada actividad con los recursos estimados. 61
62 Desarrollar el Cronograma: Consiste en analizar el orden de las actividades, su duración, los requisitos de recursos y las restricciones del cronograma para crear el cronograma del proyecto. Controlar el Cronograma: Es el proceso por el que se da seguimiento al estado del proyecto para actualizar el avance del mismo y gestionar cambios a la línea base del cronograma. 4. Gestión de los Costos del Proyecto: Incluye los procesos involucrados en estimar, presupuestar y controlar los costos, de modo que se complete el proyecto dentro del presupuesto aprobado. Los procesos de Gestión de los Costos del Proyecto incluyen: Estimar los Costos: Es el proceso que consiste en desarrollar una aproximación de los recursos financieros necesarios para completar las actividades del proyecto. Determinar el Presupuesto: Es el proceso que consiste en sumar los costos estimados de actividades individuales o paquetes de trabajo para establecer una línea base de costo autorizada. Controlar los Costos: Es el proceso que consiste en monitorear la situación del proyecto para actualizar el presupuesto del mismo y gestionar cambios a la línea base de costo. 5. Gestión de la Calidad del Proyecto: Incluye los procesos y actividades de la organización ejecutante que determinan responsabilidades, objetivos y políticas de calidad a fin de que el proyecto satisfaga las necesidades por la cuales fue emprendido. Implementa el sistema de gestión de calidad por medio de políticas y procedimientos, con actividades de mejora continua de los procesos llevados a cabo durante todo el proyecto, según corresponda. Los procesos de Gestión de la Calidad del Proyecto incluyen: 62
63 Planificar la Calidad: Es el proceso por el cual se identifican los requisitos de calidad y/o normas para el proyecto y el producto, documentando la manera como el proyecto demostrará el cumplimiento con los mismos. Realizar el Aseguramiento de Calidad: Es el proceso que consiste en auditar los requisitos de calidad y los resultados de las medidas de Control de calidad, para asegurar que se utilicen los estándares, procedimientos, las normas de calidad apropiadas y las definiciones operacionales. En este proceso se realizan las auditorias al proceso y su forma de ejecución Realizar el Control de Calidad: Es el proceso por el cual se monitorean y registran los resultados de la ejecución de actividades de Control de calidad, a fin de evaluar el desempeño y recomendar cambios necesarios. En este proceso se evalúa el producto. 6. Gestión de los Recursos Humanos del Proyecto: La Gestión de los Recursos Humanos del Proyecto incluye los procesos que organizan, gestionan y conducen el equipo del proyecto. El equipo del proyecto está conformado por aquellas personas a las que se les han asignado roles y responsabilidades para completar el proyecto. Los procesos de Gestión de los Recursos Humanos del Proyecto incluyen: Desarrollar el Plan de Recursos Humanos: Es el proceso por el cual se identifican y documentan los roles dentro de un proyecto, las responsabilidades, las habilidades requeridas y las relaciones de comunicación, y se crea el plan para la dirección de personal. Adquirir el Equipo del Proyecto: Es el proceso por el cual se confirman los recursos humanos disponibles y se forma el equipo necesario para completar las asignaciones del proyecto. 63
64 Desarrollar el Equipo del Proyecto: Es el proceso que consiste en mejorar las competencias, la interacción de los miembros del equipo y el ambiente general del equipo para lograr un mejor desempeño del proyecto. Dirigir el Equipo del Proyecto: Es el proceso que consiste en dar seguimiento al desempeño de los miembros del equipo, proporcionar retroalimentación, resolver problemas y gestionar cambios a fin de optimizar el desempeño del proyecto. 7. Gestión de las Comunicaciones del Proyecto: Incluye los procesos requeridos para garantizar que la generación, la recopilación, la distribución, el almacenamiento, la recuperación y la disposición final de la información del proyecto sean adecuados, oportunos y entregada a quien corresponda (interesados del proyecto o stakeholders). Los procesos de Gestión de los Recursos Humanos del Proyecto incluyen: Identificar a los Interesados: Es el proceso que consiste en identificar a todas las personas u organizaciones que reciben el impacto del proyecto, y en documentar información relevante relativa a sus intereses, participación e impacto en el éxito del proyecto. Planificar las Comunicaciones: Es el proceso para determinar las necesidades de información de los interesados en el proyecto y para definir cómo abordar las comunicaciones. Distribuir la Información: Es el proceso para poner la información relevante a disposición de los interesados en el proyecto, de acuerdo con el plan establecido. Gestionar las Expectativas de los Interesados: Es el proceso que consiste en comunicarse y trabajar en conjunto con los interesados para satisfacer sus necesidades y abordar los problemas conforme se presentan. 64
65 Informar el Desempeño: Es el proceso de recopilación y distribución de la información sobre el desempeño, incluidos los informes de estado, las mediciones del avance y las proyecciones. 8. Gestión de los Riesgos del Proyecto: Incluye los procesos relacionados con llevar a cabo la planificación de la gestión, identificación, el análisis, la planificación de respuesta a los riesgos, así como su monitoreo y control en un proyecto. Los objetivos de la Gestión de los Riesgos del Proyecto son aumentar la probabilidad y el impacto de eventos positivos, y disminuir la probabilidad y el impacto de eventos negativos para el proyecto. Los procesos de Gestión de los Riesgos del Proyecto incluyen: Planificar la Gestión de Riesgos: Es el proceso por el cual se define cómo realizar las actividades de gestión de los riesgos para un proyecto. Identificar los Riesgos: Es el proceso por el cual se determinan los riesgos que pueden afectar el proyecto y se documentan sus características. Realizar el Análisis Cualitativo de Riesgos: Es el proceso que consiste en priorizar los riesgos para realizar otros análisis o acciones posteriores, evaluando y combinando la probabilidad de ocurrencia y el impacto de dichos riesgos. Realizar el Análisis Cuantitativo de Riesgos: Es el proceso que consiste en analizar numéricamente el efecto de los riesgos identificados sobre los objetivos generales del proyecto. Planificar la Respuesta a los Riesgos: Es el proceso por el cual se desarrollan opciones y acciones para mejorar las oportunidades y reducir las amenazas a los objetivos del proyecto. Monitorear y Controlar los Riesgos: Es el proceso por el cual se implementan planes de respuesta a los riesgos, se rastrean los riesgos 65
66 identificados, se monitorean los riesgos residuales, se identifican nuevos riesgos y se evalúa el proceso de riesgos a través del proyecto. 9. Gestión de las Adquisiciones del Proyecto: La Gestión de las Adquisiciones del Proyecto incluye los procesos de compra o adquisición de los productos, servicios o resultados que es necesario obtener fuera del equipo del proyecto a fin de realizar el trabajo. La Gestión de las Adquisiciones del Proyecto incluye los procesos de gestión del contrato y de control de cambios necesarios para desarrollar y administrar contratos u órdenes de compra emitidas por miembros autorizados del equipo del proyecto. Los procesos de Gestión de las Adquisiciones del Proyecto incluyen: Planificar las Adquisiciones: Es el proceso de documentar las decisiones de compra para el proyecto; se especifica el enfoque y se identifican los posibles vendedores. Efectuar las Adquisiciones: Es el proceso de obtener respuestas de los vendedores, seleccionar un vendedor y adjudicar un contrato. Administrar las Adquisiciones: Es el proceso de gestionar las relaciones de adquisiciones, monitorear la ejecución de los contratos, y efectuar cambios y correcciones según sea necesario. Cerrar las Adquisiciones: Es el proceso de finalizar cada adquisición para el proyecto Relación entre los Grupos de procesos y las Áreas de conocimiento A continuación, en la Tabla 2 se presentan los procesos relacionados con cada una de las Áreas de conocimiento y Grupos de procesos: 66
67 Tabla 2. Correspondencia entre los Grupos de Procesos y las Áreas de Conocimiento de la Gestión de proyectos 42 Grupo de Procesos de Iniciación Grupo de Procesos de Planificación Grupo de Procesos de Ejecución Grupo de Procesos de Seguimiento y Control Grupo de Procesos de Cierre Gestión de la Integración del Proyecto Gestión del Alcance del Proyecto Desarrollar el Acta de Constitución del Proyecto Desarrollar el Plan para la Dirección del Proyecto Recopilar requisitos Definir el Alcance Dirigir y Gestionar la ejecución del Proyecto Monitorear y Controlar el trabajo del Proyecto Realizar el Control Integrado de Cambios Verificar el Alcance Controlar el Alcance Cerrar Proyecto o Fase Crear EDT Definir las actividades Secuenciar las actividades Gestión del Tiempo del Proyecto Estimar los Recursos de las Actividades Controlar el Cronograma Estimar la Duración de las Actividades Desarrollar el Cronograma Gestión de los Costos del Proyecto Estimar los Costos Controlar los Costos 42 PROJECT MANAGEMENT INSTITUTE. PMBoK (Project Management Body of Knowledge), version 4 [en línea]. (Citada: 16 de Junio. 2012) < Guide and Standards.aspx> 67
68 Grupo de Procesos de Iniciación Grupo de Procesos de Planificación Grupo de Procesos de Ejecución Grupo de Procesos de Seguimiento y Control Grupo de Procesos de Cierre Determinar el Presupuesto Gestión de la Calidad del Proyecto Gestión de los Recursos Humanos del Proyecto Gestión de las Comunicaciones del Proyecto Identificar a los Interesados Planificar la Calidad Desarrollar el Plan de Recursos Humanos Planificar las Comunicaciones Planificar la Gestión de Riesgos Realizar el Aseguramiento de Calidad Adquirir el Equipo del Proyecto Desarrollar el Equipo del Proyecto Dirigir el Equipo del Proyecto Distribuir la Información Gestionar las expectativas de los interesados Realizar el Control de Calidad Informar el Desempeño Gestión de los Riesgos del Proyecto Identificar los Riesgos Realizar el Análisis Cualitativo de Riesgos Realizar el Análisis Cuantitativo de Riesgos Monitorizar y Controlar los Riesgos Planificar la Respuesta a los riesgos Gestión de las Planificar las Efectuar las Administrar Cerrar las 68
69 Grupo de Procesos de Iniciación Grupo de Procesos de Planificación Grupo de Procesos de Ejecución Grupo de Procesos de Seguimiento y Control Grupo de Procesos de Cierre Adquisiciones del Proyecto Adquisiciones Adquisiciones las Adquisiciones Adquisiciones Elementos del PMBoK en el framework propuesto Los elementos del PMBoK en el framework propuesto se encuentran presentados en el capítulo Principios adoptados. 7.4 Desarrollo Ágil de Software El desarrollo ágil de software es un conjunto de métodos y metodologías de desarrollo de software basado en el ciclo de vida de desarrollo de software iterativo e incremental, donde las necesidades y soluciones evolucionan a través de la colaboración entre la auto-organización, equipos multi-funcionales. Promueve la planificación adaptativa, el desarrollo evolutivo, liberaciones útiles y progresivas, enfoque iterativo basado en la restricción del tiempo (timebox = se produce todo lo que más se pueda en una cantidad de tiempo finito, yendo en contraposición de desarrollar un alcance fijo en un tiempo limitado), y alienta rápida y respuesta flexible a los cambios. Las primeras definiciones de las metodologías ágiles se realizaron en la década de los 90 s como respuesta a las metodologías robustas y pesadas predominantes en esa época, con: Scrum (1995), Crystal Clear, Extreme Programming XP (1996), Adaptive Software Development, Feature Driven Development, and Dynamic Systems Development Method (DSDM) (1995); pero comienzan a tener fuerza 69
70 fuertemente con la proclamación de El Manifiesto Ágil 43 el cual se realizó en el El manifiesto Ágil En febrero de 2001, 17 desarrolladores de software se reunieron en el Snowbird, Utah localidad, para discutir los las metodologías ágiles de desarrollo. De esta reunión ellos publicaron el Manifiesto por el Desarrollo Ágil de Software (En inglés : Manifesto for Agile Software Development ), definiendo el enfoque ahora se conoce como desarrollo ágil de software. Algunos de los autores del Manifiesto formaron la Agile Alliance, una organización sin fines de lucro que promueve el desarrollo de software de acuerdo con los principios del Manifiesto. El Manifiesto Ágil reza así: Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A través de este trabajo hemos aprendido a valorar: Individuos e interacciones sobre procesos y herramientas Software funcionando sobre documentación extensiva Colaboración con el cliente sobre negociación contractual Respuesta ante el cambio sobre seguir un plan Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la izquierda. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron 43 Beck, Kent, et al. (2001). "Manifesto for Agile Software Development". Agile Alliance. (Citada: 21 de Junio de 2012) < 70
71 Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas 44 De igual forma bajo este manifiesto hay un compromiso a cumplir con los siguientes principios: 1. Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor. 2. Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente. 3. Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible. 4. Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto. 5. Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo. 6. El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara. 7. El software funcionando es la medida principal de progreso. 8. Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida. 9. La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad. 10. La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial. 44 Beck, Kent, et al. (2001). "Manifesto for Agile Software Development". Agile Alliance. (Citada: 21 de Junio de 2012) < 71
72 11. Las mejores arquitecturas, requisitos y diseños emergen de equipos autoorganizados. 12. A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia Características Hay muchas metodologías de desarrollo ágil. La mayoría de promueven el desarrollo, el trabajo en equipo, la colaboración y adaptabilidad en todo el proceso del ciclo de vida del proyecto, y la aceptación del cambio. Las iteraciones Otra de las características de las metodologías agiles es dividir las tareas en pequeños incrementos que impliquen un planificación mínima sin involucrar planeaciones a largo plazo. Iteraciones son de plazos cortos fijos (timeboxes) que típicamente duran de una a cuatro semanas. Cada iteración incluye un equipo interdisciplinario de trabajo, funcional en todas las disciplinas de ingeniería de software: planificación, análisis de requisitos, diseño, codificación, pruebas unitarias y pruebas de aceptación, y despliegue. Al final de la iteración un producto de trabajo se presenta a las partes interesadas. Esto minimiza el riesgo global del proyecto y permite adaptarse a los cambios con rapidez. Una iteración no puede adicionar suficiente funcionalidad para justificar una salida al mercado, pero la meta es tener una versión disponible (con un mínimo de errores) al final de cada iteración, la cual sea usable, testeable y valiosa para el cliente, en la que perciba un avance significativo. Múltiples iteraciones podrían ser necesarias para lanzar un producto o nuevas características. 45 Beck, Kent; et al. (2001). "Principles behind the Agile Manifesto". Agile Alliance. Archived from the original on 14 June Citada el 24 de octubre de < 72
73 El equipo y la colaboración La composición del equipo en un proyecto ágil suele ser multi-funcional y la autoorganización, sin considerar jerarquía o roles corporativos de los de los miembros del equipo. Los miembros del equipo deciden individualmente la forma de satisfacer las necesidades y tareas de una iteración. Las metodologías ágiles enfatizan en la comunicación cara a cara en lugar de documentos escritos (cuando el equipo se encuentra en el mismo lugar). La mayoría de los equipos ágiles trabajar en una sola oficina abierta, que facilita la comunicación. Tamaño del equipo suele ser pequeño (5-9 personas) para simplificar la comunicación del equipo y la colaboración en equipo. Grandes esfuerzos de desarrollo se pueden entregar por varios equipos de trabajo hacia un objetivo común o en diferentes partes de un esfuerzo. Esto puede requerir una coordinación de prioridades entre los equipos. El cliente Cada equipo ágil incluirá un representante del cliente. Esta persona es designada por las partes interesadas para que actúe en su nombre y hace un compromiso personal de estar disponible para los desarrolladores, para resolver todas las preguntas requeridas para finalizar la iteración. Al final de cada iteración, los interesados (todos los afectados por la existencia del proyecto, en especial el equipo desarrollador) y el representante del cliente revisan el progreso y reevalúan prioridades con miras optimizar el retorno de la inversión (ROI) y asegurar la alineación con las necesidades del cliente y los objetivos de la empresa. Reunión diaria Algunas metodologías ágiles emplean una reunión diaria cara a cara entre los miembros del equipo. Esto incluye específicamente el representante del cliente y los interesados. En esta breve sesión (de no más de 15 minutos y realizada de 73
74 pie), los miembros del equipo informarán mutuamente sobre lo que hicieron el día anterior, lo que van a hacer hoy, y cuáles son sus obstáculos tienen al momento. Esto ayuda a tener el equipo alineados con los objetivos y lograr compromisos de trabajo. En esta sesión no se resuelven temas técnicos, solo se habla tareas realizadas, tareas a realzar e inconvenientes para que el líder del proyecto se encargue de removerlos. Esta técnica hace parte de la metodología de SCRUM. La métrica del avance El desarrollo ágil de software enfatiza como la principal medida de progreso el software funcionando. Esto, combinado con la preferencia por la comunicación cara a cara, produce menos documentación escrita que otras metodologías. Las metodologías ágiles alientan a los interesados a dar prioridad a sus "necesidades", basándose exclusivamente en el valor que estas necesidades convertidas en funcionalidades le agregan al negocio. Algunas herramientas y técnicas Herramientas y técnicas específicas, tales como la integración continua, automatización de pruebas unitarias, programación por pares, el desarrollo basado en pruebas test-driven development), conocimiento y buen uso de patrones de diseño, diseño basado en el dominio (domain-driven design), refactorización de código, pruebas automatizadas de interfaz de usuario, desarrollo basado en comportamientos (behavior driven development) y otras técnicas se utilizan a menudo para mejorar la calidad y aumentar la agilidad del proyecto. Como lo menciona la página especializada en metodologías ágiles y lo esquematiza en Figura 10, existen múltiples prácticas 74
75 para realizar en un proyecto con sabor ágil THE AGILE CHECKLIST 46 checklist ágil), estas se presentan a continuación: (El Figura 10. The Agile Checklist 47 Las prácticas y sus momentos de uso se presentan en la Tabla VERSIONONE. The agile checklist [en línea]. (Citada: 21 de Junio de 2012) < Ver también < 47 VERSIONONE. Understand agile development methods with the agile development poster. [en línea]. (Citada: 21 de Junio de 2012) < 75
76 Tabla 3. Prácticas ágiles y su momento de uso (Elaboración Propia) Momento Prácticas Ágiles Prácticas continuas TDD Test Driven Development: Desarrollo Dirigido por las Pruebas. Integración Refactoring Colaboración entre el equipo Diarias Standup meeting Test de Aceptación Iteración Plan de iteración Revisión Reunión retrospectiva Release Backlog: Pila de trabajo Plan de release Estimación por parte del equipo Estrategia Visión Objetivos Carta de Inicio Aprobación de presupuesto Elementos de las metodologías ágiles en el framework propuesto Los elementos del las metodologías ágiles en el framework propuesto se encuentran presentados en el capítulo Prácticas adoptadas de las metodologías ágiles. 76
77 8. METODOLOGÍA DE TRABAJO Considerando el Proceso Software tal como lo cita Ruiz 48 es Un conjunto coherente de políticas, estructura organizacionales, tecnologías, procedimientos y artefactos que son necesarios para concebir, desarrollar, instalar y mantener un producto software. (Fugetta, 2000), para la construcción del framework metodológico se determinaron y consideraron estos diferentes elementos a definir y a configurar, para tal fin se realizaron las siguientes actividades: 1. Se eligió una herramienta para plasmar el framework 2. Se identificaron los tipos de proyectos a soportar y la forma de diferenciación 3. Se identificaron cuáles de las mejores prácticas disponibles en el marco teórico basado en RUP, PMBoK, CMMI, deberían quedar plasmadas en el framework. 4. Se identificaron unas prácticas ágiles a incluir en el framework. 5. Se creó la EDT de cada tipo de proyecto 6. Se identificaron y definieron los roles involucrados 7. Se identificaron los entregables / artefactos a generar 8. Se configuro la herramienta para soportar metodologías. 48 RUIZ, Francisco. Ingeniería de Procesos Software. [en línea]. (Citada: 17 de Junio de 2012) < 77
78 8.1 ELECCIÓN DE LA HERRAMIENTA EMPLEADA PARA LA PUBLICACIÓN DEL FRAMEWORK Al momento de elegir cuál herramienta era la más adecuada para cumplir con el objetivo específico, Desarrollar un sitio web navegable con el framework propuesto, se evaluaron las siguientes alternativas: Crear un sitio web de forma manual empleando una herramienta como Adobe Dreamweaver. Utilizar un administrador de contenido web (CMS Content Management System) Emplear herramientas específicas para Ingeniería de Software como: o Enterprise Architect de Sparxs Systems o Eclipse Process Framework o Rational Method Composer A continuación se presenta un cuadro comparativo de dichas herramientas. Como criterios de selección se escogieron los siguientes: Costo de licenciamiento: Corresponde a la necesidad de adquirir licencia del producto realizando compra de la misma, o si corresponde a alguna iniciativa de Open Source o freeware Orientación a Ingeniería de Software: En este criterio se evalúa si la herramienta fue concebida para soportar exclusivamente ingeniería de software, o cualquiera de sus procesos. Uso de estándares de la industria: En este criterio se evalúa si la herramienta fue concebida para cumplir con estándares de la industria de software. Orientación a estándares de Ingeniería de Software: Este criterio evalúa si la herramienta está cumpliendo con estándares de la ingeniería de software Facilidad de uso y necesidad de entrenamiento: Este criterio evalúa si la herramienta es fácil de usar y requiere entrenamiento para su empleo. 78
79 Tabla 4. Tabla comparativa de herramientas para publicación del framework (Elaboración Propia) Adobe Dreamweaver. Administrador web de contenido (CMS) Enterprise Architect de Sparxs Systems Eclipse Process Framework Composer Rational Method Composer Costo de Licenciamiento Orientación a Ingeniería de software Uso de estándares de la industria Orientación a estándares de Ingeniería de Software Sí No Sí No Algunos CMS lo son. No Sí No Facilidad de uso No, Requiere entrenami ento Sí (Dependie ndo del que se escoja) Sí Si Sí Sí Sí No Si Sí Sí Sí Si Si Sí Sí Sí Observaciones Ninguna Requiere de servidor de aplicaciones para ser usado Permite publicar procesos basados en el estándar SPEM 49 Diseñada específicamente para soportar SPEM Diseñada específicamente para soportar SPEM Dadas las condiciones académicas de esta tesis, enmarcadas en el propósito de libre distribución de este trabajo, adopción de estándares y ser una herramienta específicamente creada para este propósito, se elige el ECLIPSE PROCESS FRAMEWORK COMPOSER, en adelante EPF Composer, como la herramienta para la publicación del framework construido en esta tesis Características del EPF Composer. El editor EPF Composer, es una herramienta gratuita, desarrollada por la comunidad Eclipse, que sirve para crear y modificar contenido de métodos, 49 SPEM: (Software & Systems Process Engineering Metamodel Specification). Es un estándar creado por la OMG (Object Management Group) para documentar procesos de Ingeniería de Software. Actualmente se encuentra en la versión
80 procesos o metodologías, y generar automáticamente documentación adecuada en formato para la web. La dirección del proyecto es Es una herramienta para producir frameworks personalizables de procesos de Ingeniería de Software, que contiene además procesos ejemplo que soportan una gran cantidad de herramientas y proyectos con estilos diferentes de desarrollo. Como se explica en el sitio del proyecto ( la herramienta cuenta con dos objetivos primordiales 50 : Proporcionar un framework extensible con herramientas para la Ingeniería de procesos de software, - el método, la creación (autoría) de procesos, la gestión de bibliotecas, configuración y publicación de un proceso. Proporcionar el contenido de proceso de ejemplo y extensible para una amplia gama de procesos de desarrollos de software, soportando el desarrollo iterativo, ágil, incremental, y aplicable a un amplio conjunto de plataformas de desarrollo y aplicaciones. Por lo general, existen dos problemas clave que deben abordarse para implementar un proceso En primer lugar, los desarrolladores necesitan entender los métodos y las prácticas más importantes de desarrollo de software. En segundo lugar, los equipos de desarrollo necesitan definir cómo aplicar sus métodos de desarrollo y sus mejores prácticas, a lo largo del ciclo de vida de desarrollo. 50 ECLIPSE. Eclipse Process Framwork [en línea]. (Citada: 17 de Junio de 2012) < 80
81 El proyecto Eclipse Process Framework proporciona soluciones a problemas comunes que los equipos de desarrollo enfrentan en la creación y gestión de sus métodos y procesos 51. Por ejemplo: Los equipos de desarrollo necesitan un acceso fácil y centralizado a la información: por lo general, las organizaciones de desarrollo y en las universidades, no mantienen bases de datos centralizadas para sus prácticas y procesos. Por lo general, los procesos no está documentados en absoluto bajo una misma directriz, o están físicamente distribuidos en diferentes formatos de presentación. Los procesos necesitan desplegarse y accederse en las instalaciones donde se ejecutan los proyectos, para proporcionar la documentación del proceso, mientras que el trabajo se está realizando. Es difícil integrar procesos de desarrollo que se implementan en un formato propietario: cada libro y publicación presenta el contenido de método y el proceso utilizando un formato diferente. La falta de estándares ampliamente adoptados y conceptos claramente definidos para representar el contenido del método y los procesos hacen que sea difícil integrar los procesos de diferentes autores y tendencias académicas. Los equipos de trabajo que realizan software académico carecen de una base de conocimientos actualizada para capacitarse en métodos y mejores prácticas: antes de utilizar los procesos de desarrollo, los equipos deben ser entrenados. 51 HAUMER, Peter. Eclipse Process Framework Composer. Part 1: Key Concepts [en línea] (Citada: 17 de Junio de 2012). < 81
82 Los equipos de trabajo de proyectos académicos orientados a construcción de módulos, sistemas, proyectos de grado necesitan dimensionar correctamente sus procesos, dichos procesos deben adaptarse no sólo para un proyecto en particular, sino también continuamente durante todo el ciclo de vida del proyecto. EPF Composer ofrece los siguientes puntos clave: Creación de procesos con editores de estructura de desglose y diagramas de flujo de trabajo, utilizando editores de proceso de múltiple presentación, diferentes vistas del proceso, y sincronización de las vistas con los cambios que se realicen en los procesos. Reutilización de patrones de mejores prácticas, para un ágil ensamble de procesos con la facilidad de arrastrar y soltar. Seleccionar, combinar, adaptar y rápidamente ensamblar configuraciones de proceso a partir de contenidos de método, para los proyectos de desarrollo de una organización. Una estructura de gestión y apariencia común, para el contenido de una organización. Creación de métodos y procesos con contenidos enriquecidos, como texto, imágenes y multimedia, manteniendo la independencia de la arquitectura del proceso. Administración del contenido utilizando interfaces de usuario simples y editores de texto enriquecido para la creación de descripciones del contenido. 82
83 Múltiples vistas del contenido por medio de representaciones de texto y gráficas, y de editores que permiten el uso de estilos, imágenes, tablas, hipervínculos, y edición de HTML. Publicación de configuraciones de proceso utilizando diferentes formatos, como HTML y PDF Terminología y conceptos manejados en el EPF Composer Para un trabajo eficiente con el EPF Composer es necesario entender algunos conceptos que se utilizan para organizar el contenido. El principio más importante en EPF Composer es la separación, en dos dimensiones diferentes, del contenido del método y su aplicación en procesos. El contenido (Method Content) define lo que se va a producir, las habilidades que se necesitan, y las explicaciones paso a paso que describen cómo alcanzar los objetivos específicos de desarrollo. Las descripciones del contenido son independientes del ciclo de vida del desarrollo. Los procesos (Processes) describen el ciclo de vida de desarrollo. Los procesos toman los elementos de contenido y los relacionan en secuencias ordenadas que se adaptan a diferentes tipos de proyecto. 83
84 Figura 11. Contenido del método vs Proceso (en ejemplo en RUP) 52 En la Figura 11 se muestra un ejemplo de cómo esta separación se representa en la metodología RUP (Proceso Unificado de Rational, por sus siglas en Español). El contenido del método (Method Content) se clasifica en disciplinas, a lo largo del eje Y. El proceso (Process) representa el tiempo, a lo largo del eje X. Este es el ciclo de vida de un proyecto de desarrollo. EPF Composer permite que el contenido sea estructurado de una forma específica por medio de un esquema predefinido. Este esquema es una evolución de la especificación SPEM (Software and Systems Process Engineering Metamodel) versión 2.0, anteriormente UMA (Unified Method Architecture). Los contenidos de método y los procesos no se limitan a la Ingeniería de Software, también pueden abarcar otras disciplinas de diseño e ingeniería, tales como la ingeniería mecánica, transformación del negocio, ciclos de ventas, etc. 52 TABARES, Luis. Personalización de RUP para proyectos académicos de desarrollo de software. Universidad Eafit
85 Figura 12. Un resumen de la terminología propuesta para el Eclipse Process Framework 53 La Figura 12 ofrece un resumen de los elementos clave que se utilizan en el EPF Composer, y sus relaciones con los procesos o el contenido de métodos. Como se puede apreciar, el contenido (Method Content) es enunciado principalmente a través de productos de trabajo, roles, tareas, y guías. Las categorías son necesarias para la publicación de las metodologías de proceso en su sitio web. Las guías, como listas de verificación, ejemplos, o planes de trabajo, también se pueden definir para proporcionar tutoriales de un proceso. En el lado derecho de la Figura 12, se muestran los elementos utilizados para representar los procesos (Process) en EPF Composer. El principal elemento de proceso es la actividad, la cual puede ser anidada para definir estructuras de 53 HAUMER, Peter. Eclipse Process Framework Composer. Part 1: Key Concepts [en línea] (Citada: 17 de Junio de 2012). < 85
86 desglose de trabajo, que pueden relacionarse entre sí para definir un flujo de trabajo. Las actividades también contienen descriptores que hacen referencia al contenido. En EPF Composer se utilizan las actividades para definir procesos, y éstos se clasifican en procesos de entrega y patrones de capacidad. Los procesos de entrega (Delivery processes) representa una plantilla de proceso completa e integrada para la realización de un tipo específico de proyecto. Un proceso de entrega describe un ciclo de vida de proyecto completo, de principio a fin, y puede ser utilizado como referencia para la ejecución de proyectos con características similares. Los patrones de capacidad (Capability patterns) son componentes que expresan y comunican el proceso de un área clave, como una disciplina o una práctica. Se utilizan como bloques de construcción para formar procesos de entrega o patrones de capacidad más grandes. Esto permite asegurar una óptima reutilización y aplicación de las principales mejores prácticas en la creación de procesos, en EPF Composer. En caso de requerirse más información acerca de la herramienta, se sugiere visitar Getting Started del sitio oficial del EPF Composer Framework Propuesto El framework metodológico propuesto el cual de ahora en adelante se denominará SOFTWARE EDUP, nombrado así debido a su enfoque educativo (EDU) y su apoyo en el Proceso Unificado (Unified Process UP). Se encuentra apoyado básicamente en el proceso unificado de Rational al cual se le suprimieron y 54 ECLIPSE. Eclipse Process Framework - Getting Started. [en línea] (Citada: 17 de Junio de 2012). < 86
87 adaptaron elementos en búsqueda de la simplificación y facilidad de uso en e escenarios académicos. Con este framework metodológico se busca proporcionar una documentación consistente que pueda ser empleada a lo largo de la formación profesional, buscando que el estudiante perciba un proceso disciplinado a seguir un proceso disciplinado para producir un componente de software, el cual sea empleado como un referente intrínseco en el estudiante debido a su uso frecuente. El sector educativo tiene como una de sus principales responsabilidades en los programas Ingeniería de Sistemas, Ingeniería Informática o similares, preparar a los estudiantes para trabajar en la industria del software 55, basados en el cuerpo de conocimiento relacionado con la Ingeniería de software 56. Esta responsabilidad debe verse reflejada, asegurando que los objetivos y resultados de los programas se correspondan con la estructura y contenido de los mismos. Los proyectos académicos de desarrollo de software son el punto más crítico en el cumplimiento de esta responsabilidad, al tratar de hacer una comparación, o al menos una analogía, entre la realidad del desarrollo de software en la industria con la realidad actual en la universidad. Los proyectos académicos de desarrollo de software deben proporcionar a los estudiantes la oportunidad de poner en práctica el conocimiento y las habilidades adquiridas en cursos anteriores, en contextos de problemas de diferente alcance, 55 Kruchten, P. (2011). Experience teaching software project management in both industrial and academic settings th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T), doi: /cseet Bernhart, M., Grechenig, T., Hetzl, J., & Zuser, W. (2006). Dimensions of software engineering course design. Proceeding of the 28th international conference on Software engineering - ICSE 06, 667. doi: /
88 desde la concepción hasta la implementación de la solución. Los escenarios para estas experiencias deben emular la realidad de la industria tan cerca como sea posible, utilizando clientes reales (docentes, líderes de investigación, directores de proyecto), procesos, herramientas y criterios de tiempo y calidad. Los escenarios también deben reflejar la realidad de las responsabilidades que se asignan, tanto a una persona como a un equipo de trabajo, el compromiso entre el tiempo y la calidad, y la necesidad de adaptarse y hacer frente a los imprevistos. El aprendizaje al practicar y la toma de decisiones críticas, en entornos con algo de incertidumbre, también deben formar parte de esa realidad. En la Figura 13. Enfoque de RUP, XP y Scrum (Adaptado de Corallis) se presentan para el escenario de tiempo y de gestión e ingeniería, la aplicabilidad de diferentes tipos de metodologías. Figura 13. Enfoque de RUP, XP y Scrum (Adaptado de Corallis) COLLARIS, Remi-Armand y DEKKER, Eef. Comparing Methods [en línea] (Citada: 17 de Junio de 2012). < 88
89 De acuerdo con la Figura 13 (eje X, rangos de tiempo, y eje Y, disciplinas de trabajo), se puede apreciar una comparación entre las metodologías descritas en el marco teórico, y se evidencia que la metodología RUP cubre todas las disciplinas que se pretenden poner en práctica en la ejecución de proyectos académicos, contando con una leve presencia en el campo de gestión del proyecto, el cual el mismo RUP delega en el PMBoK. Otras características valoradas para la selección de RUP como la metodología referente, son: RUP es una metodología bien definida, que utiliza el ciclo de vida iterativo e incremental y se encuentra muy bien documentada. Estas características son fundamentales para SOFTWARE EDUP, donde los estudiantes con una orientación mínima deben adquirir un conocimiento práctico de los elementos clave del proceso de software y ser productivos en los roles asignados para la ejecución de los proyectos académicos de desarrollo de software. RUP promueve la utilización de casos de uso para la descripción de los requisitos de software. Los estudiantes universitarios están familiarizados con el Lenguaje de Modelado Unificado (UML, por sus siglas en Inglés), y los casos de uso, por las asignaturas cursadas en sus programas. RUP se enfoca en el desarrollo basado en componentes, como una de sus mejores prácticas, concepto que se debe enseñar a los estudiantes. 89
90 RUP es un estándar en la industria, que ha sido adaptado por diferentes compañías en el medio local y nacional, permitiéndoles ser más eficientes y rentables en la labor de desarrollar software. RUP estructura el desarrollo en cuatro fases, cada una ejecutada en una o más iteraciones, permitiendo una temprana mitigación del riesgo durante todo el proceso. El énfasis en la mitigación del riesgo en proyectos académicos, con equipos de estudiantes desarrollando un producto de software, dentro de un plazo de tres o cuatro meses, es una necesidad. RUP es configurable. Esta flexibilidad es fundamental para adaptarse a proyectos de diferente magnitud en el ámbito académico. El marco del trabajo SOFTWARE EDUP propone una metodología para orientar el desarrollo de software en proyectos académicos de diferente alcance, teniendo como base a RUP (ampliamente utilizada en la industria nacional) pero fortaleciendo el día a día y la gerencia de proyectos. Este enfoque se observa en la Figura
91 Figura 14. Software EDUP - Disciplinas y alcance del ciclo de vida. (Elaboración Propia) De acuerdo con lo anterior, el framework metodológico propuesto en SOFTWARE EDUP implementa una personalización de la metodología RUP, e incorpora algunas prácticas de las metodologías OpenUP, XP y Scrum, permitiendo de esta forma establecer una guía para el desarrollo de software en proyectos académicos de diferente magnitud. A continuación se presentan los elementos constituyentes del framework, enfocándose en prácticas adoptadas de desarrollo de software que serán implementadas y que formarán la línea base para determinar cómo deben ser abordados los proyectos académicos de desarrollo de software al emplear la presente propuesta metodológica. 91
92 8.3 Procesos y Proyectos Propuestos El framework SOFTWARE EDUP se encuentra configurado para dos tipos de procesos que reflejan dos tipos de proyectos académicos de desarrollo de software; estos se clasificaron como: Proyecto Tipo 1 (Proceso Básico) Proyecto Tipo 2 (Proceso Completo) Con base en las áreas de conocimiento de la Gerencia de proyectos (PMBoK), ambos tipos de proyectos se describen en la Tabla 5, presentada continuación: 92
93 Tabla 5. Características de los proyectos soportados por el framework (Elaboración Propia) Tipo de Proyecto Áreas de Proyecto Tipo 1 Proyecto tipo 2 conocimiento Tiempo Duración máxima 2 meses Debido a la no existencia de la gestión de costos existe un esfuerzo importante en la gestión del tiempo. tiempo. Costo Los tiempos de las personas involucradas, su costo en el mercado laboral, adicionalmente los recursos físicos involucrados (equipos, licencias, internet, papel, etc.) pueden cuantificados y administrados en el proyecto. Queda a elección del equipo hacerlo, mas no son objeto de esta versión del framework. Alcance Desarrollo tipo práctica Implica el desarrollo de varias funcionalidades, o un módulo. Probablemente no existan controles de cambio Calidad Calidad del proceso o Guiada por el docente a través de revisiones formales Calidad del producto o Responsabilidad del equipo del proyecto o Verificada por el equipo (para esto se puede hacer uso de estándares como el ISO/IEC 25010). Duración máxima un semestre. Debido a la no existencia de la gestión de costos existe un esfuerzo importante en la gestión del Los tiempos de las personas involucradas, su costo en el mercado laboral, adicionalmente los recursos físicos involucrados (equipos, licencias, internet, papel, etc.) pueden cuantificados y administrados en el proyecto. Queda a elección del equipo hacerlo, mas no son objeto de esta versión del framework. Desarrollo tipo práctica del semestre o proyecto de grado. Implica el desarrollo de un módulo, varios módulos o un sistema Muy pocos o ningún control de cambio durante el proyecto. Calidad del proceso o o Responsabilidad del equipo del proyecto Guiada por el docente a través de revisiones formales Calidad del producto o Responsabilidad del equipo del proyecto o Verificada por el equipo (para esto se puede hacer uso de estándares como el ISO/IEC 25010). Riesgos La gestión de riesgos es responsabilidad del equipo La gestión de riesgos es responsabilidad del equipo 93
94 Áreas de conocimiento Recursos Humanos Tipo de Proyecto Proyecto Tipo 1 Proyecto tipo 2 El docente o El papel del docente es relevante, es considerado como el guía en el proceso de desarrollo. El cliente o Es representado por el docente que proporciona el enunciado de la práctica y aclara cualquier duda al respecto del enunciado. El equipo o El equipo no se encuentra inmerso constantemente en un ambiente de trabajo y se reúne de forma esporádica para resolver el proyecto propuesto. Es posible que esa reunión sea de forma virtual. o El equipo no tiene acceso permanente al docente (o cliente) o El equipo de construcción es conformado muchas veces por un solo integrante. El docente o El papel del docente es considerado como el guía en el proceso de desarrollo. El cliente o El cliente algunas veces es representado por el docente, alguien externo o un miembro del equipo que formuló el proyecto a realizar. El equipo o El equipo no se encuentra inmerso constantemente en un ambiente de trabajo y se reúne de forma esporádica para resolver el proyecto propuesto. Es posible que esa reunión sea de forma virtual. o o o El equipo no tiene acceso permanente al docente (o cliente) El equipo de construcción es conformado muchas veces por una sola persona. El máximo de integrantes pueden ser de 4 a 5 estudiantes. El equipo posiblemente domina o es experto en la tecnología, y/o se encuentra realizando una inmersión en la misma. Comunicaciones Esfuerzo bajo en la gestión de las comunicaciones Los informes de avance son recomendados mas no requeridos. Adquisiciones No aplican por lo general para este tipo de proyectos Esfuerzo bajo en la gestión de las comunicaciones, pero puede incrementarse en la medida que existan instancias diferentes a los estudiantes y al docente que requieran atención. Los informes de avance son requeridos. No aplican por lo general para este tipo de proyectos 94
95 La descripción del ciclo de vida para cada tipo de proyecto puede consultarse en la publicación del framework, la cual es un sitio Web estático y es parte integral de esta tesis, (de la dirección de la cual se puede descargar el framework es -> versiones, y fue generada con el EPF). En la Figura 15 se puede observar cómo se ve el framework metodológico al ser desplegado en un navegador web. Figura 15. Software EDUP - Desplegado 8.4 Fundamentos del Framework SOFTWARE EDUP establece una estructura que cubre todo el ciclo de vida de desarrollo de software, incluyendo fases, roles, actividades, artefactos, disciplinas, flujos de trabajo, gestión de riesgos, control de calidad, gestión del proyecto y control de configuración. En general, esta metodología tiene su base en los contenidos de la metodología RUP, e incorpora algunos elementos de OpenUP, XP, y Scrum. 95
96 Cabe destacar que los elementos en SOFTWARE EDUP fueron considerados mediante un análisis de varias metodologías, en la que se compararon las mismas respecto a sus elementos, lo cual permitió la selección de elementos que han tenido éxito en la industria de desarrollo de software, así como también de elementos que se adaptan a las necesidades de los proyectos académicos que se ejecutan en este entorno. SOFTWARE EDUP propone una estructura que es una adaptación de la propuesta por metodología RUP, es decir, la conforman aspectos dinámicos y estáticos. Las fases e hitos corresponden a los aspectos dinámicos y las disciplinas corresponden a los aspectos estáticos Principios adoptados RUP, CMMi y PMBoK La metodología SOFTWARE EDUP adopta mejores prácticas y principios, dirigidos a facilitar el desarrollo de software de proyectos académicos de diversa magnitud, con el fin de que se desarrollen productos de software con alta calidad, y aprovechando al máximo los recursos disponibles de una forma eficaz y eficiente. A continuación se presentan las prácticas provenientes del marco teórico, las cuales se consideraron pertinentes incluir en el Framework. Entre corchetes se pondrá la fuente de la cual se adoptó, sea RUP, CMMI o PMBoK, según el caso, por ejemplo: [CMMI / PMBoK] para una práctica proveniente de CMMI y PMBoK respectivamente. Adaptar el proceso [RUP]: SOFTWARE EDUP es una metodología de desarrollo adaptable, que tiene como objetivo mantener la agilidad durante el 96
97 proceso de desarrollo, establecer planes realistas, y estimaciones conforme a las condiciones del proyecto y durante todo el ciclo de vida del proyecto. SOFTWARE EDUP es un marco de trabajo que se presenta como adaptable, y pudiéndose incluir componentes externos (contenidos de método), y a su vez tampoco descarta que sus componentes sirvan para otros marcos de trabajo. Enfocado al nivel de abstracción [RUP]: SOFTWARE EDUP favorece que se tenga un alto nivel de abstracción para reducir la complejidad y mejorar la comunicación entre los involucrados de los proyectos, a través de la recomendación de emplear herramientas de modelado de alto nivel como UML, el empleo de estándares abiertos, la definición temprana de la arquitectura, y el desarrollo de componentes para permitir la reutilización. Centrado en la arquitectura [RUP]: SOFTWARE EDUP además de emplear los casos de uso para guiar el proceso de desarrollo, presta especial atención a la definición temprana de una buena arquitectura que no se vea fuertemente impactada ante cambios posteriores durante la construcción. La arquitectura de los proyectos es representada a través del modelo de las 4+1 vistas, con el fin de proveer una representación arquitectónica estándar para que todos los stakeholders en el desarrollo la puedan comprender, discutir y analizar. Demostrar valor iterativamente [RUP / PMBoK]: En SOFTWARE EDUP las fases se dividen en iteraciones, cuyo resultado es una versión ejecutable. El objetivo de la metodología con cada iteración será mitigar los riesgos de mayor a menor, donde el concepto de riesgo se refiere a ciertos requisitos que son más críticos a la hora de ejecutar el proyecto. Cada iteración debe ser controlada y se debe abordar una parte de la funcionalidad total, pasando por todos los flujos de trabajo relevantes y refinando la arquitectura. Cada iteración se analiza cuando termina. Se puede determinar si han aparecido nuevos 97
98 requisitos o han cambiado los existentes, afectando a las iteraciones siguientes. La retroalimentación de una iteración finalizada permite reajustar los objetivos para las siguientes iteraciones. Esta dinámica continúa hasta cuando se haya finalizado por completo el ciclo de vida. Dirigido por casos de uso [RUP]: Para SOFTWARE EDUP, los casos de uso son la herramienta estándar empleada para especificar los requisitos funcionales del sistema, son los que guían el análisis y diseño, implementación y pruebas de todo el sistema, y adicionalmente son los elementos que permiten la trazabilidad. Enfocado en la calidad y las pruebas [RUP / CMMI / PMBoK]: SOFTWARE EDUP contiene mecanismos para que la calidad de todos los artefactos se evalúe en varios puntos durante todo el ciclo de vida, especialmente al final de cada iteración. En la metodología SOFTWARE EDUP se pueden encontrar tareas enfocadas a revisar y evaluar, las cuales juegan un papel fundamental para asegurar calidad, no solo al final de los proyectos, sino durante todo su ciclo de vida. Enfocado en los riesgos [RUP / CMMI / PMBoK]: La gestión de los riesgos es contemplada en SOFTWARE EDUP desde el inicio del proyecto hasta el final del mismo. El enfoque en los riesgos es el punto de partida para programar las actividades que deben ejecutarse durante las iteraciones. Gestionar los cambios [RUP / CMMI / PMBoK]: El cambio es un factor de riesgo crítico en los proyectos de software, ante los cuales SOFTWARE EDUP crea las condiciones necesarias, a través de sus actividades, para gestionarlos con un enfoque ágil lo más tempranamente posible con su proceso iterativo e incremental, con la participación continua de los stakeholders y con las 98
99 actividades de retroalimentación. Los artefactos de software cambian debido a acciones de refinación o maduración durante el proceso de desarrollo. SOFTWARE EDUP asume que las cosas pueden cambiar y que ningún proyecto está aislado del impacto de estos cambios. Para encarar de manera eficientemente cualquier cambio que se presente, el equipo de proyecto debe mantenerse ágil para reportar y gestionar los cambios, y todos los stakeholders deben participar de manera activa para obtener diferentes perspectivas de una posible solución. Habilita la dirección de proyectos [CMMI / PMBoK]: SOFTWARE EDUP presenta actividades y artefactos que dan visibilidad al a gestión de proyectos, de forma que el equipo ejecutor adquiere y adopta prácticas que les permitirán mitigar riesgos, y aumentar la probabilidad de lograr el tiempo y el alcance formulado Prácticas adoptadas de las metodologías ágiles No todas las prácticas ágiles se adoptaron debido a las características de los proyectos abordados en esta tesis (Ver Tabla 5). Considerando estas estos elementos, se realizó la evaluación de las prácticas ágiles a adoptar para cada proyecto, las cuales se califican en la Tabla 6 presentada a continuación: 99
100 Tabla 6. Prácticas ágiles, momento de uso y tipos de proyectos (Elaboración Propia) Momento Prácticas Ágiles Tipo de Adopción de la práctica Observaciones proyecto Prácticas TDD Test Driven Tipo 1 /Tipo 2 Completamente adoptada Ninguna continuas Development: Desarrollo dirigido por pruebas. Integración continua Tipo 1 /Tipo 2 No se adoptará, Debido a las características de los proyectos, se considera una práctica de difícil implantación. Refactoring Tipo 1 /Tipo 2 No se adoptará, se sugerirá Debido a la característica del equipo de trabajo que inicialmente es inexperto, pero esta práctica es sugerida para el uso en equipos de trabajo avanzados. Colaboración entre todos los roles y presencia en un solo ambiente de trabajo Tipo 1 /Tipo 2 No se adoptará. Debido a la característica de los proyectos realizados, la mayoría de las veces no se presta para un escenario de estas características. Diarias Standup meeting Tipo 1 /Tipo 2 Parcialmente adoptada Se sugiere una modificación en la forma de realización, de modo que cuando el equipo de trabajo se reúna, sean las preguntas del Standup las que se realicen; estas son: Qué se realizó en la última reunión? Qué se planea hacer hasta la siguiente reunión? Existe algún impedimento que influya en su progreso normal? Test de Aceptación- Tipo 1 /Tipo 2 No se adoptará, Debido a la característica de los proyectos realizados, la mayoría de las veces no se presta para un escenario de estas características, pues al final del día no se pueden correr pruebas de aceptación con el cliente. Iteración Plan de iteración Tipo 1 No se adoptará No se considera necesario debido a la característica corta del proyecto, que puede 100
101 Momento Prácticas Ágiles Tipo de Adopción de la práctica Observaciones proyecto verse plasmada en el plan del proyecto Tipo 2 Completamente adoptada Ninguna Revisión de la iteración Tipo 1 /Tipo 2 Completamente adoptada Las fases o iteraciones en las que son divididos los proyectos son revisados al final de cada una. Reunión retrospectiva Tipo 1 /Tipo 2 Completamente adoptada Ninguna Release Backlog: Pila de trabajo Tipo 1 /Tipo 2 No se adoptará No se considera debido a que el proyecto no tendrá varias liberaciones. Plan de release Tipo 1 /Tipo 2 No se adoptará No se considera debido a que el proyecto no Estimación por parte del equipo tendrá varias liberaciones. Tipo 1 /Tipo 2 No se adoptará, se sugerirá Debido a la característica del equipo de trabajo que inicialmente es inexperto, esta práctica es sugerida más no obligatoria. Estrategia Visión Tipo 1 /Tipo 2 Completamente adoptada Ninguna Objetivos Tipo 1 /Tipo 2 Completamente adoptada Ninguna Carta de Inicio Tipo 1 /Tipo 2 No se adoptará No aplica Aprobación presupuesto de Tipo 1 /Tipo 2 No se adoptará No aplica 101
102 8.5 Estructura del Proceso La metodología SOFTWARE EDUP propone una estructura como la de RUP, la cual tiene dos dimensiones (ver Figura 16): Figura 16. Estructura del framework SOFTWARE EDUP Eje horizontal Representa el tiempo y es considerado el eje de los aspectos dinámicos del proceso. Indica las características del ciclo de vida del proceso, en términos de fases, iteraciones e hitos. Eje vertical Representa los aspectos estáticos del proceso. Describe el proceso en términos de componentes de proceso, disciplinas, actividades, tareas, artefactos y roles. 102
103 8.5.1 Estructura dinámica del framework SOFTWARE EDUP se repite a lo largo de una serie de ciclos que constituyen la vida de un proyecto. Cada ciclo concluye con una generación del producto y consta de cuatro fases. Cada fase se subdivide a la vez en iteraciones, el número de iteraciones en cada fase es variable. Cada fase concluye con un hito bien definido, un punto en el tiempo en el cual se deben tomar ciertas decisiones críticas y alcanzar la meta clave antes de pasar a la siguiente fase. Ese hito principal de cada fase se compone de hitos menores que podrían ser los criterios aplicables a cada iteración. Los hitos son puntos de control en los cuales los involucrados en el proyecto revisan el progreso del mismo. El ciclo de vida propuesto por la metodología SOFTWARE EDUP para un proyecto de software se compone en el tiempo de cuatro fases secuenciales, que son: Inicio, Elaboración, Construcción y Transición (mismas fases correspondientes a las del Proceso Unificado, a RUP, Open UP, MeRinde y UPEDU). Al final de cada fase el director de proyecto realiza una evaluación para determinar si los objetivos se cumplieron y así pasar a la fase siguiente Fases Inicio El propósito general es establecer los objetivos para el ciclo de vida del producto. Los objetivos específicos de esta fase son: Establecer el alcance del proyecto y sus límites. Encontrar los casos de uso críticos del sistema, los escenarios básicos que definen la funcionalidad. Identificar al menos una arquitectura candidata para los escenarios principales. 103
104 Estimar el costo en recursos y tiempo de todo el proyecto. Identificar riesgos, y las fuentes de incertidumbre. El hito en esta fase finaliza con el establecimiento de la viabilidad del proyecto, el acuerdo del alcance del producto e identificación de los principales riesgos. Elaboración El propósito general es plantear la arquitectura para el ciclo de vida del producto. Se construye un modelo de la arquitectura, que se desarrolla en iteraciones sucesivas hasta obtener el producto final. Este prototipo debe contener los casos de uso críticos que fueron identificados en la fase de inicio. En esta fase se realiza la recopilación de la mayor parte de los requisitos funcionales y se gestionan los riesgos que interfieran con los objetivos del sistema. Los objetivos específicos de esta fase, son: Madurar, validar y establecer la arquitectura. Demostrar que la arquitectura propuesta soportará la visión, con un costo y tiempo razonables. Refinar la estimación del costo de recursos y tiempo del proyecto Mitigar los riesgos identificados. El hito en esta fase finaliza con la obtención de una línea base de la arquitectura del sistema, la recopilación de la mayoría de los requisitos y la mitigación de los riesgos importantes. 104
105 Construcción El propósito general es alcanzar la capacidad operacional del producto de forma incremental a través de iteraciones sucesivas. En esta fase todas las características, componentes y requisitos deben ser integrados, implementados y probados en su totalidad, obteniendo una versión aceptable del producto, comúnmente llamada versión beta. Los objetivos específicos de esta fase, son: Desarrollar casos de uso (funcionalidades), servicios (en caso de ser requeridos), módulos, y/o subsistemas del proyecto. Realizar desarrollo por iteraciones, priorizando casos de uso, módulos y/o subsistemas más críticos para la arquitectura y el negocio. Realizar pruebas funcionales de cada uno de los casos de uso, servicios, módulos y/o subsistemas a medida que se vayan desarrollando. El hito en esta fase finaliza con el desarrollo del sistema con calidad de producción y la preparación para la entrega al equipo de Transición. Toda la funcionalidad debe haber sido implementada y las pruebas para el estado beta de la aplicación completadas. Si el proyecto no cumple con estos criterios de cierre, entonces la Transición deberá posponerse una iteración. Transición El propósito general es entregar el producto funcional en manos de los usuarios finales (docente, comunidad, grupo de investigación), con toda la documentación donde se especifique la instalación, configuración y usabilidad del producto. 105
106 Los objetivos específicos de esta fase, son: Conseguir un producto final que cumpla los requisitos definidos. El hito en esta fase se alcanza cuando el cliente revisa y acepta los artefactos que le han sido entregados Estructura estática de la metodología Una metodología de desarrollo de software define quién hace qué, cómo y cuándo. La metodología SOFTWARE EDUP define cuatro elementos: los roles, que responden a la pregunta Quién?; las actividades, que responden a la pregunta Cómo?; los artefactos, que responden a la pregunta Qué?; y los flujos de trabajo de las disciplinas que responden a la pregunta Cuándo? Disciplinas La metodología SOFTWARE EDUP se organiza en disciplinas. Las disciplinas están compuestas por un conjunto de tareas, las cuales tienen como objetivo producir artefactos. Las disciplinas que conforman esta metodología se dividirán en dos grupos. El primero comprende las disciplinas fundamentales asociadas con las áreas de ingeniería: Modelado empresarial Requisitos Análisis y Diseño 106
107 Implementación Pruebas Despliegue El segundo grupo lo integran las disciplinas llamadas de soporte o gestión: Gestión del proyecto Gestión de cambios La descripción de cada una de las disciplinas puede consultarse en la publicación del framework (Ver Figura 17), ( Figura 17. Disciplinas en el framework SOFTWARE EDUP 107
108 Artefactos La metodología SOFTWARE EDUP propone un grupo de artefactos que pueden ser generados durante el proceso de desarrollo de software. Es fundamental que antes del comienzo del proceso de desarrollo se decida cuáles son los artefactos que serán empleados a lo largo del ciclo de vida del desarrollo del proyecto, así como es recomendable que se defina entre las partes los artefactos que deben ser entregados. Es recomendable que se utilicen la mayoría de los artefactos que se definen en el framework, principalmente si la magnitud del proyecto es grande. Mientras más artefactos detallen en profundidad los elementos de un sistema, mejor será la compresión del proyecto por parte del equipo de trabajo. La lista de los artefactos que se definen en SOFTWARE EDUP se presenta agrupada por la disciplina a la que pertenecen, en la Tabla 7, la cual se muestra a continuación. Tabla 7. Disciplinas vs. Artefactos para Proyectos Tipo 1 (Elaboración Propia) Disciplina Obligatoriedad Artefacto Modelado No Aplica empresarial Requisitos Requeridos Documento de Requisitos del Sistema (DRS) Casos de Uso Opcionales Solicitudes de los stakeholders Glosario Prototipo de interfaz de usuario 108
109 Disciplina Obligatoriedad Artefacto Análisis y Diseño Requeridos Documento de Arquitectura de Software (DAS) 58 Opcionales Decisiones de arquitectura Implementación Requeridos Prueba Unitaria Código fuente del componente Registro de Pruebas Unitarias Componente operacional (ejecutable o build) Pruebas Requeridos Ideas de prueba - casos de prueba - pruebas Despliegue Requeridos Sistema Opcionales Manual de instalación Manual de usuario Gestión del proyecto Requeridos Visión del sistema Plan de Proyecto 59 Gestión de configuración y control del cambio Lista de elementos de trabajo Opcionales Acta de Reunión Acta de Entrega Registro de Revisión Lista de riesgos Gráfica del trabajo pendiente (Burndown chart) Opcionales Repositorio de versiones Solicitud de cambio (CR) 58 Para este artefacto existe una versión simplificada denominada informal, sugerida para proyectos tipo Ibídem. 109
110 Tabla 8. Disciplinas vs. Artefactos para Proyectos Tipo 2 (Elaboración Propia) Disciplina Obligatoriedad Artefacto Modelado empresarial Opcionales Modelo del proceso Requisitos Requeridos Documento de Requisitos del Sistema (DRS) Modelo de casos de uso Caso de Uso Solicitudes de los stakeholders Glosario Prototipo de interfaz de usuario Análisis y Diseño Requeridos Documento de Arquitectura de Software (DAS) 60 Opcionales Decisiones de arquitectura Implementación Requeridos Prueba Unitaria Código fuente del componente Registro de Pruebas Unitarias Componente operacional (ejecutable o build) Pruebas Requeridos Lista de Ideas de prueba Casos de prueba Despliegue Requeridos Sistema Manual de instalación Manual de usuario Gestión del proyecto Requeridos Visión del sistema Plan de Proyecto 61 Plan de Iteración Lista de elementos de trabajo Acta de Reunión Acta de Entrega Registro de Revisión Lista de riesgos Informe de Avance Registro de compromisos e incidentes Opcionales Gráfica del trabajo pendiente (Burndown chart) Gestión de Requeridos Repositorio de versiones 60 Para este artefacto existe una versión simplificada denominada informal, sugerida para proyectos tipo Igual que la nota anterior. 110
111 Disciplina Obligatoriedad Artefacto configuración y control del cambio Opcionales Solicitud de cambio (CR) Para Proyectos Tipo 1 se tiene un total de: 12 artefactos obligatorios 13 artefactos opcionales Para Proyectos Tipo 2 se tiene un total de: 27 artefactos obligatorios 3 artefactos opcionales A continuación se presenta, en la Tabla 9 y Tabla 10, se presenta los artefactos distribuidos por cada una de las fases y disciplinas del framework y los correspondientes tipos de proyecto: 111
112 Tabla 9. Relación entre Fases Disciplinas Artefactos Obligatorios para Proyectos Tipo 1 (Elaboración Propia) Inicio Elaboración Construcción Transición Requisitos Documento de requisitos del sistema (DRS) Documento de requisitos del sistema (DRS) Casos de uso Casos de uso Análisis y diseño Documento de Arquitectura Documento de de Software (DAS) Arquitectura de Software (DAS) Implementación Prueba Unitaria Código fuente del componente Registro de Pruebas Unitarias Componente operacional (ejecutable o build) Pruebas Ideas de prueba - casos de prueba - pruebas Ideas de prueba - casos de prueba - pruebas Ideas de prueba - casos de prueba - pruebas Prueba Unitaria Código fuente del componente Registro de Pruebas Unitarias Componente operacional (ejecutable o build) Ideas de prueba - casos de prueba - pruebas Despliegue Sistema Gestión de configuración y control del cambio Gestión de Visión del sistema Lista de elementos de Lista de elementos de Lista de elementos de proyecto Plan del Proyecto trabajo trabajo trabajo Lista de elementos de trabajo 112
113 Tabla 10. Relación entre Fases Disciplinas Artefactos Obligatorios para Proyectos Tipo 2 (Elaboración Propia) Inicio Elaboración Construcción Transición Modelado del negocio Requisitos Documento de Requisitos Documento de del Sistema (DRS) Requisitos del Sistema Modelo de casos de uso (DRS) Caso de Uso Modelo de casos de uso Solicitudes de los Caso de Uso stakeholders Solicitudes de los Glosario stakeholders Prototipo de interfaz de Glosario usuario Prototipo de interfaz de usuario Análisis y diseño Documento de Arquitectura Documento de de Software (DAS) Arquitectura de Software (DAS) Implementación Prueba Unitaria Código fuente del componente Registro de Pruebas Unitarias Componente operacional (ejecutable o build) Prueba Unitaria Código fuente del componente Registro de Pruebas Unitarias Componente operacional (ejecutable o build) Pruebas Lista de Ideas de prueba Lista de Ideas de prueba Casos de prueba Casos de prueba Despliegue Manual de usuario Manual de instalación Sistema Gestión de Repositorio de versiones Repositorio de versiones Repositorio de Repositorio de versiones 113
114 Inicio Elaboración Construcción Transición configuración versiones Gestión proyecto de Visión del sistema Plan de Proyecto 62 Plan de Iteración Lista de elementos de trabajo Acta de Reunión Registro de Revisión Lista de riesgos Informe de Avance Registro de compromisos e incidentes Plan de Iteración Acta de Reunión Registro de Revisión Lista de riesgos Informe de Avance Registro de compromisos e incidentes Plan de Iteración Acta de Reunión Registro de Revisión Lista de riesgos Informe de Avance Registro de compromisos e incidentes Plan de Iteración Acta de Reunión Registro de Revisión Lista de riesgos Informe de Avance Registro de compromisos e incidentes Acta de Entrega La descripción de cada uno de los artefactos puede consultarse en la publicación de la metodología, la cual es un sitio Web estático y es parte integral de esta tesis. 62 Ibídem. 114
115 Roles Una de las razones principales de la adopción de esta metodología para el desarrollo de software consiste en la definición de las tareas que serán llevadas a cabo por los estudiantes que participan en un proyecto. En SOFTWARE EDUP un rol define las responsabilidades de un individuo, o de un grupo de individuos trabajando juntos como un equipo. Los roles se encargan de la realización de tareas, las cuales generan artefactos. La metodología SOFTWARE EDUP propone ocho (8) roles básicos: Director de proyecto: El director de proyecto aplica conocimientos, habilidades, herramientas y técnicas de gestión de proyectos a un amplio rango de tareas, para cumplir los requisitos y para proporcionar un resultado final en un proyecto concreto. Analista: Un analista se encarga de dirigir, coordinar y realizar la recopilación de requisitos y el modelado de casos de uso, esquematizando la funcionalidad del sistema y delimitando el alcance del mismo. Por ejemplo, define los actores y casos de uso y sus interacciones. Arquitecto: Este rol es el responsable de diseñar la arquitectura del software, la cual incluye tomar las principales decisiones técnicas que condicionan globalmente el diseño y la implementación del proyecto. Desarrollador: Este rol es responsable de construir diferentes componentes del sistema, incluyendo comprender y adherirse a las decisiones de arquitectura, posiblemente realizar prototipos de la interfaz de usuario, y entonces implementar, hacer pruebas unitarias e integrar los componentes que son parte de la solución. Tester: Este rol es responsable de las actividades principales del esfuerzo de las pruebas. Estas actividades incluyen identificar, definir, ejecutar y dirigir las pruebas necesarias, como también obtener los resultados de las mismas. 115
116 Docente: Este rol es el encargado de la orientación, seguimiento y control formal de los artefactos, que deben elaborarse a través del proceso de desarrollo de software. Stakeholder: Este rol representa grupos de interés cuyas necesidades deben ser satisfechas por el proyecto. Esto es un rol que podría ser desempeñado por cualquiera que esté (o potencialmente estará) materialmente afectado por el resultado del proyecto. Cualquier rol: Este rol caracteriza las tareas que puede efectuar cualquier miembro del equipo. La definición completa de los roles con sus definiciones, relaciones, habilidades, propuesta de asignación y factores críticos de éxito, se encuentran en el sitio Web estático generado y que es parte integral de esta tesis y es uno de los productos de este framework. En la Tabla 11 y Tabla 12, se presenta la matriz RACI (asignación de responsabilidades) de los entregables vs los roles en las que se presentan y su grado de responsabilidad frente al entregable, calificándolos así: R RESPONSABLE: Ejecuta la tarea de construcción del entregable. Identifica la(s) función (es) que es asignada para ejecutar una actividad en particular. El grado de responsabilidad es definida por el Accountable. Pueden haber múltiples Responsables para una actividad. A ACOUNTABLE: Responsable de que se haga el entregable. Es el responsable final de la conclusión de la actividad y del entregable, y es quien tiene la capacidad de decir sí o no. Debe haber una y sólo una A (un responsable) para una decisión, entregable o actividad. Esta responsabilidad no puede ser delegada. 116
117 C CONSULTED: Consultado antes de ejecutar. Identifica las funciones que deben ser consultadas antes que una decisión o actividad sea finalizada. Es una comunicación de ida y regreso. I INFORMED: Informado. Identifica las funciones que deben ser informadas sobre la conclusión o resultado de la decisión o actividad. Es una comunicación de un sólo sentido.. 117
118 Tabla 11. Matriz RACI para los Artefactos del Framework para Proyectos Tipo 1 (Elaboración Propia) Disciplina Artefacto Director de proyecto Requisitos Documento de Requisitos del Analista Arqui tecto Desarrol lador Tester Docente Stakeh older Cualquier Rol I RA CI I I CI I I Sistema (DRS) Casos de Uso I RA CI I I I I I Solicitudes de los stakeholders I RA I I I I I I Glosario I RA I I I I I I Prototipo de interfaz de usuario I RA CI I I CI I I Análisis y Diseño Documento de Arquitectura de Software (DAS) C I RA I I CI I I Decisiones de arquitectura C I RA I I CI I I Implementación Prueba Unitaria I I CI RA I I I I Código fuente del componente I I CI RA I I I I Registro de Pruebas Unitarias I I CI RA I I I I Código ejecutable del componente I I CI RA I I I I Pruebas Ideas de prueba - casos de prueba - C C C C RA C I I pruebas Despliegue Manual de instalación I I I R RA I I I Manual de usuario I I I R RA I I I Sistema R R RA R R I I I Gestión del proyecto Gestión de configuración y control del cambio Visión del sistema RA R I I I I I I Plan del proyecto RA I C I I I I I Lista de elementos de trabajo RA I C I I I I I Lista de riesgos RA I C I I I I I Acta de Reunión RA I C I I I I I Acta de Entrega RA I C I I I I I Registro de Revisión RA I I I I I I I Lista de Riesgos RA I I I I I I I Gráfica del Trabajo Pendiente RA I C I I I I I (Burdown chart) Repositorio de versiones R R RA R R I I I Solicitud de cambio (CR) I I I I I I I R 118
119 Tabla 12. Matriz RACI para los Artefactos del Framework para Proyectos Tipo 2 (Elaboración Propia) Disciplina Artefacto Director de proyecto Modelado Modelo del Proceso empresarial Requisitos Documento de Requisitos del Analista Arqui tecto Desarrol lador Tester Docente Stakeh older Cualquier Rol I RA CI I I CI I I I RA CI I I CI I I Sistema (DRS) Casos de Uso I RA CI I I I I I Modelo de casos de uso I RA CI I I I I I Solicitudes de los stakeholders I RA I I I I I I Glosario I RA I I I I I I Prototipo de interfaz de usuario I RA CI I I CI I I Análisis y Diseño Documento de Arquitectura de Software (DAS) C I RA I I CI I I Decisiones de arquitectura C I RA I I CI I I Implementación Prueba Unitaria I I CI RA I I I I Código fuente del componente I I CI RA I I I I Registro de Pruebas Unitarias I I CI RA I I I I Código ejecutable del componente I I CI RA I I I I Pruebas Lista de ideas de prueba C C C C RA C I I Casos de prueba C C C C RA C I I Despliegue Manual de instalación I I I R RA I I I Manual de usuario I I I R RA I I I Sistema R R RA R R I I I Gestión del proyecto Visión del sistema RA R I I I I I I Plan del proyecto RA I C I I I I I Plan de Iteración RA I C I I I I I Lista de elementos de trabajo RA I C I I I I I Lista de riesgos RA I C I I I I I Acta de Reunión RA I C I I I I I Acta de Entrega RA I C I I I I I Registro de Revisión RA I I I I I I I Lista de Riesgos RA I I I I I I I 119
120 Disciplina Artefacto Director de proyecto Registro de compromisos e incidentes Gráfica del Trabajo Pendiente Gestión de configuración y control del cambio Analista Arqui tecto Desarrol lador Tester Docente Stakeh older Cualquier Rol RA I I I I I I I RA I C I I I I I (Burdown chart) Repositorio de versiones R R RA R R I I I Solicitud de cambio (CR) I I I I I I I R 120
121 Recomendaciones y consideraciones frente al framework A continuación se presentan una serie de restricciones referentes al framework, que constituyen en principios de uso y advertencias, pues no se puede caer en que una metodología es útil para resolver todos los tipos de escenarios y ámbitos de proyectos: Es importante adaptar el framework, es posible que todos los artefactos sean útiles, pero también es posible que un pequeño subconjunto de ellos no, o aun más, se requiera de otros para complementarlo. En este caso se requiere que el director de proyecto o docente evalúe responsablemente la adición o supresión de entregables, recuerde este principio: Los artefactos deben trabajar para usted y no usted para los artefactos, emplee los artefactos que considere indispensables para una correcta ejecución del proyecto. SOFTWARE EDUP no enseñará a los estudiantes cómo convertirse en buenos desarrolladores. SOFTWARE EDUP guiará a los estudiantes en qué hacer, y es probable que en futuras versiones, hasta cómo hacer ciertas cosas, pero es requisito previo tener conocimientos básicos en desarrollo de software. 8.6 Ejemplos Propuestos Con el objeto de mostrar cómo serían los artefactos generados en cada uno de los tipos de proyectos, se construyeron dos ejemplos, así: Una modificación a un sistema de retiro por cajero electrónico de dinero disponible en un CDT, correspondientes a los proyectos Tipo 1. Un sistema para la toma de pedidos en restaurantes, correspondientes a los proyectos Tipo
122 Ambos proyectos hacen parte del proyecto de grado construido por López y Villa 63, los cuales apoyan esta tesis de maestría y se encuentran desplegados en el sitio web estático que contiene el framework. 8.7 Escenarios de Uso De igual forma, su aplicabilidad estará enmarcada por las siguientes premisas: Entornos de desarrollo de software académico en Medellín y su área Metropolitana. Prácticas, proyectos, trabajos dirigidos de grado que involucren el desarrollo de software. El framework no será aplicable, para: Entornos de desarrollo de software de misión crítica, en donde las pruebas, tanto funcionales como no funcionales, son de alta rigurosidad. 8.8 Validación del Framework Para la validación se ejecutaron los siguientes pasos: 1. Convocatoria de profesores voluntarios 2. Presentación del framework y encuesta 3. Recolección y análisis de la encuesta Para realizar la validación se convocaron a algunos profesores de pregrado y postgrado de la carrera Ingeniería de Sistemas de las siguientes universidades: Universidad Eafit, Universidad de Medellín y el Politécnico Jaime Isaza Cadavid. 63 LÓPEZ, Mario y VILLA, Juan Camilo. Plantillas y artefactos personalización de RUP para proyectos académicos de desarrollo de software. Universidad Eafit
123 A estos profesores se les presentó el framework realizando una presentación de sensibilización 64 y uso del mismo. Durante esta sensibilización se realizó especial énfasis en lo importante que es contar con un entorno de trabajo unificado para la construcción de software en ámbitos académicos (prácticas de pregrado, proyectos de materia, trabajos dirigidos de grado y tesis) y las consecuencias negativas para la vida profesional de los estudiantes ocasionadas por la falta de uso de un proceso de software adherido a sus prácticas académicas. Paso seguido, se invitó a los profesores a realizar una evaluación y experimentación del framework basado en las siguientes preguntas: 1. Nombre Completo 2. Universidad en que trabaja 3. Materias que dicta en pregrado 4. Materias que dicta en posgrado 5. Su concepto acerca del framework 6. Ha empleado el framework total o parcialmente, un proceso, un entregable, en alguna materia? 7. Qué proceso, actividad, artefacto, o parte del framework empleó con sus estudiantes? 8. En qué materia(s) lo empleó? 9. Qué retroalimentación / reacción recibió de los estudiantes? 10. Cuál es su concepto sobre el uso del framework bajo este escenario en que lo usó (y para el que fue creado)? Las respuestas a estas preguntas se encuentran en el anexo Ver anexo 13.1 Presentación de Sensibilización 123
124 8.9 Componentes físicos del framework En la Tabla 13. Componentes Físicos del Framework Metodológico se enumeran y referencian los componentes físicos del framework y que hacen parte integral de este trabajo: Tabla 13. Componentes Físicos del Framework Metodológico (elaboración propia) Descripción Archivo disponible en : Construido con Eclipse Process Framework Composer Versión: y plugins de español. Contiene la configuración de la metodología con sus diferentes contenidos del método y procesos. Archivo configuracionbiblioteca zip plugins zip Para su uso se debe realizar la importación dentro de un ambiente de Eclipse Process Framework Composer Versión: Archivo disponible en : Construido con Eclipse Process Framework Composer Versión: y plugins de español. Contiene los diferentes plugins de método del framework metodológico V01.zip Para su uso se debe realizar la importación dentro de un ambiente de Eclipse Process Framework Composer Versión: Archivo disponible en : Construido con Eclipse Process Framework Composer Versión: y plugins de español y publicado en html. Sitio navegable de la metodología, el cual contiene el framework 124
125 Archivo Descripción metodológico desplegado, listo para el uso de la comunidad académica. Para su uso se debe descargar e iniciar la navegación en un explorador de internet (preferiblemente Mozilla Firefox Version , Internet Explorer 8 o superiores), haciendo doble clic en "index.htm" 8.10 Licencia del framework Todos los productos de esta tesis son de libre distribución y configuración, acogiéndose a Creative Commons V.3.0, significando que los usuarios serán libres y están autorizados para: copiar, distribuir y comunicar públicamente la obra hacer obras derivadas Figura 18. Licencia creative commons 65 Bajo las siguientes condiciones: 65 Licencia Creative Commons [en línea]. (Citada: 16 de Junio. 2012) < > 125

References: Resolución 
 Resolución 
 Resolución 
 Resolución 
 Resolución 
 Resolución 
in fine