Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Requerimientos No funcionales
El sistema debe contar con una interfaz amigable para el usuario (Interfaz)
Conocer los objetivos de la empresa
Realizar mantenimiento al sitio web (software)
Analizar el tiempo de carga de las principales paginas (desempeño)
Hacer uso de una base de datos que sostenga la información introducida (software)
REQUISITOS FUNCIONALES
Nombre Base datos
Tipo Requisito
Prioridad Alta
Descripción Cada vez que se cree una nueva cuenta con los datos de
cada usuario se debe almacenar en la base de datos (Sean
en unidad de almacenamiento del pc o servidor)
Entrada Datos ingresados por el usuario
Proceso Guardar datos del usuario
Salidas Registro de datos
Tabla 1: Requisitos Funcionales - Base de datos
REQUERIMIENTOS NO FUNCIONALES
Nombre Ataques de seguridad
Tipo Requisito
Prioridad Alta
Descripción El sistema debe de estar en la capacidad de evitar ataques
tales como SQL inyection, Ataques xss, Middleware, Ataques
CSRF, Validación de formularios.
Entrada Ataques SQL inyection, Ataques xss, Middleware, Ataques
CSRF, Validación de formularios.
Proceso Detectar ataque
Salidas Detener ataque
Tabla 6: Requisitos No Funcionales - Ataques de Seguridad
Nombre Operatividad
Tipo Requisito
Prioridad Alta
Descripción El gestor de contenido debe de ser de fácil manejo para los
usuarios que no tiene en conocimiento en el desarrollo de
páginas web
Entrada Idea de la página web
Proceso Diseño y configuración de la página web por parte del usuario
Salidas Página web terminada por el usuario
Tabla 7: Requisitos No Funcionales - Operatividad
Requerimientos Funcionales
Los requisitos funcionales son declaraciones de los servicios que prestará el sistema, en la forma en
que reaccionará a determinados insumos. Cuando hablamos de las entradas, no necesariamente
hablamos sólo de las entradas de los usuarios. Pueden ser interacciones con otros sistemas,
respuestas automáticas, procesos predefinidos. En algunos casos, los requisitos funcionales de los
sistemas también establecen explícitamente lo que el sistema no debe hacer. Es importante recordar
esto: un RF puede ser también una declaración negativa. Siempre y cuando el resultado de su
comportamiento sea una respuesta funcional al usuario o a otro sistema, es correcto. Y más aún, no
sólo es correcto, sino que es necesario definirlo. Y eso nos lleva al siguiente punto.
Se trata de requisitos que no se refieren directamente a las funciones específicas suministradas por
el sistema (características de usuario), sino a las propiedades del sistema: rendimiento, seguridad,
disponibilidad. En palabras más sencillas, no hablan de “lo que” hace el sistema, sino de “cómo” lo
hace. Alternativamente, definen restricciones del sistema tales como la capacidad de los dispositivos
de entrada/salida y la representación de los datos utilizados en la interfaz del sistema.
Los requisitos no funcionales se originan en la necesidad del usuario, debido a restricciones
presupuestarias, políticas organizacionales, la necesidad de interoperabilidad con otros sistemas de
software o hardware, o factores externos tales como regulaciones de seguridad, políticas de
privacidad, entre otros.
En estos casos, la aplicación de un requisito no funcional mal definido puede resultar problemática,
costosa y lenta. También porque la mayoría de las veces, una RNF no es algo que el equipo trabaja
aislado en un período fijo de tiempo. El RNF puede ser abordado durante todo el proyecto (e incluso
antes de comenzar o después de la entrega, en la fase de mantenimiento). Una vez más, el ejemplo
anterior podría dividirse en múltiples requisitos que son más fáciles de rastrear e implementar.
Buen ejemplo de RNF: Todas las comunicaciones externas entre los servidores de datos, la
aplicación y el cliente del sistema deben estar cifradas utilizando el algoritmo RSA.
Sabes qué tipo de comunicaciones necesitan ser encriptadas.
Usted sabe qué algoritmo usar y validar.
En cualquier caso, tanto los RFs como los RNFs deben estar siempre documentados, incluso si es
difícil establecer la relación entre ellos en los artefactos. Esto ayudará al equipo a reducir las
discusiones de ida y vuelta, ahorrar tiempo y sobre todo, problemas innecesarios con el cliente.
Los requerimientos funcionales de un sistema, son aquellos que describen cualquier actividad que
este deba realizar, en otras palabras, el comportamiento o función particular de un sistema o
software cuando se cumplen ciertas condiciones.
Por lo general, estos deben incluir funciones desempeñadas por pantallas específicas,
descripciones de los flujos de trabajo a ser desempeñados por el sistema y otros requerimientos
de negocio, cumplimiento, seguridad u otra índole.
En este artículo, te presentamos ejemplos de requerimientos funcionales, relacionados con
funciones del negocio, datos que deben ingresarse en las pantallas del sistema (interfaz gráfica),
los relacionados con control de acceso o emisión de reportes requeridos por entes reguladores,
entre otros.
Al igual que otros tipos de requerimientos de software, como por ejemplo los requerimientos no
funcionales, los requerimientos funcionales se pueden clasificar según su finalidad, como por
ejemplo requerimientos de negocio, requerimientos originados en aspectos regulatorios, de
seguridad, entre otros.
Presentamos la tercera parte de la serie sobre los requerimientos no funcionales, con algunos
ejemplos que puedan servir de guía en su definición.
Eficiencia
El sistema debe ser capaz de procesar N transacciones por segundo. Esto se medirá por
medio de la herramienta SoapUI aplicada al Software Testing de servicios web.
Toda funcionalidad del sistema y transacción de negocio debe responder al usuario en
menos de 5 segundos.
El sistema debe ser capaz de operar adecuadamente con hasta 100.000 usuarios con
sesiones concurrentes.
Los datos modificados en la base de datos deben ser actualizados para todos los usuarios
que acceden en menos de 2 segundos.
Los permisos de acceso al sistema podrán ser cambiados solamente por el administrador de
acceso a datos.
El nuevo sistema debe desarrollarse aplicando patrones y recomendaciones de
programación que incrementen la seguridad de datos.
Todos los sistemas deben respaldarse cada 24 horas. Los respaldos deben ser
almacenados en una localidad segura ubicada en un edificio distinto al que reside el sistema.
Todas las comunicaciones externas entre servidores de datos, aplicación y cliente del
sistema deben estar encriptadas utilizando el algoritmo RSA.
Si se identifican ataques de seguridad o brecha del sistema, el mismo no continuará
operando hasta ser desbloqueado por un administrador de seguridad.
Seguridad industrial
El tiempo de aprendizaje del sistema por un usuario deberá ser menor a 4 horas.
La tasa de errores cometidos por el usuario deberá ser menor del 1% de las transacciones
totales ejecutadas en el sistema.
El sistema debe contar con manuales de usuario estructurados adecuadamente.
El sistema debe proporcionar mensajes de error que sean informativos y orientados a
usuario final.
El sistema debe contar con un módulo de ayuda en línea.
La aplicación web debe poseer un diseño “Responsive” a fin de garantizar la adecuada
visualización en múltiples computadores personales, dispositivos tableta y teléfonos inteligentes.
El sistema debe poseer interfaces gráficas bien formadas.
Dependibilidad
El sistema debe tener una disponibilidad del 99,99% de las veces en que un usuario intente
accederlo.
El tiempo para iniciar o reiniciar el sistema no podrá ser mayor a 5 minutos.
La tasa de tiempos de falla del sistema no podrá ser mayor al 0,5% del tiempo de operación
total.
El promedio de duración de fallas no podrá ser mayor a 15 minutos.
La probabilidad de falla del Sistema no podrá ser mayor a 0,05.
Los requerimientos no funcionales suelen expresarse de una manera general y sin hacer
referencia a algún modulo, transacción o característica del sistema, pues sino pasarían a
ser requerimientos funcionales.
Por ejemplo:
El sistema debe asegurar que los datos estén protegidos del acceso no autorizado
El ISTQB establece que la omisión de las pruebas no funcionales puede ocasionar problemas de
calidad potencialmente catastróficos luego de la salida a producción, sin embargo, estos tipos de
pruebas son costosos, por lo que deben evaluarse los riesgos antes de comprometer los recursos
del proyecto.
1. - Pruebas de carga
Las pruebas de carga consisten en simular demanda sobre una aplicación de software y medir el
resultado. Estas pruebas se realizan bajo demanda esperada y también en condiciones de
sobrecarga (picos en la demanda).
Para ejecutar estas pruebas, se requiere del uso de herramientas de testing que simulen la
carga, como por ejemplo SoapUI.
Las pruebas de carga ayudan a identificar la máxima capacidad operativa de una aplicación, así
como en el identificar cuellos de botella y las causas de posible degradación del desempeño.
Cuando la carga de prueba se eleva por encima de los parámetros esperados, a estas pruebas se
les conoce como pruebas de estrés.
2. - Pruebas de estrés
Son pruebas de carga que se realizan con demandas mayores a la capacidad operativa, con
frecuencia hasta llegar al punto de ruptura.
Al igual que para las pruebas de carga, se requieren de herramientas que simulen la demanda,
SoapUI es una de estas herramientas que permite simular peticiones para servidores de
aplicaciones web.
Con las pruebas de estrés se pueden identificar los puntos de ruptura, límites para uso seguro de
la aplicación, confirmar las especificaciones de diseño, identificar las formas en que el sistema
falla, entre otros aspectos.
3. - Pruebas de volumen
Por ejemplo, si se quiere ver el comportamiento de una aplicación con un tamaño de base de
datos específico, se expande el tamaño de base de datos a dichos parámetros y luego e realizan
consultas, procesos o funcionalidades de la aplicación, midiendo su desempeño.
El sujeto de pruebas no está limitado a bases de datos, también se puede usar por ejemplo para
medir el desempeño de una interfaz cuando el archivo de interfaz (un archivo de texto, xml, etc.)
supera cierto tamaño.
El objetivo es ver si dado ciertos volúmenes de datos la aplicación funciona con normalidad,
cuales son los límites máximos de volúmenes de datos para la operación e identificar condiciones
de falla.
4. - Pruebas de configuración
En lugar de probar el desempeño de una aplicación desde la perspectiva de la carga, las pruebas
de configuración se usan para validar que efectos en el desempeño tienen ciertos cambios en la
configuración.
5. - Pruebas de usabilidad
En las pruebas de usabilidad, los testers de software se enfocan en validar que tan fácil de usar
es una determinada aplicación.
Facilidad de aprendizaje: Que tan fácil es para los usuarios realizar funciones básicas la primera
vez que utilizan la aplicación.
Eficiencia: Que tan rápido los usuarios experimentados pueden realizar sus tareas.
Memorización: Que tan fácil de memorizar es el uso de la aplicación, esto es, cuando un
usuario pasa mucho tiempo sin usar la aplicación, puede recordar lo suficiente para usarla con
efectividad la próxima vez, o tiene que empezar a aprender de nuevo.
Errores: Cuantos errores atribuibles al diseño comete el usuario, que tan severos son y
que tan fácil es recuperarse de los mismos.
Satisfacción: Que tanto le gusta (o desagrada) al usuario utilizar el sistema.
6. - Pruebas de seguridad
Las pruebas de seguridad también sirven para validar si el equipo de desarrollo de software ha
seguido prácticas de seguridad recomendadas en su programación.
7. - Pruebas de resistencia
Las pruebas de resistencia implican someter a un Sistema o aplicación a una carga determinada
durante un período de tiempo, para determinar cómo se comporta luego de un uso prolongado.
Un sistema informático puede comportarse de forma normal durante las primeras horas, sin
embargo, luego de cierto tiempo, problemas como fugas de memoria suelen ocasionar fallas.
8. - Pruebas de escalabilidad
Para que los resultados sean confiables, los ambientes de prueba y su configuración deben
mantenerse constantes.
9. - Pruebas de recuperación
Las pruebas de recuperación se realizan para verificar que tan rápido y que tan bien se recupera
una aplicación luego de experimentar un falló de hardware o software.
Por lo tanto, para realizar pruebas de recuperación se requiere forzar la falla y luego verificar si la
recuperación ocurre adecuadamente.
Por ejemplo, cuando una aplicación esté funcionando desconectar el cable de red, o en
una aplicación móvil interrumpir la conexión con la red Wi-Fi o con la operadora, para luego
restablecer la conexión.
Para realizar esta prueba deben evaluarse la forma en que está implementada la aplicación,
siguiendo buenas prácticas de ingeniería de software. Es decir, que se estén siguiendo los
patrones recomendados de ingeniería de software y que no se estén introduciendo
inadvertidamente anti patrones, esto es, que no se estén cometiendo errores comunes de
programación.
Somerville divide los requerimientos no funcionales en tres grandes tipos: Requerimientos de
producto, requerimientos organizacionales y requerimientos externos.
Suele referirse a limites o restricciones sobre el comportamiento del sistema, por lo cual establece
límites y restricciones sobre lo que los diseñadores (arquitectos de software) e ingenieros de
software pueden hacer.
Algunos de estos requerimientos pueden ser fáciles de cuantificar, por ejemplo el desempeño y la
confiabilidad, pero otros son más difíciles como por ejemplo usabilidad y adaptabilidad.
Una herramienta útil para comprobar la eficiencia de un sistema es SoapUI, que permite hacer
pruebas de carga o estrés sobre webservices. Aquí te compartimos artículos sobre el tema:
Estos derivan del entorno organizacional (no entorno técnico) en el cual se desarrolla el sistema y
pueden hacerse tanto sobre el producto (el software desarrollado) o también sobre el proceso de
desarrollo de software.
Este tipo de requerimientos incluyen limitaciones de índole económica, interacción o necesidad del
sistema de inter-operar con otros sistemas, requerimientos regulatorios en el área de salud,
seguridad industrial o protección de datos, requerimientos legales concernientes con licencias,
regulaciones o certificaciones que necesita el producto según la industria en el que se
desempeñe, entre otros.
https://www.youtube.com/user/codigofacilito
https://www.youtube.com/channel/UC4CEqh4d3-6RcyyJxhFCMGg
https://marvelapp.com/.