Mostrando entradas con la etiqueta metodologías ágiles. Mostrar todas las entradas
Mostrando entradas con la etiqueta metodologías ágiles. Mostrar todas las entradas

sábado, 17 de agosto de 2013

Metodologías ágiles: DSDM (Dynamic Systems Development Method)



Hola a todos,

El DSDM ( Método de Desarrollo para Sistemas Dinámicos ) es una metodología de trabajo ágil muy parecido a SCRUM o XP con la única diferencia importante en la que el tiempo es un requerimiento fijo. Se pueden variar los requerimientos y se pueden renegociar las funcionalidades pero nunca los plazos de entrega.

A fin de poder realizar este tipo de filosofía con un mínimo de garantías, DSDM propone unas cuantas normas estrictamente necesarias:
- El usuario final (cliente) ha de participar de forma activa del desarrollo del proyecto.
- El equipo ha de tener el poder de tomar decisiones sin necesidad de pasar por una cadena burocrática.
- Entregas frecuentes: como el resto de metodologías ágiles, DSDM establece que cuanto más rápido podemos entregar algo hecho al cliente mejor que mejor.
- Desarrollo iterativo guiado por el feedback que nos da el cliente.
- Los cambios han de poder ser reversibles: En cualquier momento se ha poder eliminar cualquier cambio que no haya gustado.
- Los requerimientos han de estar definidos en lenguaje natural, no se ha de pensar en detalles de código en el momento de tomar requerimientos.
- El equipo ha de entender el objetivo economico o comercial del proyecto.
- Testeo continuo
- La colaboración es esencial. No solo entre los miembros del equipo sino entre todas las personas que colaboran en ese proyecto de una manera u otra.
- Regla de Pareto (20%- 80%) . La regla de pareto dice que el 80% del trabajo será desarrollado en el 20% del tiempo Lo que propone DSDM es que este 80% de producto sea lo primero que se tenga para entregar, de forma que si el cliente ve alguna cosa que no le gusta nos lo pueda comunicar cuanto antes mejor.


LordPakusBlog

viernes, 16 de agosto de 2013

Metodologías ágiles: OpenUP (Open Unified Process)



Hola a todos,

El Open Unified Process es una metodología ágil que fue desarrollada por un conjunto de empresas del sector del software que cedieron su creación a la Fundación Eclipse para que lo difundiera.

Este proceso productivo tiene 4 puntos básicos:
- Colaborar: sirve para que todo el equipo esté en la misma onda y los conocimientos fluyan en el equipo.
- Equilibrar prioridades: En caso de crisis los responsables han de decidir a que le dan más prioridad y han de ser coherentes con la decisión. De otra manera la empresa no va a obtener los beneficios que espera obtener.
- Centrarse en la arquitectura: Antes de hacer nada estar seguros que tenemos algo que se aguanta y sobre el que podemos ir añadiendo código.
- Desarrollo evolutivo: Es decir, ciclos cortos y iterativos que permitan la retro-alimentación del equipo y el aprendizaje de los errores.

OpenUP tiene una herramienta de estimación/seguimiento que es la siguiente:

Queda claro que es un proceso ágil debido a que las fases de este proceso están mucho más distribuidas en el tiempo que en el antiguo sistema de gestión en cascada.


LordPakusBlog

Metodologías ágiles: LEAN Software Development



Hola a todos,

El desarrollo de software LEAN es la traducción al mundo de la programación del sistema productivo automovilístico usado en TOYOTA (referente mundial en su campo).

La idea principal que mueve LEAN es eliminar todo aquello que sean "desperdicios" en el proceso de producción. Desperdicio se define como todo aquello que genera costes pero no genera valor para el consumidor.

Un ejemplo sencillo: si tenemos una fabrica de lapices, nos interesa saber que el consumidor quiere comprar un lapiz, sin más. Que sea de madera, que escriba y que se le pueda sacar punta, si además es de su color fávorito mejor que mejor. El consumidor no va a estar dispuesto a pagar más por que el lápiz se haya desplazado 3,5 km dentro de la fábrica en un complejo sistema de cintas transportadoras, ni por el hecho que después se haya embalado y transportado en camión durante 500 km. El consumidor solo quiere un lápiz. Solo estará dispuesto a pagar más si el lápiz dura más, pinta mejor o tiene alguna otra característica que lo hace atractivo.  Lo mismo pasa con el mundo del software. El consumidor no le va a dar ningún valor a que el software haya pasado por un complejo sistema "burrocrático" de aprobaciones o que durante el proceso el proyecto se haya parado por que ha habido un bug muy grande. El solo quiere pagar por la funcionalidad que le da el software, nada más.

En el caso concreto de LEAN para el desarrollo de software se designan algunos puntos adicionales:
- Eliminar desperdicios: Eliminar burocracias, código innecesario, procedimientos que no aportan valor.
- Ampliar aprendizaje: La formación continua del producto permite a los trabajadores realizar menos fallos y entender mejor los requerimientos.
- Decidir lo más tarde posible. Si se retrasa la toma de decisiones menos posibilidades hay que se tiren para atrás en el último momento.
- Reaccionar tan rápido como sea posible: Vendría a ser la idea subyacente de XP, hacer lo mínimo indispensable para cumplir con los requisitos, a fin de tener cuanto antes una versión entregable que se pueda evaluar a fin de poder iniciar la siguiente iteración.
- Potenciar al equipo: Los programadores del equipo han de poder auto-organizarse solos y desarrollar su trabajo en el marco que ellos establezcan a fin de poder trabajar más cómodos y por tanto , eficientes.
- Crear la integridad: Este concepto es el de como se comporta nuestro producto de software como un todo. Si se desarrolla por partes separadas y meramente pegadas con pegamento dificilmente estará todo integrado.  A veces es necesario refactorizar (como en  XP) pero no con el objetivo de reducir la complejidad  sino la de unificar el código y eliminar las duplicidades.
- Ver el conjunto: Esto significa que los programadores, en todo momento, han de tener muy claro que va ha hacer y como tiene que ser el producto de software final (independientemente que la parte que ellos toquen sea una minúscula parte del total) a fin de que todo el conjunto tenga cohesión.


LordPakusBlog

Metodologías ágiles: Desarrollo adaptativo de software (ASD)



Hola a todos,

El Adaptative Software Development es una metodología ágil desarrollada por Jim Highsmith y Sam Bayer por allà a finales de los 90 y que se basa en que en el mundo real las cosas no se pueden determinar, medir y predecir con precisión sino que todo lo que hagamos está en un marco de inestabilidad en un entorno cambiante. Es decir, nuestro sistema de desarrollo ha de poder adaptarse día a día a los cambios que el proyecto se vea sometido.

El ciclo de trabajo que promueve el ASD se basa en tres etapas que se repiten de forma iterativa (como con SCRUM, CrystalClear o XP por ejemplo) :

- Especular: En un entorno altamente cambiante hablar de planificar es una falacia. No podemos planificar cuando podemos haber entendido mal los requerimientos, la tecnología puede cambiar o directamente las condiciones del mercado pueden variar. Si seguimos un plan obtendremos el producto que hemos planificado, si especulamos y nos adaptamos obtendremos el producto que necesitamos.

- Colaborar: Si no podemos planificar (que realmente no podemos), no podemos dirigir o controlar los equipos (al menos de la manera tradicional). El gestor del equipo ha de trabajar codo con codo con el equipo y saber como va todo gracias a la colaboración. Esto no significa que el equipo se sumerga en el caos, sino que el equipo se autogestione y la organización del trabajo emerga de los mismos trabajadores.

- Aprender: Si no se aprende no se mejora. Este aprendizaje puede venir de muchos sitios: del mismo equipo que diga que algo no se ha hecho bien y se puede mejorar, del testing durante y después del ciclo de trabajo o de cualquier fuente de información que permita al equipo aprender ha hacer las cosas un poquito mejor.

El ciclo es sencillo de visualizar:


Si os ha gustado esta filosofía de trabajo tal vez os guste el artículo que dió origen a ASD:  link


LordPakusBlog

Entradas populares