Arquitectura de Software. Juan Bernardo Quintero

Documentos relacionados
IN77J Orientación al Objeto para el e-business. 6. Diseño

TIPOS DE PATRONES. PATRONES DE DISEÑO: Las soluciones probadas para el diseño de software. En estas nos vamos a centrar.

Patrones. (Conceptos Generales)

Data Source. Lic. Esteban Calabria 2007

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

Patrones de diseño en Java Los 23 modelos de diseño: descripción y soluciones ilustradas en UML 2 y Java

Patrones de diseño en PHP Los 23 modelos de diseño: descripciones y soluciones ilustradas en UML2 y PHP

SISTEMAS DE INFORMACIÓN

Lógica de Negocios. Esteban Calabria 2007

Introducción al Diseño con Patrones

Capítulo 4 Patrones y Patrones de Diseño (ii)

Arquitectura de Aplicaciones Empresariales. Lic. Esteban Cesar Calabria 2007

DISEÑO DE APLICACIONES ORIENTADAS A OBJETOS

UML 2 Iniciación, ejemplos y ejercicios corregidos

Curso: Diseño Orientado a Objetos Patrones de Diseño

Curso: Patrones de Diseño de Arquitecturas de tipo Enterprise

Planificaciones Técnicas de Diseño. Docente responsable: PANTALEO GUILLERMO GUSTAVO. 1 de 5

Estilos Arquitectónicos

PATRONES DE DISEÑO. FAVA - Formación en Ambientes Virtuales de Aprendizaje. SENA - Servicio Nacional de Aprendizaje

A continuación se describe con mayor detalle cada una de tales unidades:

Análisis de Patrones de Software y su aplicación en un Framework de Desarrollo utilizando plataforma.net

PROGRAMA DE CURSO. Metodologías de Diseño y Programación. Nombre en Inglés. Design and Programming Methodologies.

Arquitectura de Software III: Elaboración. Contenido del curso. III: Elaboración

CLASE 10: MÁS PATRONES. Universidad Simón Bolívar. Ing. de Software. Prof. Ivette C. Martínez

Estilos Arquitectónicos

PATRONES DE DISEÑO DE CREACIÓN. Abstract Factory Builder Factory Method Prototype

MÁSTER UNIVERSITARIO EN INGENIERÍA WEB. Guía de Aprendizaje Información al estudiante

Guía docente de la asignatura

Curso Java Curso Online Analista Programador Java

Introducción a la Programación de Videojuegos y Gráficos

06/05/2014. Clase 6. Single Table Inheritance. Class Table Inheritance

Lección 1 Introducción a Struts. uacosta@globalmentoring.com.mx

Patrones Arquitectónicos de Aplicaciones Empresariales

DIPLOMATURA DESARROLLO DE APLICACIONES JAVA

Capítulo 2 : Marco Teórico

SISTEMAS DE INFORMACIÓN II TEORÍA

Diseño Basado en Componentes. Curso 2008/09

Curso de Spring Framework

Arquitectura de Aplicaciones Empresariales. Lic. Esteban Cesar Calabria

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

Patrones en el e-learning

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

Accediendo a Base de Datos desde aplicaciones Web desarrolladas con J2EE: patrones de diseño.


Arquitecturas Software. Arquitecturas Software. Arquitecturas Software. Juan José Moreno Navarro. Motivación: Idea principal: Características:

Evolución de Plantillas Genéricas para la descripción de Casos de Uso a Plantillas Genéricas para Análisis y Diseño

Patrones de Diseño. Ezequiel Postan. 1 Libro e índice. 2 Introducción

ESCUELA POLITÉCNICA NACIONAL

[CASI v.0109] Pág. 1

Patrones. Patrones GRASP GRASP GRASP. Curso de Arquitecturas de Software. Programación Orientada a Objetos Patrones GRASP

Instructivo para la elaboración de un Manual Técnico

ASIGNATURA: Ingeniería de software II DOCENTE: Licda.Carla Milagro López Vásquez RESPONSABLE: Rodolfo Alberto Palma Ramos CARRERA:

- Capa del Modelo de Dominio -

Arquitectura de aplicaciones

Arquitectura de Sistemas de Información basados en Componentes sobre la Plataforma J2EE

Horas Contacto. Modelar gráficamente la solución de problemas con un enfoque Orientado a Objetos, usando un lenguaje de modelado, en este caso UML.

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD INGENIERÍA PROYECTO CURRICULAR MAESTRÍA EN CIENCIAS DE LA INFORMACIÓN Y LAS COMUNICACIONES

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1)

TRABAJO DE DIPLOMA CÓDIGO DE MATERIA 29

Tema 1: Patrones Arquitectónicos

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

COMPONENTES Y CONTENEDORES. Ingeniería de Software II

Tema 1: Introducción a Java EE

TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos

Arquitectura de Software: Estilos y Patrones

Reutilización del Software. Patrones de Diseño

Resumen. Palabras Claves: J2EE, AJAX, IEEE, GOLD, patrones, análisis, diseño, modelos, persistencia. Abstract

Patrones de diseño. Sesión 1: Introducción y patrones básicos. Especialista Universitario Java Enterprise

Programación Orientada a Objetos Analista Programador Universitario Plan 2008 Año 2010

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

Temario curso Desarrollo de Aplicaciones Empresariales con Spring Framework Core 4

ARQUITECTUA DE M2M MIGUEL ÁLVAREZ Y CLARA HERRERO. Documento inicial

Patrones de Diseño GOF (The Gang of Four) en el contexto de Procesos de Desarrollo de Aplicaciones Orientadas a la Web

5.6.3 Session Facade

Tema 8: Diseño arquitectónico Ingeniería del Software de Gestión II

Capas de la arquitectura de referencia

Ficha Técnica. Categoría. Contenido del Pack. Sinopsis. Programación. - 2 Manual Teórico - 1 Cuaderno de Ejercicios - 1 CDROM

Trainning in.net technology. Formacion.Net Advanced Fernando Lencinas

PROGRAMACIÓN VISUAL III (Power Builder)

Java 7.0 Advanced Application Developer

Diseño de Componentes

APLICACIONES DE INTERNET: SOAP

JAVA 2 ENTERPRISE EDITION

Tema 1: Introducción a J2EE

Arquitecturas y Tecnologías de Aplicaciones Empresariales

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

Patrones de Diseño EJERCICIOS

UNIVERSIDAD AUTÓNOMA DE YUCATÁN FACULTAD DE MATEMÁTICAS MISIÓN

Arquitectura de Proyectos en IT

Desarrollo de Grandes Aplicaciones de Gestión de Red: Decisiones generales de diseño

Tecnología de objetos distribuidos y arquitectura de componentes. Índice. Bibliografía. Introducción. Tema V

MASTER JAVA AVANZADO Master en desarrollo de aplicaciones avanzadas con JAVA 2008

Esta obra está bajo una licencia Reconocimiento - No comercial- Sin obras derivadas 2.5 España de Creative Commons.

Curso: Arquitectura de Software ( Nuevo Pensum) Profesor: Juan Bernardo Quintero Institución: Universidad de Antioquia

Clase 2: Arquitectura de Software

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

Arquitectura de Sistemas de Información basados en Componentes sobre la Plataforma J2EE

Estudio de patrones de diseño en plataforma Java Enterprise Edition versión 6 para el desarrollo de aplicaciones web

RELACION ENTRE PATRONES DE SEGURIDAD CORE SECURITY PATTERNS (CSP) Y SECURITY PATTERNS PRACTICE (SPP)

Transcripción:

Arquitectura de Software Juan Bernardo Quintero

Catálogo de Patrones Nombre Corto Nombre Completo Propósito Básico Autor Año GoF Gang of Four Solución de problemas del diseño POSA J2EE PoEAA GRASP Pattern-Oriented Software Architecture Java 2 Enterprise Edition Patterns of Enterprise Application Architecture General Responsibility Assignment Software Patterns Definición de estrategias arquitectónicas Diseño de aplicaciones para esta plataforma Definición de los contenidos de las capas Tránsito entre el análisis y el diseño Gamma, et al. Buschmann, et al. Alur, et al. (Sun) 1995 1996 2003 Fowler 2003 Larman 2005

Catálogo GoF Propósito Creación Estructural Comportamiento Ámbito Clase Factory Method Adapter Interpreter Template Method Objeto Abstract Factory Builder Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsability Command Iterator Mediator Memento Observer State Strategy Visitor

Catálogo POSA Estrategia Del fango a la estructura Sistemas distribuidos Sistemas interactivos Sistemas adaptables Capas Tubería-filtros Pizarra Nombre del Patrón Broker (Por ejemplo CORBA, DCOM, Web Services, WWW) Model-View-Controller Presentation-Abstraction-Control Reflection: metanivel que hace al software consciente de sí mismo. Microkernel: núcleo de funcionalidad mínima.

Catálogo J2EE (1 Edición)

Catálogo J2EE (2 Edición)

Catálogo PoEAA (1) Pattern Type Domain Logic Data Source Architectural Object-Relational Structural Transaction Script Domain Model Table Module Service Layer Pattern Name Table Data Gateway Row Data Gateway Active Record Data Mapper Identity Field Foreign Key Mapping Association Table Mapping Dependent Mapping Embedded Value Serialized LOB Single Table Inheritance Class Table Inheritance Concrete Table Inheritance Inheritance Mappers

Catálogo PoEAA (2) Pattern Type Object-Relational Behavioral Object-Relational Metadata Mapping Web Presentation Distribution Unit of Work Identity Map Lazy Load Metadata Mapping Query Object Repository Pattern Name Model View Controller Page Controller Front Controller Template View Transform View Two-Step View Application Controller Remote Façade Data Transfer Object

Catálogo PoEAA (3) Pattern Type Offline Concurrency Session State Base Pattern Name Optimistic Offline Lock Pessimistic Offline Lock Coarse Grained Lock Implicit Lock Client Session State Server Session State Database Session State Gateway Mapper Layer Supertype Separated Interface Registry Value Object Money Special Case Plugin Service Stub Record Set

Catálogo GRASP Pattern Name Creator Information Expert Controller Low Coupling High Cohesion Polymorphism Pure Fabrication Indirection Protected Variations Related Topic Factory pattern Information hiding Model view controller Loose coupling Cohesion (computer science) Polymorphism in object-oriented programming Service (systems architecture) Delegation pattern Delegation pattern

Arquitectura de Aplicaciones Web FRENTE FÍSICO Cliente/Servidor Especificación Arquitectónica Usuario FRENTE LÓGICO M-V-C Patrón Front-End Vista T I E R S Middleware RIA Controlador L A Y E R S Back-End Modelo

Las Layers de cada Tier

Frameworks en las Tiers

Costos de la invocación entre Tiers Interfaces $$$... Patrón MVC? Lógica de presentación Coordinación Aplicación Lógica del Negocio Lógica de Persistencia Clases Dominio Esquema Persistencia José Pérez: Cliente Materialización / Desmaterialización de objetos $$$ Patrón DAO? T-cliente

MVC Consulta de Estado Modelo Agrupa los estados de la aplicación Responde a los requerimientos Muestra la funcionalidad de la aplicación Notifica los cambios a la Vista Cambios de Estado Notificaciones de Cambios Vista Interpreta el modelo Solicita actualizaciones del modelo Envía las acciones del usuario al Controlador Permite al Controlador seleccionar las Vistas Invocación de Métodos Eventos Selección de Vista Acciones de Usuarios Controlador Define el comportamiento de la aplicación Mapea las acciones del Usuario a actualizaciones del Modelo Selecciona la Vista de respuesta Uno por cada funcionalidad

Funcionamiento Flujo de ver información: LADO DEL CLIENTE LADO DEL SERVIDOR Petición 1 Controlador Datos Persistentes 7 2 6 4 5 Respuesta 8 7 Vista 3 6 Modelo

Funcionamiento Flujo de actualizar información: LADO DEL CLIENTE LADO DEL SERVIDOR Petición 1 Controlador 6 5 2 Redirección 7 Modelo 3 4 Datos Persistentes Petición 8

Variantes arquitectónicas de MVC En el Controlador: - Use Case Controller - Front Controller - Page Controller En la Vista: - Enfoque Push - Enfoque Pull En el Modelo: - Modelo Activo - Modelo Pasivo

Use Case Controller El patrón Use Case Controller coordina e itera secuencias entre el sistema y sus usuarios con el fin de llevar a cabo un proceso específico. Un ejemplo es el estilo de interface Wizard, donde el usuario pasa a través de una secuencia de pantallas en un orden definido. Ellos pueden ser capaces de dar marcha atrás y hacia delante, o saltar a un paso específico, pero el enfoque general sugiere un definido "avance en el proceso

Use Case Controller http://www.developerfusion.com/article/9450/controller-patterns-for-aspnet/

Page Controller Este patrón: - Intercepta la llamada a la página solicitada. - Interpreta la acción. - Ejecuta la acción. - Determina la vista correcta para mostrarle los resultados al usuario. - Separa la lógica de despacho de cualquiera de las vistas. Cuando se implementa de forma adecuada, crea una base común para todos los controladores para evitar la duplicación de código e incrementar la consistencia y facilidad de prueba.

Page Controller Estructura: Usando ControllerBase para eliminar duplicación de código:

Front Controller El patrón se relaciona con el diseño de aplicaciones web. Ofrece un punto de acceso centralizado para el tratamiento de todas las solicitudes. Este patrón: - Canaliza todas las peticiones en un único controller. - El controller se implementa en dos partes: un handler y una jerarquía de comandos.

Front Controller Estructura: Escenario típico:

Controlador Frontal View Controller Model Browers JSP / HTML Form 1 Struts ActionServlet Struts Action 3 2 struts-config.xml 6 Business Logic using Struts Custom Tags 4 5 Struts ActionForm Database 1. Todas las solicitudes del navegador son enviadas al Struts ActionServlet. 2. El Struts ActionServlet determina cual subclase Action enrutar usando el archivo de mapeo predeterminado struts-config.xml. 3. El ActionServlet pasa el control a la subclase Action. 4. Cuando el formulario HTML es enviado, la subclase ActionForm es automáticamente poblada con los datos del formulario. 5. La subclase Action puede acceder a los datos del formulario que están almacenados en la subclase ActionForm. Esta subclase es pasada al back-end del Business Logic para futuras acciones. 6. La subclase Action invoca el back-end del Business Logic.

Enfoques MVC Push/Pull Hace referencia a cómo son accesibles los objetos de la capa de negocio desde la capa de presentación. MVC Push es cuando los datos son seteados en la vista. En este escenario, generalmente un objeto de la capa de negocio está asociado a una página. MVC Pull es cuando la vista pide los datos (por ejemplo, mediante métodos accesores). En este escenario, generalmente uno o varios objetos están disponibles para todas las páginas. La mayoría de frameworks sigue un enfoque MVC Push.

Enfoques MVC Push/Pull ENFOQUE PUSH CLASE DE NEGOCIO public class{ varvista = 5; } PLANTILLA DE LA VISTA <div class="grid"> <com:tliteral ID= varvista" /> </div> ENFOQUE PULL OBJETO DE NEGOCIO n:negocio atributo1 = 3 atributo2 = Dato atributo3 = 50 CLASE DE LA VISTA public class{ varvista = getatributo3(); }

Enfoque MVC Push ENFOQUE PUSH CLASE DE NEGOCIO class { this.totaldatos= ; } PLANTILLA DE LA VISTA <div class="grid"> <com:tliteral ID= totaldatos" /> </div>

Enfoques MVC Push/Pull ENFOQUE PULL OBJETO DE NEGOCIO GestionarPersonasController cedula = 710982345 nombre = Luis Carlos Velez Blanco email = lcvb@hotmail.com CLASE DE LA VISTA class extends View{ varvista = getcedula() ; }

Modelo Pasivo El model no reporta cambios de estado El controller es el único que manipula el modelo. Cuando el controller modifica el modelo, le informa a la vista que este ha cambiado y que ya se puede refrescar. En este escenario el modelo es completamente independiente.

Modelo Pasivo Modelo update Vista Eventos Totalmente desacoplado Vistas escuchan y responden a los eventos de notificación de sus respectivos modelos (si les interesa) Modelo desconoce qué pasa, sólo responde a los mensajes recibidos (comandos y consultas)

Modelo Activo El Modelo reporta cambios de estado a vistas Este es usado cuando el modelo cambia su estado sin intervención del controller. Esto ocurre cuando otras fuentes cambian los datos y estos cambios debes ser reflejados en las vistas. Patrón Observer (Publish/Subscribe)

Modelo Activo Modelo update Observador Vista 4 Vista 3 Vista 2 Vista 1 Observadores / Vistas Asociadas - Modelo conoce la existencia de observadores o vistas asociadas - Les envía activamente un mensaje de notificación (sin información) - Fácil de implementar, pero limitado en flexibilidad - El controlador también puede observar al modelo

Modelo Activo CONTROLADOR MODELO <<interface>> Observer VISTA

Funcionamiento input Controlador register Vista Vista Vista update Modelo update

Clases participantes del patrón DAO http://www.corej2eepatterns.com/patterns2nded/dataaccessobject.htm

Responsabilidades de las clases Client: Cualquier objeto que requiera acceder a la fuente de datos para obtener algún dato. DataAccessObject: Implementación de la las operaciones de acceso a datos (CRUD o CRUDEL) DataSource: Implementación de la fuente de datos ResultSet: Interfaz ResultSet que proporciona acceso a una tabla de datos. Data Transfer Object: Almacena los datos que deseemos insertar a una tabla y almacena los datos que saquemos de una tabla.

Interacción entre las clases http://www.corej2eepatterns.com/patterns2nded/dataaccessobject.htm

Uso de una capa lógica transversal Tabla (HTML) C O L E C C I O N D E DataGrid Array Capa de presentación Capa de lógica de negocios DTO s (Value Objects) D A T O S RecordSet Cursor Capa de acceso a datos Tabla (SQL) Bases de datos

Flujos en el patrón DAO Flujos de un registro: manipulan un solo registro de la fuente de datos y no necesitan ResultSet. Flujos de múltiples registros: manipulan mas de un registro de la fuente de datos usando para ello un ResultSet. ** En el patrón MVC los flujos se separan en: - Flujos para actualizar información - Flujos para mostrar información

Flujo de un registro

Flujo de múltiples registros

Evaluar uso del Active Record Un objeto que contiene una fila en una tabla de base de datos o vista, encapsula el acceso a bases de datos, y agrega la lógica de dominio en esos datos. Person lastname firstname numberofdependents insert update getexemption isflaggedforaudit gettaxableearnings Un objeto que lleva los datos y el comportamiento. Gran parte de estos datos es persistente y tiene que ser almacenado en una base de datos. Active Record utiliza el enfoque más obvio, poner la lógica de acceso a datos en el objeto de dominio. De esta manera todas las personas saben cómo leer y escribir sus datos hacia y desde la base de datos. http://martinfowler.com/eaacatalog/activerecord.html

Evaluar uso de un Framework ORM El Mapeo Objeto-Relacional (Object-Relational Mapping o ORM) es una técnica de programación para convertir datos entre una base de datos relacional y el sistema de tipos utilizado en un lenguaje de programación orientado a objetos. http://www.visual-paradigm.com/product/sde/ec/provides/codedbeng.jsp

Referencias Gamma, Eric; Helm, Richard; Johnson, Ralph; and Vlissides, John. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerland, Peter; and Stal, Michael. Pattern-Oriented Software Architecture, Volume 1: A System of Patterns. Wiley & Sons, 1996. Alur, Deepak; Crupi, John and Malks, Dan. Core J2EE Patterns: Best Practices and Design Strategies. 2.ed. Prentice Hall / Sun Microsystems Press, 2003. Fowler, Martin. Patterns of Application Architecture. Addison- Wesley, 2003. Larman, Craig. Uml y Patrones: Introducción al análisis y diseño orientado a objetos. 2 ed. Prentice Hall, 2005.