CAPITULO 4: PROCESOS DEL SOFTWARE
1. Sugiera el modelo del proceso de software genérico que
  podría utilizarse para gestionar el desarrollo de los
  siguientes sistemas, dando algunas razones basadas en el
  tipo de sistema a desarrollar.
     •   Un sistema de control anti bloqueo de frenos de un
         automóvil
         En este sistema se puede implementar el modelo de
         prototipos, es acorde debido a que irán haciendo sistemas
         para luego ser probados algo así como prueba y error, los
         cuales se irán corrigiendo a medida que evoluciona el
         sistema.
     •   Un sistema de realidad virtual para ayudar al mantenimiento
         de software
         Se debe implementar el modelo de incremental dado que
         a medida que vamos desarrollando incrementos podemos ir
         entregando prototipo de lo que va a ser el producto al final.
     •   Un sistema de contabilidad universitaria que remplace el
         existente.
         Debe ser implementado un modelo iterativo puesto que
         partimos de un modelo anterior para modificarlo de manera
         que sea mas eficiente.
     •   Sistema interactivo que permita a los pasajeros encontrar los
         horarios de los trenes a partir de las terminales instaladas en
         las estaciones.
         Para este sistema debe ser implementado el modelo de
         prototipos debido a que este interactúa directamente con
         el usuario para los requerimientos del usuario y del sistema.
2. Explique  porque los programas que se desarrollan
  utilizando el modelo evolutivo tienden a ser difíciles de
  mantener.
     El modelo evolutivo es difícil de mantener puesto que:
         •   El proceso no es visible: los administradores tienen que
             hacer entregas regulares par medir el progreso. Si los
             sistemas se desarrollan rápidamente,
        •   A menudo los sistemas tienen una estructura deficiente:
            los cambios continuos tienden a corromper la estructura
            del software. Incorporar cambios en él se convierte cada
            vez más en una tarea difícil y costosa.
3. Explique como el modelo en cascada para el proceso de
  software y el de la construcción de prototipos pueden
  encajar en el proceso espiral.
El proceso espiral se constituye por ciclos; en cada ciclo se puede
emplear un tipo de modelo que sea conveniente a la estructura del
software que se construye; podemos empezar con el modelo cascada
que al terminar su ciclo da como resultado un prototipo. En cada ciclo
mejoramos los prototipos obteniendo un producto que satisfaga las
necesidades del cliente.
4. ¿Cuáles son las ventajas de proporcionar vistas estáticas y
  dinámicas del proceso         de   software    como    el   proceso
  unificado de Rational?
La ventaja de presentar perspectivas dinámicas y estáticas es que las
fases del proceso de desarrollo no están asociadas con flujos de
trabajo específicos.
Las fases son dinámicas y tienen objetivos.
Los flujos de trabajo son estáticos y son actividades técnicas que no
están asociadas con fases únicas sino que pueden utilizarse durante
el desarrollo para alcanzar los objetivos de cada fase.
5. Explique porque es importante hacer distinción entre el
   desarrollo de los requerimientos de usuario y de los
   requerimientos del sistema en el proceso de reingeniería
   de requerimientos
Es importante hacer la distinción entre el desarrollo de
requerimientos ya que existen dos clases de requerimientos:
     • Requerimientos del usuario siendo declaraciones abstractas
        del cliente y usuario final.
     • Requerimientos del sistema siendo la descripción más
        detallada de la funcionalidad a proporcionar.
Los usuarios finales y los clientes necesitan una declaración de alto
nivel de requerimientos, mientras que los desarrolladores del sistema
necesitan una especificación mas detallada de este.
       6. Describa    las principales actividades en el proceso de
           diseño de software y las salidas de estas actividades
           utilizando un diagrama, muestre las posibles relaciones
           entre la salida.
           Diseño Arquitectónico: los subsistemas conforman el sistema y
           su relación se identifica y documenta.
           Especificación abstracta: Para cada subsistema se produce una
           especificación abstracta de sus servicios y las restricciones bajo las
           cuales opera.
           Diseño de la interfaz: para cada subsistema se diseña y
           documenta su interacción con otros subsistemas.
           Diseño de componentes: se asignan servicios a los diferentes
           componentes y se diseñan sus interfaces.
           Diseño de estructura de datos: se diseña en detalle y
           especifica la estructura de datos a utilizarse en la implementación
           del sistema.
           Diseño de algoritmos: se diseñan en detalle y especifican los
           algoritmos utilizados para proveer servicios
                           Diseño                         Arquitectura del
                           arquitectónico                 sistema
Especificación de          Especificación                 Especificación del
requerimientos             abstracta                      software
                           Diseño de interfaz             Especificación de la inter
                                                          faz
                           Diseño de
                                                          Especificación de
                           componentes
                                                          componentes
                           Diseño de la estructura de     Especificación de estructura
                           datos                          de datos
                           Diseño de                      Especificación de algoritmos
                           algoritmo
       7. Cuáles son los cinco componentes de un método de diseño?
           Considere cualquier método que conozca y describa sus
           componentes. Evalué la integridad el método elegido
              •     Un modelo de objetos que muestra las clases de objetos
                    utilizadas en el sistema y sus dependencias
           •     Un modelo de secuencias que muestra cómo interactúan los
                 objetos en el sistema cuando este se ejecuta
           •     Un modelo de estado de transición que muestra los estados
                 del sistema y los disparadores de las transiciones desde un
                 estado a otro
           •     Un modelo estructural en el cual se documentan los
                 componentes del sistema y sus agregaciones
           •     Un modelo de flujo de datos en el que el sistema se modela
                 utilizando la transformación de datos en que tiene lugar
                 cuando se procesan. este no se utiliza frecuentemente en el
                 diseño de sistemas de tiempo real y de negocio
           Un método estructurado incluye:
             • Un modelo de proceso de diseño
             • Notaciones para representar el diseño
             • Formatos de informes
             • Reglas
             • Pautas del diseño
    8. Diseñe un modelo de proceso para las pruebas de ejecución
       y recopile los resultados
Especificación       Especificacion     Diseño del        Diseño             Prueba de
 de                  es del sistema     sistema           detallado          codificación
requerimiento                                                                de modulo y
      Plan de la              Plan de la        Plan de la prueba de
      prueba de               prueba de         investigación de los
      aceptación              aceptación        subsistemas
                           Prueba de             Prueba de                  Prueba de la
       Servici                                                              integración de
                           aceptación            integración
       o                                                                    los
                                                 del sistema
                                                                            subsistemas
    9. Explique porque un sistema de software que se utiliza en
        un   entorno   real  debe      cambiar                 o      convertirse
        progresivamente en menos útil:
    El desarrollo del software se considera una actividad creativa en la
    cual un sistema de software se desarrolla de un concepto inicial hasta
    que se pone en funcionamiento. El mantenimiento es el proceso de
    cambio del sistema una vez que se ha puesto en funcionamiento; es
    realista considerar a la ingeniería del software como un proceso
evolutivo en el cual el software se cambia continuamente durante su
periodo de vida como respuesta a los requerimientos cambiantes y
necesidades del usuario.
10. Indique como la escala de clasificación de la tecnología
   CASE puede ser utilizada por los                 administradores
   encargados de adquirir sistemas CASE:
CASE es el nombre que se le da al software que se utiliza para ayudar
a las actividades del proceso del software, como la ingeniería de
requerimientos, diseño, desarrollo de programas y las pruebas.
Las herramientas del CASE incluyen editores de diseño, diccionarios
de datos, compiladores, depuradores, herramientas de construcción
del sistema, etc.
Algunas de las actividades que se pueden automatizar utilizando
CASE:
  •   El desarrollo de modelos gráficos del sistema como parte de la
      especificación de requerimientos o del diseño software.
  •   La comprensión del diseño utilizando un diccionario de datos
      que tienen información sobre las entidades y relaciones del
      diseño.
  •   La generación de interfaces de usuario a partir de la descripción
      grafica de la interfaz interactiva por el usuario.
  •   La depuración de programas por medio de la provisión de la
      información proporcionada por los programas de información.
La conversión automática del programa de una versión anterior de un
lenguaje de programación Cobol, a una aversión no reciente.
11. Históricamente, la introducción de tecnología ha causado
  varios cambios en el método laboral y, al menos
  temporalmente elimina personas de los puestos de trabajo.
  Comente si es probable que la introducción de la tecnología
  CASE avanzada pueda tener las mismas consecuencias
  para los ingenieros de software. Si piensa que no es así,
  explique porque no. Si piensa que reducirá las
  oportunidades de trabajo ¿es ético para los ingenieros
  afectados resistirse pasivamente o activamente a la
  introducción de esta tecnología?
Pienso que reduciría las oportunidades de trabajo. Debido a que esta
tecnología CASE ayuda alas actividades del proceso del software por
esta razón ayuda a realizar mas rápidamente muchas pruebas,
programas, depuradores. Y como pasa en la vida cotidiana con la
mayoría de empleos la tecnología nos permite obtener todo mas
rápidamente y sin demasiada mano de obra