domingo, 17 de abril de 2016

Patron de Arquitectura MVC

Introducción

Siempre al programar los distintos lenguajes de programación simpre afrontamos problemas para realizar los software que se  presenta, ya sea en proyecto o un software comercial, para eso necesitamos una solución a  ello que es un patrón de arquitectura.

En este caso los patrones de arquitectura representa una solución al diseño de software en  este artículo se explicará uno de los patrones de arquitectura que más se conocen pero que a veces no se utiliza por que no hay mucho conocimiento con respecto al tema a la hora de desarrollar el software y este patrón de arquitectura  es el Modelo-Vista-Controlador(por sus siglas MVC).

El patrón MVC puede tener sus ventajas  al utilizarlo y primeramente tener una estructura para desarrollar el software deseado, para este necesitamos conocer los conceptos que lo integran.

Se hará un explicación de los conceptos básicos de este patrón de arquitectura, así como sus características principales. Se explicará a detalle el concepto,  así como una explicación de los elementos que  lo integra.

Además se presentará una ilustracion de como utilizar  este patrón de arquitectura en el lenguaje de progrmación Java, para poder tener una referencia mas clara de este patrón.

El tema que se tratará es para que cuando haya un problema en el desarrollo de software tenga un enfoque para darle una solución a través de este patrón de arquitecctura.

Orígenes del patrón MVC(Modelo-Vista-Controlador)

Es posible afirmar que el patrón MVC(Modelo-Vista-Controlador) fue descrito por primera vez en 1979 por TrygveReenskaug e introducido como parte de la versión Smalltalk-80 de lenguaje de programación SmallTalk.

Fue diseñado para reducir el esfuerzo de programación necesario en la implementación de sistemas múltiples y sincronizados de los mismos datos. Sus características principales están dada por el hecho de que, el Modelo, las Vistas y los Controladores se tratan como entidades separadas; esto hace que cualquier cambio producido en el Modelo se refleje automáticamente en cada una de las Vistas. Este modelo de arquitectura se puede emplear en sistemas de representación gráfca de datos, donde se presentan partes del diseño con diferente escala de aumento, en ventanas separadas.

Concepto del MVC

MVC es un patrón de diseño de arquitectura de software usado principalmente en aplicaciones que manejan gran cantidad de datos y transacciones complejas donde se requiere una mejor separación de conceptos para que el desarrollo esté estructurado de una mejor manera, facilitando la programación de manera paralela e independiente.

Este patrón de arquitectura separa los datos y la aplicación de la interfaz de usuario y el módulo encargado de gestionar los eventos y las comunicaciones.

Ventajas  y Desvantajas del MVC

Este modelo de arquitectura presenta varias ventajas:
  • Separación clara entre los componentes de un programa; lo cual permite su implementación por separado.
  • Interfaz de Programación de Aplicaciones API(ApplicationProgramming Interface) muy bien definida; cualquiera que use el API, podrá reemplazar el Modelo, la Vista o el Controlador, sin aparente dificultad.
  • Conexión entre el Modelo y sus Vistas dinámica; se produce en tiempo de ejecución, no en tiempo de compilación.

Al incorporar el modelo de arquitectura MVC a un diseño, las piezas de un programa se pueden construir por separado y luego unirlas en tiempo de ejecución. Si uno de los componentes, posteriormente, se observa que funciona mal, puede reemplazarse sin que las otras piezas se vean afectadas. Esta escenarios contrasta con la aproximación monolítica típica de muchos programas de pequeña y mediana complejidad. Todos tienen un Frame que contiene todos los elementos, un controlador de eventos, un montón de cálculos y la presentación del resultado. Ante esta perspectiva, hacer un cambio aquí no es nada trivial.

 Este módelo también presenta desvantajas como:
  • La separación de conceptos en capas agrega complejidad al sistema.
  • La cantidad de archivos a mantener y desarrollar se incrementa considerablemente.
  • La curva de aprendizaje del patrón de diseño es más alta que usando otros modelos mas sencillo.
Elementos del MVC

Modelo: Es la capa que trabaja con los datos. Deberá contener mecanismos para acceder a la información y también para actualizar su estado. Es decir, gestionar todos los accesos a esa información, consultas tanto para informes como de mantenimiento(actualización), valorar los privilegios de acceso que habrán sido descritos en las especificaciones de la aplicación que llamamos lógica de negocio. Como resultado envía  a "vista" aquella parte de la información que se le solicita para ser mostrada. Se debe tener en cuenta que las peticiones de acceso y/o manipulación  de los datos o información llega a "modelo" o a través de "controlador".

Es responsable de:
  • Acceder a la capa de almacenamiento de datos. Lo ideal es que el modelo se independiente del sistema de almacenamiento.
  • Define reglas de negocios (la funcionalidad del sistema). Un ejemplo puede ser: "Si la mercancia pedida no está en el almacen, consultar el tiempo de entrega en el proveedor". Es opcional, pues la regla de negocio, puede estar también en controladores, directamente en ñas acciones.
  • Notificará a las vistas los cambios que en los datos puedan producir un agente externo si se está ante un modelo activo(por ejemplo, un fichero bath que actualiza los datos, un temporizador que desencadena una inserción, etc.) 

Vista: Es la representación del modelo en forma gráfica disponible para la interacción con el usuario. En el caso de una aplicación Web, la "Vista" es una página HTML con contenido dinámico sobre el cual el usuario puede realizar operaciones.

Es responsable de:
  • Recibir datos procesados por el controlador o del modelo y mostrarlos al usuario.
  • Tiene un registro de su controlador asociado.
  • Pueden dar el servicio de "Actualización()", para que se invocado por el controlador o por el modelo cuando es un modelo activo que informa de los cambios en los datos producidos por otros agentes.

Controlador: Es la parte mediante la cual se maneja la ordenes de usuario, y  a través del cual podemos acceder a cambiar el estado de la aplicación correspondiente. A diferencia de la vista, el controlador reacciona sobre la base de las acciones que realice el usuario en la vista. Es la encargada de manejar y responder la información necesaria y modificando el Modelo en caso de ser necesario.

Es responsable de:
  •  Recibir los eventos de entradas(un click, un cambio en un campo de texto, etc.).
  • Contiene la reglas de gestión de eventos, del tipo "Si Evento Z Accion W". Estas acciones pueden suponer peticiones al modelo o  a las vistas. Una de estas peticiones a las vistas puede ser una llamada al método "Actualizar ()". Una petición del modelo puede ser "Obtener_tiempo_ de_entrega (nueva orden de venta)".

Cada uno de los elementos llamdos capas interrelaciona entre si como se muestra en el siguiente diagrama:

 










Ciclo de vida MVC

El ciclo de vida MVC es normalmente representado por las 3 elementos o capas presentadas anteriormente y el cliente (también conocido como el usuario). El siguiente diagrama representa el ciclo de vida de manera sencilla:




El primer paso en el ciclo de vida empieza cuando el usuario hace una solicitud al contorolador con información sobre lo que el usuario desea realizar. Entonces el Controlador decide a quién debe delegar la tarea y es aquí donde el Modelo empieza su trabajo. En esta etapa, el Modelo se encarga de realizar operaciones sobre la información que maneja para cumplir con lo que solicita el Controlador. Una vez que termina su labor, le regresa al controlador la información de sus operaciones, el cual a su vez redirige a la Vista. La Vista se encarga de transformar los datos en información visualmente entendible para el usuario. Finalmente, la representación gráfica es transmitida de regreso al Controlador y éste se encarga de transmitírsela al usuario. El ciclo entero puede empezar nuevamente si el usuario así lo requiere.

MVC en Uso

Actualmente existen muchos frameworks disponibles para el desarrollo de aplicaciones MVC; sin embargo su uso requiere de una comprensión completa de su funcionamiento.

Para desarrollar aplicaciones Java para internet es necesario hacer uso de la tecnología Java Server Pages, las cuales permiten incrustar código que generen paginas con contenido dinámico cuando cualquier cliente Web solicite información del servidor.

Los  JSPs pueden ser entendidos como una abstracción de alto nivel de un Servlet ya que puede ser entendidas por el servidor Web es necesario que sean compiladas en forma de un Servlet y posteriormente sean interpretadas por un compilador de Java.

Con el proposito de seguir el patrón MVC , como ejemplo, se usa la tecnología Java Servlets para cumplir las funciones del Controlador, la tecnología JSP para las funciones de las vistas e los Benas para el Modelo.

 

 

Conclusión

Los patrones de arquitectura son útiles para desarrollar software ya sea en el área web, aplicaciones de esscriorios y últimamente aplicaciones móviles.

La evolución de los patrones de arquitecturas tiene una largo camino por recorrer  para desarrollar software más eficiente y estructuras mas complejas pero a la vez más simples de enteneder para el desarollador y para el cliente que incluya menos costos.

Por lo pronto el patrón que se explicó en este articula, cumple con gran parte de flexibilidad, portabilidad y eficiencia en el desarrollo de software, pero aún falta por evolucionar y afinar detalles que cumplan con el proceso de desarrollo de software deseado.

También faltaría que en la gran diversidad de tecnologías se adapte o se ajuste de una manera eficiente al patrón de arquitectura, obviamente nadie tiene la verdad absoluta los demás patrones de arquitecturas tiene sus ventajas y se adapta según  a la necesidad del cliente y del equipo de desarrollo de software.

Se ha conocido todo sus elementos y como  interactúan cada uno de ellos en el patrón de arquitectura MVC para una mejor comprensión.

Bibliografía

  • Yanisleidy Fernández Romero, Yanette Díaz González Revista Telemática Págs. 47-50  Abril 2012.
  • http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/rivera_l_a/capitulo2.pdf
  •  Jose Talledo San Miguel, Implantación de aplicaciones web en entornos internet, intranet y extranet Pág. 174 2015.
  • Francisco Juan Mouzo Lerma, Mariano Makendonsky Flash Desarrollo Profesional Pag. 115 2011.


Reflexión

¿Porque has elegido ese tema? ¿De donde partiste para empezar a escribir?

Para contestar la primera pregunta es porque me interesa el desarrollo de software y me interesa concocer la estructura de como a través de buenas metodologías se puede desarrollar software eficiente y menos costoso además  de como conocer la programación en capas y las diferentes tecnologías en las cuales se puede ajustar distintos proyectos para la aplicación de software de tipo comercial, y me interesó por que ya tenía una estructura  bien definida es un tema interesante y conocer los elementos  y su interacción.

Me gustó bastante definir este tema por que concoces todo lo relacionado a la arquitectura de software y es un  amplío aprendizaje que incluso ha llevado varias tesis, incluso la aplicación del mismo.

Parti para empezar este tema desde el concepto para poder escribir este artículo  y empezar a describir cada uno de estos puntos y a través de un árbol desmenuzar cada elemento que compone el tema.

No hay comentarios:

Publicar un comentario