Teoria Locale

PROBLEMI DI RIFERIMENTO

Quando durante la vita di un’applicazione non si è intervenuti adeguatamente per rallentare il degrado della qualità e/o l’aggiornamento delle tecnologie per il miglioramento della qualità si ha un’alta probabilità di riscontrare i seguenti problemi:

  • manutenzione diseconomica talmente complessa che è alta la probabilità sia di lasciare disseminati difetti che si manifesteranno come malfunzionamenti durante l’esercizio della stessa sia di creare regressioni;
  • la qualità avvertita dall’utilizzatore diminuisce continuamente nel tempo;
  • usabilità e esperienza d’uso sono difficilmente migliorabili, aumentando così la probabilità di peggiorare il posizionamento competitivo dell’applicazione e con esso anche quello dell’azienda produttrice.

COSTRUTTI

Copertura del codice. La quantità di codice che è stato attraversato dai casi di test previsti nei piani di test eseguiti.

Costi di manutenzione. Impegno-persona richiesto per realizzare le correzioni e/o le evoluzioni dell’applicazione.

Esperienza d’uso. Comprende tutti gli aspetti dell’interazione tra l’utente finale l’applicazione e i suoi servizi. Essa estende il concetto di usabilità che è più tecnico al livello delle emozioni che l’utilizzatore prova ad utilizzare l’applicazione. Per conferire un buon livello di user experience, ad un’applicazione servono molteplici aspetti e discipline, tra cui ingegneria, marketing, grafica e industrial design e design dell’interfaccia. Le caratteristiche specifiche della esperienza d’uso sono:

  • Usabilità: Comprensibile facile da apprendere e da utilizzare.
  • Piacevolezza: tutti gli elementi del design (immagine, identità, brand) sono utilizzati per motivare all’uso e renderlo prezioso ed interessante.
  • Efficienza: i servizi dell’applicazione sono avvertiti come utili, soddisfano i bisogni reali, pratici da utilizzare sono ben organizzati nell’applicazione così che sono rapidamente raggiungibili.
  • Dipendibilità: l’applicazione soddisfa le aspettative è prevedibile e sicura e potenzia l’utilizzatore nelle sue attività.
  • Novità: l’applicazione è avvertita come innovativa e vantaggiosa
  • Attrattività: piacevolezza ed amichevolezza nell’interazione.

Failure/Malfunzionamento. Incapacità di un sistema software o di un componente di eseguire le sue funzioni come è prescritto nelle specifiche dei requisiti descritti nel BRD. Durante lo sviluppo, i tester osservano solitamente i malfunzionamenti.

Fault/Difetto. Informazioni, dati, asserzioni o istruzioni incorrette in un documento o nel codice oppure un comportamento incorretto nella esecuzione di una attività, di un metodo o di una tecnica in un processo software. Un difetto viene introdotto nel software a seguito di un errore. È un’anomalia che può causare un comportamento del software prodotto non conforme alle sue specifiche.

Impatto sul trasferimento agli utilizzatori. Quanto gli utilizzatori devono impegnarsi per raggiungere un buon livello di efficienza nell’uso dell’applicazione e quante attività sono necessarie per supportare gli utilizzatori nel lor impegno.

Modernizzazione. Modifiche ad una applicazione software per aggiornare: le tecnologie utilizzate per lo sviluppo (per esempio: linguaggio di programmazione, framework di sviluppo, pattern, dbms ecc.), la sua struttura utilizzando principi di ingegneria del software aggiornati e superando eventuali problemi di manutenibilità e testabilità; l’interazione con gli utilizzatori; la infrastruttura ICT su cui opera. Nella modernizzazione non sono cambiate le specifiche funzionali dell’applicazione.

Qualità. Insieme di caratteristiche attese da tutte le parti interessate del software.

Qualità avvertita dall’utilizzatore. Livello di qualità avvertito dall’utente. Dipende da quanto l’applicazione è affidabile e sia in grado di evolvere con la tempestività richiesta dalla frequenza di cambiamento dei bisogni dell’utilizzatore.

Usabilità. Indicatore di quanto l’applicazione è semplice da usare. Più precisamente, delinea il grado di apprendibilità e di efficienza al fine dell’utilizzo. Più dettagliatamente, le componenti dell’usabilità sono:

  • Facilità di apprendimento: quanto velocemente l’utente riesce a scegliere il compito che l’applicazione deve compiere.
  • Facilità di memorizzazione: quanto facile sia raggiungere un buon livello di efficienza anche dopo un lungo periodo in cui non si è utilizzata l’interfaccia.
  • Controllo degli errori: probabilità con cui è l’utilizzatore incorre in errori o in blocchi di navigazione e facilità di recupero degli errori o di sblocco della navigazione.
  • Grado di soddisfazione: facilità, logicità e intuibilità dell’utilizzo.

PROPOSIZIONI

  1. La modernizzazione del software è in grado di guadagnare in qualità e far diminuire i costi di manutenzione.
  2. La modernizzazione del software è in grado di migliorare la usabilità e la esperienza d’uso.
  3. La modernizzazione dell’applicazione migliora la qualità avvertita dall’utilizzatore.
  4. La modernizzazione crea un leggero impatto sul trasferimento agli utilizzatori della applicazione modificata.

SPIEGAZIONI

  1. Con la modernizzazione si possono utilizzare principi della ingegneria del software aggiornati che migliorano la struttura e la qualità del software da dove deriva anche la diminuzione dei costi in manutenzione.
  2. Dalla storia dell’applicazione si ha un patrimonio di conoscenze sui punti di debolezza che gli utilizzatori avvertono sulla usabilità e sulla esperienza d’uso quindi si può riprogettare la comunicazione dell’applicazione con l’utente, l’organizzazione dei servizi resi agli utilizzatori e gli elementi di design dell’applicazione utilizzando le tecnologie aggiornate di comunicazione persona-applicazione, di design dei supporti all’immagine dell’applicazione verso i suoi utenti per superare i punti di debolezza avvertiti.
  3. Con il miglioramento della struttura dell’applicazione è possibile progettare test che aumentino la copertura del codice, ottimizzando i costi del test, che diminuisce il numero di difetti disseminati nell’applicazione con conseguente diminuzione di malfunzionamenti e, quindi, aumento della qualità avvertita.
  4. Il trasferimento della applicazione modernizzata è economico perché il comportamento del software non è cambiato quindi non c’è da apprendere nulla di nuovo circa il software; altresì l’interfaccia è cambiata ma essendo migliorata l’esperienza utente gli utilizzatori usano più volentieri l’applicazione ed essendo migliorata l’usabilità si adeguano rapidamente ai cambiamenti.

RISCHI

  1. La necessità di aggiornare le tecnologie di sviluppo del software potrebbero creare “polluzione” tecnologica, ovvero l’uso di svariate tecnologie anche concorrenti nella stessa impresa. Questo creerebbe da un lato la compartimentazione delle competenze che a sua volta irrigidirebbe la rotazione degli sviluppatori da un comparto all’altro dello sviluppo, dall’altro la necessità di seguire le evoluzioni di molte tecnologie che avrebbe un enorme costo e una bassa efficacia per i tempi disponibili per l’aggiornamento di ogni persona. Per mitigare questo rischio è opportuno che si scelgano, attraverso la validazione empirica, le tecnologie da introdurre per bisogni evitando di introdurre contemporaneamente tecnologie concorrenti e le tecnologie introdotte devono essere utilizzate da tutti coloro che hanno i bisogni che hanno indotto l’introduzione della nuova tecnologia. Per completezza, il bisogno di una nuova tecnologia può essere elicitato dal monitoraggio della qualità oppure da proposte degli sviluppatori.
  2. L’uso contemporaneo di diverse tecnologie, vecchie ed innovative, per tutto il tempo in cui le vecchie tecnologie non siano state completamente disusate grazie al ritiro o alla modernizzazione delle applicazioni che le usano. Questa situazione porterebbe a carenze di competenze in taluni progetti. Per mitigare questo rischio è necessario introdurre innovazioni tecnologiche gradualmente ed ogni volta che si introduce una innovazione è necessario assicurarsi di preparare un numero sufficiente di persone competenti nella nuova tecnologia attraverso la formazione.
  3. Modernizzare senza avere un piano di obiettivi chiaro potrebbe generare diseconomie per lavorazioni che non apportino nessun miglioramento all’applicazione. La mitigazione di questo rischio richiede che prima di iniziare un progetto di modernizzazione siano rilevati i reali bisogni di tale processo. Per reali bisogni si intendono quelli che apportano un valore all’applicazione.

Prospettive

Studio di processi di modernizzazione a partire dai bisogni reali con modelli che guidino gli sviluppatori nel decidere dove e come modernizzare le applicazioni legacy e quali tecnologie utilizzare nella modernizzazione.