Articulo de referencia

Programación extrema

Planificación y ciclos de retroalimentación en la programación extrema La programación extrema ( XP ) es una metodología de desarrollo de software destinada a mejorar la calidad...

Planificación y ciclos de retroalimentación en la programación extrema

La programación extrema ( XP ) es una metodología de desarrollo de software destinada a mejorar la calidad del software y su capacidad de respuesta a los requisitos cambiantes del cliente. Como un tipo de desarrollo de software ágil , [ 1 ] [ 2 ] [ 3 ] aboga por lanzamientos frecuentes en ciclos de desarrollo cortos, con el fin de mejorar la productividad e introducir puntos de control en los que se puedan adoptar nuevos requisitos del cliente.

Otros elementos de la programación extrema incluyen programar en parejas o realizar revisiones de código exhaustivas , pruebas unitarias de todo el código, no programar funcionalidades hasta que sean realmente necesarias , una estructura de gestión plana, simplicidad y claridad del código, anticipar cambios en los requisitos del cliente a medida que pasa el tiempo y se comprende mejor el problema, y ​​comunicación frecuente con el cliente y entre programadores. [ 2 ] [ 3 ] [ 4 ] La metodología toma su nombre de la idea de que los elementos beneficiosos de las prácticas tradicionales de ingeniería de software se llevan a niveles "extremos". Como ejemplo, las revisiones de código se consideran una práctica beneficiosa; llevada al extremo, el código puede revisarse continuamente (es decir, la práctica de programación en parejas).

Historia

Kent Beck desarrolló la programación extrema durante su trabajo en el proyecto de nómina del Sistema Integral de Compensación (C3) de Chrysler . [ 5 ] Beck se convirtió en el líder del proyecto C3 en marzo de 1996. Comenzó a refinar la metodología de desarrollo utilizada en el proyecto y escribió un libro sobre la metodología ( Extreme Programming Explained , publicado en octubre de 1999). [ 5 ] Chrysler canceló el proyecto C3 en febrero de 2000, después de siete años, cuando Daimler-Benz adquirió la empresa. [ 6 ] Ward Cunningham fue otra influencia importante en XP.

Muchas prácticas de programación extrema existen desde hace tiempo; la metodología lleva las " mejores prácticas " a niveles extremos. Por ejemplo, la "práctica de desarrollo basado en pruebas, que consiste en planificar y escribir pruebas antes de cada microincremento" se utilizó ya en el Proyecto Mercury de la NASA , a principios de la década de 1960. [ 7 ] Para acortar el tiempo total de desarrollo, se han desarrollado algunos documentos de prueba formales (como los de las pruebas de aceptación ) en paralelo con (o poco antes de) que el software esté listo para las pruebas. Un grupo de pruebas independiente de la NASA puede escribir los procedimientos de prueba, basándose en requisitos formales y límites lógicos, antes de que los programadores escriban el software y lo integren con el hardware. XP lleva este concepto al extremo, escribiendo pruebas automatizadas (a veces dentro de módulos de software) que validan el funcionamiento incluso de pequeñas secciones de código, en lugar de probar solo las características más grandes.

Orígenes

Dos influencias principales marcaron el desarrollo del software en la década de 1990:

Los requisitos, que cambiaban rápidamente, exigían ciclos de vida de los productos más cortos y, a menudo, entraban en conflicto con los métodos tradicionales de desarrollo de software.

El Sistema Integral de Compensación de Chrysler (C3) se inició para determinar la mejor manera de utilizar tecnologías orientadas a objetos, utilizando los sistemas de nómina de Chrysler como objeto de investigación, con Smalltalk como lenguaje y GemStone como capa de acceso a datos . Chrysler contrató a Kent Beck , [ 5 ] un destacado profesional de Smalltalk, para realizar la optimización del rendimiento del sistema, pero su rol se amplió al observar varios problemas con el proceso de desarrollo. Aprovechó esta oportunidad para proponer e implementar algunos cambios en las prácticas de desarrollo, basándose en su trabajo con su colaborador frecuente, Ward Cunningham . Beck describe la concepción inicial de los métodos: [ 8 ]

La primera vez que me pidieron que dirigiera un equipo, les pedí que hicieran algunas de las cosas que consideraba sensatas, como pruebas y revisiones. La segunda vez había mucho más en juego. Pensé: "¡Al diablo con todo, al menos esto dará para un buen artículo!", y les pedí al equipo que se esforzaran al máximo en lo que consideraba esencial y que dejaran de lado todo lo demás.

Beck invitó a Ron Jeffries al proyecto para que ayudara a desarrollar y perfeccionar estos métodos. Posteriormente, Jeffries actuó como mentor para inculcar estas prácticas como hábitos en el equipo C3.

La información sobre los principios y prácticas de XP se difundió a nivel mundial a través de debates en la wiki original , WikiWikiWeb de Cunningham . Diversos colaboradores discutieron y ampliaron las ideas, dando lugar a algunas metodologías derivadas (véase desarrollo ágil de software ). Asimismo, los conceptos de XP se han explicado durante varios años mediante un mapa del sistema hipertextual en el sitio web de XP ( http://www.extremeprogramming.org, c. 1999 ).

Beck editó una serie de libros sobre XP, comenzando con su propio Extreme Programming Explained (1999, ISBN 0-201-61641-6), difundiendo sus ideas a un público mucho más amplio. Los autores de la serie abordaron diversos aspectos relacionados con la XP y sus prácticas. La serie incluyó un libro crítico de dichas prácticas.

Concepto

Objetivos

El libro "Extreme Programming Explained" describe la programación extrema como una disciplina de desarrollo de software que organiza a las personas para producir software de mayor calidad de forma más productiva.

XP intenta reducir el costo de los cambios en los requisitos mediante múltiples ciclos de desarrollo cortos, en lugar de uno largo. [ 9 ] En esta doctrina, los cambios son un aspecto natural, inevitable y deseable de los proyectos de desarrollo de software, y deben planificarse, en lugar de intentar definir un conjunto estable de requisitos.

La programación extrema también introduce una serie de valores, principios y prácticas básicas que se suman a la metodología ágil.

Actividades

XP describe cuatro actividades básicas que se realizan dentro del proceso de desarrollo de software: codificación, pruebas, escucha y diseño. Cada una de estas actividades se describe a continuación.

Codificación

Los defensores de XP argumentan que el único producto verdaderamente importante del proceso de desarrollo de sistemas es el código: las instrucciones de software que una computadora puede interpretar. Sin código, no hay un producto funcional.

La codificación puede utilizarse para encontrar la solución más adecuada. También puede ayudar a comunicar ideas sobre problemas de programación. Un programador que se enfrenta a un problema complejo o que tiene dificultades para explicar la solución a otros programadores, puede codificarla de forma simplificada y usar el código para ilustrar su idea. Según quienes defienden esta postura, el código siempre es claro y conciso, y no admite más de una interpretación. Otros programadores pueden aportar comentarios sobre este código codificando también sus propias ideas.

Pruebas

Las pruebas son fundamentales para la programación extrema. [ 10 ] El enfoque de la programación extrema es que si unas pocas pruebas pueden eliminar algunos defectos, muchas pruebas pueden eliminar muchos más.

  • Las pruebas unitarias determinan si una función determinada funciona según lo previsto. Los programadores escriben tantas pruebas automatizadas como se les ocurran que puedan provocar fallos en el código; si todas las pruebas se ejecutan correctamente, la codificación está completa. Cada fragmento de código escrito se prueba antes de pasar a la siguiente función.
  • Las pruebas de aceptación verifican que los requisitos, tal como los entienden los programadores, satisfacen las necesidades reales del cliente.

Inicialmente, se fomentaba la realización de pruebas de integración de todo el sistema como una actividad diaria al final del día para la detección temprana de interfaces incompatibles. Sin embargo, estas pruebas se han reducido a una frecuencia semanal o incluso menor, dependiendo de la estabilidad de las interfaces generales del sistema. [ 11 ]

Escuchando

Los programadores deben escuchar las necesidades de los clientes y comprender la lógica de negocio requerida. Deben entender estas necesidades lo suficientemente bien como para brindar al cliente información sobre los aspectos técnicos de la posible solución del problema, así como sobre si este puede resolverse dentro de las limitaciones establecidas. La comunicación entre el cliente y el programador se aborda con mayor profundidad en el juego de planificación .

Diseño

Desde el punto de vista de la simplicidad, se podría decir que el desarrollo de un sistema no requiere más que codificación, pruebas y escucha. Si estas actividades se realizan correctamente, el resultado debería ser siempre un sistema funcional. En la práctica, esto no siempre funciona. Se puede avanzar mucho sin un diseño previo, pero tarde o temprano se producirá un estancamiento. El sistema se vuelve demasiado complejo y las dependencias internas dejan de ser claras. Esto se puede evitar creando una estructura de diseño que organice la lógica del sistema. Un buen diseño evitará muchas dependencias internas; esto significa que modificar una parte del sistema no afectará a las demás.

Valores

La programación extrema reconoció inicialmente cuatro valores en 1999: comunicación, simplicidad, retroalimentación y valentía. En la segunda edición de Extreme Programming Explained se añadió un nuevo valor: el respeto. Estos cinco valores se describen a continuación.

Comunicación

La creación de sistemas de software requiere comunicar los requisitos del sistema a los desarrolladores. En las metodologías formales de desarrollo de software, esta tarea se realiza mediante documentación. Las técnicas de programación extrema pueden considerarse métodos para generar y difundir rápidamente el conocimiento institucional entre los miembros de un equipo de desarrollo. El objetivo es brindar a todos los desarrolladores una visión compartida del sistema que coincida con la de los usuarios. Para ello, la programación extrema favorece los diseños sencillos, las metáforas comunes, la colaboración entre usuarios y programadores, la comunicación verbal frecuente y la retroalimentación.

Sencillez

La programación extrema fomenta comenzar con la solución más simple. La funcionalidad adicional se puede agregar posteriormente. La diferencia entre este enfoque y los métodos de desarrollo de sistemas más convencionales radica en el enfoque en diseñar y codificar para las necesidades de hoy en lugar de las de mañana, la próxima semana o el próximo mes. Esto a veces se resume como el enfoque " No lo vas a necesitar " (YAGNI). [ 12 ] Los defensores de XP reconocen la desventaja de que esto a veces puede implicar más esfuerzo mañana para cambiar el sistema; afirman que esto se compensa con creces por la ventaja de no invertir en posibles requisitos futuros que podrían cambiar antes de ser relevantes. Codificar y diseñar para requisitos futuros inciertos implica el riesgo de gastar recursos en algo que podría no ser necesario, mientras que tal vez se retrasen características cruciales. En relación con el valor de la "comunicación", la simplicidad en el diseño y la codificación debería mejorar la calidad de la comunicación. Un diseño simple con un código muy simple podría ser fácilmente comprendido por la mayoría de los programadores del equipo.

Comentario

En la programación extrema, la retroalimentación se relaciona con diferentes dimensiones del desarrollo del sistema:

  • Retroalimentación del sistema: al escribir pruebas unitarias [ 5 ] o ejecutar pruebas de integración periódicas, los programadores obtienen retroalimentación directa del estado del sistema después de implementar cambios.
  • Comentarios del cliente: Las pruebas funcionales (también conocidas como pruebas de aceptación ) son elaboradas por el cliente y los evaluadores. De esta manera, recibirán información concreta sobre el estado actual de su sistema. Esta revisión se realiza cada dos o tres semanas para que el cliente pueda orientar fácilmente el desarrollo.
  • Comentarios del equipo: Cuando los clientes plantean nuevos requisitos durante la fase de planificación, el equipo proporciona directamente una estimación del tiempo que llevará implementarlos.

La retroalimentación está estrechamente relacionada con la comunicación y la simplicidad. Los fallos del sistema se comunican fácilmente mediante una prueba unitaria que demuestre que una parte específica del código fallará. La retroalimentación directa del sistema indica a los programadores que deben recodificar esa parte. Un cliente puede probar el sistema periódicamente según los requisitos funcionales, conocidos como historias de usuario . [ 5 ] Citando a Kent Beck : «El optimismo es un riesgo laboral de la programación. La retroalimentación es el tratamiento». [ 13 ]

Coraje

Varias prácticas encarnan el coraje. Una es el mandamiento de diseñar y programar siempre para hoy y no para mañana. Esto es un esfuerzo para evitar estancarse en el diseño y requerir mucho esfuerzo para implementar cualquier otra cosa. El coraje permite a los desarrolladores sentirse cómodos refactorizando su código cuando sea necesario. [ 5 ] Esto significa revisar el sistema existente y modificarlo para que los cambios futuros se puedan implementar más fácilmente. Otro ejemplo de coraje es saber cuándo desechar código: coraje para eliminar código fuente obsoleto, sin importar cuánto esfuerzo se haya invertido en crearlo. Además, el coraje significa persistencia: un programador puede estar atascado en un problema complejo durante todo un día, luego resolverlo rápidamente al día siguiente, pero solo si es persistente.

Respeto

El valor del respeto abarca tanto el respeto por los demás como el respeto por uno mismo. Los programadores nunca deben realizar cambios que impidan la compilación, que provoquen fallos en las pruebas unitarias existentes o que retrasen el trabajo de sus compañeros. Los miembros respetan su propio trabajo escribiendo código de alta calidad y buscando el mejor diseño para la solución en cuestión mediante la refactorización.

La adopción de los cuatro valores mencionados anteriormente genera respeto entre los miembros del equipo. Nadie debe sentirse menospreciado ni ignorado. Esto garantiza una alta motivación y fomenta la lealtad hacia el equipo y el objetivo del proyecto. Este valor depende de los demás y está orientado al trabajo en equipo.

Normas

La primera versión de las reglas para XP fue publicada en 1999 por Don Wells [ 14 ] en el sitio web de XP. Se presentan 29 reglas en las categorías de planificación, gestión, diseño, codificación y pruebas. Se hace referencia explícita a la planificación, la gestión y el diseño para refutar las afirmaciones de que XP no admite estas actividades.

Otra versión de las reglas de XP fue propuesta por Ken Auer [ 15 ] en XP/Agile Universe 2003. Consideraba que XP se definía por sus reglas, no por sus prácticas (que están sujetas a mayor variación y ambigüedad). Definió dos categorías: las "Reglas de Compromiso", que dictan el entorno en el que el desarrollo de software puede llevarse a cabo de manera efectiva, y las "Reglas de Juego", que definen las actividades y reglas minuto a minuto dentro del marco de las Reglas de Compromiso.

Aquí están algunas de las reglas (incompletas):

Codificación

Pruebas

  • Todo el código debe tener pruebas unitarias.
  • Todo el código debe superar todas las pruebas unitarias antes de poder ser publicado.
  • Cuando se encuentra un error , se crean pruebas antes de abordarlo (un error no es un fallo de lógica; es una prueba que no se escribió).
  • Las pruebas de aceptación se realizan con frecuencia y los resultados se publican.

Principios

Los principios que conforman la base de XP se fundamentan en los valores descritos anteriormente y tienen como objetivo facilitar la toma de decisiones en un proyecto de desarrollo de sistemas. Estos principios buscan ser más concretos que los valores y, por lo tanto, más fáciles de aplicar en situaciones prácticas.

Comentario

La programación extrema considera que la retroalimentación es más útil si se realiza con frecuencia y rapidez. Enfatiza que un retraso mínimo entre una acción y su retroalimentación es fundamental para el aprendizaje y la implementación de cambios. A diferencia de los métodos tradicionales de desarrollo de sistemas, el contacto con el cliente se produce en iteraciones más frecuentes. El cliente tiene una visión clara del sistema en desarrollo y puede brindar retroalimentación y orientar el desarrollo según sea necesario. Con la retroalimentación frecuente del cliente, un error de diseño por parte del desarrollador se detectará y corregirá rápidamente, antes de que este dedique mucho tiempo a su implementación.

Las pruebas unitarias contribuyen al principio de retroalimentación rápida. Al escribir código, ejecutar las pruebas unitarias proporciona información directa sobre cómo reacciona el sistema a los cambios realizados. Esto incluye ejecutar no solo las pruebas unitarias que prueban el código del desarrollador, sino también todas las pruebas unitarias de todo el software, mediante un proceso automatizado que se puede iniciar con un solo comando. De esta forma, si los cambios del desarrollador provocan un fallo en alguna otra parte del sistema que desconoce, el conjunto automatizado de pruebas unitarias revelará el fallo de inmediato, alertando al desarrollador de la incompatibilidad de su cambio con otras partes del sistema y de la necesidad de eliminarlo o modificarlo. Con las prácticas de desarrollo tradicionales, la ausencia de un conjunto automatizado e integral de pruebas unitarias implicaba que un cambio de código, considerado inofensivo por el desarrollador, se mantendría sin cambios, apareciendo solo durante las pruebas de integración o, peor aún, solo en producción; y determinar qué cambio de código causó el problema, entre todos los cambios realizados por todos los desarrolladores durante las semanas o incluso meses previos a las pruebas de integración, era una tarea titánica.

Suponiendo simplicidad

Se trata de abordar cada problema como si su solución fuera "extremadamente simple". Los métodos tradicionales de desarrollo de sistemas recomiendan planificar a futuro y programar para la reutilización. La programación extrema rechaza estas ideas.

Los defensores de la programación extrema afirman que realizar grandes cambios de golpe no funciona. La programación extrema aplica cambios incrementales: por ejemplo, un sistema podría tener pequeñas actualizaciones cada tres semanas. Al realizar muchos pasos pequeños, el cliente tiene mayor control sobre el proceso de desarrollo y el sistema que se está desarrollando.

Aceptar el cambio

El principio de aceptar el cambio consiste en no oponerse a él, sino acogerlo. Por ejemplo, si en una de las reuniones iterativas se observa que los requisitos del cliente han cambiado drásticamente, los programadores deben aceptarlo y planificar los nuevos requisitos para la siguiente iteración.

Prácticas

La programación extrema se ha descrito como un sistema que consta de 12 prácticas, agrupadas en cuatro áreas:

Retroalimentación a pequeña escala

Proceso continuo

Comprensión compartida

Bienestar del programador

Aspectos controvertidos

Las prácticas de XP han sido objeto de intensos debates. [ 5 ] Los defensores de la programación extrema afirman que, al permitir que el cliente [ 5 ] solicite cambios de manera informal, el proceso se vuelve flexible y se ahorran los costos de la burocracia formal. Los críticos de XP sostienen que esto puede generar costosos retrabajos y una ampliación del alcance del proyecto más allá de lo acordado o financiado previamente.

Los comités de control de cambios son un indicio de posibles conflictos en los objetivos y restricciones del proyecto entre varios usuarios. Los métodos acelerados de XP dependen en cierta medida de que los programadores puedan adoptar un punto de vista unificado del cliente para que puedan concentrarse en la codificación, en lugar de documentar los objetivos y restricciones de compromiso. [ 16 ] Esto también se aplica cuando participan varias organizaciones de programación, en particular aquellas que compiten por participaciones en los proyectos.

Otros aspectos potencialmente controvertidos de la programación extrema incluyen:

  • Los requisitos se expresan como pruebas de aceptación automatizadas en lugar de documentos de especificación.
  • Los requisitos se definen de forma incremental, en lugar de intentar obtenerlos todos por adelantado.
  • Por lo general, los desarrolladores de software deben trabajar en parejas.
  • No se realiza un diseño exhaustivo desde el principio . La mayor parte del proceso de diseño se lleva a cabo de forma espontánea y gradual, comenzando con «la solución más sencilla posible» y añadiendo complejidad solo cuando las pruebas fallidas lo exigen. Los críticos lo describen como « depurar un sistema hasta que adquiera la apariencia deseada» y temen que esto genere un mayor esfuerzo de rediseño que si solo se rediseñara cuando cambian los requisitos.
  • Se asigna un representante de atención al cliente al proyecto. Este rol puede convertirse en un punto crítico de fallo para el proyecto, y algunos lo consideran una fuente de estrés. Además, existe el riesgo de que un representante no técnico ejerza una microgestión, intentando imponer el uso de las funciones y la arquitectura del software.

Los críticos han señalado varios inconvenientes potenciales, [ 5 ] incluyendo problemas con requisitos inestables, falta de compromisos documentados de conflictos de usuarios y falta de una especificación o documento de diseño general.

Escalabilidad

Thoughtworks afirma haber tenido un éxito razonable en proyectos XP distribuidos con hasta sesenta personas.

En 2004, se introdujo la programación extrema industrial (IXP) [ 17 ] como una evolución de XP. Su objetivo es brindar la capacidad de trabajar en equipos grandes y distribuidos. Actualmente cuenta con 23 prácticas y valores flexibles.

Divisibilidad y respuestas

En 2003, Matt Stephens y Doug Rosenberg publicaron Extreme Programming Refactored: The Case Against XP , donde cuestionaban el valor del proceso XP y sugerían formas de mejorarlo. [ 6 ] Esto desencadenó un extenso debate en artículos, grupos de noticias de Internet y foros de chat. El argumento central del libro es que las prácticas de XP son interdependientes, pero que pocas organizaciones prácticas están dispuestas o capacitadas para adoptarlas todas; por lo tanto, el proceso fracasa. El libro también formula otras críticas y establece una comparación negativa entre el modelo de "propiedad colectiva" de XP y el socialismo.

Algunos aspectos de XP han cambiado desde la publicación de Extreme Programming Refactored ; en particular, XP ahora permite modificaciones en las prácticas siempre que se sigan cumpliendo los objetivos requeridos. XP también utiliza términos cada vez más genéricos para los procesos. Algunos argumentan que estos cambios invalidan las críticas anteriores; otros afirman que simplemente diluyen el proceso.

Otros autores han intentado conciliar XP con metodologías más antiguas para formar una metodología unificada. Algunas de estas metodologías que XP buscaba reemplazar, como la metodología en cascada (por ejemplo, Ciclos de vida de proyectos: Cascada , Desarrollo rápido de aplicaciones [RAD], etc.), fueron analizadas por JPMorgan Chase & Co., que intentó combinar XP con los métodos de programación informática CMMI ( Modelo de madurez de capacidades integrado ) y Six Sigma . Descubrieron que los tres sistemas se reforzaban mutuamente, lo que conducía a un mejor desarrollo, y no se contradecían entre sí. [ 18 ]

Crítica

El revuelo inicial de la programación extrema y sus principios controvertidos, como la programación en parejas y el diseño continuo , han atraído críticas particulares, como las de McBreen, [ 19 ] Boehm y Turner, [ 20 ] Matt Stephens y Doug Rosenberg. [ 21 ] Sin embargo, muchos de los profesionales de Agile creen que estas críticas son malentendidos del desarrollo ágil. [ 22 ]

En particular, la programación extrema ha sido revisada y criticada por el libro Extreme Programming Refactored de Matt Stephens y Doug Rosenberg . [ 6 ]

Véase también

Referencias

  1. "Taller de Tecnología Centrada en el Ser Humano 2006", 2006, PDF, Taller de Tecnología Centrada en el Ser Humano 2006
  2. 1 2 UPenn-Lectures-design-patterns "Patrones de diseño y refactorización", Universidad de Pensilvania, 2003 Archivado el 2 de agosto de 2010 en Wayback Machine .
  3. 1 2 USFCA-edu-601-lectura Programación Extrema .
  4. "Manifiesto para el desarrollo ágil de software" . Agilemanifesto.org. 2001. Consultado el 26 de marzo de 2019 .
  5. ^ Computerworld - appdev - 92 " Programación extrema", Computerworld ( en línea ) , diciembre de 2001 .
  6. 1 2 3 Rosenberg, Doug; Stephens, Matt (2003). Extreme Programming Refactored: The Case Against XP . Apress. ISBN 978-1-59059-096-6.
  7. Larman y Basili 2003 .
  8. Entrevista con Kent Beck y Martin Fowler . 23 de marzo de 2001.{{cite book}}: |work=ignorado ( ayuda )
  9. Dyba, T.; Dingsoyr, T. (2009). "¿Qué sabemos sobre el desarrollo ágil de software?". IEEE Software . 26 (5): 6– 9. doi : 10.1109/MS.2009.145 . ISSN 0740-7459 . 
  10. Lisa Crispin; Tip House (2003). Pruebas de programación extrema . Addison-Wesley Professional. ISBN 9780321113559.
  11. "Procesos ágiles en ingeniería de software y programación extrema" . Notas de clase sobre procesamiento de información empresarial . 2016. doi : 10.1007/978-3-319-33515-5 . hdl : 2078/ebook:84765 . ISSN 1865-1356 . Consultado el 17 de mayo de 2026 . 
  12. "Todos somos programadores" por Clair Tristram. Technology Review , noviembre de 2003, pág. 39.
  13. Beck, K. (1999). Programación extrema explicada: Acepta el cambio . Addison-Wesley. ISBN 978-0-321-27865-4.
  14. "Reglas de la Programación Extrema" . extremeprogramming.org .
  15. Ken Auer Archivado el 20 de septiembre de 2008 en Wayback Machine
  16. John Carroll; David Morris (29 de julio de 2015). Gestión ágil de proyectos en sencillos pasos, 2.ª edición . En sencillos pasos. pág. 162. ISBN  978-1-84078-703-0.
  17. Cutter Consortium. "XP industrial: Cómo hacer que XP funcione en grandes organizaciones - Cutter Consortium" . cutter.com .
  18. Programación Extrema (XP) Six Sigma CMMI .
  19. McBreen, P. (2003). Cuestionando la programación extrema . Boston, MA: Addison-Wesley. ISBN 978-0-201-84457-3.
  20. Boehm, B. ; R. Turner (2004). Equilibrando agilidad y disciplina: una guía para los perplejos . Boston, MA: Addison-Wesley. ISBN 978-0-321-18612-6.
  21. Stephens, Matt ; Doug Rosenberg (2004). La ironía de la programación extrema . MA: Dr. Dobbs journal.{{cite book}}: |work=ignorado ( ayuda )
  22. sdmagazine Archivado el 16 de marzo de 2006 en Wayback Machine

Lecturas adicionales

  • Ken Auer y Roy Miller. Programación Extrema Aplicada: Jugando para Ganar , Addison–Wesley.
  • Ken Auer; Ron Jeffries ; Jeff Canna; Glen B. Alleman; Lisa Crispin; Janet Gregory (2002). "¿Se han extinguido los Testers? ¿Cómo pueden contribuir los Testers a los equipos XP?". Programación Extrema y Métodos Ágiles — Universo XP/Agile 2002. Notas de clase en Ciencias de la Computación. Vol.  2418. Springer-Verlag. pág.  287. doi : 10.1007/3-540-45672-4_50 . ISBN 978-3-540-44024-6.
  • Kent Beck : Programación Extrema Explicada: Acepta el Cambio , Addison–Wesley. Primera edición, 1999. Segunda edición, con Cynthia Andres, 2004.
  • Kent Beck y Martin Fowler : Planificación de la programación extrema , Addison–Wesley.
  • Alistair Cockburn : Desarrollo ágil de software , Addison-Wesley.
  • Martin Fowler : Refactorización: Mejora del diseño del código existente . Con Kent Beck, John Brant, William Opdyke y Don Roberts (1999). Addison-Wesley.
  • Harvey Herela (2005). Estudio de caso: El sistema integral de compensación de Chrysler . Galen Lab, UC Irvine.
  • Jim Highsmith . Ecosistemas de desarrollo de software ágil , Addison-Wesley.
  • Ron Jeffries , Ann Anderson y Chet Hendrickson (2000), Extreme Programming Installed , Addison–Wesley.
  • Larman, C.; Basili, VR (junio de 2003). "Desarrollos iterativos e incrementales: una breve historia" (PDF) . Computer . 36 (6): 47– 56. Bibcode : 2003Compr..36f..47L . doi : 10.1109/MC.2003.1204375 .
  • Matt Stephens y Doug Rosenberg (2003). Extreme Programming Refactored: The Case Against XP , Apress.
  • Waldner, JB. (2008). "Nanocomputadoras e inteligencia de enjambre". En: ISTE, 225–256.
  • Una introducción suave
  • Programación extrema industrial
  • Problemas y soluciones para la implementación de XP
  • Uso de un proceso de desarrollo de software ágil con desarrollo offshore : experiencias de ThoughtWorks en la implementación de XP en grandes proyectos distribuidos.