sábado, 9 de marzo de 2013

Ciclos de vida del software

Ciclos de vida del software

Es la forma mediante la cual se describen los diferentes pasos que se deben seguir para el desarrollo de un software, partiendo desde una necesidad hasta llegar a la puesta en marcha de una solución y su apropiado mantenimiento. El ciclo de vida para un software comienza cuando se tiene la necesidad de resolver un problema, y termina cuando el programa que se desarrolló para cumplir con los requerimientos, deja de ser utilizado.
Existen varias versiones del ciclo de vida del software entre las cuales se destacan: el ciclo de vida clásico o en cascada, el modelo en espiral, el desarrollo de prototipos, el modelo por incrementos y el modelo extremo 
El término ciclo de vida del software describe el desarrollo de software, desde la fase inicial hasta la fase final. El propósito de este programa es definir las distintas fases intermedias que se requieren para validar el desarrollo de la aplicación, 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.
Estos programas se originan en el hecho de que es muy costoso rectificar los errores que se detectan tarde dentro de la fase de implementación. El ciclo de vida permite que los errores se detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la calidad del software, en los plazos de implementación y en los costos asociados.
El ciclo de vida básico de un software consta de los siguientes 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).

El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una aplicación dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo de desarrolladores.
Métodos de Ciclo de Vida del Software
Para cada una de las fases o etapas listadas en el ítem anterior, existen sub-etapas (o tareas). El modelo de proceso o modelo de ciclo de vida utilizado para el desarrollo, define el orden de las tareas o actividades involucradas, también define la coordinación entre ellas, y su enlace y re alimentación  Entre los más conocidos se puede mencionar: modelo en cascada o secuencial, espiral, modelo. De los antedichos hay a su vez algunas variantes o alternativas, más o menos atractivas según sea la aplicación requerida y sus requisitos.
Modelo en cascada:
En Ingeniería de software el desarrollo en cascada, también llamado modelo en cascada, es el enfoque metodológico que ordena rigurosamente las etapas del proceso para el desarrollo de software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la etapa anterior.
Un ejemplo de una metodología de desarrollo en cascada es:
1.  Análisis de requisitos.
2.  Diseño del Sistema.
3.  Diseño del Programa.
4.  Codificación.
5.  Pruebas.
6.  Implantación.
7.  Mantenimiento.
De esta forma, cualquier error de diseño detectado en la etapa de prueba conduce necesariamente al re-diseño y nueva programación del código afectado, aumentando los costos del desarrollo. La palabra cascada sugiere, mediante la metáfora de la fuerza de la gravedad, el esfuerzo necesario para introducir un cambio en las fases más avanzadas de un proyecto.

El modelo de ciclo de vida en cascada comenzó a diseñarse en 1966 y se terminó alrededor de 1970. Se define como una secuencia de fases en la que al final de cada una de ellas se reúne la documentación para garantizar que cumple las especificaciones y los requisitos antes de pasar a la fase siguiente:

Fases del modelo

        Análisis de requisitos

En esta fase se analizan las necesidades de los usuarios finales del software para determinar qué objetivos debe cubrir. De esta fase surge una memoria llamada SRD (documento de especificación de requisitos), que contiene la especificación completa de lo que debe hacer el sistema sin entrar en detalles internos.

Es importante señalar que en esta etapa se debe consensuar todo lo que se requiere del sistema y será aquello lo que seguirá en las siguientes etapas, no pudiéndose requerir nuevos resultados a mitad del proceso de elaboración del software.

        Diseño del Sistema

Descompone y organiza el sistema en elementos que puedan elaborarse por separado, aprovechando las ventajas del desarrollo en equipo. Como resultado surge el SDD (Documento de Diseño del Software), que contiene la descripción de la estructura relacional global del sistema y la especificación de lo que debe hacer cada una de sus partes, así como la manera en que se combinan unas con otras.
Es conveniente distinguir entre diseño de alto nivel o arquitectónico y diseño detallado. El primero de ellos tiene como objetivo definir la estructura de la solución (una vez que la fase de análisis ha descrito el problema) identificando grandes módulos (conjuntos de funciones que van a estar asociadas) y sus relaciones. Con ello se define la arquitectura de la solución elegida. El segundo define los algoritmos empleados y la organización del código para comenzar la implementación.

Diseño del Programa
Es la fase en donde se realizan los algoritmos necesarios para el cumplimiento de los requerimientos del usuario así como también los análisis necesarios para saber que herramientas usar en la etapa de Codificación.

         Codificación
Es la fase en donde se implementa el código fuente, haciendo uso de prototipos así como de pruebas y ensayos para corregir errores.

Pruebas
Los elementos, ya programados, se ensamblan para componer el sistema y se comprueba que funciona correctamente y que cumple con los requisitos, antes de ser entregado al usuario final.
          
         Verificación
         Es la fase en donde el usuario final ejecuta el sistema, para ello el o los      
         programadores ya realizaron exhaustivas pruebas para comprobar que 
         el    sistema no falle.
En la creación de desarrollo de cascada se implementa los códigos de investigación y pruebas del mismo.

Mantenimiento
Una de las etapas más críticas, ya que se destina un 75% de los recursos, es el mantenimiento del Software ya que al utilizarlo como usuario final puede ser que no cumpla con todas nuestras expectativas.

Características

  •     Es lineal
  •     Las actividades están relacionadas secuencial mente
  •     Cada etapa tiene una entrada y una salida
  •    Es rígido y sistemático: La entrada de una actividad es la salida de la         etapa anterior, por lo cual no se puede dar inicio a la siguiente fase.
  •     Es monolítico: Existe una única fecha de entrega.
  •   La implementación se pospone hasta que no se comprendan los objetivos.
  •     Los documentos a entregar rigen el proceso de software

Ventajas

  • Impone  la necesidad de mucha disciplina planificación y administración, en el proceso de desarrollo de software, venciendo así la filosofía de los procesos de codificar y probar
  • Impone  la necesidad de que la realización del producto debe ser pospuesta hasta que los objetivos sean bien entendidos. 

Desventajas

  • Retrasa la detección de errores hasta el final por lo cual es muy difícil realizar cambios cuando el proceso está en las últimas fases.
  • Toma mucho tiempo ver los resultados
  • Es difícil mantener la trazabilidad entre los requerimientos iniciales y el código final.
  • Cuando los requerimientos no están bien definidos no es posible aplicar éste modelo pues ello incrementaría los riesgos y retrasaría el proceso.
  • Si los requerimientos del usuario varían es muy difícil satisfacerlo si el proceso se encuentra en las últimas fases.
  •  El costo de detectar errores en etapas avanzadas es muy alto dado que ello modificaría todo lo que se ha desarrollado.


 

Modelo en Espiral:
La meta del modelo espiral del proceso de producción del software es proporcionar un marco para diseñar tales procesos, dirigido por los niveles de riesgo en el proyecto actual. En comparación con los actuales modelos, el modelo espiral se puede ver como meta modelo, porque puede acomodar cualquier modelo de proceso del desarrollo. Usándolo como referencia, se puede elegir el modelo de desarrollo más apropiado (e.g., evolutivo con la cascada).
Los riesgos son las circunstancias potencialmente adversas que pueden deteriorar el proceso del desarrollo y la calidad del producto. Boehm [1989] define la gerencia de riesgo como "disciplina cuyo objetivos es identificar, tratar, y eliminar artículos del riesgo del software antes de que se conviertan en las amenazas al adecuado funcionamiento del software o la fuente importante de la reanudación costosa del software." El modelo de espiral  se enfoca  en identificar y eliminar los  problemas de alto riesgo  con el  diseño de un proceso cuidadoso, más que tratar problemas triviales.
La característica principal del modelo espiral es que es cíclico y no lineal como el modelo de la cascada. Cada ciclo del espiral consiste en cuatro etapas, y cada etapa es representada por un cuadrante del plano cartesiano. El radio del espiral representa el coste acumulado hasta ahora en el proceso; la dimensión angular representa el progreso en el proceso.
La etapa 1 identifica los objetivos de la porción del producto bajo consideración, en términos de calidades ha alcanzar. Además, identifica alternativas -tales como si comprar, diseñar, o reutilizar cualesquier software- y restricciones en el uso de las alternativas. Las alternativas entonces se evalúan en la etapa 2 y se identifican y se tratan las áreas potenciales del riesgo. La estimación del riesgo puede requerir la planificación de diversas clases de actividades, por ejemplo Prototipaje o la simulación. La etapa 3 consiste en el desarrollo y verificación del próximo nivel del producto; otra vez, la estrategia seguida por el proceso es dictada por el análisis del riesgo.
Cuando los requerimientos están bien definidos, se puede elegir como opción un modelo convencional como el de la cascada, que conduce a una simple vuelta a la espiral. Cuando los requerimientos  no están claramente definidos, se puede seleccionar un modelo de naturaleza evolutiva; en este caso se necesitarían varias vueltas a la espiral  para alcanzar los resultados deseados. También  puede realizarse  cualquier combinación con los modelos  vistos anteriormente.
Finalmente, la etapa 4 consiste en  repasar los resultados de las etapas transitadas hasta ahora y el planear la iteración siguiente del espiral, si la hay.
El modelo espiral permite obtener mayor robustez en el proceso de desarrollo del software.


Ciclos e Iteraciones
En cada vuelta o iteración hay que tener en cuenta:
  •    Los Objetivos: qué necesidad debe cubrir el producto.
  •   Alternativas: las diferentes formas de conseguir los objetivos de forma exitosa, desde diferentes puntos de vista como pueden ser:

   1. Características: experiencia del personal, requisitos a cumplir, etc.
   2. Formas de gestión del sistema
   3. Riesgo asumido con cada alternativa.

  • Desarrollar y Verificar: Programar y probar el software.
  • Si el resultado no es el adecuado o se necesita implementar mejoras o funcionalidades:
  • Se planificaran los siguientes pasos y se comienza un nuevo ciclo de la espiral. La espiral tiene una forma de caracola y se dice que mantiene dos dimensiones, la radial y la angular:
1.   Angular: Indica el avance del proyecto del software dentro de un ciclo.
2.   Radial: Indica el aumento del coste del proyecto, ya que con cada nueva iteración se pasa más tiempo desarrollando.
Este sistema es muy utilizado en proyectos grandes y complejos como puede ser, por ejemplo, la creación de un Sistema Operativo.
Al ser un modelo de Ciclo de Vida orientado a la gestión de riesgo se dice que uno de los aspectos fundamentales de su éxito radica en que el equipo que lo aplique tenga la necesaria experiencia y habilidad para detectar y catalogar correctamente los riesgos.

Características:
  •    Es un modelo que puede combinarse con otros modelos de procesos de desarrollo.
  •    Es el mejor modelo que se utiliza para desarrollar grandes sistemas.
  •   El análisis de  riesgo requiere la participación de personal con experiencia.


Ventajas
  •     Modelo de proceso adaptable.
  •   El modelo de espiral puede aplicarse a lo largo de la vida del software.
  •     Es apropiado para desarrollar Sistemas Operativos.

Desventajas
  •     No se ha utilizado mucho ya que es un modelo nuevo.
  •   Debido a la complejidad no se recomienda utilizarlo en sistemas pequeños.
  •     Es un modelo costoso.






https://www.google.com.co/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&ved=0CD4QFjAC&url=http%3A%2F%2Fwww.uruak.com%2Fubv%2FModelos.doc&ei=wgo8UaHZPJTe8wSQw4HQAQ&usg=AFQjCNHc8RH53XM8EaGDRQbhBrZ9gYd1PQ&sig2=i5qTGxEye4Yyxo9v0quT7A&bvm=bv.43287494,d.eWU
http://es.wikipedia.org



No hay comentarios:

Publicar un comentario