Home
topics
sviluppo di software
Lo sviluppo software si riferisce a una serie di attività informatiche dedicate al processo di creazione, progettazione, implementazione e supporto del software.
Per software si intende la serie di istruzioni o programmi che indicano a un computer cosa fare. È indipendente dall'hardware e rende programmabili i computer. Esistono fondamentalmente tre tipi di software:
Software di sistema: fornisce le funzioni principali come sistemi operativi, gestione del disco, utility, gestione dell'hardware e altre necessità operative.
Software di programmazione: fornisce ai programmatori strumenti come editor di testo, compilatori, linker, debugger e altri strumenti per la creazione di codice.
Software applicativo (applicazioni o app): consente agli utenti di eseguire attività. Ne sono esempi le suite di produttività per ufficio, i software di gestione dei dati, i lettori multimediali e i programmi di sicurezza. Il termine applicazioni si riferisce anche alle applicazioni per il web e per i dispositivi mobili, come quelle che si usano per fare acquisti su Amazon.com, socializzare con Facebook o pubblicare foto su Instagram.1
Un quarto tipo di software può essere considerato il cosiddetto software embedded. I software di sistema embedded si usano per controllare macchine e dispositivi non tipicamente considerati computer, come ad esempio reti di telecomunicazioni, automobili, robot industriali e altro ancora. Questi dispositivi e il relativo software possono essere connessi nell'ambito dell'Internet of Things (IoT).2
Lo sviluppo del software viene condotto principalmente dai programmatori, dagli ingegneri informatici e dagli sviluppatori di software. Sono figure che interagiscono e si sovrappongono, e le dinamiche tra di loro variano notevolmente tra i vari reparti e comunità di sviluppatori.
I programmatori scrivono il codice sorgente per la programmazione dei computer per attività specifiche come l'unione di database, l'elaborazione di ordini online, l'instradamento di comunicazioni, la conduzione di ricerche o la visualizzazione di testo e grafica. Di solito, i programmatori interpretano le istruzioni fornite dagli sviluppatori di software e dagli ingegneri informatici e per attuarle utilizzano linguaggi di programmazione come C++ o Java.
Gli ingegneri informatici applicano i principi ingegneristici per creare software e sistemi per la risoluzione di problemi. Utilizzano il linguaggio di modellazione e altri strumenti per ideare soluzioni che spesso possono essere applicate ai problemi in modo generale, anziché limitarsi a soluzioni applicabili solo a un'istanza o a un cliente specifico. Le soluzioni di ingegneria informatica aderiscono al metodo scientifico e devono essere utilizzabili nel mondo reale, per esempio con ponti o ascensori. Man mano che i prodotti sono diventati sempre più intelligenti, grazie all'aggiunta di microprocessori, sensori e software, la responsabilità degli ingegneri informatici è aumentata. Infatti, non solo il numero dei prodotti che si basano sul software per differenziarsi sul mercato è in continua crescita, ma il loro sviluppo software deve essere coordinato con l'attività di sviluppo meccanico ed elettrico.
Gli sviluppatori software svolgono un ruolo meno formale rispetto agli ingegneri e possono essere strettamente coinvolti in aree specifiche del progetto, inclusa la scrittura di codice. Allo stesso tempo, guidano l'intero ciclo di vita dello sviluppo software, compresa la collaborazione con i vari team funzionali per trasformare i requisiti in funzioni, gestire i team e i processi di sviluppo e condurre le operazioni di test e manutenzione del software.3
L'attività di sviluppo del software non è limitata agli sviluppatori o ai team di sviluppo: anche professionisti come scienziati, fabbricanti di dispositivi e produttori di hardware creano codice software, benché non siano in primo luogo sviluppatori. E nemmeno si limita ai tradizionali settori informatici, come le aziende produttrici di software o di semiconduttori. Tant'è che, secondo il Brookings Institute (link esterno a ibm.com), queste aziende “rappresentano meno della metà delle aziende che si occupano di sviluppo software”.
Una distinzione importante si ha tra lo sviluppo di software personalizzato e quello di software commerciale. Per sviluppo di software personalizzato si intende il processo di progettazione, creazione, implementazione e gestione di software destinato a un gruppo specifico di utenti, funzioni o organizzazioni. Per contro, il software commerciale pronto all'uso (COTS) viene progettato per soddisfare un'ampia serie di requisiti e può dunque essere confezionato, commercializzato e distribuito sul mercato.
Scopri in che modo il Desktop as a Service (DaaS) consente alle aziende di raggiungere lo stesso livello di prestazioni e sicurezza della distribuzione delle applicazioni on-premise.
Lo sviluppo di software tipicamente prevede le seguenti fasi:
Le fasi del processo di sviluppo del software rientrano nella gestione del ciclo di vita delle applicazioni (ALM). La soluzione IBM® Engineering Management è un superset di ALM che consente la gestione in parallelo dello sviluppo meccanico, elettrico e software.
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 di software è importante anche perché è pervasivo. Dibbe Edwards, vice presidente e autrice per il blog di IBM, sottolinea: "Il software è emerso come differenziatore chiave in molti prodotti, dalle automobili alle lavatrici, ai termostati, connessi sempre più attraverso l'Internet of Things".
Qualche esempio:
Utilizzare lo sviluppo di software per differenziare i brand e ottenere un vantaggio competitivo richiede la padronanza delle tecniche e delle tecnologie che possono accelerare la distribuzione, la qualità e l'efficacia del software.
Che si tratti di implementazione, creazione di nuove applicazioni cloud-native, refactoring o replatforming di applicazioni esistenti, Cloud Pak for Applications (CP4Apps) ha tutto ciò che serve.
Automatizza il processo di distribuzione del software per aumentare la produttività e l'efficienza operativa.
Passa senza soluzione di continuità dai requisiti alla progettazione dei sistemi, al workflow e alla gestione dei test, con estensioni alle funzionalità degli strumenti di gestione del ciclo di vita per uno sviluppo avanzato di sistemi complessi.
Codice, contenuti, community e altro ancora.
Iscriviti agli argomenti che ti interessano di più.
Soddisfa esigenze aziendali complesse in modo rapido e agile attraverso la connessione dei tuoi strumenti di sviluppo software.
Oggi, la ricerca nel campo delle scienze informatiche è incentrata sulla scoperta di innovazioni rivoluzionarie nell'ambito dell'automazione, dell'elaborazione delle informazioni e del calcolo.
1 Software, Techopedia (link esterno a ibm.com)
2 Embedded software, 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)