viernes, 24 de mayo de 2013




        METODOLOGÍAS DE DESARROLLO DE SOFTWARE


       
Introducción a las Metodologías Pesadas 
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 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.


Proceso Unificado de Desarrollo de Software (RUP)
Actualmente no existe una metodología de desarrollo de software que sea global, es decir que encierre características que puedan  Metodología RUP aplicarse a cualquier tipo de proyecto. Las características de cada proyecto conjuntamente con su equipo de desarrollo, recursos, y requisitos exigen que se escoja una que se adapte en la mayor medida posible a estas características


 











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 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.







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.




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.




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.




Introducción a las Metodologías Ágiles
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.


Programación Extrema o XP (EXTREME PROGRAMMING)
Es una metodología ágil para el desarrollo de software Metodología XP y 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.
La metodología de XP se basa en:

§  Pruebas Unitarias: se basa en las pruebas realizadas a los principales procesos, de tal manera que se adelanta en algo hacia el futuro, se puede hacer pruebas de las fallas que pudieran ocurrir. Es como si se adelantara a obtener los posibles errores.
§  Re fabricación: se desarrolla en la reutilización de código, para lo cual se crean patrones o modelos estándares, siendo más flexible al cambio.
§  Programación en pares: una particularidad de esta metodología es que propone la programación en pares, la cual consiste en que dos desarrolladores participen en un proyecto en una misma estación de trabajo. Cada miembro lleva a cabo la acción que el otro no está haciendo en ese momento.

  





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 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 practicas 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 surgan 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. Encías
§   




Metodología Scrum
El mejor resultado posible de un proyecto. Estas prácticas se apoyan unas a otras y su selección tiene origen en un estudio de la manera de trabajar de equipos altamente productivos. Scrum, más que una metodología de desarrollo software, es una forma de auto-gestión de los equipos de programadores. Un grupo de programadores deciden cómo hacer sus tareas y cuánto van a tardar en ello. Scrum ayuda a que trabajen todos juntos, en la misma dirección, con un objetivo claro. Scrum permite además seguir de forma clara el avance de las tareas a realizar, de forma que los "jefes" puedan ver día a día cómo progresa el trabajo. “En Scrum se realizan entregas parciales y regulares del resultado final del proyecto, priorizadas por el beneficio que aportan al receptor del proyecto. Por ello, Scrum está especialmente indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto.


Referencias
§  Eumed.net. [en línea] RUP Etapas Diseño. [Fecha de consulta: 25 de mayo del 2010.] Disponibles en Internet:http://www.eumed.net/libros/2009c/584/RUP%20Diseno%20e%20implementacion%20del%20sistema.htm
§  ProyectosAgiles.org. [en línea] Qué es SCRUM/ proyectoÁgiles. [fecha de consulta: 20 de enero de 2010.] Disponible en Internet: http
§  Solís, Manuel Calero. Una explicación de la programación extrema (XP). [en línea]. ExplicaXP.pdf. [Fecha de consulta: 5 de febrero de 2010]. Disponible en Internet: < http://www.willydev.net/descargas/prev/ExplicaXp.pd

No hay comentarios:

Publicar un comentario