IME, le specifiche di sistema definiscono l'ambiente hardware e software in cui la nuova applicazione opererà, mentre le specifiche funzionali definiscono ciò che l'applicazione farà (la mia esperienza potrebbe non essere tipica, comunque).
I documenti di progettazione sono un animale diverso. Definiscono la struttura dell'applicazione, suddividendola in componenti, specificando l'implementazione di ciascun componente, le interfacce tra i componenti, l'ordine in cui i componenti eseguono le loro operazioni, ecc. ("Componente" è pensato per essere un livello molto alto, termine astratto qui, potrebbe corrispondere a classi, moduli o anche singole funzioni o metodi). I documenti di progettazione hanno spesso anche una "matrice di tracciabilità" che mostra quali requisiti sono soddisfatti da particolari elementi del progetto.
Per un esempio stupidamente semplice:
Specifiche del sistema : l'applicazione verrà eseguita su Linux come app della riga di comando in una shell bash.
Specifiche funzionali : l'applicazione stamperà il testo "Hello, World" sulla console e quindi terminerà.
Design document : l'applicazione verrà implementata come un singolo programma C costituito dalla funzione main
, senza argomenti. Alla voce, chiamerà la funzione di libreria standard printf
con la stringa letterale "Hello, World \ n" come argomento esclusivo. Dopo la chiamata di printf
, l'applicazione restituirà uno 0 nell'ambiente di esecuzione.
Il "documento di progettazione" di solito non è così dettagliato da specificare singole righe di codice, ma dovresti ottenere l'idea.