Validação experimental de uma abordagem
baseada em busca para projeto de
arquitetura de linha de produto de software
Thelma Elita Colanzi
Adaptação do material gentilmente cedido por :
Mestrando: Anderson da Silva Marcolino
Orientador: Prof. Dr. Edson A. Oliveira Junior
UEM – Universidade Estadual de Maringá
Agenda
• Linha de Produto de Software
• SMarty – Abordagem para Gerenciamento de
Variabilidades
• Organização dos documentos do experimento
Linha de Produto de Software
• Abordagem que objetiva promover a geração de
produtos específicos com base na reutilização de
uma infraestrutura central - núcleo de artefatos formada por uma arquitetura de software e seus
componentes.
Linha de Produto de Software
Quais seriam as possíveis diferenças entre os produtos dessa linha de produção?
Linha de Produto de Software
• Por meio desta abordagem, é possível explorar as semelhanças
dos seus produtos para aumentar o reúso de artefatos.
• A abordagem de LPS tem sido adotada na indústria de software.
• Vantagens:
•
•
•
•
•
•
•
Maior reutilização de artefatos;
Maximização de lucros;
Diminuição do time to market;
Diminuição de riscos;
Produtos com maior qualidade;
Contribuição para o aprimoramento;
ROI; etc.
Linha de Produto de Software
• Atividades Essenciais de LPS
Arquitetura da
LPS
Arquitetura de
cada produto
da LPS
Linha de Produto de Software
• A base de uma LPS é seu núcleo de artefatos.
– arquitetura da LPS, os componentes reusáveis, modelos de
domínio, requisitos da LPS, modelos de características e planos
de teste.
• Uma característica (feature) é uma capacidade do sistema
que é relevante e visível para o usuário final.
• O modelo de características inclui todas as características
de uma LPS e os seus inter-relacionamentos.
• A definição explícita de variabilidades em LPS é a diferença
chave entre o desenvolvimento de sistemas únicos e o
desenvolvimento de LPS.
Linha de Produto de Software
• Exemplo de Modelo de Características
Legenda:
Característica Obrigatória
Característica Opcional
Mutualmente Inclusivas
Mutualmente Exclusivas
Linha de Produto de Software
• Variabilidade é a forma como os membros de
uma família de produtos podem se diferenciar
entre si.
• O gerenciamento de variabilidades é uma das
atividades mais importantes no gerenciamento
de uma LPS.
• A variabilidade é descrita por pontos de variação
e variantes.
Linha de Produto de Software
• Ponto de variação: Um local específico de um
artefato em que uma decisão de projeto ainda não
foi tomada;
• Variante: Corresponde a uma alternativa de projeto
para resolver uma determinada variabilidade.
• Restrições entre variantes: define os
relacionamentos entre duas ou mais variantes para
que seja possível resolver um ponto de variação ou
uma variabilidade.
Gerenciamento de Variabilidade
Similaridades
Pontos de Variação
Artefato de uma Linha de Produto
Variabilidade
Gerenciamento de Variabilidade
Artefato de uma Linha de Produto
Variabilidade
Variantes
Pontos de Variação
Gerenciamento de Variabilidade
Artefato de uma Linha de Produto
Variabilidade
Pontos de Variação
Gerenciamento de Variabilidade
Restrições entre variantes
Artefato de uma Linha de Produto
Variabilidade
Restrições entre variantes
Pontos de Variação
Gerenciamento de Variabilidade
Restrições entre variantes
Opcionais – podem ser
selecionadas ou não.
Ou – uma ou mais podem
ser selecionadas.
Restrições entre variantes
Mutualmente exclusivas
(alternativa - XOR) – apenas
uma delas deve ser
selecionada.
Gerenciamento de Variabilidade
Possíveis produtos da LPS
Gerenciamento de Variabilidade
Ou – uma ou mais podem
ser selecionadas.
Possíveis produtos da LPS
(alternativa - XOR) – apenas
uma delas deve ser
selecionada.
Opcionais – podem ser
selecionadas ou não.
Abordagem SMarty para Gerenciamento de
Variabilidades
Abordagem SMarty
Item
Sim
Não
Observação
Baseada em
UML?
X
Perfil?
X
Processo?
X
Estereótipos?
X
Estereótipos específicos padrões para
todos os modelos.
Diretrizes?
X
Diretrizes específicas para cada
modelo.
Abordagem SMarty
Estereótipos Abordagem SMarty
Estereótipo
<<variationPoint>>
<<mandatory>>
<<optional>>
<<alternative_OR>>
<<alternative_XOR>>
<<variability>>
Utilização
Representa o local em que ocorre uma variabilidade. Um ponto de
variação está sempre associado a uma ou mais variantes.
A variante estará obrigatoriamente presente na configuração de qualquer
produto da linha de produto.
A variante pode ou não estar presente na configuração de um produto da
linha de produto. Variantes opcionais também podem ou não estar
associadas a um ponto de variação.
Estão sempre associadas aos pontos de variação. Pelo menos uma das
variantes deverá ser escolhida para resolver o ponto de variação, ou seja,
para estar presente na configuração de um produto da linha de produto.
Estão sempre associadas aos pontos de variação. Somente uma das
variantes deverá ser escolhida para resolver o ponto de variação.
Indica uma variabilidade existente em um modelo UML.
<<requires>>
Indica um relacionamento de dependência (em UML) entre variantes no
qual a variante dependente (origem da dependência) só existirá em uma
configuração se a variante relacionada (destino da dependência) existir.
<<mutex>>
Indica um relacionamento de dependência (em UML) entre variantes no
qual a variante dependente (origem da dependência) só existirá em uma
configuração se a variante relacionada (destino da dependência)
obrigatoriamente não existir. São conhecidas como variantes mutuamente
exclusivas.
Abordagem SMarty
Legenda:
Característica Obrigatória
Característica Opcional
Mutuamente Inclusiva
Mutuamente Exclusiva
<<mandatory>>
<<alternative_XOR>>
<<optional>>
<<alternative_OR>>
Abordagem SMarty
• As variabilidades são identificadas por meio do comentário UML,
estereotipada com <<variability>> contendo os seguintes meta
atributos:
– Name: nome da variabilidade;
– minSelection: a quantidade mínima de variantes a serem
selecionadas;
– maxSelection: a quantidade máxima de variantes a serem
selecionadas;
– bindingTime: em qual momento a variabilidade será resolvida;
– allowsAddingVar: se permite incluir novas variantes para resolver o
ponto de variação; e
– variants: quais as variantes para resolver o ponto de variação (casos
de uso ligados ao ponto de variação).
• Estas notas são inseridas em todas as variabilidades.
Abordagem SMarty
Diretrizes
• D.2.1 Elementos de modelos de casos de uso relacionados aos
mecanismos de extensão e de pontos de extensão sugerem pontos de
variação com variantes associadas, as quais podem ser inclusivas ou
exclusiva;
• D.2.3 Em modelos de caso de uso relacionadas com a associação de
inclusão (<<include>>) ou associados a atores sugerem variantes
obrigatórias ou opcionais;
• D.2.5 Variantes que, ao serem selecionadas para fazer parte de um
produto, exigem a presença de outra(s) determinada(s) variante(s) devem
ter seus relacionamentos de dependência marcados com o estereótipo
<<requires>>;
• D.2.6 Variantes mutuamente exclusivas para um determinado produto
devem ter seus relacionamentos de dependência marcados com o
estereótipo <<mutex>>;
Abordagem SMarty
Exemplo de Diagrama de Casos de Uso com Representação de Variabilidades
Abordagem SMarty
Exemplo de Identificação de Variabilidade em Casos de Uso
Abordagem SMarty
Diretrizes
• D.2.2 Em modelos de classes, pontos de variação e suas variantes são
identificadas nos seguintes relacionamentos:
– Generalização, os classificadores mais gerais são os pontos de variação,
enquanto os mais específicos são as variantes;
– Realização de interface, os “suppliers” (especificações) são os pontos de
variação e as implementações (clientes) são as variantes;
– Agregação, as instâncias tipadas com losangos não preenchidos são os pontos
de variação e as instâncias associadas são as variantes; e
– Composição, as instâncias tipadas com losangos preenchidos são os pontos de
variação e as instâncias associadas são as variantes.
• D.2.4 Elementos de modelos de classes, relacionados à associações nas
quais os seus atributos aggregationKind possuem valor none, ou seja, não
representam agregação nem composição, sugerem variantes obrigatórias
ou opcionais.
• D.2.7 Componentes formados por classes com variabilidades são
marcados com o estereótipo <<variable>>.
Abordagem SMarty
Exemplo Parcial de Diagrama de Classes com Representação de Variabilidades
Mapeamento de Características na arquitetura
da LPS
• Uma das formas de se implementar características de LPS é
tratando cada uma delas como um interesse presente na
família.
• Interesses correspondem a requisitos, funcionais ou não, que
devem estar presentes no sistema.
– Alguns são naturalmente transversais e, por isso, se espalham em
vários pontos dentro do software.
– Quanto mais modularizado um interesse estiver dentro do projeto do
software mais reusável será o seu projeto.
• Os interesses podem ser mapeados em artefatos da LPS
usando estereótipos UML.
Mapeamento de Características na arquitetura
da LPS
Exemplo de Interface com Interesses associados usando estereótipos UML
Experimento
•
•
•
•
•
Doc. 1 – Termo de Adesão *
Doc. 2 – Questionário de Caracterização
Doc. 3 – Conceitos de LPS e SMarty
Doc. 4 – Descrição Geral da LPS *
Doc. 5 – Formulário Experimento *
* Doc. 1, Doc. 4 e Doc. 5 variam para cada uma das LPS.
Perguntas?
Download

Apresentação do PowerPoint