UNIVERSIDADE FEDERAL DE PERNAMBUCO
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
CENTRO DE INFORMÁTICA
MONOGRAFIA
RASTREABILIDADE DE REQUISITOS EM
LINHAS DE PRODUTO DE SOFTWARE
Autor
Carlos Eduardo Pontual de Lemos Castro
Professor
Jaelson Freire Brelaz de Castro
Recife, julho de 2008
Universidade Federal de Pernambuco
Centro de Informática
CARLOS EDUARDO PONTUAL DE LEMOS CASTRO
Sumário
1. Introdução .............................................................................................. 5
2. Conceitos Estudados .............................................................................. 7
2.1. Linha de Produtos de Software ............................................... 7
2.2. Rastreabilidade em Linhas de Produto de Software ............. 12
3. Abordagens Estudadas ......................................................................... 15
3.1. Modelo de Variabilidade específico para uma aplicação ...... 15
3.1.1. Modelo de Variabilidade Ortogonal ................................ 16
3.1.2. Modelo de Variabilidade de Aplicação ............................ 19
3.2. Framework de Rastreabilidade do AMPLE ............................ 24
3.2.1. Meta-modelo de Rastreabilidade ..................................... 25
3.2.2. Modelo de Referência (reference metamodel)................. 26
3.3. Modelo de Variabilidade Conceitual...................................... 29
3.4. Comparativo .......................................................................... 32
4. Conclusão ............................................................................................. 35
Referências Bibliográficas ........................................................................ 36
2
Índice de Figuras
Figura 1: Artefatos de uma LPS (1) e produtos gerados a partir do reuso
desses artefatos (2, 3 e 4) ..................................................................... 9
Figura 2: Visão geral do desenvolvimento de uma LPS [6]] .......................... 10
Figura 3: Feature-model das possibilidades de configuração de um veículo 11
Figura 4: Rastreando variações em LPS ....................................................... 14
Figura 5: Modelo de variabilidade no topo dos artefatos. ............................ 15
Figura 6: Exemplo do diagrama de variabilidade ortogonal ......................... 17
Figura 7: Notação gráfica do diagrama ortogonal de variabilidade .............. 17
Figura 8: Ambigüidade em requisito .......................................................... 18
Figura 9: Mapeamento das dependências entre os diversos tipos de artefatos
de uma LPS. 1- Diagrama de Variabilidade, 2- Feature Model, 3Diagrama de Casos de Uso, 4- Diagrama de Seqüência, 5- Descrição do
Caso de Uso, 6- Requisitos textuais, 7- Diagrama De Classes, 8Diagrama de Fluxo de dados e 9- Diagrama de Estados ....................... 19
Figura 10: Relação entre DVM e AVM ......................................................... 20
Figura 11: Exemplo de Domain Variability Model com um ponto de variação
(door lock mechanism) e duas variantes (key card, key pad). ............... 20
Figura 12: AVM gerada apenas com reuso de artefatos............................... 21
Figura 13: AVM gerada com uma nova variação e novos requisitos
relacionados ....................................................................................... 22
Figura 14: AVM gerada com reuso parcial da variante key pad.................... 22
Figura 15: Exemplo em que a variação proposta conflita com o DVM
existente ........................................................................................... 24
Figura 16: Meta-modelaso de referência de rastreabilidade ........................ 28
3
Figura 17: Os espaços de problema (problem space) e solução (sulution
speace) ............................................................................................... 30
Figura 18: As três dimensões do desenvolvimento de LPS .......................... 30
Figura 19: Modelo conceitual de variabilidade ............................................ 31
Figura 20: Modelo conceitual de variabilidade para uma LPS de sistemas
bibliotecários...................................................................................... 32
4
1. Introdução
Com o avanço da tecnologia, a necessidade por softwares é cada vez maior.
Entretanto, as exigências do público consumidor de aplicativos também
cresceram muito nos últimos anos. Os clientes, atualmente, não se
contentam mais com softwares de ―caixa‖, que são iguais para todos os
consumidores. Esses consumidores querem aplicações com personalização,
que possam permitir a seleção de todas as funcionalidades presentes, sem
que, para isso, haja aumento dos custos ou atraso da entrega do aplicativo.
Entretanto,
o
custo
de
desenvolvimento
de
uma
aplicação
personalizada é alto, em contraste com o desenvolvimento em massa de um
único sistema, através do qual o custo se dilui pelas diversas cópias iguais
que são vendidas. Esse é o cenário ideal para o conceito de linhas de produto
de
software
(LPS),
que
permite
o
desenvolvimento
de
aplicações
customizadas em massa.
Um importante fator para o sucesso de uma LPS é a rastreabilidade das
variações, pois a rastreabilidade facilita o gerenciamento da LPS, a análise de
impacto de modificações, a evolução da linha e a validação da mesma.
Segundo [12], rastreabilidade é “o link descrevendo o relacionamento ou
dependência entre dois artefatos desenvolvidos durante as várias fases da
engenharia de software”.
Nesse trabalho serão abordadas três soluções de rastreabilidade em
LPS. Apesar de o foco inicial ser a rastreabilidade de requisitos, todas as
soluções aqui introduzidas possibilitam o rastreamento dos diversos tipos de
artefatos gerados durante o desenvolvimento de uma LPS, independente das
fases
do
processo
onde
eles
são
gerados
(requisitos,
arquitetura,
desenvolvimento, testes, etc.).
No capítulo dois são descritos os principais conceitos estudados
durante a composição desse trabalho, Linha de Produtos de Software e
Rastreabilidade em Linhas de Produto de Software. No capítulo três as três
soluções de rastreabilidade em LPS são introduzidas e, após isso, uma
5
pequena comparação entre elas é efetuada. No quarto e último capítulo, são
apresentadas as conclusões obtidas nessa monografia.
6
2. Conceitos Estudados
Nesse capítulo será feita uma abordagem sobre os principais conceitos
envolvidos nesse trabalho. Na seção 2.1 será introduzido o conceito de Linha
de Produtos de Software. Em 2.2 será abordado o conceito principal desse
trabalho, rastreabilidade em linha de produtos de software.
2.1. Linha de Produtos de Software
Com o passar dos anos, o comportamento do público consumidor de
software se modificou bastante. Os clientes de hoje não se contentam mais
com uma única versão de um programa, que seja igual para todos. Eles
querem sistemas personalizados, que tenham apenas um determinado leque
de funcionalidade escolhido por eles, mas não querem que isso comprometa
o custo final e nem o prazo de entrega das aplicações. Além disso, o
mercado de software vem se tornando cada vez mais competitivo, novas
empresas são criadas constantemente e, com elas, novos produtos são
lançados no mercado. Com isso, os desenvolvedores de sistemas são
praticamente
obrigados
a
atenderem
todas
as
necessidades
dos
consumidores, com o menor custo possível, para não perder o cliente.
Entretanto, o desenvolvimento de aplicações personalizadas gera altos
custos, em contraste com o desenvolvimento de aplicações em massa, que
possui um baixo custo por reutilizar a mesma aplicação para diversos
clientes, mas limita as funcionalidades dos sistemas.
É nesse cenário que surge o conceito de linhas (ou famílias) de
produtos de software (LPS), uma abordagem que procura estabelecer um
reuso planejado de componentes (ativos base entre os produtos [1]),
permitindo uma produção em larga escala de produtos customizados para
vários clientes. Essa abordagem, considerado por alguns como um novo
7
paradigma [25], procura aproveitar-se de que poucos sistemas são únicos,
muitas vezes uma mesma empresa produz diversas aplicações similares
pertencentes a um mesmo domínio [2].
Assim, uma LPS nada mais é do que um conjunto de produtos
(software) com várias funcionalidades em comum, mas com variações entre
si. Parnas [3] diz que “em uma LPS o conjunto de propriedades comuns dos
programas é tão grande que é mais vantajoso estudar as propriedades
comuns entre os programas antes de analisar as características individuais
de cada membro”. Já Clements e Northrop [4] definem LPS como “um
conjunto de sistemas de software que compartilham um conjunto gerenciável
comum de características que satisfazem as necessidades específicas de um
segmento de mercado particular e que são desenvolvidas de um conjunto de
ativos base comum, de modo planejado”.
Assim, em uma LPS, é feito um planejamento de que características
comuns serão reutilizadas entre os produtos que serão desenvolvidos
(diferente do que acontece em sistemas únicos, nos quais o reuso não é
planejado, é oportunista, ou ad-hoc, como quando um simples trecho de
código de um produto existente é reutilizado em um novo produto [2]) e, a
partir desse planejamento, são construídos os artefatos comuns (1 na Figura
1) que, posteriormente, são utilizados para gerar os diversos produtos da
linha (2, 3 e 4 na Figura 1). Repare na figura que nenhum dos produtos
gerados é igual ao outro, cada um deles possui variações específicas.
Desse
modo,
temos
uma
grande
diminuição
nos
custos
de
desenvolvimento e manutenção dos programas resultantes da linha, dado
que os artefatos construídos para a LPS são elaborados uma única vez (e não
três vezes, caso três novos produtos fossem desenvolvidos do zero) e a
manutenção deve ser efetuada em um único artefato (novamente, seria
necessário alterar três produtos diferentes caso um erro comum entre as
aplicações fosse detectado, situação que acontece freqüentemente quando é
feito reuso de código de não planejado).
8
O desenvolvimento de uma LPS aborda dois processos diferentes, mas
estritamente
relacionados
[5][6],
Engenharia
de
Domínio
(Domain
Engineering) e Engenharia de Aplicação (Application Engineering). O primeiro
é responsável por definir a estrutura que representará toda a família de
produtos, incluindo os pontos comuns e as variações presentes nos produtos
da linha. Essa estrutura é formada pelos artefatos gerados (ativos base),
como documentos de requisitos, diagramas arquiteturais, diagramas UML [2],
arquivos fonte de código, documentos de teste, etc.
Figura 1: Artefatos de uma LPS (1) e produtos gerados a partir do reuso desses artefatos (2,
3 e 4)
9
No segundo processo, Engenharia de Aplicação, as aplicações da linha
(produtos) são derivadas da LPS gerada no processo anterior. Ou seja, é
nessa etapa que são exploradas as variações da linha, cada produto é ligado
às suas variações, de acordo com suas necessidades. Os artefatos gerados
no primeiro processo são denominados artefatos de domínio (domain
artefacts), enquanto os gerados no último processo são conhecidos como
artefatos de aplicação (application artefacts). Na Figura 2 temos uma visão
geral do processo de desenvolvimento de uma LPS. Repare que, os produtos
gerados (Product models, parte inferior da figura) possuem artefatos que são
variações dos artefatos de domínio.
Figura 2: Visão geral do desenvolvimento de uma LPS [6]
Na literatura, diversos modelos gráficos foram propostos para
representar uma LPS (modelos esses que servem para especificar variações
em linhas de produtos), sendo o modelo de features (feature model, Figura
3) proposto em [7] uma das mais utilizadas. Na Figura 3, a aresta com uma
10
bola sem seu fim indica que uma determinada feature é opcional. Já as
arestas que são separadas por um arco aberto indicam que suas respectivas
features são alternativas. Mais detalhes sobre esse são encontrados em [7].
Diversas são os benefícios trazidos pelo uso de SPL [5], dentre eles
destacam-se:
1. Redução nos custos de desenvolvimento, devido ao reuso de artefatos
de domínio que são construídos uma única vez;
2. Melhora na qualidade dos produtos, pois os artefatos presentes nos
produtos gerados já foram previamente utilizados e testados em
outros produtos, assim, a probabilidade desses artefatos apresentarem
erros é bastante reduzida;
3. Redução no tempo de desenvolvimento, pois apenas os artefatos
específicos de uma determinada aplicação precisam ser desenvolvidos.
Grande parte de um produto gerado é fruto do reuso dos artefatos de
domínio;
4. Redução nos custos de manutenção, pois agora a manutenção é feita
em um único lugar e todos os produtos podem ser gerados novamente
já com os erros corrigidos.
Figura 3: Feature-model das possibilidades de configuração de um veículo [7]
Apesar de tantos benefícios, existem também alguns fatores que
devem ser considerados antes de se optar pelo uso LPS, como o custo e o
11
tempo
total
do
desenvolvimento
do
primeiro
produto,
que
são
consideravelmente maiores do que no desenvolvimento de um sistema único
(estima-se que o custo de uma LPS passa a ser menor do que o custo de
sistemas únicos quando a LPS gera, pelo menos, três produtos [1]).
Assim, é recomendável que uma instituição faça um estudo detalhado
antes de adotar a abordagem de LPS em seu processo de desenvolvimento,
pesando os pontos positivos e negativos, com objetivo de verificar se essa
abordagem pode ou não trazer benefícios para essa determinada empresa.
2.2. Rastreabilidade em Linhas de Produto de
Software
Rastreabilidade é uma característica essencial de um sistema, dado que
ela facilita o gerenciamento do software, a análise de impacto de
modificações, a evolução software e a validação do mesmo.
Gotel e Finkelstein [8] definem rastreabilidade como ―a habilidade de
descrever
e
seguir
o
ciclo
de
vida
de
um
requisito
durante
seu
desenvolvimento e uso, tanto a partir de sua especificação (forward), quanto
de sua especificação para trás (backward), e durante as fases de refinamento
do requisito‖. Ou seja, rastreabilidade é uma importante tarefa no
desenvolvimento de software, dado que ela provê uma ligação entre os
artefatos gerados e a realização das necessidades dos stakeholders do
sistema. [9].
Segundo Berg et.al. [12], o gerenciamento de variabilidade ocupa um
importante papel no sucesso de uma linha de produtos. Existe a necessidade
de uma abordagem de gerenciamento de variabilidade universal, consistente
e escalável, que seja capaz de prover rastreabilidade entre as variações que
ocorrem nos diferentes níveis de abstrações e durante as várias etapas de
desenvolvimento (independente dos tipos de artefatos gerados).
12
Segundo [6], são três os tipos de rastreabilidade que podem ser
encontrados em LPS:
1. Rastreabilidade entre artefatos de domínio ou entre artefatos de
aplicação. Artefatos de uma fase de desenvolvimento durante o processo de
engenharia de domínio são transformados / mapeados em artefatos de outra fase
do mesmo processo (1 e 2 na Figura 2). O mesmo pode ocorrer com artefatos de
aplicação (durante o processo de engenharia de aplicação). Essa é a chamada
rastreabilidade vertical (vertical traceability). Nesse caso, o problema de
rastreabilidade é similar ao encontrado no processo de desenvolvimento de um
único sistema, mas em uma LPS, a rastreabilidade também deve considerar os
modelos utilizados para especificar a variação entre os produtos (ex.: feature
model). Por exemplo, um sistema de controle de acesso pode ter diferentes
mecanismos de verificação de usuário, como senhas, leitores de impressão digital
ou reconhecimento de voz. Entretanto, para cada mecanismo selecionado no
modelo de variação, podemos ter uma alteração na arquitetura do sistema final, e
o mecanismo de rastreabilidade deve ser capaz de associar a seleção dessa
variante no modelo de features com a alteração que vai ocorrer na arquitetura do
produto.
2. Rastreabilidade entre os processos de engenharia de domínio e de
aplicação. Em uma LPS, os artefatos de aplicação de uma determinada fase de
desenvolvimento são obtidos através de artefatos de domínio. Isso acontece
depois decisões que especificam qual o subconjunto de variações que deve ser
incorporado a um produto específico da linha (3, 4 e 5 na Figura 2). Isso implica
que algumas variantes devem ser ligadas a seus respectivos pontos de variações
e outras variantes devem ser descartadas. O gerenciamento de rastreabilidade
em LPS também deve ser capaz de gerenciar esse tipo de relacionamento.
3. Rastreabilidade entre a especificação da variação e realização da
mesma. Muitas abordagens de LPS utilizam modelos específicos, como o feature
model, para representar variações em LPS. Entretanto, os mecanismos que dão
13
suporte a essas variações devem ser incorporados aos modelos de domínio.
Assim, para cada variação deve ser incluído pelo menos um ponto de variação no
modelo de domínio e as possíveis variantes que podem ser ligadas a esses
pontos de variação, representando diferentes alternativas de configuração.
Suponha uma aplicação que proporcione ao cliente a visualização de uma
informação em forma de gráfico (Figura 4). Na hora em que o cliente estiver
tentando acessar os dados, ele deve escolher o tipo de gráfico em que ele deseja
que as informações sejam exibidas. Perceba que o cliente possui três opções de
gráficos disponíveis (lado esquerdo da Figura 4). Essas variações são realizadas
por um mecanismo de plugins, a interface gráfica (GUI) do sistema provê uma
interface (RegisterPlugin) para que os diferentes plugins possam ser adicionados.
Assim, essa interface exerce o papel de ponto de variação, e cada um dos
possíveis tipos de gráficos é um plugin que se registrará na interface caso ele seja
o mecanismo escolhido pelo usuário para exibir as informações na tela. Ou seja,
existem relacionamentos de dependência entre a especificação da existência de
um ponto de variação e como ele é projetado, e entre o conjunto de variantes e a
forma como estas são realizadas. Logo, no contexto de rastreabilidade em LPS,
tais relacionamentos devem ser gerenciáveis.
Figura 4: Rastreando variações em LPS. [6]
Na
próxima
seção
serão
introduzidas
três
abordagens
de
rastreabilidade em LPS. Todas essas abordagens oferecem soluções que
suportam os três tipos de rastreabilidade abordados neste capítulo.
14
3. Abordagens Estudadas
Nesse capítulo, três soluções de rastreabilidade para LPS encontrados na
literatura serão analisadas. Em 3.1 iremos introduzir o modelo de
variabilidade proposto por Pohl [10]. Já em 3.2, será discutido o meta-modelo
de rastreabilidade construído no projeto AMPLE [11]. Finalmente, em 3.3,
veremos a solução proposta por Berg em [12].
Todas as soluções aqui analisadas possuem em comum o fato de
definirem um modelo de variabilidade no topo de ciclo de vida de uma LPS,
englobando os artefatos gerados em todos os estágios da linha, como
podemos ver na figura abaixo (Figura 5).
Figura 5: Modelo de variabilidade no topo dos artefatos. Adaptado de [9]
3.1. Modelo de Variabilidade específico para uma
aplicação
Nessa seção será discutido o modelo proposto em [10]. Em 3.1.1 será
introduzido o Modelo de Variabilidade Ortogonal, que é a base para o
Modelo de Variabilidade de Aplicação (ou Modelo de Variabilidade específico
para uma Aplicação, [10]), descrito em 3.1.2.
15
3.1.1. Modelo de Variabilidade Ortogonal
Em [5] Pohl et al. introduz um Modelo de Variabilidade Ortogonal
(MVO) com o objetivo de representar adequadamente as variações em uma
LPS. Segundo o autor, a documentação de uma variação, para ser
considerada adequada, deve ser capaz de responder as seguintes perguntas:
―O que está variando?‖, ―Por que isso está variando?‖, ―Como isso está
variando (e que artefatos essa variação influencia)?‖ e ―Para quem esta
variação está sendo documentada (usuários finais, externos, ou usuários
internos da empresa)?‖.
O MVO proposto representa as variações em um diagrama de
variabilidade (Variability Diagram) que relaciona suas entidades com as
variações nos artefatos presentes em uma LPS (documentos de requisitos,
diagramas,
arquivos
de
código,
testes,
etc.),
criando,
assim,
uma
dependência entre os artefatos.
Na Figura 6 temos um exemplo do diagrama de variabilidade que
possui um ponto de variação (Door Lock) e duas variantes (Keypad e
Fingerprint Scanner). O arco preto entre as duas variantes significa que elas
são alternativas, e a linha pontilhada significa que ambas são opcionais (uma
linha cheia indica que uma variante é obrigatória, ou mandatória). Cada
variante está ligada diretamente a um caso de uso do diagrama de caso de
uso (lado esquerdo, Figura 6). Assim, caso a variante Keypad seja
selecionada, teremos apenas o caso de uso Unlock Door by Keypad no
diagrama final do produto gerado por essa linha. Caso similar aconteceria
com Unlock Door by Fingerprint caso a outra variante fosse selecionada.
Na Figura 7 temos uma descrição detalhada da notação do diagrama
de variabilidade. ―Ponto de variação‖ (variation point) e ―variante‖ (variant)
são os principais elementos dessa representação gráfica.
16
Figura 6: Exemplo do diagrama de variabilidade ortogonal [5]
Figura 7: Notação gráfica do diagrama ortogonal de variabilidade [5]
O MVO proposto é capaz de resolver diversos problemas até então
presentes em artefatos resultantes do processo de engenharia de requisitos
de uma LPS, como ambigüidade em documentos textuais de requisitos, e a
dificuldade de agrupar as features no feature model. Tome como exemplo o
seguinte trecho de um documento de requisitos: ―O sistema de segurança
deve ser equipado com câmeras preto e branco ou câmeras coloridas
17
capazes de tirarem fotos em modo infravermelho‖. No trecho descrito não
está claro se ambos os tipos de câmera devem ser capazes de tirar fotos em
infravermelho ou se apenas as câmeras coloridas devem tirar fotos em
infravermelho. Suponha que o tipo de câmera escolhido seja um ponto de
variação com duas variantes, câmeras preto e branco ou colorido. Assim, um
possível diagrama de variabilidade utilizando o MVO seria:
Ponto de Variação
O Sistema de segurança deve ser equipado com câmeras ...
Variante
... preto e branco ...
Variante
... ou coloridas ...
... que sejam capazes de tirar fotos em modo infravermelho.
Figura 8: Ambigüidade em requisito. Adaptado de [5]
Como podemos ver na Figura 8, o diagrama de variabilidade gerado elimina a
ambigüidade do sistema, pois agora sabemos que o sistema deve ter
câmeras preto e branco ou coloridas e ambos os modelos devem ser capazes
de tirar fotos em modo infravermelho. Além de permitir a variabilidade em
requisitos textuais, o MVO também permite expressar variabilidades em
diagramas de caso de uso (Figura 6), diagramas de seqüência, cenários de
caso de uso, diagramas de classe, diagramas de fluxo de dados e diagrama
de estados [5].
Para possibilitar a rastreabilidade, podemos representar em um único
diagrama todos os artefatos de requisitos, obtendo assim um grande
mapeamento de dependência entre tais artefatos (Figura 9).
18
Figura 9: Mapeamento das dependências entre os diversos tipos de artefatos de uma LPS. 1Diagrama de Variabilidade, 2- Feature Model, 3- Diagrama de Casos de Uso, 4- Diagrama de
Seqüência, 5- Descrição do Caso de Uso, 6- Requisitos textuais, 7- Diagrama De Classes, 8Diagrama de Fluxo de dados e 9- Diagrama de Estados. Adaptado de [5]
3.1.2. Modelo de Variabilidade de Aplicação
19
Como definido em [10], um modelo de variabilidade de aplicação
(Application Variability Model, AVM) é um modelo em que são documentadas
as variações que necessitam ser feitas no Modelo de Variabilidade do
Domínio (Domain Variability Model, DVM) para que uma aplicação específica
seja gerada (Figura 10). O DVM é um modelo Modelo de Variabilidade
Ortogonal (MVO) que possui apenas os artefatos de domínio de uma LPS, ou
seja, os artefatos resultantes do processo de engenharia de domínio [4], que
são os artefatos planejados para serem reutilizados em uma linha de
produtos (Figura 11).
Figura 10: Relação entre DVM e AVM [10]
Figura 11: Exemplo de Domain Variability Model com um ponto de variação (door lock
mechanism) e duas variantes (key card, key pad). Adaptado de [10].
20
Deste modo, para cada produto de uma LPS, teremos um AVM que será
gerado a partir do DVM dessa linha. A rastreabilidade entre o AVM gerado e
os diferentes artefatos da linha é representada com links de dependência de
artefatos (Artefact Dependencies, Figura 10). Durante a elaboração da AVM
de uma nova aplicação da LPS, podemos nos deparar com as seguintes
situações:
Caso 1 – Reuso total: Nesse caso, o artefato da aplicação (application
artefact) é definido apenas reutilizando o artefato do domínio (domain
artefact). Ou seja, nenhuma adaptação específica para a aplicação é
necessária. Entretanto, é necessário fazer a ligação do ponto de variação
com a(s) variante(s) escolhida para a aplicação. Então, tomando como
base o DVM da Figura 11 e supondo que a aplicação gerada terá apenas a
variante key card, temos que o documento de requisitos da aplicação
agora terá apenas os requisitos R54 e R55 (Figura 12).
Figura 12: AVM gerada apenas com reuso de artefatos [10]
Caso 2 – Sem reuso: Nesse caso, a variação a ser incluída na nova
aplicação não fazia parte dos artefatos de domínio, ou seja, um novo
artefato é desenvolvido para a nova aplicação. Assim, nenhum reuso
acontece e, todos os novos artefatos que são desenvolvidos nas etapas
da LPS por causa dessa variação inserida devem ser ligados na AVM, para
possibilitar o rastreamento da nova variação. Tomando novamente o
exemplo do mecanismo de tranca das portas, a seguinte AVM seria
21
obtida caso uma nova variação, finger print, fosse desenvolvida
especificamente para o novo produto que está sendo gerado (repare nos
novos requisitos de aplicação, R 84 e R 85, fragmentos novos que foram
criados decorrentes da nova variação):
Figura 13: AVM gerada com uma nova variação e novos requisitos relacionados [10]
Caso 3 – Reuso parcial: Nesse caso, o artefato da nova aplicação pode
ser parcialmente definido reutilizando um artefato de domínio, ou seja,
artefatos de domínio podem ser reutilizados, mas precisam de algumas
modificações específicas para atender aos requisitos da aplicação que
está sendo gerada. Por exemplo, suponha que a variante do sistema de
tranca de portas utilizada seja a key pad, mas o cliente impõe uma nova
restrição no tamanho da senha que o usuário deve informar. Nesse caso,
o AVM gerado e os requisitos a serem incluídos na aplicação podem ser
visualizados da seguinte maneira:
Figura 14: AVM gerada com reuso parcial da variante key pad [10]
22
Repare na Figura 14 que o requisito R 12, presente na Figura 11, é
removido apenas para a aplicação que está sendo gerada (no caso,
App. A, o que pode ser visto no rótulo ―delete-elem App.A‖) e, em seu
lugar, é inserido um novo requisito, também apenas para a aplicação
que está sendo elaborada, o R 12a (novamente temos o rótulo App.A).
Dessa maneira, é possível rastrearmos a variação que foi modificada e
descobrirmos o que foi modificado. Isso é muito importante, pois, em
outras etapas da LPS, como a de testes, podemos realizar apenas
pequenas modificações em artefatos já existentes, baseando-nos nos
requisitos modificados, ao invés de desenvolver novos artefatos do zero.
Caso 4 – Conflito com o DVM: Essa situação ocorre quando uma
modificação específica da nova aplicação entra em conflito com as
variações já existentes no DVM. Esse conflito precisa ser resolvido para
que o AVM gerado esteja correto. Considerando novamente o exemplo da
Figura 11, suponha que um cliente deseje um sistema em que seja
possível ter ambos os mecanismos de tranca de portas (i.e., as duas
variantes, key card e key pad). Entretanto, veja que a restrição [1..1] no
DVM permite que apenas uma das variações seja escolhida em um
produto. Assim, é necessário realizar uma modificação nessa restrição no
modelo AVM gerado. Logo, a cardinalidade do ponto de variação door
lock mechanism deve ser alterada para [1..2] no modelo específico da
aplicação (a alteração pode ser identificada pelo símbolo
na Figura 15).
Agora, a aplicação a ser gerada (apenas ela, veja o rótulo App.A) pode ter
ambas as variantes para o variation point em questão.
Nesses quatro casos, podemos perceber que o AVM facilita na
documentação
das
adaptações
específicas
de
uma
dada
aplicação,
centralizando as informações de todos os artefatos que foram alterados
(removidos ou inseridos) por conta das modificações específicas para certos
produtos da linha. Essa centralização nos proporciona uma facilidade maior
23
para validade a consistência do modelo, além de facilitar muito o
entendimento das modificações.
Repare que a idéia do modelo de variabilidade da aplicação é bastante
similar ao MVO [5] que foi discutido na seção anterior. Em [13] é apresentado
outro modelo de variação, no qual as variações são documentadas em um
modelo dedicado (e não nos artefatos de domínio). As vantagens obtidas
utilizando o mecanismo [13] são, essencialmente, as mesmas obtidas
utilizando o modelo AVM.
Entretanto, utilizando AVM, temos que o modelo gerado serve como
um ponto de entrada para navegar (navegação em ambos os sentidos, frente,
forward, e trás, backward) por todos os artefatos (não só os de requisitos,
mas os arquiteturais, os trechos de código, casos de teste, etc.) que foram
afetados por uma modificação específica de um novo produto da linha, coisa
que não ocorre com a abordagem citada em [13].
Figura 15: Exemplo em que a variação proposta conflita com o DVM existente [10]
3.2. Framework de Rastreabilidade do AMPLE
Aspect-oriented Model-driven Product Line Engineering (AMPLE [11]) é
um projeto (consórcio) que tem como membros vários centros de pesquisa
24
em tecnologias espalhados por todo o mundo (Universidade de Lancaster,
Universidade Nova de Lisboa, etc.) e gigantes multinacionais da área de
desenvolvimento de sistemas (Siemens, SAP, etc.). O objetivo desse projeto é
combinar as técnicas de Desenvolvimento de Software Orientado a Aspectos
(Aspect Oriented Software Development, AOSD) e Desenvolvimento Orientado
a Modelos (Model Driven Development, MDD) para possibilitar o controle de
variabilidade em todas as etapas de uma Linha de Produto de Software [6].
Para isso, AMPLE propõe um Framework de Rastreabilidade para LPS.
Entretanto, dentro das limitações do escopo desse trabalho, iremos abordar
nesta seção apenas o desenvolvimento do meta-modelo de Rastreabilidade
para LPS, que é um o elemento central do framework de Rastreabilidade do
AMPLE [6].
3.2.1. Meta-modelo de Rastreabilidade
O meta-modelo de rastreabilidade proposto em Error! Reference
source not found. foi elaborado levando em consideração três fatores:
1. Utilizando como base meta-modelos de rastreabilidade previamente
definidos (em especial o MODELWARE [14]);
2. Analisando o resultado de um survey sobre rastreabilidade em Linhas
de Produtos de Software com foco em Orientação a Aspectos realizado
em outra etapa do AMPLE [9];
3. De acordo com as necessidades de rastreabilidade e os requisitos de
vários projetos realizados nas instituições que compõe o consórcio
AMPLE (diversos cenários fornecidos pelos parceiros do projeto foram
analisados).
O desenvolvimento desse modelo foi aconteceu em duas etapas. Na
etapa inicial, foi desenvolvido um meta-modelo de referência (reference
25
metamodel), com o objetivo de suportar a definição de diversos modelos
específicos de rastreabilidade, um para cada um dos projetos analisados
(terceiro fator descrito acima). Na segunda fase ocorreu o desenvolvimento
de um meta-modelo de rastreabilidade específico (core metamodel), baseado
nas necessidades do projeto AMPLE.
Esse
modelo
de
referencia
permite
a
definição
de
links
de
rastreabilidade com múltiplas ―fontes‖ e ―destinos‖ e, permite também,
definir os tipos desses links, definir o tipo dos artefatos que serão
interligados, e associar informações adicionais de contexto a esses links.
Além disso, com ele podemos descrever e ―seguir‖ toda a vida dos diversos
artefatos de uma LPS (documento de requisitos, classes, etc.) em ambos os
sentidos
(forward
e
backward) durante
cada
fase
do processo de
desenvolvimento da linha.
Como o meta-modelo específico do projeto AMPLE ainda não está
completo, iremos abordar nesse trabalho (na próxima subseção) apenas o
modelo de referência proposto no AMPLE.
3.2.2. Modelo de Referência (reference metamodel)
A especificação de um meta-modelo de rastreabilidade requer algumas
decisões prévias, como a definição dos artefatos que devem ser rastreados
(ex. casos de uso, feature models, componentes, etc.) e o tipo de
relacionamento entre artefatos (ex. dependência, influência, etc.) que o
modelo deve suportar. Entretanto, esses artefatos e tipos de relacionamentos
podem variar para cada tipo de projeto.
Desse modo, o meta-modelo desenvolvido possui uma estrutura que
facilita a especificação de artefatos e relacionamento entre artefatos que irão
ser rastreados. O fato dos meta-modelos de rastreabilidade presentes em
cada um dos projetos analisados não serem completamente disjuntos (i.e.,
eles possuem vários elementos comuns) permite a definição de um meta26
modelo de referência que pode ser, futuramente, estendido para gerar
modelos específicos.
Para ser compatível com as diversas ferramentas em desenvolvimento
nas outras etapas do projeto AMPLE, o meta-modelo gerado deve ser
facilmente
implementado
em
Ecore/EMF
[15].
Na
literatura,
muitas
representações genéricas de modelos de rastreabilidade foram encontradas
[6]. Por isso, foi decidido que o meta-modelo de referência seria gerado a
partir da adaptação de meta-modelos de rastreabilidade já existentes, em
especial o modelo gerado no projeto MODELWARE, que é implementado em
Ecore e tem foco na rastreabilidade do desenvolvimento orientado a
modelos. Mais detalhes sobre MODELWARE podem ser encontrados em
[14][16].
O meta-modelo de referência foi projetado em MOF 2.0 [17], pois MOF
tem a característica de ser facilmente portado para Ecore (exigência de
compatibilidade com ferramentas). As meta-classes que compõe o metamodelo de referência podem ser vistas na Figura 16.
Basicamente, o meta-modelo de referência de rastreabilidade define a
noção de TraceModel (―modelo rastreável"), que é o elemento central desse
modelo. O TraceModel armazena todas as informações de rastreabilidade em
conjuntos de mapeamento de conjuntos de artefatos origem em conjuntos
de artefatos destinos (ou seja, dois conjuntos de artefatos rastreáveis). Um
TraceableArtefact (―artefato rastreável‖) pode fazer o papel tanto de origem
como de destino do mapeamento (ex. um artefato de arquitetura pode ser o
destino de um mapeamento com origem em artefatos de requisitos, e, ao
mesmo tempo, pode ser a origem de um mapeamento cujo destino são
artefatos de implementação).
Além de armazenar artefatos rastreáveis, o TraceModel armazena
também
TraceableHyperLinks
(super-links
rastreáveis).
Geralmente, os
TraceableArtefact são apenas links para artefatos existentes em algum tipo
de arquivo ou modelo. Nesses casos, esses artefatos rastreáveis são
instâncias de TraceableArtefactsRef (referências para artefatos rastreáveis),
27
meta-classe que armazena uma URI com o endereço real do devido artefato
(ex. um documento de texto, um modelo UML, etc.) e um id que identifica
um local específico nesse artefato (ex. uma linha no documento de texto, o
nome ou o id de um modelo dentro de um diagrama UML).
Os TraceableHyperLinks representam, explicitamente, o rastreamento
entre o relacionamento de um conjunto de artefatos origem e um conjunto
de artefatos destino. Isso permite que o modelo de rastreabilidade seja
visualizado como um conjunto de hipergrafos diretos e bi-partite, com
suporte a anotações, da forma G = (V1 + V2,E), V1 é o conjunto de artefatos
origem, V2 é o conjunto de artefatos destino e E é o conjunto de arcos com
anotações que saem de V1 e chegam em V2. Para permitir um maior nível de
expressividade de rastreabilidade nos relacionamentos, os super-links podem
ser decompostos em conjuntos de TraceLinks (links rastreáveis), que podem
representar um relacionamento específico (ex.: dependência) entre um
artefato origem e um destino.
Figura 16: Meta-modelo de referência de rastreabilidade [6]
28
Mais detalhes sobre as meta-classes do meta-modelo de referência, a
descrição completa de cada elemento da Figura 16, e os detalhes de como
esse modelo foi implementado em Ecore podem ser encontrados em [6].
3.3. Modelo de Variabilidade Conceitual
Segundo Berg et. al. [12], o gerenciamento de variabilidade tem um
papel fundamental no sucesso da engenharia de LPS. Assim, existe a
necessidade de uma abordagem de gerenciamento de variabilidade que seja
universal, consistente, escalável, permita a rastreabilidade entre as variações
que ocorrem nos diversos tipos de artefatos presentes em uma LPS, e que
forneça um mecanismo que permita a visualização dessas variações.
Assim, [12] define um modelo conceitual de variabilidade que suporta
a rastreabilidade das variações ocorrentes nos diversos níveis de abstração
(fases de requisitos, análise, arquitetura, etc.), entre os vários tipos de
artefatos presentes em uma LPS (documento de requisitos, arquivo de código
fonte, etc.). A solução proposta utiliza um modelo de três dimensões para
possibilitar o rastreamento em uma LPS, são elas:
1. Nível de abstração: No projeto de uma aplicação existe uma grande
diferença entre os níveis de abstração nas diversas fases de
desenvolvimento (requisitos, análise, arquitetura, etc.). O mesmo
ocorre em uma LPS, e os diferentes níveis de abstração são
representados em uma dimensão do modelo proposto.
2. Espaço de Desenvolvimento: Os termos espaço de problema (problem
space) e espaço de solução (solution space) foram introduzidos por
Czarbecki e Eisenecker em [18]. Os dois espaços juntos representam
todas as fases do desenvolvimento de uma LPS (Figura 17).
29
3. Variabilidade: Essa é a grande novidade desse modelo, pois em [12] o
autor considera que o desenvolvimento de uma única aplicação
acontece nas dimensões ―Espaço de desenvolvimento x Nível de
Abstração‖. Entretanto, tratando-se de uma LPS, uma nova dimensão
deve ser considerada, a variabilidade, que captura, explicitamente, as
informações de variação entre os produtos da linha.
Figura 17: Os espaços de problema (problem space) e solução (sulution speace) [12]
Na Figura 18 temos um exemplo de como são distribuídas as três
dimensões no modelo proposto.
Figura 18: As três dimensões do desenvolvimento de LPS [12]
Apesar de o autor relatar que uma solução unificada de gerenciamento
de variabilidade deve ser consistente, escalável, prover o rastreamento entre
as variações e permitir uma visualização das variações, o modelo introduzido
30
por Berg garante apenas a rastreabilidade e a visualização das variações, pois
nenhum teste de consistência e escalabilidade foi efetuado.
O modelo conceitual de variabilidade proposto é dito unificado pelo
fato de todas as variações, independente do artefato onde elas ocorrem, são
mapeadas da mesma maneira na dimensão de variabilidade. As variações nos
diversos artefatos ocorrem nos pontos de variações (i.e. as variantes ligam-se
aos pontos de variações em cada artefato para que uma variação seja, de
fato, realizada), o modelo proposto estrutura e captura os diversos pontos de
variação relacionados a uma única variação (i.e. uma única variação no
modelo de features pode acarretar em vários pontos de variação nos diversos
artefatos) em um único ponto na dimensão de variabilidade.
É importante ressaltar que a solução proposta não representa mais um
nível de abstração no processo de desenvolvimento de uma LPS, mas apenas
especifica uma nova dimensão para levar em conta a variabilidade, que está
presente em todo o processo de desenvolvimento (Figura 19Figura 1). Na
Figura 20 temos um exemplo do modelo conceitual de variabilidade proposto
para uma LPS de sistemas de biblioteca.
Figura 19: Modelo conceitual de variabilidade [12]
31
Figura 20: Modelo conceitual de variabilidade para uma LPS de sistemas bibliotecários [12]
3.4. Comparativo
Como citado na introdução desse capítulo, todas as abordagens aqui
introduzidas possuem um modelo de variabilidade que atua ao longo de todo
o ciclo de vida da LPS (Figura 5). Um ponto importante que deve ser frisado é
o fato de haver uma diferença considerável, com respeito à maturidade, entre
as abordagens citadas nesse trabalho, dado que uma delas já foi bastante
trabalhada e estendida (o modelo de Pohl et. al., proposto em [5] e estendido
em [13] e [10]) e as outras duas foram somente propostas (abordagem de
Berg et. al.) ou ainda estão em desenvolvimento (o framework de
rastreabilidade do projeto AMPLE).
Nessa seção é feito um pequeno comparativo entre as três abordagens
introduzidas
nesse
trabalho,
com
foco
em
quesitos
básicos,
como
escalabilidade, suporte ferramental, e mapeamento e granularidade dos
relacionamentos entre os artefatos.
32
O modelo de variabilidade específico para uma aplicação (ou modelo
de variabilidade de aplicação, AVM, seção 3.1.2) é uma extensão do modelo
ortogonal de variabilidade. (OVM, 3.1.1). O AVM (como o OVM) possibilita o
rastreamento de uma variabilidade em ambos os sentidos, forward e
backward. Além disso, essa solução permite rastrear a variabilidade no nível
de partes de artefatos (ex.: linhas de texto em um documento de requisitos,
casos de uso em um diagrama de casos de uso). Quanto à escalabilidade, em
[5] é mencionado que o OVM é escalável. Entretanto, nada sobre
escalabilidade é dito em relação ao AVM em [10].
O suporte ferramental é o grande problema do modelo de Pohl, dado
que para o OVM existe apenas uma ferramenta para modelar as variações,
mas nenhuma ligação com os devidos artefatos é proporcionada. O mesmo
ocorre com o AVM.
Em [12], nenhum comentário é feito sobre a possibilidade de
rastreamento
(forward
ou
backward)
do
modelo
de
conceitual
de
variabilidade (seção 3.3). O mesmo ocorre quanto à escalabilidade, nada é
comentado no artigo em questão. O modelo de Berg et. al., assim como o de
Pohl, permite rastrear a variabilidade a nível de partes de artefatos. Mas, esse
modelo é apenas conceitual, nenhum uso real dele foi demonstrado em [12].
Assim, nenhum suporte ferramental está disponível essa solução.
O framework de rastreabilidade do projeto AMPLE (seção 3.2) foi
definido com base em um grande survey sobre as técnicas pré-existentes de
rastreabilidade em LPS. Deste modo, tal modelo visa solucionar todos os
problemas existentes na literatura. Pelo fato do AMPLE ainda estar em
andamento, tal framework ainda não está completo. Então, nesse trabalho
abordamos apenas o elemento principal do framework, o meta-modelo de
rastreabilidade.
O meta-modelo em questão permite a rastreabilidade de variações em
partes de artefatos em ambos os sentidos (backward e forward). Além disso,
esse meta-modelo é escalável, dado que ele serve apenas como um modelo
de dados que é manuseado por ferramentas externas (i.e. esse modelo de
33
dados é armazenado em algum banco de dados e manuseado por
ferramentas
específicas).
O
suporte
ferramental
do
framework
de
rastreabilidade ainda não está completo, pois o projeto AMPLE só terminará
em 2009. Entretanto, diversas ferramentas para manuseio do meta-modelo
estão em desenvolvimento.
Na Tabela 1 podemos ver um pequeno resumo do comparativo aqui
efetuado. Quando uma determinada nenhuma informação sobre um critério
de comparação não foi obtida na literatura, o símbolo ―—― foi colocado na
tabela.
Abordagem
Modelo de variabilidade
Tipo de
Nível de
Rastreabilidade
rastreabilidade
forward/backward
parte de artefatos
Escalável
Ferramentas
—
Não (apenas para gerar o
aplicação-específico
Modelo Conceitual de
modelo das variações)
—
parte de artefatos
—
Variabilidade
Framework de
Rastreabilidade do AMPLE
Não (modelo ainda conceitual,
nenhum uso real efetuado)
forward/backward
parte de artefatos
Sim
Sim (porém as ferramentas
estão em desenvolvimento)
Tabela 1: Comparativo entre as abordagens analisadas
É importante ressaltar que nesse trabalho foram analisadas apenas
abordagens que possuem um modelo de variabilidade ao longo de todo o
ciclo de vida da LPS. Assim, um possível trabalho futuro seria fazer uma
comparação incluindo abordagens com rastreabilidade a nível de artefatos
([19][20][21]) e abordagens com rastreabilidade em alta granularidade
([22][23][24]).
Um dos poucos trabalhos relacionados a esse presente na literatura é
um documento do projeto AMPLE [9]. Entretanto, nesse documento o Modelo
de Variabilidade de Aplicação (AVM) não é citado (apenas o Modelo Ortogonal
de Variabilidade – OVM – é abordado). Além disso, por se tratar de um
documento de uma fase inicial do AMPLE, o framework de rastreabilidade
proposto nesse mesmo projeto também não é tratado em [9].
34
4. Conclusão
Os clientes de software estão cada vez mais exigentes. Atualmente, esse
público não se contenta mais com sistemas únicos, que sejam iguais para
todos. Eles querem escolher as funções dos sistemas que estão comprando,
mas não querem que o tempo de entrega e o custo final do produto
aumentem. Essas exigências, aliadas à grande concorrência presente no
mercado de software, formam o cenário ideal para o uso de LPS, que permite
o desenvolvimento de aplicações customizadas em massa.
Um importante fator para o sucesso de uma LPS é a rastreabilidade das
variações, pois ela facilita o gerenciamento da LPS, a análise de impacto de
modificações, a evolução da linha e a validação da mesma.
Nesse
trabalho
foi
feito
um
estudo
de
três
abordagens
de
Rastreabilidade em Linha de Produtos de Software. Todas as abordagens aqui
introduzidas mapeiam a variabilidade em todos os tipos de artefatos
presentes em LPS (requisitos, arquitetura, código, teste, modelo de features,
etc.), além de proporem um modelo de variabilidade que atua durante todo o
ciclo de vida de uma LPS. Além disso, uma pequena comparação entre as
abordagens estudadas é
feita no final do capítulo 3, levando em
consideração quesitos básicos, como escalabilidade, suporte ferramental, e
mapeamento e granularidade dos relacionamentos entre os artefatos.
Como trabalhos futuros, uma analise de abordagens que possuam
rastreabilidade a nível de artefatos e abordagens com rastreabilidade em alta
granularidade pode ser feita e comparada com os resultados desse trabalho,
que abrange apenas abordagens com modelo de variabilidade no topo da
LPS.
35
Referências Bibliográficas
[1]
WEISS, David. LAI, Robert: Software Product-Line Engineering. A Family-
Based Software Development Process. 1. Ed. Boston: Addison-Wesley
Professional, 1999. 448p.
[2]
TEIXEIRA, Leopoldo M.: “Ligo: Uma linha de produto de software para
gerenciamento de igrejas cristãs”, Trabalho de Conclusão de Curso, Recife,
Brasil, 2007.
[3]
PARNAS, David L: On the design and development of program families.
IEEE Trans-actions on Software Engineering, 1976, 2:1–9.
[4]
CLEMENTS, Paul, NORTHROP, Linda: Software Product Lines: Practices
and Patterns. 3. ed. Boston: Addison-Wesley, 2002. 608 p.
[5]
POHL, Klaus, BÖCKLE, Günter, VAN DER LINDEN, Frank: Software
Product Line Engineering: Foundations, Principles, and Techniques. 1. ed.
New York: Springer, 2005. 468 p.
[6]
Projeto AMPLE: Definition of a traceability framework (including the
metamodel and the modelling of processes and artefacts to allow traceability
in
the
presence
of
uncertainty)
for
SPLs.
http://ample.holos.pt/gest_cnt_upload/editor/File/public/Deliverable%20D4.
1.pdf, AMPLE Project, Deliverable D4.1, 2008
[7]
KANG, Kyo. C., COHEN, Sholom. G., HESS, James. A., NOVAK, William E.,
and PETERSON, A. Spencer: Feature-Oriented Domain Analysis (FODA)
Feasibility Study. Technical Repot CMU/SEI-90-TR-21, Software Engineering
Institute, Carnegie Mellon University, Pittsburgh, PA, 1990.
[8]
GOTEL, Orlena C. Z., FINKELSTEIN, Anthony C. W.: An Analysis of the
Requirements Traceability Problem, in Proceedings of the International
36
Conference on Requirements Engineering. IEEE Computer Science Press,
1994.
[9]
Projeto AMPLE: State-of-the-art for traceability in software product line
development, with specific focus on aspect traceability in the software
development process. Evaluate the potential benefits of aspect-oriented
programming and model-driven engineering, AMPLE Project, Deliverable
M4.1, 2008
[10]
HALMANS,
Günter,
POHL,
Klaus,
SIKORA,
Ernst:
Documenting
Application-Specific Adaptations in Software Product Line Engineering. CAiSE
2008: 109-123
[11]
Projeto AMPLE: Aspect-Oriented, Model-Driven Product Line Engineering
http://ample.holos.pt/. Acesso em Julho de 2008
[12]
BERG, Kathrin., BISHOP, Judith., and MUTHIG, Dirk: Tracing software
product line variability: from problem to solution space. In Proceedings of the
2005 Annual Research Conference of the South African institute of Computer
Scientists and information Technologists on IT Research in Developing
Countries (White River, South Africa, September 20 - 22, 2005). ACM
International Conference Proceeding Series, vol. 150. South African Institute
for Computer Scientists and Information Technologists, 182-191.
[13]
Bühne, S., Lauenroth, K., Pohl, K.: Modelling Requirements Variability
across Product Lines. In: Atlee, J.M. (ed.) 13th IEEE Intl. Conference on
Requirements Engineering, pp.41–50. IEEE Computer Society, Los Alamitos
(2005)
[14]
Projeto ModelWare: Traceability metamodel and system solution.
http://www.modelwareist.org/index.php?option=com_remository&itemid=79
&func=fileinfo&id=134, ModelWare Project, Deliverable D1.6, 2006.
37
[15]
BUDINSKY, Frank, STEINBERG, Dave, MERKS, Ed, ELLERSICK, Ray, and
GROSE, Timothy J.: Eclipse Modeling Framework. Addison-Wesley, August
2003.
[16]
Projeto ModelWare: http://www.modelwareist.org/. Acesso em: Julho
de 2008.
[17]
OMG.:
Meta
object
facility,
mof
2.0.
http://www.omg.org/spec/mof/2.0/, OMG. Acesso em Julho de 2008.
[18]
CZARNECKI,
Krzysztof,
EISENECKER,
Ulrich
W.:
Generative
programming: methods, tools, and applications, ACM Press/Addison-Wesley
Publishing Co., New York, NY, 2000
[19]
JIRAPANTHONG, Waraporn e ZISMAN, AndreA: “Supporting product line
development through traceability”, In APSEC, pages 506--514. IEEE Computer
Society, 2005.
[20]
KNAUBER, Peter e SCHNEIDER, Johannes: “Tracing Variability from
Implementation to Test Using Aspect-Oriented Programming”. Avaya Labs
Technical Report: ALR-2004-031: International Workshop on Software Product
Line Testing (SPLiT 2004), Co-located with the 3rd International Software
Product Line Conference, SPLC 2004, August 2004, Boston, Massachusetts,
USA.
[21]
MERGEL, Martin, THIEL, Steffen, FERBER, Stefan: “Product Line Asset
Classification and Dependency Specification”. ESAPS project, Consortium-wide
deliverable, 2000.
[22]
ZISMAN, A., SPANOUDAKIS, G., PEREZ-MINANA, E, KRAUSE, P.: “Towards
a Traceability Approach for Product Families Requirements”. 3rd ICSE
Workshop on Software
Product
Lines:
Economics, Architectures, and
Implications. Orlando, USA, 2002.
38
[23]
MOHAN, Kannan e RAMESH, Balasubramaniam: “Managing Variability
with Traceability in Product and Service Families”. In Proceedings of the 35th
Hawaii International Conference on System Sciences, 2002.
[24]
RAMESH,
Balasubramaniam,
TIWANA,
Amrit,
MOHAN,
Kannan:
“Supporting Information Product and Service Families with Traceability”. In
Proceedings of PFE '01: Revised Papers from the 4th International Workshop
on Software Product-Family Engineering, pages 353--363, Springer-Verlag,
2002
[25]
CLEMENTS, Paul: “Software Product Line – A New Paradigm for the New
Century”; CrossTalk, pp. 20-23, February 1999.
39
Download

monografia - Centro de Informática da UFPE