Aspectos Avanzados de la Tecnología de Objetos

Slides:



Advertisements
Presentaciones similares
Desarrollo de aplicaciones en n- capas
Advertisements

MODELOS ORIENTADOS A OBJETOS
Sistema de Información Cultural, CONACULTA México, 2006 SiC / RENiC Aspectos técnicos relevantes para un Sistema de Información (SI)
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
Unidad 3 Lenguajes .Net y POO
Red Social: “Un millón de Amigos”.
Lenguaje Unificado de Modelado
Aplicaciones Criptográficas Java Proyecto Fin de Carrera Facultad de Informática Universidad de Las Palmas de Gran Canaria Autor: Jesús María Ramos Saky.
INTRODUCCIÓN A JAVA.
MI PROGRAMA DE FORMACION
Introducción a la Programación
Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz.
Índice 1. Introducción, objetivos y justificación del proyecto.
TOGAF.
Java 2 Platform Enterprise Edition
Aplicación del paradigma orientado a objetos
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
Ingeniería del Software
Aspectos Avanzados de la Tecnología de Objetos
Aspectos Avanzados de la Tecnología de Objetos
1  2008 Universidad de Las Américas - Ingeniería de Software : Dr. Juan José Aranda Aboy ACI491: Ingeniería de Software Unidad 7: Proceso de Ingeniería.
El paradigma de la orientación a objetos La programación orientada a objetos genera códigos eficientes y estandariza la metodología de programación, además.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
HERRAMIENTAS CASE.
 El termino OO, significa que el software es organizado como una colección de objetos. Un objeto es un paquete de software que contiene datos y procedimientos.
Contexto: Aplicación gráfica.  Siempre que se piensa en separar la funcionalidad de una aplicación de su interacción con el usuario, bien sea una aplicación.
Diseño de Sistemas. Patrones de Diseño. Geronimo Manso.
MOODLE ASPECTOS BÁSICOS
Patrones de Comportamiento: Patrón de Diseño Observer
STARUML.
Diseño del Software Diseño de datos Diseño arquitectónico
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
Ingeniería de Software
Como Desarrollar SW Distribuido de Calidad
DISEÑO DE SOFTWARE 1ª. Parte
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Presentado por Alfredo de la Mora Díaz Catedrático Dr. Jesús Favela
Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.
Programación Orientada a Objetos
Juan Manuel Perdigón Mario Felipe Monsalve
INTRODUCCIÓN A JAVA. Índice ¿Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales ¿Qué ventajas tengo como desarrollador?
Patrones de diseño Web Pierre Sergei Zuppa Azúa.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Modelo-Vista-Controlador Este patrón fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementación original fue realizada en Smalltalk.
FRAMEWORK VS Código fuente
PROYECTO EMPRESARIAL Clase # 1.
Desarrollo de Software Orientado a Objetos (deficiencias)
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Juan Timoteo Ponce Ortiz
Introducción a UML Departamento de Informática Universidad de Rancagua
Ingeniería de Requisitos
CONTRATOS DE CLIENTES Orlando Sedamano Cornejo Marco Bustinza
Patrones de diseño equipo n.1
Algoritmos y Programación III
Jairo Pinto Ing. sistemas
DISEÑO CURRICULAR Presentado por: Cesar Augusto Sáenz María Alejandra Hernández 1.contenidos curriculares de competencia.
Programación orientada a objetos
Software.
Guadalupe Andrade Mociño.  Significa Modelo Vista Controlador  Es un patrón de diseño  Esta compuesto por tres grandes capas: modelo, vista y controlador.
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Simulador Redes Nombres etc,,.
Gestión de proyectos fin de carrera
Your Logo ING. FREDY ALEXANDER MARTINEZ. Here comes your footer  Page 2 Este patrón fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementación.
Software.
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
MODELAMIENTO VISUAL Y UML
1 Introducción a la Programación Orientada a Objetos Programación Orientada a Objetos Departamento de Sistemas Universidad del Cauca 2006.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Transcripción de la presentación:

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

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

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 Conocimiento del Dominio : ¿Para cuáles aplicaciones será el Framework? ¿Qué es común a todas ellas? Arquitectura: Las mayores y mas críticas decisiones técnicas ¿Qué se requiere, además de las clases? 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

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

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

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

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

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

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

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

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

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 Dr. Juan José Aranda Aboy