Introducción a metodologías ágiles de desarrollo. Programación Extrema. (XP)

  • por javier
  • 21 de Marzo de 2023

La programación extrema (XP) es una metodología de desarrollo, si puede ser considerada como tal, pues se caracteriza por ser un conjunto de prácticas y no está considerada como metodología por una extensa mayoría de ingenieros del software.eXtreme Programming

No obstante, es de extendido uso en proyectos software y sus prácticas han sido de amplia aceptación en muchos casos, sobre todo proyectos pequeños o medianos debido a su curva de aprendizaje suave, a producir código de calidad, completamente funcional, sin fallos ni sorpresas para el cliente, que, siempre percibirá un producto final adecuado a sus necesidades, no a lo que creen los analistas o desarrolladores que necesita el cliente.

En contraposición, en mi opinión y experiencia, muchos clientes acostumbrados a la tradicional metodología de análisis y desarrollo (ciclo de vida en cascada) y a los presupuestos cerrados, ponen excesivas trabas a la implantanción de dicha metodología en sus proyectos.

Dicho sea de paso, que el modelo de presupuesto cerrado, no garantiza la consecución óptima en cuanto a lo que realmente el cliente quiere y necesita, si no interfiere enormemente ecorsetando excesivamente al equipo de desarrollo que se ve obligado a realizar estimaciones que en la mayoría de los casos no son realistas, con los problemas que ésto acarrea. En programación extrema, el cliente, sabrá aproximadamente cuanto costará su software tras el "Planning Game" y se definirá una hoja de ruta prevista y pactada con el cliente, lo cual no es determinante ni obligatorio seguir a rajatabla en ningún caso, pues sirve como referencia.

Las prácticas que han sido de ámplia aceptación dentro del colectivo de desarrolladores de software y que la programación extrema ha adoptado son principalmente los siguientes:

  • Planning Game o fase de planificación del proyecto, con prácticas poco ortodoxas y muy válidas como la formación del cliente en sus lagunas dentro del trabajo a realizar
  • Iteraciones cortas en la liberación de versiones del software completamente funcionales e integración contínua
  • Tests automatizados en el desarrollo de software para obtener un código libre de errores
  • Refactoring o refactorización, que permite obtener código de alta calidad
  • Programación por parejas y propiedad colectiva del código, lo cual permite avanzar a los desarrolladores en formación y conocimientos
  • Modelo sostenible de horario de trabajo. Reducción de la jornada laboral a 40 horas semanales de trabajo para evitar el síndrome del quemado, que tantos problemas acarrea a los proyectos software pues está demostrado que se produce infinitamente más, cuanto más descansado y motivado se está.
  • Trabajo en estrecha colaboración contínua con el cliente, que debe implicarse en el proyecto *realmente* para obtener de verdad lo que *necesita*.
  • Adopción de estándares de código como debería ser en cualquier proyecto serio de desarrollo software.

Algunas de éstas prácticas están ámpliamente aceptadas en metodologías consideradas más serias como Rational Unified Process (RUP), que está demostrado que es mucho más eficiente en proyectos más grandes ya que Extreme Programming (XP) está limitado en cuanto al número de desarrolladores concurrentes y el equipo de trabajo. No obstante, XP tiene público y escenarios en los que resulta de gran utilidad en proyectos para los que resulta mucho más cómodo de seguir y con resultados óptimos para el cliente y el equipo de trabajo.

 

 

blog comments powered by Disqus

Training Tesseract OCR

  • por javier
  • 21 de Marzo de 2023

Training tesseract OCR

Tesseract es probablemente el motor de OCR mas preciso disponible actualmente. Combinado con Leptonica Image Processing Library puede leer una gran variedad de formatos de imágen y convertirlos a texto en unos 60 idiomas distintos. Fué uno de los 3 mejores motores de OCR en 1995 UNLV Accuracy test. Entre 1995 y 2006 se ha trabajado poco en él, pero desde entonces ha sido ampliamente mejorado por Google. Está liberado bajo licencia Apache License 2.0, esto es, se permite su uso comercial.

ALGORITMOS GENETICOS. PROBLEMA DE LAS 8 REINAS EN PYTHON

  • por javier
  • 22 de Marzo de 2023
None

La idea de Algoritmos Genéticos, se basa en la teoría de la evolución de las especies, de Charles Darwin (1859). La idea principal es que las variaciones o mutaciones, ocurren en la reproducción y serán conservadas en base a la idoneidad reproductiva.

Los Algoritmos Genéticos se basan en la búsqueda paralela de soluciones, hasta dar con una suficientemente válida o se aborta el programa si no se encuentra dicha solución y el tiempo transcurrido de cómputo no es aceptable.

Inicialmente se genera una población (soluciones posibles en un array), que van regenerándose en base a un cruce de 2 individuos (cadenas de genes o ADN) de dicha población, sucesivamente y aleatoriamente, se mutan genes del individuo en cuestión.

Update cookies preferences