Model View Controller Architecture. Dra. Marcela Capobianco



Documentos relacionados
- MANUAL TÉCNICO - Implantación de software de Marketing Online

- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD. Rev. 01- FEBRERO 2013

Patrones de Diseño Orientados a Objetos 2 Parte

Estilos de Arquitectura y. Patrones de Diseño Arquitectónico. Patrones de Arquitectura

Capitulo III. Diseño del Sistema.

Programación Avanzada Ingeniería Civil en Computación

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Facultad de Ingeniería Escuela de Ciencias y Sistemas Estructura de Datos Guatemala 2013 JSF + JSP + RichFaces

1 Índice Introducción Propósito Alcance Modelo Arquitectónico Inicial... 3

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

Elección de tecnología para la capa de presentación de SOA. Huibert Aalbers Senior Certified Software IT Architect

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

Capítulo II. Arquitectura del Software

Patrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms

Capítulo 2. Planteamiento del problema. Capítulo 2 Planteamiento del problema

Edición de Ofertas Excel Manual de Usuario

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Taller de Sistemas de Información 2

Capítulo 2. Marco Teórico

Service Oriented Architecture: Con Biztalk?

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Curso de JavaServer Faces

Workflows? Sí, cuántos quiere?

desarrollo. Dentro del desarrollo de la tesis el proceso de modelado del sistema fue hecho con el

JAVA EE 5. Arquitectura, conceptos y ejemplos.

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Curso de Spring Framework

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

LY Conversations Social ERP

Formularios. Formularios Diapositiva 1

Capítulo 1 Documentos HTML5

Curso de HTML5 y CSS3

BASE DE DATOS RELACIONALES

Service Oriented Architecture

DISEÑO DE COMPONENTES DE SOFTWARE *

Capitulo 5. Implementación del sistema MDM

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

Patrones de diseño. Programación III.I.T.I. de Sistemas. Contenidos. Información sobre patrones de diseño. Motivación.

Internet Information Server

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

CAPÍTULO 3 VISUAL BASIC

19. Packages o paquetes

Análisis y diseño del sistema CAPÍTULO 3

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

Guía de Apoyo Project Web Access. (Jefe de Proyectos)

FUJITSU Java Development Framework

Capítulo III. Análisis y diseño.

MANUAL DE INSTALACIÓN DEL COMPONENTE WEBSIGNER ACTIVEX. Versión 4.0

Ingeniería del Software. Diseño. Diseño en el PUD. Diseño de software. Patrones arquitectónicos. Diseño Orientado a Objetos en UML


WINDOWS : TERMINAL SERVER

WINDOWS : COPIAS DE SEGURIDAD

Tutorial: Primeros Pasos con Subversion

Introducción a aplicaciones Web. Laboratorio de Programación Lorena Castañeda Bueno

Autenticación Centralizada

Estilos Arquitectónicos

Anexo 4 Documento de Arquitectura

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN

Redes de área local: Aplicaciones y servicios WINDOWS

Almacenamiento virtual de sitios web HOSTS VIRTUALES

TELECOMUNICACIONES Y REDES

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

a) Cita y comenta brevemente los grados de acoplamiento. Clasifícalos y ordénalos en orden creciente al nivel de acoplamiento asociado.

TEMA 7: DIAGRAMAS EN UML

CAPÍTULO 3 Servidor de Modelo de Usuario

Pattern Oriented Software Architecture. Whole-Part. Jamir Antonio Avila Mojica César Julio Bustacara Medina. Patrones de Software

Manual del panel. Core-Admin

Almacenamiento virtual de sitios web HOST VIRTUALES

Plataforma desarrollo Java Formación elearning tutorizada en castellano. Fabricante: Java Grupo: Desarrollo Subgrupo: Master Java

App para realizar consultas al Sistema de Información Estadística de Castilla y León

BackflipSD Modelo de Diseño

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Desarrollo de Software con

Tema 1. Introducción a Java EE

Diseño de formularios

2.2.- Paradigmas de la POO

4994 Introduction to Programming Microsoft.NET Framework Applications with Microsoft Visual Studio 2005

Algunas Herramientas de Apoyo al Análisis y Diseño de Software. Agustín J. González ELO329: Diseño y programación orientados a objetos

Generación de código para Hibernate desde modelos UML

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

KW x hora. on/off

Curso de HTML5 y CSS3

Guía de Apoyo Project Professional

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas

Creando Arquitecturas

Acronis License Server. Guía del usuario

Visión General de GXportal. Última actualización: 2009

RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014

Kaldeera Advanced Forms 2009 Guía del usuario

Transcripción:

Diseño y Desarrollo de Software Model View Controller Architecture Dra. Marcela Capobianco 1

Qué es MVC? Model View Controller (MVC) es un patrón agregado que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos El patrón MVC se ve frecuentemente en aplicaciones web En este caso la vista es la página HTML y el código que provee de datos dinámicos a la página

Componentes Modelo: representación específica del dominio de la información sobre la cual funciona la aplicación. La lógica de dominio añade significado a los datos. Ejemplo: calcular los importes en un carrito de compras Vista: presenta el modelo en un formato adecuado para interactuar, usualmente un elemento de interfaz de usuario.

Componentes Controlador: responde a eventos, usualmente acciones del usuario, e invoca cambios en el modelo y probablemente en la vista. Muchas aplicaciones utilizan un mecanismo de almacenamiento (base de datos) MVC no menciona específicamente esta capa de acceso a datos.

De donde surge En general una aplicación tiene tres capas principales: presentación (UI), dominio, acceso a datos MVC divide la capa de presentación en controlador y vista. Existen muchas implementaciones diferentes de MVC que en general siguen el mismo flujo de control

Flujo de control 1.El usuario interactúa con la interfaz (por ejemplo, el usuario pulsa un botón) 2.El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción del usuario (gestor de eventos) 3.El controlador accede al modelo, modificándolo de forma adecuada a la acción solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario)

Flujo de control Los controladores complejos están a menudo estructurados usando un patrón de comando que encapsula las acciones y simplifica su extensión. 4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el modelo (ej: produce un listado del

Flujo de control El modelo no debe tener conocimiento directo sobre la vista. El patrón de observador puede ser utilizado para proveer cierta indirección entre el modelo y la vista Esto permite al modelo notificar a los interesados de cualquier cambio. Un objeto vista puede registrarse con el modelo y esperar a los cambios, aun así el modelo en sí mismo sigue sin saber nada

Flujo de control El controlador no pasa objetos de dominio (modelo) a la vista aunque puede dar la orden a la vista para que se actualice. En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista. 5. La interfaz espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.

Flujo de control El paradigma MVC crea al objeto controlador entre la vista y el modelo para ocmunicarse. La implementación del controlador puede variar pero la idea es transformar eventos en cambios en los datos

Relación con patrones de diseño MVC separa el modelo de las vistas Un mismo modelo puede tener varias vistas asociadas

Recordemos: patrón Observer Intención: Define una dependencia entre objetos de uno-a-muchos de forma tal que cuando un objeto cambia de estado, todos sus dependientes son notificados y actualizados acordemente. Alias: Dependents, Publish-Suscribe Aplicabilidad: Usaremos este patrón cuando: Cuando una abstracción tiene dos aspectos, uno independiente del otro. Cuando un cambio a un objeto requiere cambios en otros, y no sabemos cuántos objetos necesitan ser cambiados. Cuando un objeto debería notificar a otros objetos sin realizar suposiciones de quiénes son esos objetos (evitar el acoplamiento)

Patrón Observer

Patrón Observer Estructura de colaboración

Relación con patrones de diseño Para desconectar las vistas del modelo se utiliza el patrón observer Las vistas en MVC pueden estar anidadas Un panel de control puede contener botones tal que c/u es implementado como una vista Se usa una subclase de view llamada compositeview Queremos tratar a compositeview de la misma forma que se trata a sus

Recordemoa: patrón Composite Intención: Compone objetos en estructuras de árbol para representar jerarquías de relación es-partede. Aplicabilidad: Usaremos este patrón cuando: Queremos representar jerarquías de objetos modelando la relación es-parte-de (part-whole hierarchies) Queremos que el cliente ignore la distinción entre objetos compuestos y objetos individuales. El cliente tratará todos los objetos de la estructura compuesta de manera uniforme.

Patrón Composite

Patrón Composite Component: declara la interfaz para los objetos en la composición. Implementa el comportamiento por defecto para todos los objetos. Declara la interfaz para acceder y manipular los componentes hijos. Opcionalmente implementa una interfaz para acceder al padre.

Patrón Composite Leaf: representa los objetos simples en la composición. Define el comportamiento de tipos primitivos. Composite: define el comportamiento para componentes compuestos. Almacena estos componentes e implementa operaciones relacionadas a su administración. Client: Manipula los objetos en la composición por medio de la interfaz Component. Este patrón simplifica la implementación del cliente

Relación con patrones de diseño Queremos tratar a compositeview de la misma forma que se trata a sus componentes Para esto usamos el patrón composite También permite cambiar la forma que una vista responde al usuario sin cambiar su representación visual Basta con reemplazar la instancia del controlador

Patrón Strategy Intención: Define una familia de algoritmos, encapsula cada uno convirtiéndolos en intercambiables. Permite variar un algoritmo independientemente de los clientes que lo utilizan. Alias: Policy Aplicabilidad: Usaremos este patrón cuando: Muchas clases relacionadas difieren únicamente en el comportamiento. Necesitamos diferentes variantes de un algoritmo. Un algoritmo utiliza datos que el cliente no debe conocer. Una clase define múltiples comportamientos, y éstos figuran como sentencias condicionales múltiples en sus

Patrón Strategy - Estructura

Patrón Strategy Participantes: Strategy: declara una interfaz común a todos los algoritmos soportados. ConcreteStrategy: implementa un algoritmo utilizando la interfaz Strategy. Context: está configurado con un objeto de tipo ConcreteStrategy. Mantiene una referencia a un objeto Strategy. Puede definir, si es necesario, una interfaz para que Strategy acceda a sus datos.

Relación con patrones de diseño El patrón Strategy nos permitirá cambiar la instancia del controlador aún en tiempo de ejecución Por ejemplo, una vista puede ser desabilitada simplemente creando una instancia de controller que ignora los eventos de entrada

Análisis Siempre hay que considerar si es la opción más conveniente para la situación dada Posee ventajas dado que la estabilidad del modelo no es la misma que la de la vista Si el modelo fue construido correctamente es en general bastante estable Esto no es cierto para la interfase Separarlos hace que el modelo sea más robusto

Implementaciones Fue descripto por primera en 1979 por Trygve Reenskaug El autor trabajaba para Xerox research labs sobre Smalltalk La implementación original se describe en: Applications Programming in Smalltalk- 80(TM):How to use Model-View-Controller.

Implementaciones Esta implementación inspiró a muchos otros como: Cocoa y GNUstep, usan MVC. Microsoft Foundation Classes (MFC). Java Swing GUI library. Qt Toolkit desde Qt4 Release. Más recientemente se lo ha propuesto como solución para aplicaciones Web

Implementaciones Implementaciones más populares orientadas a la web: JavaServer Faces Apache Struts Webwork2 Apache Struts está orientado a las páginas enteras y JSF a un nivel de componentes

Java Server Faces JavaServer Faces (JSF) es un application framework basado en Java Simplifica el desarrollo de interfases para aplicaciones Java EE JSF usa JavaServer Pages como display technology y puede acomodar otras tecnologías:

Java Server Faces JSF incluye: Un conjunto de APIs paa representar componentes de la interfaz de usuario, manejar su estado, eventos, entrada, accesibilidad, internacionalización Conjunto default de UI Dos librerias JavaServer Pages (JSP) para disponer de un interfase JSF en un página JSP. Server-side event model

Objetivos de diseño Crear un framework de componentes GUI estandard que pueda hacer más facil para los usuarios de los tools desarrollar GUIs y manejar las conexiones con el comportamiento Definir un conjunto de clases básicas para GUI components, component state, y eventos de entrada. Proveer un modelo JavaBeans para enviar eventos desde el client-side GUI al serverside application behavior.

Objetivos de diseño Definir APIs para validación de la entrada, incluyendo soporte para client-side validation Especificar un model para internationalición y localización de la GUI Generación automatica de salida apropiada para el cliente (tomando en cuenta configuration data, browser version, etc).

Struts Estuvo dentro del Jakarta Project y actualmente es un proyecto top level Es un open-source framework para desarrollar Java EE aplicaciones web Usa y extiende el API Java Servlet para fomentar el uso de la architectura MVC Fue creado originalmente por Craig McClanahan y donado a la Apache Foundation en el 2000

Struts Permite el diseño e implementación de grandes aplicaciones web por grandes grupos de desarrolladores Diseñadores de páginas, componentes y otros desarrolladores pueden trabajar en forma desacoplada Incorpora I18N (internationalization), form validation y variedad de presentation layers: JSP, XML/XSLT, JavaServer Faces (JSF) También model layers:javabeans and EJB.