Close

Sviluppo software

Scopri gli elementi essenziali dello sviluppo software


Il software si è mangiato il mondo. Non molto tempo dopo la famosa affermazione di Marc Andreessen "Il software sta mangiando il mondo" nel 2011, oggi possiamo dire che il software ha inglobato il mondo. Nella moderna economia digitale ogni azienda è pervasa dal software. Come ha fatto notare l'ex CEO di Amazon, Jeff Bezos, probabilmente Amazon è il più grande retailer al mondo, eppure non è un'azienda di vendita al dettaglio, ma una società software. "Il nostro business non è il contenuto dei pacchi", ha detto, "ma il software che spedisce e fa recapitare i pacchi".

Simbolo dell'infinito DevOps

Cos'è lo sviluppo del software?

Lo sviluppo software riguarda la progettazione, la documentazione, la programmazione, i test e la manutenzione continua di un prodotto software. La combinazione di queste fasi crea una pipeline del flusso di lavoro, una sequenza di passaggi che, se seguiti, garantiscono prodotti software di alta qualità. Questa pipeline è nota come il ciclo di vita dello sviluppo software.

Nonostante le numerose variazioni possibili, il ciclo di vita dello sviluppo software comprende gli elementi fondamentali seguenti.


Fasi del ciclo di vita dello sviluppo software


Orbita lampadina

Ideazione

Questa fase comprende concezione, progettazione e definizione delle priorità. La metodologia Agile guida il processo di lavoro per il progetto. Il DevOps guida le pratiche di sviluppo e le pratiche operative. Durante questa fase, Confluence si rivela un ottimo strumento per lo sviluppo di documenti di ricerca sui prodotti e la condivisione di file di progettazione.

Flusso di lavoro semplice

Piano + roadmap

In questa fase si identificano gli stakeholder, si stabilisce il budget e si fa la richiesta per l'infrastruttura. I documenti di progettazione prodotti nella fase di ideazione sono suddivisi in task realizzabili. Jira Software e Trello gestiscono, monitorano e organizzano questi elenchi di task.

Salva codice

Codice, revisione e test

I team di sviluppo lavorano per creare un software pronto per la produzione che soddisfi i requisiti e le esigenze emerse dai feedback. Le pipeline CI/CD garantiscono un'esperienza di sviluppo efficiente. Bitbucket offre strumenti di revisione collaborativa del codice e pipeline CI/CD che si collegano al processo di revisione del codice.

Rilascio del codice

Distribuzione, rilascio e hosting

Una volta approvato e sottoposto a merge, il codice può essere rilasciato. Grazie alle pipeline CI/CD di Bitbucket, la distribuzione è semplice come il clic su un pulsante. Il codice utilizzato nell'ambiente di produzione reale avrà bisogno di una posizione in cui risiedere. Valuta la possibilità di utilizzare l'hosting nel cloud fornito da Amazon AWS, Google Cloud Platform o Microsoft Azure.

Ingranaggi

Supporto, operatività e manutenzione

Il supporto e la manutenzione sono elementi necessari per i progetti software attivi. Jira Service Management fornisce potenti strumenti per acquisire, valutare e risolvere le richieste di assistenza dei clienti.

error

Gestione degli imprevisti

La gestione degli incidenti è un processo usato da DevOps e team di operazioni IT che consente di rispondere agli eventi non pianificati o alle interruzioni del servizio allo scopo di ripristinarne il funzionamento. I team hanno bisogno di un metodo affidabile per definire le priorità degli imprevisti, risolverli più rapidamente e offrire un servizio migliore agli utenti.

Pratiche dell'intero ciclo di vita dello sviluppo software

CI/CD

Feedback continuo

I team dovrebbero valutare ciascun rilascio e generare report per migliorare i rilasci futuri, chiedere ai clienti di fornire degli input sul valore e l'impatto delle funzioni del prodotto e condividere con gli stakeholder risultati correlati al business. Raccogliendo feedback continui, i team possono migliorare i processi e offrire maggiore valore ai clienti.

Sicurezza

Sicurezza

A mano a mano che le applicazioni aumentano di complessità e scalabilità, la tradizionale sicurezza applicata al termine di un ciclo di rilascio non basta più a proteggere il software. Al contrario, la sicurezza dovrebbe essere inclusa durante l'intero ciclo di vita dello sviluppo software per ridurre al minimo le vulnerabilità del codice.

Caratteristiche fondamentali dello sviluppo software efficace


Agile

Agile è un approccio iterativo alla gestione dei progetti e allo sviluppo del software che aiuta i team a offrire valore ai clienti in modo più rapido e con meno problemi. Le metodologie Agile sono molto popolari nel settore del software poiché consentono ai team di essere intrinsecamente flessibili, ben organizzati e in grado di rispondere ai cambiamenti.

DevOps

DevOps è un insieme di pratiche, strumenti e una filosofia culturale che automatizza e integra i processi tra i team di sviluppo software e i team IT. Pone l'accento sull'empowerment, sulla comunicazione e la collaborazione tra team e sull'automazione tecnologica.

Continuous integration e continuous delivery (CI/CD)

La continuous integration è una pratica che prevede l'automatizzazione dell'integrazione delle modifiche del codice all'interno di un progetto software. Consente agli sviluppatori di eseguire frequentemente il merge delle modifiche al codice in un repository centrale in cui vengono eseguiti build e test.

La continuous delivery parte dalla continuous integration espandendosi tramite la distribuzione automatica delle modifiche del codice nell'ambiente di test/produzione. Segue una pipeline di continuous delivery in cui build, test e distribuzioni automatizzati vengono orchestrati come un unico flusso di lavoro di rilascio.

Microservizi

Un'architettura di microservizi, nota anche semplicemente come "microservizi", è un approccio alla compilazione di applicazioni come serie di servizi distribuibili in modo indipendente, decentralizzati e sviluppati in modo autonomo. Questi servizi sono debolmente accoppiati, distribuibili in modo indipendente e facilmente gestibili.

Tramite un'architettura di microservizi, gli sviluppatori possono organizzarsi in team più piccoli specializzati in servizi diversi, con diversi stack e distribuzioni disaccoppiate.

Agile

Agile è un approccio iterativo alla gestione dei progetti e allo sviluppo del software che aiuta i team a offrire valore ai clienti in modo più rapido e con meno problemi. Le metodologie Agile sono molto popolari nel settore del software poiché consentono ai team di essere intrinsecamente flessibili, ben organizzati e in grado di rispondere ai cambiamenti.

DevOps

DevOps è un insieme di pratiche, strumenti e una filosofia culturale che automatizza e integra i processi tra i team di sviluppo software e i team IT. Pone l'accento sull'empowerment, sulla comunicazione e la collaborazione tra team e sull'automazione tecnologica.

Continuous integration e continuous delivery (CI/CD)

La continuous integration è una pratica che prevede l'automatizzazione dell'integrazione delle modifiche del codice all'interno di un progetto software. Consente agli sviluppatori di eseguire frequentemente il merge delle modifiche al codice in un repository centrale in cui vengono eseguiti build e test.

La continuous delivery parte dalla continuous integration espandendosi tramite la distribuzione automatica delle modifiche del codice nell'ambiente di test/produzione. Segue una pipeline di continuous delivery in cui build, test e distribuzioni automatizzati vengono orchestrati come un unico flusso di lavoro di rilascio.

Microservizi

Un'architettura di microservizi, nota anche semplicemente come "microservizi", è un approccio alla compilazione di applicazioni come serie di servizi distribuibili in modo indipendente, decentralizzati e sviluppati autonomamente. Questi servizi sono debolmente accoppiati, distribuibili in modo indipendente e facilmente gestibili.

Tramite un'architettura di microservizi, gli sviluppatori possono organizzarsi in team più piccoli specializzati in servizi diversi, con diversi stack e distribuzioni disaccoppiate.

Strumenti di sviluppo software


Gli strumenti di sviluppo software possono essere utili in ogni fase del ciclo di vita dello sviluppo software, inclusa l'applicazione di pratiche Agile e DevOps, la gestione del codice, l'attivazione dell'automazione con CI/CD, la risposta agli imprevisti, i test e molto altro.

Logo di Jira Software

Jira Software

Jira Software è lo strumento di sviluppo software n. 1 usato dai team Agile. Jira Software è uno strumento per la gestione dei progetti che consente ai team Agile di pianificare, monitorare e rilasciare software di alta qualità in sicurezza.

Logo di Bitbucket

Bitbucket

Bitbucket è più di uno strumento di gestione del codice Git. Bitbucket mette a disposizione dei team uno spazio in cui pianificare i progetti, collaborare sul codice, effettuare test e implementarne i risultati.

logo di Compass

Compass

Compass è una piattaforma di esperienze per gli sviluppatori che facilita la navigazione all'interno dell'architettura distribuita, riunendo i dati separati dei risultati tecnici e dei team che vi collaborano in un'unica posizione centrale e ricercabile.

Atlassian Open DevOps

In Open DevOps, gli strumenti necessari per sviluppare e utilizzare il software sono già pronti all'uso. Open DevOps parte da Jira Software, Confluence, Bitbucket e Opsgenie. I team possono poi aggiungere con facilità gli strumenti che desiderano, come GitHub o GitLab, con un solo clic.

Atlassian Open DevOps

In Open DevOps, gli strumenti necessari per sviluppare e utilizzare il software sono già pronti all'uso. Open DevOps parte da Jira Software, Confluence, Bitbucket e Opsgenie. I team possono poi aggiungere con facilità gli strumenti che desiderano, come GitHub o GitLab, con un solo clic.