Saltar al contenido

Desarrollo de software. Fases y ciclo de vida.

Cuando comenzamos crear un programa desde cero, el desarrollo de software tiene unas etapas que es muy importante conocer. Estas etapas son las siguientes. Análisis, diseño, codificación, pruebas, documentación, explotación y mantenimiento. Sin embargo, antes de realizar nuestro software, debemos tener claro el ciclo de vida de nuestro programa. Para ello, podemos elegir entre diferentes modelos que veremos en profundidad.

Modelos de desarrollo de software.

Modelo en cascada.

En este modelo de desarrollo de software, las etapas o fases del desarrollo llevan un orden específico. Es importante destacar que para comenzar la fase siguiente, se debe haber finalizado la anterior. Además una vez que finalizamos una fase, debemos revisarla para comprobar que se puede pasar a la siguiente.

Dentro de este modelo, encontramos el modelo en cascada con retroalimentación. Éste, permite retroceder una o varias etapas si se requiere en algún momento.

Entre sus ventajas podemos destacas las siguientes:

  • Fácil compresión, planificación y seguimiento.
  • Alta calidad del producto resultante.
  • Permite trabajar con personal poco cualificado.

Algunos inconvenientes del modelo en cascada son:

  • Todos los requisitos deben estar definidos desde el principio.
  • Si hay errores es difícil volver atrás en las etapas del desarrollo del software.
  • Se debe finalizar el software completo para que esté disponible.
desarrollo de software modelo en cascada
Modelo en cascada

Modelo iterativo incremental.

Esta basado en varios ciclos en cascada con retroalimentación. Empleando este modelo, podemos entregar el software en partes pequeñas pero utilizables.

Las ventajas de este modelo son las siguientes:

  • No se necesita conocer todos los requisitos.
  • Permite una entrega temprana del programa al cliente final por lo que se facilita la retroalimentación.

En este modelo también encontramos algunos inconvenientes.

  • Difícil estimación del esfuerzo y del coste del programa.
  • Puede que no se acabe nunca.
  • No recomendable para desarrollo de sistemas en tiempo real.
modelo interativo incremental del desarrollo de software.
Modelos iterativo incremental

Desarrollo de software con un modelo en espiral.

Este modelo combina los dos anteriores. El desarrollo de software con este modelo se representa como una espiral donde cada ciclo desarrolla una parte del programa.

Entre sus ventajas podemos encontrar las siguientes:

  • No se necesita una definición completa de los objetivos para empezar a funcionar.
  • Se analiza el riesgo en todas las etapas.
  • Reduce los riesgos del proyecto.
  • Incorpora objetivos de calidad.

Por otro lado también encontramos algunos inconvenientes.

  • Evaluación difícil de los riesgos.
  • Cuantas más iteraciones hay en el proyecto, más elevado es el coste.
  • El éxito del proyecto depende del análisis de riesgos.

Además, cada ciclo está formado por cuatro fases.

desarrollo de software modelo en estpital.
Modelo en espiral

Determinación de objetivos.

Comienza identificando los objetivos, las alternativas para alcanzarlos y las restricciones impuestas a la aplicación de las alternativas.

Análisis de riesgos.

Se evalúan las alternativas en relación con los objetivos y limitaciones. Con frecuencia, en este proceso se identifican los riesgos involucrados y la manera de resolverlos. Utiliza la construcción de prototipos como mecanismo de reducción de riesgos

Desarrollar y probar el software.

Se desarrolla una solución y se verifica si es aceptable.

Planificación del programa.

Se revisa y se evalúa todo lo que se ha hecho. Después, se decide si se continúa. Si se continúa, se deben planificar las fases del ciclo siguiente.

Modelo en V.

Es un proceso que representa la secuencia de pasos en el desarrollo del ciclo de vida de un proyecto. En él se describen las actividades y resultados que deben producirse durante el desarrollo de software.

desarrollo de software modelo en V
Modelo en V

El lado izquierdo de la V, representa la descomposición de las necesidades y la creación de las especificaciones del sistema.

Por otra parte, el lado derecho, representa la integración de las piezas y su verificación. Es muy similar al modelo de cascada, ya que es muy rígido y contiene una gran cantidad de iteraciones.

Independientemente de que utilicemos cualquiera de los modelos de ciclo de vida, debemos seguir una serie de fases para desarrollar nuestro programa. Estas fases las nombramos al principio de este artículo, pero ahora, vamos a desarrollarlas más profundamente.

Fases del desarrollo de software.

Análisis.

La fase de análisis define los requisitos del software que hay que desarrollar. Comenzaremos con una entrevista individual o una dinámica de grupo con los clientes. En ella también tendremos que saber lo que el cliente quiere o lo que cree que necesita.

Es importante que se mantenga una comunicación bilateral, y es necesario un consenso por ambas partes para llegar a definir los requisitos del software. Para ello se crea un informe ERS (Especificación de Requisitos del Sistema).

En esta fase, los requisitos que se deben definir son:

  • Requisitos funcionales: Con estos requisitos describiremos detalladamente lo que realiza el sistema y como reacciona antes diferentes entradas y situaciones.
  • Requisitos no funcionales. Con estos requisitos detallaremos por ejemplo la capacidad de almacenamiento o la fiabilidad del sistema. Estos requisitos no incluyen como funciona el sistema.

Para poder representar estos requisitos, disponemos de varias herramientas. Diagramas de flujo, de transición de estados, diagrama de clases, de Entidad/Relación o diccionario de datos.

Diseño.

Determinaremos el funcionamiento del software de una forma global y general sin entrar en detalles. Uno de los objetivos principales es establecer las consideraciones de los recursos del sistema, tanto físicos como lógicos. Sin embargo, también se puede diseñar el sistema en función de los recursos de los que se dispone. En la fase de diseño se crearán los diagramas de casos de uso y de secuencia para definir la funcionalidad del sistema.

Codificación.

En esta fase lo que de debe hacer es escribir el programa en el lenguaje de programación que consideremos más oportuno o en el que quiera el cliente en cuestión.

Pruebas.

Con una doble funcionalidad, las pruebas buscaremos confirmar que el programa se ha escrito correctamente y el software no contiene errores. En esta fase realizaremos las siguientes pruebas.

  • Pruebas de verificación. Se comprueba que el software se ha realizado correctamente.
  • Pruebas de validación. Se comprueba si el producto se ajusta a los requisitos del cliente.

Documentación.

Cada etapa del desarrollo tiene que quedar perfectamente documentada. Teniendo en cuenta esto, la documentación, puede dividirse en dos clases.

  1. De proceso. Se incluye el proceso de desarrollo de software y su mantenimiento.
  2. De producto. Describe el software que se está desarrollando. Incluye:
    • Documentación de usuario:
      • Para usuarios finales. Se centra en como funciona la aplicación.
      • Para administradores del sistema. Gestionarán los programas que usan los usuarios finales
    • Documentación del sistema: Son los documentos que describen el sistema desde los requisitos hasta las pruebas de aceptación.

Explotación del sistema.

Una vez que tenemos nuestro software, hay que prepararlo para su distribución. Para ello se implementa el software en el sistema elegido o se prepara para que se implemente por sí solo de manera automática.
Cabe destacar que en caso de que nuestro software sea una versión sustitutiva de un software anterior es recomendable valorar la convivencia de sendas aplicaciones durante un proceso de adaptación.

Mantenimiento.

consiste en la modificación del software después de la entrega al cliente para corregir fallos, mejorar el rendimiento o adaptar el producto a un entorno modificado. Existen cuatro tipos de mantenimiento.

  • Mantenimiento adaptativo. Estará centrado en la modificación del producto según los cambios que se puedan producir tanto a nivel de software como de hardware. Es el mantenimiento más común.
  • Mantenimiento correctivo. Se centrará en corregir los errores que puedan producirse una vez entregado el producto.
  • Mantenimiento perfectivo. Perfeccionamiento de la aplicación tras el uso y descubrimiento de nuevas mejoras que pueden ser incluidas.
  • Mantenimiento preventivo. Modificación del producto para mejorar la usabilidad, sin alterar sus especificaciones.