entendiendo-el-patron-mvc-modelo-vista-controladorHola a todos de nuevo, vengo hoy con un articulo que voy a referenciar en mis otras publicaciones que tengan que ver con desarrollo de software y que esten relacionados a este patrón. Hoy en día es notable que muchos frameworks han optado por utilizar este patrón de desarrollo algunos son Symfony (PHP), Ruby and Rails (Ruby), ExpressJs (NodeJS), Spring MVC (Java) o ASP.NET MVC (.Net). Así que es muy importante que los desarrolladores y estudiantes de ingenieria tenga claro este concepto y la importancia de este concepto en la Ingenieria de Software.

Definición

Es un patron de diseño, desarrollo y arquitectura de software que separa la vista de la lógica del negocio a través de un modulo de comunicación bi-direccional. Para cumplir con la estructura, el patrón propone tres componentes: modelo, vista y controlador, esto quiere decir que por una parte se define la estructura y presentación de la información y por el otro la interacción con el usuario. El patrón utiliza dos conceptos de las Ciencias de la Computación, re-utilzacion de código y separación de conceptos características del patrón que buscan facilitar el desarrollo y la mantenibilidad del software.

Descripción del Patron MVC

Modelo: el modelo es la representación logica de la información y describe la funcionalidad del sistema, por lo tanto se encarga de gestionar los permisos para ingresar a dicha información, también se encarga de realizar recuperación, actualización, inserción y eliminación de datos; a través de un conjunto de reglas (lógica de negocio).

Controlador: es intermediario entre la vista y el controlador, responde a eventos generados por el usuario el cual constituyen llamados al Modelo (en el caso que se solicite alguna información como lista de clientes, consultar un proveedor o editar un producto) o a la Vista (en el caso de mostrar un formulario o un reporte estadístico). En pocas palabras el componente que hace posible tener separada la lógica de negocio con la vista es el Controlador.

Vista: se refiere a toda la interacción con el usuario como los formularios o listados (si nos referimos a una aplicación web, la vista genera el HTML necesario).

Arquitectura

Imagen tomada de: The DCI Architecture: A New Vision of Object-Oriented Programming

Imagen tomada de: The DCI Architecture: A New Vision of Object-Oriented Programming (2009)

La arquitectura describe por un lado al usuario con un modelo mental del negocio, un componente intermedio compuesto por el Controlador y la Vista y al final el Modelo. El usuario ejecuta un evento (ingresa a un enlace o url, oprime un botón, entre otros) que recibido por el Controlador, dependiendo la Lógica de Negocio el controlador decide si necesita información; si es así el controlador lanza un evento sobre el Modelo. Este ultimo tendrá una lógica mas compleja y procesara la información entregándole un respuesta al Controlador y al final será entregado a la Vista para que el usuario lo pueda manipular.

No ahi nada mejor que un ejemplo, supongamos que el usuario quiere editar un Producto con ID igual a 5; el usuario ingresa a un enlace generado en el listado general de productos. Al ingresar el usuario lanza un evento que es tomado por el Controlador, el controlador decide que necesita toda la información del Producto de ID igual a 5; entonces se comunica con el Modelo y este con su lógica mas compleja debe comunicarse con la Base de Datos y obtener la información de dicho producto, este construye un arreglo u objeto y lo retorna al Controlador. El Controlador le envía este objeto a la Vista y este ultimo generara el formulario para poder editar el Producto de ID igual a 5.

Conclusión

El patrón MVC es muy utilizado hoy en día, es un diseño que ofrece consistencia y baja complejidad en el desarrollo de software y podrán encontrar muchos framework que implementan esta solución. En esencia el concepto es muy sencilla, es tomar una capa intermedia para comunicar los datos o la logia del negocio con la vista, entonces si queremos modificar la vista no tenemos que modificar la lógica de negocio y viceversa.

Referencias

  1.  The DCI Architecture: A New Vision of Object-Oriented Programming
  2. Applications Programming in Smalltalk-80(TM):How to use Model-View-Controller (MVC).
  3. Simple Example of MVC (Model View Controller) Design Pattern for Abstraction