Está en la página 1de 10

Metodologías

agiles
Horacio Montoya Marquez
PROGRAMACIÓN EXTREMA
La programacion extrema es una metodologia de desarrollo de la ingenieria de software formulado por Kent Beck. La programacion extrema se
diferecia de las metodologias tradicionales principal mente en que pone más enfasis en la adaptabilidad que en la previsibilidad.
Para alcanzar el objetivo de software como solución ágil, la metodologia XP se estructura en tres capas que agrupan las doce prácticas básicas
de XP:
1. Metodología de programación: diseño sencillo, testing, refactorización y codificación con
estándares.
2. Metodología de equipo: propiedad colectiva del código, programación en parejas, integración
continua, entregas semanales e integridad con el cliente.
3. Metodología de procesos: cliente in situ, entregas frecuentes y planificación.

Principales caracteristicas.

Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.


Pruebas unitarias continuas, frecuentemente repetidas y automatizadas, incluyendo pruebas de regresión. Se aconseja escribir el código de
la prueba antes de la codificación. Véase, por ejemplo, las herramientas de prueba JUnit orientada a Java, DUnit orientada a Delphi, NUnit
para la plataforma.NET o PHPUnit para PHP. Estas tres últimas inspiradas en JUnit, la cual, a su vez, se inspiró en SUnit, el primer framework
orientado a realizar tests, realizado para el lenguaje de programación Smalltalk.
Programación en parejas: se recomienda que las tareas de desarrollo se lleven a cabo por dos personas en un mismo puesto. La mayor
calidad del código escrito de esta manera -el código es revisado y discutido mientras se escribe- es más importante que la posible pérdida
de productividad inmediata.
Frecuente integración del equipo de programación con el cliente o usuario. Se recomienda que un representante del cliente trabaje junto al
equipo de desarrollo.
Scrum
Es un proceso en el que se aplican de manera regular un conjunto de buenas practicas para trabajar colaborativamente, en equipo y
obtener el mejor resultado posible de proyectos.

En Scrum un proyecto se ejecuta en bloques temporales cortos y fijos (iteraciones de 2 a 4 semanas como maximo). Cada iteracion tiene
que proporcionar un resultado completo, un incremento de producto final que sea susceptible de ser entregrado con el minimo esfuerxo al
cliente cuando lo solicite,

El proceso parte de la lista de objetivos/requisitos priorizada del producto (Product Backlog), que actúa como plan del proyecto. En esta
lista el cliente prioriza los objetivos balanceando el valor que le aportan respecto a su coste y quedan repartidos en iteraciones y entregas.
De manera regular el cliente puede maximizar la utilidad de lo que se desarrolla y el retorno de inversión mediante la replanificación de
objetivos del producto, que realiza durante la iteración con vista a las siguientes iteraciones.

Principales caracteristicas.

Gestión regular de las expectativas del cliente, resultados anticipados, flexibilidad y adaptación, retorno de inversión, mitigación de
riesgos, productividad y calidad, o, equipo motivado.

Se hace uso de equipos auto-dirigidos y auto-organizados.

Se realiza a diario una reunión de Scrum, que es una reunión de avance diaria que no dura más de 15 minutos con el objetivo de
obtener realimentación sobre las tareas del equipo y los obstáculos que se presentan.
Crystal
Es un marco de trabajo usado para estructurar, planificar y controlar el proceso de desarrollo en sistemas de información. Las metodologías
Crystal son una familia de metodologías ágiles, donde cada una de ellas está adecuada para un tipo de proyecto. Están caracterizadas por estar
centradas en las personas que componen el equipo (de ellas depende el éxito del proyecto) y la reducción al máximo del número de artefactos
producidos.

Crystal Clear es la encarnación más ágil de la serie y de la que más documentación se dispone. La misma se define con mucho énfasis en la
comunicación y de forma muy liviana en relación a los entregables. Crystal maneja iteraciones cortas con feedback frecuente por parte de los
usuarios/clientes, minimizando de esta forma la necesidad de productos intermedios. Otra de las cuestiones planteadas es la necesidad de
disponer de un usuario real aunque sea de forma part time para realizar validaciones sobre la UI (Interface de Usuario) y para participar en la
definición de los requerimientos funcionales y no funcionales del software.

Caracteridtica principal.

Una de sus características principales es la vital importancia que se les da a los desarrolladores que componen el grupo de trabajo, por lo cual
sus puntos de estudio están destinados a:

Aspecto humano del equipo.


Tamaño de un equipo.
Comunicación entre los desarrolladores.
Políticas a seguir.
Espacio físico de trabajo.
Kanban
El método Kanban en si es un sistema de organización de la producción por el cual conseguirás la optimización de tareas y procesos del
equipo así como obtener un nivel de calidad muy elevado en cada fase del proyecto.

Esta metodología tiene como base de su origen la aplicación de los procesos de producción JIT (Just in Time) ideados por la empresa
automotriz Toyota, en la cual utilizaban tarjetas visuales para identificar necesidades de material en la cadena de producción.

Las principales ventajas de esta metodología es que es muy fácil de aplicar, actualizar y asumir por parte del equipo. Además, se destaca por
utilizar una técnica de gestión de las tareas muy visual y práctica, lo que permite ver a simple vista el estado de los proyectos, así como
también pautar el desarrollo del trabajo de manera efectiva.

Principales caracteristicas.

Reducción del desperdicio: no se necesita hacer nada extra o superficial, sólamente lo necesario para que salga bien. De este modo se
optimizan recursos.

Mejora continua: aprovechando la realización de tareas, se busca mejorar los procesos, a través de un sistema de mejora continua.

Flexibilidad: se dispone de capacidad de respuesta ante tareas no previstas, de forma que exista una «cola de espera» de tareas en las
que ir priorizando su realización en función de las necesidades de cada momento y de la urgencia de cada una de ellas.
Feature driver development (FDD)
FDD es una metodología dirigida por modelos, y de iteraciones cortas. Como las otras metodologías adaptables, se enfoca en iteraciones
cortas que entregan funcionalidad tangible. Dicho enfoque no hace énfasis en la obtención de los requerimientos sino en como se realizan
las fases de diseño y construcción. Sin embargo, fue diseñado para trabajar con otras actividades de desarrollo de software y no requiere la
utilización de ningún modelo de proceso específico. Además, hace énfasis en aspectos de calidad durante todo el proceso e incluye un
monitoreo permanente del avance del proyecto. Al contrario de otras metodologías, FDD afirma ser conveniente para el desarrollo de
sistemas críticos.
FDD define 5 procesos: Proceso 1 – Desarrollar el modelo global (Develop overall model), Proceso 2 – Construir una lista de características
(Build feature list), Proceso 3 – Planificar (Plan by feature), Proceso 4 – Diseñar (Design by feature) y Proceso 5 – Construir (Build by feature).
Los 3 primeros pueden considerarse la “iteración cero”, aunque en FDD no le llaman así, y los consideran “procesos iníciales”.

Principales caracteristicas.
Debe ser simple y poco costosa de desarrollar, de entre uno y diez días.
• Debe aportar valor al cliente y ser relevante para su negocio.
• Debe poderse expresar en términos de acción, resultado y objeto.
Adaptive software development (ASD)
El método ágil ASD (Adaptive Software Development) traducido en español significa Desarrollo Adaptable de Software es un modelo de
implementación de patrones ágiles para desarrollo de software. Al igual que otras metodologías ágiles, su funcionamiento es cíclico y
reconoce que en cada iteración se producirán cambios e incluso errores.

El desarrollo de software adaptable (Adaptive Software Development - ASD) es una metodología de desarrollo que hace énfasis en aplicar
las ideas que se originaron en el mundo de los sistemas complejos, adaptación continua del proceso al trabajo.

Principales caracteristicas.

Iterativo.
Orientado a los componentes de software (la funcionalidad que el producto va a tener, características, etc.) más que a las tareas en las
que se va a alcanzar dicho objetivo.
Tolerante a los cambios.
Guiado por los riesgos
La revisión de los componentes sirve para aprender de los errores y volver a iniciar el ciclo de desarrollo
Lean development (LD)
El desarrollo Lean es una adaptación a los entornos de desarrollo de software del método de producción Toyota para equipos pequeños de
programadores. Se fundamenta principalmente en constituir un equipo fuerte y altamente preparado capaz de llevar a cabo cualquier tarea en
poco tiempo, legando todo a la eficacia y la cohesión de los componentes del equipo y obviando los procesos y la burocracia que conlleva
normalmente el tener un sistema de producción preestablecido.

La filosofía Lean consiste en tener un equipo muy preparado, altamente motivado y muy unido. Los activos más importantes a tener en cuenta
cuando se está desarrollando un proyecto bajo Lean Development no son el tiempo o el dinero que se está invirtiendo sino el grado de
compromiso y, sobre todo, cuánto está aprendiendo el equipo.

Caracterisitcas principales.

Satisfacer al cliente es la máxima prioridad.


Proporcionar siempre el mejor valor por la inversión.
El éxito depende de la activa participación del cliente.
Cada proyecto LD es un esfuerzo de equipo.
Todo se puede cambiar.
Soluciones de dominio, no puntos.
Lean software development (LSD)
La metodología de desarrollo de software Lean (LSD) es una translación de los principios y prácticas de la manufactura esbelta (Lean
manufacturing: filosofía de gestión enfocada a la reducción de los ocho tipos de "desperdicios" en productos manufacturados) hacia el dominio
del desarrollo de software.

Principales caracteristicas.

Eliminación de desperdicios. Tan sencillo como evitar o suprimir todo aquello que no le aporte valor al proyecto, en este caso el desarrollador debe
tener la habilidad de reconocer que procesos son innecesarios, es decir aquellos que al no aplicarlos pueden dar los mismos resultados, tales
como códigos, retrasos, requisitos poco claros, cambios constantes y procesos mal desarrollados. Una forma de identificar fácilmente los
desperdicios es mediante la aplicación de un mapa de flujo de valor.
Ampliar el aprendizaje. En este caso la idea es que el producto se vaya probando constantemente para evitar amontonar errores que al final serán
más complicados de resolver, y que darán como resultado demoras en la entrega del proyecto. Otra manera de aumentar el aprendizaje es
mediante la integración del cliente en el proceso de desarrollo, de esta manera se podrán evitar agregar funciones que este no desee.
Decidir lo más tarde posible. Aunque parezca contraproducente decir que se deben tomar decisiones lo más tarde posible, a la hora de desarrollar
se debe esperar a estar completamente informado sobre el cliente. La persona que va a desarrollar el software debe tener claro el user story, para
esto el cliente debe proporcionar la mayor cantidad de información acerca del proyecto, sus dificultades y como quiere solucionarlas, para de esta
manera poder proceder al desarrollo.
Entregar tan rápido como sea posible. Inmediatamente después de recibir la información sobre el cliente, se debe iniciar labores y procurar
entregar la primera iteración lo más pronto posible, para así poder agregar recomendaciones a las siguientes iteraciones y entregar un producto
de calidad en el menor tiempo posible, algo realmente valorado por los clientes.
Proceso unificado de desarrollo software
Proceso Unificado de Desarrollo (RUP) es una metodología de desarrollo de software que está basado en componentes e interfaces bien
definidas, y junto con el Lenguaje Unificado de Modelado (UML), constituye la metodología estándar más utilizada para el análisis,
implementación y documentación de sistemas orientados a objetos.
Es un proceso que puede especializarse para una gran variedad de sistemas de software, en diferentes áreas de aplicación, diferentes
tipos de organizaciones, diferentes niveles de aptitud y diferentes tamaños de proyecto.
Principales caracteristicas.

terativo e Incremental: El Proceso Unificado es un marco de desarrollo iterativo e incremental compuesto de cuatro fases denominadas Inicio,
Elaboración, Construcción y Transición. Cada una de estas fases es a su vez dividida en una serie de iteraciones (la de inicio puede incluir varias
iteraciones en proyectos grandes). Estas iteraciones ofrecen como resultado un incremento del producto desarrollado que añade o mejora las
funcionalidades del sistema en desarrollo.

Dirigido por los casos de uso: En el Proceso Unificado los casos de uso se utilizan para capturar los requisitos funcionales y para definir los
contenidos de las iteraciones. La idea es que cada iteración tome un conjunto de casos de uso o escenarios y desarrolle todo el camino a través
de las distintas disciplinas: diseño, implementación, prueba, etc. El proceso dirigido por casos de uso es el rup. Nota: en UP se está Dirigido por
requisitos y riesgos de acuerdo con el Libro UML 2 de ARLOW, Jim que menciona el tema.

Centrado en la arquitectura: El Proceso Unificado asume que no existe un modelo único que cubra todos los aspectos del sistema. Por dicho
motivo existen múltiples modelos y vistas que definen la arquitectura de software de un sistema. La analogía con la construcción es clara, cuando
construyes un edificio existen diversos planos que incluyen los distintos servicios del mismo: electricidad, fontanería, etc.

Enfocado en los riesgos: El Proceso Unificado requiere que el equipo del proyecto se centre en identificar los riesgos críticos en una etapa
temprana del ciclo de vida. Los resultados de cada iteración, en especial los de la fase de Elaboración deben ser seleccionados en un orden que
asegure que los riesgos principales son considerados primero.

También podría gustarte