Otras metodologías tradicionales o pesadas que podemos citar son: RUP (Rational Unified Process), MSF (Microsoft Solution Framework), Win-Win Spiral Model y Iconix. Estas metodologías incluyen las fases inicial, elaboración, construcción y transición. Las disciplinas abarcan: modelo empresarial, requisitos, análisis y diseño, implementación, prueba, despliegue, gestión de cambios y configuración, gestión de proyectos, y entorno UML. El modelado incluye negocio, web, requisitos, aplicación y datos.
Metodologías Ágiles:
- XP (Extreme Programming)
- Scrum
- Crystal Clear
- DSDM (Dynamic Systems Development Method)
- FDD (Feature Driven Development)
- ASD (Adaptive Software Development)
- XBreed
- Extreme Modeling
SCRUM es un proceso ágil de desarrollo que permite una rápida entrega de avances, una corta curva de aprendizaje, aumenta la productividad, es fácil de implementar, económico y ya es utilizado por las principales empresas de software en el mundo.
Metodologías de Desarrollo de Software
Las metodologías de desarrollo de software surgen ante la necesidad de utilizar una serie de procedimientos, técnicas, herramientas y soporte documental a la hora de desarrollar un producto software. Dichas metodologías pretenden guiar a los desarrolladores al crear un nuevo software, pero los requisitos de un software a otro son tan variados y cambiantes que ha dado lugar a que exista una gran variedad de metodologías para la creación del software. Se podrían clasificar en dos grandes grupos:
- Las metodologías orientadas al control de los procesos, estableciendo rigurosamente las actividades a desarrollar, herramientas a utilizar y notaciones que se usarán. Estas metodologías son llamadas Metodologías Pesadas.
- Las metodologías orientadas a la interacción con el cliente y el desarrollo incremental del software, mostrando versiones parcialmente funcionales del software al cliente en intervalos cortos de tiempo, para que pueda evaluar y sugerir cambios en el producto según se va desarrollando. Estas son llamadas Metodologías Ligeras/Ágiles.
Una de las metodologías pesadas más conocidas y utilizadas es la Metodología RUP (Rational Unified Process), que divide el desarrollo en 4 fases que definen su ciclo de vida:
- Inicio: El objetivo es determinar la visión del proyecto y definir lo que se desea realizar.
- Elaboración: Etapa en la que se determina la arquitectura óptima del proyecto.
- Construcción: Se obtiene la capacidad operacional inicial.
- Transición: Obtener el producto acabado y definido.
1.2.2 Filosofía RUP
La metodología RUP tiene 6 principios clave:
- Adaptación del proceso: El proceso debe adaptarse a las características de la organización para la que se está desarrollando el software.
- Balancear prioridades: Debe encontrarse un balance que satisfaga a todos los inversores del proyecto.
- Colaboración entre equipos: Debe haber una comunicación fluida para coordinar requerimientos, desarrollo, evaluaciones, planes, resultados, etc.
- Demostrar valor iterativamente: Los proyectos se entregan, aunque sea de una forma interna, en etapas iteradas. En cada iteración se evaluará la calidad y estabilidad del producto y se analizará la opinión y sugerencias de los inversores.
- Elevar el nivel de abstracción: Motivar el uso de conceptos reutilizables.
- Enfocarse en la calidad: La calidad del producto debe verificarse en cada aspecto de la producción.
1.2.3 Disciplina de desarrollo de RUP
Determina las etapas a realizar durante el proyecto de creación del software:
- Ingeniería o modelado del negocio: Analizar y entender las necesidades del negocio para el cual se está desarrollando el software.
- Requisitos: Proveer una base para estimar los costos y tiempo de desarrollo del sistema.
- Análisis y diseño: Trasladar los requisitos analizados anteriormente a un sistema automatizado y desarrollar una arquitectura para el sistema.
- Implementación: Crear software que se ajuste a la arquitectura diseñada y que tenga el comportamiento deseado.
- Pruebas: Asegurarse de que el comportamiento requerido es correcto y que todo lo solicitado está presente.
- Despliegue: Producir distribuciones del producto y distribuirlo a los usuarios.
1.2.4 Disciplina de soporte RUP
Determina la documentación que es necesaria realizar durante el proyecto:
- Configuración y administración del cambio: Guardar todas las versiones del proyecto.
- Administración del proyecto: Administrar los horarios y recursos que se deben emplear.
- Ambiente: Administrar el ambiente de desarrollo del software.
- Distribución: Hacer todo lo necesario para la salida del proyecto.
1.2.5 Elementos del RUP
- Actividades: Procesos que se han de realizar en cada etapa/iteración.
- Trabajadores: Personas involucradas en cada actividad del proyecto.
- Artefactos: Herramientas empleadas para el desarrollo del proyecto. Puede ser un documento, un modelo, un elemento del modelo, etc.
1.3 Metodologías Ágiles
1.3.1 Introducción
Esta metodología nace en febrero del 2001 en una reunión celebrada en Utah, EE. UU. Las principales ideas de la metodología ágil son:
- Se encarga de valorar al individuo y las iteraciones del equipo más que a las herramientas o los procesos utilizados.
- Se hace mucho más importante crear un producto software que funcione que escribir mucha documentación.
- El cliente está en todo momento colaborando en el proyecto.
- Es más importante la capacidad de respuesta ante un cambio realizado que el seguimiento estricto de un plan.
1.3.2 Programación Extrema o XP (Extreme Programming)
Es una metodología para el desarrollo de software que consiste básicamente en ajustarse estrictamente a una serie de reglas que se centran en las necesidades del cliente para lograr un producto de buena calidad en poco tiempo. La Programación Extrema es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en el desarrollo de software. Promueve el trabajo en equipo, preocupándose en todo momento del aprendizaje de los desarrolladores y estableciendo un buen clima de trabajo. Este tipo de método se basa en una realimentación continuada entre el cliente y el equipo de desarrollo con una comunicación fluida entre todos los participantes, también busca simplificar las soluciones implementadas y coraje para los múltiples cambios. Este tipo de programación es la adecuada para los proyectos con requisitos imprecisos, muy cambiantes y con un riesgo técnico excesivo.
1.3.3 Roles de la Programación Extrema (XP)
Según la propuesta de Beck, los roles que nos podemos encontrar son los siguientes:
- Programador: El programador escribe las pruebas unitarias y produce el código del sistema.
- Cliente: Escribe las historias de los usuarios y las pruebas funcionales para validar su implementación. El cliente da una gran prioridad a las historias de usuarios y decide cuál implementar en cada iteración, centrándose en aportar mayor valor al negocio.
- Encargado de Pruebas (Tester): Ayuda al cliente a escribir las pruebas funcionales. Se encarga de ejecutar las pruebas con regularidad, difunde los resultados obtenidos al equipo y es el responsable de las herramientas que dan soporte a las pruebas.
- Encargado de Seguimiento (Tracker): Es el que proporciona la realimentación al equipo. Realiza el seguimiento del proceso de cada iteración y verifica el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado en ello para la mejora de futuras estimaciones.
- Entrenador (Coach): Es el responsable del proceso global. Se encarga de proveer guías al equipo de forma que se apliquen las prácticas XP y se vaya siguiendo el proceso correctamente.
- Consultor: Es un miembro externo del equipo con un conocimiento específico en algún tema que es necesario para el proyecto, en el que surgen problemas.
- Gestor (Big Boss): Es el vínculo entre clientes y programadores, ayuda a que el equipo trabaje efectivamente creando las condiciones adecuadas. Su labor esencial es la de coordinación.