viernes, 7 de octubre de 2011

Hipótesis de trabajo y metodología

Metodologías de Desarrollo de Software

El desarrollo de software no es una tarea fácil. Prueba de ello es que existen numerosas propuestas metodológicas que inciden en distintas dimensiones del proceso de desarrollo. Por una parte tenemos aquellas propuestas más tradicionales que se centran especialmente en el control del proceso, estableciendo rigurosamente las actividades involucradas, los artefactos que se deben producir, y las herramientas y notaciones que se usarán. Estas propuestas han demostrado ser efectivas y necesarias en un gran número de proyectos, pero también han presentado problemas en muchos otros. Una posible mejora es incluir en los procesos de desarrollo más actividades, más artefactos y más restricciones, basándose en los puntos débiles detectados. Sin embargo, el resultado final sería un proceso de desarrollo más complejo que puede incluso limitar la propia habilidad del equipo para llevar a cabo el proyecto. Otra aproximación es centrarse en otras dimensiones, como por ejemplo el factor humano o el producto software. Esta es la filosofía de las metodologías ágiles, las cuales dan mayor valor al individuo, a la colaboración con el cliente y al desarrollo incremental del software con iteraciones muy cortas. Este enfoque está mostrando su efectividad en proyectos con requisitos muy cambiantes y cuando se exige reducir drásticamente los tiempos de desarrollo pero manteniendo una alta calidad. Las metodologías ágiles están revolucionando la manera de producir software, y a la vez generando un amplio debate entre sus seguidores y quienes por escepticismo o convencimiento no las ven como alternativa para las metodologías tradicionales.
Un objetivo de décadas ha sido encontrar procesos y metodologías, que sean sistemáticas, predecibles y repetibles, a fin de mejorar la productividad en el desarrollo y la calidad del producto software.
La evolución de la disciplina de ingeniería del software ha traído consigo propuestas diferentes para mejorar los resultados del proceso de construcción. Las metodologías tradicionales haciendo énfasis en la planificación y las metodologías ágiles haciendo énfasis en la adaptabilidad del proceso, delinean las principales propuestas presentes.
Una definición estándar de metodología puede ser el conjunto de métodos que se utilizan en una determinada actividad con el fin de formalizarla y optimizarla. Determina los pasos a seguir y cómo realizarlos para finalizar una tarea.
Si esto se aplica a la ingeniería del software, podemos destacar que una metodología:
Ø    Optimiza el proceso y el producto software.
Ø    Métodos que guían en la planificación y en el desarrollo del software.
Ø    Define qué hacer, cómo y cuándo durante todo el desarrollo y mantenimiento de un proyecto.

Metodologías tradicionales
Las metodologías tradicionales son denominadas, a veces, de forma peyorativa, como metodologías pesadas.
Centran su atención en llevar una documentación exhaustiva de todo el proyecto y en cumplir con un plan de proyecto, definido todo esto, en la fase inicial del desarrollo del proyecto.
Otra de las características importantes dentro de este enfoque, son los altos costes al implementar un cambio y la falta de flexibilidad en proyectos donde el entorno es volátil.
Las metodologías tradicionales (formales) se focalizan en la documentación, planificación y procesos (plantillas, técnicas de administración, revisiones, etc.)

Metodologías ágiles
Este enfoque nace como respuesta a los problemas que puedan ocasionar las metodologías tradicionales y se basa en dos aspectos fundamentales, retrasar las decisiones y la planificación adaptativa. Basan su fundamento en la adaptabilidad de los procesos de desarrollo.
Estas metodologías ponen de relevancia que la capacidad de respuesta a un cambio es más importante que el seguimiento estricto de un plan.


Desarrollo Iterativo e Incremental
El desarrollo iterativo e incremental es un proceso de desarrollo de software cíclico desarrollado en respuesta a la debilidad del modelo en cascada. Empieza con una planificación inicial y termina con el despliegue, con la iteración cíclica en el medio.
Para apoyar al desarrollo de proyectos por medio de este modelo se han creado distintos frameworks, entornos de trabajo, como puede ser el Rational Unified Process. El desarrollo incremental e iterativo es también una parte esencial de un tipo de programación conocido como Extreme Programming y los demás frameworks de desarrollo rápido de software.
El desarrollo iterativo e incremental es una parte esencial de RUP, de DSDM, XP y generalmente de los marcos de trabajo de desarrollo de software ágil.


El desarrollo incremental es una estrategia programada y en etapas, en la que las diferentes partes del sistema se desarrollan en diferentes momentos o a diferentes velocidades, y se integran a medida que se completan.
El desarrollo iterativo es una estrategia de programación de reproceso en la que el tiempo se separa para revisar y mejorar partes del sistema. Esto no presupone desarrollo incremental, pero trabaja muy bien con él. Una diferencia típica es que la salida de un incremento no está necesariamente sujeta a más refinamiento, y sus pruebas o la realimentación del usuario no se usa como entrada para revisar los planes o especificaciones de los incrementos sucesivos. Por el contrario, la salida de una iteración se examina para modificación, y especialmente para revisar los objetivos de las sucesivas iteraciones.
Los dos términos se pusieron en práctica a mediados de los 90s. Los autores del Proceso Unificado (UP) y el proceso unificado Rational (RUP) seleccionaron el término desarrollo iterativo e iteraciones para hacer referencia de forma general a cualquier combinación de desarrollo incremental e iterativo. La mayoría de las personas que dicen desarrollo iterativo quieren decir que hacen ambos desarrollo incremental e iterativo.

Conclusión

Este método iterativo es el que va más acorde al desarrollo del proyecto ya que como tal una vez desarrollado en base a ciertos criterios tomados de estadísticas y no directamente con un cliente en específico, el proyecto se puede mejorar en base a la reacción que pueda tomar el cliente frente al prototipo que se desarrolle. Una vez tomado muestras de la opinión del cliente al prototipo desarrollado analizarlas y con ello poder llegar a implementarlas en el prototipo generando así un software mucho más útil y sobre todo que este en constante cambio en base a las nuevas necesidades que se vayan presentando. 

Referencias

Laboratorio Nacional de Calidad de Software. Ingeniería del Software: Metodologías y Ciclos de Vida. Fuente consultada el 6 Octubre 2011 en: http://www.inteco.es/file/N85W1ZWFHifRgUc_oY8_Xg

Facultad e Ingeniería Universidad de Buenos Aires. Diseño de una metodología Ágil de desarrollo de Software. Fuente consultada el 6 Octubre 2011 en: www.fi.uba.ar/.../schenone-tesisdegradoingenieriainformatica.pdf

Ingeniería del Software y Sistemas de Información. Metodologías Ágiles en el desarrollo de Software. Fuente consultada el 6 Octubre 2011 en: issi.dsic.upv.es/archives/f-1069167248521/actas.pdf



No hay comentarios:

Publicar un comentario