El requisito que ha escrito no tiene las características de un buen requisito . Específicamente, no es cohesivo, no es atómico y no es inequívoco. Debido a la falta de estas características, tampoco es fácilmente verificable.
Su requisito de estado inicial es:
El nombre del archivo descargado puede contener caracteres no ASCII y el procesamiento de este no bloqueará la aplicación
Recomendaría eliminar el "... y el procesamiento de esto no bloqueará la aplicación". Si tiene el requisito de que una pieza de software necesita hacer algo, creo que está bien suponer que debería hacerlo sin bloquear el software.
Esto transforma el requisito en:
El nombre del archivo descargado puede contener caracteres no ASCII
Ahora, tiene un requisito cohesivo y atómico. Sin embargo, no estoy seguro de que sea inequívoco. En su pregunta, menciona varios formatos diferentes. Hay algunas opciones
Algunos recomendarían un requisito separado y único para cada codificación de nombre de archivo que debe ser compatible. Esto respaldaría mejor los requisitos cohesivos, atómicos, trazables, inequívocos y verificables. También facilitaría la especificación de la importancia de cada requisito: quizás el soporte para algunas codificaciones sea más importante o se necesite antes.
Otros pueden recomendar una tabla de formatos compatibles y este requisito se vincularía a una tabla. Sería menos completo (tiene una oración textual y una tabla para mantener), pero estarían en el mismo documento o base de datos. Sin embargo, si fuera a realizar la vinculación en una herramienta de gestión de requisitos, podrían vincularse entre sí para que los cambios a uno resaltaran el requisito vinculado. También permitiría que el texto fluya a otros paquetes de software tal cual, pero con una tabla diferente para diferentes codificaciones.
Sin embargo, la forma en que documenta los requisitos depende de sus necesidades específicas.