Il Glossario standard IEEE della terminologia dell'ingegneria del software (IEEE Std 610.12-1990) definisce la progettazione del software come "il processo di definizione dell'architettura, dei componenti, delle interfacce e di altre caratteristiche di un sistema o componente" e "il risultato di [che ] processi". In sostanza, è l'analisi dei requisiti per produrre una sorta di descrizione di ciò che si intende costruire. Il risultato finale delle attività di progettazione è equivalente a progetti per la costruzione di un edificio.
Il design viene solitamente suddiviso in una descrizione di alto livello (o di livello superiore) del sistema che identifica vari componenti e in che modo i componenti interagiscono tra loro e una descrizione più dettagliata di ciascuno di quei componenti che consente loro di essere costruito.
Quando parli di design a qualsiasi livello, inizi a pensare a concetti come la distribuzione (quali componenti eseguiranno quali attività e dove questi componenti saranno localizzati), l'elaborazione di attività e concorrenti, i dati e gli eventi, la gestione degli errori e tolleranza agli errori, persistenza dei dati, interazione e presentazione. Considerate anche gli attributi di qualità (come manutenibilità, testabilità, portabilità, robustezza) del sistema e dei suoi componenti.
L'approccio al design dipende dalla metodologia di processo che stai utilizzando per costruire il sistema. Ad esempio, in un ciclo di vita sequenziale, tipicamente esegui "big design up-front" (BDUF), dove prendi i tuoi requisiti e produci un design di alto livello, finalizzalo (per la maggior parte), usalo per creare dettagliate progetta e implementa quel design. In una metodologia più iterativa e incrementale, è necessario prendere in considerazione tutti i requisiti noti, ma concentrare i propri sforzi sulla progettazione (e quindi sull'implementazione) di un sottoinsieme di tali funzionalità in un dato momento, evolvendo il prodotto e il suo design come aggiungere funzionalità aggiuntive.
Anche gli approcci e le tecniche specifici che utilizzi per progettare il tuo sistema variano a seconda del sistema. Ad esempio, la progettazione di un sito Web per il team locale della piccola lega, la progettazione di un'applicazione Web per Amazon e la progettazione di software per il controllo degli aeromobili sono molto diversi in termini di formalità e di ciò che è necessario documentare formalmente. Le specifiche di input, attività e output sono parte delle attività di progettazione che dovrebbero essere specificate nella documentazione di pianificazione del progetto (che, di nuovo, potrebbe variare in formalità dagli accordi verbali a una specifica estesa, a seconda del tipo di progetto).