Ingeniería de Software II
Primer Cuatrimestre de 2010
Clase 10: Conectores de Software
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
2
Estructuras de componentes y conectores
Estas estructuras están centradas en procesos que se comunican.
Sus elementos son entidades con manifestación runtime que consumen recursos de ejecución y contribuyen al comportamiento en ejecución del sistema
La configuración del sistema es un grafo conformado por la asociación entre componentes y conectores
Las entidades runtime son instancias de tipos de
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Componentes
Identificamos componentes con un nombre que nos de una
pista sobre su función
Los componentes son instancias de un tipo de componente
El tipo de componente nos indica las interfaces que provee y
las propiedades requeridas
Muchas veces los tipos de componente son heredados del
estilo
Los componentes tienen puertos que deben encontrarse
Ambigüedad
C1 invoca a C2? o C2 invoca a C1?
Si C1 llama a C2:
C1 le pasa datos a C2?, C1 obtiene un resultado de C2?,
C1 causa que C2 se “cargue”?, C2 no puede ejecutar hasta que C1 ejecute?, C1 tiene que esperar que C2 termine?
Si tengo que mostrar flujo de datos: uso dos flechas?, uso
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Conectores
Un conector representa una interacción en tiempo de
ejecución entre dos o más componentes
El tipo de conector indica la cardinalidad (cantidad de
componentes en la interacción), las interfaces que soporta y las propiedades requeridas
El tipo de conector se hereda generalmente del estilo
El conector asume un conjunto de roles dentro de la
Definiciones
Un conector es un elemento de la arquitectura que
modela:
Interacción entre componentes
Reglas sobre esas interacciones
Hay muchos tipos de conectores, de variada
complejidad
Cada conector provee
“Ductos” para la interacción
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Elementos
Un componente solo se puede conectar con otro
mediante un conector
Un componente puede tener varios
puertos
Punto de entrada/salida de señales o mensajes
desde el componete
Cada puerto tiene su protocolo (orden de
mensajes)
Un conector se conecta a uno o varios puertos
A los puntos de conexión del conector se lo
denomina
rol
. (es la contraparte del puerto)
El conector tiene su protocolo que determina
como interactuan sus diferentes roles.
8
port port
Ejemplo: Conector Call
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
10
Pipe and Filter
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
encola desencola
El sensor va enviando las señales que se van encolando hasta que el controlador las va tomando.
-Conector debe definir:
-Protocolo de Cola -Tamaño de la Cola
-Que pasa cuando se llena
-Ignora paquetes?
-Descarta los mas viejos?
Conectores en arquitectura vs. en implementación
En arquitectura:
Entidades de “primera clase”
Tienen identidad
Describen toda la interacción
Tienen especificaciones y abstracciones
En implementaciones
Generalmente sin código dedicado
Generalmente sin identidad
Típicamente no son unidades de compilación
La implementación está distribuida (módulos,
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Beneficios de conectores de “primera clase”
Componentes <> Conectores
Funcionalidad específica de una aplicación vs.
mecanismos de interacción independientes
Separar computación de interacción
Minimizar interdependencias
Facilitar evolución
De componentes, conectores
Facilitar heterogeneidad
Facilitar el analisis y testing del sistema
Algunos puntos clave que involucran conectores
El bloqueo del que invoca esperando la respuesta del
invocado, es decir la necesidad de concurrencia
La conveniencia de hacer esa comunicación implícita o
explícita por razones de flexibilidad
Las necesidades de “anticipación al cambio” en cuanto a
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Roles de conectores
Especificación del protocolo que define sus
propiedades
Tipos de interfaces
Certezas sobre propiedades de la interacción
Reglas sobre órdenes de invocación
Connectores como comunicadores
Rol principal de un conector
Enviar y recibir información
Soporte para:
Diferentes mecanismos de comunicación
Ej: llamada de procedimiento, acceso a datos
compartidos, pasaje de mensajes
Condiciones sobre la forma de comunicarse/dirección
Ej: pipes
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
16
Conectores como coordinadores
Determina el flujo de control del cómputo
Controla la entrega de información
Separa el control de la computación
Ejemplos
Llamadas a procedimientos
Más complejos: Signals, balanceadores de
Conectores como conversores
Permiten la interacción de componentes
desarrollados independientemente,
heterogéneos, que no “machean” directamente
Diferente interface/Tipos
Frecuencia
Protocolo de uso
Conversores:
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
18
Connectores como facilitadores
Permiten la interacción de componentes
Ej: Mediaciones
Control de acceso a información compartida
Aseguran el cumplimiento de perfiles de
performance
Ej: balanceo de carga
Schedulling
Mecanismos de sincronización
Monitores
Tipos de conectores
Llamada a procedimientos
Datos compartidos
Acceso a datos
Evento
Stream
Distributor
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Conectores de llamada a procedimientos
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
22
Running Example: El aterrizador
lunar
Versión simplificada:
El piloto controla la tasa de descenso del Apollo Lunar
Lander
Usa una valvula para controlar el motor de descenso
Combustible acotado
La altura y velocidad inicial viene prefijadas
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
24
Invocación implícita
Anuncio de eventos en vez de invocación de
métodos
Los interesados se registran y asocian metodos a
eventos
El sistema invoca a todos los metodos
registrados de forma implicita
Las interfases de las componentes son metodos y
eventos
Invariante
Los anunciantes no conocen el efecto que
pueden tener los eventos
No se puede asumir nada sobre el
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Message router
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
29
Pub-Sub LL
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
31
Blackboard LL
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Conectores de Stream
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Conectores tipo “arbitrators”
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Conectores tipo “distributor”
Message router
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
¿Cómo se elige un conector?
Determinar las necesidades de interconexión e interacción
Determinar roles a ser cumplidos por los conectores de
software
Comunicación, coordinación, conversión, facilitación
Para cada conector
Determinar su tipo apropiado
Determinar las dimensiones de interés
Seleccionar valores para cada dimensión
Para conectores “compuestos”
Determinar las compatibilidades de conectores
atómicos
Composición de componentes básicos
En muchos sistemas se requieren conectores que “unan”
varios conectores indivuduales
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
RPC – Combinando Call y Distributor
41
Composición de componentes básicos
No todos los conectores pueden ser compuestos
Algunos no pueden operar o son incompatibles
Todos implican trade-offs
Ejemplo:
Pasar parametros por nombre o por referencia a otro
© Cátedra de Ingeniería de Software II – FCEN – UBA, 2010
Resumen
Puertos
Los conectores permiten separar la computación
de la comunicación.
Pueden ser desde simples llamadas a tener
protocolos muy complejos (ej: P2P)
Consejos:
Indicar claramente qué puerto se usa cuando se vincula
un componente a un conector
Explicitar (al menos informalmente) el protocolo de
comunicación del conector
Explicar que tipo de servicio de interconexion provee el
conector (comunicación, coordinacion, datos, etc)