Você está na página 1de 10

UNIVERSIDAD NACIONAL DE TRUJILLO

ESCUELA DE POST GRADO


SECCIN DE POSTGRADO EN INGENIERA

MAESTRA EN INGENIERA DE SISTEMAS


MENCIN EN ADMINISTRACIN Y DIRECCIN DE
TECNOLOGAS DE LA INFORMACIN
INGENIERA DE SOFTWARE ORIENTADA A OBJETOS

PATRONES DE ARQUITECTURA DE SOFTWARE: MODELO


VISTA CONTROLADOR
Docente:
Dr. Ing. Francisco Rodrguez Novoa

Autores:
Ing. Gianfranco Daniel Garca Durand
Ing. Gian Fely De La Cruz Blaz

TRUJILLO PERU
2013

TRABAJO DE INVESTIGACION:
ELABORAR UN PAPER DE INVESTIGACION CONSIDERANDO
LOS TEMAS DE INVESTIGACION Y DESARROLLANDO
PROPUESTAS DE PROCEDIMIENTOS CORRESPONDIENTES

1.- Introduccin
En ingeniera de software los patrones de diseo son una herramienta fundamental que
nos permite una solucin general y reutilizable a problemas comunes en el diseo de
software. Los patrones de diseo son una plantilla o descripcin que nos permite
resolver un problema de muchas maneras diferentes.
En un nivel superior existen los patrones de arquitectura que presentan un mayor
alcance, ya que en estos se describe un patrn general de todo un sistema.
Los patrones de arquitectura expresan esquemas fundamentales de la estructura
organizacional de los sistemas de software. Estos proporcionan un conjunto de
subsistemas predefinidos, especifica sus responsabilidades, e incluyen las normas y
directrices para la organizacin y la relaciones entre ellas.
Entre los patrones de arquitectura, existe uno denominado Modelo Vista Controlador
(MVC) en cual vamos a estudiar ms a fondo.

2.- Modelo Vista Controlador


El Modelo Vista Controlador (MVC) es un patrn de arquitectura de software que
separa los datos y la lgica de negocio de una aplicacin de la interfaz de usuario y el
mdulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC

propone la construccin de tres componentes distintos que son el modelo, la vista y el


controlador, es decir, por un lado define componentes para la representacin de la
informacin, y por otro lado para la interaccin del usuario. Este patrn de diseo se
basa en las ideas de reutilizacin de cdigo y la separacin de conceptos, caractersticas
que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento.
3.- Historia
El patrn MVC fue una de las primeras ideas en el campo de las interfaces grficas de
usuario y uno de los primeros trabajos en describir e implementar aplicaciones software
en trminos de sus diferentes funciones.
MVC fue introducido por Trygve Reenskaug en Smalltalk-76 durante su visita a Xerox
Parcen los aos 70 y, seguidamente, en los aos 80, Jim Althoff y otros implementaron
una versin de MVC para la biblioteca de clases de Smalltalk-808 . Slo ms tarde, en
1988, MVC se expres como un concepto general en un artculo.
En esta primera definicin de MVC el controlador se defina como "el mdulo que se
ocupa de la entrada" (de forma similar a como la vista "se ocupa de la salida"). Esta
definicin no tiene cabida en las aplicaciones modernas en las que esta funcionalidad es
asumida por una combinacin de la 'vista' y algn framework moderno para desarrollo.
El 'controlador', en las aplicaciones modernas de la dcada de 2000, es un mdulo o una
seccin intermedia de cdigo, que hace de intermediario de la comunicacin entre el
'modelo' y la 'vista', y unifica la validacin (utilizando llamadas directas o el "observer"
para desacoplar el 'modelo' de la 'vista' en el 'modelo' activo).
Algunos aspectos del patrn MVC han evolucionado dando lugar a ciertas variantes del
concepto original, ya que "'las partes del MVC clsico realmente no tienen sentido para
los clientes actuales":
HMVC (MVC Jerrquico)
MVA (Modelo-Vista-Adaptador)
MVP (Modelo-Vista-Presentador)
MVVM (Modelo-Vista Vista-Modelo) y otros que han adaptado MVC a diferentes
contextos.
4.- Descripcin del patrn
De manera genrica, los componentes de MVC se podran definir como sigue:

El Modelo: Es la representacin de la informacin con la cual el sistema opera,


por lo tanto gestiona todos los accesos a dicha informacin, tanto consultas
como actualizaciones, implementando tambin los privilegios de acceso que se
hayan descrito en las especificaciones de la aplicacin (lgica de negocio).

Enva a la vista aquella parte de la informacin que en cada momento se le


solicita para que sea mostrada (tpicamente a un usuario). Las peticiones de
acceso o manipulacin de informacin llegan al modelo a travs del

controlador.
El Controlador: Responde a eventos (usualmente acciones del usuario) e
invoca peticiones al modelo cuando se hace alguna solicitud sobre la
informacin (por ejemplo, editar un documento o un registro en una base de
datos). Tambin puede enviar comandos a su vista asociada si se solicita un
cambio en la forma en que se presenta de 'modelo' (por ejemplo, desplazamiento
o scroll por un documento o por los diferentes registros de una base de datos),
por tanto se podra decir que el 'controlador' hace de intermediario entre la 'vista'

y el modelo (vase Middleware).


La Vista: Presenta el modelo (informacin y lgica de negocio) en un formato
adecuado para interactuar (usualmente la interfaz de usuario) por tanto requiere
de dicho modelo la informacin que debe representar como salida.

Figura N 1. Diagrama del Modelo Vista Controlador

5.- Flujo de control


Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo de
control generalmente es el siguiente:
1 El usuario interacta con la interfaz de alguna manera (ej. presionando un botn,
un enlace).

2 El controlador recibe (por parte de los objetos de la interfaz vista) la notificacin


de la accin solicitada por el usuario.
3 El controlador accede al modelo, posiblemente actualizando los datos enviados
por el usuario.
4 El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de
usuario.
5 La vista usa el modelo para generar la interfaz apropiada para el usuario donde se
refleja los cambios en el modelo.
6 En algunas implementaciones la vista no tiene acceso directo al modelo, dejando
que el controlador enve los datos del modelo a la vista.
7 La interfaz espera por nuevas interacciones de usuario para iniciar nuevamente el
ciclo.

Figura N 2 Flujo de un MVC

6.- Ventajas de utilizar MVC

Claridad en el diseo: facilita el entendimiento del modelo, facilita la

implementacin y mantenimiento de la aplicacin.


Modularidad: Esta modularidad en el diseo permite a los componentes de la
aplicaciones sean flexibles, permitiendo agregar o quitar estos sin afectar a gran
medida la aplicacin. El desarrollo de los distintos componentes se puede

realizar en paralelo, una vez que el interfaz entre los componentes este

claramente definida.
Vistas Mltiples: permite mostrar el estado en que se encuentra el modelo de
diferentes maneras como por ejemplo los juegos. Permitiendo tener una vista

para mostrar el estado del modelo y otra vista que recoge los datos.
Facilidad de crecimientos: esto se da cuando existen diversas versiones de la
aplicacin en donde cada componente se va desarrollando, as mismo se puede
presentar cuando se necesitan dos tipos de usuarios para la aplicacin: usuario o
administrador, en donde existe una variacin para cada uno, ya que utilizan el

mismo modelo, sin embargo cambia la vista y el controlador.


Distribuible: se puede distribuir cualquier aplicacin MVC, en aplicaciones
cliente y servidor. En donde fsicamente la parte de la vista se ubica en un
cliente, mientras que la parte del controlador y el modelo se encuentra ubicado
en otra locacin, accediendo este por medio de una red.

Figura N 3. Ejemplo de MVC

7.- Implementacin del Modelo Vista Controlador: Structs


Una aplicacin basada en Struts, tiene un componente bsico llamado ActionServlet.
Este es un servlet, que tramita las peticiones de los clientes delegando a un componente
definido por el usuario por cada peticin. Este Servlet es el punto central del framework,
aunque no es necesario que todas la actividad fluya a travs de l. En una aplicacin
basada en Struts se pueden hacer peticiones a una JSP que contengan o no "tag libraries"
de Struts, sin pasar por el Servlet ActionServlet.

El ActionServlet (controlador) de Struts captura y encamina las peticiones HTTP que


llegan a la aplicacin (toma la decisin de a dnde enviar la peticin HTTP), a otros
componentes de aplicacin. Estos componentes pueden ser pginas JSP o instancias de
una subclase de la clase org.apache.struts.action.Actionque el propio framework
suministra.
Cuando se inicia el Servlet ActionServlet, carga y analiza la informacin de un fichero
que contiene la configuracin de la aplicacin para aplicar las caractersticas de Struts.
Entre otras cosas, el fichero de configuracin define las correspondencias que existen
entre las peticiones HTTP que captura el Servlet controlador y las acciones que van a
tratar esa peticin. Estas correspondencias son manipuladas como instancias de la clase
org.apache.struts.action.ActionMapping
El navegador lanza una peticin HTTP a la aplicacin, evento que es capturado por el
servidor de aplicaciones y encaminado al componente correspondiente del modelo vista
controlador para su tratamiento.
A la hora de aplicarlo al patrn modelo vista controlador, las funcionalidades y el
encapsulamiento, serian los siguientes:
Modelo
Representa al estado de la aplicacin. Puede haber dos opciones esencialmente:
Struts proporciona una clase base org.apache.struts.action.ActionForm que se
debe extender cuando se desea obtener la entrada de datos proporcionada por el
usuario en la peticin HTTP.
El modelo puede ser un Bean o clase ordinaria sin necesidad extender
ActionForm.

Vista
La vista es una pgina JSP que no debe contener lgica de negocio, ni flujo de la
aplicacin e informacin del modelo, slo tags. Utiliza el modelo generado para
obtener la informacin y presentarla
Controlador

El Servlet ActionServlet acta de controlador, recibe la peticin del navegador y


decide qu subclase de Action va tratar la peticin en funcin de lo que se ha
declarado en el fichero de configuracin struts-config.xml.
Subclase de Action. Actualiza el estado del modelo, y, controla el flujo de la
aplicacin y tratamiento de errores. Una instancia de una subclase de Action
puede tratar la peticin y responder al cliente o indicar al Servlet controlador a
qu componente del sistema debe delegar el control (esta es la opcin la que se
lleve a cabo). Las instancias de las subclases de Action tienen acceso al contexto
del Servlet controlador y dems objetos que actan con el contenedor Web.

Figura N 4 Patrn MVC - Tecnologas Java

8.- Conclusiones

La lgica de la interfaz de usuario tiende a cambiar con mayor frecuencia


que la lgica de negocio, especialmente en aplicaciones basadas en Web. Si
el cdigo de la presentacin y la lgica de negocios se combinan en un solo
objeto, y se tiene que modificar alguno de estos objetos que contienen la

lgica del negocio cada vez que cambia la interfaz de usuario se vuelve muy
caro.

La independencia en cada una de las capas no permite un mejor


mantenimiento del cdigo de nuestra aplicacin.

La aplicacin muestra los mismos datos de diferentes maneras. Permite tener


mltiples vistas de los mismos datos se muestran al mismo tiempo. Si el
usuario cambia los datos en una vista, el sistema debe actualizar todas las
vistas de los datos de forma automtica.

Una clara separacin de la interfaz de usuario y lgica de negocio minimiza


el riesgo de introducir errores en la lgica de negocio.

El MVC permite la reutilizacin de cada una de sus partes.

Nos facilita la estandarizacin.

El MVC debera de ser el patrn bsico a implementarse en cada aplicacin


que se desarrolla, tomndolo como una buena prctica de programacin.

Bibliografa y linkografa

Reenskaug, Trygve. THING-MODEL-VIEW-EDITOR an Example from a


planning system, 12 MAY 1979.

Model-View-Controller (MVC) Design Pattern Computer Science and Engineering


The Ohio State University.

Buschmann, Frank. Meunier, Regine. Rohnert, Hans. Sommerlad, Peter. Stal,


Michael. Pattern-Oriented Software Architecture Volume 1: A System of Patterns.
Octubre de 1996.

Triana Morn, Arley. Implementacin del Patrn clsico de diseo web ModeloVista-Controlador (MVC) en PHP. Julio de 2009

EjemplosTIW Universidad Carlos III de Madrid. Implementacin del Modelo Vista


Controlador: Structs (Artculo)
http://www.lab.inf.uc3m.es/~a0080802/RAI/mvc.html

Jurado.J. Patrn de Diseo MVC (Modelo Vista Controlador). (Artculo)


http://pis.unicauca.edu.co/moodle/file.php/291/Patron_Diseno_MVC.pdf

Você também pode gostar