Operazione: Implementazione degli elementi di progettazione
Questo compito illustra come produrre un'implementazione per le parti di un progetto (quali classi, realizzazioni di casi d'uso, o entità del database), o correggere uno o più errori. Il risultato è solitamente un nuovo o modificato codice sorgente e file di dati, considerati generalmente come elementi di implementazione.
Discipline: Implementazione
Relazioni
Passi
Preparazione dell'implementazione
Comprensione del compito/problema

Prima di avviare il compito di implementazione, bisogna avere ben chiaro l'ambito, così come specificato nella assegnazione del lavoro e nei piani di iterazione. Un compito di implementazione può essere concentrato sul raggiungimento di funzionalità specifiche (quali l'implementazione di una realizzazione di caso d'uso di progettazione o la correzione di un errore) che coinvolgono l'implementazione di svariati elementi di progettazione che contribuiscono alla funzionalità in oggetto. In alternativa può essere concentrato su un determinato elemento di progettazione, quale il sottosistema di progettazione o la classe di progettazione, per implementarlo nell'area richiesta per l'iterazione corrente.

Configurazione dell'ambiente di sviluppo

Questo compito si concretizza nella realizzazione o nell'aggiornamento di uno o più file (elementi di implementazione). Come parte dell'implementazione bisogna accertarsi che il proprio ambiente di sviluppo sia configurato in modo corretto, che siano disponibili le corrette versioni degli elementi, entrambi gli elementi da aggiornare, e qualsiasi altro elemento richiesto per la compilazione ed il test dell'unità. Bisogna conoscere e seguire le procedure di configurazione e gestione delle modifiche del progetto, che descrivono come vengono controllate, come gli vengono assegnate le versioni, e come vengono distribuite per l'integrazione.

Analisi delle implementazioni esistenti

Prima di implementare una classe da zero, considerare la possibilità che esista del codice che si può riutilizzare o adattare. La conoscenza di dove verrà adattata l'implementazione all'interno dell'architettura e progettazione del resto del sistema può aiutare nell'identificazione di tali opportunità di riutilizzo, così come assicurare che l'implementazione si adatti al resto del sistema.

Implementazione incrementale.

Si consiglia di implementare in maniera incrementale; compilare, collegare ed eseguire dei test di verifica un paio di volte al giorno. È importante sapere che non tutte le operazioni pubbliche, gli attributi e le associazioni sono definite in fase di progettazione.

Nella gestione degli errori, accertarsi di aver risolto il problema e non il sintomo; bisogna dedicarsi alla risoluzione del problema presente nel codice. Effettuare una modifica alla volta per permettere di risalire alla causa di un nuovo errore; poiché anche la risoluzione degli errori è un compito che ne determina altri.

Bisogna essere a conoscenza e seguire le linee guida di implementazione specifiche del progetto, comprese quelle di programmazione dei linguaggi specifici.

Trasformazione della progettazione in implementazione

Vi sono diverse tecniche di trasformazione della progettazione in implementazione. Eccone alcuni esempi:

  • Si possono utilizzare modelli visivi specifici della piattaforma per generare il framework del codice iniziale. Questi framework potranno essere ulteriormente elaborati con altri codici non definiti nella progettazione.
  • I modelli possono essere dettagliati ed utilizzati per la generazione di prototipi eseguibili. Si potranno utilizzare sia la struttura (classi e diagrammi di pacchetto) che i diagrammi di comportamento (quali i diagrammi di compito) per generare il codice eseguibile. Questi prototipi potranno essere ulteriormente perfezionati come necessario.
  • I modelli possono essere dettagliati fino al punto che essi rappresentano in modo completo l'implementazione. In questo caso, piuttosto che trasformare un progetto astratto in un'implementazione di codice, si prende il modello e si aggiungono i dettagli dell'implementazione direttamente nel modello.
  • Il progetto può essere indipendente dalla piattaforma a diversi livelli. Si potranno creare modelli di progettazione specifici della piattaforma o anche codice, tramite le trasformazioni che applicano diverse regole per associare elementi specifici della piattaforma di astrazione ad alto livello. Ciò a cui puntano le iniziative dei OMG (Object Management Group) ed MDA (Model Driven Architecture) (http://www.omg.org).
  • È possibile applicare anche percorsi standard per generare elementi di progettazione e codice, partendo dal progetto relativo e dall'implementazione. Ad esempio, i percorsi di trasformazione standard possono essere applicati ad una tabella di dati per creare delle classi java per accedere la tabelle di dati. Un altro esempio è l'utilizzo di un modello Eclipse Modeling Framework (http://www.eclipse.org/emf/) per creare il codice per l'archivio dei dati che corrispondono al modello e per creare un'implementazione di un interfaccia utente per il loro riempimento.

In tutti i casi una astrazione del progetto è dettagliata per diventare l'implementazione, sia in modo manuale che tramite l'applicazione di alcune trasformazioni automatiche.

Completamente dell'implementazione

Come illustrato nel passo precedente, la trasformazione del progetto in implementazione potrà concretizzarsi in diversi livelli di completamento della stessa. Potrà essere una implementazione completa ed accettabile. Solitamente, tuttavia, vi è uno sforzo sostanziale per completarla, ad esempio:

  • Ottimizzazione dei risultati della trasformazione (ad esempio, per migliorare le prestazioni, o l'interfaccia utente)
  • Aggiunta di dettagli mancanti:
    • completamento delle operazioni descritte nel progetto - scelta degli algoritmi e scrittura del codice.
    • aggiunta di ulteriori classi, operazioni e struttura dati
Valutazione dell'implementazione

Questa è la fase in cui si verifica che l'implementazione è adatta allo scopo.  In aggiunta al test (descritto in altri compiti), spesso sono utili altri controlli:

  • Guardare mentalmente al codice. Tenere una lista di controllo degli errori più comuni che si commettono nelle proprie implementazioni, e verificare se ve ne siano.
  • Utilizzare un tool per verificare la presenza di errori nel codice. Ad esempio, un programma di controllo delle regole del codice statico, o un compilatore impostato ad un determinato livello di avviso.
  • Utilizzare dei tool che consentono la visualizzazione del codice. La visualizzazione del codice aiuta ad nell'identificazione di modelli quali dipendenze eccessive e circolari.
Fornitura di un feedback al progetto

Durante l'implementazione ed il test dei progetti si scoprono inevitabilmente degli errori, e sono spesso errori che pregiudicano il progetto. Se viene tenuta un'astrazione del progetto per futuri impegni di manutenzione o per motivi contrattuali o di comunicazione, il progetto deve essere aggiornato.

come si effettua dipende dalla configurazione del progetto e dal processo di gestione modifiche. Solitamente, se la modifica richiesta è piccola, ed è la stessa persona a progettare ed implementare la classe, non c'è bisogno di una richiesta formale. La persona potrà effettuare la modifica al progetto.

Se la modifica ha un vasto impatto, ad esempio una modifica in un'operazione pubblica, potrebbe essere necessaria una richiesta formale.



Ulteriori informazioni