Qual è il requisito non funzionale nell'ingegneria del software?
⚡ Riepilogo intelligente
I requisiti non funzionali specificano attributi di qualità quali prestazioni, sicurezza, usabilità, affidabilità, scalabilità e portabilità, definendo il comportamento che un sistema software deve possedere e trasformando aspettative vaghe in obiettivi di ingegneria misurabili, testabili e applicabili lungo tutto il ciclo di vita dello sviluppo.
Che cos'è un requisito non funzionale?
A Requisito non funzionale (NFR) specifica un attributo di qualità di un sistema software. Gli NFR valutano il sistema in base a reattività, usabilità, sicurezza, portabilità e altri attributi di qualità che sono fondamentali per il successo. Un esempio comune di requisito non funzionale è: "quanto velocemente viene caricato il sito web?" Il mancato rispetto dei requisiti non funzionali produce sistemi che generano frustrazione negli utenti.
Nell'ingegneria del software, i requisiti non funzionali impongono vincoli alla progettazione del sistema lungo tutto il backlog agile. Ad esempio, il sito dovrebbe caricarsi in tre secondi quando gli utenti simultanei superano i 10,000. Descrivere i requisiti non funzionali è altrettanto importante quanto definire i requisiti funzionali.
Tipi di requisiti non funzionali
Le principali categorie di requisiti non funzionali sono:
Tipi di requisiti non funzionali
- usabilità
- Facilità di manutenzione
- Manageability
- Recuperabilità
- Sicurezza
- Dati Integrity
- Ultra-Grande
- Disponibilità
- Scalabilità
- Interoperabilità
- L’affidabilità
- manutenibilità
- Conformità normativa
- Vincoli ambientali
Esempi di requisiti non funzionali
Ecco alcuni esempi pratici di requisiti non funzionali:
- Gli utenti devono cambiare la password iniziale dopo il primo accesso riuscito e la password iniziale non deve mai essere riutilizzata.
- Ai dipendenti non è consentito aggiornare autonomamente le informazioni relative al proprio stipendio e qualsiasi tentativo in tal senso sarà segnalato al responsabile della sicurezza.
- Ogni tentativo non riuscito da parte di un utente di accedere a un elemento di dati deve essere registrato in un registro di controllo.
- Il sito web dovrà supportare 20 milioni di utenti simultanei senza rallentamenti nei tempi di risposta.
- Il software deve essere portatile, in modo che il passaggio da un sistema operativo all'altro non crei problemi.
- La riservatezza delle informazioni, l'esportazione di tecnologie soggette a restrizioni e i diritti di proprietà intellettuale devono essere verificabili.
Requisiti funzionali vs. non funzionali
Le principali differenze tra requisiti funzionali e non funzionali sono:
| Scheda Sintetica | Requisito funzionale | Requisito non funzionale |
|---|---|---|
| Che cos'è? | Verbo | Attributi |
| Requisito | È obbligatorio | Non è obbligatorio |
| Tipo di cattura | Viene acquisito nel caso d'uso. | Viene catturato come attributo di qualità. |
| Risultato finale | caratteristica di prodotto | Proprietà del prodotto |
| Catturare | Facile da catturare | Difficile da catturare |
| Obiettivo | Aiuta a verificare la funzionalità del software. | Ti aiuta a verificare le prestazioni del software. |
| Area di interesse | Concentrarsi sulle esigenze dell'utente | Si concentra sulle aspettative dell'utente. |
| Documentazione | Descrivi cosa fa il prodotto | Descrive come funziona il prodotto |
| Tipo di test | Test di funzionalità come test di sistema, di integrazione, end-to-end, di API, ecc. | Test non funzionali come prestazioni, stress, usabilità, test di sicurezza, ecc. |
| Esecuzione del test | L'esecuzione del test viene eseguita prima dei test non funzionali. | Dopo il test funzionale |
| Informazioni sul prodotto | Caratteristiche | Proprietà del prodotto |
Vantaggi dei requisiti non funzionali
I principali vantaggi di Test non funzionali siamo:
- I requisiti non funzionali garantiscono che il sistema rispetti le normative legali e di conformità.
- Proteggono l'affidabilità, la disponibilità e le prestazioni del sistema.
- Offrono una buona esperienza utente e facilità d'uso.
- Definiscono le politiche di sicurezza del software.
Svantaggi dei requisiti non funzionali
Gli svantaggi più comuni dei requisiti non funzionali sono:
- I requisiti non funzionali possono interessare diversi sottosistemi software di alto livello.
- Richiedono una considerazione particolare in fase di progettazione architettonica e di alto livello, il che ne aumenta i costi.
- L'implementazione raramente corrisponde a un singolo sottosistema software.
- Sono difficili da modificare una volta completata la fase di progettazione.
Modello FURPS+ per la classificazione dei requisiti non funzionali
FURPS+ è la tassonomia più diffusa per i requisiti non funzionali. Sviluppata originariamente presso Hewlett-Packard, raggruppa gli attributi di qualità in cinque categorie principali, più vincoli aggiuntivi contrassegnati dal simbolo "+". Il modello aiuta gli analisti aziendali a evitare di trascurare un'intera classe di requisiti.
- Funzionalità: Funzionalità, sicurezza e riutilizzabilità che vanno ben oltre l'elenco delle caratteristiche di base.
- usabilità: Fattori umani, estetica, coerenza, documentazione e reattività dell'esperienza utente.
- Affidabilità: Disponibilità, tempo medio tra i guasti, recuperabilità, prevedibilità e accuratezza.
- Performance: Velocità, produttività, capacità, scalabilità e consumo di risorse sotto carico.
- Supportabilità: Testabilità, flessibilità, installabilità, localizzabilità e manutenibilità del sistema fornito.
- Più (+): Progettazione, implementazione, interfaccia e vincoli fisici quali piattaforme, standard o hardware richiesti.
I team che mappano ogni requisito non funzionale a una categoria FURPS+ hanno meno probabilità di rilasciare un sistema che soddisfi i requisiti funzionali ma che presenti problemi di prestazioni, sicurezza o manutenibilità.
Come scrivere requisiti non funzionali verificabili
Un requisito non funzionale ben formulato è misurabile, verificabile e con una scadenza definita. Affermazioni vaghe come "il sistema deve essere veloce" o "l'app deve essere sicura" sono aspirazioni, non requisiti. Segui i passaggi seguenti per convertire un intento in un requisito non funzionale testabile.
- Identificare l'attributo di qualità. Associa il problema a una categoria FURPS+ in modo che il team sappia se si tratta di un requisito di prestazioni, usabilità, sicurezza o affidabilità.
- Scegli una metrica. Ogni requisito non funzionale (NFR) necessita di un'unità di misura: millisecondi, richieste al secondo, utenti simultanei, percentuale di tempo di attività o uno standard di conformità come ISO 27001.
- Imposta una soglia numerica. Sostituire “veloce” con “meno di 400 millisecondi al 95° percentile”. Sostituire “altamente disponibile” con “tempo di attività mensile del 99.9%”.
- Descrivi la condizione. Specificare il carico, l'ambiente o il segmento di utenti a cui si applica la soglia, ad esempio "durante i picchi di vendita con 10,000 utenti simultanei".
- Definire il metodo di verifica. Annota il tipo di test (test di carico, test di penetrazione, esperimento di caos, verifica di accessibilità) e lo strumento che confermerà la soglia.
- Eseguire il controllo SMART. Prima di inserire il requisito nel backlog, assicurarsi che sia Specifico, Misurabile, Raggiungibile, Rilevante e con Scadenza definita.
Esempio di riscrittura: "Il sistema deve essere veloce" diventa "La pagina di checkout deve rispondere in meno di 500 millisecondi al 95° percentile con 5,000 utenti simultanei, verificato da un JMeter "Eseguire test di carico per ogni rilascio." La dichiarazione rivista permette agli sviluppatori di progettarla tenendo conto di questo aspetto, ai tester di verificarla e ai responsabili di prodotto di accettarla senza obiezioni.


