en Este capítulo se da una visión general de la Programación Extrema.
¿Qué es Agile?
la palabra ‘ágil’ significa-
-
capaz de mover su cuerpo rápida y fácilmente.
-
capaz de pensar rápida y claramente.,
en los negocios, ‘agile’ se utiliza para describir formas de planificar y hacer el trabajo en el que se entiende que hacer cambios según sea necesario es una parte importante del trabajo. «Responsabilidad empresarial» significa que una empresa está siempre en condiciones de tener en cuenta los cambios del mercado.
Ref: Cambridge Dictionaries online (en inglés).
en el desarrollo de software, el término «ágil» Se adapta para significar » la capacidad de responder a los cambios − cambios de los requisitos, la tecnología y las personas.,’
Agile Manifesto
un equipo de desarrolladores de software publicó el Agile Manifesto en 2001, destacando la importancia del equipo de desarrollo, adaptándose a los requisitos cambiantes y la participación del cliente.
El Manifiesto Ágil afirma que −
estamos descubriendo mejores formas de desarrollar software haciéndolo y ayudando a otros a hacerlo. A través de este trabajo, hemos llegado a valorar −
-
individuos e interacciones sobre procesos y herramientas.
-
software de trabajo sobre documentación completa.,
-
colaboración con el cliente sobre la negociación de contratos.
-
responder al cambio sobre seguir un plan.
es decir, mientras hay valor en los elementos de la derecha, valoramos más los elementos de la izquierda.
características de Agility
las siguientes son las características de Agility −
-
Agility en el desarrollo de software ágil se centra en la cultura de todo el equipo con equipos multidisciplinarios y multifuncionales que se empoderan y se autoorganizan.
-
fomenta la responsabilidad compartida y la rendición de cuentas.,
-
Facilita la comunicación efectiva y la colaboración continua.
-
el enfoque de todo el equipo evita retrasos y tiempos de espera.
-
Las entregas frecuentes y continuas garantizan una retroalimentación rápida que a su vez permite que el equipo se alinee con los requisitos.
-
la colaboración facilita la combinación de diferentes perspectivas oportunas en la implementación, la corrección de defectos y la adaptación de los cambios.
-
El Progreso es constante, sostenible y predecible, enfatizando la transparencia.,
tendencias de ingeniería de Software
las siguientes tendencias se observan en ingeniería de software −
-
reunir los requisitos antes de que comience el desarrollo. Sin embargo, si los requisitos se van a cambiar más tarde, entonces lo siguiente se nota generalmente −
-
resistencia a los cambios en una etapa posterior del desarrollo.
-
Hay un requisito de un proceso de cambio riguroso que implica un tablero de control de cambios que incluso puede empujar los cambios a versiones posteriores.,
-
la entrega de un producto con requisitos obsoletos, no cumpliendo con las expectativas del cliente.
-
incapacidad para acomodar los inevitables cambios de dominio y cambios tecnológicos dentro del presupuesto.
-
-
encuentre y elimine defectos Al principio del ciclo de vida de desarrollo para reducir los costos de corrección de defectos.
-
la prueba comienza solo después de completar la codificación y la prueba se considera responsabilidad de un probador, aunque el probador no participa en el desarrollo.
-
mide y rastrea el proceso en sí., Esto se vuelve costoso debido a –
-
monitoreo y seguimiento a nivel de tarea y a nivel de recursos.
-
definir mediciones para guiar el desarrollo y medir cada actividad en el desarrollo.
-
intervención de gestión.
-
-
Elaborar, analizar y verificar los modelos antes del desarrollo.
-
se supone que un modelo debe usarse como un framework. Sin embargo, centrarse en el modelo y no en el desarrollo que es crucial no producirá los resultados esperados.,
-
-
no se da suficiente énfasis a la codificación, que es el corazón del desarrollo. Las razones de ser –
-
Los desarrolladores, que son responsables de la producción, generalmente no están en constante comunicación con los clientes.
-
la codificación se ve como una traducción del diseño y la implementación efectiva en el código casi nunca se repite en el diseño.
-
Las pruebas se consideran la puerta de enlace para verificar los defectos antes de la entrega.,
-
los sobrecostes de programación de las primeras etapas de desarrollo se compensan pasando por alto los requisitos de prueba para garantizar entregas oportunas.
-
esto da lugar a sobrecostos que corrigen defectos después de la entrega.
-
Los probadores se hacen responsables de la calidad del producto, aunque no estuvieron involucrados durante todo el curso del desarrollo.
limitar los recursos (principalmente el equipo) para acomodar el presupuesto conduce a −
-
recursos sobre asignación
-
agotamiento del equipo.,
-
pérdida en la utilización efectiva de las competencias del equipo.
-
el Desgaste.
programación extrema −una forma de manejar las deficiencias comunes
ingeniería de Software implica –
-
creatividad
-
aprendizaje y mejora a través de ensayos y errores
-
iteraciones
La programación extrema se basa en estas actividades y codificación. Es la actividad de diseño detallada (no la única) con múltiples bucles de retroalimentación ajustados a través de una implementación efectiva, pruebas y refactorización continua.,
la Programación Extrema se basa en los siguientes valores −
-
Comunicación
-
la Sencillez
-
Comentarios
-
Valor
-
el Respeto
¿Qué es la Programación Extrema?
XP es una forma ligera, eficiente, de bajo riesgo, flexible, predecible, científica y divertida de desarrollar un software.
eXtreme Programming (XP) fue concebido y desarrollado para abordar las necesidades específicas de desarrollo de software por equipos pequeños frente a requisitos vagos y cambiantes.,
La programación extrema es una de las metodologías ágiles de desarrollo de software. Proporciona valores y principios para guiar el comportamiento del equipo. Se espera que el equipo se auto-organice. La programación extrema proporciona prácticas básicas específicas donde –
-
cada práctica es simple y autocompleta.
-
La combinación de prácticas produce un comportamiento más complejo y emergente.
Embrace Change
una suposición clave de la programación extrema es que el costo de cambiar un programa puede mantenerse principalmente constante a lo largo del tiempo.,>Esto se puede lograr con −
-
énfasis en la retroalimentación continua del cliente
-
iteraciones cortas
-
diseño y rediseño
-
codificación y pruebas con frecuencia
-
eliminando defectos tempranamente, reduciendo así los costos
-
manteniendo al cliente involucrado durante todo el desarrollo
-
entregar un producto de trabajo al cliente
Extreme Programming en pocas palabras
Extreme Programming implica −
-
escribir pruebas unitarias antes de programar y mantener todas las pruebas ejecutándose en todo momento., Las pruebas unitarias se automatizan y eliminan los defectos de forma temprana, reduciendo así los costes.
-
comenzando con un diseño simple lo suficiente para codificar las características a mano y rediseñar cuando sea necesario.
-
programación en pares (llamada programación en pares), con dos programadores en una pantalla, turnándose para usar el teclado. Mientras que uno de ellos está en el teclado, el otro constantemente revisa y proporciona entradas.
-
integrar y probar todo el sistema varias veces al día.,
-
poner un sistema de trabajo mínimo en la producción rápidamente y actualizarlo cuando sea necesario.
-
mantener al cliente involucrado todo el tiempo y obtener retroalimentación constante.
la iteración facilita los cambios de adaptación a medida que el software evoluciona con los requisitos cambiantes.
¿por Qué se llama «Extreme?»
La programación extrema lleva los principios y prácticas eficaces a niveles extremos.
-
Las revisiones de código son efectivas ya que el código se revisa todo el tiempo.,
-
la prueba es efectiva ya que hay regresión y pruebas continuas.
-
El diseño es efectivo ya que todo el mundo necesita refactorizar a diario.
-
Las pruebas de integración son importantes como integrar y probar varias veces al día.
-
las iteraciones cortas son efectivas como el juego de planificación para la planificación de lanzamientos y la planificación de iteraciones.
historia de la programación extrema
Kent Beck, Ward Cunningham y Ron Jeffries formularon la programación extrema en 1999. Los otros colaboradores son Robert Martin y Martin Fowler.,
a mediados de los 80, Kent Beck y Ward Cunningham iniciaron la programación de parejas en Tektronix. En los años 80 y 90, la cultura Smalltalk produjo refactorización, Integración Continua, pruebas constantes y una estrecha participación del cliente. Esta cultura fue más tarde generalizada a los otros ambientes.
a principios de los 90, se desarrollaron valores centrales dentro de la Comunidad de patrones, grupo Hillside. En 1995, Kent resumió esto en las mejores prácticas de Smalltalk, y en 1996, Ward lo resumió en episodios.
en 1996, Kent añadió pruebas unitarias y metáforas en Hewitt., En 1996, Kent había tomado el proyecto Chrysler C3, al que Ron Jeffries fue agregado como entrenador. Las prácticas fueron refinadas en C3 y publicadas en Wiki.
Las prácticas de Scrum se incorporaron y adaptaron como el juego de planificación. En 1999, Kent publicó su libro «Extreme Programming Explained». En el mismo año, Fowler publicó su libro Refactoring.
La programación extrema ha estado evolucionando desde entonces, y la evolución continúa hasta hoy.
éxito en la industria
el éxito de los proyectos, que siguen prácticas de programación extremas, se debe a −
-
rápido desarrollo.,
-
respuesta inmediata a los requisitos cambiantes del cliente.
-
concéntrese en tasas de defectos bajas.
-
sistema que devuelve un valor constante y consistente al cliente.
-
Alta satisfacción del cliente.
-
reducción de costes.
-
cohesión del equipo y satisfacción de los empleados.
Extreme Programming Advantages
Extreme Programming resuelve los siguientes problemas que a menudo se enfrentan en los proyectos de desarrollo de software −
-
Slipped schedules − y los ciclos de desarrollo alcanzables aseguran entregas oportunas.,
-
proyectos cancelados: el enfoque en la participación continua del cliente garantiza la transparencia con el cliente y la resolución inmediata de cualquier problema.
-
costos incurridos en los cambios: las pruebas exhaustivas y continuas aseguran que los cambios no rompan la funcionalidad existente. Un sistema de trabajo en ejecución siempre garantiza el tiempo suficiente para acomodar los cambios de manera que las operaciones actuales no se vean afectadas.
-
defectos de producción y posteriores a la entrega: se hace hincapié en las pruebas unitarias para detectar y corregir los defectos de forma temprana.,
-
malentender el negocio y / o dominio − hacer que el cliente forme parte del equipo garantiza una comunicación y aclaraciones constantes.
-
cambios en el negocio-los cambios se consideran inevitables y se acomodan en cualquier momento.
-
rotación del personal − la colaboración intensiva en equipo garantiza el entusiasmo y la buena voluntad. La cohesión de múltiples disciplinas fomenta el espíritu de equipo.