Métodos Ágiles de Programacion

Diagramas de Secuencia

Diagrama de Cambios:


Diagrama Completo:



Animación


Practica 5

Historias de Usuario


Practica 4


¿Qué es la Programación Extrema?


La programación extrema es una metodología de desarrollo ágil que tiene como principal objetivo aumentar la productividad a la hora de desarrollar un proyecto software. Da prioridad a los trabajos que dan un resultado directo y en los cuales se reduce la burocracia que pueda existir en el entorno de trabajo.




¿Cuáles son los valores y principios de la  Programación Extrema?


  1. Comunicación
  2. Simplicidad
  3. Realimentación
  4. Coraje




¿Cuáles son las actividades, recursos y prácticas de la Programación Extrema?



·         Retroalimentación 
·         Principio de Pruebas
·         Planificación
·         El cliente forma parte del equipo de desarrollo
·         Programación por parejas  
·         Proceso Continuo
·         Integración Progresiva
·         Eliminar código duplicado o inútil
·         Entregables pequeños   
·         Propiedad intelectual 
·         Entendimiento  
·         Diseño Simple
·         Visión evolutiva
·         Todos son dueños del código  
·         Sin embargo, se debe aplicar un estandar para mantener un código uniforme  
·       



¿Cuál son las fases del proceso de desarrollo de XP?


  1.  Planificación: El primer paso de cualquier proyecto que siga la metodología X.P es definir las historias de usuario con el cliente. Las historias de usuario tienen la misma finalidad que los casos de uso pero con algunas diferencias: Constan de 3 ó 4 líneas escritas por el cliente en un lenguaje no técnico sin hacer mucho hincapié en los detalles; no se debe hablar ni de posibles algoritmos para su implementación ni de diseños de base de datos adecuados, etc.
  2.  Diseño: La metodología X.P sugiere que hay que conseguir diseños simples y sencillos. Hay que procurar hacerlo todo lo menos complicado posible para conseguir un diseño fácilmente entendible e impleméntable que a la larga costará menos tiempo y esfuerzo desarrollar.
  3.  Codificación: La codificación debe hacerse ateniendo a estándares de codificación ya creados. Programar bajo estándares mantiene el código consistente y facilita su comprensión y escalabilidad.
  4. Pruebas:   Uno de los pilares de la metodología X.P es el uso de test para comprobar el funcionamiento de los códigos que vayamos implementando.  

¿Qué es una historia de usuario?


 Son descripciones cortas y simples de una funcionalidad, escritas desde la perspectiva de la persona que necesita una nueva capacidad de un sistema, por lo general el usuario, área de negocio o cliente.

Presentación:

 

Mapa Conceptual


Practica 3

¿Qué son las metodologías ágiles de desarrollo de software?

El desarrollo ágil de software envuelve un enfoque para la toma de decisiones en los proyectos de software, que se refiere a métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requisitos y soluciones evolucionan con el tiempo según la necesidad del proyecto. Así el trabajo es realizado mediante la colaboración de equipos auto-organizados y multidisciplinarios, inmersos en un proceso compartido de toma de decisiones a corto plazo.
Cada iteración del ciclo de vida incluye: planificación, análisis de requisitos, diseño, codificación, pruebas y documentación. Teniendo gran importancia el concepto de "Finalizado" (Done), ya que el objetivo de cada iteración no es agregar toda la funcionalidad para justificar el lanzamiento del producto al mercado, sino incrementar el valor por medio de "software que funciona" (sin errores).
Los métodos ágiles enfatizan las comunicaciones cara a cara en vez de la documentación. La mayoría de los equipos ágiles están localizados en una simple oficina abierta, a veces llamadas "plataformas de lanzamiento" (bullpen en inglés). La oficina debe incluir revisores, escritores de documentación y ayuda, diseñadores de iteración y directores de proyecto. Los métodos ágiles también enfatizan que el software funcional es la primera medida del progreso. Combinado con la preferencia por las comunicaciones cara a cara, generalmente los métodos ágiles son criticados y tratados como "indisciplinados" por la falta de documentación técnica.

¿Cuáles son las características en las que se basan las metodologías ágiles?


Un proceso es ágil cuando el desarrollo de software es:
  • Incremental. Entregas pequeñas de software, con ciclos rápidos.
  • Cooperativo. Cliente y desarrolladores trabajan juntos constantemente con una cercana comunicación.
  • Sencillo. El método en sí mismo es simple, fácil de aprender y modificar.
  • Permite realizar cambios de último momento.


¿Cuáles son las ventajas y desventajas del empleo de las metodologías ágiles respecto a  las tradicionales? 

  Ventajas
  • Las entregas son frecuentes
  • El proceso omite pasos que puedan atrasar el desarrollo
  • Los cambios pueden ser efectuados en cualquier etapa del proyecto
  • Como el cliente tiene mayor comunicación con el equipo, los malentendidos disminuyen
  • Los procesos pueden mejorar
 Desventajas
·         Al no haber documentación, el diseño suele tener pocas bases para trabajar y es muy dificil que pueda ser reusable
·         Se limita a proyectos pequeños
·         Es altamente dependiente del cliente  



¿Cuándo es recomendable utilizar metodologías ágiles  en el desarrollo de software? 

El desarrollo ágil de software refiere a métodos de ingeniería del software basados en el desarrollo iterativo e incremental, estas metodologías son imprescindibles en un mundo en el que nos exponemos a cambios recurrentemente. Siempre hay que tener en cuenta como programadores que lo que es la última tendencia hoy puede que no exista mañana y por esto existe la metodología ágil donde los requisitos y soluciones evolucionan mediante la colaboración de grupos auto organizado y multidisciplinario.
  

¿Cuáles son algunos tipos de metodologías ágiles?


>
  • Dynamic Systems Development Method (DSDM): Metodología ágil más veterana y la que más se aproxima a los métodos tradicionales, su implantación incluso permitiría alcanzar un nivel 2 de madurez según CMMI.
  • Extreme Programming (XP): La metodología ágil más radical y popular. XP se centra en el ciclo de vida del desarrollo de software.
  • Agile Modeling: Metodología para el modelado y la generación de documentación que se encuentra alineado con los principios del desarrollo ágil y que puede ser utilizado como substituto del UML estándar.
  • Feature Driven Development (FCC): Metodología de desarrollo de software orientada a la generación de valor para el cliente.

Presentacion










El proceso de Software

Mapa:




Cuestionario:


1.    ¿Qué es el proceso del software?
a)    Es la recopilación de los requerimientos del software.
b)    Es la generación de programas y códigos en un lenguaje específico.
c)    Son las actividades que guían la elaboración del software
d)    Es la metodología en el generación de código
e)    Es la aplicación del modelo vista controlador del desarrollo de software

2.    Los modelos de  proceso del software:
a)    Muestran las necesidades del cliente
b)    Son una abstración del proceso del software
c)    Se utilizan en proyectos extensos de más de 6 meses
d)    Son un modelo ágil de programación
e)    Son diagramas que muestran el proceso de la ingeniería.

3.    No es una actividad común en el proceso del software
a)    Especificación de software
b)    Diseño e implementación del software.
c)    Validación del software.
d)    Soporte de software
e)    Evolución del software

4.    Son considerados modelos iterativos
a)    Modelo de cascada.
b)    Incremental
c)    Ingeniería de software basada en componentes
d)    Desarrollo en Espiral
e)    Incisos b y d
f)     Ninguno de los anteriores

5.    Utiliza  o adapta software comercial de ser posible
a)    Modelo de cascada.
b)    Incremental
c)    Desarrollo Evolutivo.
d)    Ingeniería de software basada en componentes
e)    Desarrollo en Espiral

6.    Modelo que tiene que finalizar una etapa para poder acceder a otra
a)    Modelo de cascada.
b)    Incremental
c)    Desarrollo Evolutivo.
d)    Ingeniería de software basada en componentes
e)    Desarrollo en Espiral

7.    Son desarrollos evolutivos
a)    Modelo de cascada.
b)    Desarrollo Exploratorio.
c)    Prototipos desechables
d)    Incisos a y b
e)    Incisos  b y c
f)     Ninguno de los anteriores



Investigación
Métodos ágiles de programación

Introducción


Las metodologías ágiles de desarrollo de software son imprescindibles en un mundo en el que las cosas cambian a velocidad de vértigo. Los programadores vivimos preocupados sobre cuales son las últimas tendencias, que lenguajes o prácticas quedan obsoletos y con la constante espada de Damocles de pensar que lo que estamos desarrollando hoy quizás no sirva para nada mañana.
El mundo del desarrollo, para bien o para mal, ha evolucionado desde un modelo en el que se planificaban y estructuraban minuciosamente todas las fases a un modelo en el que el desarrollo debe ser lo más rápido y eficiente posible. Personalmente soy un gran fan de los metodologías ágiles de desarrollo de software, cuyos principios están enunciados en este manifiesto.


Desarrollo


En una reunión celebrada en febrero de 2001 en Utah-EEUU, nace el término "ágil" aplicado al desarrollo de software. En esta reunión participan un grupo de 17 expertos de la industria del software, incluyendo algunos de los creadores o impulsores de metodologías de software. Su objetivo fue esbozar los valores y principios que deberían permitir a los equipos desarrollar software rápidamente y respondiendo a los cambios que puedan surgir a lo largo del proyecto. Se pretendía ofrecer una alternativa a los procesos de desarrollo de software tradicionales, caracterizados por ser rígidos y dirigidos por la documentación que se genera en cada una de las actividades desarrolladas. Varias de las denominadas metodologías ágiles ya estaban siendo utilizadas con éxito en proyectos reales, pero les faltaba una mayor difusión y reconocimiento.

Tras esta reunión se creó The Agile Alliance3, una organización, sin ánimo de lucro, dedicada a promover los conceptos relacionados con el desarrollo ágil de software y ayudar a las organizaciones para que adopten dichos conceptos. El punto de partida es fue el Manifiesto Ágil, un documento que resume la filosofía "ágil".

El Manifiesto comienza enumerando los principales valores del desarrollo ágil. Se valora:

  • Al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas. La gente es el principal factor de éxito de un proyecto software. Si se sigue un buen proceso de desarrollo, pero el equipo falla, el éxito no está asegurado; sin embargo, si el equipo funciona, es más fácil conseguir el objetivo final, aunque no se tenga un proceso bien definido. No se necesitan desarrolladores brillantes, sino desarrolladores que se adapten bien al trabajo en equipo. Así mismo, las herramientas (compiladores, depuradores, control de versiones, etc.) son importantes para mejorar el rendimiento del equipo, pero el disponer más recursos que los estrictamente necesarios también puede afectar negativamente. En resumen, es más importante construir un buen equipo que construir el entorno. Muchas veces se comete el error de construir primero el entorno y esperar que el equipo se adapte automáticamente. Es mejor crear el equipo y que éste configure su propio entorno de desarrollo en base a sus necesidades.

  • Desarrollar software que funciona más que conseguir una buena documentación. Aunque se parte de la base de que el software sin documentación es un desastre, la regla a seguir es “no producir documentos a menos que sean necesarios de forma inmediata para tomar un decisión importante”. Estos documentos deben ser cortos y centrarse en lo fundamental. Si una vez iniciado el proyecto, un nuevo miembro se incorpora al equipo de desarrollo, se considera que los dos elementos que más le van a servir para ponerse al día son: el propio código y la interacción con el equipo.

  • La colaboración con el cliente más que la negociación de un contrato. Las características particulares del desarrollo de software hace que muchos proyectos hayan fracasado por intentar cumplir unos plazos y unos costes preestablecidos al inicio del mismo, según los requisitos que el cliente manifestaba en ese momento. Por ello, se propone que exista una interacción constante entre el cliente y el equipo de desarrollo. Esta colaboración entre ambos será la que marque la marcha del proyecto y asegure su éxito.

  • Responder a los cambios más que seguir estrictamente un plan. La habilidad de responder a los cambios que puedan surgir a los largo del proyecto (cambios en los requisitos, en la tecnología, en el equipo, etc.) determina también el éxito o fracaso del mismo. Por lo tanto, la planificación no debe ser estricta puesto que hay muchas variables en juego, debe ser flexible para poder adaptarse a los cambios que puedan surgir. Una buena estrategia es hacer planificaciones detalladas para unas pocas semanas y planificaciones mucho más abiertas para unos pocos meses.

Estas son los métodos de desarrollo ágil de páginas que dominan el panorama a día de hoy:

    1.-SCRUM


Scrum es una metodología ágil fantástica para desarrolladores. Consiste en un modelo de asignación de tareas diarias basado en reuniones rápidas y control de la evolución de los procesos. Es muy bueno para llevar un seguimiento de las tareas que se están llevando a cabo y saber en que puntos se ha atascado el equipo. Además la profundidad de las tareas que se asignan en SCRUM tiende a ser incremental, y esto coincide exactamente con el devenir normal de un desarrollo.
Es genial para empresas de desarrollo de software orientadas a varios clientes.

     2.-XP o XTREAM PROGRAMMING

Programación Extrema es un método ágil que se suele utilizar en equipos con muy pocos programadores que tienen muy pocos procesos abiertos al mismo tiempo. Consiste principalmente en diseñar, implementar, programar e implantar lo más rápido posible en equipos de programadores muy pequeños, principalmente parejas, saltándose la documentación y los procedimientos tradicionales. Se fundamente el la capacidad del equipo para comunicarse entre si y las ganas de aprender de los errores propios inherentes en un programador. Las gran ventaja que tiene este sistema es la increíble capacidad de respuesta del equipo ante imprevistos, aunque es una metodología para la que es difícil documentar.
XP es un método estupendo para equipos extremadamente pequeños que se centran en un solo cliente.

      3.-Desarrollo Lean

Lean Software Development, también conocido como Lean Programming es un conjunto de técnicas que engloban una metodología de desarrollo ágil de software orientado a conseguir exactamente lo que necesita el cliente. Es una evolución del Método Toyota de Producción aplicado al desarrollo y que está muy de moda entre los equipos de desarrollo en startups. Principalmente consiste en ciclos de evolución de software incrementales en los que se posponen las decisiones lo más posible hasta haber obtenido un feedback del cliente y así reaccionar lo más rápido y eficazmente posible a sus necesidades. Se fundamenta en tener un equipo potente y comprometido y el principio de aprendizaje continuo sobre el producto.
El Desarrollo Lean una metodología fantástica para startups que están desarrollando un software orientado a tener éxito en el mercado, como desarrolladores de videojuegos o apps para móviles.

El mundo del desarrollo con metodologías ágiles fue mi puerta hacia el mundo de la productividad personal y creo que ambas prácticas están íntimamente interrelacionadas. Un desarrollo ágil necesita de personas productivas y las personas productivas necesitan de un entorno de trabajo donde puedan explorar todo su potencial.


Comparación Metodología Ágil y Tradicional


Vamos a enumerar las principales diferencias de una Metodología Ágil respecto de las Metodologías Tradicionales (llamadas peyorativamente “no ágiles” o “pesadas”). La Tabla 2 recoge estas diferencias que no se refieren sólo al proceso en sí, sino también al contexto de equipo y organización que es más favorable a cada uno de estas filosofías de procesos de desarrollo de software.

Metodología Ágil
Metodología Tradicional
Pocos Artefactos. El modelado es prescindible, modelos desechables.
Más Artefactos. El modelado es esencial, mantenimiento de modelos
Pocos Roles, más genéricos y flexibles
Más Roles, más específicos
No existe un contrato tradicional, debe ser bastante flexible
Existe un contrato prefijado
Cliente es parte del equipo de desarrollo (además in-situ)
El cliente interactúa con el equipo de desarrollo mediante reuniones
Orientada a proyectos pequeños. Corta duración (o entregas frecuentes), equipos pequeños (< 10 integrantes) y trabajando en el mismo sitio
Aplicables a proyectos de cualquier tamaño, pero suelen ser especialmente efectivas/usadas en proyectos grandes y con equipos posiblemente dispersos
La arquitectura se va definiendo y mejorando a lo largo del proyecto
Se promueve que la arquitectura se defina tempranamente en el proyecto
Énfasis en los aspectos humanos: el individuo y el trabajo en equipo
Énfasis en la definición del proceso: roles, actividades y artefactos
Basadas en heurísticas provenientes de prácticas de producción de código
Basadas en normas provenientes de estándares seguidos por el entorno de desarrollo
Se esperan cambios durante el proyecto
Se espera que no ocurran cambios de gran impacto durante el proyecto


Conclusión 

Las metodologías ágiles son en realidad una familia de modelos o técnicas, todas ellas compartiendo la característica de interpretar el desarrollo de software como una actividad en la que siempre hay un cierto grado de incertidumbre. Incertidumbre que hace necesario poner el énfasis en las personas, dejar que se auto-organicen y que interactúen buscando siempre satisfacer los requisitos del cliente, y planificando iteración a iteración, adaptándose con flexibilidad a los cambios que se producirán de seguro durante la vida del proyecto.

Bibliografía

·         Cockburn, Alistair. Agile Software Development. Highsmith Series.
·         Chin, Gary (2004). Agile Project Management: How to Succeed in the Face of Changing Project Requirements. AMACOM.
·         Martinez, Gustavo (2011). Coding, quality check and documentation (300%): Get them from the same development team!. VPD.



Mapa conceptual




CUESTIONARIO (EVALUACIÓN)



1.     Los métodos ágiles se utilizan en:
a)   Programación Orientada a Objetos
b)   Desarrollo de software
c)    Soporte de Software
d)   Programación estructurada
e)    Calidad de Software

2.     ¿Qué modelo de desarrollo de software utilizan los métodos ágiles?
a)   Cascada
b)   Lineal
c)    Iterativo
d)   Espiral
e)    Evolutivo

3.     ¿Cuáles son las principales características en las que se basa el método ágil?
a)   Trabajo en equipo, adaptable, avances funcionales
b)   Satisfacción del cliente, reduce tiempo, una sola entrega final.
c)    Comunicación, no se adapta a los cambios, no es interactivo.
d)   Orientado a resultados, no hay comunicación, no hay trabajo en equipo

4.     ¿Cuáles son las características que  diferencian al método ágil del convencional?
a)   El cliente participa en el equipo de desarrollo
b)   Trabajo en equipo
c)    Satisfacción del cliente
d)   Presenta avances incrementales del proyecto al cliente
e)    Adaptable en cualquier etapa del proyecto

5.     En los métodos ágiles el cliente:
a)   Desarrolla Software
b)   Se incorpora al equipo de trabajo
c)    Trabaja en otros proyectos de software
d)   Resuelve problemas de comunicación del equipo
e)    Proporciona los recursos materiales


>

No hay comentarios.:

Publicar un comentario