Download herramientas y entornos de programación
Transcript
HERRAMIENTAS Y ENTORNOS DE PROGRAMACIÓN Tema 1. Introducción Escuela Superior de Informática 1 Herramientas y Entornos de Programación Tema 1. Introducción ! Introducción (~ 3 horas) ! ! ! ! Generalidades sobre Ingeniería del Software Estilos y Principios Herramientas Patrones 2 Herramientas y Entornos de Programación Tema 1. Introducción – Generalidades sobre Ingeniería del Software to de la n ie im c o n o c teriza el os y c d a r o t a é c m e s s o lo m e ¿ Có are sobr w t f o S l e ación ? d m a ía r g o r P e Ingenier d l trabajo e n e s e r ia il x medios au ¿ Cómo han evolucionado lo medios para elevar la productividad de la s Programación ? ales tu c a s lo e d s a c ti s rí te c ra a ¿ Cuáles son las sc de Programación ? entornos gráfico ¿Cómo se relaciona mentales y las herran las herramientas mientas CASE? 3 Herramientas y Entornos de Programación Tema 1. Introducción – Generalidades sobre Ingeniería del Software ¿ Cómo caracterizar el conocimiento de la Ingeniería del Software sobre los métodos y medios auxiliares en el trabajo de Programación ? SWEBOK Software Engineering Body of Knowledge. Proyecto del Software Engineering Coordinatig Commitee. Comité conjunto de IEEE Y ACM. Versión liberada en Junio de 2004. Eds. Alain Abran y James W. Moore. ISO/IEC JTC1/SC7 Documento 3220. http://www2.computer.org/portal/web/swebok Se trata de promover la Ingeniería del Software como Profesión Reconocida • ¿ Qué es una profesión reconocida ? • ¿ Lo es la Ingeniería del software ? • Establecer el cuerpo de conocimiento del que se ocupa la Profesión de Ingeniero de Software 4 Herramientas y Entornos de Programación Tema 1. Introducción – Generalidades sobre Ingeniería del Software ! Áreas de conocimiento en SWEBOK ! ! ! ! ! ! ! ! ! Requerimientos del software Diseño del software Construcción del software Prueba del software Mantenimiento del software Gestión de la configuración del software Gestión de la ingeniería del software Herramientas y métodos de la ingeniería del software Calidad del software 5 Herramientas y Entornos de Programación Tema 1. Introducción – Generalidades sobre Ingeniería del Software ! Construcción del SW. Lenguajes de Programación ! Medios de comunicación entre las personas y los computadores ! Históricamente creados como respuestas a necesidades de las aplicaciones especificas ! Es una rama muy joven aun. Inestable. ! Es importante que la construcción del SW no dependa del lenguaje o de la metodología de la programación 6 Herramientas y Entornos de Programación Tema 1. Introducción – Generalidades sobre Ingeniería del Software ! Construcción del SW. Lenguajes de Construcción ! Contienen todas las formas de comunicación por medio de las cuales las personas pueden construir soluciones ejecutables en un sistema de cómputo. ! Formas simples de los Lenguajes de Construcción son los Lenguajes de configuración con los que los desarrolladores escogen entre opciones predefinidas para crear nuevo software de instalación. ! Lenguajes de Herramientas Toolkits (Ejemplos: Scripts, colecciones de herramientas de interfaz) ! Lenguajes de Programación. Formas mas flexibles de los Lenguajes de Construcción. 7 Herramientas y Entornos de Programación Tema 1. Introducción – Generalidades sobre Ingeniería del Software ! Construcción del SW. Otros temas importantes ... ! Estilos de construcción Estilo lingüístico Estilo formal Estilo visual ! Principios de organización Principio de Reducción de la Complejidad Principio de Anticipación de la Diversidad Principio de Estructuración y Validación Principio de Utilización de Estándares Externos ! Taxonomía de los Métodos de Construcción del SW ! Métodos de Construcción del SW Métodos Heurísticos Métodos Formales Métodos de Prototipado 8 Herramientas y Entornos de Programación Tema 1. Introducción – Generalidades sobre Ingeniería del Software ! Automatizar la Construcción del SW. ! La construcción automática supone el uso intensivo de las herramientas. ! Las herramientas de construcción automática tienden a tomar la forma de generadores de programas y de entornos altamente integrados que mas fácilmente pueden brindar control automático del proceso de construcción. ! Para ser eficaces las HCA de SW deben ! poseer interfaces sencillas e intuitivas. ! La automatización del SW se refiere no solo a las herramientas sino a a las abstracciones de programación. Ej: Concepto de clase en POO 9 Herramientas y Entornos de Programación Tema 1. Introducción – Generalidades sobre Ingeniería del Software ! Área de conocimiento Herramientas y métodos de la Ingeniería del Software. ! ! ! ! ! ! ! ! ! ! ! Herramientas Herramientas Herramientas Herramientas Herramientas Herramientas Herramientas Herramientas Herramientas Herramientas Misceláneas para para para para para para para para para para requerimientos de SW diseño de SW construcción de SW la prueba de SW el mantenimiento de SW los procesos de Ingeniería de SW el control de la calidad del SW la gestión de configuración de SW la gestión de la Ing. del SW el soporte de infraestructuras 10 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Introducción (~ 4 horas) ! ! ! ! Generalidades sobre Ingeniería del Software Estilos y Principios Herramientas Patrones 11 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Estilos de construcción ! Estilos de interrelación con los computadores, orientados a las personas que utilizan el software y en particular, los propios Lenguajes de Construcción. ! Los Lenguajes de Construcción deben presentar y recibir la información (INTERFAZ) de modo comprensible a los sentidos y las capacidades humanas. ! Necesidad de relacionarse con las capacidades humanas. ! Estilos de las INTERFACES DE CONSTRUCCION DE SOFTWARE: LINGUISTICO FORMAL VISUAL 12 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Estilo lingüístico ! A través de oraciones que asemejan a las del Lenguaje Natural ! Normalmente se transfieren visualmente en forma de texto (a veces como sonido) ¿ Ventaja principal ?: ! Son generalmente universales ¿ Desventaja ? ! Imprecisión para expresar necesidades al usar interfaces. Ejemplo: Dificultad para aprender su sintaxis 13 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Estilo formal ! Estilo del Pensamiento Humano caracterizado por la precisión y el rigor del razonamiento formal y lógico. ! Especialmente apropiado para trasladar a los computadores los propósitos humanos así como para verificar la precisión y la completitud de una construcción. PERO ! El razonamiento formal no es tan extendido como el Lenguaje. Conformado por: Componente innato + Habilidades adquiridas. ¿ Pueden todos hacer todo tipo de deducciones ? ! El razonamiento formal suele centrarse en lo fundamental del problema desechando los detalles. Este enfoque “estrecho” no es bueno para la construcción del SW. 14 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Estilo visual ! Apropiado para expresar la habilidad natural de navegar por el mundo complejo y tridimensional de imágenes. ! Interfaz Visual: Mecanismo de organización para presentar información a los humanos Y forma de concebir la navegación.. ! Apropiados para sistemas que requieren de muchos desarrolladores. Ya que permiten establecer como y cuando comunicarse con los demás. ! También útiles para métodos de construcción de SW por parte de una sola persona, ya que proveen formas de presentar opciones y ocultar detalles al sistema visual (interfaz) 15 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Los tres estilos de interacción con los computadores son orientados a los humanos. ¿ Que estilos se utilizan en los Lenguajes de Construcción ? ! Los Lenguajes de Construcción raramente se apoyan en un solo estilo. ! La mayoría de los Lenguajes utilizan estilos lingüísticos y estilos formales ! Los lenguajes de construcción “visuales” como Visual Basic y Visual Age for Java combinan los tres estilos: Interfaz visual + Procesamiento lingüístico tradicional de los datos + Expresión formal expresada a través de las gramáticas. 16 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principios de organización ! Además de los tres estilos de interrelación con los computadores orientados a los humanos, existen ! Cuatro principios de organización que afectan el modo en que tiene lugar la construcción del software: PRINCIPIO DE PRINCIPIO DE PRINCIPIO DE PRINCIPIO DE REDUCCIÓN DE LA COMPLEJIDAD ANTICIPACIÓN A LA DIVERSIDAD ESTRUCTURACIÓN PARA LA VALIDACIÓN USO DE ESTANDARES EXTERNOS 17 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principio de Reducción de la Complejidad ¿ Tienen las personas los recursos mentales necesarios para manejar sistemas complejos ? ! Este Principio refleja la limitada habilidad de las personas para trabajar (con su memoria) con sistemas complejos que tengan muchas partes o muchas interacciones. ! Se aplica a todos los aspectos de la construcción del SW ! Es particularmente crítico en los procesos de auto-verificación y de auto-comprobación de las construcciones del SW ! Existen tres técnicas principales para reducir la complejidad durante los procesos de construcción. ELIMINACIÓN DE LA COMPLEJIDAD AUTOMATIZACIÓN DE LA COMPLEJIDAD LOCALIZACIÓN DE LA COMPLEJIDAD. 18 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principio de Reducción de la Complejidad ! Técnica de Eliminación de la Complejidad ! ¿ En que consiste ? ! Consiste en eliminar durante la construcción del SW, las posibilidades o capacidades que no sean imprescindibles. ! Debe manejarse con cuidado. ! Principio de la Parsimonia: No añadir capacidades que nunca serán requeridas. 19 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principio de Reducción de la Complejidad ! Técnica de Automatización de la Complejidad ! Técnica mucho mas poderosa para eliminar la complejidad. ! Automatizar su manipulación ! Se crea un nuevo lenguaje de construcción en que las facilidades consumidoras de tiempo o propensas al error para ser realizadas por humanos, se transfieran al computador en forma de capacidades del software ! La historia del SW esta llena de ejemplos de poderosas herramientas de desarrollo que permiten que las personas se puedan ocupar de nuevos problemas. ¿ Ejemplos de este principio ? ! Sistemas Operativos, Lenguajes de Construcción Visual o sea (Entornos Gráficos de Programación) 20 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principio de Reducción de la Complejidad ! Técnica de Localización de la Complejidad ! Si la complejidad no puede ser eliminada ni automatizada, la única opción restante es localizar la complejidad en pequeñas unidades o módulos. ! Adecuados para la comprensión de una persona y suficientemente aisladas de modo que puedan auto-manejarse. ! Incluso COMPONENTES que puedan ser re-utilizados ! Una división exagerada pudiera no ayudar si las relaciones entre los módulos fuesen muy complicadas. ¿ Donde se dan buenos ejemplos de Localización ? ! Lenguajes de Programación. Como OOP ! También son promotores de Lenguajes de Construcción. ! Técnicas de diseño como maximizar la cohesión o minimizar el acoplamiento entre módulos. 21 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principio de Anticipación a la Diversidad ! Tiene que ver mas con como la gente usa el software que con las diferencias entre los computadores y las personas. ! No existe la construcción del software sin cambios ! Toda construcción de SW cambia de diversa manera en el tiempo. ! La anticipación de esos cambios es uno de los elementos principales den la Construcción del SW ¿ Que ocurre con las construcciones matemáticas formales ? ! Son estables en el tiempo. No requieren adaptación al computador. ¿ Y sus implementaciones ? ! Las implementaciones SW de las fórmulas matemáticas deben adaptarse. Por Ejemplo, a nuevas máquinas, etc 22 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principio de Anticipación a la Diversidad ! Técnica de Generalización ! Tendencia en la Construcción de SW a centrarse en problemas específicos. ¿ Por que ? ! Los casos generales no son obvios en los primeros estadios de análisis ¿ En que consiste la Generalización ? ! Es el proceso de reconocer, como algunos problemas específicos encajan juntos como parte de un marco más general de problemas y puede entonces ser resuelto por una sola construcción de SW en vez de que por varias construcciones aisladas. ! Es un concepto matemático. Buenas generalizaciones suelen expresarse en lenguaje matemático. ! Un buen diseño es otro aspecto de la generalización. ! Ejemplo: El uso de pilas es mas general que el uso de arrays de tamaño fijo. ! Deficiencia: Depende mucho de la habilidad del desarrollador para encontrar generalizaciones. Y aun así no siempre se tiene el interés o el tiempo para hacerlo. 23 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principio de Anticipación a la Diversidad ! Técnica de Experimentación ! Consiste en utilizar tempranamente construcciones de SW en tantos contextos de usuario diferentes como sea posible con el propósito explícito de recopilar datos que permitan generalizar la construcción. ! Es mas una técnica a nivel de proceso que a nivel de código ¿ Un ejemplo ? ! El método utilizado por Linus Torvalds para crear el S.O. Linux. Las construcciones de código individuales se incorporaban rápidamente al producto general y se distribuían por Internet, a veces, el mismo día en que eran generadas. De este modo se forzaba el uso., la experimentación y la actualización de las construcciones individuales. 24 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principio de Anticipación a la Diversidad ! Técnica de Localización ! Significa mantener los cambios anticipados tan localizados en una construcción de SW como sea posible. ! Resulta de la ejecución del principio de localización de la complejidad. ! Una construcción de SW que pueda ser cambiada normalmente haciendo un solo cambio en una sola localización dentro de la construcción, pone en evidencia una buena localización. ! La localización es muy común en la construcción de SW ¿ Que estructuras conocidas responden a la técnica de localización ? ! Objetos. Un buen diseño de objetos localiza los cambios en un objeto. ! Constantes de compilación. Para reducir la cantidad de cambios. ! Capas. Arquitecturas de capas utilizadas en la definición de los protocolos de comunicación 25 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principio de Estructuración para la Validación ! No importa cuanto cuidado de ponga en el diseño e implementación del SW, su naturaleza creativa y no trivial (no solo reimplantar), provocará la comisión de errores y omisiones. ! Estructurar para la validación significa construir el SW de modo que tales errores u omisiones puedan aparecer durante las pruebas. ! Para ello, el SW debe ser modular en al menos uno de sus espacios de representación. Por ejemplo el texto del programa desplegado o impreso ! Concepto de unidad de prueba. Se desarrollan en paralelo con la construcción 26 Herramientas y Entornos de Programación Tema 1. Introducción – Estilos y Principios ! Principio de Utilización de Estándares Externos ! ¿ Puede haber un SW escrito en un lenguaje particular ? ! Los Lenguajes de Construcción deben cumplimentar estándares externos. ¿ Ejemplo ? ! Las gramáticas de los lenguajes de programación. ! El conflicto entre reutilizar estándares externos o crear alguno nuevo es muy complejo. ! Internet: Fuerza mayor para el desarrollo del software y la interacción. Mas importante que antes, el uso de estándares externos. ! Lenguajes. Formatos de datos. Data Description Lenguajes como XML- eXtensible Markup Language) Es estándar pero hay gran número de adaptaciones (customizations) 27 Herramientas y Entornos de Programación Tema 1. Introducción – Herramientas ! Introducción (~ 4 horas) ! ! ! ! Generalidades sobre Ingeniería del Software Estilos y Principios Herramientas Patrones 28 Herramientas y Entornos de Programación Tema 1. Introducción – Herramientas ! Área de conocimiento Herramientas y métodos de la Ingeniería del Software. ! ! ! ! ! ! ! ! ! Herramientas Herramientas Herramientas Herramientas Herramientas Herramientas Herramientas Herramientas Misceláneas para para para para para para para para requerimientos de SW diseño de SW construcción de SW la prueba de SW el mantenimiento de SW el control de la calidad del SW la gestión de configuración de SW la gestión de la Ing. del SW 29 Herramientas y Entornos de Programación Tema 1. Introducción – Herramientas ! Herramientas para Requerimientos: Para registrar, analizar y validar los requerimientos del Software. ! RequisitePro (RATIONAL) ! DOORS (Quality Systems and Software) ! Herramientas de diseño: Para crear y verificar diseños del Software. Gran variedad en correspondencia con las notaciones y métodos. ! Enterprise Architect 30 Herramientas y Entornos de Programación Tema 1. Introducción – Herramientas Herramientas para Construcción: ! Editores de programas. De propósito general de manejo de textos. Específicas de edición de lenguajes ! Compiladores Pre-procesadores. Intérpretes. Editores de enlace ! Depuradores ! Mixtos Ejemplos: Editeur, ConText 31 Herramientas y Entornos de Programación Tema 1. Introducción – Herramientas Herramientas para la prueba del software. Se clasifican según las partes del proceso de prueba en que se utilicen. ! Generadores de prueba. Pueden ayudar a la obtención de casos de prueba. ! Marcos (frameworks). Simulan el comportamiento de los objetos que se están probando. ! Herramientas para evaluación de pruebas. Permiten evaluar los resultados de las pruebas y su comparación con lo esperado. ! Herramientas para la gestión de pruebas. Permiten apoyar el propio proceso de las pruebas. ! Ejemplos: Junit, otros… 32 Herramientas y Entornos de Programación Tema 1. Introducción – Herramientas Herramientas para el mantenimiento. ! Herramientas para ayudar a la comprensión humana de los programas. Ej.: Herramientas de visualización. ! Herramientas de Ingeniería Inversa. Procesos de trabajo que parten de los productos Software. Para crear componentes específicos como descripciones de diseño o especificaciones. ! Herramientas de re-ingeniería. Utilizar la Ingeniería Inversa u otros métodos para obtener nuevos productos a partir de productos anteriores. ! Herramientas para convertir código de un lenguaje a otro o convertir Bases de datos de un formato a otro. Ejemplos: Maintenance Assistant, RAMI 33 Herramientas y Entornos de Programación Tema 1. Introducción – Herramientas Herramientas para la calidad del Software ! Herramientas de inspección. Apoyo a las revisiones. ! Herramientas de análisis estático. Ejemplos: Analizadores sintácticos y semánticas, de consistencia, de dependencia. Tanto de código como de datos. ! Herramientas para el comportamiento dinámico de los productos Software. Así como para el análisis de sus prestaciones durante su ejecución. ! Ejemplos: KMKey Quality, Mipsis Software Quality 34 Herramientas y Entornos de Programación Tema 1. Introducción – Herramientas Herramientas para la Gestión de Configuración del Software ! Herramientas para la gestión de versiones. ! Herramientas para la gestión de la liberación y actualizaciones Ejemplos: PureCM, otros 35 Herramientas y Entornos de Programación Tema 1. Introducción – Herramientas Herramientas para la Gestión de la Ingeniería del Software. ! Herramientas para proyectar, planificar y realizar trazas. ! Herramientas para el análisis de riesgos y gestión de riesgos. ! Herramientas para realizar mediciones (métricas) ! Herramientas para realizar trazas de deficiencias y sus correcciones. 36 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Introducción (~ 4 horas) ! ! ! ! Generalidades sobre Ingeniería del Software Estilos y Principios Herramientas Patrones 37 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Definiciones ! Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno, y describe el contenido de la solución del mismo, con lo que puedes usar la solución sin tener que rehacerla. ! Una abstracción de una solución concreta dada para un problema concreto en un contexto determinado. ! Un patrón software para una arquitectura software describe un problema particular que ocurre una y otra vez, que se da en un contexto concreto y que presenta un esquema bien probado para su solución. El esquema de la solución se describe definiendo sus componentes, sus responsabilidades, relaciones y la forma en la que colaboran. 38 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Elementos de un patrón: ! Dependiendo del autor, del nivel de abstracción y de la publicación misma, se han presentado varios formatos para encapsular la información de un patrón. Los puntos más significativos que debe contener un patrón son: ! ! ! ! ! ! ! NOMBRE CONTEXTO PROBLEMA RELACIONES SOLUCIÓN EJEMPLOS USOS CONOCIDOS 39 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Nombre de un patrón: Significativo y corto, fácil de recordar y asociar a la información que sigue. ! Contexto: Define las precondiciones en las cuales se da el problema. ! Problema: Se describe las metas y objetivos buscados. ! Relaciones: Relaciones estáticas y dinámicas del patrón con otros. ! Solución: Reglas dinámicas que describen cómo solucionar el problema. ! Ejemplos: Uno o más ejemplos que ilustren el contexto, el problema y su solución. 40 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Justificación ! Diseño de sistemas escalables y reutilizables es complejo. ! Diseñar bien a la primera vez es imposible. ! Se hace uso de soluciones probadas (experiencia). ! ! ! ! Reutilizan el conocimiento y la experiencia de diseñadores experimentados. Catalogan y documentan la experiencia en un dominio Las empresas requieren productividad y calidad. Necesidad de aprovechar la experiencia en problemáticas anteriores. Introducen puntos de vista de gran experiencia en los novatos. Definir un vocabulario para ingenieros. 41 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Principales categorías de patrones: ! Existen varios tipos de patrones, dependiendo del nivel de abstracción, del contexto particular en el que se aplican o de la etapa en el proceso desarrollo. Gamma los clasifica en: ! PATRONES DE CREACIÓN ! PATRONES ESTRUCTURALES ! PATRONES DE COMPORTAMIENTO 42 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones Patrones de creación : ! Este tipo de patrones abstrae el proceso de instanciación de los objetos. Ayudan a hacer un sistema independiente de cómo sus objetos son creados, compuestos y representados. ! Ejemplos: ! ! ! ! ! Abstract Factory Builder Factory Method Prototype Singleton 43 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones Patrones estructurales : ! Los patrones estructurales tratan de ver cómo las clases y los objetos se unen para formar grandes estructuras. Este tipo de patrones usan la herencia para componer interfaces o implementaciones. Estos patrones son particularmente útiles para hacer desarrollos independientes de librerías de clases que trabajan juntas. ! Ejemplos ! ! ! ! ! ! ! Adapter Bridge Composite Decorator Facade Flyweight Proxy 44 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Patrones de comportamiento : ! Este tipo de patrones tratan sobre algoritmos y asignación de responsabilidades entre objetos. Ejemplos: ! Chain of Responsibility ! Interpreter ! Observer ! Mediator 45 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! SINGLETON (creación) ! Contexto: ! Hay clases que necesitan tener solo una instancia. ! Problema: ! Solamente se necesita una instancia de una clase. ! Esta instancia debería ser extensible por diferentes clases sin ser modificada. 46 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones SINGLETON (creación) ! Relaciones: ! Muchos patrones son implementados usando este patrón. Por citar algunos ejemplos: ! Abstract Factory ! Builder ! Prototype 47 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones Singleton ! Solución: ! Estructura de clases ! Implementación : ! La siguiente implementación es en Java aunque puede ser el patrón implementado en cualquier otro lenguaje orientado a objetos. 48 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones public class MiClase{ //Esta variable guarda la instancia única de la clase private static MiClase InstanciaUnica = new MiClase(); //Anulacion del constructor con private private MiClase() { /*Codigo constructor*/ } //Devuelve siempre la misma instancia para esta clase public static getInstance() { return InstanciaUnica; } public void MetodoPropioA(){} public void MetodoPropioB(){} public void MetodoPropioC(){} } // Fin de clase 49 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Singleton ! Ejemplos: ! Sistema spooler para impresoras. ! Sólo debería haber un sistema de manejo spooler ! Sólo una ventana "manager". ! Usos conocidos: ! Smalltalk-80 ! Más información en: ParcPlace Systems, Mountain View, CA. ObjectWorks\Smalltalk Release 4 Users Guide, 1990. ! The InterViews user interface toolkit ! Más información en: Mark Linton, Paul Calder, John Interrante, Steven Tang, and John Vlissides. InterViews Reference Manual. CSL, Stanford University, 3.1 edition,1992. 50 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! FACADE ! Contexto: ! Estructurar un sistema y sus subsistemas para reducir la complejidad al máximo. ! Minimizar la comunicación y dependencias entre subsistemas ! Problema: ! Unificar en una interfaz, todas la interfaces de un subsistema. 51 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! FACADE ! Se pretende pasar de una situación a otra: 52 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! FACADE ! Relaciones: ! Abstract Factory es también ser una alternativa a Facade para ocultar especificaciones de plataformas de clases. ! Mediator ! Singleton ! Normalmente, sólo es requerido un objeto de tipo Facade. 53 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! FACADE ! Implementación : ! La implementación es trivial consiste simplemente en ofrecer una clase que haga de interfaz con el subsistema . public class MiClase{ public Miclase( ){ (.........) } public void Accion1DeSubsistema ( ) { (.........) } public void Accion2DeSubsistema ( ) { (........). } }//Fin de clase 54 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! FACADE Ejemplos (Ejercicio propuesto): ! ! Patrón facade para acceso a bases de datos. Patrón facade para lectura de archivos XML. Implementación (0.10) y Explicación en clase (0.15) Se sumará a la nota final en caso de estar correcto en su desarrollo y en su explicación. Debe incluirse un sencillo ejemplo que haga uso del patrón. 55 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! FACADE ! Usos conocidos: ! ObjectWorks\Smalltalk compiler system ! Más información en: ParcPlace Systems, Mountain View, CA. ObjectWorks\Smalltalk Release 4 Users Guide, 1990. ! ET++ application framework ! Más información en: André Weinand, Erich Gamma, and Rudolf Marty. ET++—An object-oriented application framework in C++. 56 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! OBSERVER ! Contexto: ! Cuando un objeto cambie de estado, informar a los demás de este cambio. ! Problema: ! Definir una o muchas dependencias entre objetos de modo que cuando un objeto cambie de estado, todos los objetos dependientes de este sean actualizados automaticamente. 57 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Observer ! Problema de ejemplo 58 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! OBSERVER ! Solución 59 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! OBSERVER ! Solución: 60 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! OBSERVER ! Ejemplos: ! Sistema de eventos Este patrón suele observarse en los marcos de interfaces gráficas orientados a objetos, en los que la forma de capturar los eventos es suscribir 'listeners' a los objetos que pueden disparar eventos 61 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Composite ! Contexto ! Se quiere representar una jerarquía de objetos todo- parte. ! Cuando se pretende que los clientes sean capaces de ignorar la diferencia entre objetos compuestos y objetos individuales ! Problema ! Manipular todos los objetos contenidos en el árbol de forma uniforme, ya que todos ellos poseen una interfaz común definida en la clase 62 Herramientas y Entornos de Programación Tema 1. Introducción – Patrones ! Composite ! Solución 63 Herramientas y Entornos de Programación Tema 1. Introducción – Bibliografía Bibliografía ! SWEBOK. www.swebok.org ! Gamma, E., Helm, R. Johnson, R. & Vlissides, J. Design patterns: Elements of Reusable Object-Oriented Software. (1994) Ed. Addison Wesley Professional ! Grand, M. Patterns in Java: a catalog of reusable design patterns illustrated in UML, volume 1, chapter 6, pages 155-163. John Wiley & Sons, 1998. ! Garzás, A. Introducción a los patrones de diseño. Internal Report. UCLM 2004. 64