Conceptos Generales de la Ingeniería de Software – Parte II

Seguimos con los conceptos básicos.

Requerimientos

Los requerimientos para un sistema son la descripción de los servicios proporcionados por el sistema y sus restricciones operativas. Estos requerimientos reflejan las necesidades de los clientes de un sistema. El proceso de descubrir, analizar, documentar y verificar estos servicios y restricciones se denomina INGENIERÍA DE REQUERIMIENTOS.

En algunos casos, un requerimiento es simplemente una declaración abstracta de alto nivel de un servicio que debe proporcionar el sistema o una restricción de este. En el otro extremo, es una definición detallada y formal de una función del sistema

  • Requerimientos del usuario: son declaraciones, en lenguaje natural y en diagramas, de los servicios que se espera que el sistema proporcione y de las restricciones bajo las cuales debe funcionar. Deben describir los requerimientos funcionales y no funcionales de tal forma que sean comprensibles por los usuarios del sistema sin conocimiento técnico detallado.
  • Requerimientos del sistema: establecen con detalle las funciones, servicios y restricciones operativas del sistema. El documento de requerimientos del sistema debe ser preciso. Debe definir exactamente que es lo que se va a implementar. Son versiones extendidas de los requerimientos del usuario, agregan detalle y explican como el sistema debe proporcionar los requerimientos del usuario. Diferentes niveles de especificación del sistema son de utilidad debido a que comunican la información del sistema a diferentes tipos de lectores, ya que estos utilizan los requerimientos de distinta manera.
  • Requerimientos funcionales: son declaraciones de los servicios que debe proporcionar el sistema, de la manera en que este debe reaccionar a entradas particulares y de cómo se debe comportar en situaciones particulares. En algunos casos, los requerimientos funcionales de los sistemas también declaran explícitamente lo que el sistema no debe hacer. Pueden ser requerimientos funcionales de usuario o requerimientos funcionales de sistema (cuando se expresan como requerimientos del usuario, habitualmente se describen de una forma bastante abstracta. Sin embargo, los requerimientos funcionales del sistema describen con detalle la función de este, sus entradas y salidas, excepciones, etc.)
  • Requerimientos no funcionales: son restricciones de los servicios o funciones ofrecidos por el sistema. Incluyen restricciones de tiempo, sobre el proceso de desarrollo y estándares. Los requerimientos no funcionales a menudo se aplican al sistema en su totalidad. Normalmente apenas se aplican a características o servicios individuales del sistema. Se refieren a las propiedades emergentes del sistema como la fiabilidad, el tiempo de respuesta y la capacidad de almacenamiento.
  • Requerimientos del dominio: son requerimientos que provienen del dominio de aplicación del sistema y que reflejan las características y restricciones de ese dominio. Pueden ser funcionales y no funcionales. Los requerimientos del dominio derivan del dominio de aplicación del sistema más que de las necesidades especificas de los usuarios. Normalmente incluyen terminología especializada del dominio o referencias a conceptos del dominio, por lo que a menudo es difícil de comprender por los ingenieros de software. Los expertos del dominio pueden dejar afuera de un requerimiento información sencillamente porque para ellos es obvia, pero puede no serlo para los desarrolladores del sistema y es posible que implementen el requerimiento de forma equivocada.

La evolución de los requerimientos durante el proceso de ingeniería de requerimientos y después de que un sistema este en uso es inevitable. Desde una perspectiva evolutiva los requerimientos se dividen en dos clases:

  • Requerimientos duraderos: son requerimientos estables que se derivan de la actividad principal de la organización y que están relacionados directamente con el dominio del sistema. (ej. En un hospital siempre habrá requerimientos que se refieren a pacientes, médicos, enfermeras y tratamientos)
  • Requerimientos volátiles: son requerimientos que probablemente cambian durante el proceso de desarrollo del sistema o después de que este se haya puesto en funcionamiento (ej. serian requerimientos resultantes de las políticas gubernamentales sobre sanidad (hospital)).

 

Características o propiedades de los requerimientos:

  • Necesario: Su omisión provoca una deficiencia.
  • Conciso: Fácil de leer y entender
  • Completo: No necesita ampliarse
  • Consistente: No contradictorio con otro
  • No ambiguo: Tiene una sola implementación
  • Verificable: Puede testearse a través de inspecciones, pruebas, etc.

 

 

Ingeniería de requerimientos

Ingeniería de requerimientos es el proceso por el cual se transforman los requerimientos declarados por los clientes, ya sean hablados o escritos, a especificaciones precisas, no ambiguas, consistentes y completas del comportamiento del sistema, incluyendo funciones, interfases, rendimiento y limitaciones.

Ingeniería de requerimientos es el proceso mediante el cual se intercambian diferentes puntos de vista para recopilar y modelar lo que el sistema va a realizar. Este proceso utiliza una combinación de métodos, herramientas y actores, cuyo producto es un modelo del cual se genera un documento de requerimientos.

La meta del proceso de ingeniería de requerimientos es crear y mantener un documento de requerimientos del sistema. El proceso general corresponde a cuatro subprocesos de alto nivel de la ingeniería de requerimientos, estos son:

  • Estudio de viabilidad
  • Obtención y análisis de requerimientos
  • Especificación de requerimientos
  • Validación de requerimientos
  • Gestión de requerimientos

 

Estudio de viabilidad: para todos los sistemas nuevos, el proceso de ingeniería de requerimientos debería empezar con un estudio de viabilidad. La entrada de este es un conjunto de requerimientos de negocio preliminares, una descripción resumida del sistema y de cómo este pretende contribuir a los procesos de negocio. Los resultados del estudio de viabilidad deberían ser un informe que recomiende si merece o no la pena seguir con la ingeniería de requerimientos y el proceso de desarrollo del sistema.

Un estudio de viabilidad es un estudio corto y debería resolver las siguientes preguntas:

  • El sistema contribuye a los objetivos generales de la organización?
  • El sistema se puede implementar con la tecnología actual?
  • El sistema se puede implementar con las restricciones de costo y tiempo?
  • El sistema puede integrarse a otros que existen en la organización?

 

Obtención y análisis de requerimientos: La extracción de los requerimientos es una parte especialmente crítica del proceso, debemos trabajar con los usuarios y los clientes (stakeholders), para comprender un problema cuando todavía no se ha encontrado una solución. Una de las maneras de realizar un análisis de problema consiste en identificar las personas, los procesos y los recursos involucrados, y después documentar las relaciones que existen entre ellos. Se averigua que elementos de datos pasan de un rol a otro, y cuales procesos transforman los datos de una forma o estado a otra. Durante la extracción de los requerimientos se interroga a usuarios y clientes sobre los mismos aspectos. Por lo general resulta útil separar los requerimientos en tres categorías:

  • Requerimientos que deben ser absolutamente satisfechos.
  • Requerimientos que son muy deseables pero no indispensables.
  • Requerimientos que son posibles, pero que podrían eliminarse.

 

El proceso genérico de obtención y análisis de requerimientos consta de 4 pasos:

  • Descubrimiento de requerimientos: aquí se utilizan técnicas como entrevistas, cuestionarios, JADs y brainstorm.
  • Clasificación y organización de requerimientos: toma la recopilación no estructurada de requerimientos, y los organiza en grupos relacionados y coherentes.
  • Ordenación por prioridades y negociación de requerimientos: inevitablemente, cuando existen muchos stakeholders, los requerimientos entraran en conflicto. Esta actividad se refiere a ordenar según las prioridades los requerimientos, y a encontrar y resolver los requerimientos en conflicto a través de la organización.
  • Documentación de requerimientos: se documentan los requerimientos, se pueden producir documentos de requerimientos formales o informales.

 

Especificación de requerimientos: hay dos clases de documentos de requerimientos que se realizan en la extracción y el análisis de requerimientos. Por una parte, la extracción nos permite escribir un documento de definición de requerimientos, escrita en términos que el cliente puede entender, la definición de requerimientos es un listado completo de todas las cosas que el cliente espera que haga el sistema propuesto. Representa una comprensión entre el cliente y el desarrollador de lo que el cliente necesita o desea, y por lo general es escrito en forma conjunta por el cliente y el desarrollador. Por la otra parte, la especificación de requerimientos reitera la definición en los términos técnicos apropiados para el desarrollo del diseño de un sistema; es la contrapartida técnica al documento de definición de requerimientos y es escrito por analistas de requerimientos.

 

Objetivos de la especificación de requerimientos:

  • Permiten que los desarrolladores expliquen como han entendido lo que el cliente pretende del sistema
  • Indican a los diseñadores que funcionalidad y características va a tener el sistema resultante
  • Indican al equipo de pruebas que demostraciones llevar a cabo para convencer al cliente de que el sistema que se le entrega es lo que había ordenado.

 

  • Descripción estática de requerimientos: Se describe el sistema a través de las entidades u objetos, sus atributos y sus relaciones con otros. No describe como las relaciones cambian con el tiempo y permiten razonar sobre comportamiento de sistemas que cambian poco (o nada) en el tiempo
  • Descripciones dinámicas: se considera un sistema en función de los cambios que ocurren a lo largo del tiempo. El sistema está en un estado particular hasta que un estímulo lo obliga a cambiar su estado.

Las técnicas para describir un sistema en términos de estados son:

  • Tablas de decisión
  • Redes de Pettri
  • Diagrama de transición de estados
  • Tablas de transición de estados

 

Validación de requerimientos: trata de mostrar que los requerimientos realmente definen el sistema que el cliente desea. La validación de requerimientos es importante debido a que los errores en los requerimientos pueden conducir a importantes costos si se descubren mas tarde.

Durante el proceso de validación de requerimientos, se deben llevar a cabo verificaciones sobre requerimientos en el documento de requerimientos:

  • Verificaciones de validez
  • Verificaciones de consistencia
  • Verificaciones de completitud
  • Verificaciones de realismo
  • Verificabilidad

 

Se pueden utilizar, en conjunto o de forma individual, varias técnicas de validación de requerimientos:

  • Revisiones de requerimientos
  • Construcción de prototipos
  • Generación de casos de prueba

 

Gestión de requerimientos: los requerimientos para sistemas software grande son siempre cambiantes. Pero porque cambian los requerimientos? :

  • Porque al analizar el problema, no se hacen las preguntas correctas a las personas correctas (En sistemas grandes hay una comunidad diversa de usuarios)
  • Porque los clientes y los usuarios son distintos
  • Porque cambió el problema que se estaba resolviendo
  • Porque los usuarios cambiaron su forma de pensar o sus percepciones
  • Porque cambió el ambiente de negocios (mercado, etc.)

 

 

Existe entonces un proceso de gestión de requerimientos.

1) Identificación de requerimientos

2) Gestión del cambio

    • Análisis del problema y especificación del cambio
    • Análisis del cambio y cálculo de costos
    • Implementación del cambio

3) Políticas de rastreo

    • Fuente
    • Requerimientos
    • Diseño

4) Ayuda de herramientas CASE

    • Almacenar requerimientos
    • Gestionar el cambio
    • Gestionar el rastreo

 

Dejá un comentario