I pattern
Recita il Manuale per la qualità dei siti Web pubblici,
culturali, paragrafo
2.5:
Un approccio diverso ai problemi concreti di progettazione e realizzazione
di siti Web di qualità è quello di far uso dei Pattern, che si
propongono di risolvere problemi ricorrenti mediante soluzioni note e consolidate.
Il prodotto Web ha ormai raggiunto un grado di maturità tale che le
soluzioni ad alcuni problemi legati al suo utilizzo sono ormai ritenute patrimonio
comune a tutti i progettisti.
Inoltre, i Pattern possono essere un utile riferimento per coloro che si devono
interessare di siti Web, pur non essendone esperti. In questo caso, infatti,
i Pattern possono costituire un comune linguaggio di comunicazione con i professionisti
per indicare cosa si vuole e perché, indipendentemente dal come la soluzione
sia realizzabile tecnicamente.
I Pattern non eliminano né sostituiscono la necessità del coinvolgimento
degli utenti di cui si è parlato precedentemente: al contrario questo
metodo si giova, per definizione, di esperienze concrete fatte con gli utenti.
2.5.1 Definizioni
Il paradigma dei Pattern è stato sviluppato alla fine degli anni Settanta
da Christopher Alexander, professore di Architettura all’Università di
Berkeley, per far fronte ai complessi problemi connessi alla progettazione
urbanistica ed edilizia. Secondo Alexander la scarsa qualità dell’architettura
degli anni Sessanta era dovuta anche alla mancanza di metodi formali di progettazione.
In pratica, egli rilevò che i progetti urbanistici e di edifici non
tenevano conto delle esperienze concrete che man mano andavano maturando e
senza le quali i progetti stessi finivano per essere estranei alle esigenze
reali degli utenti. Di qui l’idea di definire dei Pattern che stabiliscono
una relazione tra un contesto, un insieme di condizioni (o vincoli) legate
a quel contesto e una soluzione che risolve il problema con quelle condizioni
e in quel contesto.
Dalla metà degli anni Novanta l’idea di usare linguaggi di Pattern
come supporto ai progettisti ha avuto un nuovo slancio grazie all’enorme
successo avuto dalla sua applicazione al campo dell’ingegneria del software
e della progettazione object oriented. Recentemente il paradigma dei Pattern è stata
applicato anche al campo della Human Computer Interface (HCI), con estensioni
al mondo Web.
I Pattern ambiscono a fornire un modo rigoroso per descrivere l’esperienza
di un progettista attraverso la formulazione di una soluzione a un problema
comune.
Ciò che caratterizza quest’approccio è la scelta di non
dare soluzioni “pre-codificate” al problema, cercando piuttosto
di descrivere correttamente sia il contesto sia la soluzione, raccogliendo
sotto un unico titolo le esperienze e le soluzioni adottate (anche da altri,
non soltanto le proprie) in situazioni simili.
Un Pattern è costituito da una triade composta da:
Contesto: è l’insieme delle condizioni al contorno,
l’ambiente nel quale si agisce; è l’insieme delle forze
in azione delle quali il Pattern deve tenere conto e che vincolano la scelta
della soluzione;
Problema: è una situazione che si presenta in maniera
ricorrente nel contesto e che crea scompensi tra le forze in azione;
Soluzione: è un algoritmo, una tecnologia,
una struttura organizzativa, un metodo noto, un modello di riferimento
che risolve in maniera ricorrente quel problema in quel contesto.
Va evidenziato il fatto che un Pattern è costituito da una triade: questo
implica che un problema, da solo, non è un Pattern e una soluzione,
da sola, non è un Pattern.
Detto in una frase: un Pattern è una soluzione consolidata (well proven)
a un problema ricorrente in un contesto specifico.
Per completare la definizione di un Pattern occorrono anche altri elementi:
Nome: un Pattern deve avere un nome significativo. Dare un
nome a qualcosa è il primo passo per poterne parlare.
Condizioni: descrizione delle condizioni (o vincoli) presenti
nel contesto.
Annotazioni: considerazioni (positive o negative)
sulle conseguenze dell’uso del Pattern corrente.
Pattern correlati: relazioni tra il Pattern corrente
e altri Pattern utilizzati nel sistema di riferimento.
Usi conosciuti: riferimenti puntuali ad applicazioni
pratiche del Pattern corrente.
Un linguaggio di Pattern raccoglie Pattern che cooperano per risolvere
i problemi in un certo contesto.
Il contesto generale di riferimento al quale intendiamo applicare il linguaggio
dei Pattern è la progettazione e la realizzazione di WAI accessibili
e usabili, vale a dire di qualità.
Stabilite le condizioni di riferimento comuni è necessario organizzare
in qualche modo i Pattern per poterli utilizzare.
Il modo qui proposto sia quello di costruire un vero e proprio Catalogo di
Pattern il cui scopo è quello di individuare categorie generali di problemi
da affrontare. All’interno di ciascuna di queste categorie si inseriscono
Pattern che definiscono e risolvono un problema particolare.
2.5.2 Il Catalogo dei Pattern
Per costruire il Catalogo dei Pattern da applicare nella progettazione e nella
realizzazione di un’WAI accessibile
e usabile utilizziamo le stesse categorie generali nelle quali sono stati
raggruppati i Criteri di usabilità. A esse aggiungiamo anche:
Interagire con gli utenti: quando un SCP si
presenta su Internet con un suo sito Web apre, di fatto, uno sportello
al cittadino. L’interattività, intesa come possibilità di
comunicazione diretta tra cittadino e WAI diventa
una funzionalità importante che non può mancare.
Nell’appendice 3 sono presentati il Catalogo dei Pattern e la loro definizione.
2.5.3 Come utilizzare i Pattern
Resta, infine, una questione da chiarire: come “si usano” i Pattern.
Alexander, in un capitolo del suo libro A Pattern Language, suggerisce di intraprendere
un percorso al termine del quale si dovrebbe aver compilato una lista di Pattern
necessari al progetto. I passi del percorso sono i seguenti:
- Esaminare l’intera sequenza, il Catalogo dei Pattern, che è disponibile.
- Individuare, attraverso il nome, il Pattern che meglio identifica
il progetto/problema che si deve affrontare.
- Leggerne attentamente la descrizione: in essa sono indicati i
Pattern correlati a quello attuale. Si predispone, quindi, una
lista segnando su di essa i Pattern di livello inferiore (più specifici)
che si incontrano, tralasciando, in genere, i Pattern di livello
superiore (meno specifici).
- Leggere il Pattern successivo evidenziato sulla lista e segnare
di nuovo i Pattern inferiori a cui è correlato.
- Quando si è in dubbio sulla utilità di un Pattern
questo non va incluso. Infatti la lista diverrebbe inevitabilmente
troppo lunga e potrebbe confondere, e comunque sarà già sufficientemente
lunga includendo solo i Pattern che più si ritengono utili.
- Si continua così fino all’identificazione di tutti
i Pattern che si vuole includere nel progetto.
- Giunti a questo punto bisogna aggiustare la lista aggiungendo,
se necessario, propri elementi.
- Infine, si deve tenere in gran conto della necessità di
adattamenti e cambiamenti dei Pattern in relazione alle esigenze
proprie del progetto in corso.
Catalogo
dei pattern
Bibliografia
Alexandex C. et al. A Pattern Language – Towns, Buildings,
Construction.
New York: Oxford University Press, 1977
Norman, Donald. The Design of Everyday
Things. New York: Basic
Books, 1988
Alexander Christopher. The Timeless Way
of Building. New York:
Oxford University Press, 1979
Cunningham, Ward – Beck, Kent. Using
Pattern Languages for Object-Oriented Programs, presented to
the Conference on Object-Oriented Programming, Systems, Languages,
and Applications (OOPSLA), 1987
Gamma Erich – Helm, Richard – Johnson, Ralph – Vlissides,
John. Design Patterns – Elements
of Reusable Object-Oriented Software. Boston: Addison Wesley,
1995
Patter language for the web
http://c2.com/cgi/wiki?PatternLanguageForTheWeb
Tidwell, Jenifer, COMMON GROUND: A Pattern
Language for Human-Computer Interface Design, 1999
http://www.mit.edu/~jtidwell/common_ground.html
Tidwell, Jenifer. UI Patterns and Techniques, 2002
http://time-tripper.com/uipatterns/
Van Welie, Martin, Interaction Design Patterns, 2001
http://www.welie.com/patterns/
Inoltre, una bibliografia sulle raccolte di pattern sul Web
può essere consultata a: http://iawiki.net/WebsitePatterns