Este documento describe diferentes metodologías de desarrollo de software, incluyendo metodologías pesadas como RUP y metodologías ágiles como XP. Explica que RUP se centra en controlar rigurosamente los procesos mediante extensa documentación, mientras que XP promueve el trabajo en equipo y la colaboración continua con el cliente. También detalla los roles, actividades y artefactos clave de RUP y XP.
1. METODOLOGIA
DE
DESARROLLO
DEL
SOFTWARE
Fecha de comienzo: 09/10/2008
Fecha de entrega: 15/10/2008
Grupo11
Isaías Carrillo Pérez
Rodrigo Pérez González
Aureliano David Rodríguez Martín
2. INDICE
1.1 Metodologías de Desarrollo de Software.
1.2 Metodologías Pesadas.
1.2.1 Introdución.
1.2.2 Filosofía RUP.
1.2.3 Disciplina de Desarrollo RUP.
1.2.4 Disciplina de Soporte RUP.
1.2.5 Elementos del RUP.
1.3 Metodologías Ágiles.
1.3.1 Introdución.
1.3.2 Programación Extrema o XP (Extreme Programming).
1.3.3 Roles de la Programación Extrema.
1.4 Referencias Web o bibliografía utilizada.
3. METODOLOGIAS DE DESARROLLO DE SOFTWARE
1.1 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 interactuacció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.
1.2 Metodologías Pesadas.
1.2.1 Introducción.
Son las más tradicionales, se centran en la definición detallada de los
procesos y tareas a realizar, herramientas a utilizar, y requiere una extensa
documentación, ya que pretende prever todo de antemano. Este tipo de
metodologías son mas eficaces y necesarias cuanto mayor es el proyecto
que se pretende realizar respecto a tiempo y recursos que son necesarios
emplear, donde una gran organización es requerida.
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.
−
Transmisión : Obtener el producto acabado y definido.
4. 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 esta 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 analizará la opinión y
sugerencias de los inversores.
−
Elevar el nivel de abstracción Motivar el uso de 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.
5. Diagrama del esfuerzo de actividades según la etapa del proyecto:
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 de 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.,...
6. 1.3 Metodologías Ágiles.
1.3.1 Introducción.
Esta metodología nace en febrero del 2001 en una reunión celebrada en
UtahEEUU.
Principales ideas de la metodología ágil:
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 y consiste
basicamente 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 interpesonales como clave para el éxito en el
desarrollo de software.
Promueve el trabajo en equipo, preocupandose 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.
7. 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 cual implementar en
cada iteración centrandose 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 guias al equipo de forma que se apliquen las
practicas XP y se vaya siguiendo el proceso correctamente.
Consultor : Es un miembro externo del equipo con un conocimiento
especifico en algún tema que es necesario para el proyecto, en el que
surgan problemas.
Gestor (Big boss) Es el vinculo entre clientes y programadores,
:
ayuda a que el equipo trabaje efectivamente creando las condiciones
adecuadas. Su labor esencial es la de coordinación.
1.4 Referencias Web o bibliografía utilizada.
Archivo .pdf de la Universidad Politécnica de Valencia con una amplia explicación sobre
metodologías ágiles y la programación extrema (XP).
http://www.willydev.net/descargas/prev/TodoAgil.pdf
Página web en la que habla de las metodologías mas utilizadas RUP, XP y MSF.
http://www.informatizate.net/articulos/metodologias_de_desarrollo_de_software_07062004.html
Página de wikipedia sobre Metodología RUP.
http://es.wikipedia.org/wiki/RUP
Clara e interesante web sobre RUP.
http://www.scribd.com/doc/297224/RUP
Presentación de las Metodologías Agiles en la que habla de la programación extrema
(XP).
http://www.emarket.cl/dir/umayor/ingsw/Apoyo/GRUPO_1_PROGRAMACION_AGIL.ppt
Archivo pdf que nos habla de las ventajas que existen al utilizar las metodologías Agiles.
http://www.willydev.net/InsiteCreation/v1.0/descargas/prev/metodologiasagiles.pdf