El término ciclo de vida del software describe el desarrollo de éste, desde la fase inicial hasta la fase final. El propósito es definir las distintas etapas intermedias que se requieren para validar el desarrollo de una aplicación, es decir, para garantizar que el software cumpla con los requerimientos del cliente así como también se establecen los parámetros de verificación en los procedimientos de desarrollo, se asegura de que los métodos que son utilizados en la construcción del software sean los apropiados. La aplicación del ciclo de vida del software permite formar un equipo de trabajo para desempeñar tareas en específico y concentrarse en la calidad del software, en los plazos de tiempo establecidos entre cliente y el equipo y con los costos de producción asociados. Actualmente hay una gran variedad de modelos de ciclo de vida que nos facilitan una metodología para el desarrollo del software, estas metodologías las podríamos clasificar en: modelos tradicionales, los modelos evolutivos, modelos de proceso especializados y modelos agiles.
Los modelos de proceso prescriptivo fueron propuestos originalmente para poner orden en el caos del desarrollo de software. Estos modelos tradicionales han dado cierta estructura útil al trabajo de ingeniería de software, ya que, antes se desarrollaba un Sistema de forma aislada y cada quien con sus propios estadars de trabajo de análisis y programación. Una situación similar fue lo ocurrido con el terremoto de 1985 en la ciudad de México, ya que, después de enfrentarse a miles de muertos, el país tuvo que reconstruirse y no solo arquitectónicamente. “Aquello fue un parteaguas en muchos sentidos”, asegura el doctor Arturo Iglesias Mendoza, investigador del departamento de sismología de la UNAM. Entre las cosas que cambiaron está uno de sus objetos de estudio: los códigos de construcción, estos nuevos reglamentos tuvieron como objetivo el reforzamiento de las estructuras de inmuebles y edificios han permitido a la ciudad de México resistir sismos de grandes magnitudes.
Los primeros modelos de desarrollo de software son:
- Modelo de cascada o lineal o secuencial
- Modelo de construcción de prototipos
- El modelo de desarrollo rápido de aplicaciones (DRA)
Modelos evolutivos
El software, al igual que otros sistemas o productos, evoluciona con el tiempo. Los requerimientos del usuario y los problemas en cuanto a la operatividad de ejecucion en dispositivos móviles, web o de escritorio que surgen hacen que se tenga que adaptar el software a nuevas necesidades tanto del cliente como del mercado; otro factor son las estrictas o cortas fechas tope de entrega del sistema que hacen que sea imposible finalizar un producto completo en un tiempo tan reducido, lo que ocasiona que se entregue una versión limitada con la presión competitiva de otros Sistemas que pueden ser mejores que el nuestro; en éstas y en otras situaciones similares, los ingenieros del software necesitan un modelo de proceso que se ha diseñado explícitamente para acomodarse a un producto que evolucione y adapte a estas demandas. Los modelos evolutivos son iterativos se caracterizan por la manera en la que permiten desarrollar versiones cada vez más completas del software. Motivo por lo cual surgen otras metodolgias de desarrollo como:
- Modelo incremental
- Modelo espiral
- Modeo WINWIN (ganar y ganar)
- Modelo concurrente
Modelos de proceso especializado
Los modelos de proceso especializado tienen muchas de las características o atributos de uno o más de los modelos tradicionales que ya se presentaron anteriormente. Estos modelos tienden a aplicarse cuando se elige un enfoque de ingeniería de software especializado o definido muy específicamente como por ejemplos los siguientes modelos de desarrollo:
- Modelo basados en componentes
- Modelos con metodos formales
- Modelo orientado a aspectos
Modelos agiles
La ingeniería de software ágil combina una filosofía con un conjunto de lineamientos de desarrollo. La filosofía pone el énfasis en: la satisfacción del cliente y en la entrega rápida de software incremental, los equipos pequeños muy motivados para efectuar el proyecto, los métodos informales, los productos del trabajo con mínima ingeniería de software y la sencillez general en el desarrollo. Los lineamientos de desarrollo enfatizan: la entrega sobre el análisis y el diseño (aunque estas actividades no se desalientan), la comunicación activa y continua entre desarrolladores y clientes.
- Programación extrema (XP)
- Desarrollo adaptativo de software (DAS)
- Scrum
- Método de desarrollo de Sistemas dinámicos (MDSD)
- Cristal
- Desarrollo impulsado por las características (DIC)
- Desarrollo esbelto de software (DES)
- Modelado ágil (MA)
- Proceso unificado ágil (PUA)
Para comenzar con la experiencia de desarrollar un producto de software tomaremos ;
DRA (Desarrollo Rápido de Aplicaciones), este modelo de proceso del desarrollo del software lineal secuencial que enfatiza un ciclo de desarrollo extremadamente corto. Es una adaptación a “alta velocidad” en el que se logra el desarrollo rápido utilizando un enfoque de construcción basado en componentes. Si se comprenden bien los requisitos y se limita el ámbito del proyecto, el proceso DRA permite al equipo de desarrollo crear un “sistema completamente funcional” dentro de periodos cortos de tiempo.
Cuando se utiliza principalmente para aplicaciones de sistemas de información, el enfoque DRA comprende las siguientes fases:
- Modelado de gestión
El flujo de información entre las funciones de gestión se modela de forma que responda a las siguientes preguntas: ¿Qué información conduce el proceso de gestión? ¿Qué información se genera? ¿Quién la genera? ¿A dónde va la información? ¿Quién la proceso?
- Modelado de datos
El flujo de información definido como parte de la fase de modelado de gestión se refina como un conjunto de objetos de datos necesarios para el proyecto de software. Es decir se construye una base de datos necesaria para el software (MySQL, SQL Server, Access, etc.)
- Modelado de proceso
Los objetos de datos definidos en la fase de modelado de datos quedan transformados para lograr el flujo de información necesario para implementar una función de gestión. Las descripciones del proceso se crean para añadir, modificar, suprimir, o recuperar un objeto de datos. Es la comunicación entre los objetos.
- Generación de aplicaciones
El DRA asume la utilización de técnicas de cuarta generación. En lugar de crear software con lenguajes de programación de tercera generación, el proceso DRA trabaja para volver a utilizar componentes de programas ya existentes (cuando es posible) o a crear componentes reutilizables (cuando sea necesario). En todos los casos se utilizan herramientas automáticas para facilitar la construcción del software.
- Pruebas y entrega
Como el proceso DRA enfatiza la reutilización, ya se han comprobado muchos de los componentes de los programas. Esto reduce tiempo de pruebas. Sin embargo, se deben probar todos los componentes nuevos y se deben ejercitar todas las interfases a fondo
