Creación y Evolución de Sistemas

Área ING_SIS

El área "Creación y Evolución de Sistemas" describe de manera global las distintas fases que componen el ciclo de vida de un proyecto software, desde el inicio hasta la finalización del mismo, especificando los objetivos y entregables a generar en cada una de las fases.

Puesto que se trata de un área que abarca el ciclo de vida de forma global, se han establecido enlaces con otras áreas y subsistemas en las que se profundiza en cada una de las fases, como es el caso de Ingeniería de Requisitos, en la cual se detalla la metodología propuesta por MADEJA para las fases iniciales del proceso (Especificación de Requisitos y Análisis), o el subsistema de Verificación, en el cual se detallan las pruebas a realizar durante el proceso completo, y su relación con las fases de desarrollo. Además, en este área se incluye un conjunto de plantillas autoexplicativas que ayudan a la elaboración de la documentación a generar en cada una de las fases del ciclo de vida del producto software.

Hay que resaltar el carácter configurable de este proceso metodológico, en función de la naturaleza del proyecto, necesidades de la organización, complejidad, etc. Por ello, en cualquier aplicación práctica este método podrá adaptarse, aunque se deberán mantener las directrices aportadas. No obstante, el proceso metodológico descrito es válido por su generalidad para cualquier tipo de proyecto de desarrollo de software con independencia del tamaño y complejidad. Matices de este tipo condicionarán el grado de detalle al que se llegue en un determinado apartado.

En concreto, el método propuesto seguirá un modelo de desarrollo en W que surge como evolución y mejora de los modelos en V. El modelo en W contempla los procesos definidos por Métrica v3, añadiendo además al modelo en V una revisión de las fases de desarrollo y una depuración y corrección de los posibles errores detectados en las fases de pruebas. Así, el modelo en W refleja mejor la interdependencia que existe entre equipo de proyecto, el equipo de testing y el área usuaria a lo largo de todo el proceso de desarrollo del sistema, donde básicamente:

  • En las primeras etapas se consideran las fases de desarrollo y algunas labores de pruebas como son la elaboración de los planes de prueba y la revisión de estas fases.
  • En las etapas finales se desglosan las fases de pruebas y las labores de depuración y corrección de los errores detectados.
  • Las peticiones de cambio se pueden dar en todas las fases de desarrollo y surgen por el cliente o por el propio equipo de desarrollo.

La siguiente figura representa el modelo de desarrollo en W:

  • W exterior, corresponde a las fases del desarrollo software.
  • W interior, hace referencia a las fases de testing (distinguiéndose las fases de testing temprano de las de testing de software)

Descripción de las fases:

  • Especificación de Requisitos.
    • Descripción: En esta fase se identificarán las necesidades de negocio de clientes y usuarios del sistema y se realizará la definición de las características que deberá cumplir el producto software a desarrollar. Para ello, durante esta fase será fundamental interactuar con los usuarios finales y así concretar los requisitos del sistema. El catálogo completo de requisitos del sistema a desarrollar se especificará en el documento de Especificación de Requisitos. En él se incluirán tanto los requisitos generales del sistema, como requisitos específicos (funcionales, no funcionales, de integración, y restricciones técnicas).
      A partir de los requisitos generales definidos en el documento de Especificación de Requisitos se elaborará el Plan de Pruebas de Aceptación, el cuál servirá de guía a los usuarios finales en la realización de las pruebas que verifiquen los requisitos funcionales solicitados, en cuyo caso se aceptará el sistema. Conviene resaltar que el Equipo de Testing generará el Plan de Pruebas de Aceptación como parte de la ejecución del servicio Testing Temprano - Requisitos.
    • Entregables:
  • Análisis.
    • Descripción: En esta fase se se realizará en primer lugar, la definición del modelo de la estructura interna del sistema software y de sus relaciones con otros sistemas, y por otro, la elaboración del modelo de clases y descripción de los diagramas de secuencia y diagramas de flujo de trabajo mediante el modelo de casos de uso. Esta información se recogerá en el documento de Análisis del Sistema.
      Además, en esta fase deberá comenzarse la elaboración del Plan de Pruebas Funcionales a partir de la documentación ya generada (Especificación de Requisitos y Análisis del Sistema). El Plan de Pruebas Funcionales tienen como guía los requerimientos establecidos por el cliente, y se busca analizar si los satisfacen, tanto en los requerimientos positivos (qué se deseaba que hiciera) como las limitaciones (qué se deseaba que no hiciera). El Plan de Pruebas Funcionales deberá contener, al menos, la siguiente información:
      • Definición de los casos de pruebas: identificador único, descripción, prerequisitos, pasos a seguir para la ejecución del caso de prueba y el resultado esperado.
      • Matriz de trazabilidad de casos de pruebas y requisitos funcionales, con el objetivo de verificar que se han definido los casos de pruebas necesarios para ofrecer cobertura a todos los requisitos funcionales y de integración definidos.
      • Definición de la estrategia a seguir para la ejecución del Plan de Pruebas Funcionales definido.
    • Para más información a cerca de como elaborar el Plan de Pruebas Funcionales se recomienda consultar la pauta Diseño y Ejecución de pruebas funcionales.
    • Entregables:
  • Diseño.
    • Descripción: En esta fase se detallan los principios técnicos del sistema a partir de los modelos funcionales diseñados en la fase anterior. Se realiza el diseño de los componentes software del sistema especificando las necesidades de infraestructura tecnológica, arquitectura software y estándares de desarrollo según MADEJA.
      En esta fase de elabora el documento de Diseño del Sistemay los siguientes planes de pruebas:
      • Plan de Pruebas Unitarias. El Plan de Pruebas Unitarias debe recoger el conjunto de pruebas que el Equipo de Proyecto deberá realizar para comprobar el correcto funcionamiento de cada componente de código por separado. Esto sirve para asegurar que cada uno de los módulos funcione correctamente por separado. El Plan de Pruebas Unitarias deberá recoger tantas pruebas como componentes se vayan a probar, especificando para cada uno de ellos los datos de entrada y la salida esperada. Se trata de un documento interno de trabajo que el Equipo de Proyecto deberá elaborar para posteriormente llevar a cabo la implementación en la herramienta correspondiente (por ejemplo, JUnit).
      • Plan de Pruebas de Integración. El Plan de Pruebas de Integración debe recoger el conjunto de pruebas que el Equipo de Proyecto deberá realizar para verificar la correcta integración entre todos los componentes/módulos del sistema. Se deberán definir los casos de pruebas que comprueben la integración entre los módulos del sistema, especificando la relación de los componentes a probar, así como lo datos de entrada y la salida esperada. Se trata de un documento interno de trabajo que el Equipo de Proyecto deberá elaborar para posteriormente llevar a cabo la implementación de las pruebas en la herramienta correspondiente (por ejemplo, JUnit).
        Para más información, se recomienda consultar la pauta Diseño y ejecución de pruebas de componentes de código
      • Plan de Pruebas Funcionales (actualización). Se realizará la actualización del Plan de Pruebas Funcionales a partir de la información generada en la fase de Diseño.
    • Entregables:
  • Construcción.
  • Pruebas.
    • Descripción:Esta fase se llevará a cabo la ejecución de los distintos planes de pruebas definidos en fases anteriores. Será necesario conseguir el objetivo que persigue cada tipo de prueba, evitando arrastrar errores que debieron solucionarse en pruebas precedentes. Por tanto, en esta fase se llevarán a cabo las siguientes acciones:
      • Ejecución de las pruebas de código: Un alto porcentaje de estas pruebas pruebas se podrán automatizar en herramientas, tales como Checkstyle, PMD, Findbugs.
      • Ejecución del Plan de Pruebas Unitarias: Para la ejecución del Plan de Pruebas Unitarias se deberá utilizar una herramienta que automatice el proceso de ejecución de dichas pruebas, por ejemplo, JUnit. El Equipo de Proyecto deberá entregar los ficheros fuentes que implementen las pruebas JUnit y los ficheros de recursos asociados (properties, xml de config,etc.) de forma que puedan ser ejecutadas las pruebas posteriormente durante el proceso de revisión de la entrega.
      • Ejecución del Plan de Pruebas de Integración: Para automatizar las pruebas de integración se pueden emplear las mismas herramientas que para las pruebas unitarias (por ejemplo, JUnit), pero los casos de pruebas por regla general serán más largos y la verificación de resultados puede requerir más de una comprobación.
      • Ejecución de las Pruebas Funcionales: Se deberán ejecutar cada uno de los casos de pruebas funcionales siguiendo la estrategia definida. Como resultado de la ejecución del plan de pruebas el Equipo de Proyecto deberá entregar un informe en el que se indique el resultado obtenido de la ejecución de cada caso de prueba.
    • Entregables:
  • Despliegue.
    • Descripción: El despliegue deberá tener en cuenta tanto los aspectos técnicos (componente de software/hardware) como los humanos: formación, gestión del cambio, etc.

Responsabilidades:

  • Seleccionar las herramientas que ofrezcan soporte adecuado a la creación y evolución de sistemas.
  • Facilitar los recursos necesarios para desarrollar un sistema de información.

Objetivos

  • Establecer una metodología para llevar acabo el proceso de desarrollo y evolución de un sistema de información.
  • Generar el código que implementa el funcionamiento de los componentes del sistema y comprobar su corrección de forma individual.
  • Garantizar la calidad del sistema a lo largo del ciclo de vida completo, incluido el mantenimiento.

Contenido del área

Procedimientos
Código Título Carácter
PROC-0030 Creación y Evolución de Sistemas Recomendado