Come sicuramente saprai, nell'ingegneria del software, la gestione della configurazione del software (SCM) si riferisce a un processo per mantenere sistemi informatici, server e software in uno stato desiderato e coerente.
A volte chiamata gestione delle modifiche del software o automazione IT, l'idea è disporre di un sistema per monitorare e confrontare le modifiche apportate a un sistema durante tutto il processo di sviluppo software e identificare anche chi ha effettuato tali revisioni.
L'obiettivo è semplificare la gestione dei progetti, ridurre al minimo gli errori, aumentare la tracciabilità e migliorare la qualità complessiva del software.
I vantaggi di un processo SCM sono:
- Aggiornamenti multiutente: spesso molte persone lavorano allo sviluppo del software, il che comporta aggiornamenti e modifiche costanti. SCM consente di monitorare tutto il codice e le configurazioni distribuiti in produzione (ovvero un controllo della configurazione) e introduce anche la tracciabilità determinando quale collaboratore ha effettuato ciascuna modifica.
- Produttività: SCM migliora la produttività del software poiché garantisce un numero minimo di errori. Ad esempio, puoi sempre assicurarti che gli ambienti di test e di produzione corrispondano.
- Comunicazione e collaborazione: con SCM la comunicazione tra i membri del team è semplice, facilitando il lavoro congiunto degli stakeholder coinvolti nel progetto e il miglioramento della qualità del prodotto.
- Test delle piattaforme e dei sistemi operativi: assicurati che il software funzioni efficacemente su più piattaforme e sistemi operativi.
- Gestione delle modifiche: SCM facilita la gestione dei cambiamenti relativi a pianificazione, criteri e utenti.
- Controllo dei costi: monitorando i membri del team e il flusso di lavoro del progetto, SCM contribuisce a controllare i costi e ad aumentare l'efficienza.
In questo articolo ti illustrerò i diversi passaggi di un processo SCM, chi deve essere coinvolto e quali strumenti sono disponibili per aiutarti.
I 5 passaggi di un piano SCM
Il processo di gestione della configurazione del software è una serie di passaggi progettati per monitorare e gestire tutti i difetti, le risorse, i codici, i documenti, l'hardware e i budget durante un progetto.
SCM è un processo interdisciplinare che coinvolge persone a ogni livello, tra cui DevOps, sviluppatori, responsabili/proprietari del progetto, amministratori di sistema e tester.
1. Pianificazione e identificazione
Il primo passaggio del processo è la pianificazione e l'identificazione. In questo passaggio, l'obiettivo è pianificare lo sviluppo del progetto software e identificare gli elementi inclusi nell'ambito. Questo si ottiene organizzando riunioni e sessioni di brainstorming con il team per definire i criteri di base per il resto del progetto.
Parte di questo processo consiste nel determinare come procederà il progetto e nell'identificare i criteri di completamento. In questo modo, il team saprà riconoscere quando tutti gli obiettivi del progetto saranno stati raggiunti.
Le attività specifiche durante questo passaggio includono:
- Identificare elementi come casi di test, requisiti delle specifiche e moduli di codice
- Identificare ogni elemento di configurazione del software all'interno del processo
- Raggruppare i dettagli di base relativi a perché, quando e quali modifiche verranno apportate e chi sarà incaricato di realizzarle
- Creare un elenco delle risorse necessarie, come strumenti, file, documenti, ecc.
2. Controllo delle versioni e linea di base
Il passaggio relativo al controllo delle versioni e alla linea di base garantisce l'integrità continua del prodotto identificando una versione accettata del software. Questa linea di base viene designata in un momento specifico del processo SCM e può essere modificata solo tramite una procedura formale.
Lo scopo di questo passaggio è controllare le modifiche apportate al prodotto. Con lo sviluppo del progetto vengono stabilite nuove linee di base, dando origine a diverse versioni del software.
Questo passaggio comprende le seguenti attività:
- Identificare e classificare i componenti inclusi nel progetto
- Sviluppare un metodo per monitorare la gerarchia delle diverse versioni del software
- Identificare le relazioni essenziali tra i vari componenti
- Stabilire diverse linee di base per il prodotto, comprese le linee di base di sviluppo, funzionale e del prodotto
- Sviluppare uno schema di etichettatura standardizzato per tutti i prodotti, le revisioni e i file, in modo che tutti siano allineati.
La definizione di una linea di base per un attributo del progetto impone l'attuazione di processi formali di controllo delle modifiche della configurazione nel caso in cui tali attributi vengano modificati.
3. Controllo delle modifiche
Il controllo delle modifiche è il metodo utilizzato per garantire che tutte le modifiche apportate siano coerenti con il resto del progetto. Disporre di questi controlli aiuta a garantire la qualità e l'approvazione e il rilascio delle nuove baseline. Il controllo delle modifiche è essenziale per il completamento con successo del progetto.
In questa fase, le richieste di modifica delle configurazioni vengono inviate al team e approvate o respinte dal responsabile della gestione della configurazione del software. I tipi di richiesta più comuni consistono nell'aggiunta o nella modifica di vari elementi di configurazione oppure nella modifica delle autorizzazioni degli utenti.
Questa procedura include:
- Controllare le modifiche ad hoc richieste dal cliente
- Verificare il merito della richiesta di modifica esaminando l'impatto complessivo che avrà sul progetto
- Apportare le modifiche approvate o spiegare perché le richieste di modifica sono state respinte.
4. Contabilità dello stato della configurazione
Il passaggio successivo consiste nel garantire che il progetto si sviluppi secondo il piano, effettuando test e verifiche in base alle baseline predeterminate. Ciò implica l'esame delle note di rilascio e dei documenti correlati per assicurarsi che il software soddisfi tutti i requisiti funzionali.
La contabilità dello stato della configurazione tiene traccia di ogni versione rilasciata durante il processo, valutando cosa c'è di nuovo in ciascuna versione e perché le modifiche erano necessarie. Alcune delle attività previste in questa fase includono:
- Registrare e valutare le modifiche apportate da una baseline alla successiva
- Monitorare lo stato e la risoluzione di tutte le richieste di modifica
- Mantenere la documentazione di ogni modifica apportata in seguito alle richieste di modifica e per raggiungere un'altra baseline
- Controllare le versioni precedenti per l'analisi e i test.
5. Audit e revisioni
Il passaggio finale consiste in una revisione tecnica di ogni fase del ciclo di vita dello sviluppo del software. Gli audit e le revisioni esaminano il processo, le configurazioni, il flusso di lavoro, le richieste di modifica e tutto ciò che è stato impiegato nello sviluppo di ciascuna baseline durante lo sviluppo del progetto.
Il team esegue molteplici revisioni dell'applicazione per verificarne l'integrità e prepara inoltre la documentazione essenziale di accompagnamento, come note di rilascio, manuali utente e guide all'installazione.
Le attività previste in questa fase includono:
- Assicurarsi che gli obiettivi stabiliti nella fase di pianificazione e identificazione siano raggiunti
- Garantire che il software sia conforme agli standard di controllo della configurazione identificati
- Assicurarsi che le modifiche rispetto alle baseline corrispondano ai report
- Convalidare che il progetto sia coerente e completo in base agli obiettivi del progetto.
A differenza dei sistemi di file tradizionali, un software specializzato per la gestione dei database può offrire funzionalità avanzate come l'integrità e la sicurezza dei dati, fondamentali per una gestione efficace della configurazione del software.
Chi è coinvolto nel processo di configurazione del software?
Il processo SCM è multidisciplinare e coinvolge praticamente ogni membro del team di sviluppo del software.
Responsabile della configurazione
Il responsabile della configurazione ha il compito di determinare chi è responsabile di cosa durante il processo di sviluppo. Si assicura che tutti seguano il processo SCM nell'intero progetto e ha l'ultima parola su tutte le richieste di modifica.
Responsabile del progetto
Il ruolo del responsabile del progetto è fondamentale per il processo SCM. Stabilisce le tempistiche del progetto per garantire il rispetto delle scadenze di completamento e produce inoltre report sull'avanzamento del team. Un altro compito importante del responsabile del progetto è assicurarsi che ogni membro del team segua le linee guida predeterminate per la creazione, la modifica e il test del software.
Sviluppatori software
Gli sviluppatori sono responsabili della scrittura del codice durante lo sviluppo e dell'attuazione delle richieste di modifica approvate.
Revisore
Questa figura è responsabile di tutti gli audit e delle revisioni e deve assicurarsi che il rilascio finale sia completo e coerente.
Quali sono i vantaggi dell'utilizzo degli strumenti di gestione della configurazione?
Esistono numerosi strumenti disponibili per facilitare il processo di gestione della configurazione del software. Lo scopo di questi strumenti è automatizzare le attività tradizionalmente manuali, consentendo una maggiore accuratezza, velocità e controllo. Più specificamente, possono aiutare con:
- Avvisi e report: Un buon strumento SCM fornirà avvisi e report in caso di deviazioni dalla baseline concordata. Questi dati verranno trasmessi quasi in tempo reale, consentendo ai responsabili di agire rapidamente se qualcosa prende una direzione errata.
- Monitoraggio delle modifiche: Gli strumenti SCM monitoreranno automaticamente le modifiche apportate ai server o alle applicazioni e consentiranno anche l'inserimento manuale di tali dati. Il controllo delle modifiche può essere effettuato anche tramite il monitoraggio degli output degli script.
- Confronti delle configurazioni: I migliori strumenti di gestione della configurazione del software forniranno un modo per identificare le differenze tra le configurazioni.
- Risoluzione dei problemi più rapida: Errori, passi falsi e problemi vengono identificati rapidamente, così gli sviluppatori possono intervenire prima che il problema si aggravi.
- Monitoraggio dell'inventario: La maggior parte degli strumenti SCM offre un modo per monitorare le risorse hardware e software, così non è necessario mantenere un elenco manuale.
- Gestione delle patch: Gli strumenti SCM possono aiutare a monitorare tutti i dettagli relativi alla gestione delle patch durante la distribuzione del software aggiornato.
Esistono svantaggi nell'utilizzo di uno strumento di gestione della configurazione del software?
Prima di adottare uno strumento SCM, è necessario considerare alcuni aspetti, tra cui:
- Dispendio di risorse: È necessario disporre delle risorse per supportare il processo dall'inizio alla fine
- Limiti di conoscenza: Tutte le persone coinvolte devono avere una conoscenza approfondita degli strumenti di gestione del software utilizzati
- Svantaggio delle SMB: L'entità di ciò che è necessario per utilizzare efficacemente questi strumenti può essere difficile da sostenere per una piccola impresa
- Specifiche hardware: Per consentire al processo di funzionare senza problemi è necessario disporre di hardware veloce e altamente configurato.
Considerazioni finali sulla gestione della configurazione del software
Qui sopra ho presentato una panoramica generale di ciò che è necessario sapere per configurare un processo di gestione della configurazione del software per monitorare, controllare e gestire i propri progetti.
Gli strumenti SCM, come Ansible o TeamCity, aiutano ad automatizzare molti aspetti del processo SCM e possono offrire un ottimo ritorno sull'investimento. È possibile consultare la nostra selezione nell'articolo sui 10 migliori strumenti di gestione della configurazione del software.
Il mondo della gestione della configurazione del software e della QA si sta sviluppando rapidamente. Iscriviti alla newsletter di The QA Lead per ricevere direttamente nella tua casella di posta altri utili suggerimenti, trucchi e strumenti.
Oppure, continua a imparare ascoltando questo podcast: LA GENERAZIONE DELL'AUTOMAZIONE AUTONOMA E IL SUO ASPETTO (CON BERTOLD KOLICS DI MABL) o leggendo questo elenco: I 10 STRUMENTI PIÙ RECENTI PER IL TESTING DEL SOFTWARE UTILIZZATI DAI PROFESSIONISTI QA
