Il requisito che hai scritto non ha le caratteristiche di un buon requisito . In particolare, non è coeso, non è atomico e non è univoco. A causa della mancanza di queste caratteristiche, non è nemmeno facilmente verificabile.
Il tuo requisito di stato iniziale è:
The downloaded file name may contain non-ASCII characters and processing of this shall not crash the application
Suggerirei di rimuovere "... e l'elaborazione di questo non causerà il crash dell'applicazione". Se si ha la necessità che un pezzo di software debba fare qualcosa, penso che sia corretto supporre che dovrebbe farlo senza arrestare il software.
Questo trasforma il requisito in:
The downloaded file name may contain non-ASCII characters
Ora hai un requisito coesivo e atomico. Tuttavia, non sono sicuro che sia univoco. Nella tua domanda, menzioni un certo numero di formati diversi. Ci sono alcune opzioni.
Alcuni consiglierebbero un requisito separato e univoco per ogni codifica del nome di file che deve essere supportata. Ciò potrebbe meglio supportare requisiti coesi, atomici, tracciabili, non ambigui e verificabili. Inoltre, sarebbe più semplice specificare l'importanza di ciascun requisito: forse il supporto per alcune codifiche è più importante o necessario prima.
Altri potrebbero raccomandare una tabella di formati supportati e questo requisito si collegherebbe a una tabella. Sarebbe meno completo (hai una frase testuale e una tabella da mantenere), ma sarebbero nello stesso documento o database. Tuttavia, se si desidera eseguire il collegamento in uno strumento di gestione dei requisiti, potrebbero essere collegati tra loro in modo che le modifiche apportate a uno evidenzieranno il requisito collegato. Permetterebbe anche il flusso del testo verso altri pacchetti software così com'è, ma con una tabella diversa per le diverse codifiche.
Tuttavia, il modo in cui documenti i requisiti dipende dalle tue esigenze specifiche.