Ciclo de vida del software

Ciclo de vida del software
Información sobre la plantilla
Cicloevida1.jpg
Concepto:Una aproximación lógica a la adquisición, el suministro, el desarrollo, la explotación y el mantenimiento del software. IEEE 1074.

Ciclo de vida del software. Es el proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una idea hasta la entrega y retiro del sistema. Se definen las distintas fases intermedias que se requieren para validar el desarrollo de un software, es decir, para garantizar que el software cumpla los requisitos para la aplicación y verificación de los procedimientos de desarrollo, se asegura de que los métodos utilizados son apropiados.

ISO 12207-1

"Un marco de referencia que contiene los procesos, las actividades y las tarear involucradas en el desarrollo, la explotación y el mantenimiento de un producto de software, abarcando la vida del sistema desde la definición de los requisitos hasta la finalización de su uso."

Procesos del ciclo de vida del software

Procesos principales:

  • Adquisición
  • Suministro
  • Explotación
  • Mantenimiento

Procesos de soporte:

  • Documentación
  • Gestión de configuración
  • Aseguramiento de calidad
  • Verificación
  • Validación
  • Revisiñon conjunta
  • Auditoría
  • Resolución de problemas

Procesos de organización:

  • Gestión
  • Mejora
  • Infraestructura
  • Formación

Proceso adquisición

  • Análisis de requisitos del sistema
  • Diseño de la arquitectura del sistema
  • Análisis de los requisitos del software
  • Diseño de la arquitectura del software
  • Diseño detallado del software
  • Codificación y prueba del software

Proceso suministro

  • Integración del software
  • Prueba del software
  • Integración del sistema
  • Prueba del sistema
  • Instalación del software
  • Soporte del proceso de aceptación del software

Procedimientos

  • Definición de objetivos: definir el resultado del proyecto y su papel en la estrategia global.
  • Análisis de los requisitos y su viabilidad: recopilar, examinar y formular los requisitos del cliente y examinar cualquier restricción que se pueda aplicar.
  • Diseño general: requisitos generales de la arquitectura de la aplicación.
  • Diseño en detalle: definición precisa de cada subconjunto de la aplicación.
  • Programación (programación e implementación): es la implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.
  • Prueba de unidad: prueba individual de cada subconjunto de la aplicación para garantizar que se implementaron de acuerdo con las especificaciones.
  • Integración: para garantizar que los diferentes módulos se integren con la aplicación. Éste es el propósito de la prueba de integración que está cuidadosamente documentada.
  • Prueba beta (o validación), para garantizar que el software cumple con las especificaciones originales.
  • Documentación: sirve para documentar información necesaria para los usuarios del software y para desarrollos futuros.
  • Implementación
  • Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo) y las actualizaciones secundarias del software (mantenimiento continuo).

Reutilización en el ciclo de vida

Principios de la reutilización

  • Existen similitudes entre distintos sistemas de un mismo dominio de aplicación
  • El software puede representarse como una combinación de módulos
  • Diseñar aplicaciones = especificar módulos + interrelaciones
  • Los sistemas nuevos se pueden caracterizar por diferencias respecto a los antiguos

Ventajas y desventajas

  • Reduce tiempos y costes de desarrollo
  • Aumenta la fiabilidad
  • Dificultad para reconocer los componentes potencialmente reutilizables
  • Dificultad de catalogación y recuperación
  • Problemas de motivación
  • Problemas de gestión de configuración

Tipos de ciclos de vida del software

  • Ciclo de vida lineal

Es el más sencillo de todos los modelos. Consiste en descomponer la actividad global del proyecto en etapas separadas que son realizadas de manera lineal, es decir, cada etapa se realiza una sola vez, a continuación de la etapa anterior y antes de la etapa siguiente.

Con un ciclo de vida lineal es muy fácil dividir las tareas, y prever los tiempos (sumando linealmente los de cada etapa).Las actividades de cada una de las etapas mencionadas deben ser independientes entre sí, es decir, que es condición primordial que no haya retroalimentación entre ellas, aun que sí pueden admitirse ciertos supuestos de realimentación correctiva.

Desde el punto de vista de la gestión, requiere también que se conozca desde el primer momento, con excesiva rigidez, lo que va a ocurrir en cada una de las distintas etapas antes de comenzarla. Esto ultimo minimiza, también, las posiblidades de errores durante la codificacion y reduce al mínimo la necesidad de requerir informacion del cliente o del usuario.

  • Ciclo de vida en cascada puro

Este modelo de ciclo de vida fue propuesto por Winston Royce en el a-o 1970. Es un ciclo de vida que admite iteraciones, contrariamente a la creencia de que es un ciclo de vida secuencial como el lineal. Después de cada etapa se realiza una o varias revisiones para comprobar si se puede pasar a la siguiente. Es un modelo rígido, poco flexible, y con muchas restricciones. Aunque fue uno de los primeros, y sirvió de base para el resto de los modelos de ciclo de vida.

  • Ciclo de vida en V

Este ciclo fue dise-ado por Alan Davis, y contiene las mismas etapas que el ciclo de vida en cascada puro. A diferencia de aquél, a éste se le agregaron dos subetapas de retroalimentación entre las etapas de análisis y mantenimiento, y entre las de diseño y debugging.

Véase también

Fuentes