Proceso del Software

INTRODUCCIÓN

El proceso de software es una parte esencial en la Ingeniería de Software, ya que el desarrollar software es una tarea muy compleja, y lleva muchos problemas asociados como el que los sistemas no cumplan las expectativas del usuario, que frecuentemente tengan fallas, que los costos lleguen a ser difíciles de calcular y muy altos o que no se entregue en el lapso de tiempo establecido.
Por estas razones, vamos a analizar más a fondo el proceso de desarrollo de software para conocer acerca de su función.


DESARROLLO

El proceso de software es el conjunto de actividades y resultados requeridos para desarrollar un sistema de software, es decir, su propósito es la producción eficaz y eficiente de un producto de software que cumpla con los requerimientos del cliente.
Estas actividades son: Especificación (establecer requisitos), Diseño (modelo del sistema), Implementación (desarrollo del sistema), Validación (verificar cumplimiento de requisitos), Instalación (entrega al usuario), Evolución y Mantenimiento (cambiar o adaptar el sistema).
El proceso de software define quién hace qué, cuándo y cómo lo hace para alcanzar los objetivos.
Para llevar una buena administración del proceso es necesario un modelo de desarrollo de software, el cual es una representación simplificada del proceso a través del cual se crea software.
Entre los modelos más conocidos y utilizados tenemos los siguientes:

  • Modelo de Cascada
En este modelo, el proyecto se divide en varias fases, en la cuales para poder avanzar de una a otra es necesario haber cumplido los objetivos de la fase anterior. Sus fases son las siguientes:
  1. Definición de requisitos.- Establecer requerimientos y restricciones del sistema
  2. Diseño del Software y del Sistema.- Representación del sistema como base para la implementación
  3. Implementación y Pruebas Unitarias.- Desarrollar los módulos y probar cada uno
  4. Integración y Prueba del Sistema.- Juntar todos los módulos y probar el conjunto
  5. Operación y Mantenimiento.- Corrección de errores y realización de mejoras
Es difícil realizar cambios entre etapas, el descubrimiento de algún error en una fase avanzada puede ser fatal y por lo general se utiliza en sistemas donde los requerimientos son estables.

  • Desarrollo Evolutivo
En este modelo se busca desarrollar una implantación inicial del sistema, tomando como base los requerimientos que son claros al principio del proyecto e integrando nuevas partes secuencialmente, a partir de exponer los avances al cliente para que se vaya perfeccionando el sistema hasta llegar al adecuado.
La especificación, desarrollo y validación, se realizan para todas las versiones o incrementos hasta conseguir el sistema final.
Este modelo se adapta bien a sistemas pequeños o medianos, donde los requerimientos son cambiantes o no se tienen bien definidos.
Los problemas que tiene es que se existe poca visibilidad del proceso, ya que no se producen documentos para cada versión del sistema, además de que tantos cambios llegan a perjudicar la estructura del software, lo que dificulta su mantenimiento.

  • Desarrollo Basado en Componentes
Este modelo está orientado a la reutilización de software, es decir, se buscan componentes que puedan ser utilizados para el sistema, para evitar la perdida de tiempo en desarrollarlos.
Consta de 4 fases significativas:
  1. Análisis de componentes.- Determinar que componentes se reutilizarán.
  2. Modificación de requisitos.- Adaptar los requisitos para concordar con los componentes que se van a utilizar.
  3. Diseño del sistema con reutilización.- Diseño o reutilización del marco de trabajo para el sistema.
  4. Desarrollo e integración.- Integración de los componentes encontrados y/o diseño de nuevos en caso de ser necesario.
Además de estas 4 fases se encuentra la definición de requerimientos al inicio, y la validación del sistema al final, las cuales son igual que en el modelo de cascada.
Con este modelo se disminuye el costo y esfuerzo de desarrollo, y se reduce el tiempo de entrega. Pero puede que el sistema no cumpla las expectativas del cliente.

  • Desarrollo Incremental
En este modelo se busca reducir la repetición del trabajo en el proceso de desarrollo y poder tener la posibilidad de retornar a la definición de los requisitos. Cada incremento agrega funcionalidad adicional o mejorada sobre el sistema y conforme se completa cada etapa, se verifica e integra cada iteración.
Las ventajas de este modelo son que el cliente no tiene que esperar el producto final para utilizar el sistema, ya que va interactuando con el producto desde el primer incremento, también se van aclarando los requisitos con cada iteración y se reduce el riesgo de fracaso del proyecto.

  • Desarrollo en Espiral
Este modelo es representado como una espiral o ciclos en lugar de una serie de actividades sucesivas con retrospectiva de una actividad a otra.
Para cada ciclo tenemos cuatro fases:
  1. Definición de objetivos.- Identificación de objetivos específicos para cada fase del proyecto
  2. Identificación y reducción de riesgos.- Análisis de riesgos clave y se realizan los pasos para reducir riesgos.
  3. Desarrollo y validación.- Selección del modelo de desarrollo una vez hecha la evaluación del riesgo.
  4. Planificación.- Planeación de la siguiente fase del proyecto.
Este modelo tiene como ventajas un enfoque realista, una gestión explícita de riesgos, usando las herramientas necesarias para la reducción de los riesgos.





CONCLUSIÓN

Para administrar el progreso de desarrollo de software es necesaria una documentación, la cual puede causar problemas como una mala planeación del tiempo para entregas, la restricción de iteración en los procesos o el tiempo para revisar y aprobar documentos significativos.
Pero cada sistema es diferente, y es necesario analizarlo y determinar que modelo puede sernos de más ayuda, o cual es el que mejor se adapta a lo que queremos lograr con el proyecto, ya que para sistemas grandes con requerimientos bien establecidos podemos utilizar el modelo de cascada pero para sistemas pequeños o medianos con requerimientos cambiantes o no establecidos podemos usar el desarrollo evolutivo o en espiral, o en su caso, podemos utilizar modelos híbridos en distintas partes del desarrollo.

REFERENCIAS

Méndez, G. (2009). Proceso Software y Ciclo de Vida. abril 8, 2015, de Facultad de Informática Sitio web: https://www.fdi.ucm.es/profesor/gmendez/docs/is0809/02-ProcesoCicloDeVida.pdf
Guardati, S. (2007). Ingeniería de software: el proceso para el desarrollo de software. abril 8, 2015, de ITAM Sitio web: ftp://ftp.itam.mx/pub/alfredo/PAPERS/WeitzenfeldGuardatiComputacion2008.pdf
Mejía, P. (2003). Diseño, construcción y mantenimiento de sistemas de software grandes. abril 8, 2015, de CINVESTAV-IPN Sitio web: http://www.ctic.uni.edu.pe/files/insoft01.pdf

1 comentario:

  1. gracias papu por la tarea ;) nose me da la impresion de que eres de batiz :v

    ResponderBorrar