jueves, 22 de septiembre de 2011

Carolina Quiroga METODOLOGIAS AGILES

Metodologías Tradicionales Vs. Metodologías Ágiles

La programación extrema y ágil se diferencia de las metodologías tradicionales principalmente en que pone más énfasis en la adaptabilidad que en la previsibilidad.

Se considera  que los cambios de requisitos sobre la marcha son un aspecto natural, inevitable e incluso deseable del desarrollo de proyectos.

Ser capaz de adaptarse a los cambios de requisitos en cualquier punto de la vida del proyecto es una aproximación mejor y más realista que intentar definir todos los requisitos al comienzo del proyecto e invertir esfuerzos después en controlar los cambios en los requisitos.

Metodologías Tradicionales

Basadas en normas provenientes de estándares seguidos por el entorno de desarrollo

Cierta resistencia a los cambios


Impuestas externamente

Mas Roles


Mas Artefactos

La arquitectura del software es esencial y se expresa mediante modelos


Grupos grandes y posiblemente distribuidos


Proceso mucho más controlado, con numerosas políticas/normas


El cliente interactúa con el equipo de desarrollo mediante reuniones



Planificación predictiva y “aislada”






Diseño flexible y Extensible + modelos + Documentación




Desarrollo individual con Roles y responsabilidades estrictas




Actividades de control
Orientado a los hitos + Gestión mini proyectos



Metodologías Ágiles
Basadas en la heurística proveniente de la practica de producción de código
Especialmente preparados para cambios durante el proyecto
Impuestas internamente por el equipo
Pocos roles
Menos artefactos
Menos énfasis en la arquitectura del software
Grupos pequeños y trabajando en el mismo sitio
Procesos menos controlados con pocos principios
El cliente es parte del desarrollo
Diseño simple documentación minima
Transferencia de conocimiento
Programación en pares








RUP

Proceso Iterativo e Incremental, centrado en la arquitectura y dirigido por casos de uso.

Pretende implementar las mejores prácticas actuales en ingeniería de software:

·         Desarrollo iterativo del software
·         Administración de requerimientos
·         Uso de arquitecturas basadas en componentes
·         Modelamiento visual del software
·         Verificación de la calidad del software
·         Control de cambios

RUP divide el proceso de desarrollo en ciclos, teniendo un producto al final de cada ciclo.
Cada ciclo se divide en cuatro Fases: Inicio / Elaboración / Construcción/Transición
Cada fase concluye con un hito bien definido donde deben tomarse ciertas decisiones.

Ventajas
  • Evaluación en cada fase que permite cambios de objetivos
  • Funciona bien en proyectos de innovación.
  • Es sencillo, ya que sigue los pasos intuitivos necesarios a la hora de desarrollar el software.
  • Seguimiento detallado en cada una de las fases.

Desventajas
  • La evaluación de riesgos es compleja
  • Excesiva flexibilidad para algunos proyectos
  • Estamos poniendo a nuestro cliente en una situación que puede ser muy incómoda para él.
  • Nuestro cliente deberá ser capaz de describir y entender a un gran nivel de detalle para poder acordar un alcance del proyecto con él.

Microsoft Solution Framework

MSF es un compendio de las mejores prácticas en cuanto a administración de proyectos se refiere.

Más que una metodología rígida de administración de proyectos, MSF es una serie de modelos que puede adaptarse a cualquier proyecto de tecnología de información.

Metodología MSF aplicada

  • Entrega de los documentos definitivos acordados como "deliverables" en la fase de Vision Scope.
  • Revisión (si procede) de la matriz de riesgos, las métricas de calidad y establecimiento de los estándares de calidad y SLA definitivos.
  • Finalmente, entrega del Proyecto y cierre del mismo, con o sin apertura de nuevo proyecto en base a la información y experiencia obtenidas.





Conclusión

Al inicio el desarrollo de software era artesanal en su totalidad, la fuerte necesidad de mejorar el proceso y llevar los proyectos a la meta deseada, tuvieron que importarse la concepción y fundamentos de metodologías existentes en otras áreas y adaptarlas al desarrollo de software.

Esta nueva etapa de adaptación contenía el desarrollo dividido en etapas de manera secuencial que de algo mejoraba la necesidad latente en el campo del software.

Entre las principales metodologías tradicionales tenemos los ya tan conocidos RUP y MSF entre otros, que centran su atención en llevar una documentación exhaustiva de todo el proyecto y centran su atención en cumplir con un plan de proyecto, definido todo esto, en la fase inicial del desarrollo del proyecto.

Metodologías Tradicionales

Otra de las características importantes dentro de este enfoque tenemos los altos costos al implementar un cambio y al no ofrecer una buena solución para proyectos donde el entorno es volátil.
Las metodologías tradicionales (formales) se focalizan en documentación, planificación y procesos. (Plantillas, técnicas de administración, revisiones, etc.).

Metodologías Ágiles

  • Nacen como respuesta a los problemas de las metodologías tradicionales
  • Dan mayor potencia al desarrollo de software a gran escala.
  • Los individuos y las interacciones entre ellos son más importantes que las herramientas y los procesos empleados.
  • Es más importante crear un producto software que funcione que escribir documentación exhaustiva.
  • La colaboración con el cliente debe prevalecer sobre la negociación de contratos.
  • La capacidad de respuesta ante un cambio es más importante que el seguimiento estricto de un plan.

Retrasar las decisiones

Es el eje en cual gira la metodología ágil, el retrasar las decisiones tan como sea posible de manera responsable será ventajoso tanto para el cliente como para la empresa
Las principales ventajas de retrasar las decisiones son: Reduce el número de decisiones de alta inversión que se toman.

Planificación Adaptativa

La planificación adaptativa permite estar preparados para el cambio ya que lo hemos introducido en nuestro proceso de desarrollo
Consiste en tomar decisiones a lo largo del proyecto, transformando el proyecto en un conjunto de proyectos pequeños.
Esta planificación a corto plazo permite tener software disponible para los clientes y además ir aprendiendo del feedback para hacer nuestra planificación más sensible.

Ventajas


  • Estar preparados para el cambio, significa reducir su coste.
  • Planificación más transparente para nuestros clientes, conocen las fechas de entrega de funcionalidades.
  • Permitirá definir en cada iteración cuales son los objetivos de la siguiente
  • Permite tener realimentación de los usuarios muy útil.
  • La presión esta a lo largo de todo el proyecto, y no en una entrega final

Desventajas

Delimitar el alcance del proyecto con nuestro clientes virtualmente imposible.


AUP

Es un acercamiento aerodinámico a desarrollo del software basado en el Proceso Unificado Rational de IBM (RUP), basado en disciplinas y entregables incrementales con el tiempo.

El ciclo de vida en proyectos grandes es serial mientras que en los pequeños es iterativo.

Las disciplinas de AUP son:

  • Modelado
  • Implementación
  • Prueba
  • Despliegue
  • Administración de la configuración
  • Administración o gerencia del Proyecto
  • Entorno

SCRUM

Scrum es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto.

Los roles principales en Scrum son el:

ScrumMaster, que mantiene los procesos y trabaja de forma similar al director de proyecto, el
ProductOwner, que representa a los stakeholders (clientes externos o internos), y el Teamque incluye a los desarrolladores.

  • Scrum permite la creación de equipos autoorganizados impulsando la co-localización de todos los miembros del equipo, y la comunicación verbal entre todos los miembros y disciplinas involucrados en el proyecto.
  • Un principio clave de Scrum es el reconocimiento de que durante un proyecto los clientes pueden cambiar de idea sobre lo que quieren y necesitan y que los desafíos impredecibles no pueden ser fácilmente enfrentados de una forma predictiva y planificada.
  • Se intenta maximizar la capacidad del equipo de entregar resultados rápidamente y responder a requisitos emergentes.
  • Existen varias implementaciones de sistemas para gestionar el proceso de Scrum, que van desde notas amarillas "post-it" y pizarras hasta paquetes de software.
  • Una de las mayores ventajas de Scrum es que es muy fácil de aprender, y requiere muy poco esfuerzo para comenzarse a utilizar.

ICONIX

  • Se define como un proceso de desarrollo de software práctico.
  • Se encuentra entre la complejidad del RUP y la simplicidad de XP
  • Incorpora las tareas de análisis y diseño de RUP, que XP no contempla.
  • Esta adaptado a los patrones de diseño
  • Es iterativo e incremental.

Las tres características fundamentales de ICONIX son:

  • Iterativo e Incremental
  • Entre el desarrollo del modelo de dominio y la identificación de los casos de uso
  • Trazabilidad
  • Cada paso se referencia a algún requisito,
  • Los artefactos mantienen una relación.
  • Dinámica del UML
  • Diagramas de caso de uso

Pair Programming

Fundamentos:

  • Dos programadores trabajando juntos son más efectivos que por separado
  • El conocimiento grupal crece más rápido
  • El que no está escribiendo:
  • Piensa más estratégicamente
  • Revisa el código en tiempo real
·         Trabajar es más divertido




A)     Un MIS proporcionan a los gerentes informes basados en los flujos rutinarios de datos y los ayudan en el control general de las organizaciones. Los MIS se enfocan principalmente en los problemas estructurados, por lo que seria mas conveniente una metodología mas tradicional basadas en normas provenientes de estándares seguidos por el entorno de desarrollo.

B)     Un DSS en una tablero de comando de una empresa industrial debe proporcionar nuevos conjuntos de capacidades para la toma de decisiones no rutinarias y el control de usuarios, por lo tanto necesitan flexibilidad y respuesta rápida, por lo tanto seria conveniente utilizar algunos de los métodos ágiles como el ICONIX, que se encuentra entre la complejidad del RUP y la simplicidad de XP

No hay comentarios:

Publicar un comentario