Requerimientos No Funcionales: Porque son importantes - La Oficina de Proyectos de Informática

lunes, 21 de enero de 2013

Requerimientos No Funcionales: Porque son importantes


Todos los Servicios de Tecnología de Información (TI) en algún punto de su ciclo de vida, necesitan considerar los requerimientos no funcionales y las pruebas asociadas a los mismos.

Para algunos proyectos, estos requerimientos implican una cantidad considerable de trabajo y esfuerzos, mientras que para otros no.

Con frecuencia, los requerimientos no funcionales son ignorados o subestimados en la fase de análisis de requerimientos. El error, termina identificándose en la fase de implementación cuando remediarlos implica más trabajo y costo, pudiendo ocasionar que no sean adoptados por los usuarios y clientes.

En este artículo se presenta una definición de que son los requerimientos no funcionales de un servicio de tecnología de información o un sistema, se describen las categorías en las que pueden clasificarse, las posibles consecuencias de no definirlos en la fase de Diseño y algunos ejemplos de requerimientos no funcionales.

La gestión de requerimientos de software es fundamental para mantener los proyectos en alcance, tiempo y presupuesto. También para superar las expectativas del cliente. Inscríbete en el Curso Online de Ingeniería de requisitos

Que son los Requerimientos No Funcionales

Los requerimientos no funcionales son los que especifican criterios para evaluar la operación de un servicio de tecnología de información, en contraste con los requerimientos funcionales que especifican los comportamientos específicos.

Por lo general, el Plan para implementarlos requerimientos no funcionales se detalla en la Arquitectura del Sistema, mientras que el de los requerimientos funcionales se especifica en el Diseño.

Fuente: Wikipedia

Para ver algunos ejemplos de requerimientos no funcionales consulta los siguientes artículos:

> Requerimientos no funcionales: Ejemplos

> 10 Tipos de pruebas no funcionales de software

Los Requerimientos funcionales definen los criterios que este debe cumplir para que este sea adecuado para su propósito (Fitness-for-purpose), mientras que los requerimientos no funcionales especifican los criterios que debe cumplir para que sea adecuado para su uso (Fitness-for-use).

Otros términos usados para los requerimientos no funcionales pueden ser: Restricciones, Atributos de calidad, objetivos de calidad, requerimientos de calidad de servicio.

Categorías en las que pueden clasificarse

Se pueden clasificar en dos categorías:

  • Cualidades observables en tiempo de ejecución, como por ejemplo la usabilidad y la seguridad.
  • Cualidades relacionadas con la evolución del sistema, como por ejemplo Mantenibilidad, Comprobabilidad, Extensibilidad y Escalabilidad, las cuales están inmersas en la estructura del sistema de software.

Como Analista de sistemas o Ingeniero de requerimientos, es de extremada utilidad contar con una clasificación de requerimientos no funcionales para identificar los que te puedes encontrar. Te recomendamos el siguiente artículo que presenta más detalle:


Algunos Requerimientos No Funcionales

Algunos ejemplos de requerimientos no funcionales son:
  • Comprobabilidad: Grado en que un sistema, software o servicio de TI permite y facilita que sea probado en un determinado contexto.
  • Disponibilidad: Corresponde al tiempo total en que un sistema puede ser usado en un período determinado. También puede definirse el grado en que un sistema está en un estado operable definido cada vez que se necesite.
  • Extensibilidad: Grado en que la implementación del sistema toma en consideración y facilita su crecimiento en el futuro.
  • Escalabilidad: Capacidad de un sistema o servicio de TI de manejar una creciente carga de trabajo, por ejemplo mayor número de conexiones o usuarios. No debe confundirse con extensibilidad, que mide la capacidad del sistema de crecer en funcionalidades.
  • Mantenibilidad: Mide la facilidad con que puede darse mantenimiento al producto (en este caso al software o servicio de TI), con la finalidad de: Desarrollar nuevos requerimientos, Aislar los defectos y sus causas, corregir estos defectos y atender las demandas del entorno cambiante. 
  • Seguridad: Grado de protección de los datos, software y plataforma de tecnología de posibles pérdidas, actividades no permitidas o uso para propósitos no establecidos previamente.
  • Usabilidad: Definido como la facilidad de uso y aprendizaje de un Sistema, Software o Servicio de Tecnología de Información.

¿Buscas formación en técnicas para definir los requerimientos de software?




Métodos probados para la elicitación y análisis para elaborar especificaciones de calidad. Gestión efectiva de los requerimientos




Necesidad de definir los requerimientos no funcionales en términos precisos y que puedan medirse

Para todo proyecto de TI, es crítico que los requerimientos no funcionales sean definidos con los usuarios, clientes y otros interesados en términos precisos y medibles en la etapa de análisis del proyecto. No hacerlo puede poner en riesgo el éxito de un proyecto.

Por ejemplo, tomando el caso de los tiempos de respuesta de un sistema, lo cual podría clasificarse en disponibilidad, ¿que sucedería si no se definiera el tiempo de respuesta deseado en la fase de análisis de requerimientos?, o si se definiera en términos imprecisos, como por ejemplo indicado, "Se necesita un tiempo de respuesta aceptable".

Al llegar a la fase de implementación, quizás en sistema tendría un tiempo de respuesta, digamos de 15 segundos(debido a muchas plataformas remotas y bases de datos involucradas), pero el usuario lo necesitaba en menos de 5 segundos, para por ejemplo, evitar que se forme una fila muy larga para atender a clientes.

Errores como esto pudieran ocasionar inclusive que el usuario final decidiera no usar el nuevo sistema, haciendo fracasar el proyecto.

Por ende, es importante definir los requerimientos con métricas que puedan establecer sin lugar a duda que el sistema o servicio de TI desarrollado cumple los parámetros no funcionales solicitados.

En el caso particular de tiempos de respuesta (desempeño de un sistema) una herramienta útil para comprobarla es SoapUI, que permite hacer pruebas de carga o estrés sobre webservices. Aquí te compartimos artículos sobre el tema:


Para asegurar que el criterio de aceptación quede claramente definido, al definir un requerimiento no funcional este podría expresarse en términos de las sesiones concurrentes o carga de SoapUI que debe ser capaz de soportar.

Otros requerimientos no funcionales

Otros requerimientos no funcionales pueden ser: Accesibilidad, Capacidad, Cumplimiento, Documentación, Requerimientos de despliegue, Efectividad, Eficiencia, Tolerancia a fallos, Modificabilidad, Operabilidad, Portabilidad, Confiabilidad, entre otros.

En en artículo de Wikipedia se listan más ejemplos de requerimientos no funcionales.

Ejemplos de como definir requerimientos funcionales y no funcionales

Requerimientos funcionales de un sistema de ventas

Ejemplos de requerimientos funcionales

Ejemplos de requerimientos no funcionales

¿Y tu? ¿Que opinas?

¿Que opinas sobre la importancia de los requerimientos no funcionales?, ¿Cuales métodos recomendarías para documentarlos?, ¿Que alternativas considerarías?, ?, ¿Cómo evitar que se nos pasen por alto?, ¿Quién debería aprobarlos?, ¿Con que grado de precisión necesitan ser definidos?.


¿Buscas más información de gerencia informática?

¿Quieres obtener completamente gratis y directamente en tu correo electrónico plantillas, artículos y otros recursos de gerencia informática?, entonces presiona "suscríbete" a continuación.

Suscríbete a la lista de correo electrónico:


Vía FeedBurner, se abrirá una nueva ventana

También puedes seguirnos vía Twitter, Facebook o Linkedin:

  

Fuentes de referencia

Leadinganswers.com Non Functional Requirements Minimal Checklist

Wikipedia. Non Functional Requirements

¿Problemas para determinar las jornadas / horas para desarrollar requerimientos de software?



Técnicas para medir y estimar el tamaño del software a partir de la complejidad de sus funcionalidades.




Otros artículos en “La Oficina de Proyectos de Informática”

Gestión de desarrollo de software

>> Ejemplos de requerimientos funcionales de software

>> Alojamiento web: Definición, ventajas y desventajas

>> 10 Tipos de pruebas no funcionales de software

>> Flujograma de procesos y gerencia de proyectos

>> 5 Herramientas para la automatización de pruebas de software


>> Errores comunes en el desarrollo de software: Singletonitis

>> Errores comunes en el desarrollo de software: Base de datos como comunicador de procesos

No hay comentarios :

Publicar un comentario

Pmoinformatica.com," La Oficina de Proyectos de Informática ", es un participante en el Programa de Servicios de Amazon Associates LLC, un programa de publicidad de afiliación diseñado para proporcionar un medio para que sitios web puedan ganar honorarios por la publicidad y enlaces a amazon.com y amazon.es.