Nel mondo dell'ingegneria, in particolare nello sviluppo software e nell'ingegneria dei sistemi, la comprensione della distinzione critica tra requisiti funzionali e non funzionali è fondamentale per il successo del progetto. Il 37% dei progetti non è chiaro o sbagliato, rendendo essenziale per gli ingegneri, gli sviluppatori, i project manager e gli stakeholders per comprendere a fondo questi concetti.

Questa guida completa esplora in profondità sia i requisiti funzionali che non funzionali, fornendo esempi pratici, migliori pratiche per la documentazione e strategie per una gestione efficace dei requisiti. Se stai costruendo una piattaforma di e-commerce, lo sviluppo di software aziendale, o la progettazione di sistemi complessi, la padronanza di questi requisiti migliorerà significativamente i risultati del progetto.

Quali sono i requisiti funzionali?

Nell'ingegneria del software e nell'ingegneria dei sistemi, un requisito funzionale definisce una funzione di un sistema o del suo componente, dove una funzione viene descritta come un riassunto (o una specifica o un'affermazione) del comportamento tra input e output.

I requisiti funzionali definiscono le caratteristiche e le funzioni di un sistema, in altre parole, descrivono esattamente ciò che il prodotto software deve fare in condizioni normali per soddisfare le esigenze dell'utente.

I requisiti funzionali possono coinvolgere calcoli, dettagli tecnici, manipolazione e elaborazione dei dati e altre funzionalità specifiche che definiscono ciò che un sistema dovrebbe realizzare. Servono come base per i team di sviluppo, fornendo chiare linee guida su ciò che deve essere costruito e su come il sistema dovrebbe rispondere a vari input.

Caratteristiche chiave dei requisiti funzionali

I requisiti funzionali possiedono diverse caratteristiche di definizione che li contraddistinguono da altri tipi di requisiti:

  • Specificità:[] Descrivono comportamenti e funzioni precisi che il sistema deve eseguire
  • Testability:[ Ogni requisito può essere verificato attraverso i test per confermare l'implementazione
  • I clienti si riferiscono direttamente alle esigenze degli utenti e agli obiettivi aziendali
  • Action-Oriented:[] Definiscono ciò che il sistema fa in risposta agli input
  • RisorsabilitÃ:[] Hanno definito i risultati che possono essere misurati, come ad esempio il login di successo con le credenziali valide

Tipi di requisiti funzionali

I requisiti funzionali possono essere classificati in diversi tipi in base ai flussi di lavoro e ai comportamenti che descrivono:

Regole aziendali e logica

Le regole aziendali sono di solito il gruppo più grande in quanto definiscono come il sistema risponde ai comandi nel flusso principale dell'utente.Questi requisiti specificano la logica di core business che guida il comportamento dell'applicazione, inclusi i calcoli, i processi decisionali e l'automazione del flusso di lavoro.

Autenticazione e autorizzazione dell'utente

I requisiti di autenticazione e autorizzazione definiscono come gli utenti accedono al sistema e quali autorizzazioni hanno, specificando meccanismi di login, politiche password, controllo accessi basato sul ruolo e protocolli di sicurezza per la verifica dell'identità dell'utente.

Requisiti di gestione dei dati

I requisiti di dati definiscono come i dati dovrebbero essere creati, memorizzati, modificati e cancellati, sono particolarmente importanti se il prodotto gestisce i dati sensibili dell'utente.

Requisiti di interfaccia utente

I requisiti UI specificano come gli utenti interagiranno con il prodotto, definiscono elementi di design che rendono la navigazione intuitiva, descrivendo gli elementi visivi, i modelli di interazione, i flussi di navigazione e i componenti dell'interfaccia utente che gli utenti incontreranno.

Requisiti di transazione e di elaborazione

Questi requisiti definiscono come il sistema elabora le transazioni, gestisce le operazioni aziendali e gestisce i flussi di lavoro, specificando i passaggi coinvolti nel completamento delle attività, la sequenza delle operazioni e i risultati previsti di vari processi.

Esempi completi di requisiti funzionali

La comprensione dei requisiti funzionali diventa più chiara attraverso esempi concreti in diversi settori e tipi di applicazione.

Esempi di applicazioni di e-Commerce

Un sito web eCommerce deve avere requisiti funzionali che definiscono come i clienti cercano articoli, riesaminano le loro caratteristiche, fanno un ordine, pagano e ricevono la conferma.

  • Il sistema deve consentire agli utenti di creare un account utilizzando l'indirizzo e-mail e la password
  • Gli utenti dovrebbero essere in grado di navigare prodotti per categoria, prezzo e filtri di marca
  • Gli utenti devono essere in grado di aggiungere prodotti a un carrello e visualizzare il contenuto del carrello
  • L'utente può rivedere gli elementi nel carrello, modificare il loro numero, o rimuoverli prima del checkout
  • L'utente può aggiungere il codice promozionale e ottenere uno sconto prima del checkout
  • Il sistema deve elaborare le transazioni di pagamento in modo sicuro tramite gateway di pagamento integrati
  • Il sistema invia un'e-mail di conferma all'utente dopo aver prenotato un volo
  • Gli utenti dovrebbero essere in grado di fornire feedback o servizi / prodotti di tasso all'interno dell'app

Sistemi bancari e finanziari

  • Il sistema deve consentire ai clienti di trasferire fondi tra i conti
  • Gli utenti devono essere in grado di visualizzare la cronologia delle transazioni negli ultimi 12 mesi
  • L'applicazione deve abilitare la pianificazione del pagamento della fattura con opzioni di pagamento ricorrenti
  • Il sistema deve generare dichiarazioni mensili degli account in formato PDF
  • Gli utenti devono essere in grado di impostare avvisi account per tipi di transazione specifici
  • Il sistema deve verificare i saldi dell'account prima di elaborare le richieste di prelievo

Sistemi di gestione della salute

  • Il sistema deve consentire ai fornitori di assistenza sanitaria di pianificare gli appuntamenti dei pazienti
  • Il personale medico deve essere in grado di accedere e aggiornare i registri medici dei pazienti
  • L'applicazione deve consentire la gestione delle prescrizioni e le richieste di ricarica
  • Il sistema deve generare promemoria di appuntamenti automatizzati via e-mail e SMS
  • I fornitori di servizi sanitari devono essere in grado di visualizzare i risultati dei test dei pazienti e i rapporti diagnostici
  • Il sistema deve supportare l'integrazione dei record di salute elettronica (EHR) con i sistemi esterni

Gestione dei contenuti e social media

  • Il sistema deve consentire ai visitatori del blog di iscriversi alla newsletter lasciando la loro email
  • Gli utenti devono essere in grado di creare, modificare e pubblicare contenuti con una ricca formattazione del testo
  • Il sistema deve abilitare la categorizzazione dei contenuti utilizzando tag e categorie
  • Gli utenti devono essere in grado di caricare e gestire file multimediali, comprese immagini e video
  • L'app può inviare notifiche agli utenti per aggiornamenti, promemoria o contenuti promozionali
  • Il sistema deve fornire funzionalità di ricerca su tutti i contenuti pubblicati
  • Gli utenti devono poter condividere contenuti su piattaforme esterne di social media

Sistemi di pianificazione delle risorse aziendali (ERP)

  • Il software di gestione dell'hotel deve consentire al personale di gestire le prenotazioni in arrivo, creare e gestire i piani di tasso, accettare i pagamenti, generare report, ecc.
  • Il sistema deve monitorare i livelli di inventario e generare avvisi di riordine automatico
  • Gli utenti devono essere in grado di generare rapporti finanziari, tra cui il conto profitti e perdite
  • L'applicazione deve sostenere le transazioni e le conversioni multivaluta
  • Il sistema deve abilitare il monitoraggio dell'orario dei dipendenti e l'elaborazione dei registri di pagamento
  • Gli utenti devono essere in grado di gestire i rapporti dei fornitori e gli ordini di acquisto

Esempi di applicazione mobile

  • L'app dovrebbe consentire agli utenti di creare account e accedere utilizzando credenziali come email e password o tramite integrazione dei social media
  • L'applicazione deve supportare la modalità offline con la sincronizzazione dei dati quando la connettività viene ripristinata
  • Gli utenti devono poter accedere a servizi e funzionalità basati sulla posizione
  • L'app deve abilitare le notifiche push per aggiornamenti e avvisi importanti
  • Gli utenti devono essere in grado di personalizzare le impostazioni e le preferenze dell'app
  • Il sistema deve supportare l'autenticazione biometrica, tra cui l'impronta digitale e il riconoscimento facciale

What Are

]]In ingegneria dei sistemi e requisiti di ingegneria, un requisito non funzionale (NFR) è un requisito che specifica criteri che possono essere utilizzati per giudicare il funzionamento di un sistema, piuttosto che comportamenti specifici.

I requisiti funzionali definiscono in modo ampio ciò che un sistema dovrebbe fare e i requisiti non funzionali definiscono come un sistema dovrebbe essere. I requisiti non funzionali (NFR) definiscono come un sistema dovrebbe funzionare, concentrandosi sulle prestazioni, sull'affidabilità e sull'esperienza degli utenti piuttosto che su specifiche caratteristiche, garantendo che il sistema sia efficiente, sicuro e manutenbile nel tempo.

Le proprietà generali del sistema segnano comunemente la differenza tra il fatto che il progetto di sviluppo sia riuscito o fallito. Mentre i requisiti funzionali garantiscono il funzionamento del sistema, i requisiti non funzionali garantiscono che funzioni bene e soddisfa le aspettative degli utenti per qualità, prestazioni e affidabilità.

Comprendere l'importanza dei requisiti non finanziari

L'attenzione esclusivamente ai requisiti funzionali a scapito dei requisiti non funzionali può causare gravi problemi. I requisiti funzionali potrebbero essere considerati soddisfatti anche quando non sono necessari requisiti non funzionali. Una transazione che richiede 20 secondi per completare con successo può essere funzionale – ma non è certamente utilizzabile.

I requisiti non funzionali influiscono direttamente sulla soddisfazione dell'utente, sull'adozione del sistema e sul successo a lungo termine. Un sistema che esegue tutte le funzioni richieste, ma carica lentamente, si blocca frequentemente, o presenta vulnerabilità di sicurezza, non riuscirà a soddisfare gli obiettivi aziendali e le esigenze degli utenti.

Tipi completi di requisiti non operativi

Le qualifiche, che sono requisiti non funzionali, possono essere divise in due categorie principali: qualità di esecuzione, come sicurezza, sicurezza e usabilità, che sono osservabili durante l'operazione (al momento dell'esecuzione).

Requisiti di prestazione

I requisiti di prestazione specificano come il sistema deve reagire al carico dell'utente pesante, che comporta il controllo di metriche come il tempo di avvio, il tempo di risposta, la latenza e il numero massimo di utenti simultanei che l'applicazione può supportare.

I requisiti di prestazione sono fondamentali per garantire che i sistemi possano gestire i carichi di lavoro previsti senza degradazione.

  • Risponsa tempo:[ Il tempo massimo consentito per il sistema di rispondere alle richieste degli utenti
  • Troughput:[ Il numero di operazioni o operazioni che il sistema può elaborare per unità di tempo
  • Risorsa Utilizzo:[ CPU, memoria e consumo di larghezza di banda in varie condizioni di carico
  • Utenti concorrenti:[ Il numero di utenti simultanei che il sistema può supportare
  • Tempo di caricamento:[ Come rapidamente pagine, schermi o carico di dati per gli utenti

Esempio: Un requisito di prestazione per un'applicazione bancaria sarebbe che dovrebbe essere in grado di elaborare le transazioni entro 3 secondi, anche durante i periodi di traffico elevato dell'utente.

Requisiti di sicurezza

I requisiti di sicurezza definiscono come il sistema protegge i dati, previene l'accesso non autorizzato e mantiene la riservatezza, l'integrità e la disponibilità, e questi requisiti sono sempre più critici nel panorama delle minacce di oggi.

I requisiti di sicurezza comprendono:

  • Autorizzazione:[] Metodi per la verifica dell'identità dell'utente
  • Autorizzazione:[] Meccanismi di controllo dell'accesso e livelli di autorizzazione
  • Data Crittografia:[] Protezione dei dati in transito e a riposo
  • Sentieri di studio:[ Registrazione e monitoraggio degli eventi rilevanti per la sicurezza
  • Protezione della vulnerabilità:[] Difesa contro le minacce di sicurezza comuni
  • Data Privacy:[] Rispetto alle normative sulla privacy e agli standard di protezione dei dati

Esempio: i dati devono essere crittografati sia in transito utilizzando TLS 1.3 che a riposo utilizzando gli standard di crittografia AES-256.

Requisiti di usabilità

L'utilizzo è fondamentalmente di facile utilizzo, quindi l'interfaccia del prodotto deve essere intuitiva e facile da navigare, le sue caratteristiche devono essere comprensibili e facili da trovare, e, soprattutto, deve soddisfare le esigenze dell'utente.

I requisiti di usabilità Indirizzo:

  • Learnability:[ Come rapidamente nuovi utenti possono diventare produttivi con il sistema
  • Efficienza:[ Come gli utenti esperti possono realizzare rapidamente i compiti
  • Memorabilità:[ Come facilmente gli utenti possono tornare al sistema dopo un periodo di non utilizzo
  • Prevenzione dell'errore:[ Caratteristiche di progettazione che impediscono gli errori dell'utente
  • Soddisfazione:[ Quanto piacevole e soddisfacente è il sistema da usare
  • Accessibilità:[] Supporto per gli utenti con disabilità e diverse esigenze

Esempio: I nuovi utenti devono essere in grado di completare la loro prima transazione entro 5 minuti senza richiedere aiuto esterno o documentazione.

Reliability and Availability Requisiti

Questo insieme di NFRs afferma che il sistema deve essere disponibile per l'uso il più possibile, e che i tempi di fermo devono essere minimizzati. I requisiti di affidabilità assicurano che il sistema esegue costantemente e prevedibilmente nel tempo.

Le considerazioni chiave includono:

  • Aggiornamento:[ Percentuale di tempo il sistema è operativo e accessibile
  • Tempo medio tra fallimenti (MTBF):[ Tempo medio tra guasti del sistema
  • Tempo medio per la riparazione (MTTR):[ Tempo medio richiesto per ripristinare la funzionalità del sistema
  • Tolleranza di default:[] La capacità del sistema di continuare a funzionare nonostante i guasti dei componenti
  • Ricupero di disordine:[ Procedure e capacità per il recupero da fallimenti catastrofici

Esempio: Il sistema deve essere disponibile 99,9% del tempo, escluse le finestre di manutenzione programmate, che si traduce in non più di 8,76 ore di fermo all'anno.

Requisiti di scalabilità

I requisiti di scalabilità definiscono come il sistema cresce e si adatta ad esigenze sempre più elevate, sia in termini di utenti, volume di dati o elaborazione delle transazioni, che sono essenziali per i sistemi che dovrebbero crescere nel tempo.

  • Scalabilità orizzontale:[] Capacità di aggiungere più server o nodi per distribuire il carico
  • Squilabilità verticale:[ Capacità di aumentare le risorse sui server esistenti
  • Data Scalability:[ Capacità di gestire volumi di dati in crescita
  • Squilabilità geografica:[ Supporto per l'espansione verso nuove regioni o località

Esempio: Il sistema dovrebbe essere in grado di gestire 20 milioni di utenti senza deterioramento delle prestazioni.

Requisiti di manutenzione

Un sistema manutenbile deve essere in grado di essere mantenuto in modo economico nel corso della sua durata prevista e può incorporare requisiti aggiuntivi come la modificabilità, la configurabilità, l'estensibilità e l'interoperabilità.

La sostenibilità comprende:

  • Qualità del codice:[] Standard per la leggibilità del codice, la documentazione e la struttura
  • Modularità:[ Grado a cui i componenti del sistema sono indipendenti e intercambiabili
  • Testabilità:[ Ease of testing system componenti and funzionali
  • Configurabilità:[] Capacità di modificare il comportamento del sistema senza modifiche del codice
  • Estensibilità:[] Esaudire nuove funzionalità e funzionalità

Requisiti di conformità e di regolazione

I requisiti non funzionali nella categoria di conformità affermano che i sistemi software devono rispettare i requisiti legali e normativi; la verificabilità è generalmente inclusa in questa categoria troppo.

I requisiti di conformità variano per settore e giurisdizione, ma includono comunemente:

  • Il gateway di elaborazione dei pagamenti deve essere conforme PCI DSS
  • Il software clinico deve rispettare HIPAA (Health Insurance Portability and Accountability Act) e GDPR (General Data Protection Regulation)
  • I data center cloud devono rispettare la certificazione di sicurezza ISO 27001
  • I sistemi devono soddisfare standard specifici del settore, come SOC 2, FISMA o FDA
  • Audit capacità di registrazione e reporting per la conformità normativa

Requisiti di compatibilità e interoperabilità

Questi requisiti definiscono come il sistema funziona con altri sistemi, piattaforme e tecnologie, garantendo un'integrazione senza soluzione di continuità e uno scambio di dati in ambienti diversi.

  • Compatibilità con le forme:[ Sistemi operativi e dispositivi che il sistema deve supportare
  • Browser Compatibilità:[] browser e versioni web che devono essere supportate
  • Compatibilità API:[] Standard e protocolli per l'integrazione del sistema
  • Compatibilità del formato dati:[ Supporto per vari formati e standard di dati
  • Integrazione del sistema di legacy:[ Capacità di lavorare con i sistemi esistenti

Esempio: Un programma in esecuzione su Windows 10 deve essere in grado di eseguire su Windows 11 senza alcuna modifica del suo comportamento e delle sue prestazioni.

Requisiti di capacità

I requisiti di capacità specificano il volume di dati, transazioni e utenti che il sistema deve ospitare sia attualmente che in futuro.

  • Capacità di memorizzazione:[ Quantità di dati che il sistema deve memorizzare
  • Capacità utente:[ Numero massimo di utenti registrati e concorrenti
  • Volume di transazione:[ Numero di operazioni trattate per periodo di tempo
  • Rete Larghezza di banda:[ Requisiti di trasferimento dati

Esempio: Le pagine del sito dovrebbero caricare in 3 secondi con il numero totale di utenti simultanei <5 mila.

Confronto dettagliato: Funzionale vs. Requisiti non funzionali

Comprendere le differenze tra requisiti funzionali e non funzionali è fondamentale per una gestione efficace dei requisiti.

Definizione e messa a fuoco

I requisiti funzionali guidano l'architettura dell'applicazione di un sistema, mentre i requisiti non funzionali guidano l'architettura tecnica di un sistema. I requisiti funzionali rispondono "cosa" il sistema fa, mentre i requisiti non funzionali rispondono "come bene" lo fa.

Stile di documentazione

In generale, i requisiti funzionali sono espressi nella forma "sistema deve fare", mentre i requisiti non funzionali prendono la forma "sistema deve essere ". Questa distinzione linguistica riflette la differenza fondamentale in ciò che ogni tipo di requisito specifica.

Approccio di prova

I requisiti funzionali sono tipicamente testati attraverso metodi di test funzionali come test di unità, test di integrazione e test di accettazione degli utenti.

Requisiti non funzionali: le funzionalità sono più facili da testare, ma qualità come usabilità, scalabilità e affidabilità sono più difficili da misurare e convalidare.

Impatto sul successo del progetto

I requisiti funzionali e non funzionali sono due lati della stessa moneta, e insieme creano software completi e utilizzabili. Entrambi i tipi sono essenziali, ma hanno un impatto diverso:

  • I requisiti funzionali determinano se il sistema può eseguire le attività richieste
  • I requisiti non funzionali determinano se gli utenti vogliono effettivamente utilizzare il sistema
  • I requisiti funzionali mancanti provocano caratteristiche incomplete
  • I requisiti non funzionali mancanti risultano in scarsa esperienza utente e qualità del sistema

Sfide di priorità

I requisiti funzionali spesso ricevono maggiore attenzione, mentre aspetti importanti come scalabilità, sicurezza o monitoraggio possono essere trascurati. Questo squilibrio può portare a sistemi che tecnicamente funzionano ma non soddisfano le aspettative di qualità o le esigenze aziendali.

Perché entrambi i requisiti sono critici per il successo del progetto

I requisiti funzionali sono la colonna portante dello sviluppo di software e sistemi di successo, che definiscono esattamente ciò che un prodotto deve fare per soddisfare le esigenze degli utenti e degli affari. Specificando le funzioni e i comportamenti che un sistema dovrebbe presentare, i requisiti funzionali garantiscono che ogni funzione si allinei alle aspettative degli utenti e agli obiettivi di progetto.

Tuttavia, i requisiti funzionali da soli sono insufficienti. Entrambi i tipi di requisiti lavorano insieme per creare sistemi di successo:

Fornire Clarity e Direzione

Having clearly defined functional requirements reduces the risk of miscommunication between stakeholders and your development team. This w