Modelos y Metodologías de Desarrollo de Software: Evolución y Principios Ágiles
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 8,56 KB
Modelos de Desarrollo de Software
Las actividades necesarias para el desarrollo de un proyecto se pueden organizar de diferentes maneras en función de cada proyecto, de sus características, del personal involucrado, etc. Esto se plasma en el denominado ciclo de vida del proyecto. El ciclo de vida determina el orden en el que se van a llevar a cabo las tareas y también los criterios que deben cumplir para pasar de una tarea a la siguiente. Esos criterios que se deben cumplir consisten en la obtención de un producto intermedio (debe ser evaluable) y las características que debe satisfacer. Como resultado de una tarea de análisis se obtiene una ERS (Especificación de Requisitos del Sistema).
Modelo en Cascada
Este modelo propone un enfoque sistemático y secuencial para el desarrollo del software. Comienza con un análisis, continuando con un diseño, programación y pruebas hasta llegar al software terminado. Para detectar los errores lo antes posible se establecen revisiones al término de cada etapa. Esta revisión se realiza sobre la documentación producida en esa fase. Si a pesar de todo se detecta un error de fases anteriores, habrá que rehacer parte del trabajo, volviendo a un punto anterior a través de las flechas del diagrama.
Ventajas:
- Es fácil de comprender.
- Es fácil de planificar.
- Es fácil de seguir.
Problemas:
- Es difícil que un proyecto real siga un perfecto flujo secuencial como propone el modelo.
- Aunque este modelo permite repeticiones, lo hace de forma indirecta. Como resultado de esto, cada cambio genera mucha confusión.
Modelos de Desarrollo Evolutivo
Son modelos donde el software va evolucionando a través de ajustes y mejoras.
Construcción de Prototipos
Se basa en la introducción del prototipado como herramienta para la validación de requisitos por parte del cliente. Se construye un prototipo de la aplicación para que el cliente pueda corregir fallos antes de empezar a desarrollar. Hay que dejar muy claro al cliente que se trata de un prototipo para la validación de la aplicación o de una parte de la aplicación. En ocasiones, el prototipo incluso es creado con herramientas distintas a las del proyecto final.
Iterativo e Incremental
Este modelo combina las fases del modelo en cascada aplicados de forma repetida. En este caso también hay prototipo, pero no se desechan, sino que se reutilizan en cada una de las iteraciones, aumentando su funcionalidad hasta que se convierta en el producto final (prototipado evolutivo). En un primer momento se realiza en análisis general del sistema y se especifican las funcionalidades, en base a ellas se planifican las iteraciones.
Modelo en Espiral
Es similar al iterativo, pero con la diferencia de que es un proceso continuo durante toda la vida útil del software. A diferencia del incremental, aquí no sabemos cuántas iteraciones se van a realizar.
Metodologías de Desarrollo de Software
Una metodología puede seguir uno o varios modelos de ciclo de vida. El ciclo de vida indica qué es lo que hay que obtener a lo largo del desarrollo del proyecto. El cómo hacerlo lo define la metodología. Por lo tanto, el ciclo es el modelo general que se sigue en el desarrollo de software, mientras que la metodología establece las tareas concretas que hay que llevar a cabo, cómo hacer cada tarea, qué herramientas vamos a usar.
Conceptos de Procedimiento, Técnica y Herramienta
- El proceso de desarrollo de software, para que sea manejable, ha de dividirse en fases en las cuales se lleva a cabo una serie de tareas.
- Para llevar a cabo cada tarea se debe seguir un procedimiento y como consecuencia de su realización obtenemos uno o varios productos. Los cuales pueden ser intermedios (se usan como base para hacer una tarea posterior) o finales (se pueden entregar al cliente).
- Para aplicar cada procedimiento se deben utilizar uno o varios métodos técnicos en los que se crean diagramas gráficos con apoyos textuales. Además, se pueden usar herramientas de apoyo que automaticen la aplicación de dicho método.
- Las herramientas que permiten automatizar las tareas reciben el nombre de herramientas CASE (Computer-Aided Software Engineering).
De las definiciones de método y metodología se puede deducir que una metodología incluye un conjunto de métodos. Las distintas metodologías de desarrollo de software han ido evolucionando a lo largo del tiempo, pero se identifican tres periodos:
Desarrollo Convencional
Al principio, las prácticas eran totalmente artesanales y no se seguía ninguna metodología. Esto originaba multitud de problemas y desembocó en la crisis del software.
Metodologías Estructuradas
Fue la primera respuesta a la citada crisis. Se basa en la regulación de la tarea de programación con la difusión de la programación estructurada. Esto originó a la postre la aparición de las metodologías estructuradas.
Metodologías Orientadas a Objetos
En los 80 surgieron, en primer lugar, los lenguajes de programación orientados a objetos y, más tarde, métodos para diseño y análisis orientado a objetos. El paradigma orientado a objetos supuso un cambio de filosofía en relación a la metodología que era la estructurada anterior. En la metodología estructurada, las aplicaciones se consideran como programas compuestos por diversos componentes software llamados módulos entre los que se realizan llamadas. En cambio, en la metodología orientada a objetos, la atención se centra más en los procesos y en los datos sobre los que hay que operar. Una aplicación consta de varios objetos, cada uno de los cuales tiene un estado (definido por sus variables) y además un comportamiento (definido por sus métodos). Esos métodos (funciones) se ejecutan al recibir un mensaje de otro objeto. Actualmente, la metodología que es referencia en desarrollo de software es el Proceso Unificado de Desarrollo de Software, que lo creó Rational Software Corporation. Esta metodología está avalada por los autores del Lenguaje Unificado de Modelado (UML).
Metodologías Ágiles
En el desarrollo ágil, se pone el énfasis en la entrega al cliente cada poco tiempo. Se entrega software que funciona. Importa más lo anterior que el rigor de la ingeniería que hayamos seguido en los productos intermedios. Uno de los objetivos más importantes de las metodologías ágiles es la entrega rápida de software incremental. Una de las ventajas del desarrollo ágil es la mayor facilidad para implementar cambios a lo largo del desarrollo, además el coste de estos cambios es menor. Cuanto más tarde se detecta la necesidad de cambio, más costoso es incorporarlo. También el coste de un cambio depende en qué etapas se realice. En las etapas iniciales (análisis y diseño) es más costoso que en las finales. El desarrollo ágil incorpora herramientas para reducir el coste de cada cambio:
- La entrega incremental.
- Pruebas unitarias continuas.
- Programación por parejas.
Principios de la Agilidad:
- Máxima prioridad a satisfacer al cliente mediante entradas rápidas y continuas.
- Los requisitos cambiantes son bienvenidos.
- Las entregas son frecuentes, lo más pronto posible y de software que funcione (2 semanas - 2 meses).
- Los clientes y los encargados del proyecto trabajan conjuntamente, incluso a diario mientras dura el proyecto.
- Los proyectos se desarrollan por individuos motivados. Tenemos que tener entorno y apoyo adecuados y confiar en los compañeros.
- Potencia la conversación cara a cara. Es la forma más eficiente de transmitir información.
- La principal medida para progresar en el software es que funcione.
- Los procesos ágiles impulsan el desarrollo sostenible.
- La atención continua a la excelencia técnica y al buen diseño mejora la agilidad.
- Es esencial la simplicidad: el arte de maximizar la cantidad de trabajo no realizado.
- Las mejores arquitecturas, requisitos y diseños surgen de equipos pequeños con organización propia.
- El equipo reflexiona con regularidad sobre cómo ser más eficaz, para perfeccionar su comportamiento.
No es necesario que todas las metodologías ágiles apliquen estos 12 principios con la misma intensidad, pero son los 12 principios que definen una filosofía de desarrollo ágil.