Ir al contenido principal

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.





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 funcionalesque 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 funcionalesdefinen 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:





Requerimientos no funcionales: Una clasificación
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.








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:





Pruebas de webservices con SoapUI
Tutorial de SoapUI en español - Proyecto de ejemplo
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.


Comentarios

Entradas populares de este blog

Gestión de Proyectos: 5 tareas clave para dirigir la fase de ejecución

Independientemente del enfoque de gestión de proyectos adoptado, bien sea el predictivo tradicional, o los nuevos enfoques ágiles, el llevar a feliz término un proyecto implica más que hacer una buena planificación y medición de los avances. En este artículo exploramos algunas tareas clave que deben convertirse en hábitos para el Jefe de Proyectos durante la fase de ejecución, abarcando aspectos como asegurar que todas las partes tengan el mismo entendimiento, guiar y apoyar al equipo, eliminación de impedimentos, resolución rápida de problemas, saber reconocer las señales de alerta y tomar acciones en función a ellas.

Testing de aceptación automatizado con selenium

La comunidad de ingeniería del software, está dando cada vez más importancia a las metodologías ágiles, y estas a su vez le dan un sitial de gran importancia al Software Testing de Aceptación Automatizado. Un ejemplo de esta situación es el “Desarrollo Guiado por Pruebas ( Test Driven Development )”, método en el que el código de programa es desarrollado de acuerdo a casos de prueba previamente definidos.

Crud con C# y SQL Server

  Para los que recién empiezan a desarrollar aplicaciones de escritorio, siempre tienen dudas de como realizar un CRUD ( Create, Read, Update y Delete ) de un registro, En esta oportunidad lo haremos con C# y SQL Server. Hay muchas formas de hacer un CRUD y con distintos  elementos windows forms. Lo importante es saber hacer un INSERT y luego procederemos con el UPDATE, DELETE y el SELEC para buscar un registro.   Crearemos el siguiente formulario con sus botones para cada acción del CRUD:   Usaremos los siguientes elementos:  Creamos la Base de Datos:  create database Productos;  go use Productos;  go create table postres (  id int not null identity,  nombre varchar(50) not null,  precio decimal(6,2),  stock float,  constraint pk_postres primary key(id) );   Ahora vamos con nuestro código. En los comentarios describo lo que hago en cada bloque de código:      // Instancio las Directivas. usin...