Sviluppo del software si riferisce a una serie di attività relative all'informatica dedicate al processo di creazione, progettazione, implementazione e supporto del software.
Il software stesso rappresenta la serie di istruzioni o programmi che indicano a un computer cosa fare. È indipendente dall'hardware e rende i computer programmabili. Esistono tre tipi di base di software:
software di sistema per fornire le principali funzioni come sistemi operativi, gestione dischi, programmi di utilità, gestione hardware e altre esigenze operative.
Software di programmazione per fornire ai programmatori strumenti quali editor di testo, compilatori, linker, debugger e altri strumenti per la creazione del codice.
Software applicativo (applicazioni o app) per aiutare gli utenti a eseguire attività. Le suite di produttività per uffici, il software di gestione dei dati, i lettori multimediali e i programmi di sicurezza rappresentano degli esempi. Per applicazioni si intendono anche applicazioni Web e per dispositivi mobili come quelle utilizzate per fare acquisti su Amazon.com, socializzare con Facebook o pubblicare immagini su Instagram.1
Un possibile quarto tipo è rappresentato dal software integrato. Il software di sistemi integrato viene utilizzato per controllare macchine e dispositivi che in genere non vengono considerati computer, reti di telecomunicazioni, automobili, robot industriali e altro ancora. Questi dispositivi, e il loro software, possono essere connessi come parte di IoT (Internet of Things).2
Lo sviluppo del software viene eseguito principalmente da programmatori, ingegneri del software e sviluppatori del software. Questi ruoli interagiscono e si sovrappongono e le dinamiche tra loro variano notevolmente tra i reparti e le comunità di sviluppo.
I programmatori, o codificatori, scrivono il codice sorgente per programmare i computer per attività specifiche come l'unione di database, l'elaborazione di ordini online, l'instradamento di comunicazioni, l'esecuzione di ricerche o la visualizzazione di testo e grafici. I programmatori in genere interpretano le istruzioni degli sviluppatori e degli ingegneri del software e utilizzano linguaggi di programmazione come C ++ o Java per eseguirle.
Gli ingegneri del software applicano principi di ingegneria per creare software e sistemi e risolvere i problemi. Usano il linguaggio di modellazione e altri strumenti per individuare soluzioni che spesso possono essere applicate ai problemi in modo generale, invece di limitarsi a risolvere un'istanza o un client specifico. Le soluzioni di ingegneria del software aderiscono al metodo scientifico e devono funzionare nel mondo reale, come con ponti o ascensori. La loro responsabilità è aumentata man mano che i prodotti sono diventati sempre più intelligenti con l'aggiunta di microprocessori, sensori e software. Non solo più prodotti si affidano al software per differenziarsi sul mercato, ma il loro sviluppo software deve essere coordinato con il lavoro di sviluppo meccanico ed elettrico del prodotto.
Gli sviluppatori di software hanno un ruolo meno formale degli ingegneri e possono essere strettamente coinvolti in aree di uno specifico progetto, inclusa la scrittura del codice. Allo stesso tempo, eseguono l'intero ciclo di vita dello sviluppo del software, compreso il lavoro con i team funzionali per trasformare i requisiti in caratteristiche, gestendo team e processi di sviluppo e conducendo i test e la manutenzione del software.3
Il lavoro di sviluppo del software non si limita ai programmatori o ai team di sviluppo. Professionisti come scienziati, fabbricanti di dispositivi e produttori di hardware creano codice software anche se non sono principalmente sviluppatori di software. Ciò non si limita ai settori tradizionali di tecnologia dell'informazione come le aziende di software o semiconduttori. Infatti, secondo il Brookings Institute (link esterno a ibm.com), quelle aziende "rappresentano meno della metà delle società che effettuano sviluppo del software".
È importante distinguere tra sviluppo del software personalizzato e sviluppo del software commerciale. Lo sviluppo del software personalizzato è il processo di progettazione, creazione, implementazione e manutenzione del software per un insieme specifico di utenti, funzioni o organizzazioni. Al contrario, il software commerciale off-the-shelf (COTS) è progettato per un ampio insieme di requisiti, il che consente di impacchettarlo e commercializzarlo e distribuirlo.
Lo sviluppo del software in genere prevede i seguenti passaggi:
Le fasi del processo di sviluppo del software rientrano nella gestione del ciclo di vita dell'applicazione (ALM). La soluzione IBM Engineering Management è un superset di ALM che permette la gestione dello sviluppo meccanico, elettrico e software in parallelo.
Le fasi del processo di sviluppo del software possono essere raggruppate nelle fasi del ciclo di vita, ma l'importanza del ciclo di vita è che viene ripetuto per consentire un miglioramento continuo. Ad esempio, i problemi degli utenti che emergono nella fase di manutenzione e supporto possono diventare requisiti all'inizio del ciclo successivo.
Lo sviluppo del software è importante perché è pervasivo. Come vice presidente e blogger di IBM, Dibbe Edwards sottolinea: "Il software è emerso come differenziatore chiave in molti prodotti, dalle automobili alle lavatrici e ai termostati, con un IoT (Internet of Thins) che li collega".
Alcuni esempi:
Utilizzare lo sviluppo del software per differenziare le marche e ottenere un vantaggio competitivo richiede competenza con le tecniche e le tecnologie che possono accelerare la distribuzione, la qualità e l'efficacia del software.
Una soluzione comprovata per le attività di modellazione e progettazione che aiuta a fornire sistemi e software di qualità superiore più velocemente.
Controllo avanzato della versione software, gestione dello spazio di lavoro, controllo delle risorse distribuito e supporto di sviluppo parallelo per singoli utenti e team per migliorare la produttività monitorando in modo automatico le modifiche alle risorse. Il software attiva una funzione di sospensione e ripristino virtualmente illimitata per gestire le interruzioni del lavoro.
Fornisce connessioni tra strumenti di IBM Engineering Lifecycle Management strumenti e strumenti di terze parti come Git, GitLib e GitHub per la gestione del controllo delle versioni del software.
Codice, contenuti, community e altro
Iscriviti agli argomenti che contano di più
Soddisfare esigenze aziendali complesse con velocità e agilità collegando l'utente agli strumenti di sviluppo del software
1 Software, Techopedia (link esterno a ibm.com)
2 Software integrato, Wikipedia (link esterno a ibm.com)
3 Software Engineer vs. Software Developer – What’s the Difference? Fullstack Academy (link esterno a ibm.com)
4 The Forrester Wave™: Low-Code development Platforms for AD&D Pros, Q4 201 John R. Rymer, Forrester Research, Inc. 23 October, 2017 (link esterno a ibm.com)