Il Processo Software rappresenta l’insieme delle attività produttive che vengono realizzate durante tutte le fasi del Ciclo di Vita del Software.
Esiste un legame empirico tra la qualità del processo software e la qualità dei prodotti software.
Migliorare il processo software consente, tra l’altro, di migliorare la qualità dei prodotti software risultanti, nonchè di ridurre costi e tempi.
Esistono, comunque, anche altri attributi di qualità di un processo che possono essere migliorati.
Misurazione del processo
Vengono misurati attributi di qualità del processo.
Analisi del processo
Il processo di sviluppo utilizzato è analizzato allo scopo di trovare debolezze e colli di bottiglia.
Cambiamento del processo
Introduzione dei cambiamenti individuati in fase di analisi nel processo.
Per sistemi di grandi dimensioni, la qualità del processo influenza sicuramente la qualità del prodotto.
Per piccoli progetti, la capacità degli sviluppatori è invece il fattore determinante.
La tecnologia utilizzata è fattore importante soprattutto nei piccoli progetti.
In ogni caso, limitazioni sul tempo di realizzazione influiranno di sicuro negativamente sulla qualità del prodotto risultante.
Le misurazioni di processo e di prodotto sono fondamentali per il miglioramento dei processi.
È auspicabile la raccolta di misure quantitative dei dati del processo.
È molto difficile fare misure quando non c’è chiarezza nei processi adottati. La definizione del processo è dunque un prerequisito fondamentale per la sua misura.
Misurare i processi consente di pianificare il loro miglioramento.
Le misure sono però solo in grado di supportare il processo di miglioramento, non di guidarlo; il processo di miglioramento è comunque un processo organizzativo.
… in generale un amplissimo numero di metriche può essere proposto; per legare I valori riscontrati per tali metriche con gli obiettivi di qualità del prodotto e del processo che si vogliono perseguire, è ancora possibile utilizzare l’approccio GQM (Goal/ Questions/ Metrics).
Goals
Quali sono gli scopi che l’organizzazione cerca di ottenere? L’obiettivo del miglioramento del processo è di soddisfare questi scopi (es. Migliorare la produttività dei programmatori, tempi di sviluppo, affidabilità del prodotto…).
Questions
Servono a specificare meglio gli obiettivi. Es. Come aumentare il numero di LOC controllate via debug?come ridurre I tempi per individuare I requisiti? Come valutare l’affidabilità?
Metrics
Misure da prelevare per rispondere alle domande. Es. Produttività del programmatore espressa in LOC/ giorno, numero di modifiche ai requisiti richieste, numero di test richiesti per scatenare un malfunzionamento.
[V. Basili, D. Rombach, The TAME Project: towards improvement oriented software environments, IEEE Transactions on Software Engineering]
L’analisi studia i processi esistenti per comprenderne le attività.
Il passo successivo alla comprensione consiste nel produrre un modello astratto del processo (in genere mediante un grafico). Tale modello può includere diverse viste sul processo (attività, deliverables, etc.).
Successivamente, si analizza il modello per scoprirne i problemi. A tal fine può essere necessario discutere delle attività con le persone coinvolte, per individuare problemi e possibili soluzioni.
Per ottenere il miglioramento di un processo, può essere necessario modificarlo.
Tra le possibili modifiche al processo:
Il cambiamento dovrebbe essere guidato da studi che ci permettono di prevedere il raggiungimento di benefici in termini di goals misurabili.
1. Identificare i miglioramenti:
Definire le proposte in grado di rimuovere colli di bottiglia, debolezze (rispetto a qualità/ tempistica/ costi) del processo.
2. Assegnare priorità ai miglioramenti.
Stabilire le priorità delle modifiche in base ai costi, impatti, dipendenze…
3. Introduzione delle modifiche.
Si attuano le modifiche, ossia nuovi metodi, tecniche, strumenti e procedure sono introdotti ed integrati con le altre attività del processo.
4. Addestramento riguardo alle modifiche.
Occorre istruire il personale riguardo alle modifiche introdotte, al fine di trarre un pieno beneficio dalla loro introduzione.
5. Raffinamento delle modifiche.
Dopo l’introduzione delle modifiche, sarà necessaria una fase di rifinitura delle modifiche stesse, al fine di superare gli inevitabili problemi che potranno verificarsi.
Negli anni ‘90 prese piede la moda della re-ingegnerizzazione dei processi aziendali [Hammer, Reengineering Work: Don't automate, obliterate. Harward Business Review, July-Aug. 1990, pp. 104-112.]
Venivano proposte modifiche radicali ai processi aziendali che spesso non tenevano conto delle esigenze delle persone coinvolte!
Il fallimento del BPR fu largamente dovuto alla resistenza alle modifiche fatta dalle persone non coinvolte nel processo di modifica stesso.
2. Ciclo di Vita e Processi Software
3. Processi per lo sviluppo rapido del software
4. Sviluppo Agile del Software
5. Test Driven Development (TDD)
7. Component Based Software Engineering (CBSE): Generalità
8. Component Based Software Engineering (CBSE): Il processo di svi...
9. Ingegneria del Software orientato ai Servizi
10. Ingegnerizzazione dei Servizi
11. I Processi di Manutenzione del Software
12. Reengineering, Refactoring e Reverse Engineering del Software
13. Verifica e Convalida del Software. Richiami e concetti di base ...
14. Tecniche di Testing Dinamico
15. Testing di Sistemi Object Oriented
16. Automazione del testing e Analisi Mutazionale
17. Tecniche di Analisi Statica del codice e il Debugging
18. Stima dei costi nei progetti Software
19. Il Modello COCOMO per la stima dei costi Software – La gestio...
20. Gestione e Miglioramento dei Processi di Produzione del Softwar...
21. La Valutazione della Qualità dei Processi Software – Il Capa...