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?