Manutenzione software: tipi, tecniche e gestione del cambiamento per migliorare la qualità
Classificato in Informatica
Scritto il in
italiano con una dimensione di 5,97 KB
Tipi di manutenzione
Perfettiva: sono le azioni intraprese per migliorare i sistemi interni di qualità in tutti i suoi aspetti: la ristrutturazione, una più chiara definizione del codice di sistema e l'ottimizzazione delle prestazioni e dell'efficienza.
Evolutiva: sono le aggiunte, le modifiche e le soppressioni necessarie in un prodotto software per coprire l'ampliamento o il cambiamento delle esigenze degli utenti.
Adattativa: i cambiamenti interessano gli ambienti in cui funziona il sistema; per esempio, modifiche di configurazione hardware, software, gestori di database, comunicazioni, ecc.
Correttiva: le modifiche necessarie per correggere gli errori del prodotto software.
Supporto tecnico
Nell'ambito delle tecniche di ingegneria del software, il supporto tecnico fornisce soluzioni per affrontare la manutenzione in modo che il loro impatto sul costo del ciclo di vita sia ridotto.
Le soluzioni tecniche possono essere di tre tipi
- Reverse engineering: analisi di un sistema per identificare i suoi componenti e le loro relazioni e per creare rappresentazioni del sistema in altra forma o a un livello superiore di astrazione.
- Reengineering: modifica di un prodotto software, o di alcuni componenti, attraverso l'analisi del sistema esistente e il reverse engineering per la fase di ricostruzione, utilizzando strumenti di ingegneria diretta, in modo che l'evoluzione vada verso una maggiore facilità in termini di manutenzione, riuso, comprensione ed evoluzione.
- Ristrutturazione del software: cambiamento della rappresentazione di un prodotto software, mantenendo lo stesso livello di astrazione.
Obiettivi di queste tecniche
Fornire metodi per ricostruire il software, sia mediante riprogrammazione, rivestimento, riprogettazione o rielaborazione di alcune caratteristiche del prodotto.
Definizioni e concetti correlati
- Direct Engineering: corrisponde allo sviluppo del software tradizionale.
- Reverse engineering: il processo di analisi di un sistema per identificarne i componenti e le interrelazioni e per creare rappresentazioni del sistema in altra forma o a un livello superiore di astrazione.
- Reengineering: l'esame e l'alterazione di un sistema per ricostruirlo in una nuova forma e per attuarne successivamente la realizzazione.
- Ristrutturazione: modifica del software per renderlo più facile da comprendere e modificare.
- Remodularizzazione: modifica della struttura modulare di un sistema in modo da ottenere una nuova struttura conforme ai principi della progettazione modulare.
- Analisi della facilità di manutenzione: di solito si concentra sulla manutenzione relativamente a pochi moduli critici del sistema.
- Display: il processo più lungo per la comprensione del software.
- Misurazione e analisi: tecniche importanti per studiare alcune proprietà dei programmi.
Analisi dei casi
Per eseguire qualsiasi tipo di manutenzione dovrebbero essere presi in considerazione i seguenti aspetti:
Costi e conseguenze della manutenzione
- Costi di manutenzione.
- Le opportunità di sviluppo perse.
- Insoddisfazione del cliente quando non è possibile rispondere in un tempo accettabile a una richiesta di riparazione ragionevole.
- Errori nascosti che emergono quando si modifica il software: durante la manutenzione si può ridurre la qualità complessiva del prodotto.
- Effetto su altri progetti di sviluppo quando il modello è quello di appoggiarsi a risorse esterne o di lasciare incompiuti altri lavori per rispondere alle esigenze di manutenzione.
- Costo delle attività di manutenzione.
Difficoltà della manutenzione
Aspetti tecnici e proposte pratiche per metriche EV
Strumenti e tecniche utili:
Analisi costi-benefici, Use Case, catalogazione, Class Diagram, schema di decomposizione funzionale, Data Flow Diagram, Object Interaction Diagram, schema di rappresentanza, analisi dell'incidenza su un'organizzazione a matrice, modello Entità/Relazioni esteso, pianificazione, presentazioni e workshop.
Processi di gestione e controllo del cambiamento
I processi di gestione e controllo del cambiamento sono la chiave per l'evoluzione e lo sviluppo del sistema. Consentono di controllare le varie versioni e le modifiche a un sistema durante il suo ciclo di vita.
Principali attività nella gestione del cambiamento
- Introdurre le richieste di modifica.
- Registrare queste richieste e fornire rapporti sul loro stato.
- Fornire un registro di controllo delle modifiche.
- Contribuire alla gestione del progetto.
- L'analisi di impatto determina la portata dei cambiamenti necessari come base per l'attuazione.
Le principali attività di valutazione di impatto
- Valutare l'impatto delle richieste di modifica su impianti esistenti, altri sistemi, hardware, strutture di dati, ecc.
- Sviluppare una stima preliminare delle risorse necessarie.
- Documentare la portata del cambiamento e aggiornare la richiesta effettuata.
Gestione della manutenzione
Manutenzione del software: tutte le attività necessarie per fornire supporto al software di sistema. Queste attività sono svolte sia prima che dopo la consegna.
Attività di pre-consegna
Le attività di pre-consegna includono la pianificazione per le operazioni post-consegna, la pianificazione del supporto e la determinazione della logistica.
Attività post-consegna
Le attività post-consegna comprendono la modifica del software, la formazione degli utenti e la gestione di un help desk.