Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El problema de la productividad
Los documentos y diagramas se producen de las fases desde la Conceptualizacin hasta el Diseo. Estos documentos incluyen la descripcin de los requisitos, diagramas UML como casos de uso, diagramas de clases, de actividad, etc. Se produce un montn de papeles considerable. Este montn de papeles pierde su valor en cuanto se empieza a crear el cdigo, sobre todo si es un sistema que va cambiando con frecuencia dado que no hay tiempo para actualizar toda la documentacin y los cambios se hacen slo en el cdigo. Se pierde la conexin entre documentacin y cdigo.
Qu es XP?
Un proceso ligero, de bajo riesgo, flexible, predecible, cientfico y divertido de desarrollar software. Kent Beck (Extreme Programming Explained) Naci en 1996 Proyecto C3 de DaimlerChrysler
Caractersticas de XP
Metodologa creada a base de prueba y error. Surge considerando 4 valores que pueden mejorar cualquier proyecto de software: Simplicidad, Comunicacin, Realimentacin, Coraje. Expresada en forma de 12 prcticas (algunas existentes desde hace aos), que se soportan las unas a las otras y conforman un conjunto completo.
XP en la prctica (i)
Retroalimentacin a escala fina:
Desarrollo guiado por pruebas Planificacin iterativa Cliente como parte del equipo Programacin en pares
Proceso continuo:
XP en la prctica (ii)
Entendimiento compartido:
Diseo simple Metforas del sistema Propiedad colectiva del cdigo Estndares de codificacin
Ciclo de la XP
Planificacin
En el juego de planificacin, el cliente y los programadores negocian el alcance del proyecto para cada iteracin. El factor crtico es permitir al cliente tomar las decisiones de negocio y al equipo de desarrollo tomar las decisiones tcnicas.
Diseo simple
El diseo debe ser lo ms simple posible: no introducir estructura, ni funcionalidad antes de tiempo. Se puede aadir complejidad ms adelante. Inconveniente: Vencer la tendencia al gran diseo previo
Integracin continua
Todos los cambios deben ser integrados a la base del cdigo al menos diariamente. Las pruebas deben correr al 100% antes y despus de la integracin. Cada nueva versin debe tener la mnima funcionalidad extra que tiene sentido. Encaja con release early, release often Ventajas: tener realimentacin de los usuarios y ofrecer pronto nueva funcionalidad (+xito).
Programacin en pares
La Programacin en Pares requiere que dos desarrolladores participen en un proyecto en una misma estacin de trabajo. Cada miembro lleva a cabo la accin que el otro no est haciendo en ese momento: Mientras uno redacta Pruebas de Unidad el otro piensa acerca de la clase que satisfar a dicha prueba, por ejemplo. Los estudios demuestran que, tras aprender Habilidades Personales dos programadores son ms que doblemente productivos que uno slo para una tarea determinada.
Refactorizacin (i)
Es una tcnica disciplinada de reestructurar cualquier cdigo existente, alterando su estructura interna sin modificar su comportamiento externo.
Refactorizacin (ii)
Si un programa funciona pero est mal diseado, pronto surgirn problemas a la hora de actualizarlo. Los problemas ms comunes pueden ser catalogados como olor de cdigo (ya que la acumulacin de los mismos provocan que el cdigo apeste). Existen listas de refactorizaciones. Ejemplo:
Add Parameter
A method needs more information from its caller.
El proyecto consiste en el desarrollo de un sistema de gestin para una empresa de confecciones. En dicha gestin de la empresa se incluyen gestin de pedidos, gestin de clientes (tanto principal como los de temporada), facturacin, gestin de productos, gestin de materias primas, etc...
Implementacin:
Base de Datos Interfaces de Usuario Cdigo Fuente
Pruebas
ltimas ideas
El mtodo de desarrollo empleado por la programacin extrema y el que suele llevarse a cabo en la generacin de Software Libre tienen grandes parecidos. Hay algunas prcticas de la programacin extrema que no se usan de manera mayoritaria (pruebas de unidad y de aceptacin, metfora y refactorizacin) y que son muy interesantes y provechosas. XP y bases de datos: cuidar que tanto BDs relacionales como orientadas al objeto sean flexibles, de manera de migrar fcilmente los datos en caso de cambios. En cuanto al lanzamiento de cada mini-versin, usar una estacin de integracin que permite a los desarrolladores observar quin y cundo se est realizando, manteniendo estabilidad en el sistema.