DYMOS: Uma abordagem para suporte a

variabilidades dinâmicas em Linhas de
Produto de Software Orientado a Serviços
e Sensível ao Contexto
Centro de Informática
Universidade Federal de Pernambuco
Dhiego Abrantes de Oliveira Martins
Orientadores: Vinicius Cardoso Garcia (Cin/UFPE)
Uirá Kulesza (DIMAp/UFRN)

Agenda






Introdução e Motivação
Definição do Problema
Solução Proposta
Contextualização
DYMOS Framework
Avaliação Preliminar
Considerações Finais

2

INTRODUÇÃO E
MOTIVAÇÃO
3

Introdução e Motivação
• sistemas mais flexíveis e dinâmicos
– componentes plugáveis, em tempo de execução
– necessidade de decisões e adaptações em tempo de
execução
– Sistemas Sensíveis ao Contexto

• e se aplicarmos abordagens de LPS?
– tais decisões e adaptações resultam na configuração de
um novo sistema
– Abordagem convencional
• configuração  fase de design ou implementação
 seleção de features e ligação de variabilidades

4

Introdução e Motivação

E se tais decisões estiverem ligadas a atributos
do contexto (Localização, Conectividade, etc) ?

5

Introdução e Motivação

Um dos principais desafios na tentativa de unir
Sistemas Sensíveis ao Contexto a abordagens de
LPS…
Decisões precisam ser adiadas da fase de design
ou implementação para a fase de tempo de

execução

6

PROBLEMÁTICA

7

Problemática
• Arquitetura Orientada a Serviços (AOS)
– estrutura dinâmica e desacoplada
– flexibilidade e poder de adaptação
– características requeridas por muitas LPS

• AOS + LPS = Linhas de Produto Orientadas a
Serviço
– aumento na reusabilidade
– maior suporte a mudanças e adaptações
– implantação facilitada

8

Problemática

Se alinharmos os paradígmas de Sistemas Sensíveis
ao Contexto, modelo de Arquitetura Orientada a
Serviços e Linhas de Produto de Software, podemos
enfrentar alguns desafios…

9

Problemática

Um sistema derivado de uma LPS é composto por
features comuns e variáveis.
Considerando que o modelo AOS segue o padrão
Cliente-Servidor…
Podemos ter o seguinte cenário…

10

Problemática
Aplicação Cliente

Servidor

Feature 1

Serviço A

Feature 2

Serviço B

Feature 3

Serviço C

Feature N

Serviço D

11

Problemática
Aplicação Cliente
Feature 1

Servidor
usa
usa

Serviço A

Feature 2

Serviço B

Feature 3

Serviço C

Feature N

Serviço D

12

Problemática
Aplicação Cliente
Feature 1

Servidor
usa
usa

Serviço A

Feature 2

Serviço B

Feature 3

Serviço C

Feature N

Serviço D

13

Problemática
Aplicação Cliente
Feature 1

Servidor
usa
usa

Serviço A

Feature 2

Serviço B

Feature 3

Serviço C

Feature N

Serviço D

14

Problemática
Aplicação Cliente
Feature 1

Servidor
usa
usa

Serviço A

Feature 2

Serviço B

Feature 3

Serviço C

Feature N

Serviço D

Este tipo de cenário não é tratado por
abordagens propostas atualmente.
15

Problemática

Como possibilitar reconfigurações de variabilidades
dinâmicas em Linhas de Produto de Software
Orientado à Serviços e Sensível ao Contexto?

16

SOLUÇÃO PROPOSTA

17

Solução Proposta

DYMOS: Um framework para suporte a
variabilidades dinâmicas em Linhas de Produto de
Software Orientado a Serviços e Sensível ao
Contexto

18

Solução Proposta
• DYMOS
– Abordagem leve e simples
– Reconfiguração de variabilidades dinâmicas
– Descoberta de Serviços

• Demais abordagens
– Complexidade, que dificulta a utilização em sistemas de
pequeno porte
– Serviços são tratados como features auto-contidas
– Acoplamento com a LPS

19

Solução Proposta
• O DYMOS em três lacunas
1. Notificações sobre adaptações de features
2. Reconfiguração de variabilidades dinâmicas
3. Descoberta de Serviços

20

CONTEXTUALIZAÇÃO

21

Linhas de Produto de Software

Pode ser definida como um conjunto de sistemas de
software que compartilham características em
comum e que satisfazem as necessidades de um
segmento específico de mercado.

22

Linhas de Produto de Software

{

partes variáveis

Plataforma

Plataforma

partes comuns

Plataforma

23

Linhas de Produto de Software

Atividades Essenciais na Engenharia de Linha de Produto de
Software.

24

Linhas de Produto de Software
LPS Dinâmicas
– Extendem o conceito convencional de LPS
– aspectos dinâmicos para tratar variabilidades
– bind a unbind de pontos de variação em tempo de
execução, de acordo com mudanças no contexto
– variabilidade estática vs. variabilidade dinâmica

25

Linhas de Produto Orientadas
a Serviços

26

Linhas de Produto Orientadas
a Serviços
Computação Orientada a
Serviços
• Aplicações Distribuídas
• Funcionalidades como
serviços
• Onde Serviços são:
– independentes de
plataforma
– auto descritivos
– auto contidos

27

Linhas de Produto Orientadas
a Serviços
• Utiliza o modelo de Arquitetura Orientada a
Serviços, herdando seus benefícios
• Estrutura dinâmica e desacoplada
• Mais Flexibilidade
• Maior poder de adaptação

28

Linhas de Produto Orientadas
a Serviços

29

Linhas de Produto Orientadas
a Serviços

30

DYMOS FRAMEWORK

31

DYMOS Framework
• DYMOS
– Abordagem leve e simples
– Reconfiguração de variabilidades dinâmicas, por meio de
adaptação de componentes
– Descoberta de Serviços
– Mecanismos de auto-implantação
– Interoperabilidade
– Baixo acoplamento com a LPS

32

DYMOS Framework
• O DYMOS em três lacunas
1. Notificações sobre adaptações de features
2. Reconfiguração de variabilidades dinâmicas
3. Descoberta de Serviços

Para preencher estas lacunas,
implementamos…



Descritor de Serviços
Descritor de Variabilidades
Mecanismo de Reconfiguração de Serviços
Mecanismo de Descoberta de Serviços

33

DYMOS Framework
Arquitetura e Implementação

34

DYMOS Framework
Arquitetura e Implementação: Visão Geral

35

DYMOS Framework
Arquitetura e Implementação: Componentes
Descritores
• Estrutura de metadados que permite descrever
elementos.
• Permite a converter os elementos descritos em
objetos Java, facilitanto o gerenciamento das
informações.
• Implementam a interface ObjectDescriptor.

36

DYMOS Framework
Arquitetura e Implementação: Componentes
Descritores

37

DYMOS Framework
Arquitetura e Implementação: Componentes
Descritores
• ServiceDescriptor
• VariabilityDescriptor
• WSDLDescriptor

38

DYMOS Framework
Arquitetura e Implementação: Componentes
Descritores

39

DYMOS Framework
Componentes Descritores: ServiceDescriptor

Estrutura de Metadados de Serviços: Diagrama
de Classes
40

DYMOS Framework
Componentes Descritores:
VariabilityDescriptor

Estrutura de Metadados de Variabilidades:
Diagrama de Classes
41

DYMOS Framework
Componentes Descritores: WSDLDescriptor
• Utilizado nas operações de Descoberta de
Serviços
• Permite acessar atributos particulares de cada
implementação
– ServiceName
– PortType
– TargetNamespace

42

DYMOS Framework
Componentes Descritores: WSDLDescriptor

Visão Geral do Fluxo de dados do WSDLDescriptor

43

DYMOS Framework
Arquitetura e Implementação: ServiceContext
• Gerencia e mantém as informações sobre
serviços e variabilidades
• Responsável por efetuar operações de…
– Reconfiguração de Variabilidades
– Descoberta de Serviços
– ContextHotBuild

44

DYMOS Framework
ServiceContext: Reconfiguração de
Variabilidades
• permite a reconfiguração dinâmica de serviços
– ativação ou desativação, de acordo com mudanças no
contexto

45

DYMOS Framework

Reconfiguração de Variabilidades: Diagrama
de Sequência
46

DYMOS Framework
ServiceContext: Descoberta de Serviços
• agrega características dinâmicas, permitindo que
a relação entre cliente e serviço não seja tratada
de forma fixa.
• permite inserir critérios de seleção, por exemplo,
por ordem de prioridade.

47

DYMOS Framework
ServiceContext: Descoberta de Serviços

Descoberta de Serviços: Visão geral sobre interação
entre componentes

48

DYMOS Framework
ServiceContext: Descoberta de Serviços
• Busca por Spec e Impl
• Busca por Servicos alternativos, por prioridade
• Busca qualquer serviço que atenda a Spec

“serviceEndpoint;targetNamespace;serviceName”
Descoberta de Serviços: Formato de
referência de serviço (serviceEndpoint)

49

DYMOS Framework
ServiceContext: ContextHotBuild
• permite a implantação de novos serviços e
variabilidades sem a necessidade de interromper
a execução do framework.
• hot swapping de serviços e variabilidades
• atualização dos descritores de serviços e
variabilidades
• implantação de forma facilitada, sem exigir uma
interação direta com o container OSGi por meio
de linhas de comando

50

DYMOS Framework
Arquitetura e Implementação:
ApplicationService
• Implementado como uma fachada
• Externaliza por meio de Web Services, as funções
de Reconfiguração e Descoberta de Serviços
• Interoperabilidade

51

AVALIAÇÃO PRELIMINAR

52

Avaliação Preliminar
Objetivos
• Avaliar a efetividade da abordagem
proposta, aplicando-a em uma LPS
Orientada a Serviços e Sensível ao
Contexto
• Averiguar a possibilidade de reuso dos
artefatos em outro sistema da mesma LPS

53

Avaliação Preliminar
Metodologia utilizada
• Seleção de uma LPS Orientada a Serviços
e Sensível ao Contexto
• Seleção de dois produtos desta LPS
– Produto 1: Aplicar abordagem proposta
– Produto 2: Averiguar a possibilidade de reuso
dos artefatos utilizados no Produto 1

• Em cada um dos produtos, foram efetuada
Análises e Definições, que guiaram esta
avaliação
54

Avaliação Preliminar
LPS e Produtos
• MobiLine
– Possui apenas adaptações comportamentais
– Necessidades da LPS motivaram alguns
requisitos

• GREat Tour e CIn Tour
– Documentação e Implementação disponíveis

55

Avaliação Preliminar
LPS e Produtos
• MobiLine
– LPS aninhada, cujo o domínio é de aplicações
móveis e sensíveis ao contexto

• Guia de Visitas Móvel
– GREat Tour
– CIn Tour

56

Avaliação Preliminar
GREat Tour
• Guia de Visitas Móvel e Sensível ao Contexto.
• Auxilia visitantes a conhecer o laboratório de
pesquisa e desenvolvimento do GREat (Grupo de
Redes, Engenharia de Software e Sistemas) da
Universidade Federal do Ceará.
• É executada no dispositivo móvel do visitante e
fornece informações sobre o ambiente.

57

Avaliação Preliminar
GREat Tour: Análises e Definições
1. Análise do modelo de features
2. Análise da implementação dos artefatos
referentes às features selecionadas
3. Analisar os casos de incompatibilidade
4. Análise da implementação dos artefatos da
aplicação cliente

58

Avaliação Preliminar
GREat Tour: Analisando o Modelo de
Feature
• Analisar o modelo de features
– Identificar e selecionar features e pontos de variação
que seriam utilizados na avaliação da abordagem

59

GREat Tour: Modelo de features parcial
60

Avaliação Preliminar
GREat Tour: Analisando o Modelo de
Feature
• Features
– Privacy
– Show Document
– Video

• Sumarizando os Pontos de Variação…
– Modo de acesso
– Tipo de Mídia Disponível para Visualização
– Provedor de Stream de Vídeo

61

Avaliação Preliminar
GREat Tour: Analisando os Artefatos
• Análise da implementação dos artefatos
referentes as features selecionadas
1.
2.
3.
4.

Identificar
Identificar
Identificar
Verificar a

Artefatos
as Implementações destes artefatos
as Tecnologias Utilizadas
compatibilidade com OSGi.

62

Avaliação Preliminar
GREat Tour: Analisando os Artefatos
1 e 2: Identificação dos Artefatos e suas
Implementações
Features

Artefatos

Privacy

LoginService

Show
Document

TextService, ImageService, VideoService

Video

LocalVideoProviderService,
Relação
entre features e artefatos
ExternalVideoProviderService

63

Avaliação Preliminar
GREat Tour: Analisando os Artefatos
3 e 4: Tecnologias Utilizadas e Compatibilidade com
OSGi





Funções disponibilizadas como serviços web.
Java como linguagem de programação
Apache Axis para construção dos serviços web.
Conexão com banco de dados (MySQL)
Apache Tomcat como servidor web.
Serviços não estão implementados na forma de bundles.

64

Avaliação Preliminar
GREat Tour: Analisando
Incompatibilidades
Incompatibilidades Identificadas
• LoginService
• TextService
• ImageService
• VideoService

65

Avaliação Preliminar
GREat Tour: Estratégia para Migração
• Implementação de Provedor de Conexões
• Separar Interfaces e Implementações
– componentes empacotados em bundles diferentes

66

Avaliação Preliminar
GREat Tour: Estratégia para Migração
• Implementação de Provedor de Conexões

Dependência entre Serviço Provedor de Conexões e
demais Serviços Modularizados
67

Avaliação Preliminar
GREat Tour: Estratégia para Migração
• Separar Interfaces e Implementações
– componentes empacotados em bundles diferentes

68

Avaliação Preliminar
GREat Tour: Estratégia para Migração
• Separar Interfaces e Implementações
– componentes empacotados em bundles diferentes

69

Avaliação Preliminar
GREat Tour: Descrevendo Serviços e
Variabilidades
• Efetuar a descrição dos serviços de acordo
com os serviços que compõem o produto
• Descrever as variabilidades presentes na
configuração do produto, mapeando-as
com os serviços descritos.

70

Descrevendo Serviços

71

Descrevendo Variabilidades

72

Avaliação Preliminar
GREat Tour: Analisando e Integrando o
Cliente
• Análise de Implementações
– Identificar como ocorre a interação com
serviços
– Identificar pontos de adaptação

• DymosClientLib
– VariabilityContext
– ServiceEndpointFactory
– ServiceEndpoint
73

Avaliação Preliminar
GREat Tour: Analisando e Integrando o
Cliente
• Interação com Serviços

Interação com Serviços
74

Avaliação Preliminar
GREat Tour: Analisando e Integrando o
Cliente
• Interação com Serviços

Interação com Serviços utilizando a DymosClientLib

75

Avaliação Preliminar
GREat Tour: Analisando e Integrando o
Cliente
• Pontos de adaptação

Integrando funcionalidade de Reconfiguração de
Variabilidades

76

Avaliação Preliminar
CInTour
• Guia de Visitas Móvel e Sensível ao Contexto.
• Auxilia visitantes a conhecer o CIn (Centro de
Informática) da Universidade Federal de
Pernambuco.
• É executada no dispositivo móvel do visitante e
fornece informações sobre o ambiente.

77

Avaliação Preliminar
CInTour: Análises e Definições
1. Análise do modelo de features
2. Descrever Serviços e Variabilidades

78

Avaliação Preliminar
CInTour: Analisando o Modelo de
Feature
• Analisar o modelo de features
– Identificar e selecionar features e pontos de variação em
comum com o GREat Tour, para serem utilizados na
avaliação da abordagem.

79

CInTour: Modelo de features parcial
80

Avaliação Preliminar
CInTour: Analisando o Modelo de
Feature
• Features
– Show Document

• Sumarizando os Pontos de Variação…
– Tipo de Mídia Disponível para Visualização

81

Avaliação Preliminar
CInTour: Descrevendo Serviços e
Variabilidades
• Efetuar a descrição dos serviços de acordo
com os serviços que compõem o produto
• Descrever as variabilidades presentes na
configuração do produto, mapeando-as
com os serviços descritos.

82

Descrevendo Serviços

83

Descrevendo Variabilidades

84

Avaliação Preliminar
Conclusões da Avaliação
• A abordagem proposta foi avaliada de forma
preliminar, sendo aplicada em dois produtos de
uma LPS
• Implementações atuais incompatíveis com OSGi
– Esforço inicial para modularizar os serviços

• Viabilidade na utilização da abordagem proposta
• Possibilidade de reutilização dos serviços
modularizados por outros produtos da LPS
– Adoção facilitada
– Ganhos em custo e tempo de entrega

85

CONSIDERAÇÕES FINAIS

86

Considerações Finais
Contribuições
• DYMOS Framework
– Plataforma para Reconfiguração de
Variabilidades Dinâmicas e Descoberta de
Serviços

• Avaliação Experimental
– Modularização de Serviços
– Adaptação de Componentes

87

Considerações Finais
Trabalhos Futuros
• Avaliar a utilização do DYMOS Framework na
reconfiguração de variabilidades dinâmicas que
endereçam serviços distribuídos.
• Modularização da funcionalidade de Descoberta de
Serviços
• Desenvolver um componente de descoberta e seleção
de serviços com base em atributos de qualidade.
• Avaliar os modelos de adoção de LPS que são
compatíveis com a abordagem proposta.
88

DYMOS: Uma abordagem para suporte a
variabilidades dinâmicas em Linhas de
Produto de Software Orientado a Serviços
e Sensível ao Contexto
Centro de Informática
Universidade Federal de Pernambuco
Dhiego Abrantes de Oliveira Martins
Orientadores: Vinicius Cardoso Garcia (Cin/UFPE)
Uirá Kulesza (DIMAp/UFRN)