Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y...

25
Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Transcript of Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y...

Page 1: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Aspectos Avanzados de la

Tecnología de Objetos

5. Frameworks y Componentes (parte 2)

Page 2: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Contenidos

• Análisis arquitectural y el Documento de la Arquitectura del Software (Software Architecture Document – SAD).

• Diseño de un entorno de trabajo (framework) de persistencia con patrones.

Page 3: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Objetivos específicos

• Conocer y aplicar prácticamente cómo se diseña la arquitectura de los sistemas.

• Explicar y manejar apropiadamente la arquitectura lógica.

• Mostrar la arquitectura utilizando los diagramas de paquetes de UML.

• Conocer como se diseña un framework.

Page 4: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Frameworks

• Aplicación medio completada, reutilizable, que puede especializarse para producir una aplicación personalizada.

• Conjunto de clases abstractas y concretas cooperando que se emplean en un diseño reutilizable de un tipo específico de software.

• Técnica Orientada a Objetos de reutilización:

– Reutilice el Diseño + Reutilice el Código.

Page 5: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Ejemplo: Calculadoras

• Interfase Calculator– getValue(), compute(Operator o), clear(), undo()– Usa patrón Command, opcionalmente Singleton– Recuerda los paréntesis, y puede iterar en su árbol.

• Interfase Operator– Descendientes: UnaryOperator, BinaryOperator– Clases concretas : Plus, Minus, Power, …– Actúa como clase Command, soporta Composites

• Interfase VisualCalculator– Observer en Calculator, puede mostrar operadores en

botones, puede mostrar el árbol de cálculo actual

• Todas son extensibles, “Main” recibe interfaces.

Page 6: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Diseño de un Framework OO

1. Conocimiento del Dominio :– ¿Para cuáles aplicaciones será el Framework?– ¿Qué es común a todas ellas?

2. Arquitectura:– Las mayores y mas críticas decisiones técnicas– ¿Qué se requiere, además de las clases?

3. Diseño Orientado a Objetos:– Reutilización del Diseño: Patrones– Inversión de Control + Búsqueda de enganches

apropiados

Page 7: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Conocimiento del Dominio

• También conocido como Análisis o Modelado.• Decisiones “significativas” comunes:

– Conceptos principales del dominio modelado.– Operaciones principales.– Casos de Uso: ¿Cómo realizan los usuarios tareas

comunes?

• Ejemplo, una calculadora– Conceptos: operador unario, operador binario, valor

actual, valor en memoria, tecla de mayúscula.– Operaciones: Limpiar, usar operador, calcular.– Caso de Uso: Calcular un promedio de n números

Page 8: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Arquitectura

• El conjunto de decisiones significativas acerca de la estructura del software, su división en componentes y subsistemas y sus interfaces, así como los lineamientos para integrarles.

• Decisiones significativas comunes:– Lenguaje de programación, sistema operativo, hardware.– Uso de las principales liberarías externas o aplicaciones.– Distribución Física, procesos e hilos.– Conceptos principales: Tipos de módulos e interfaces.– Comunicación y sincronización entre módulos.– Modelo de Seguridad.– Rendimiento y escalabilidad.

Page 9: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Proceso de desarrollo del framework

Page 10: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Ejemplo: JCA

• Java Cryptography Architecture (JCA, JCE)– Cifrado, Firmas Digitales, Gestión de claves.– Abierta a nuevos algoritmos, nuevas implementaciones.

• Conceptos principales:– Suministrador (Provider): Suministra implementaciones

para un subconjunto de la Java Security API, identificado por nombre.

– Motor de clases (Engine Classes): Functionalidad para un tipo de conducta criptográfica: Firma (Signature) y Generación del par de claves (KeyPairGenerator).

– Factory Methods : Métodos estáticos en el motor de clases que retornan instancias de ellas para un algoritmo determinado.

– Almacén de claves (Key Store): Alcance de identidad del sistema.

Page 11: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

JCA (2)

• Generación del par de claves pública/privada:KeyPairGenerator keygen =

KeyPairGenerator.getInstance(“DSA”, “MY_PROVIDER”);keygen.initialize(keySize, new SecureRandom(userSeed));KeyPair pair = keygen.generateKeyPair();– Se necesita el molde DSAKeyPairGenerator para

inicializarlo con los parámetros específicos al algoritmo.• Generación de una firma:

Signature sha = Signature.getInstance(“SHA-1”);PrivateKey priv = pair.getPrivate();sha.initSign(priv);byte[] sig = sha.sign();– El suministrador es opcional en getInstance()

Page 12: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

JCA (3)

• Aunque las implementaciones usualmente no son en Java, deben ser envueltas en clases Java.

• Estáticamente, se añaden líneas al archivo de texto java.security:– Security.providerName.n = com.acme.providerPackage– n es el orden de preferencia del suministrador, 1 es el mas

elevado.• Los suministradores pueden gestionarse dinámicamente:

– La clase Security tiene los métodos addProvider(), getProvider()– La clase Provider tiene getName(), getVersion(), getInfo()

• Los suministradores deben escribirse como “clases maestras”:– Especifica cuales implementaciones están en oferta mediante ella.– Hay nombres estandarizados para los algoritmos conocidos.

Page 13: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Resumen de JCA• Respuestas de la arquitectura:

– Conocimiento del dominio: ¿Cuál conducta (motor de clases) deberá estar soportada?

– ¿Cómo se definen y seleccionan diferentes algoritmos e implementaciones?

– ¿Cómo deben usarse las implementaciones no hechas en Java?– ¿Cómo puede un administrador configurar una clave

almacenada y un conjunto confiable de sumistradores e implementaciones?

– ¿Cómo pueden las empresas comerciales vender implementaciones de código fuente cerrado compatibles con Java de las características de seguridad?

• No sólo clases e interfaces:– Persistencia del almacén de claves, archivos de configuración,

código no Java.– Consideraciones prácticas, de gestión y económicas.

Page 14: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Inversión de Control

• Basada en el llamado “Principio de Hollywood”:

No nos llame, nosotros lo haremos.• Beneficios:

– Reutilización del código: El flujo de control se codifica sólo una vez.

– Hace claro cómo y cuando se emplean los enganches.– Produce uniformidad en la conducta de los programas,

lo que facilita su comprensión.

• Desventajas:– La eliminación de errores es mas difícil.– La integración de dos frameworks puede ser difícil.

Page 15: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Enganches (Hooks)• Hook = Hotspot = Plug-point

– Puntos donde el FW puede ser personalizado.

• Los puntos fundamentales del diseño requieren conocimiento del dominio.– ¿Cómo encontrar los enganches

adecuados?– ¿Pocos o muchos enganches?– ¿Cuál debe ser el comportamiento

asumido?• Alternativas para la

implementación:– Método de las plantillas (Template

Method)– Estrategia o Prototipo– Observador

Page 16: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

“Colores” de Frameworks

• Frameworks de “caja blanca”:– Extendidos por herencia desde las clases del

framework.– Template Method, Builder, Bridge, Abstract Factory– Requieren conocimiento profundo de la estructura del

framework.

• Frameworks de “caja negra”:– Extendidos por composición con clases del framework– Strategy, State, Visitor, Prototype, Observer– Mas flexibles, ligeramente menos eficientes.

• Frameworks de “caja gris”:– Son los mas comunes en el desarrollo real.

Page 17: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Frameworks de caja blanca vs. Frameworks de caja negra

Page 18: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

“Colores” de Frameworks (2)Los Frameworks tienden a evolucionar hacia cajas negras:• Abstract Window Toolkit (AWT) 1.0 tenía un modelo de eventos

de caja blanca:– Cada componente visual poseía un método handleEvent()– Cada frame lo heredaba y lo sobrescribía.– El método resultaba ser una sentencia switch muy larga.

• AWT 1.1 y Swing son de caja negra.– Observer pattern: Las componentes de la interfaz de usuario

publican eventos para los escuchas (listeners) registrados.• ¿Por qué es mejor la caja negra?

– Separación de asuntos: mejores abstracciones.– Importante para la generación (automática) de código

Page 19: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Dominios de Aplicación

• Infraestructura del Sistema– Envoltura del Sistema Operativo: MFC, MacApp– Protocolos de comunicación : RMI– Acceso a Bases de Datos: ADO, JDO– Seguridad: JCA, JSA

• Interfaces de Usuario– SmallTalk-80 fue el primer OOFW usado

ampliamente.– Swing, Delphi, MFC, COM, …– Integrados con los entornos de desarrollo.

Page 20: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Dominios de Aplicación (2)

• Middleware / Object Request Brokers– Object Request Brokers: CORBA, COM+, EJB– Web Services: .NET, Sun One

• Aplicaciones Empresariales– En la empresa = Trabajo crítico del día a día.– Usualmente desarrollado al interior de las

organizaciones.– Excepción notable: IBM San-Francisco– Industrias: Telecomunicaciones, Manufactura,

Aviación, Finanzas, Facturación, Seguros, Cuidados de Salud, Almacenes, …

Page 21: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Fortalezas de los Framework

• Reutilizar– Diseño + Código

• Extensibilidad– Permite crear Componentes reutilizables

• Refuerza reutilizar el Diseño.– Herramienta “Educacional”

• Partición entre Conocimiento y Entrenamiento.– Especialización Técnica vs. Aplicativa.

Page 22: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Debilidades de los Frameworks

• Esfuerzo para su desarrollo– Los frameworks genéricos son mas difíciles de diseñar y construir.– También son difíciles de validar y corregir.

• Mantenimiento– ¿Necesita cambiar el FW o la aplicación?– Los cambios en las interfaces requieren actualizar todas las

aplicaciones

• Curva de Aprendizaje– A diferencia de las librerías de clases, no puede aprenderse una

clase de una vez.

• Posibilidad de integrar múltiples frameworks.• Eficiencia.• Carencia de estandarización.

Page 23: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Condiciones económicas

• Las principales firmas desarrollan y venden FWs:– Debe usar el lenguaje: Swing– Debe usar el sistema operativo: MFC– Debe usar la herramienta de desarrollo: Delphi– Debe usar la Base de Datos: Oracle

• Hay un componente industrial también:– Empresas que escriben y venden componentes.

• Los Frameworks son una necesidad económica, a menos que se desee desarrollar interfaz de usuario, base de datos, solicitud de objetos remotos, etc., totalmente desde cero hoy...

Page 24: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Frameworks

Resumiendo:• Técnica orientada a objetos.• Aplicaciones casi completas y reutilizables.• Se reutiliza tanto el código como el diseño.• Principio Hollywood + Enganches.• Permite la creacion de Componentes• Origen de muchos patrones de diseño.• Muchos dominios de aplicación.

Envoltorio Arquitectura Metodología

Page 25: Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y Componentes (parte 2)

Dr. Juan José Aranda Aboy

Referencias

• Larman, C. “UML y Patrones” 2da ed. Pearson Prentice Hall, 2004

• Evitts,P. “A UML Pattern Language” (archivo en PDF: [157870118x]uml pattern language.pdf)

• Wikipedia: Software framework (español)• El Desarrollo del Framework Orientado al Objeto• What is a Framework? • Real Frameworks for a Service-Oriented World• Applying Robustness Analysis on the Model–View–Controller (MVC)

Architecture in ASP.NET Framework, using UML• A Java/Swing GUI Framework• Pragmatic Design• Comparison of EAI Frameworks• Aplicación paso a paso con Struts• OMG Membership Approves Adoption of Reusable Software Assets

(RAS) Standard