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.