Se entiende por metodología de desarrollo una colección de documentación formal referente a los procesos, las políticas y los procedimientos que intervienen en el desarrollo del software. En Ingles software development methodology (SDM) o system development life cycle (SDLC).
La finalidad de una metodología de desarrollo es garantizar la eficacia (p.ej. cumplir los requisitos iniciales) y la eficiencia (p.ej. minimizar las perdidas de tiempo) en el proceso de generación de software.
Los riesgos a afrontar y los controles a establecer varían en función de las diferentes etapas del ciclo de vida de desarrollo. De forma general podríamos encontrar las siguientes fases:
- Definición del proceso de negocio y los requerimientos
- Documentación funcional
- Arquitectura y diseño técnico
- Codificación y ejecución de pruebas unitarias
- Pruebas globales del sistema
- Pruebas de integración
- Implantación
- Formación de usuarios
- Mantenimiento del sistema
Adicionalmente, durante todo el ciclo de vida del proyecto se deberan realizar tareas tales como:
- Gestión de la configuración: identificación de versiones, control de cambios, etc.
- Gestión de la calidad: seguimiento de errores, revisiones del nivel de calidad.
- Revisión de las premisas iniciales: revisión de los requerimientos y de los diseños.
- Gestión del entorno de desarrollo: herramientas de desarrollo, librerías, ficheros, gestión de datos (p.ej. para pruebas)
El núcleo de cualquier metodología de desarrollo se encuentra constituido por documentos escritos que detallan cada uno de los puntos expuestos.
No obstante, siempre es mas conveniente consultar el estándar ISO 12207, el cual intenta especificar todas las tareas necesarias para el desarrollo y mantenimiento del software:
La relación entre los diferentes procesos variará en función de la metodología que la organización desee utilizar. En términos generales, podríamos hacer 3 agrupaciones:
- Procesos en cascada (Waterfall): El desarrollo se compone por fases secuenciales. Una vez cerrada una, no se considera la posibilidad de volver atrás.
- Procesos en espiral: Se desarrollan prototipos de software que son validados y mejorados a partir de la validación por parte del usuario. Una vez se tiene el prototipo definitivo, se realiza el desarrollo, implantación y mantenimiento de la misma forma que el modelo en cascada.
- Procesos iterativos: Desarrollo incremental e iterativo, cada elemento desarrollado es validado con objeto de redefinir las necesidades funcionales. En este caso no se utilizan prototipos. Se dispone de marcos de trabajo de desarrollo ágil que son bastante populares como Extreme Programming (XP).
Si bien es importante formalizar una metodología de desarrollo para minimizar riesgos e incrementar las posibilidades de éxito en los desarrollos, también es necesario establecer mecanismos de mejora continua sobre los procesos que componen la metodología. En ese sentido disponemos del estándar ISO 15504 que proporciona un marco de trabajo para la verificación de los procesos de software (planificación, adquisición, desarrollo, soporte, etc.). Es decir, nos ofrece unas pautas para verificar si estos procesos son efectivos en la consecución de sus objetivos:
Para la implantación de mecanismos de mejora, primero es necesario identificar/mapear los procesos definidos en la ISO 12207 con los procesos de la organización. En una segunda parte, a partir del modelo de referencia definido en el estándar, es posible medir el nivel de “capacidad” de cada uno de los procesos:
- Nivel 0 – Proceso incompleto: El proceso no existe o no cumple con los objetivos
- Nivel 1 – Proceso ejecutado
- Nivel 2 – Proceso gestionado: el proceso no solo se encuentra en funcionamiento, sino que es planificado, monitorizado y ajustado.
- NIvel 3 – Proceso definido: el proceso, los recursos, los roles y responsabilidades se encuentran documentados y formalizado.
- Nivel 4 – Proceso predecible: se han definido técnicas de medición de resultados y controles.
- Nivel 5 – Proceso optimizado: todos los cambios son verificados para determinar el impacto, se han definido mecanismos para la mejora continua, etc.
Por tanto, para cada proceso se evalua y se asigna un nivel. A partir de aquí, es posible definir las acciones de mejora necesarias. En general, la ISO 15504 consta de las siguientes normas:
Cabe destacar que, actualmente es mucho más popular el uso del modelo CMMI – Capability Maturity Model-Integrated (probablemente porque fue de los primeros precursores y se encuentra disponible gratuitamente en Internet). CMMI es compatible con el estándar ISO 15504 y se encuentra alineado con las especificaciones ISO, por tanto es una buena alternativa a considerar a la hora de implantar mecanismos de evaluación y mejora continua en los procesos del software.
Buen resumen.
interesante.