viernes, 26 de octubre de 2012

Metodología XP - Extreme Programing (XP)

METODOLOGÍA XP
Es una metodología de desarrollo de la ingeniería de software formulada por Kent Beck, autor del primer libro sobre la materia, Extreme Programming Explained: Embrace Change (1999). Es el más destacado de los procesos ágiles de desarrollo de software. Al igual que éstos, la programación extrema se diferencia de las metodologías tradicionales principalmente en que pone más énfasis en la adaptabilidad que en la previsibilidad. Los defensores de XP consideran que los cambios de requisitos sobre la marcha son un aspecto natural, inevitable e incluso deseable del desarrollo de proyectos. Creen que ser capaz de adaptarse a los cambios de requisitos en cualquier punto de la vida del proyecto es una aproximación mejor y más realista que intentar definir todos los requisitos al comienzo del proyecto e invertir esfuerzos después en controlar los cambios en los requisitos.
Se puede considerar la programación extrema como la adopción de las mejores metodologías de desarrollo de acuerdo a lo que se pretende llevar a cabo con el proyecto, y aplicarlo de manera dinámica durante el ciclo de vida del software.


Kent Beck:

Kent Beck
Es ingeniero de software estadounidense, uno de los creadores de las metodologías de desarrollo de software de programación extrema (eXtreme Programming o XP) y el desarrollo guiado por pruebas (Test-Driven Development o TDD), también llamados metodología ágil. Beck fue uno de los 17 firmantes originales del Manifiesto Ágil en 2001.
Beck posee un máster en ciencias en el área de ciencias de la computación de la Universidad de Oregon.
Fue pionero en patrones de diseño de software, el redescubrimiento del test-driven development, así como también del la aplicación comercial de Smalltalk. Con Ward Cunningham popularizó la metodología de tarjetas CRC, y con Erich Gamma el framework de pruebas unitarias para Java conocido como JUnit.
Kent vive en Medford, Oregon y actualmente trabaja para Facebook


INTRODUCCION:

 Es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. XP se basa en realimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los cambios. XP se define como especialmente adecuada para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un alto riesgo técnico. 



¿Que es Programación Extrema o XP?


  • Metodología liviana de desarrollo de software.
  • Conjunto de practicas y reglas empleadas para desarrollar software.
  • Basada en diferentes ideas acerca de cómo enfrentar ambientes muy cambiantes.
  • Originada en el proyecto C3 para Chrysler.
  • En vez de planificar, analizar y diseñar para el futuro distante, hacer todo esto un poco cada vez, a través de todo el proceso de desarrollo.


Valores:

Los Valores originales de la programación extrema son: simplicidad, comunicación, retroalimentación (feedback) y coraje. Un quinto valor, respeto, fue añadido en la segunda edición de Extreme Programming Explained. Los cinco valores se detallan a continuación:

  1. Simplicidad: La simplicidad es la base de la programación extrema. Se simplifica el diseño para agilizar el desarrollo y facilitar el mantenimiento.
  2. Comunicación: La comunicación se realiza de diferentes formas. Para los programadores el código comunica mejor cuanto más simple sea. Si el código es complejo hay que esforzarse para hacerlo inteligible. El código autodocumentado es más fiable que los comentarios ya que éstos últimos pronto quedan desfasados con el código a medida que es modificado.
  3. Retroalimentación (feedback): Al estar el cliente integrado en el proyecto, su opinión sobre el estado del proyecto se conoce en tiempo real. Al realizarse ciclos muy cortos tras los cuales se muestran resultados, se minimiza el tener que rehacer partes que no cumplen con los requisitos y ayuda a los programadores a centrarse en lo que es más importante. Considérense los problemas que derivan de tener ciclos muy largos.
  4. Coraje o valentía: Muchas de las prácticas implican valentía. Una de ellas es siempre diseñar y programar para hoy y no para mañana. Esto es un esfuerzo para evitar empantanarse en el diseño y requerir demasiado tiempo y trabajo para implementar todo lo demás del proyecto.
  5. Respeto: El respeto se manifiesta de varias formas. Los miembros del equipo se respetan los unos a otros, porque los programadores no pueden realizar cambios que hacen que las pruebas existentes fallen o que demore el trabajo de sus compañeros.

Ventajas: 
  • Programación organizada.
  • Menor taza de errores.
  • Satisfacción del programador.

Desventajas: 
  • Es recomendable emplearlo solo en proyectos a corto plazo.
  • Altas comisiones en caso de fallar. 

CONCLUSIONES 

  • Apostolado de metodologías exitosas.
  • Aporte de la experiencia práctica a los modelos teóricos.
  • Enfoque de conjunto de prácticas como rompecabezas.
  • Tecnología en expansión.
  • Importancia de revisitar las metodologías desde la experiencia práctica.



viernes, 12 de octubre de 2012

METODOLOGÍA DE DESARROLLO DE SOFTWARE EN MODELO ESPIRAL


CICLO DE VIDA EN ESPIRAL

Este modelo se basa en la necesidad continua de refinar los requerimientos para un determinado proyecto. El modelo espiral es eficaz cuando se utiliza para el rápido desarrollo de proyectos muy pequeños. Esta logra consigo el acercamiento entre el equipo de desarrollo y el cliente porque el cliente es implicado en todas las etapas proporcionando la regeneración de proyecto y la aprobación del mismo. De cualquier forma, el modelo en espiral no incorpora puntos de comprobación claros. Por lo tanto, el proceso de desarrollo puede llegar a ser caótico. 

En este modelo hay cuatro actividades que envuelven a las etapas:

  1. PLANIFICACIÓN: Relevamiento de requerimientos iniciales o luego de una iteracion.

  2. ANÁLISIS DE RIESGO: De acuerdo con el relevamiento de requerimientos decidimos si continuamos con el desarrollo.
  3. IMPLEMENTACIÓN: Desarrollamos un prototipo basado en los requerimientos.
  4. EVALUACIÓN: El cliente evalúa el prototipo, si da su conformidad, termina el proyecto. En caso contrario, incluimos los nuevos requerimientos solicitados por el cliente en la siguiente iteracion.


CICLO DE VIDA EN ESPIRAL


VENTAJAS:
  • Reduce Riesgos del Proyecto.
  • Incorpora Objetivos de Calidad.
  • Integra el Desarrollo con el Mantenimiento. 
Además es posible tener en cuenta mejoras y nuevos requerimientos sin romper con la metodología, ya que este ciclo de vida no es rígido ni estático.

DESVENTAJAS:
  • Genera Mucho Tiempo en el Desarrollo del Sistema.
  • Modelo Costoso.
  • Requiere Experiencia en la Identificación de Riesgos.
¿QUIEN LO CREO & EN QUE AÑO?:

Fue diseñado por Barry W. Boehm en 1988. Boehm es un ingeniero informático estadounidense y también es profesor emérito de esta materia en el departamento de ciencias tecnológicas en la Universidad del Sur de California.