Che cos'è un processo di sviluppo software?
Il software si riferisce sia ai sistemi operativi dei computer stessi, sia a programmi e applicazioni progettati per essere eseguiti su computer. Lo sviluppo del software consiste nella progettazione e scrittura di software, compreso lo sviluppo dell'architettura del programma e dell'interfaccia utente e la programmazione del codice sorgente. Il processo di sviluppo del software è l'approccio adottato per lo sviluppo del software e ci sono molti modelli ben sviluppati per questo processo. In generale, contengono variazioni sulle fasi di analisi dei requisiti, speculazione del prodotto, creazione dell'architettura software, implementazione del codice, test e documentazione del prodotto, formazione e supporto, mantenimento e miglioramento del rilascio. Qualunque modello venga utilizzato, il processo di sviluppo del software a volte può essere mirato allo sviluppo di nuovi prodotti, mentre altre volte si concentra sulla revisione - ad esempio, quando viene creata una release point per correggere i bug - e altre volte, potrebbe prepararsi a una nuova versione del software esistente, aggiungendo funzionalità significative e offrendo correzioni di bug.
Il modello Waterfall per il processo di sviluppo software è un modello iniziale e anche con limiti intrinseci. Prescrive un approccio strettamente unidirezionale allo sviluppo, spostandosi in una direzione attraverso la sequenza delle fasi di sviluppo del software, senza mai tornare a una fase precedente o modificare le specifiche, una volta iniziato lo sviluppo. Il modello a spirale, al contrario, utilizza un processo iterativo, in cui una sequenza di requisiti, seguita da progettazione, implementazione e infine test, è seguita da un secondo ciclo in cui vengono aggiunte più funzionalità e componenti. In Agile Models del processo di sviluppo del software - di cui esistono numerosi - i progetti di sviluppo sono suddivisi in sottoinsiemi settimanali o mensili chiamati timebox, ognuno dei quali passa attraverso una versione miniaturizzata di un intero processo di sviluppo software, incluso un rilascio a fine. Altre caratteristiche dello sviluppo Agile includono la vicinanza del team collaboratore e l'uso dei clienti per rispondere al prodotto durante l'intero processo.
Il processo di sviluppo del software può essere radicalmente diverso per una grande azienda e per un singolo programmatore. Ad esempio, un editore di software commerciale, come Sibelius Software®, parte di Avid Technology®, potrebbe dedicare diversi anni al processo di sviluppo del software per ogni versione e rilasciare un'applicazione software di dimensioni pari a centinaia di MB e utilizzata da migliaia di persone . D'altra parte, un individuo come Roman Molino Dunn, The Music Transcriber®, programmando un plug-in in risposta al desiderio di qualcuno di fare qualcosa di diverso con un software commerciale, potrebbe creare un software da 4 KB entro un'ora dall'avere l'idea, in un caso estremo.