metodologías tradicionales 1

9
Metodologías tradicionales y metodologías ágiles Teniendo en cuenta la filosofía de desarrollo de las metodologías, aquellas con mayor énfasis en la planificación y control del proyecto, en especificación precisa de requisitos y modelado, reciben el apelativo de Metodologías Tradicionales o Pesadas. [27] Estas metodologías tradicionales imponen una disciplina de trabajo sobre el proceso de desarrollo del software, con el fin de conseguir un software más eficiente. Para ello, se hace énfasis en la planificación total de todo el trabajo a realizar y una vez que está todo detallado, comienza el ciclo de desarrollo del producto software. Se centran especialmente en el control del proceso, mediante una rigurosa definición de roles, actividades, artefactos, herramientas y notaciones para el modelado y documentación detallada [42]. Además, las metodologías tradicionales no se adaptan adecuadamente a los cambios, por lo que no son métodos adecuados cuando se trabaja en un entorno, donde los requisitos no pueden predecirse o bien pueden variar. Entre las metodologías tradicionales o pesadas podemos citar: Metodologia (Alejandra) • RUP (Rational Unified Procces) (royner ) • MSF (Microsoft Solution Framework) (erica) • Win-Win Spiral Model (soto) • Iconix (cristian) Pero sin dudas adaptarse a la agitada sociedad actual implica ser “ágil”, es decir, tener la capacidad de proveer respuestas rápidas y ser adaptables al cambio. Ambas cualidades siempre han sido deseables, pero en el entorno de negocio actual resultan indispensables. Este requerimiento de agilidad en las empresas, gobiernos y cualquier otra organización provoca que el software también deba ser desarrollado de manera ágil. Las necesidades de un cliente pueden sufrir cambios importantes del momento de contratación de un software al momento de su entrega; y es mucho más importante satisfacer estas últimas que las primeras. Esto requiere procesos de software diferentes que en lugar de rechazar los cambios sean capaces de incorporarlos. Los procesos ágiles son una buena elección cuando se trabaja con requisitos desconocidos o variables. Si no existen requisitos estables,

Upload: royner-enriquearciniegas-morales

Post on 26-Dec-2015

32 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Metodologías tradicionales 1

Metodologías tradicionales y metodologías ágiles

Teniendo en cuenta la filosofía de desarrollo de las metodologías, aquellas con mayor énfasis en la planificación y control del proyecto, en especificación precisa de requisitos y modelado, reciben el apelativo de Metodologías Tradicionales o Pesadas. [27]

Estas metodologías tradicionales imponen una disciplina de trabajo sobre el proceso de desarrollo del software, con el fin de conseguir un software más eficiente. Para ello, se hace énfasis en la planificación total de todo el trabajo a realizar y una vez que está todo detallado, comienza el ciclo de desarrollo del producto software. Se centran especialmente en el control del proceso, mediante una rigurosa definición de roles, actividades, artefactos, herramientas y notaciones para el modelado y documentación detallada [42]. Además, las metodologías tradicionales no se adaptan adecuadamente a los cambios, por lo que no son métodos adecuados cuando se trabaja en un entorno, donde los requisitos no pueden predecirse o bien pueden variar.

Entre las metodologías tradicionales o pesadas podemos citar:

Metodologia (Alejandra)

• RUP (Rational Unified Procces) (royner )

• MSF (Microsoft Solution Framework) (erica)

• Win-Win Spiral Model (soto)

• Iconix (cristian)

Pero sin dudas adaptarse a la agitada sociedad actual implica ser “ágil”, es decir, tener la capacidad de proveer respuestas rápidas y ser adaptables al cambio. Ambas cualidades siempre han sido deseables, pero en el entorno de negocio actual resultan indispensables. Este requerimiento de agilidad en las empresas, gobiernos y cualquier otra organización provoca que el software también deba ser desarrollado de manera ágil.

Las necesidades de un cliente pueden sufrir cambios importantes del momento de contratación de un software al momento de su entrega; y es mucho más importante satisfacer estas últimas que las primeras. Esto requiere procesos de software diferentes que en lugar de rechazar los cambios sean capaces de incorporarlos.

Los procesos ágiles son una buena elección cuando se trabaja con requisitos desconocidos o variables. Si no existen requisitos estables, no existe una gran posibilidad de tener un diseño estable y de seguir un proceso totalmente planificado, que no vaya a variar ni en tiempo ni en dinero. En estas situaciones, un proceso adaptativo será mucho más efectivo que un proceso predictivo. Por otra parte, los procesos de desarrollo adaptativos también facilitan la generación rápida de prototipos y de versiones previos a la entrega final, lo cual agradará al cliente.

Las metodologías ágiles proporcionan una serie de pautas y principios junto a técnicas pragmáticas que puede que no curen todos los males pero harán la entrega del proyecto menos complicada y más satisfactoria tanto para los clientes como para los equipos de entrega. En la figura 1 se muestran los principios que rigen el desarrollo ágil.

Figura 1: Principios del Manifiesto Ágil

Entre las metodologías ágiles más destacadas hasta el momento se pueden nombrar:

Page 2: Metodologías tradicionales 1

• XP (Extreme Programming)

• Scrum

• Crystal Clear

• DSDM (Dynamic Systems Developmemt Method)

• FDD (Feature Driven Development)

• ASD (Adaptive Software Development)

• XBreed

• Extreme Modeling

En el Anexo 1 se muestra una comparación entre las metodologías tradicionales y las ágiles.

.

METODOLOGÍAS TRADICIONALES

Hay una serie de metodologías que solemos llamar Tradicionales propuestas casi todas ellas con anterioridad a los años 90 que pretendían ayudar a los profesionales indicando pautas para realizar y documentar cada una de las tareas del desarrollo del software

Otras metodologías tradicionales o pesadas podemos citar:

• RUP (Rational Unified Procces)

• MSF (Microsoft Solution Framework)

Page 3: Metodologías tradicionales 1

• Win-Win Spiral Model

•Iconix

¿Qué es una metodología de desarrollo?

Según la definición de la wikipedia: Una metodología de desarrollo de software se

refiere a un framework que es usado para estructurar, planear y controlar el

proceso de desarrollo en sistemas de información.” 

No hay que confundir una metodología con un modelo de desarrollo. El modelo de

desarrollo puede ser el mismo con una metodología Agile o tradicional y no debería influir

en el resultado. Con modelo de desarrollo nos solemos referir a los modelo en cascada,

prototipado, incremental, espiral, etc.

1. ¿Qué consideramos una metodología tradicional?

Cuando nos referimos a metodologías de software tradicionales estamos hablando de

aquellas que han surgido basando sus objetivos en la definición y el control del trabajo.

Estas metodologías se suelen caracterizar por:

Roles muy definidos por los participantes

Equipos de trabajo grandes

Fases con marcos de trabajo muy definido

Rigidez en las fases y fechas de entrega

Comunicación escasa con el cliente

Excesiva documentación durante la vida del proyecto

Algunas de estas metodologías tradicionales:

Page 4: Metodologías tradicionales 1

RUP (Rational Unified Process)

EUP (Enterprise Unified Process)

METRICA 3

1. ¿Que consideramos una metodología agile?

Podemos considerar una metodología como Agile cuando está enfocada a minimizar las

tareas innecesarias en el desarrollo de software mediante equipos auto-organizados y

multidisciplinarios. Las características que podemos encontrar en una metodología Agile

son:

Equipos de desarrollo multidisciplinares y auto-organizados.

Focalización en el trabajo a corto plazo.

Valoración de la comunicación entre el cliente.

Valoración de  la respuesta al cambio.

Aportación de valor al software desarrollado.

Organización temporal mediante entregas constantes de trabajo

Flexibilidad en la gestión

Proyectos poco documentados debido a la minimización de tareas que no contribuyen al

desarrollo de software.

Algunas de las metodologías ágiles son:

Scrum

Kanban

Lean

XP (Extreme Programming)

1. ¿Cuando Utilizar una metodología Agile?

Page 5: Metodologías tradicionales 1

Una metodología Agile no siempre es aplicable a un proyecto, es importante que el

proyecto presente ciertas características para no encontrarnos con una mala experiencia

Agile:

Si tu equipo es pequeño y esta formado mayoritariamente por gente con talento y

experiencia

Si el cliente final está involucrado y no impone barreras de comunicación

Si los requisitos son altamente cambiantes

Cuando se dan estas tres características en el proyecto es recomendable usar una

metodología Agile. Esto no implica que no se pueda utilizar en proyectos que no cumplan

alguna de estas características, pero es posible que no sea necesario aplicar todas las

herramientas que proporciona una metodología Agile. Por ejemplo, si los requisitos no

cambian, es posible que no necesites las reuniones de estimación más que para dividir el

proyecto en Sprints, y que no necesites hacer entregas al cliente al final de cada Sprint.

No hay que ver una metodología Agile como algo estático. Podemos coger solo aquellas

herramientas de la metodología que nos resultan útiles para el proyecto en concreto, lo

cual hace que sea perfectamente compatible usar una mezcla de una metodología de

trabajo tradicional y una Agile, incluso modificar una metodología Ágile para que se

adapte a nuestro proyecto en concreto.

Modelos de ciclo de vida en desarrollo de software Hugo F. Arboleda Jiménez MSc. En el contexto de la industria colombiana de software. La evolución de la disciplina de ingeniería de software ha traído consigo propuestas diferentes para mejorar los resultados del proceso de construcción. Las metodologías tradicionales haciendo énfasis en la planeación, y las metodologías ágiles haciendo énfasis en la adaptabilidad del proceso, delinean las principales propuestas presentes en la literatura. De manera paralela, el tema de modelos para el mejoramiento de los procesos de desarrollo ocupa un lugar importante en la búsqueda de la metodología adecuada para producir software de calidad en cualquier contexto de desarrollo. Metodologías tradicionales en el desarrollo 

Page 6: Metodologías tradicionales 1

Se caracterizan por exponer procesos basados en planeación exhaustiva. Esta planeación se realiza esperando que el resultado de cada proceso sea determinante y predecible. La experiencia ha mostrado que, como consecuencia de las características del software, los resultados de los procesos no son siempre predecibles y sobre todo, es difícil predecir desde el comienzo del proyecto cada resultado. Sin embargo, es posible por medio de la recolección y estudio de métricas de desarrollo lograr realizar estimaciones acertadas en contextos de desarrollo repetibles.Remontándose a la historia, el modelo de cascada fue uno de los primeros modelos de ciclo de vida (MCV) que formalizó un conjunto de procesos de desarrollo de software. Este MCV describe un orden secuencial en la ejecución de los procesos asociados. El modelo espiral se postuló como una alternativa al modelo de cascada. La ventaja de este modelo radica en el perfeccionamiento de las soluciones encontradas con cada ciclo de desarrollo, en términos de dar respuesta a los requerimientos inicialmente analizados. El modelo de cascada y el modelo espiral suponen, de manera general, que los requerimientos del cliente no cambian radicalmente en el transcurso del desarrollo del sistema. Por otro lado, la realización de prototipos es una herramienta en la que se apoyan diferentes MCV. Un prototipo debe tener el objetivo de mostrar al cliente o a la gerencia del proyecto el resultado que se obtendrá de la implementación de cada uno de los requerimientos del cliente una vez terminado el desarrollo. Con los prototipos se tiene la posibilidad de obtener retroalimentación de manera temprana. La solución a algunos de los problemas presentados por las metodologías tradicionales se logra con una gran evolución del modelo espiral. El proceso unificado propone la elaboración de varios ciclos de desarrollo, donde cada uno finaliza con la entrega al cliente de un producto terminado. Este se enmarca entre los conocidos modelos iterativo-incremental. Metodologías ágiles Grupos de desarrollo han experimentado soluciones que basan su fundamento en la adaptabilidad de los procesos de desarrollo, en lugar de  seguir esperando lograr resultados predecibles de un proceso que no evoluciona. Esta comunidad de desarrolladores e investigadores han nombrado su trabajo bajo lo que conocemos como metodologías ágiles. Las metodologías ágiles como puede entenderse mal, no están en contra de administrar procesos de desarrollo. Por el contrario promueve la formalización de procesos adaptables. La compilación de los principios y valores que resaltan las metodologías ágiles fue formalizada en el manifiesto para el desarrollo de software ágil. Este documento desarrollado por los representantes de cada una de las metodologías que en el momento se presentaban como ágiles, logra resumir en un conjunto de ideas las prácticas que una metodología de este estilo debe llevar a cabo. Como característica fundamental, la habilidad de responder al cambio es la principal característica de las metodologías ágiles. XP, una de las más difundidas, es una metodología de desarrollo de software ágil que define pocas reglas y pocas prácticas. XP promueve la adaptabilidad de los procesos de desarrollo basándose en los principios y prácticas que presenta. Quienes trabajan usando XP deben seguir procesos disciplinados, pero más que eso, deben combinar la disciplina con la adaptabilidad necesaria del proceso. Las metodologías de Cristal se basan en el principio de que tipos diferentes de proyectos requieren tipos diferentes de metodologías. La metodología escogida debe

Page 7: Metodologías tradicionales 1

depender de dos factores: el número de personas en el proyecto, y las consecuencias de los errores. Conforme al principio de las metodologías ágiles, Scrum recalca la imposibilidad de encontrar procesos definidos y repetibles cuando no existen problemas, personas, ni ambientes definidos y repetibles. ¿Metodologías ágiles o metodologías tradicionales?

En las metodologías tradicionales el principal problema es que nunca se logra planear bien el esfuerzo requerido para seguir la metodología. Pero entonces, si logramos definir métricas que apoyen la estimación de las actividades de desarrollo, muchas prácticas de metodologías tradicionales podrían ser apropiadas. El no poder predecir siempre los resultados de cada proceso no significa que estamos frente a una disciplina de azar. Lo que significa es que estamos frente a la necesidad de adaptación de los procesos de desarrollo que son llevados por parte de los equipos que desarrollan software. Tener metodologías diferentes para aplicar de acuerdo con el proyecto que se desarrolle resulta una idea interesante. Estas metodologías pueden involucrar prácticas tanto de metodologías ágiles como de metodologías tradicionales. De esta manera podríamos tener una metodología por cada proyecto, la problemática sería definir cada una de las prácticas, y en el momento preciso definir parámetros para saber cual usar. Es importante tener en cuenta que el uso de un método ágil no es para todos. Sin embargo, una de las principales ventajas de los métodos ágiles es su peso inicialmente ligero y por eso las personas que no estén acostumbradas a seguir procesos encuentran estas metodologías bastante agradables. En el contexto colombiano Los primeros desarrollos de software en Colombia iniciaron de manera artesanal. Incrementalmente, y con la llegada de nuevas tecnología, plataformas de desarrollo, y programas de formación superior bien estructurados, se inició un proceso de mejoramiento de procesos entre los que se incluye el tema de la planeación y seguimiento de los proyectos de software. El modelo de cascada fue en ese entonces, y tal vez lo sigue siendo, el modelo más usado por los desarrolladores de software que recién constituyen sus empresas de desarrollo. Modelos de desarrollo sin alto nivel de complejidad como el espiral, o el orientado a prototipos, siguen siendo los más usados. Sin embargo, estos modelos siguen siendo interpretados en algunos casos de manera errónea. Es el caso de equipos de desarrollo que por tener ciclos de desarrollo iterativo y/o incremental, aseguran seguir un modelo espiral, sin realizar un análisis de riesgo bien soportado.