Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y...
-
Upload
beltran-concepcion -
Category
Documents
-
view
11 -
download
2
Transcript of Dr. Juan José Aranda Aboy Aspectos Avanzados de la Tecnología de Objetos 5. Frameworks y...
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.
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.
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.
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.
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
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
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.
Dr. Juan José Aranda Aboy
Proceso de desarrollo del framework
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.
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()
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.
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.
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.
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
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.
Dr. Juan José Aranda Aboy
Frameworks de caja blanca vs. Frameworks de caja negra
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
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.
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, …
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.
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.
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...
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
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