MODELOS DE PROCESOS DE
                        SOFTWARE


Cascada :toma actividades fundamentales de proceso de desarrollo ,
 validación y evolución luego las representa en procesos tales como
                requerimientos , implementacion,etc,
FASES

                                              Diseño del Sistema
  Se 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.
                                             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 de programación o implementación propiamente dicha. Aquí se implementa el código fuente,
                 haciendo uso de prototipos así como pruebas y ensayos para corregir errores.
 Dependiendo del lenguaje de programación y su versión se crean las bibliotecas y componentes reutilizables
        dentro del mismo proyecto para hacer que la programación sea un proceso mucho más rápido.
                                                    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 puesto
                                                 Implantación
 El software obtenido se pone en producción. Se implantan los niveles software y hardware que componen el
  proyecto. La implantación es la fase con más duración y con más cambios en el ciclo de elaboración de un
                               proyecto. Es una de las fases finales del proyecto.
Durante la explotación del sistema de software pueden surgir cambios, bien para corregir errores o bien para
                   introducir mejoras. Todo ello se recoge en los Documentos de Cambios.
PRUEBAS


Análisis y definición de requerimientos : los servicios, las restricciones y las
 metas del sistema se establece mediante una consulta a los usuarios del
                                  sistemas
Diseño del sistema y software : el proceso de diseño del sistema asigna los
 requerimientos , para e sistema de hardware o de software establece una
arquitectura de sistema global es el resumen las extracciones fundamentales
                                 del sistema
Implementación y pruebas de unidad: durante esta etapa , el diseño de
 software se realiza como un conjunto de programas , es verificar su
                           complimiento
Integración y pruebas de sistemas : las unidades de programas o individuales
se integran como una prueba completa después de estas pruebas se liberan al
                               cliente el sistema.
Operaciones y mantenimiento :esta mas larga cuando se corrige errores y se
                 pone en practica un mantenimiento .
DESARROLLO INCREMENTAL



Una de las ventajas de la herencia y la composición es el soporte al desarrollo
  incremental permitiendo introducir nuevo código sin causar fallos en el ya
     existente. Si aparecen fallos, éstos son rectificados con nuevo código.
Heredando de (o componiendo con) clases y funciones existentes y añadiendo
    miembros de datos y funciones miembros (y redefiniendo las funciones
 existentes durante la herencia) puede dejar el código existente - por otro que
todavía se esta usando - que alguien todavía lo este utilizando. Si ocurre algún
  error, ahora sabe donde esta el nuevo código, y entonces podrá leerlo mas
   rápido y fácilmente que si lo hubiera modificado en el cuerpo del código
                                     existente.
EJEMPLO
BENEFICIOS


                                     Son 3
1 se reduce el costo de adaptar los requerimientos cambiantes del cliente , es
                   mucho mas requerido el modelo cascada
2 es mas sencillo obtener retroalimentación del cliente sobre el trabajo que se
                                    realizo
            3 mas rápida la entrega y implementación del mismo
INGENIERÍA DE SOFTWARE
                     ORIENTADA A LA REUTILIZACIÓN


    En la mayoría de los proyectos de software hay ciertas reutilización de
  software , esto sucede cuando las personas trabaja en proyectos de código
                                    similares
1 análisis de componentes: da una especificación de requerimientos, se realiza
      una búsqueda de componentes para implementar dicha aplicación
       2 modificación de requerimientos :durante esta etapa se analizan
        requerimientos de dicha reflejan los componentes todo mundo
3 diseño de sistema con reutilización : este se diseña marco de conceptual del
          sistema es posible diseñar un nuevo software con esta base
  4 desarrollo e integración : se diseña software que no puede procurase de
manera externa y crea un nuevo sistema ,desarrolla proceso ves de actividades
                                 independientes
TIPOS DE SISTEMAS UTILIZADOS
                         EN LA REUTILIZACIÓN


Servicios web estos se desarrollan atender servicios y se atiende des terminales
                                    remotas

       Colecciones de objetos son marcos de componentes Net o J2ee



 Sistema de software independientes se configuran en un entorno particular
ACTIVIDADES DEL PROCESO


   Son secuenciales y entrelazadas de actividades técnicas y administrativas son
   herramientas manejar grandes volúmenes de información. , estas depende de
            software personal para trabajar y programación extrema .

                             Especiación de software

 La Especificación de Requisitos Software (ERS) es una descripción completa
    del comportamiento del sistema que se va a desarrollar. Incluye un conjunto
 de casos de uso que describe todas las interacciones que tendrán los usuarios con
el software. Los casos de uso también son conocidos como requisitos funcionales.
Además de los casos de uso, la ERS también contiene requisitos no funcionales (o
   complementarios). Los requisitos no funcionales son requisitos que imponen
restricciones en el diseño o la implementación (Como por ejemplo restricciones en
                          el diseño o estándares de calidad).
ACTIVIDADES DE PROCESOS DE
                           REQUERIMIENTOS


                             Estudio de factibilidad
                      Obtención y análisis de requerimientos
                          Validación de requerimientos
                       Administración de requerimientos

El análisis y la especificación de requisitos pueden parecer una tarea relativamente
   sencilla, pero las apariencias engañan. El contenido de comunicación es muy
denso. Abundan las ocasiones para malas interpretaciones o falta de información.
Es muy probable que haya ambigüedad. El dilema al que se enfrenta el ingeniero
 de software puede entenderse muy bien repitiendo la famosa frase de un cliente
anónimo: “Sé que cree que entendió lo que piensa que dije, pero no estoy seguro
      de que se dé cuenta de que lo que escuchó no es lo que yo quise decir”.
VALIDACIÓN DE SOFTWARE



Llamado verificación y validación (V&V) para mostrar que un sistema cumple
tanto con las especificaciones como con las expectativas del cliente, puede
incluir procesos de comprobación.

Con excepción de programas pequeños los sistemas no deben ponerse en
pruebas como una unidad monolítica, de modo que los errores produce cuan
el sistema está en mantenimiento.
EVOLUCIÓN DEL SOFTWARE


Una de las razones principales por la que cada vez más software se incorpora
en los sistemas grandes y complejos.

Esta distinción entre desarrollo y mantenimiento es cada vez más irrelevante.
Es muy difícil que cual quiera sistema sea un sistema complejo nuevo.
COMO ENFRENTAR EL CAMBIO



Es inevitable en todos los grandes proyectos de software. Los requerimientos
varían conforme el tamaño de la empresa, a medida que se pone a disposición
nuevas tecnologías, surgen nuevas posibilidades del diseño e implementación,
es decir que cambia cualquier que se haya desarrollado y volver a probar el
sistema.
Existen dos enfoques relacionados que se usan para reducir los costos de
rehacer.
1.- Evitar el cambie donde el proceso del software incluye actividades que
anticipa cambios posibles antes de requerirse la labor significativa de rehacer.
2.- Tolerancia al cambio, donde el proceso se diseña de modo que los cambios
se ejecuten con un costo relativamente bajo..
CREACIÓN DE PROTOTIPO



Es una versión inicial del sistema que se usa para demostrar conceptos, tratar
opciones de diseños y encontrar más sobre el problema y sus posibles
soluciones.
Un prototipo de desarrollo de software se usa en un proceso de desarrollo
software para contribuir a anticipar los cambios que se requieran:
1.- El proceso de ingeniería de requerimiento, un prototipo ayuda con la
selección y validación de requerimiento de sistema.
2.- En el proceso del diseño de sistema, un prototipo sirve para buscar
soluciones específicas de software y apoyar el diseño de interfaces del usuario.
ENTREGA INCREMENTAL



Es u enfoque al desarrollo del software donde algunos de los incrementos
diseñados se entrega al cliente y se implementa para usarse en un entorno
operacional, llamado proceso de entrega incremental.
Una vez identificado los incrementos del sistema, se define como detalle los
requerimientos de los servicios que se van a entregar en el primer incremento.
Y las entregas incrementales tienen una ventaja.
1.- Los clientes pueden utilizar los primeros incrementos como prototipo y
pueden adquirir experiencias que informe sobre sus requerimientos.
2.- Los clientes deben esperar hasta la entrega completa del sistema, antes de ganar
el valor del mismo.
3.-El proceso mantiene los beneficios del desarrollo incremental en cuanto a que
debe ser relativamente sencillo incorporar cambios al sistema.
4.- Puesto que primero se entrega los servicios de mayor prioridad y luego se
integra los incrementos, los servicios de sistemas más importantes reciben mayores
pruebas.
MODELO ESPIRAL


 El proceso del software se representa como un espiral, y como una secuencia de
actividades como cierto retroceso de una actividad a otra.
Cada ciclo en espiral representa una fase de los procesos del software y el ciclo más
interno puede relacionar con la factibilidad del sistema. etc.
Cada ciclo en espiral se divide en 4 ciclos:
1.- Establecimiento del objeto.- Se define como objetivo específico para dicha fase
del proyecto o restricciones en el proyecto o en el producto.
2.-Valoracion y reducción del riesgo.- Se realiza un análisis minuciosos es decir se
da acciones para reducir el riesgo.
3.- Desarrollo y validación.- Se elige un módulo de desarrollo para el sistema.
Ejemplo
Creación de prototipo desechable sería el mejor enfoque de desarrollo.
4.- Planeación.- El proyecto se revisa y se toma una decisión sobre si hay que
continuar con otro ciclo de espiral.

La diferencia Principal entre el modelo en espiral con otros modelos del procesos
del software es su reconocimiento explícito de riesgo.
EL PROCESO UNIFICADO RACIONAL




“RUP” (Rational Unified Process) Es un ejemplo del modelo del proceso
moderno que se derivó de trabajo sobre el UML y procesos asociados de
desarrollo de software unificado, ilustra la buena práctica en especificación y
diseño, la cual apoya la creación de prototipo y entrega incremental.
RUP presenta una sola visión del proceso, por lo general se describe tres
perspectivas.
1.-Una perspectiva dinámicas que muestran las fases del modelo atreves del
tiempo.
2.-Una perspectiva estática que presentas las actividades del proceso que se
establecen
3.-Una perspectiva practica que sugiere buena práctica a usar durante el
proceso.
RUP busca combinar la perspectiva estática y dinámica en un solo diagrama y haces que sea
difícil de entender.
RUP tiene cuatro fases discretas en el proceso del software, a diferencia de modelo en
cascada, donde la fase se iguala con actividades del proceso.
RUP está vinculada estrechamente con la empresa que con la preocupación técnica.
Fases:
• Concepción.- establecer un caso empresarial para el sistema.
• Elaboración.- Desarrollar la comprensión del problema de dominio, y establece un
     marco conceptual arquitectónico para el sistema.
• Construcción.- Incluye diseño, programación y pruebas del sistema.
• Transición.- Se interesa por el cambio del sistema desde la comunidad del desarrollo
     hasta el usuario.
En RUP cada fase se puede presentar en una forma interactiva, con los resultados
desarrollados incrementales.
Describe la buena práctica de ingeniería, lo que se recomienda son:
1.Desarrollo de software de manera interactiva.
2.Gestión de requerimiento
3.Usar arquitectura basada en componentes
4.Software modelado vidualmente
5.Verificar la calidad de software.
6.Controlar los cambios del software.

Modelos de procesos de software(completo)

  • 1.
    MODELOS DE PROCESOSDE SOFTWARE Cascada :toma actividades fundamentales de proceso de desarrollo , validación y evolución luego las representa en procesos tales como requerimientos , implementacion,etc,
  • 2.
    FASES Diseño del Sistema Se 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. 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 de programación o implementación propiamente dicha. Aquí se implementa el código fuente, haciendo uso de prototipos así como pruebas y ensayos para corregir errores. Dependiendo del lenguaje de programación y su versión se crean las bibliotecas y componentes reutilizables dentro del mismo proyecto para hacer que la programación sea un proceso mucho más rápido. 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 puesto Implantación El software obtenido se pone en producción. Se implantan los niveles software y hardware que componen el proyecto. La implantación es la fase con más duración y con más cambios en el ciclo de elaboración de un proyecto. Es una de las fases finales del proyecto. Durante la explotación del sistema de software pueden surgir cambios, bien para corregir errores o bien para introducir mejoras. Todo ello se recoge en los Documentos de Cambios.
  • 3.
    PRUEBAS Análisis y definiciónde requerimientos : los servicios, las restricciones y las metas del sistema se establece mediante una consulta a los usuarios del sistemas
  • 4.
    Diseño del sistemay software : el proceso de diseño del sistema asigna los requerimientos , para e sistema de hardware o de software establece una arquitectura de sistema global es el resumen las extracciones fundamentales del sistema
  • 5.
    Implementación y pruebasde unidad: durante esta etapa , el diseño de software se realiza como un conjunto de programas , es verificar su complimiento
  • 6.
    Integración y pruebasde sistemas : las unidades de programas o individuales se integran como una prueba completa después de estas pruebas se liberan al cliente el sistema.
  • 7.
    Operaciones y mantenimiento:esta mas larga cuando se corrige errores y se pone en practica un mantenimiento .
  • 8.
    DESARROLLO INCREMENTAL Una delas ventajas de la herencia y la composición es el soporte al desarrollo incremental permitiendo introducir nuevo código sin causar fallos en el ya existente. Si aparecen fallos, éstos son rectificados con nuevo código. Heredando de (o componiendo con) clases y funciones existentes y añadiendo miembros de datos y funciones miembros (y redefiniendo las funciones existentes durante la herencia) puede dejar el código existente - por otro que todavía se esta usando - que alguien todavía lo este utilizando. Si ocurre algún error, ahora sabe donde esta el nuevo código, y entonces podrá leerlo mas rápido y fácilmente que si lo hubiera modificado en el cuerpo del código existente.
  • 9.
  • 10.
    BENEFICIOS Son 3 1 se reduce el costo de adaptar los requerimientos cambiantes del cliente , es mucho mas requerido el modelo cascada 2 es mas sencillo obtener retroalimentación del cliente sobre el trabajo que se realizo 3 mas rápida la entrega y implementación del mismo
  • 11.
    INGENIERÍA DE SOFTWARE ORIENTADA A LA REUTILIZACIÓN En la mayoría de los proyectos de software hay ciertas reutilización de software , esto sucede cuando las personas trabaja en proyectos de código similares 1 análisis de componentes: da una especificación de requerimientos, se realiza una búsqueda de componentes para implementar dicha aplicación 2 modificación de requerimientos :durante esta etapa se analizan requerimientos de dicha reflejan los componentes todo mundo 3 diseño de sistema con reutilización : este se diseña marco de conceptual del sistema es posible diseñar un nuevo software con esta base 4 desarrollo e integración : se diseña software que no puede procurase de manera externa y crea un nuevo sistema ,desarrolla proceso ves de actividades independientes
  • 12.
    TIPOS DE SISTEMASUTILIZADOS EN LA REUTILIZACIÓN Servicios web estos se desarrollan atender servicios y se atiende des terminales remotas Colecciones de objetos son marcos de componentes Net o J2ee Sistema de software independientes se configuran en un entorno particular
  • 13.
    ACTIVIDADES DEL PROCESO Son secuenciales y entrelazadas de actividades técnicas y administrativas son herramientas manejar grandes volúmenes de información. , estas depende de software personal para trabajar y programación extrema . Especiación de software La Especificación de Requisitos Software (ERS) es una descripción completa del comportamiento del sistema que se va a desarrollar. Incluye un conjunto de casos de uso que describe todas las interacciones que tendrán los usuarios con el software. Los casos de uso también son conocidos como requisitos funcionales. Además de los casos de uso, la ERS también contiene requisitos no funcionales (o complementarios). Los requisitos no funcionales son requisitos que imponen restricciones en el diseño o la implementación (Como por ejemplo restricciones en el diseño o estándares de calidad).
  • 14.
    ACTIVIDADES DE PROCESOSDE REQUERIMIENTOS Estudio de factibilidad Obtención y análisis de requerimientos Validación de requerimientos Administración de requerimientos El análisis y la especificación de requisitos pueden parecer una tarea relativamente sencilla, pero las apariencias engañan. El contenido de comunicación es muy denso. Abundan las ocasiones para malas interpretaciones o falta de información. Es muy probable que haya ambigüedad. El dilema al que se enfrenta el ingeniero de software puede entenderse muy bien repitiendo la famosa frase de un cliente anónimo: “Sé que cree que entendió lo que piensa que dije, pero no estoy seguro de que se dé cuenta de que lo que escuchó no es lo que yo quise decir”.
  • 15.
    VALIDACIÓN DE SOFTWARE Llamadoverificación y validación (V&V) para mostrar que un sistema cumple tanto con las especificaciones como con las expectativas del cliente, puede incluir procesos de comprobación. Con excepción de programas pequeños los sistemas no deben ponerse en pruebas como una unidad monolítica, de modo que los errores produce cuan el sistema está en mantenimiento.
  • 16.
    EVOLUCIÓN DEL SOFTWARE Unade las razones principales por la que cada vez más software se incorpora en los sistemas grandes y complejos. Esta distinción entre desarrollo y mantenimiento es cada vez más irrelevante. Es muy difícil que cual quiera sistema sea un sistema complejo nuevo.
  • 17.
    COMO ENFRENTAR ELCAMBIO Es inevitable en todos los grandes proyectos de software. Los requerimientos varían conforme el tamaño de la empresa, a medida que se pone a disposición nuevas tecnologías, surgen nuevas posibilidades del diseño e implementación, es decir que cambia cualquier que se haya desarrollado y volver a probar el sistema. Existen dos enfoques relacionados que se usan para reducir los costos de rehacer. 1.- Evitar el cambie donde el proceso del software incluye actividades que anticipa cambios posibles antes de requerirse la labor significativa de rehacer. 2.- Tolerancia al cambio, donde el proceso se diseña de modo que los cambios se ejecuten con un costo relativamente bajo..
  • 18.
    CREACIÓN DE PROTOTIPO Esuna versión inicial del sistema que se usa para demostrar conceptos, tratar opciones de diseños y encontrar más sobre el problema y sus posibles soluciones. Un prototipo de desarrollo de software se usa en un proceso de desarrollo software para contribuir a anticipar los cambios que se requieran: 1.- El proceso de ingeniería de requerimiento, un prototipo ayuda con la selección y validación de requerimiento de sistema. 2.- En el proceso del diseño de sistema, un prototipo sirve para buscar soluciones específicas de software y apoyar el diseño de interfaces del usuario.
  • 19.
    ENTREGA INCREMENTAL Es uenfoque al desarrollo del software donde algunos de los incrementos diseñados se entrega al cliente y se implementa para usarse en un entorno operacional, llamado proceso de entrega incremental. Una vez identificado los incrementos del sistema, se define como detalle los requerimientos de los servicios que se van a entregar en el primer incremento. Y las entregas incrementales tienen una ventaja. 1.- Los clientes pueden utilizar los primeros incrementos como prototipo y pueden adquirir experiencias que informe sobre sus requerimientos. 2.- Los clientes deben esperar hasta la entrega completa del sistema, antes de ganar el valor del mismo. 3.-El proceso mantiene los beneficios del desarrollo incremental en cuanto a que debe ser relativamente sencillo incorporar cambios al sistema. 4.- Puesto que primero se entrega los servicios de mayor prioridad y luego se integra los incrementos, los servicios de sistemas más importantes reciben mayores pruebas.
  • 20.
    MODELO ESPIRAL Elproceso del software se representa como un espiral, y como una secuencia de actividades como cierto retroceso de una actividad a otra. Cada ciclo en espiral representa una fase de los procesos del software y el ciclo más interno puede relacionar con la factibilidad del sistema. etc. Cada ciclo en espiral se divide en 4 ciclos: 1.- Establecimiento del objeto.- Se define como objetivo específico para dicha fase del proyecto o restricciones en el proyecto o en el producto. 2.-Valoracion y reducción del riesgo.- Se realiza un análisis minuciosos es decir se da acciones para reducir el riesgo. 3.- Desarrollo y validación.- Se elige un módulo de desarrollo para el sistema. Ejemplo Creación de prototipo desechable sería el mejor enfoque de desarrollo. 4.- Planeación.- El proyecto se revisa y se toma una decisión sobre si hay que continuar con otro ciclo de espiral. La diferencia Principal entre el modelo en espiral con otros modelos del procesos del software es su reconocimiento explícito de riesgo.
  • 21.
    EL PROCESO UNIFICADORACIONAL “RUP” (Rational Unified Process) Es un ejemplo del modelo del proceso moderno que se derivó de trabajo sobre el UML y procesos asociados de desarrollo de software unificado, ilustra la buena práctica en especificación y diseño, la cual apoya la creación de prototipo y entrega incremental. RUP presenta una sola visión del proceso, por lo general se describe tres perspectivas. 1.-Una perspectiva dinámicas que muestran las fases del modelo atreves del tiempo. 2.-Una perspectiva estática que presentas las actividades del proceso que se establecen 3.-Una perspectiva practica que sugiere buena práctica a usar durante el proceso.
  • 22.
    RUP busca combinarla perspectiva estática y dinámica en un solo diagrama y haces que sea difícil de entender. RUP tiene cuatro fases discretas en el proceso del software, a diferencia de modelo en cascada, donde la fase se iguala con actividades del proceso. RUP está vinculada estrechamente con la empresa que con la preocupación técnica. Fases: • Concepción.- establecer un caso empresarial para el sistema. • Elaboración.- Desarrollar la comprensión del problema de dominio, y establece un marco conceptual arquitectónico para el sistema. • Construcción.- Incluye diseño, programación y pruebas del sistema. • Transición.- Se interesa por el cambio del sistema desde la comunidad del desarrollo hasta el usuario. En RUP cada fase se puede presentar en una forma interactiva, con los resultados desarrollados incrementales. Describe la buena práctica de ingeniería, lo que se recomienda son: 1.Desarrollo de software de manera interactiva. 2.Gestión de requerimiento 3.Usar arquitectura basada en componentes 4.Software modelado vidualmente 5.Verificar la calidad de software. 6.Controlar los cambios del software.