Introduzione al pattern architetturale MVC e ai Frameworks

A livello di progettazione, quindi successivamente di implemetazione, per semplificare la struttura di applicazioni più o meno complesse si necessita di design pattern ovvero di modelli di lavoro che servono a dare “una soluzione generale ad un problema riccorrente”. In altre parole si tratta di metodi di approccio standardizzati atti alla risoluzione di una classe di problemi che hanno particolari caratteristiche in comune.

Nell’ingegneria del software ne esistono varie categorie, anche a seconda del tipo di classificazione, in particolare il pattern che andremo a vedere noi oggi (l’MVC) appartiene ai pattern architetturali. Questi si discostano leggermente dai deisgn pattern originali prendendone una visione ancora più ampia, si tratta della stessa categoria per esempio a cui appartiene il modello Client-Server.

MVC

MVC è l’acronimo di Model-View-Controller (italianizzato in Modello-Visualizzazione-Controller) appunto come dicevamo prima un pattern architetturale impiegato in ingegneria del software per dividere in 3 parti, idealmente indipendenti, l’applicazione che si vuole sviluppare.

Queste tre componenti si occupano ognuna di un compito diverso in modo da dividere il controllo dell’applicazione, la struttura dati e la visualizzazione.

Vediamo nel dettaglio le tre parti:

  • il modello si occupa della gestione dei dati quindi dell’interazione con il database e dell’astrazione degli stessi.
  • la visualizzazione si occupa dell’interazione con l’utente e quindi della visualizzazione dei dati con una certa formattazione
  • infine il controller riceve i comandi inviati dall’utente alla visualizzazione si occupa dell’eventuale elaborazione del passaggio al modello e di nuovo della risposta alla visualizzazione, in pratica serve a modificare lo stato degli altri due componenti.

In questa immagine vediamo una rappresentazione leggermente differente dal modello MVC appena esposto, qua abbiamo in più il browser che rappresenta l’utente che interagisce con l’applicazione e invia i dati al controller.

Nel nostro modello invece l’utente invia i dati comunque al controller ma attraverso la visualizzazione, il funzionamento è comunque identico

I vantaggi

Questa strutturazione del progetto se applicata nelle giuste situazioni, ovvero ad applicazioni medio/grosse, nonostante un lavoro progettuale più impegnativo apporta enormi vantaggi come:

  • facilitare il riutilizzo del codice, più una parte del lavoro è indipendente dal resto più possibilità ci sono che ci possa venire utile per altre applicazioni
  • utile per suddividere il lavoro nel caso ci debbano lavorare più persone o team
  • utilizzando un modello rigido e regole standard facilita un eventuale lavoro di manutenzione e agevola la comprensione anche da parte di altri programmatori
  • nel caso si cambi tipo di database sarà possibile adattare l’applicazione senza dover mettere mano a tutto il codice ma solo al modello quindi maggiore flessibilità

A questo punto vi sarete immaginati che questo ci può essere molto di aiuto nello sviluppo in particolare di applicazioni web ma forse vi starete anche chiedendo come si può implementare tutto ciò. A questo scopo ci vengono in aiuto i frameworks.

Frameworks

Un framework è una struttura di supporto allo sviluppo di un software in particolare nel caso di applicazioni web si tratta di codice sorgente già scritto che ci offre alcuni strumenti per sviluppare e supportare l’applicazione vera e propria.

Esistono framework per vari linguaggi come per il Python, il Ruby e il Java ma quelli di cui parlerò e per il quale mi è servito come introduzione questo post sono i frameworks MVC (quindi basati sul pattern Model-View-Controller) sviluppati in PHP in particolare Symfony, Zend Framework.

Prossimamente vedremo più nel dettaglio questi frameworks e come ci possono essere di aiuto per applicare il modello MVC.

Cosa ne pensate? Voi utilizzate già questi strumenti?

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>