1. Concepto de Ciclo de Vida
El ciclo de vida abarca toda la vida del sistema, comenzando con su concepción y finalizando cuando ya no se utiliza. A veces también se habla de ciclo de desarrollo, que es un subconjunto del anterior.
A continuación, se analizarán los procesos que se deben contemplar en el ciclo de vida del software y posteriormente se resumen los principales paradigmas o modelos.
2. Procesos del Ciclo de Vida
Las actividades que se pueden realizar durante el ciclo de vida del software se agrupan en cinco procesos principales, ocho procesos de soporte y cuatro procesos generales.
Hay que destacar que la norma no fomenta ningún modelo de ciclo de vida en particular, gestión del software o método de ingeniería, ni prescribe cómo realizar ninguna de las actividades.
Procesos Principales
- Adquisición
- Suministro
- Desarrollo
- Explotación
- Mantenimiento
Procesos de Soporte
- Documentación
- Gestión de Configuración
- Aseguramiento de la Calidad
- Verificación
- Validación
- Revisión Conjunta
- Auditoría
- Resolución de Problemas
Procesos Generales
- Gestión
- Infraestructura
- Mejora
- Formación
A. Procesos Principales
Los procesos principales son aquellos que resultan útiles a las personas que inician o realizan el desarrollo, la explotación o el mantenimiento del software durante su ciclo de vida.
- Proceso de Adquisición: Contiene las actividades y las tareas que el comprador, el cliente o el usuario realiza para adquirir un sistema o un producto software. Incluye la preparación y publicación de una solicitud de ofertas, la selección del suministrador y la gestión de los procesos desde la adquisición hasta la aceptación del producto.
- Proceso de Suministro: Contiene las actividades y tareas que el suministrador realiza. Se inicia con la decisión de preparar una propuesta para responder a una petición de un comprador o por la firma de un contrato para proporcionar un producto software.
- Proceso de Desarrollo: Sus principales actividades son: Análisis, Diseño, Codificación, Pruebas, Implantación.
- Proceso de Explotación: Incluye la explotación del software y el soporte operativo a los usuarios. También se denomina proceso de operación.
- Proceso de Mantenimiento: Aparece cuando el software necesita modificaciones, ya sea en el código o en la documentación asociada, debido a un error, una deficiencia, un problema o la necesidad de mejora o adaptación.
B. Procesos de Soporte
Estos procesos sirven de apoyo al resto y se aplican en cualquier punto del ciclo de vida.
- Proceso de Documentación: Registra la información producida por un proceso o actividad del ciclo de vida.
- Proceso de Gestión de la Configuración: Aplica procedimientos administrativos y técnicos para: Identificar, definir y establecer la línea base de los elementos de configuración del software; Controlar las modificaciones y las versiones de los elementos; Registrar e informar sobre el estado de los elementos y las peticiones de modificación; Asegurar la compleción, la consistencia y la corrección de los elementos; Controlar el almacenamiento, la manipulación y la entrega de los elementos.
- Proceso de Aseguramiento de la Calidad: Aporta confianza en que los procesos y los productos software cumplen con los requisitos especificados y se ajustan a los planes establecidos.
- Proceso de Verificación: Determina si los requisitos de un sistema o del software están completos y son correctos, y si los productos software de cada fase cumplen los requisitos impuestos en las fases previas.
- Proceso de Validación: Sirve para determinar si el sistema o software final cumplen los requisitos previstos para su uso.
- Proceso de Revisión Conjunta: Sirve para evaluar el estado del software y sus productos en una actividad del ciclo de vida o una fase de un proyecto.
- Proceso de Auditoría: Permite determinar, en los hitos predeterminados, si se han cumplido los requisitos, los planes y el contrato.
- Proceso de Resolución de Problemas: Permite analizar y eliminar los problemas descubiertos durante el desarrollo, la explotación, el mantenimiento u otro proceso.
C. Procesos Generales
Estos procesos los emplea la organización para llevar a cabo funciones tales como la gestión, la formación del personal o la mejora del proceso. Ayudan a establecer, implementar y mejorar la organización consiguiendo efectividad en la misma.
- Proceso de Gestión: Contiene las actividades y las tareas genéricas que puede emplear cualquier organización que tenga que gestionar sus procesos, por lo que incluye la planificación, el seguimiento y control, y la revisión y evaluación.
- Proceso de Infraestructura: Establece la infraestructura necesaria para cualquier otro proceso, lo que incluye hardware, software, herramientas, técnicas, normas e instalaciones para el desarrollo, la explotación o el mantenimiento.
- Proceso de Mejora: Sirve para establecer, valorar, medir, controlar y mejorar los procesos del ciclo de vida del software.
- Proceso de Formación: Sirve para proporcionar y mantener al personal formado, lo que incluye el desarrollo del material de formación, así como la implementación del plan de formación.
3. Modelos de Ciclo de Vida Más Usuales
Modelo en Cascada
Las fases o etapas que se proponen en este ciclo suelen ser: Análisis de requisitos del sistema, Análisis de requisitos del software, Diseño preliminar, Diseño detallado, Codificación, Pruebas, Explotación, Mantenimiento.
Algunas características de este modelo son:
- Cada fase empieza cuando ha terminado la anterior.
- Para pasar de una fase a otra es necesario conseguir todos los objetivos de la etapa previa.
- Ayuda a prevenir que se sobrepasen las fechas de entrega y los costes esperados.
- Al final de cada fase, el personal técnico y los usuarios tienen la oportunidad de revisar el progreso del proyecto.
Aunque es el ciclo de vida más antiguo y el más ampliamente utilizado, debido a las facilidades que da a los gestores para controlar el progreso del proyecto, ha recibido numerosas críticas, como:
- No refleja el proceso real de desarrollo del software.
- Se tarda mucho tiempo en pasar por todo el ciclo.
- Acentúa el fracaso de la industria del software con el usuario final.
Modelo Incremental
El modelo incremental corrige la necesidad de una secuencia no lineal de pasos de desarrollo. Se ajusta a entornos de alta incertidumbre, por no tener necesidad de poseer un conjunto exhaustivo de requisitos al comenzar el sistema.
El modelo incremental constituyó un avance sobre el modelo en cascada, pero también presenta problemas. Aunque permite el cambio continuo de requisitos, aún existe el problema de determinar si los requisitos propuestos son válidos.
Modelo en Espiral
Este modelo intenta evitar los problemas del modelo en cascada. Consta de una serie de ciclos. Cada ciclo comienza identificando los objetivos, las alternativas y las restricciones del mismo. Una vez evaluadas las alternativas, se lleva a cabo el ciclo correspondiente para, una vez finalizado, empezar a plantear el próximo.
Una característica importante del modelo en espiral es que cada ciclo se completa con una revisión en la que participan las principales personas u organizaciones que tienen relación con el producto.
El modelo en espiral puede aplicarse en la mayoría de las ocasiones. Sin embargo, en algunos casos hay que resolver ciertas dificultades, como el trabajo con software contratado y la necesidad de expertos en evaluación de riesgos.
4. Metodologías de Desarrollo de Software
Metodología: Conjunto de filosofías, fases, procedimientos, reglas, técnicas, herramientas, documentación y aspectos de formación para los desarrolladores de sistemas de información.
Una metodología representa el camino para desarrollar software de una manera sistemática. Incluye: Cómo se debe dividir un proyecto en etapas; Qué tareas se llevan a cabo en cada etapa; Qué salidas se producen y cuándo se deben producir; Qué restricciones se aplican; Qué herramientas se van a utilizar; Cómo se gestiona y controla un proyecto.
De forma general, podemos identificar tres necesidades principales que se intentan cubrir con una metodología:
- Mejores aplicaciones
- Un mejor proceso de desarrollo
- Un proceso estándar en la organización
Objetivos de una metodología:
- Registrar los requisitos de un sistema de información de una forma acertada.
- Proporcionar un método sistemático de desarrollo de forma que se pueda controlar su progreso.
- Construir un sistema de información dentro de un tiempo apropiado y unos costes aceptables.
- Construir un sistema que esté bien documentado y que sea fácil de mantener.
- Ayudar a identificar, lo más pronto posible, cualquier cambio que sea necesario realizar dentro del proceso de desarrollo.
- Proporcionar un sistema que satisfaga a todas las personas afectadas por el mismo.
Una metodología se puede considerar como un conjunto de métodos.
5. Visión Histórica del Desarrollo de Metodologías
5.1. Desarrollo Convencional
Se vio la importancia del análisis y el diseño en el desarrollo de un sistema. Los analistas se dividían en dos tipos: analistas funcionales y analistas técnicos. El enfoque convencional tiene serios problemas, como resultados finales impredecibles, falta de control del proyecto y la influencia negativa de los cambios organizativos.
5.2. Desarrollo Estructurado
Programación estructurada: Se establecieron normas para la aplicación de las estructuras de datos y de control.
Diseño Estructurado: Se refina el concepto de modularidad, normalizando la estructura de un módulo de programa.
Análisis estructurado: Se hacía una especificación narrativa de los requisitos. Estas especificaciones estaban afectadas por diversos problemas: Eran monolíticas, redundantes, ambiguas e imposibles de mantener. Ha habido un movimiento gradual hacia las especificaciones funcionales: Gráficas, Particionadas, Mínimamente redundantes.
5.3. Desarrollo Orientado a Objetos
El paradigma orientado a objetos, a diferencia del enfoque estructurado, trata los procesos y los datos de forma continua, es decir, modulariza tanto la información como el procesamiento. Los primeros trabajos sentaron las bases de este enfoque al establecer la importancia sobre la abstracción, ocultación de la información y modularidad.
6. Principales Metodologías de Desarrollo
Las administraciones públicas han promovido el desarrollo de metodologías para unificar la forma de desarrollar sus sistemas de información. Comentaremos las más conocidas como MERISE, SSADM y MÉTRICA.
6.1. MERISE
Las mayores aportaciones de la metodología son: un ciclo de vida más largo, materializado en un conjunto definido de etapas, y la introducción de dos ciclos complementarios: ciclo de abstracción y ciclo de decisión.
Fases de MERISE:
- Estudio Preliminar
- Estudio Detallado
- Implementación
- Realización y Puesta en Marcha
6.2. SSADM
SSADM ha sido un estándar abierto. Los aspectos claves en SSADM son: Énfasis en los usuarios, Definición del proceso de producción y Tres puntos de vista: datos, eventos y procesos.
No cubre aspectos como la planificación estratégica ni entra en la construcción del código, sino que proporciona procedimientos para llevar a cabo el análisis y el diseño.
Glosario de Términos
- IEEE
- Autoridad en materias como la ingeniería informática, la tecnología biomédica y las telecomunicaciones.
- ISO
- Organización no gubernamental que provee distintos estándares y definiciones.
- Actividad
- Conjunto de tareas.
- Tarea
- Acción que transforma entradas en salidas.
- Técnica
- Forma de aplicar un procedimiento.
- Herramientas
- Sirven de apoyo para la realización de una técnica.
- Producto
- Se obtiene como resultado de seguir un procedimiento.
Elementos de un SI
Para comprender mejor el concepto de SI, debemos también conocer los elementos que lo componen:
- Los procedimientos y las prácticas habituales de trabajo
- La información
- Las personas o usuarios
- El equipo de soporte
Principios Generales de los Sistemas
- Cuanto más especializado sea el sistema, menos capaz es de adaptarse a circunstancias diferentes.
- Cuanto mayor sea un sistema, mayor es el número de sus recursos que deben dedicarse a su mantenimiento diario.
- Los sistemas siempre forman parte de sistemas mayores y siempre pueden dividirse en sistemas menores.
- Los sistemas crecen.
Desarrollo de Aplicaciones Informáticas de Gestión
Una aplicación es un conjunto de programas y otros elementos software que intentan resolver problemas o necesidades planteadas por las empresas. Para desarrollar una aplicación, el primer paso deberá ser realizar un estudio sobre el sistema de información que queremos informatizar.
Aplicación de las TI a los SI
La solución óptima consiste en un SI que cuenta con una mezcla de actividades, con algunas partes o subsistemas automatizados y otras funciones que se siguen realizando manualmente. Por lo tanto, podemos distinguir entre lo que es el SI total y lo que es el SI o Sistema de Información Automatizado.
Por otra parte, el SI deberá contar con un soporte informático para poder funcionar. No debe confundirse informática y SI.
También existen algunos conceptos relacionados con los SI: MIS (Sistema de Información para la Gestión), Sistemas de Apoyo a las Decisiones (DSS) y Sistemas de Procesamiento de transacciones.
La automatización de un SI debe contemplar la elección del hardware y la configuración más adecuada de software de base y la consecución de las aplicaciones software. Para desarrollar cualquier tipo de software de manera profesional hace falta realizar una gran cantidad de actividades, entre las cuales, la programación es sólo una más. A este conjunto de etapas y procesos necesarios para un buen desarrollo de software se le denomina ciclo de desarrollo de software.