Download herramientas y entornos de programación

Document related concepts

Erik Meijer wikipedia , lookup

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