Diferencia entre revisiones de «Metodologías Agiles»

m (Texto reemplazado: «<div align="justify">» por «»)
 
(No se muestran 6 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
'''Características de las Metodologías Ágiles'''
+
{{Definición
 +
|nombre=Metodologías Agiles
 +
|imagen=Metodagil.jpg
 +
|tamaño=
 +
|concepto= Son  serie de técnicas para la gestión de proyectos que han surgido como contraposición a los métodos clásicos de gestión
 +
}}
  
Hoy en día con el auge de la tecnología, y con el objetivo de agilizar y automatizar los procesos en el desarrollo de software, nos vemos en la necesidad de implantar [[Metodologías de Desarrollo de Software]] que nos ayuden a entregar un producto de calidad en tiempo y costo estimados, las metodologías ágiles de desarrollo de software han despertado interés gracias a que proponen simplicidad y velocidad para crear sistemas. Las metodologías tradicionales no se adaptan a las nuevas necesidades o expectativas que tienen los usuarios hoy en día, en parte que los métodos usados no son flexibles ante la posibilidad de la exigencia de nuevos requerimientos. Estos cambios generalmente implican altos costos, demanda de tiempo y la reestructuración total del proyecto que se esté llevando; en contraparte, los métodos ágiles permiten un desarrollo iterativo y adaptable que permite la integración de nuevas funcionalidades a lo largo del desarrollo del proyecto; para que tanto el cliente como el desarrollador queden satisfechos porque el producto final tiene una calidad adecuada.
+
'''Metodologías Ágiles'''. Las metodologías ágiles son una serie de técnicas para la gestión de proyectos que han surgido como contraposición a los métodos clásicos de gestión como CMMI. Aunque surgieron en el ámbito del desarrollo de software, también han sido exportadas a otro tipo de proyectos. Todas las metodologías que se consideran ágiles cumplen con el manifiesto ágil que no es más que una serie de principios que se agrupan en 4 valores:
 
+
1-  Los individuos y su interacción, por encima de los procesos y las herramientas.
=== '''Descripción''' ===
+
2-  El software que funciona, frente a la documentación exhaustiva.
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. Está bien documentado y es adaptable. Permite realizar cambios de último momento).
+
3- La colaboración con el cliente, por encima de la negociación contractual.
 +
4- La respuesta al cambio, por encima del seguimiento de un plan.
 +
== Metodología ágil vs tradicional ==
 +
Con el auge de la [[tecnología]], y con el objetivo de agilizar y automatizar los procesos en el desarrollo de [[software]], está la necesidad de implantar Metodologías de Desarrollo de Software que ayudan a entregar un producto de calidad en tiempo y costo estimados, las metodologías ágiles de desarrollo de software han despertado interés gracias a que proponen simplicidad y velocidad para crear sistemas. Las metodologías tradicionales no se adaptan a las nuevas necesidades o expectativas que tienen los usuarios hoy en día, en parte que los métodos usados no son flexibles ante la posibilidad de la exigencia de nuevos requerimientos. Estos cambios generalmente implican altos costos, demanda de tiempo y la reestructuración total del [[proyecto]] que se esté llevando; en contraparte, los métodos ágiles permiten un desarrollo iterativo y adaptable que permite la integración de nuevas funcionalidades a lo largo del desarrollo del proyecto; para que tanto el cliente como el desarrollador queden satisfechos porque el producto final tiene una [[calidad]] adecuada.
 +
===Descripción===
 +
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. Está bien documentado y es adaptable. Permite realizar cambios de último momento.
  
 
Sus elementos claves son:
 
Sus elementos claves son:
Poca documentación
+
* Poca documentación
Simplicidad
+
* Simplicidad
Análisis como una actividad constante
+
* Análisis como una actividad constante
Diseño evolutivo Integraciones
+
* Diseño evolutivo  
Testeos diarios
+
* Integraciones
 
+
* Testeos diarios
=== '''Cuando usar metodologías ágiles''' ===
+
===Cuando usar metodologías ágiles ===
 
No existe una metodología universal para hacer frente con éxito a cualquier proyecto de desarrollo de software. Toda metodología debe ser adaptada al contexto del proyecto (recursos técnicos y humanos, tiempo de desarrollo, tipo de sistema). Históricamente, las metodologías tradicionales han intentado abordar la mayor cantidad de situaciones de contexto del proyecto, exigiendo un esfuerzo considerable para ser adaptadas, sobre todo en proyectos pequeños y con requisitos muy cambiantes. Las metodologías ágiles ofrecen una solución casi adecuada para una gran cantidad de proyectos. Sin embargo existen métodos más generales y con mejores resultados que otros. Saber qué reglas y metodologías aplicar en cada caso es más importante y útil que seguir ciegamente siempre las mismas.
 
No existe una metodología universal para hacer frente con éxito a cualquier proyecto de desarrollo de software. Toda metodología debe ser adaptada al contexto del proyecto (recursos técnicos y humanos, tiempo de desarrollo, tipo de sistema). Históricamente, las metodologías tradicionales han intentado abordar la mayor cantidad de situaciones de contexto del proyecto, exigiendo un esfuerzo considerable para ser adaptadas, sobre todo en proyectos pequeños y con requisitos muy cambiantes. Las metodologías ágiles ofrecen una solución casi adecuada para una gran cantidad de proyectos. Sin embargo existen métodos más generales y con mejores resultados que otros. Saber qué reglas y metodologías aplicar en cada caso es más importante y útil que seguir ciegamente siempre las mismas.
 
+
== Casos donde no conviene usar métodos ágiles ==
# entrada de willian sanabria - veronica acebey @ 16:13 0 comentarios 
 
 
 
Métodos Ágiles (parte II)
 
Casos donde no conviene usar métodos ágiles
 
 
Las propias prácticas de los métodos ágiles limitan o descartan su uso en algunos proyectos. A continuación se detallan algunos casos donde no conviene usar métodos ágiles.
 
Las propias prácticas de los métodos ágiles limitan o descartan su uso en algunos proyectos. A continuación se detallan algunos casos donde no conviene usar métodos ágiles.
 
- Aplicaciones distribuidas. Las pruebas unitarias son complicadas de aplicar entre componentes. Sería necesario construir una arquitectura de pruebas para probar directamente los componentes, que podría ser tan complicada como el sistema que se desea construir.
 
- Aplicaciones distribuidas. Las pruebas unitarias son complicadas de aplicar entre componentes. Sería necesario construir una arquitectura de pruebas para probar directamente los componentes, que podría ser tan complicada como el sistema que se desea construir.
Línea 29: Línea 38:
 
- Proyectos escritos en lenguajes no orientados a objetos. Lenguajes como C, Pascal, Cobol o Fortran hacen imposible técnicas como la refactorización.
 
- Proyectos escritos en lenguajes no orientados a objetos. Lenguajes como C, Pascal, Cobol o Fortran hacen imposible técnicas como la refactorización.
 
- Aplicaciones donde la escalabilidad o la eficacia sean importantes. La escalabilidad o la eficacia no son características que se pueden añadir durante el proceso del desarrollo del software o que puedan obtenerse refactorizando: deben considerarse desde un principio.
 
- Aplicaciones donde la escalabilidad o la eficacia sean importantes. La escalabilidad o la eficacia no son características que se pueden añadir durante el proceso del desarrollo del software o que puedan obtenerse refactorizando: deben considerarse desde un principio.
 
+
==Características ==  
=== '''Características''' ===  
 
 
- Basadas en heurísticas provenientes de prácticas de producción de código
 
- Basadas en heurísticas provenientes de prácticas de producción de código
 
- Especialmente preparados para cambios durante el proyecto
 
- Especialmente preparados para cambios durante el proyecto
Línea 41: Línea 49:
 
- Pocos roles
 
- Pocos roles
 
- Menos énfasis en la arquitectura del software
 
- Menos énfasis en la arquitectura del software
 
+
==Tipos de Metodologías ágiles==
=== '''Metodologías ágiles''' ===
 
 
- XP, o Programación Extrema, es uno de los ejemplos más exitosos de metodología ágil.
 
- XP, o Programación Extrema, es uno de los ejemplos más exitosos de metodología ágil.
 
- Scrum
 
- Scrum
Línea 52: Línea 59:
 
- RUP Ágil, existiendo dos variantes AUP y EUP
 
- RUP Ágil, existiendo dos variantes AUP y EUP
 
- RAD
 
- RAD
 
+
===Ventajas de las metodologías ágiles ===  
=== '''Ventajas de las metodologías ágiles''' ===  
 
 
Las metodologías ágiles presentan diversas ventajas como:
 
Las metodologías ágiles presentan diversas ventajas como:
 
- Rápida respuesta a cambios de requisitos a lo largo del desarrollo.
 
- Rápida respuesta a cambios de requisitos a lo largo del desarrollo.
Línea 65: Línea 71:
 
- El equipo de desarrollo no malgasta el tiempo y dinero del cliente desarrollando soluciones innecesariamente generales y complejas que en realidad no son un requisito del cliente.
 
- El equipo de desarrollo no malgasta el tiempo y dinero del cliente desarrollando soluciones innecesariamente generales y complejas que en realidad no son un requisito del cliente.
 
- Cada componente del producto final ha sido probado y satisface los requerimientos.
 
- Cada componente del producto final ha sido probado y satisface los requerimientos.
 
+
===Desventajas de los métodos ágiles===
=== '''Desventajas de los métodos ágiles.''' ===
 
 
Como en cualquiera otra metodología, también hay desventajas y problemas que surgen a la hora de implementarlas:
 
Como en cualquiera otra metodología, también hay desventajas y problemas que surgen a la hora de implementarlas:
 
- Falta de documentación del diseño. El código no puede tomarse como una documentación. En sistemas de tamaño grande se necesitar leer los cientos o miles de páginas del listado de código fuente.
 
- Falta de documentación del diseño. El código no puede tomarse como una documentación. En sistemas de tamaño grande se necesitar leer los cientos o miles de páginas del listado de código fuente.
Línea 79: Línea 84:
 
- Cambios. Los modelos de datos son “pesados” y no pueden cambiarse así como así solo porque el cliente que ira incorporar más funciones al sistema.
 
- Cambios. Los modelos de datos son “pesados” y no pueden cambiarse así como así solo porque el cliente que ira incorporar más funciones al sistema.
 
- Problemas derivados del fracaso de los proyectos ágiles. Si un proyecto ágil fracasa no hay documentación o hay muy poca; lo mismo ocurre con el diseño. La comprensión del sistema se queda en las mentes de los desarrolladores.
 
- Problemas derivados del fracaso de los proyectos ágiles. Si un proyecto ágil fracasa no hay documentación o hay muy poca; lo mismo ocurre con el diseño. La comprensión del sistema se queda en las mentes de los desarrolladores.
 
=== '''CONCLUSIONES''' ===
 
 
No existe una metodología universal para hacer frente con éxito a cualquier proyecto de desarrollo de software. Toda metodología debe ser adaptada al contexto del proyecto (recursos técnicos y humanos, tiempo de desarrollo, tipo de sistema, etc. Históricamente, las metodologías tradicionales han intentado abordar la mayor cantidad de situaciones de contexto del proyecto, exigiendo un esfuerzo considerable para ser adaptadas, sobre todo en proyectos pequeños y con requisitos muy cambiantes. Las metodologías ágiles ofrecen una solución casi a medida para una gran cantidad de proyectos que tienen estas características. Una de las cualidades más destacables en una metodología ágil es su sencillez, tanto en su aprendizaje como en su aplicación, reduciéndose así los costos de implantación en un equipo de desarrollo. Esto ha llevado hacia un interés creciente en las metodologías ágiles. Sin embargo, hay que tener presente una serie de inconvenientes y restricciones para su aplicación, tales como: están dirigidas a equipos pequeños o medianos (Beck sugiere que el tamaño de los equipos se limite de 3 a 20 como máximo, otros dicen no más de 10 participantes), el entorno físico debe ser un ambiente que permita la comunicación y colaboración entre todos los miembros del equipo durante todo el tiempo, cualquier resistencia del cliente o del equipo de desarrollo hacia las prácticas y principios puede llevar al proceso al fracaso (el clima de trabajo, la colaboración y la relación contractual son claves), el uso de tecnologías que no tengan un ciclo rápido de realimentación o que no soporten fácilmente el cambio, etc.
 
Falta aún un cuerpo de conocimiento consensuado respecto de los aspectos teóricos y prácticos de la utilización de metodologías ágiles, así como una mayor consolidación de los resultados de aplicación. La actividad de investigación está orientada hacia líneas tales como: métricas y evaluación del proceso, herramientas específicas para apoyar prácticas ágiles, aspectos humanos y de trabajo en equipo. Entre estos esfuerzos destacan proyectos como NAME11 (Network for Agile Methodologies Experience) en el cual hemos participado como nodo en España.
 
Aunque en la actualidad ya existen libros asociados a cada una de las metodologías ágiles existentes y también abundante información en internet, es XP la metodología que resalta por contar con la mayor cantidad de información disponible y es con diferencia la más popular.
 
 
 
==Fuentes==
 
==Fuentes==
[1] Giraldo, Z. “Herramientas de Ingeniería de software”.
+
* Giraldo, Z. “Herramientas de Ingeniería de software”.
[2] Gómez, J. “¿Metodología?... Sí, pero, ¿cuál? ” 12 de enero del 2006. [Disponible
+
* Gómez, J. “¿Metodología?... Sí, pero, ¿cuál? ” 12 de enero del 2006.  
  
 
[[Categoría: Ciencias informáticas]]
 
[[Categoría: Ciencias informáticas]]

última versión al 13:45 6 jul 2019

Metodologías Agiles
Información sobre la plantilla
Metodagil.jpg
Concepto:Son serie de técnicas para la gestión de proyectos que han surgido como contraposición a los métodos clásicos de gestión

Metodologías Ágiles. Las metodologías ágiles son una serie de técnicas para la gestión de proyectos que han surgido como contraposición a los métodos clásicos de gestión como CMMI. Aunque surgieron en el ámbito del desarrollo de software, también han sido exportadas a otro tipo de proyectos. Todas las metodologías que se consideran ágiles cumplen con el manifiesto ágil que no es más que una serie de principios que se agrupan en 4 valores: 1- Los individuos y su interacción, por encima de los procesos y las herramientas. 2- El software que funciona, frente a la documentación exhaustiva. 3- La colaboración con el cliente, por encima de la negociación contractual. 4- La respuesta al cambio, por encima del seguimiento de un plan.

Metodología ágil vs tradicional

Con el auge de la tecnología, y con el objetivo de agilizar y automatizar los procesos en el desarrollo de software, está la necesidad de implantar Metodologías de Desarrollo de Software que ayudan a entregar un producto de calidad en tiempo y costo estimados, las metodologías ágiles de desarrollo de software han despertado interés gracias a que proponen simplicidad y velocidad para crear sistemas. Las metodologías tradicionales no se adaptan a las nuevas necesidades o expectativas que tienen los usuarios hoy en día, en parte que los métodos usados no son flexibles ante la posibilidad de la exigencia de nuevos requerimientos. Estos cambios generalmente implican altos costos, demanda de tiempo y la reestructuración total del proyecto que se esté llevando; en contraparte, los métodos ágiles permiten un desarrollo iterativo y adaptable que permite la integración de nuevas funcionalidades a lo largo del desarrollo del proyecto; para que tanto el cliente como el desarrollador queden satisfechos porque el producto final tiene una calidad adecuada.

Descripción

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. Está bien documentado y es adaptable. Permite realizar cambios de último momento.

Sus elementos claves son:

  • Poca documentación
  • Simplicidad
  • Análisis como una actividad constante
  • Diseño evolutivo
  • Integraciones
  • Testeos diarios

Cuando usar metodologías ágiles

No existe una metodología universal para hacer frente con éxito a cualquier proyecto de desarrollo de software. Toda metodología debe ser adaptada al contexto del proyecto (recursos técnicos y humanos, tiempo de desarrollo, tipo de sistema). Históricamente, las metodologías tradicionales han intentado abordar la mayor cantidad de situaciones de contexto del proyecto, exigiendo un esfuerzo considerable para ser adaptadas, sobre todo en proyectos pequeños y con requisitos muy cambiantes. Las metodologías ágiles ofrecen una solución casi adecuada para una gran cantidad de proyectos. Sin embargo existen métodos más generales y con mejores resultados que otros. Saber qué reglas y metodologías aplicar en cada caso es más importante y útil que seguir ciegamente siempre las mismas.

Casos donde no conviene usar métodos ágiles

Las propias prácticas de los métodos ágiles limitan o descartan su uso en algunos proyectos. A continuación se detallan algunos casos donde no conviene usar métodos ágiles. - Aplicaciones distribuidas. Las pruebas unitarias son complicadas de aplicar entre componentes. Sería necesario construir una arquitectura de pruebas para probar directamente los componentes, que podría ser tan complicada como el sistema que se desea construir. - Aplicaciones que requieren seguir un diseño estricto. Por ejemplo: sistemas operativos, software de telecomunicaciones. - Aplicaciones que requieren una documentación exhaustiva. Por ejemplo: sistemas militares, médicos o industriales. - Aplicaciones basadas fundamentalmente en interfaces gráficas de usuario: No es fácil aplicar pruebas unitarias a las interfaces gráficas. - Aplicaciones con código heredado. Habría que reescribir todo el código heredado siguiendo los principios ágiles. - Proyectos muy grandes. La comunicación entre los miembros del equipo es difícil de conseguir. - Proyectos escritos en lenguajes no orientados a objetos. Lenguajes como C, Pascal, Cobol o Fortran hacen imposible técnicas como la refactorización. - Aplicaciones donde la escalabilidad o la eficacia sean importantes. La escalabilidad o la eficacia no son características que se pueden añadir durante el proceso del desarrollo del software o que puedan obtenerse refactorizando: deben considerarse desde un principio.

Características

- Basadas en heurísticas provenientes de prácticas de producción de código - Especialmente preparados para cambios durante el proyecto - Impuestas internamente (por el equipo) - Proceso menos controlado, con pocos principios - No existe contrato tradicional o al menos es bastante flexible - El cliente es parte del equipo de desarrollo - Grupos pequeños (<10 integrantes) y trabajando en el mismo sitio - Pocos artefactos - Pocos roles - Menos énfasis en la arquitectura del software

Tipos de Metodologías ágiles

- XP, o Programación Extrema, es uno de los ejemplos más exitosos de metodología ágil. - Scrum - Crystal - Evolutionary Project Management (Evo) - Feture Driven Development (FDD) - Adaptive Software Developmen(ASD) - Lean Development (LD) y Lean Software Development (LSD) - RUP Ágil, existiendo dos variantes AUP y EUP - RAD

Ventajas de las metodologías ágiles

Las metodologías ágiles presentan diversas ventajas como: - Rápida respuesta a cambios de requisitos a lo largo del desarrollo. - Entrega continua y en plazos cortos de software funcional. - Trabajo conjunto entre el cliente y el equipo de desarrollo. - Minimiza los costos frente a cambios. - Importancia de la simplicidad, al eliminar el trabajo innecesario. - Atención continua a la excelencia técnica y al buen diseño. - Mejora continua de los procesos y el equipo de desarrollo. - Evita malentendidos de requerimientos entre el cliente y el equipo. - El equipo de desarrollo no malgasta el tiempo y dinero del cliente desarrollando soluciones innecesariamente generales y complejas que en realidad no son un requisito del cliente. - Cada componente del producto final ha sido probado y satisface los requerimientos.

Desventajas de los métodos ágiles

Como en cualquiera otra metodología, también hay desventajas y problemas que surgen a la hora de implementarlas: - Falta de documentación del diseño. El código no puede tomarse como una documentación. En sistemas de tamaño grande se necesitar leer los cientos o miles de páginas del listado de código fuente. - Problemas derivados de la comunicación oral. Este tipo de comunicación resulta difícil de preservar cuando pasa el tiempo y está sujeta a muchas ambigüedades. - Falta de calidad. Probar el código de forma constante no genera productos de calidad, sólo revela falta de análisis y diseño. - Fuerte dependencia de las personas. Como se evita en lo posible la documentación y los diseños convencionales, los proyectos ágiles dependen críticamente de las personas. - Falta de procesos de revisión del código. Con métodos como el PSP o TSP se han conseguido reducciones de errores que oscilan entre el 60 y el 80%. La programación en parejas tiene resultados del 20 al 40%, que no es mucho frente al 10 y el 25% de un programador. - Falta de reusabilidad. La falta de documentación hacen difícil que pueda reutilizarse el código ágil. - Sobre costos y retrasos derivados de la refactorización continua. Para un sistema de ciertas proporciones, los costos y retrasos derivados de la refactorización no pueden despreciarse. - Restricciones en cuanto a tamaño de los proyectos abordables. - Rigidez. Algunos métodos ágiles son muy rígidos: deben cumplirse muchas reglas de una forma estricta para garantizar el éxito del proyecto. Por ejemplo XP exige en realidad mucho esfuerzo, concentración y orden. - Cambios. Los modelos de datos son “pesados” y no pueden cambiarse así como así solo porque el cliente que ira incorporar más funciones al sistema. - Problemas derivados del fracaso de los proyectos ágiles. Si un proyecto ágil fracasa no hay documentación o hay muy poca; lo mismo ocurre con el diseño. La comprensión del sistema se queda en las mentes de los desarrolladores.

Fuentes

  • Giraldo, Z. “Herramientas de Ingeniería de software”.
  • Gómez, J. “¿Metodología?... Sí, pero, ¿cuál? ” 12 de enero del 2006.