Febbraio 2003

Usare i modelli per acquisire l’esperienza di progettazione

Per lungo tempo, siamo stati fan di questo approccio e abbiamo fornito al settore del software un set molto significativo di linee guida di progettazione integrate in un portale della conoscenza basato sul web.
Questo portale consente agli sviluppatori di migliorare la progettazione delle interfacce software e li aiuta a evitare di ripetere in continuazione i medesimi errori di progettazione. Nonostante tutti questi sforzi, l’applicazione delle linee guida ai singoli progetti presenta le sue sfide.
A causa della crescente complessità di progettazione delle interfacce, le linee guida che risultino adatte ad essere seguite sono numerose. Spesso è difficile selezionare l’insieme corretto di linee guida che si applichino al meglio a un determinata situazione. 
Probabilmente, nella vostra organizzazione, una capacità di questo tipo è appannaggio di pochi specialisti di alto livello. Infatti, questo tipo di conoscenza è raramente presente all’interno della grande maggioranza delle staff di progettazione e sviluppo. 
La verità è che, spesso, le persone sono troppo occupate nello scrivere programmi e nel condurre i test per eliminare le malfunzioni!
Per affrontare questo problema, siamo convinti che la prossima evoluzione nell’acquisire e utilizzare la conoscenza della progettazione, sarà rappresentata dall’uso dei modelli visuali di progettazione. 
Un modello di progetto è una descrizione testuale e grafica strutturata di una soluzione, la cui correttezza è stata a sua volta verificata, a fronte di un problema di progettazione ricorrente. I modelli offrono una nuova potente via per utilizzare le linee guide esistenti come strumento per gli sviluppatori. 
Un importante obiettivo per ogni team di progettazione è di recepire le ragioni alla base del nuovo progetto e le esperienze derivanti da quelli del passato.
In sintesi, è necessario creare una memoria della società, dotata di un facile accesso e in grado di fornire il suo contributo ai progetti in sviluppo.
L’efficace acquisizione delle soluzioni di progetto apporta i seguenti benefici:

  • Assicura che le migliori soluzioni del passato vengano salvate e riutilizzate, al bisogno, nei progetti futuri.
  • Aiuta ad evitare la ripetizione di errori di progettazione commessi in precedenza.
  • Può far comprendere a nuovi membri del gruppo le decisioni relative ai progetti pregressi.
  • Può essere usata come strumento di formazione per i progettisti con minore esperienza o per altri membri del team, per applicare le migliori pratiche di progettazione delle interfacce utente, all’interno dell’organizzazione.

Sulla base di queste esperienze, si può costruire un “business case” significativo per investire nella realizzazione dei modelli di progettazione.
Poiché i dipendenti che lasciano l’organizzazione spesso portano via con loro la maggior parte della memoria e dell’esperienza accumulata con i progetti cui hanno partecipato, l’impresa viene privata di un patrimonio di conoscenze utili per gestire efficacemente problemi di progettazione simili, in occasioni successive.

Come implementare i modelli di progetto
Creare i modelli ogni volta a partire dalle specifiche è una sfida. Il segreto è sviluppare un ambiente per definire i modelli e costruirne uno più robusto, attingendo a un nucleo di regole fondamentali di progettazione.
Un ambiente per la soluzione che utilizzi i modelli di progetto, deve essere sviluppato sulla base delle migliori pratiche applicabili alla vostra piattaforma di diffusione dell’applicazione, oltre che per le necessità specifiche del settore di appartenenza dell’impresa. 
I modelli di progettazione ad alto livello devono essere creati per l’utilizzo a fronte di problemi su progetti di grandi dimensioni, facendo riferimento a modelli di dimensioni minori per descrivere le soluzioni. 
Ad esempio, un modello per la ricerca avanzata dei dati, verosimilmente farà riferimento a modelli di livello inferiore, come un modello di lista di risultati e un modello per la ricerca semplice. 
Se state per adottare questo approccio, che cosa è necessario per realizzare un modello effettivo?

I modelli debbono riflettere esempi reali.
I modelli risultano più efficaci quando sono supportati da linee guida e esempi presi dalla realtà. 
Fornite al vostro team di progettazione esempi reali, con la possibilità di impararne da altre esperienze, in modo che possano studiarli e testare le potenziali soluzioni specifiche del contesto in cui operano.
Supportate i modelli con linee guida di provata efficacia, case study, esempi di utilizzo conosciuti, checklist e esempi di codifica da riutilizzare. 

Se avete attivato un gruppo per la reusabilità della codifica, questo approccio moltiplicherà l’esperienza del vostro team nei confronti dell’intera comunità degli sviluppatori.

Non create modelli troppo astratti.
Molti dei modelli documentati, esistenti nel mondo della progettazione, risultano troppo astratti per essere facilmente compresi e utilizzati dagli utenti all’interno di un team di progettazione. 
Questa è un’area nella quale ognuno è diverso dagli altri. Alcuni tra coloro che propongono i modelli, ritengono di impostarli ad un alto livello per mantenerne la validità “senza tempo”. 
In teoria, questo suona bene, ma gli sviluppatori sono sempre più alla ricerca di modelli con esempi di codifica. 
Più riuscirete a fornire loro soluzioni simili alle loro necessità specifiche, con esempi reali collegabili alla codifica che stanno realizzando, e più avrete probabilità di successo con questo approccio.

Usate un linguaggio comune per i modelli.
Negli anni a venire, emergerà un approccio comune alla documentazione dei modelli, mediante l’uso di un “linguaggio comune di modellazione”. 
Questo consentirà a un maggior numero di persone all’interno dell’organizzazione di utilizzare, contribuire a sviluppare e creare nuovi modelli, incrementando così la vostra base di conoscenze nell’area della progettazione. 
Attualmente, il linguaggio più diffuso risulta basato sull’opera dell’architetto Christopher Alexander e sul suo libro, A Timeless Way of Building.