miércoles, 23 de julio de 2014

Patrón de Arquitectura Software: MVC



Este año en la Universidad pude ver más a fondo alguno de los patrones arquitectónicos más destacados de la arquitectura software. En una de las asignaturas que más interés me han despertado,  “Arquitectura y Diseño Software”.
De entrada decir que un patrón de arquitectura ofrece soluciones a problemas de arquitectura software. Se define como una descripción de los elementos que componen dicha arquitectura, el conjunto de relaciones y restricciones que tienen entre esos elementos, lo que viene a ser una relación estructural. La diferencia con los patrones de diseño es que tiene un nivel mucho mayor de abstracción, algo bastante importante para un Arquitecto Software.
Después de esta breve introducción pasaré a comentar en qué consiste el patrón de arquitectura llamado “Modelo-Vista-Controlador (MVC)”. Este modelo lo que hace es separar por una parte los datos y  la lógica de negocio de una aplicación software y por otro lado el módulo que controla las comunicaciones y eventos. En un sitio están los componentes que definen la representación de la información, por ejemplo, una Bases de Datos, tanto para consultas como para actualizaciones y por  otro lado los que interaccionan con el usuario de la aplicación que es el módulo controlador y el de la vista.
El controlador responde a las acciones que va solicitando el usuario y el de vista presenta la información en un formato adecuado para el usuario. Los dos puntos fuertes de este patrón son:
- Reutilización del código.
Separación de conceptos o modularización.
Ambas cosas logran facilitar el desarrollo y el mantenimiento de nuestro desarrollo software.  A continuación, haciendo uso del siguiente gráfico del uso del patrón MVC en con el ejemplo de una aplicación Web:


En primer lugar el usuario envía una petición al controlador mediante una url con el navegador (Browser) posteriormente el controlador solicita al modelo los datos (Base de Datos), el modelo le devuelve los datos solicitados al controlador.  El controlador además selecciona una de las vistas y la vista seleccionada para al controlador. Por último el controlador devuelve una vista que carga los datos del modelo seleccionado para que es usuario la pueda ver en un formato adecuado, según su petición.
Originalmente el MVC fue desarrollado para aplicaciones de escritorio, pero con el auge de las aplicaciones web se ha ido adaptando el patrón de arquitectura para diseñar e implementar aplicaciones web con los principales lenguajes, por ejemplo, Java. Se han desarrollado multitud de frameworks, comerciales y no comerciales, que implementan este patrón.