ABORDAGENS DE DOCUMENTAÇÃO DE
VARIABILIDADE EM LINHA DE PRODUTO DE
SOFTWARE
JEAN POUL VARELA
Recife,
2014
Universidade Federal de Pernambuco
Centro de Informática
Pós-graduação em Ciência da Computação
JEAN POUL VARELA
ABORDAGENS DE DOCUMENTAÇÃO DE
VARIABILIDADE EM LINHA DE PRODUTO DE
SOFTWARE
Monografia apresentada ao Curso de pós-graduação
em Ciência da Computação, Centro de Informática,
Universidade Federal de Pernambuco, como requisito
parcial para conclusão da disciplina Engenharia de
Requisitos.
Professor: Prof. Jaelson Brelaz de Castro
Recife,
2014
Sumário
Resumo ............................................................................................................................. 6
1 Introdução ...................................................................................................................... 8
2 Linha de Produto de Software ....................................................................................... 9
3 Caso de Uso ................................................................................................................. 12
4 Orientação a Aspecto ................................................................................................... 12
5 Exemplo ....................................................................................................................... 13
5.1 Featuares obrigatórias do eShop ........................................................................... 14
5.2 Featuares variáveis do eShop ............................................................................... 15
6 Abordagens .................................................................................................................. 16
6.1 PLUSS .................................................................................................................. 16
6.1.1 Modelagem de Caso de Uso .......................................................................... 17
6.1.2 Instanciação de produto ................................................................................. 20
6.1.3 Exemplo ......................................................................................................... 20
6.2 PLUC .................................................................................................................... 21
6.2.1 Modelagem de Caso de Uso .......................................................................... 21
6.2.3 Exemplo ......................................................................................................... 22
6.3 MSVCM ............................................................................................................... 23
6.3.1 Feature Model ................................................................................................ 24
6.3.2 Modelo de Caso de uso.................................................................................. 24
6.3.3 Configuration Knowledge (CK) .................................................................... 26
6.3.4 Configuração do Produto ............................................................................... 26
6.3.5 Exemplo ......................................................................................................... 27
6.4 VML4RE .............................................................................................................. 29
6.4.1 Representação da Variabilidade .................................................................... 29
6.4.2 Exemplo ......................................................................................................... 30
6.5 MODEL TEMPLATE .......................................................................................... 33
6.5.1 Exemplo ......................................................................................................... 35
6.6 PLUS .................................................................................................................... 37
6.6.1 Modelagem de Caso de Uso .......................................................................... 37
6.6.1.1 Modelagem para Pequenas Variações .................................................... 37
6.6.1.1.1 Modelagem de variante opcional para Pequenas Variações ............ 38
6.6.1.1.2 Modelagem de variante alternativa para Pequenas Variações......... 39
6.6.1.2 Modelagem para Variações Complexas ................................................. 39
6.6.1.2.1 Modelagem de variação complexa com relacionamento Extend .... 40
6.6.1.2.2 Modelagem de variação complexa com relacionamento Include .... 43
6.6.2 Exemplo ......................................................................................................... 45
6.6.2.1 Exemplo de modelagem de pequenas variações..................................... 45
6.6.2.1 Exemplo de variante opcional para pequenas variações .................... 46
6.6.2.2 Exemplo de variantes alternativas para pequenas variações .............. 46
7 Conclusão .................................................................................................................... 47
Bibliografia ..................................................................................................................... 49
Apêndice 1 ...................................................................................................................... 52
Lista de Figuras
Figura 1. Framework de desenvolvimento de LPS (Pohl, 2005) ................................... 10
Figura 2. Modelo de Feature do Sistema de Dipositivos Móveis (Torres, 2011)........... 11
Figura 3. Variabilidade da linha de produto eShop ........................................................ 14
Figura 4. Feature Model da Abordagem PLUSS (Eriksson et al, 2005). ....................... 17
Figura 5. (a) Blackbox flow of events usado para descrever cenários de uso; (b)
Whitebox flow of events usa do para descrever realização de caso de uso.................... 17
Figura 6. Meta Modelo de PLUSS ................................................................................. 18
Figura 7. Template de documentação com o conceitos de pluss ................................... 19
Figura 8. Notação de descrição de caso de uso proposto por (Cockburn, 2001)............ 21
Figura 9. Cenário Buy Products ..................................................................................... 23
Figura 10. Representação Waving Process (Bonifácio, 2010) . ..................................... 24
Figura 11. Configuração do Produto. ............................................................................. 27
Figura 12. Cenário Básico Buy Products ....................................................................... 30
Figura 13. Passos da variante VTR01 ............................................................................ 31
Figura 14. Modelo de Composição ShoppingCart ......................................................... 31
Figura 15. Passos da variante VRT02 ............................................................................ 31
Figura 16. Modelo de Composição Bonus ..................................................................... 32
Figura 17. Passos da variante VRT03 ............................................................................ 32
Figura 18. Modelo de Composição Update User Preferences ........................................ 32
Figura 19. Composição de uma Instancia (Czamecki, 2005) ......................................... 34
Figura 20. Configuração de Produto Retirada de (Czarnecki Antkiewicz, 2005) .......... 35
Figura 21. Especificação cenário Buy Products em Model Template ............................ 36
Figura 22. Template para descrever pontos de variação pequenos ................................ 38
Figura 23. Documentação da variante Light .................................................................. 38
Figura 24. Documentação da variante Display Language .............................................. 39
Figura 25. Diagrama de caso de uso de Check Out Customer (Gomaa, 2004) ............. 41
Figura 26. Documentação do caso de uso Check Out Customer ................................... 41
Figura 27. Extensão Pay by Cash ................................................................................... 42
Figura 28. Extensão Pay by Credit Card ........................................................................ 42
Figura 29. Caso de Uso Validate PIN ........................................................................... 43
Figura 30. Caso de Uso Validate PIN ............................................................................ 44
Figura 31. Caso de uso Withdraw Funds ........................................................................ 44
Figura 32. Caso de Uso Deposit Funds .......................................................................... 45
Figura 33. Cenário searches goods ................................................................................. 46
Figura 34. Variante Show similar results ....................................................................... 46
Figura 35. Caso de uso Register ..................................................................................... 47
Figura 36. Variante Search Options ............................................................................... 47
Figura 37. Descrição do Caso de Uso Cook Food .......................................................... 52
Tabela
Tabela 1. Especificação PLUSS do cenário Buy Products ............................................. 20
Tabela 2. Cenário Proceed to purchase .......................................................................... 25
Tabela 3. Representação do Advice ADV03 .................................................................. 25
Tabela 4. CK do eShop ................................................................................................... 26
Tabela 5. Cenário Proceed to Purchase .......................................................................... 27
Tabela 6. Advice Buy a specific product ........................................................................ 28
Tabela 7. Advice Buy Products using a Shopping Cart ................................................ 28
Tabela 8. Advice Register User Preferences .................................................................. 29
Resumo
Tendo em vista a magnitude dos projetos de software desenvolvidos atualmente,
percebe-se a necessidade que o mesmo seja documentado, desde a fase de análise de
requisitos até a fase de projeto e implantação do sistema. Entre muitas abordagens
propostas para documentação pode-se citar a UML (UML, 2011).
Por outro lado, atualmente vem crescendo a necessidade por software com baixo
custo, com qualidade e que seja desenvolvido em um curto espaço de tempo. Neste
cenário vem ganhando força o paradigma de desenvolvimento baseado em linha de
produto software (LPS) (Pohl, 2005), a qual se concentra na reutilização de artefatos.
Uma LPS possui artefatos comuns e variáveis entre os produtos.
Tendo em vista este novo paradigma de desenvolvimento de software nota-se que a
documentação que era aplicada nos processo tradicional de desenvolvimento de
software já não é tão eficiente para o contexto de LPS, pois não possuem suporte a
variabilidade. Para contornar este problema, foram criadas algumas abordagens de
documentação de variabilidade em LPS.
Neste trabalho serão apresentadas técnicas para documentação de variabilidade em
linha de produto de sofware.
Palavras-chave: Linha de Produto de Software, Variabilidade, Documentação, Caso de
Uso.
6
7
1 Introdução
Tendo em vista que projetos de software variam em escala e complexidade, e
envolvem diversos recursos que vão desde recursos básicos até mesmo recursos
complexos, percebe-se a necessidade de um bom gerenciamento. Nos últimos anos a
abordagem de Linha de Produtos de Software (LPS) vem ganhando atenção, pois com o
desenvolvimento de software orientado a LPS é possível obter sistemas de alta
qualidade dentro de curtos prazos e com um baixo custo.
Um dos objetivos da LPS é o reuso de artefatos, como artefatos entendam-se
códigos fontes, testes e documentação (Pereira, 201)(Clements, 2001). A diferenciação
entre os produtos de uma LPS ocorre através da variabilidade, segundo (Clements,
2001) (Alferez, 2014), variabilidade de uma SPL é entendida como as semelhanças e
diferenças entre os produtos, em termos de requisitos, arquitetura, componentes e
artefatos de teste.
O gerenciamento de variabilidade durante a engenharia requisitos de SPL é essencial
para suportar a reutilização de requisitos (Bergmans, 2011). Este gerenciamento é
necessário para a adição e remoção de requisitos (Alferez, 2014). Para o gerenciamento
de variabilidade em requisitos é necessário que seja realizada a documentação da
variabilidade.
Nota-se que cenários são muitos utilizados na engenharia de linha de produtos de
software, pois com os mesmo é possivel obter um melhor entendimento das
caracteristicas da LPS (Alferez, 2014). Um "cenário de uso" descreve um exemplo real
de como um ou mais atores (por exemplo, usuários, organizações) interagem com o
sistema, descrevendo os passos que ocorrem durante a interação (Alexander, 2004).
Neste tabalho será apresentado abordagens para documentação de variabilidade em
linha de produto de sofware. Para cada técnica será apresentado um exemplo de
aplicação da mesma com o eShop Product Line (Pohl, Metzger; 2006) com o intuito de
demonstrar como é realizada a utilização da mesma.
O restante do trabalho está estruturado da seguinte forma, no capítulo 2 é apresentada
uma visão geral da abordagem LPS. No capítulo 3 é apresentada uma visão geral sobre
casos de uso. No capítulo 4 é apresentanda brevemente a abordagem de
desenvolvimento de orientação a aspecto, a qual é utilizada em uma abordagem. No
capítulo 5 é apresentada uma descrição da linha de produto eShop. No capítulo 6 são
8
apresentadas as técnicas de documentação de variabilidade. Finalmente no capítulo 7
são realizadas as considerações finais deste trabalho.
2 Linha de Produto de Software
Linha de Produto de Software (LPS) é um paradigma de Engenharia de Software que
propõe o desenvolvimento de sistemas voltado ao reuso estratégico (Pohl, Linden,
2005). O que uma LPS compartilha podem ser: features, requisitos, arquitetura,
decisões de projeto, código, artefatos de testes, linguagens, entre outras características
de produto e de processo de desenvolvimento (Bonifácio, 2010).
Segundo (Clements, Northrop; 2001) uma LPS é um conjunto de sistemas de
software que compartilham um conjunto comum e gerenciado de features para satisfazer
necessidades de um segmento particular de mercado ou missão, que são desenvolvidos a
partir de um conjunto de artefatos comuns (core asset) pré-definidos. Segundo (Parnas,
1976)
é uma família de produto gerada automaticamente a partir de componentes
reutilizáveis. A LPS visa atender a necessidade de um segmento do mercado especifico
com objetivo de oferecer a diversidade e customização de produtos de um segmento de
mercado.
Através da utilização de LPS é possível obter alguns benefícios, tais como citado por
(Nascimento, 2008) (Silva, 2011) entre outros se podem destacar: Aumento da
qualidade, pois uma vez que os artefatos numa LPS serão reutilizados em outros
produtos e consequentemente revisados e testados, assim tendo maiores chances de
detecção e correções de falhas, assim, aumenta a qualidade de todos os produtos.
Redução do esforço de manutenção: uma vez que os artefatos da linha possuem maior
qualidade, eles podem ser reutilizados com maior eficiência. Uma vez que as mudanças
serão propagadas em todos os produtos em que estes artefatos sejam utilizados e assim
os produtos apresentarão uma redução de defeitos. Redução dos custos de
desenvolvimento é devido às potencialidades propiciadas pelo reuso, as preocupações de
desenvolvimento envolverão a evolução do produto e o melhoramento das
funcionalidades. Uma visão baseada no crescimento, em novos investimentos, não na
manutenção ou “reinvenção da roda”. Redução do tempo para o produto chegar ao
mercado é alcançada uma vez que depois de certo tempo a base de artefatos
reutilizáveis dará suporte à criação dos produtos da linha, assim os produtos são criados
a partir da seleção de artefatos do core assets;
9
O processo de desenvolvimento de LPS é dividido em duas principais etapas (Pohl,
2005): (i) engenharia de domínio é responsável por dentre outras atividades, definir
quais são as aplicações que a LPS irá atender, definir quais as partes comuns e variáveis
da SPL, qual será a arquitetura de referência, e definição de artefatos que atendem as
variações da LPS; e (ii) é na a engenharia de aplicação em que uma configuração do
produto é gerada e depois é aplicado o processo de derivação de produto, que combinará
os artefatos da LPS em um novo produto. Tanto a engenharia de domínio quanto a
engenharia de aplicação são compostas por diversas atividades, as quais são
apresentadas na figura 1.
Figura 1. Framework de desenvolvimento de LPS (Pohl, 2005)
A implementação de LPS pode ocorrer de três formas segundo (Krueger, 2001):
(i)
proativa, em que a LPS é construída desde suas fases iniciais, contemplando
análise de domínio, projeto de domínio e implementação de domínio, todos
os produtos são projetados antecipadamente, está é considerada a
implementação ideal, porém não é a realidade de muitos cenários
encontrados, já que o software foi projetado e desenvolvido em aplicações
diferentes;
(ii)
extrativa, em que já existem diversos produtos que contêm características
comuns e variáveis, porém, não fazem parte do mesmo software, são
aplicações independentes, nesta forma de implementação, as características
variáveis de cada produto são isoladas e a parte comum compõe o núcleo da
aplicação;
10
(iii)
reativa, na qual já existe uma LPS, que é desenvolvida gradualmente, isto é,
conforme surgem necessidades de novos produtos, a LPS é ampliada com
seus artefatos comuns sofrendo extensões e criando novos artefatos variáveis
específicos para o novo produto em demanda.
Um conceito fundamental para abordagem de linha de produto de software é o
conceito de feature. De acordo com (Czarnecki, 2000) uma feature pode ser vista como
uma funcionalidade ou propriedade da LPS que permite distinguir os membros de uma
família. É necessário realizar um bom gerenciamento variabilidade de features (Torres,
2011).
Segundo (Torres, 2011) a abordagem precursora de gerenciamento de variabilidade é
a abordagem Feature-Oriented Domain Analysis (FODA) (Kang et al, 1990). Esta
técnica de gerenciamento propõe o modelo de features, neste modelo são representadas
as variabilidades de uma LPS. Neste modelo as features poderão ser dos seguintes tipos:

obrigatória, isto é uma feature que obrigatoriamente fará parte de todos os
produtos gerados;

opcionais, é uma feature que depende da seleção pelo engenheiro da aplicação
para que os artefatos associados sejam inclusos em um determinado produto,
caso contrário, estes artefatos não serão incluídos no produto final;

alternativas, que representam os grupos de features, uma feature alternativa
pode agrupar duas ou mais features, podendo ser mutuamente exclusivas.
Na figura 2 é apresentada a representação gráfica de um modelo de features, o modelo
em questão representa a variabilidade da LPS de dispositivos móveis, a qual está
apresentada em (Torres, 2011).
Figura 2. Modelo de Feature do Sistema de Dipositivos Móveis (Torres, 2011)
11
3 Caso de Uso
Caso de uso é um conceito fundamental na modelagem de sistemas, o mesmo faz
parte da especificação da UML (do inglês, Unified Modeling Language). Segundo
(UML, 2011) casos de uso são um meio de especificar o uso de um sistema por atores.
Um ator é qualquer entidade externa que interage com o sistema. O comportamento de
um sistema pode ser descrito por um ou mais casos de uso, os que são definidos de
acordo com as necessidades dos atores. Escrever casos de uso é, essencialmente,
descobrir e documentar requisitos funcionais, escrevendo estórias de uso do sistema que
ajudam a satisfazer os objetivos dos stakeholders (Larman, 2004).
Relacionado a caso de uso está o conceito de cenários que são uma sequência
específica de ações e interações entre atores e o sistema em questão, também podem ser
chamados de instâncias de caso de uso (Larman, 2004). Um caso de uso pode gerar
vários cenários. Cenários de uso podem ter cenários primários e secundários segundo
(Santander, 2002) aonde se considera que cenário primário é o caminho básico para
realizar um caso de uso, sem problemas e sem erros em nenhum dos passos da
sequência. Enquanto cenários secundários ou alternativos descrevem sequências
alternativas e de erros, que podem ocorrer em um cenário primário associado com um
caso de uso.
4 Orientação a Aspecto
A Programação Orientada a Aspectos (KICZALES et al, 1997) é um paradigma de
desenvolvimento de software que tem por objetivos à unificação dos códigos
secundários (crosscutting concerns) ao código principal. Segundo (Loureiro, 2010) o
mecanismo da Programação Orientada a Aspecto busca separar os interesses
transversais das classes em módulos bem definidos e centralizados, nos quais um
analista pode dedicar-se a um interesse de forma independente.
A orientação a aspectos é um paradigma que foi desenvolvido com os objetivos de
suprir deficiências dos outros paradigmas, segundo (BECKER, 1998) existem
problemas de programação que as técnicas de programação orientada a objetos ou de
programação estruturada não conseguem resolver, pois as mesmas não são suficientes
para separar claramente todas as decisões de projeto que o programa deve implementar.
Mesmo com todos os recursos disponibilizados nos paradigmas citados anteriormente,
12
ainda pode-se notar o espalhamento de código. A orientação a aspectos tenta suprir estas
falhas através da utilização de aspectos transversais ao comportamento do sistema.
A seguir serão apresentados alguns conceitos de orientação a aspectos que serão
relevantes para o entendimento das abordagens presentes neste trabalho, para mais
informações sobre orientação a aspectos recomenda-se a leitura de (KICZALES et al,
1997).
 Interesse: é uma característica, um requisito, algoritmos, uma funcionalidade.
Interesses podem ser de dois tipos:
o
Interesses funcionais (ou core concerns): são requisitos do domínio da aplicação.
o Interesses sistêmicos: são os requisitos que dão suporte aos interesses funcionais. Estes
interesses sistêmicos são à base do paradigma de programação orientado a aspecto.
 Aspectos: Um aspecto é a unidade fundamental de programação orientada a
aspecto. Segundo (Safonov, 2008) “Aspecto é uma parte de um programa
orientado a aspecto que separa os interesses ortogonais dos interesses
principais”. Um aspecto é uma estrutura que comporta todos os elementos da
orientação a aspecto. Assim com uma classe de orientação a objeto, um aspecto
também possui um nome, modificadores de acesso.

Pontos de junção (join points): segundo (Safonov, 2008) “O ponto de junção é
um ponto bem definido na execução de um sistema”. Os pontos de junção
podem ser qualquer parte local de um código. São nos pontos de junções que
diferentes interesses são ligados.
 Pontos de Atuação (pointcuts): são elementos do paradigma que identifica em
que ponto um determinado aspecto será combinado. Basicamente, os pointcuts
são regras para definir os eventos que os pontos de junção irão atuar.
 Adendos (advices): São pedaços de código que serão executados nos pontos de
junção. Então cada advice tem o seu pointcut e seu código associado.
5 Exemplo
Para exemplificar as abordagens apresentas neste trabalho será utilizado o exemplo
The eShop Product Line (Pohl, Metzger, 2006). O eShop é uma linha de produto de
sistemas de vendas de produtos online. Sendo que através desta a loja poderá vender os
produtos para os seus clientes através da internet.
A variabilidade desta linha de produto é apresentada na parte direita da figura 3, a
variabilidade é descrita com base na abordagem OVM (Pohl et al, 2005). Sendo que os
13
triângulos representam os pontos de variação, os retângulos representam as variantes e a
relação entre eles descrevem as restrições das escolhas das variantes.
Figura 3. Variabilidade da linha de produto eShop
5.1 Featuares obrigatórias do eShop
Todos o produto gerados da linha de produto irão possuir as features Register
customer, buy product and search product. As mesmas são descritas a seguir:
 Search product: realizada a pesquisa de produtos, essa pesquisa poderá ser
realizada através realizada através nome do produto ou um número de ordem.
 Buy product (Buy Goods): este caso de uso permite o cliente comprar um
produto. Este caso de uso inclui o caso de uso Search Product. Cada produto
14
que o cliente quer comprar é colocado em um carrinho de compras. Uma vez
que o cliente quer para completar a sua compra ele faz check-out e paga sua
compra, assim provocando a expedição das mercadorias.
 Register Customer: este caso de uso permite o cliente se registrar no eShop.
Antes de o cliente compra qualque produto ele primeiramente precisa realizar o
seu cadastro.
5.2 Featuares variáveis do eShop
Esta linha de produto contém 5 variantes, as quais serão apresentadas a seguir:
VP1 - Register Type : este ponto de variação diz a respeito do tipo que registro
que o cliente deverá fazer quando o mesmo for se cadastrar, pode fazer o registro
normal ou registro completo. Sendo que o registro normal, o cliente deve
fornecer o seu email e seu endereço postal. Já no registro completo, além de
inserir informações sobre o endereço de email e postal o cliente tem que
informar dados de sua conta bancária.
VP2 – Bonus: o sistema ainda disponibiliza a opção de o produto contar com
bônus ao cliente, o bônus é um ponto de variação mutuamente exclusivo, sendo
que as alternativas são Points ou Deduction. O bônus Points é oferecido com
base nos produtos em que o cliente já comprou, ou seja, a cada compra o cliente
adquire certa quantidade de ponto e após trocar por um determinado bônus, já no
bônus Deduction o cliente é feita a dedução diretamente no preço do produto.
VP3: Payment Type: a linha de produto oferece dois tipos de pagamento. O
cliente poderá pagar através de fatura (invoice) ou através de cartão (card). Caso
o pagamento seja realizado invoice a variante o ponto de variação VP1 deverá
ser do tipo Completely, O mesmo produto poderá possuir os dois tipos de
pagamento.
VP4: Card Type: há duas formas de pagamento, poderá ser realizada através de
credit ou através de debit. Sendo que essa escolha é mutuamente exclusiva.
15
VP5: Search Options: o cliente pode procurar um produto, digitando o nome do
produto ou o número do pedido do produto utilizando o caso de uso de não
poderá fornecer nenhuma dica.
Ao a variante fornecer dicas de busca, é
oferecido ao cliente eShop um texto de ajuda sobre como modificar o seu
solicitação de pesquisa para melhores resultados.
Apenas uma das duas
variantes pode ser escolhida.
6 Abordagens
6.1 PLUSS
A abordagem PLUSS (Eriksson, J. Borstler, 2005), propõe uma abordagem para o
gerenciamento do comportamento em casos de uso. Está abordagem também apresenta
meios mais eficientes para rastear variantes em caso de uso, e também para se gerar
modelos de caso de uso específicos de um produto de acordo com modelos de caso de
uso de uma família de produtos de software.
O PLUSS é baseado na abordagem FeatuRSEB (Griss et al, 1998). Segundo (Griss et
al, 1998) os diagramas de caso de uso da UML são ineficientes para realizar a análise de
domínio em LPS e argumenta que o Feature Model (Kang et al, 1990) pode ser usado
como um modelo de alto nível para visualização da LPS.
A abordagem PLUSS propõe modificações no feature model proposto pela abordagem
FODA, pois argumenta que a mesma não define mecanismos para especificar o
relacionamento do tipo “at-least-one-out-of many” (Fey et al, 2002).
Para resolver a lacuna apresentado anteriormente, a abordagem PLUSS propõe o
relacionamento “Multiple Adaptor”, nesse relacionamento ele consegue representar o
relacionamento “at-least-one-out-of many” e também representar a falta de
relacionamento. A abordagem ainda propõe que as features alternativas sejam
renomeadas para “Single Adaptor”. Os relacionamentos foram nomeados segundo o
esquema de nomeação apresentado em (Mannion et al, 2000).
O feature model de acordo com a abordagem PLUSS é apresentado na figura 4.
16
Figura 4. Feature Model da Abordagem PLUSS (Eriksson et al, 2005).
6.1.1 Modelagem de Caso de Uso
Para realizar a modelagem de caso de uso PLUSS propõe que seja utilizado o “Black
Box Flow of Events” (Eriksson et al, 2004). A utilização dessa descrição advém que ela
obriga os analistas sempre pensar sobre interfaces desde campos separados existentes
para descrever ações do ator e do sistema. E também por que fornece um forte
mecanismo para relacionar requisitos não funcionais a casos de uso usando o "Blackbox
Budgeted Requirements".. Na figura 5 é apresentado o “Black Box Flow of Events”.
Figura 5. (a) Blackbox flow of events usado para descrever cenários de uso; (b) Whitebox flow of
events usa do para descrever realização de caso de uso.
A abordagem PLUSS propõe que seja mantido um comum modelo de caso de uso
completo para a família inteira de produtos. Asssim sendo necessário controlar a
variabilidade no modelo de caso de uso, para ter este controle foram identificados
quatro tipo de variabilidade que podem ocorrer em um modelo.
1. Primeiro tipo variabilidade diz respeito do caso de uso como todo que pode
variar entre sistemas construídos dentro de uma família de produtos.
Modelamos isso relativo de um ou mais casos de uso com uma característica de
qualquer tipo no modelo de recurso.
17
2. O segundo tipo de variabilidade que se refere ao conjunto de cenários de casos
de uso inclusos dentro de cada caso de uso. Modelamos este relacionando um
ou mais cenários com uma característica de qualquer tipo no modelo de recurso.
3. O terceiro tipo que diz respeito ao conjunto de etapas incluídas em cada caso de
cenário de uso. Modelamos este relacionando etapas de cenário com
características de qualquer tipo no modelo de features.
4. O quarto tipo de variabilidadese se refere aos aspectos transversais
que pode afetar vários casos de uso em vários níveis. Aspectos transversais são
modelados como parâmetros de casos de uso em PLUSS, estes parâmetros
devem
estar
relacionados
a
um
conjunto
de
simples
adaptador contido no modelo de recurso.
Em PLUSS é extendido o meta modelo proposto por (Eriksson et al, 2004), esta
extensão propõe a integração de fatures, caso de uso e realização de caso de uso. O novo
meta modelo é apresentada na figura 6.
Figura 6. Meta Modelo de PLUSS
Para descrever os passos de um caso de uso, a notação PLUSS propõe algumas
modificações em relação da descrição da realização de casos de uso segundo a UML.
Assim como a UML a abordagem PLUSS identifica cada passo do caso de uso com um
número. A notação de PLUSS são as seguintes:
 Passo obrigarório: um passo é identificado por um número, como acontece na
notação original.
 Passos alternativos mutuamente exclusivos: são identificados com o mesmo
número. Estes passos devem estar relacionados com um conjunto de features
18
que se relacionam como “single adaptor”. A “feature pai” deste “single
adaptor” deve ser uma feature obrigatória.
 Passos alternativos: são identificados com o mesmo número seguido de uma
letra. Estes passos devem estar relacionados com um conjunto de features
“multiple adaptor” e estas features devem ser filhas de uma feature opcional no
feature model.
 Passo opcional: é identificado por um número dentro de parêntesis;
 Passos opcional do qual ao menos um deve ser selecionado: esses passos são
identificados com o mesmo número dentro de parênteses seguido de uma letra.
Essas etapas devem ser relacionados a um conjunto de “multiple adapter” e
possui uma feature pai opcional no feature model.
 Passo opcional de um conjunto de passos opcionais: esses passos são
identificados com um mesmo número entre parentese, igual a identificação de
um passo opcional. Esses passos se referem a um single adaptor.
Além de identificação para os passos do caso de uso, PLUSS ainda utiliza parâmetros
de caso de uso. Esse parâmetros introduzidos em RSEB(Jacobson et al, 1997) e em
(Mannion, 2000) foi apresentado uma distinção em parâmetros locais e globais, os quais
são utilizados nesta abordagem. Sendo que o símbolo „$‟ é utilizado para representar
um parâmetro local e o símbolo „@‟ é utilizado para representar um parâmetro global.
Tanto os parâmetros quanto as notações proposta na abordagem são demonstrado na
figura 7.
Figura 7. Template de documentação com o conceitos de pluss
19
6.1.2 Instanciação de produto
A inserção de uma nova feature no modelo de feature é realizada através da análise do
impacto da inserção do impacto da mesma no modelo de feature visto que o modelo é
único para o sistema como um todo.
Tendo em vista que o modelo de feature é único para a família inteira, para instanciar
um novo produto é apenas escolher as variantes através do modelo de feature.
Após a aplicação do filtro são gerados três documentos. Um Use Case Survey, onde
serão incluídos todos os casos de uso do produto e os relatórios Use Case Specifications
e Use Case Realizations para os casos de uso incluídos no Use Case Survey.
6.1.3 Exemplo
Para exemplificar a utilização desta abordagem, na tabela 1 é apresentada a
especificação do cenário Buy Products.
Id
1(a)
User Action
Select the checkout option. [ShoppingCart]
1(b)
Select the buy product option. [not
ShoppingCart]
2(a)
2(b)
3
Select the confirm option. [Bonus]
Select the confirm option. [not Bonus]
Fill in the requested information and select
the proceed option.
Select the $Shipping-Method$, fill in the
destination address and select the proceed
option.
Confirm the purchase.
4
5
6
System Response
Present the items in the shopping cart and the
amount to be paid. The user can remove items
from shopping cart.
Present the selected product. The user can
change the quantity of items that he wants to
buy. Calculate and show the amount to be paid.
Request bonus and payment information.
Request payment information.
Request the shipping method and address.
Calculate the shipping costs.
Execute the order and send a request to the
Delivery System in order
to dispatch the products.
Register the user preferences.
Select the close session option. [Update User
Preferences]
Tabela 1. Especificação PLUSS do cenário Buy Products
Tendo em vista o cenário apresentado anteriormente, nota-se que os passos 1(a) e
1(b) são passo alternativos mutuamente exclusivos, sendo assim os mesmo jamais
poderão ser executado ao mesmo tempo. Percebe-se que o passo 1(a) apenas será
incluso caso a feature ShoppingCart for selecionadas, caso contrario o passo 1(b) será
selecionado, pois esse exige que a feature ShoppingCart não seja selecionada. De
maneira semelhante ocorre com os passos 2(a) e 2(b), são passos alternativos
20
mutuamente exclusivos, sendo que 2(a) só estará presente caso a feature Bonus for
selecionada e caso contrario o passo 2(b) será selecionado.
Os passos 3, 4 e 5 são anotados como obrigatórios, assim necessariamente irão estar
presente em todos os produtos. O passo 6 é representado por (6) indicando que este
passo é opcional, assim podendo estar presente em alguns produtos e outros não.
6.2 PLUC
A abordagem PLUC (Product Line Use Cases) (Bertolino, 2006) é uma extensão do
caso de uso da UML, esta extensão possibilita inserir variabilidade em casos de uso. A
presente abordagem é baseada na notação apresentada em (Cockburn,2001) a qual tem
por objetivo expressar requisitos em linha de produto, sendo que a mesma adiciona
variabilidade, assim possibilitando representar pontos de variação e variantes.
6.2.1 Modelagem de Caso de Uso
Como explicado anteriormente a notação de descrição de caso de uso utilizada na
presente abordagem, será a notação que é utilizada em (Cockburn,2001) a qual é
apresentada na f igura 8.
Figura 8. Notação de descrição de caso de uso proposto por (Cockburn, 2001)
21
Esta notação de descrição de caso de uso utiliza uma descrição textual com várias
informações. O fluxo principal do cenário de caso de uso é documentado no campo
“Description”, já o fluxo alternativo do cenário é documentado no campo “Extensions”,
ou seja, nesse campo são descritas as variações do cenário.
A adição de variabilidade ao comportamento do caso de uso é alcançada através da
utilização de tags, as quais indicam as partes dos requisitos que podem sofre variação.
Essa extensão é chamado de PLUC, e as tags que são instanciadas são chamadas de
Caso de Uso do Produto (PUC). As tags podem ser de três tipo:
 Alternativa: diz a respeito sobre a possibilidade de escolher uma em um grupo
de features, a escolha de uma feature está condicionada com a realização de uma
condição;
 Paramétrica: neste tipo de tag, a instanciação de um produto está diretamente
ligada com o valor atual de um parâmetro de um requisito de produto especifico.
 Opcional: a escolha de uma feature pode ocorrer ou não independentemente de
um conjunto de features.
6.2.3 Exemplo
Para exemplificar a utilização desta abordagem, na figura 9 é apresentada a
especificação do cenário Buy Products. Neste exemplo será apenas apresentado o
cenário principal e os pontos de variação.
No campo Description são apresentados os passos do cenário principal com os pontos
de variação e no campo Sub Variants são apresentados os pontos de variações e as
condições de suas escolhas. Por exemplo, quando o produto P1 for gerado, o ponto
VP1 será definido como checkout, pois na seção Sub Variants, esta explicitado a
clausula condicional aonde diz que se o produto dor P1 a feature escolhida será
checkout.
22
Figura 9. Cenário Buy Products
6.3 MSVCM
A abordagem Modeling Scenario Variability as Crosscutting Mechanisms (MSVCM)
(Bonifácio, 2010), é uma abordagem de especificação de cenários usando descrição de
cenários textuais.
Está abordagem basicamente é preocupada na especificação de
cenários com foco na separação de interesses através da utilização de técnicas de
orientação a aspectos (Filman et al, 2004). Também melhora a separação de interesses
entre a gestão da variabilidade e especificações de cenários.
Esta abordagem utiliza os seguintes artefatos: Casos de uso, Modelo de Features
(Feature Model – FM), Configuração do produto (Product Configuration – PC),
Configuração de Conhecimento (Configuration Knowledge – CK) e também
Configuração do Produto (Product Configuration).
Esta abordagem alcança os seus objetivos através do processo de combinação
(weaving process) dos artefatos citados anteriormente, esta combinação é baseada no
23
trabalho apresentado em (Masuhara et al, 2003). O weaving process para esta
abordagem foi desenvolvido na linguagem de programação Haskell, o mesmo também é
apresentado na figura abaixo.
Figura 10. Representação Waving Process (Bonifácio, 2010) .
A seguir será apresentado cada um de seus artefatos.
6.3.1 Feature Model
Esta abordagem utiliza o feature model para verificar se a configuração de um dado
produto é valida tendo em vista a linha de produto. Também é utilizado para verificar se
todas as restrições são satisfeitas.
Foi implementada uma função para realizar as verificações citadas acima. Essa função
de verificação toma como entrada o FM e o PC, verificando se o produto especificado
no PC esta de acordo com as restrições expressa no FM.
6.3.2 Modelo de Caso de uso
Neste artefato são descritos os comportamentos esperados pelos membros da SLP.
Um cenário pode ser de diferentes formas, o mesmo pode ser opcional, pode possuir
parâmetros, e até mesmo pode alterar (advice) o comportamento de outros cenários.
Segundo (Bonifácio, 2010), os cenários são usados para detalhar a especificação comum
de um recurso e os advices são utilizados para documentar passos alternativos e
opcionais ou que são dispersos entre as especificações.
Um cenário opcional é usado para representar cenários que estão presentes em
alguns membros da família e não estão presentes em outros. Esta forma de cenário esta
intimamente relacionada com a variabilidade de função (Bonifácio,2010)( Bachmann,
Bass, 2001). Um cenário parametrizado diz a respeito à variabilidade expressa em
detalhes. Esta técnica é relacionada com a fonte de variabilidade chamada variabilidade
24
de dado (Bonifácio, 2010). Já os advices podem se utilizados para modularizarem os
passo opcionais ou alternativos que estão relacionados com a especificação de um
cenário em comum.
A utilização de parâmetros ocorre da seguinte forma <nomeparamentro>. Sendo que o
este parametro permite o reuso do cenário para diferentes configurações. O
relacionamento entre parâmentro e features da LPS são indicados através do CK. Tendo
em vista o CK da LPS que é apresentado na tabela 4, percebe-se que o parâmetro SM é
relacionado com a feature Shipping Method.
Tendo em vista o cenário SC01, apresentado na tabela 2 e o CK, pode-se notar que o
através da utilização do parâmetro <SM> que o cenário Proceed to Purchase pode ser
selecionado para diferentes configurações da feature Shipping Method.
Id: SC01
Description: Proceed to purchase
Id
User Action
System Response
P1
Fill in the requested information and select
the proceed option.
Request the shipping method
and address.
P2
Select one of the available shipping methods
(<SM>), fill in the destination address and
proceed.
Confirm the purchase.
Calculate the shipping costs.
P3
Execute the order and send a request to the
Delivery System to dispatch the products.
[CustomerPreferences]
Tabela 2. Cenário Proceed to purchase
Ainda tem a possibilidade de ter a anotação [nomeparamentro], esta indica que a
este parametro está relacionado um advice. A sua utilização irá depender se o mesmo é
chamado nos campos Before ou After.
Tendo em vista a anotação [CustomerPreferences] na tag After presente na advice
ADV03 (tabela 3), indica que esse advice será executado toda vez que ser encontrado a
anotação [CustomerPreferences] em algum passo de algum cenário, ou seja o advice
ADV03 será executado toda vez que P3 do cenário Proceed to pucharse for executado.
Id: ADV03
Description: Register user preferences.
After: [CustomerPreferences]
ID
R1
User Action
-
System Response
Update the preferences based on the search results or
purchased items.
Tabela 3. Representação do Advice ADV03
25
6.3.3 Configuration Knowledge (CK)
O Configuration Knowledge é responsável por associar as expressões de features a
tarefas. Por expressão de feature entenda-se um conjunto de restrições que deve ser
satisfeita, por exemplo, para expressão (feature1 and not feature2) ser satisfeita,
necessariamente o produto gerado deverá possuir a feature1 e não possuir a feature2. O
CK é o artefato utilizado para guiar a instanciação dos produtos da linha de produto.
Na tabela 4 é apresentado um exemplo de um Configuration Knowledge. A seguir
será explicado o CK aqui apresentado.
Feature Expression
EShop
not (Shopping Cart and Bonus)
(Shopping Cart and Bonus)
Update User Preferences
Shipping Method

Tasks
select scenario SC01
select scenario SC02
evaluate advice ADV01
evaluate advice ADV02
evaluate advice ADV03
bind SM to Shipping Method
Tabela 4. CK do eShop
Toda vez que a feature eShop for selecionada obrigatoriamente os cenários
SC01 e SC02, deveram ser selecionados.

O advice ADV01 será utilizado caso as features Shopping Cart and Bonus
não forem selecionadas.

O advice ADV02 será utilizado caso as features Shopping Cart and Bonus
forem selecionadas.

O advice ADV03 será utilizado caso o a feature Update User Preferences
seja selecionada.

Caso a feature Shipping Method seja selecionada, a variável SM será ligada a
feature Shipping Method.
6.3.4 Configuração do Produto
Através da configuração do produto é identificado um membro especifico da linha
de produto. Neste artefato são selecionadas as features desejadas para a configuração de
um determinado produto. Esta configuração obrigatoriamente terá que respeitar as
restrições presentes no feature model. A instanciação de um determinado membro da
LPS procura satisfazer a configuração do produto, se baseando no CK.
26
De acordo com (BONIFÁCIO, 2010) uma maneira realização configuração de um
produto é utilizando um plugin do eclipse que é chamado de Feature Modeling Plugin
(Antkiewicz, 2004). Na figura 11 é apresentando a configuração de dois produtos
utilizando a ferramenta Feature Modeling Plugin.
Figura 11. Configuração do Produto.
O primeiro produto irá possuir as features Ship Method, Economical e Fast. Já o
segundo produto será composto por todas as fatures do primeiro produto com a adição
da features Shopping Cart, Bonus, Update User Preferences.
6.3.5 Exemplo
Para possibilitar um melhor entendimento desta abordagem, será apresentado um
exemplo realizando a modelagem de variabilidade para o cenário Buy Products.
Mesmo esse cenário já ter sido parcialmente modelado no momento em que esta
abordagem foi apresentada, é necessário a apresentação deste exemplo, pois assim o
leitor terá uma visão completa da abordagem.
O cenário Proceed to Purchase é apresentado na tabela 5. Neste cenário pode-se notar
no passo 2 (representado por P2), a existência do parâmetro <SM> indicando que este
cenários pode ser reusado para diferentes configurações da feature Shipping Method. O
relacionamento entre parâmetros e features ocorre através do artefato Configuration
Knowledge (Tabela 4).
Id: SC01
Descrição: Proceed to Purchase
Id
P1
P2
P3
User Action
Fill in the requested information and
select the proceed option
Select one of the available shipping
methods ( <SM> ), fill in the
destination address and proceed.
Confirm the purchase
System Response
Request the shipping method and address
Calculate the shipping costs
Execute the order and send a request to the Delivery
System to dispatch the products. [CustomerPreferences]
Tabela 5. Cenário Proceed to Purchase
27
No passo 3, pode-se perceber a anotação [CustomerPreferences], esta representa
outro ponto de variação deste cenário. Esta anotação é utilizada como ponto de junção
(pointcuts) nos advices definidos nos casos de uso aspectuais. Esta anotação indica que
sempre que a mesma for encontrada, será chamado o advice Register use preferences
(ADV03) apresentado na tabela 8. A ligação entre a anotação e o advice é feita no
campo After do ADV03.
O advice Buy Produtct representado na tabela 6, permite o cliente comprar produtos
de uma loja eletrônica. Este advice introduz o comportamento antes do join point
identificado na cláusula Berfore que esta junto com a tabela, neste caso este advice
introduz o seu comportamento antes de P1 do SC01(Tabela 5).
Id: ADV01
Descrição: Buy a specific product
Before: P1
Id
B1
B2
User Action
Select the buy product option
System Response
Present the selected product. The user can change the
quantity of items he wants to buy. Calculate and show
the amount to be paid.
Select the confirm option.
Request payment information.
Tabela 6. Advice Buy a specific product
O advice Buy Products with Shopping Cart and Bonus (ADV02) representado na
tabela 7, permite a compra de produto que foram adicionados previamente no carrinho
de compras. Este advice é chamado antes do passo P1 caso o produto possua as feature
Shopping Cart e Bonus.
Id: ADV02
Descrição: Buy Products using a Shopping Cart
Before: P1
Id
C1
C2
User Action
Select the checkout option
System Response
Present the items in the shopping cart and the amount
to be paid. The user can remove items from the
shopping cart.
Select the confirm option.
Request bonus and payment information.
Tabela 7. Advice Buy Products using a Shopping Cart
O advice Register User Preferences (ADV03) representado na tabela 8, introduz o seu
comportamento depois da tag [CustomerPreferences] que é inserida no campo After.
Como exposto anteriormente, no contexto deste exemplo este advice será incluído
depois do passo P3 de SC01, pois o mesmo contém esta anotação.
28
Id: ADV03
Descrição: Register User Preferences
After: [CustomerPreferences]
Id
R1
User Action
System Response
Update the preferences based on the search results or
purchased items.
Tabela 8. Advice Register User Preferences
6.4 VML4RE
A Variability Modeling Language for Requirements (VML4RE)(Alférez et al, 2009),
é uma linguagem de composição de fragmentos de modelos de requisitos para
representar a variabilidades de uma SPL. Entre esses modelos estão incluídos diagramas
de casos de uso e seus cenários, esse são representados por diagramas de atividades.
Esta abordagem visa especificar a composição de modelos de requisitos para produtos
específicos de uma SPL através da utilização de um modelo de composição, o qual
contém transformações (ações nomeados) adaptadas para os cenários.
6.4.1 Representação da Variabilidade
Para representar a variabilidade, VML4RE fornece um conjunto especializado de
operadores para referenciar e compor partes dos cenários e modelo de casos de uso.
Diferentemente de outras abordagens não é acrescentadado anotações nos cenários e
também não é utilizados descrições textuais de formato livre, pois a mesma pode se
tornar ambígua.
O cenário principal e as variantes do fluxo principal, são especificados através de
diagramas de atividades. Para uma dada variante é criada um modelo de composição, no
qual é especificado como será a inserção dos passos da variante no diagrama que
representa o cenário principal. O modelo de composição permite a especificação de
transformações (ações) de composição entre os modelos para representar a
variabilidade.
A composição de cenários é uma transformação modelo-modelo, aonde o modelo do
cenário principal é tranformado em um modelo final. A tranformação é realizada através
de inserção dos passos da variante e remoção de elementos do modelo origem. A
transformação é guiada através do modelo de composição.
29
6.4.2 Exemplo
Agora é apresentada a modelagem do cenário Buy Products em VML4RE. O cenário
Buy Products básico é apresentado na figura 12, o cenário será referenciado com SC01,
para facilitar a explicação do mesmo.
Para a apresentação desse exemplo foi escolhido que o fluxo normal contará com os
passos que são executados caso as features ShoppingCart e Bonus não sejam
selecionadas na configuração do produtos. Os passos referente a ShoppingCart e Bonus
e Update User Preferences foram retirados e modelados como uma variante, pois os
mesmo apenas irão ser inseridos no cenário caso a configuração do produto contenha
essaa feature.
Figura 12. Cenário Básico Buy Products
30
Na figura 13 são apresentados os passo da variante que é inserida no cenário
principal caso a feature ShoppingCart seja inserida na configuração do produto, essa
variante será chamada de VRT01. As ações a ser executadas para a inserção da variante
VRT01 no cenário SC01 são apresentadas no modelo de composição apresentado na
figura 14.
Figura 13. Passos da variante VTR01
Na figura 14 é mostrado o modelo de composição, na linha 2 é realizada a
mesclagem entre o cenário e a variante, as refêrencias aos elementos do segundo
argumento (variante VRT01) são copiados para a referência do primeiro argumento
(cenário SC01). Na linha 3 é conectado o elemento inicial ao passo ATV01 da variante
VRT01. Na linha 4 é conectado o passo ATV02 da variante VRT01 ao passo ATV03
do cenário SC01. Na linha 5 são removidos os passos ATV01 e ATV02 do cenário
SC01.
Figura 14. Modelo de Composição ShoppingCart
Na figura 15 são mostrados os passos que são inseridos no cenário SC01 caso a
feature Bonus será inserida na configuração do produto, essa variante será chamada de
VRT02. As ações a ser executadas para a inserção da variante VRT02 no cenário SC01
são apresentadas no modelo de composição apresentado na figura 16.
Figura 15. Passos da variante VRT02
31
Na figura 16 é mostrado o modelo de composição, na linha 2 é realizada a mesclagem
entre o cenário e a variante, as refêrencias aos elementos do segundo argumento
(variante VRT02) são copiados para a referência do primeiro argumento (cenário
SC01). Na linha 3 é conectado o passo ATV01 do cenário SC01 ao passo ATV01 da
variante VRT02. Na linha 4 é conectado o passo ATV02 da variante VRT02 ao passo
ATV05 do cenário SC01. Na linha 5 são removidos os passos ATV03 e ATV04 do
cenário SC01.
Figura 16. Modelo de Composição Bonus
Na figura 17 são mostrados os passos que são inseridos no cenário SC01 caso a
feature Update User Preferences será inserida na configuração do produto, essa variante
será chamada de VRT03. As ações a ser executadas para a inserção da variante VRT03
no cenário SC01 são apresentadas no modelo de composição apresentado na figura 18.
Figura 17. Passos da variante VRT03
Na figura 18 é mostrado o modelo de composição, na linha 2 é realizada a mesclagem
entre o cenário e a variante, as refêrencias aos elementos do segundo argumento
(variante VRT03) são copiados para a referência do primeiro argumento (cenário
SC01). Na linha 3 é conectado o passo ATV09 do cenário SC01 ao passo ATV01 da
variante VRT03. Na linha 4 é conectado o passo ATV02 da variante VRT03 ao passo
final do cenário SC01.
Figura 18. Modelo de Composição Update User Preferences
32
6.5 MODEL TEMPLATE
O Model Templates (MTs)(Czarnecki, Antkiewicz, 2005) tem por objetivo
representar a variabilidade de uma LPS em vários modelos UML relacionados.
Nesta abordagem o elemento principal é o model family o qual é representado pelo
feature model e o pelo model template. Segundo (Czarnecki, Antkiewicz, 2005) o
feature model é utilizado para representar a hierarquia de feature, bem como as suas
restrições e possíveis configurações. Por outro lado, o model template contém a união
de elementos dos modelos em uma configuração valida. Uma instancia valida do
modelo corresponde a extensão de um model family.
O model template é expresso em termos de uma notação objetivo, a qual depende do
diagrama em que se deseja representar a LPS. Por exemplo, caso se deseja representar
LPS em diagramas de atividade, tanto o model template como o model instance devem
ser representados utilizando a notação do diagrama de atividade.
.
Os elementos de um model template irão ser anotados usando a presence conditions
(PCs) e meta-expressions (MEs). Sendo que estas anotações são definidas em termo de
features e atributos de features do feature model, e estes podem ser analisados tendo em
vista o feature configuration. Um PC apenas será habilitado caso as features que o
compõe sejam selecionadas na configuração do produto.
Tendo em vista a utilização do diagrama de atividades, os PCs podem ser
relacionados a elementos como ações, transições fluxos, nós iniciais e finais.
Uma instancia do model family pode ser especificada criando um feature
configuration baseado em um feature model. Um model template pode ser instanciado
automaticamente com base em um feature configuration. O processo de instanciação é
uma transformação modelo-modelo, sendo que a entrada e a saída são expressas em
notação objetivo. Este processo envolve a avaliação PCs e MEs, removendo as
condições falsas para PCs.
Na figura é apresentado o processo de instanciação de um produto com objetivo de
mostrar como o modelo final é composto. O exemplo utilizado para ilustrar esta
abordagem é retirado de (Czamecki, 2005).
O diagrama 19 deste exemplo é apresentado na figura 19(a). Para essa
exemplificação os elementos relevante são WishLists, SendWishList and Registration,
todas essas três features foram anotadas com “PCs”.
Neste exemplo os PCs são
compostos com uma única variável. O PC para a feature WishLists é [create wish list], o
33
PC para a feature SendWishList é [send wish list] e o PC para a feature Registration(na
figura RegisterWithTheStore) é [register].
A Figura 19(b) mostra um exemplo de
modelo de um produto instanciado criado com base na configuração do recurso
a partir da Figura 20.
Como os PCs correspondentes a SendWishList, não está incluído na configuração,
assim o PC fica avaliado como false e os elementos anotados como o mesmo foram
removidos do modelo final que é apresentado 19(b).
Figura 19. Composição de uma Instancia (Czamecki, 2005)
34
Figura 20. Configuração de Produto Retirada de (Czarnecki Antkiewicz, 2005)
6.5.1 Exemplo
Nesta seção será apresentada a modelagem para o cenário Buy Products na
abordagem Model Template, na figura 21 é apresentado a modelagem e a seguir será
discutido alguns conceitos da desta abordagem.
35
Figura 21. Especificação cenário Buy Products em Model Template
Tendo em vista a figura 21, podem-se observar alguns pontos de variação. Caso a
configuração do produto possua a feature ShoppingCart o passo Select the checkout
option e o passo Present the items in the shopping cart and the amount to be paid.
The user can remove items from shopping cart serão executados, caso contrario os
passos Select the buy product option e Present the selected product. The user can
change the quantity of items that he wants to buy. Calculate and show the amount
to be paid serão executados.
Também se pode verificar uma variação de acordo com a feature Bonus, caso essa
feature seja selecionada na configuração do produto os passos Select the confirm
option e Request bonus and payment Information serão executados, caso contrário
os passos Select the confirm option e Request payment information serão
executadas.
Por ultimo notamos a existência de um ultimo ponto de variação que é referente a
feature Update User Preferences, caso essa feature seja selecionada na configuração
do produto o passo Select the close session option e o passo Register the user
preferences serão executados, caso contrário a execução será encerrada.
36
6.6 PLUS
A abordagem PLUS (do inglês, Product Line UML-Based Software Engineering)
(Gomaa, 2004), é um método de desenvolvimento de software para LPS baseado em
UML. Este método cobre todo o processo de desenvolvimento de LPS, tanto a fase de
engenharia de domínio quanto à engenharia de aplicação. Neste trabalho será
apresentada a parte de modelagem de cenário de uso desta abordagem.
Para esta abordagem a modelagem da variabilidade pode ser tratada de duas
maneiras, podem ser modelagem para pequenas variações e ou variações complexas. As
pequenas variações são modeladas escrevendo o ponto de variação no proprio caso de
uso. As variações ditas como complexas são realizadas quando o caso de uso é muito
complexo e uma parte do mesmo é transformada em um novo caso de uso. As
dependências entre os casos de uso podem ser definidas por relacionamentos include e
extend.
6.6.1 Modelagem de Caso de Uso
Como exposto anteriormente, a modelagem de cenários é realizado tanto para
pequenas variações quanto para variação complexa. Neste momento será apresentado
como é realizada a documentação de cenários de pequenas variações.
6.6.1.1 Modelagem para Pequenas Variações
Segundo (Safonov, 2005) pequenas variações são variações que afetam uma ou duas
linha da descrição de caso de uso. O ponto de variação é colocado dentro do caso de
uso, pois caso contrario ficaria com pequenas variações fragmentadas em vários casos
de uso. Os pontos de variação dentro de um caso de uso são usados para especificar a
funcionalidade opcional ou alternativa dentro da linha de produtos. Para este tipo de
variação apenas é indicado a linha em que a variação poderá acontecer. A
documentação para pontos de variações pequenas devem possuir as informações
contidas no template apresentado na figura 22.
37
Figura 22. Template para descrever pontos de variação pequenos
6.6.1.1.1 Modelagem de variante opcional para Pequenas Variações
Na descrição de variante opcional, o comportamento descrito no campo Description
of functionality é inteiramente inserido nos pontos de variação explicitados contidos nas
linhas descritas no campo Line Numbers.
Para exemplificar este tipo de variante será apresentado o exemplo do ponto de
variação com opção de iluminação ao caso de uso Cook Food (apêndice 1). Este ponto
de variação indica se o micro-ondas irá possuir ou não a opção de iluminação, em que a
luz é ligada quando a porta é aberta e desligada quando a porta está fechada. A luz
também é ligada quando o forno começa a cozinhar a comida sendo que ela é desligada
quando o forno acaba de cozinhar. Na figura 23 é apresentado a variante Light, e logo a
seguir será explicado o mesmo.
Figura 23. Documentação da variante Light
Campo Type of functionality indica que a variante é opcional. No campo Line
number(s) é indicado que caso a feature seja inserida na configuração do produto o
comportamento expresso no campo Description of functionality será inserido nos passos
1, 5, 8, 9 do caso de uso.
38
6.6.1.1.2 Modelagem de variante alternativa para Pequenas Variações
Na descrição de variante alternativa, os comportamentos alternativos são descritos no
campo Description of functionality. Pode haver casos em que uma alternativa seja
padrão. Pode haver casos em que uma variação é obrigatória, em outros casos todos os
comportamentos são opcionais.
Para exemplificar a modelagem deste tipo de variante, será apresentada a variante
Display Language, que é responsável por escolher o idioma das mensagens do
microondas que são exibidas ao usuário. Essas mensagens são mensagens de aviso.
Uma vez que o forno deve ser vendido em todo o mundo, é necessário ser capaz de
variar o idioma de apresentação. O idioma padrão é o Inglês, e as outras línguas
possíveis são francês, espanhol, alemão e italiano. Neste caso, o idioma de apresentação
é um ponto de variação. Na figura 24 é apresentada a documentação da variante Display
Language e logo após a mesma será explicada.
Figura 24. Documentação da variante Display Language
No campo Type of functionality indica que a variante é alternativa e obrigatória, ou
seja, deverá ser selecionada no mínimo uma das alternativas de idioma. No campo Line
number(s) indica que o idioma será alterado nas ações do passo 3 e 8. No campo
Description of functionality indica que o idioma padrão é o Inglês e os idiomas
alternativos são o Francês, o Espanhol, o Alemão ou o Italiano.
6.6.1.2 Modelagem para Variações Complexas
Para pontos de variações complexos são modelado utilizando os mecanismos de
relacionamento extends e include.
Primeiramente será apresentada a modelagem
utilizando o mecanismo extends e após será apresentado o mecanismo include.
39
6.6.1.2.1 Modelagem de variação complexa com relacionamento Extend
Um ponto de extensão pode ser utilizado para modelar uma variabilidade opcional.
Um ponto de extensão com vários casos de uso de extensão pode ser usado para
modelar diversas variantes alternativas em que cada caso de uso de extensão especifica
uma alternativa diferente.
Pode haver caso em que há condições, sendo que essas condições são incluidas para
restringir a seleção dos casos de usos, assim um caso de uso de extensão apenas será
selecionado caso a condição seja verdadeira. Caso a condição seja verdadeira a
funcionalidade da extensão é incluida no caso de uso de um dado membro da linha de
produto que satisfaz a condição. A condição de linha de produtos é definida durante a
configuração do membro linha de produtos e não se altera durante a execução.
Condições da linha de produtos para os casos de uso de extensão alternativos
geralmente não são mutuamente exclusivos, pois é possível que um determinado
membro linha de produtos possa oferecer mais de uma alternativa. Se um caso de uso de
extensão é kernel (Gomaa, 2004), ou seja, obrigatório, então não é necessário atribuirlhe uma condição de linha de produtos, porque o mesmo vai estar sempre disponível.
No entanto, se o caso de uso de extensão é um caso de uso opcional ou alternativo, ele
precisa ter uma condição de linha de produtos.
Para melhor apresentar a modelagem com relacionamento extend, será utilizado o
ponto de variação payment que é declarado no caso de uso Check Out Customer da
linha de produto de supermercado apresentado em (Gomaa, 2004). O caso de uso
principal trata de conferir as compras dos clientes. Três casos de uso de extensão podem
lidar com o tipo de pagamento, os quais são: Pay by Cash, Pay by Credit Card e Pay by
Debit Card. Na figura 25 é apresentada a representação do caso de uso Check Out
Customer e suas extensões através do diagrama de caso de uso, sendo que para cada
ligação é apresentada a condição de seleção do comportamento de caso de uso de
extensão. Após será apresentada a documentação do caso de uso e suas extensões.
40
Figura 25. Diagrama de caso de uso de Check Out Customer (Gomaa, 2004)
Na figura 26 é apresentada a descrição do caso de uso Check Out Customer. Para esse
caso de uso a variabilidade é inserida na linha 6, nesta linha o parâmetro <payment>
indica que neste local a variante poderá ser inserida, neste caso uma forma de
pagamento.
Figura 26. Documentação do caso de uso Check Out Customer
Na figura 27 é apresentada a documentação do caso de uso da extensão Pay by Cash,
esse caso de uso será executado caso a condição [cash payment] seja verdadeira, ou
seja, na configuração de produto a alternativa Pay by Cash tenha sido selecionada para
fazer parte do produto. A condição [cash payment] é expressa no diagrama apresentado
na figura 25 entre o caso de uso Check Out Customer e o caso de uso Pay By Cash.
Caso essa condição seja verdadeira os passos descrito no caso de uso Pay by Cash serão
executados quando a execução do caso de uso Check Out Customer alcançar a linha 6.
41
Figura 27. Extensão Pay by Cash
Na figura 28 é apresentado o caso de uso extensão Pay by Credit Card. De acordo
com o diagrama apresentado na figura 25 esse caso de uso irá ser incluído caso a
condição [credit card payment AND credit card option] seja verdadeira. Esta condição
será verdadeira caso a opção credit card payment tenha sido selecionada na
configuração e o usuário tenha optado por pagar com cartão de crédito.
Figura 28. Extensão Pay by Credit Card
A extensão Pay by Debit Card segue o mesmo estilo da extensão Pay by Credit Card,
em termos de passo da extensão apenas é acrescentado o passo para digitar o PIM do
cartão e a condição de seleção será [debit card payment and debit card option]. Sendo
42
que esta condição será verdadeira caso o a opção debit card payment tenha sido
selecionada na configuração e o usuário tenha optado por pagar com cartão de crédito.
6.6.1.2.2 Modelagem de variação complexa com relacionamento Include
O relacionamento include é usado em situações que os passos do caso de uso se
estendem por vários casos de uso. Assim sendo, um caso de uso obrigatoriamente
dependerá do comportamento de outros caso de uso para conseguir executar o seu
cenário de uso.
O comportamento que é igual para vários caso de uso é inserido em um novo caso de
uso, sendo este novo caso de uso chamado de caso de uso de inclusão. O
comportamento do caso de uso de inclusão é o comportamento que é incluso por outros
casos de uso.
Os casos de uso include podem ser kernel, ou seja, devem ser inclusos toda vez que o
mesmo for chamado ou podem ser opcionais, sendo que estes somente serão
selecionados caso determinada condição seja verdadeira.
Para melhor exemplificar a documentação de variabilidade com o relacionamento
include, será apresentada a documentação de variabilidade do caso de uso Validate PIN
que é extraído de (Gomaa, 2004). Sendo que os casos de uso Withdraw Funds, Query
Account e transfer Funds obrigatoriamente incluíram o caso de uso Validate PIN. O
casos de usos opcional Deposit Funds apenas incluirá o caso de uso Validate PIN caso
a condição [deposit option] seja verdadeira caso e Print Statement apenas incluíra caso
a condição [ministatement option] seja verdadeira . O diagrama de caso de uso Validate
PIN é apresentado na figura 29.
Figura 29. Caso de Uso Validate PIN
43
Na figura 30 o caso de uso Validate PIN é apresenta, o comportamento deste caso de
uso será incluído no comportamento dos casos de uso que o incluem.
Figura 30. Caso de Uso Validate PIN
Na figura 31 é apresentada a documentação do caso de uso Withdraw Funds, como
apresentado na figura 29 este caso de uso inclui o comportamento do caso de uso
Validate PIN. Como apresentado no campo Dependency da figura 31, indica que este
caso de uso tem uma dependência de inclusão com o caso de uso Validate PIN.
No primeiro passo deste caso de uso é realizada a inclusão do caso de uso Validate
PIN, assim sendo quando esse caso de uso for executado, primeiramente será executado
todos os passo do caso de uso Validate PIN para depois executar os passos 2 e 3 do caso
de uso Withdraw Funds.
Figura 31. Caso de uso Withdraw Funds
44
Na figura 32 é apresentada a documentação do caso de uso Deposit Funds. O
campo Dependency indica que este caso de uso irá incluir o comportamento do caso de
uso Deposit Funds. O campo Inclusion condition indica que esse caso de uso Validate
PIN só será incluso caso a condição [deposit option] seja verdadeira. No primeiro
passo deste caso de uso é realizada a inclusão do caso de uso Validate PIN, assim sendo
quando esse caso de uso for executado, primeiramente será executado todos os passo do
caso de uso Validate PIN para depois executar os passos 2 e 3 do caso de uso Deposit
Funds.
Figura 32. Caso de Uso Deposit Funds
6.6.2 Exemplo
Para cada tipo de variação e relacionamento será apresentado um exemplo de
documentação de variabilidade utilizando a linha de produto eShop. Será apresentada a
modelagem para pequenas variações. As modelagens de variações complexas não serão
apresentadas para o escopo do eShop, pois essa linha de produto não suporta estes tipo
de variações.
6.6.2.1 Exemplo de modelagem de pequenas variações
Neste momento será apresentado a modelagem de pequenas variações no contexto de
linha de produto eShop. Primeiramente será apresentada a modelagem de variante
opcional e após é apresentada a modelagem de variante alternativa.
45
6.6.2.1 Exemplo de variante opcional para pequenas variações
Para exemplificar a utilização da modelagem de variante opcional de pequenas
variações será utilizado o cenários de uso Searches goods o qual é apresentado na figura
33.
Figura 33. Cenário searches goods
Para exemplificar a modelagem de variante opcional para pequenas variação será
utilizado o cenário search goods e também será utilizado a variante Show similar
results. Para essa exemplificação foi considerada que a variante Show similar results
como opcional e também foi desconsiderado a variante Provide search hints.
Figura 34. Variante Show similar results
Na figura 34 é apresentado a variante Show similar results, no campo Line number(s)
indicar o comportamento da variante será inserido na linha 3 do cenário Searches
Goods.
6.6.2.2 Exemplo de variantes alternativas para pequenas variações
Para exemplificar variantes alternativas será utilizado o caso de uso Register, o qual é
apresentado na figura 35. Para realizar o registro de um cliente, o mesmo poderá
46
utilizar o formulário simples ou o formulário completo. A documentação dessa variante
é apresentada na figura 36.
Figura 35. Caso de uso Register
Na figura 36 é apresentada a variante Search Options, a qual indica qual tipo de
formulário será disponibilizado para a realização do cadastro do cliente. Caso seja
realizado um registro simples o formulário irá contar com o campo de e-mail address e
postal address. Caso seja realizado um registro completo o formulário irá conter o
campo e-mail address, postal address e também informações bancárias,
Figura 36. Variante Search Options
7 Conclusão
O presente trabalho teve como objetivo apresentar algumas abordagens de
documentação de ponto de variação no contexto de linha de produtos. Para cada
abordagem procurou-se apresentar a motivação da mesma, qual a estratégia utilizada
para documentar a variabilidade. Para cada abordagem foi apresentado um exemplo de
modelagem de variabilidade com a linha de produto eShop.
Antes de apresentar as abordagens de documentação foram apresentados alguns
conceitos básicos que foram utilizados nas abordagens. Primeiramente foi exposta uma
visão geral do desenvolvimento baseado em linha de produto de software, a inserção
deste tópico foi necessária para que o leitor sem conhecimento prévio em LPS adquira
uma visão geral e o leitor que possua uma noção LPS aumente seu conhecimento sobre
47
a mesma. Também foi apresentado o conceito de caso de uso, esse foi necessário, pois
grande parte das abordagens utilizam diagramas de caso de uso e cenários de uso. A
conceituação de orientação a aspectos foi necessária, pois a abordagem MSVCM é uma
abordagem de documentação de variabilidade utiliza os conceitos de programação
orientada a aspectos.
Percebe-se que a variabilidade é documentada das mais diversas formas, algumas
abordagens utilizam descrições textuais Outras abordagens realizam a modelagem de
variabilidade através da utilização de diagramas uml. Todas as abordagens também
propõe como é realizada a derivação de um produto. Com as abordagens apresentadas
neste trabalho é possível realizar uma documentação eficiente de variabilidades em
linha de produto de software.
48
Bibliografia
Alexander I, Maiden N., Scenarios, Stories, Use Cases: Through the Systems Development Life-Cycle
(John Wiley & Sons, Ltd., 2004).
Alférez, M. Santos, J. Moreira, A, Garcia, A. Kulesza, U, Araújo, J. Amaral, V. Multi-view composition
languagem for software product line requirements. In SLE‟09, 2009. pag 103-122.
Alferez, M. Requirements Engineering Evaluating Approaches for Specifying Software Product Line
Use Scenarios, 2014
Antkiewicz M. and Czarnecki K.. Feature plugin: feature modeling plug-in for eclipse. In OOPSLA
workshop on eclipse technology eXchange, pages 67–72, New York, NY, USA, 2004.
Bachmann, F; Bass, L. Managing variability in software architectures. SIGSOFT Softw. Eng. Notes,
26(3):126–132, 2001.
BECKER, C, GEIHS, K. Quality of Service - Aspects of Distributed Programs. Proceedings of the
Aspect-Oriented Programming Workshop at ICSE‟98. Kyoto (Japão), 1998.
Bergmans L., Commun M.. ACM 44, 51, 2001
Bertolino. A. et al. Product Line Use Cases: Scenario-Based Specification and Testing of Requirements.
In: KAKOLA, T. Software Product Lines: Research Issues in Engineering And Management. 1st Edition.
ed. [S.l.]: Springer-Verlag, 2006. Cap. 11, p. 425-445.
Bonifácio, R. Modeling Software Product Line Variability in Use Case Scenarios – An Approach Based
on Crosscutting Mechanisms. (Tese de Doutorado) Universidade Federal de Pernambuco. Recife - PE,
Brasil. 2010.
Clements P., Northrop L., Software Product Lines: Practices and Patterns. Professional (Addison-Wesley,
2001)
Cockburn, A., Writing Effective Use Cases , Addison-Wesley, Reading, MA 2001
Czarnecki, K., Eisenecker, U.: “Generative Programming: Methods, Tools, and Applications”, AddisonWesley, 2000.
Czarnecki, K., Antkiewicz. M., in Generative Programming and Component Engineering, 4th
International Conference, GPCE 2005, Tallinn, Estonia, September 29 - October 1, 2005, Proceedings,
Lecture Notes in Computer Science, vol. 3676, ed. by R. Gl¨uck,M.R. Lowry (Springer, 2005), Lecture
Notes in Computer Science, vol. 3676, pp. 422–437
Eriksson M., Börstler J., Borg K.: Marrying Features and Use Case for Product Line Requirements
Modeling of Embedded Systems, Proceedings of the Fourth Conference on Software Engineering
Research and Practice in Sweden SERPS‟04, Institute of Technology, UniTryck, Linköping University,
Sweden (2004) 73-82
Eriksson M., Borstler J., and Borg K.. The PLUSS approach - domain modeling with features, use cases
and use case realizations. In SPLC‟ 2005, pages 33–44, Rennes, France, 2005.
Fey D., Fajta R., Boros A.: Feature Modeling: A Meta-model to enhance Usability and Usefulness,
Proceedings of the International Conference on Software Product Lines, Lecture Notes in Computer
Science, Vol. 2371, Springer-Verlag, (2002) 198-216.
Filman R., Elrad T., Clarke S.. Aspect-oriented software development (Addison-Wesley Professional,
2004);
49
Griss M., Favaro J., d‟Alessandro M.: Integrating Feature Modeling with the RSEB, Proceedings of the
Fifth International Conference on Software Reuse, Vancouver, BC, Canada, (1998) 76-85.
GOMAA, H. Designing Software Product Lines with UML: From Use Cases to Pattern-Based
Architectures. Redwood City, CA, USA: Addison Wesley, 2004.
Jacobson I., Griss M., Jonsson P.: Software Reuse – Architecture, Process and Organization for Business
success, Addison-Wesley (1997)
Kang, K., Cohen, S., Hess, J., Novak W., Peterson, A. Feature-oriented domain analysis (FODA)
feasibility study. Technical report, Carnegie-Mellon University Software Engineering Institute, November
1990.
KICZALES G., LAMPING J., MENDHEKAR A., MAEDA C., LOPES C.V., LOINGTIER J..
“Aspect-Oriented Programming. In: European Conference on Object-Oriented Programming (ECOOP”),
06,1997. Finlândia. Anais Springer-Verlag LNCS 1241, 06, 1997.
Krueger. C, Easing the Transition to Software Mass Customization, Revised Papers from the 4th
International Workshop on SoftwareProduct-Family Engineering, p.282-293, October 03-05, 2001.
LOUREIRO J. M., COSTA J. P. C. S. G., FONSECA R. M. S. B., LOUREIRO V. A. N., “Programação
Orientada a Aspecto”. FEUP Universidade do Porto, Porto, Portugal, 2010.
Mannion M., Lewis O., Kaindl H., Montroni G., Wheadon J.: Representing Requirements on Generic
Software in an Application Family Model, Proceedings of the International Conference on Software
Reuse ICSR-6 (2000) 153-196.
Masuhara H. and Kiczales, G.. Modeling crosscuttingin aspect-oriented mechanisms. In ECOOP’ 2003,
pages 2–28, 2003.
Nascimento, L. M. Core Assets Development in Software Product Lines - Towards a Practical Approach
for the Mobile Game Domain. Dissertação (Mestrado), Universidade Federal de Pernambuco, Centro de
Informática, Brasil, 2008.
Larman, C. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and
Iterative Development. 3rd Edition. ed. [S.l.]: Prentice Hall, 2004.
Parnas, D: On the design and development of program families. IEEE Trans-actions on Software
Engineering, 1976, 2:1–9.
Pereira, T, Uma Abordagem para Recomendação de Módulos para Projetos de Desenvolvimento
Distribuído de Linhas de Produto de Software, Dissertação de Mestrado, Universidade Federal da Paraiba
(UFRN), João Pessoa, 2011.
Pohl K, Linden F. Software Product Line Engineering: Foundations, Principles, and Techniques.
Springer, 2005
Pohl, k. Metzger, A. The eShop Product Line. In SPLC 2006. pp. 584 – 592
SAFONOV R., “Using Aspect-Oriented Programming for Trustwothy Software Development”. WileyInterscience, New Jersey, 2008.
Santander, V. F. A. Integrando Modelagem Organizacional com Modelagem Funcional. (Tese de
Doutorado) Universidade Federal de Pernambuco. Recife - PE, Brasil. 2002.
Silva, J. Agile: Uma abordagem para Geração Automática de Linguagens I*. Dissertação (Mestrado),
Universidade Federal de Pernambuco, Centro de Informática, Brasil, 2011.
50
Torres, M. Avaliação sistemática de abordagens de derivação de produto. Dissertação (Mestrado),
Universidade Federal do Rio Grande do Norte, Departamento de Informática e Matemática Aplicada,
2011.
UML. Unified Modeling Notation, versão 2.4.1, 2011. Disponivel em:<http://www.uml.org/>. Acesso
em: dezembro 2013.
51
Apêndice 1
Na figura 37 é apresentada a documentação do caso de uso Cook Food (Gomma,
2004), este caso de uso será utilizado para apresentar a modelagem de variabilidade da
abordagem PLUS. Nesta representação a sequência do cenário principal é descrito na
seção Description e os passos alternativos são apresentados Alternatives.
Figura 37. Descrição do Caso de Uso Cook Food
52
Download

Monografia