Design pattern

Design Patterns

I design patterns sono un’elemento fondamentale per lo sviluppo di architetture software complesse. Durante le fasi della progettazione, prima della fase di scrittura, è importante porre l’attenzione sulla riusabilità o meglio sulla possibilità di riutilizzare lo stesso codice all’interno della stessa soluzione ma anche in progetti diversi.

Riutilizzare codice all’interno dello stesso progetto, ma anche in nuovi progetti

Le architetture software, sviluppate ad oggetti e ben strutturate, sono composte da pattern. Una delle metriche utilizzabili per valutare la qualità di un software potrebbe essere proprio l’attenzione posta dagli sviluppatori nel riutilizzo del codice e l’applicazione di pattern.

L’adozione di pattern consente di realizzare architetture snelle, semplici e di più semplice comprensibilità.

Il concetto di pattern non è solo da ricercare all’interno dello sviluppo del software. La loro applicazione è stata applicata anche in altri ambiti, ad esempio, le possiamo ritrovare nello sviluppo di architetture di palazzi e intere città.

Cosa sono i Design Patterns?

I design patterns possono essere considerati come una serie di “schemi” utilizzabili durante le fasi della progettazione di un sistema. Consentono di utilizzare soluzioni già esistenti di problemi ben noti, senza dover inventare nuove soluzioni.

I design patterns sono i “mattoni” per lo sviluppo di soluzioni.

Un buon progettista dovrebbe saperli riconoscere direttamente all’interno del codice o nella documentazione comprendendo più velocemente soluzioni sviluppate da altri team di sviluppo.

Facilitano la “comunicazione” tra gli sviluppatori

Nello sviluppo “tradizionale” di soluzioni software, lo step successivo alla fase di analisi è l’analisi struttura, dalla quale dovrebbe scaturire la progettazione dei moduli funzionali. Nella programmazione ad oggetti, i moduli funzionali sono rappresentati dagli oggetti, rappresentati dalle classi e dalle loro relazioni.

Il workflow della progettazione richiede almeno tre fasi di analisi:

  • analisi economica: viene impostato il budget e vengono stimate le tempistiche
  • analisi tecnica: analisi degli aspetti tecnici del progetto da realizzare, cercando di minimizzare gli errori progettuali
  • analisi delle soluzioni esistenti: non sempre è possibile capire il codice e le soluzioni scritte da altri team di sviluppo

Come ottimizzare le fasi di sviluppo?

Per poter massimizzare tutti gli aspetti precedenti, la soluzione più rapida è sicuramente quella di poter impostare una qualche forma di riuso di prodotti già realizzati e esperienze già maturate. Tutto questo trasforma i punti precedenti:

  • analisi economica: partendo dagli sviluppi precedenti, da attività già svolte i costi possono essere ridotti e si possono realizzare stime tempi/costi più accurate.
  • analisi tecnica: utilizzando parti di codice già realizzati riduce il rischio di errori aumentando la garanzia del funzionamento
  • analisi delle soluzioni esistenti: se le soluzioni fossero realizzate riutilizzando “parti di codice”, i tempi e le difficoltà dell’apprendimento della struttura potrebbero diminuire

Risulta evidente che il riuso sia un elemento fondamentale per ottimizzare le fasi di sviluppo. I design pattern sono sicuramente uno degli strumenti più diffusi per riutilizzare codice.

Un pattern descriva un problema ricorrente e ha l’ambizione di proporre una possibile soluzione in termini di classi/oggetti, partendo da una soluzione che si è rilevata efficace per risolvere uno stesso problema.

I design patterns sono raccolti all’interno di una libreria predefinita e sono catalogati in base al loro nome e alla loro funzionalità. Soltamente sono descritti tramite quattro proprietà:

  • nome: la rappresentazione mnemodica per riconoscerlo
  • problema: la tipologia di problematica che il pattern intende risolvere
  • soluzioni: la descrizione della soluzione in termini di classi/oggetti e le loro relazioni
  • conseguenze: le eventuali annotazioni che possono scaturire applicando il pattern specifico. Ad esempio, vengono descritte le problematiche legate alle performance derivanti dall’applicazione di quel particolare pattern

La rappresentazione delle relazione e delle classi viene effettuata utilizzando la notazione UML. In questo post viene analizzato come rappresentarle.

Nei prossimi articoli tratteremo in maniera approfondita alcuni dei pattern più diffusi.

 

 

Pubblicato da

Andrea Merlin

Laureato in informatica, diversi corsi di specializzazione legati allo Sviluppo Software e alla Computer forensics. Appassionato di nuove tecnologie, amo la programmazione, la Business Intelligence e tematiche legate alla Privacy.Sempre alla ricerca di nuove idee, stimoli … e progetti da seguire!Amo trascorrere il tempo libero in Val Borbera, un piccolo angolo del Piemonte, in provincia di Alessandria.

Un commento su “Design Patterns”

I commenti sono chiusi.