Este documento descreve o SMartyParser, um parser XMI para modelos UML de linhas de produto de software baseados na abordagem SMarty. O SMartyParser usa arquivos de definição de metamodelo e transformação XMI para extrair dados sobre variabilidade de modelos UML exportados no formato XMI. O parser foi implementado estendendo o framework Open Core para dar suporte à análise de variabilidade em linhas de produto de software modeladas com UML.
Revolução russa e mexicana. Slides explicativos e atividades
SMartyParser: um parser XMI para modelos UML de variabilidade em LPs
1. SMartyParser
Um Parser XMI para Modelos UML de Variabilidade
Leandro A. Lanceloti
Prof. Dr. Edson A. Oliveira Junior
2. Tópicos
• Introdução
• Linha de Produto de Software e Variabilidade
• A abordagem SMarty
• XML Metadata Interchange (XMI)
• O SMartyParser
• Trabalhos relacionados, conclusão e trabalhos
futuros
3. Introdução
• Linha de produto de software (LP)
• Ajuda a diminuir o custo do desenvolvimento
• Ajuda a diminuir o time to market
• Gerenciar variabilidade é um ponto importante
• A abordagem SMarty ajuda neste gerenciamento
• SMarty é baseada em UML e pode ser exportada via
XMI
• O SMartyParser é um parser XMI para modelos UML
baseados em SMarty
4. LP e Variabilidade
• LP
• Conjunto de sistemas que compartilham funcionalidades
• Também conhecido como família de produtos
• Desenvolvidos a partir de uma infraestrutura comum, o
núcleo de artefatos
• Variabilidade
• É como os membros de uma família se distinguem
• Pode estar ligada à: documentação, arquitetura, códigos
fonte, compilado, executável e etc
• Permite que as decisões sejam adiadas, aumentando o
número de variabilidades
• O Gerenciamento está ligado a todas as etapas do processo:
identificação, delimitação e implementação
5. Abordagem SMarty
• SMartyProfile
• Conjunto de estereótipos / meta-atributos
• Baseado em UML
• Casos de uso, classes, componentes e atividades
• SMartyProcess
• Identificação, delimitação, representação, rastreame
nto e análise de configurações de produtos de uma
LP.
• Conjunto de diretrizes
7. Exemplo de SMarty
cd: AGM - Core As s ets
c oreAs s ets
<< c om ponent v ariabl e
, >>
Gam e
<<v ariabi l ity >>
nam e = "g ame s pri te " <<v ariabi l ity >>
m inSel ec tion = 1 nam e = "s pri te pair"
m ax Selec ti on = 2 m inSel ec tion = 0
<< m andatory >
> bi ndingTi m e = DESIGN_TIM E m ax Selec ti on = 1
Point al lows Add ingVar = true bi ndingTi m e = DESIGN_TIM E
(from c oreAs s ets
) v ariants = {c oreAs s e ts .Mov ab leSprite,
<<v ariabi l ity >> al lows Add ingVar = fa ls e
c oreAs s ets .Stati onary Spri te} v ariants = {c oreAs s e ts .Spri tePair}
nam e = "m ov abl e s p ri te" -p
m inSel ec tion = 1
m ax Selec ti on = 2
<< m andatory >
> << m andatory >
> << v ariationPoint andatory
,m >> << optional
>>
bi ndingTi m e = DESIGN_TIM E - s ec ond
al lows Add ingVar = true Siz e Rectangle Gam eSprite SpritePair
v ariants = {c oreAs s e ts .Paddle , (from c oreAs s ets
) -s (from c oreAs s ets
) #r (from c oreAs s ets
) (from c oreAs s ets
)
c oreAs s ets .Puc k } - firs t
<< m andatory
>> << al ternati v e_OR v ariationPoint
, >>
<<v ariabi l ity >> << optional
>> << al ternati v e_OR
>>
Velocity M ovableSprite nam e = "wall " Wall Stationary Sprite
(from c oreAs s ets # v
) (from c oreAs s ets
) m inSel ec tion = 0
(from c oreAs s ets
) (from c oreAs s ets
)
m ax Selec ti on = 1
bi ndingTi m e = DESIGN_TIM E
al lows Add ingVar = fa ls e
v ariants = {c oreAs s e ts .Wal l}
<< al ternati v e_OR
>> << al ternati v e_OR
>> # app
Puck Paddle << m andatory
>> << m andatory
>> << m andatory
>>
(from c oreAs s ets
) (from c oreAs s ets
) Gam eMen u Board M enu
(from c oreAs s ets
) # board ::Wall # board
(from c oreAs s ets ) (from c oreAs s ets
)
8. XML Metadata Interchange (XMI)
• Baseado em XML (Extensible Markup Language)
• Criado pela OMG (Object Management Group)
• Facilita o intercâmbio de dados entre diferentes
ferramentas
• Formato padrão entre a maior parte das
ferramentas de modelagem UML (Unified
Modeling Language)
• Compatível com a abordagem SMarty
10. O SMartyParser para
Modelos UML de LP
• Baseado no framework SDMetrics Open Core
• Metamodel Definition File
• Arquivo contendo as definições dos elementos UML
• XMI Transformation File
• Arquivo contendo instruções de como extrair os
dados dos elementos UML
• Adaptado para abordagem SMarty
11. O SMartyParser para Modelos
UML de LP: diagrama de
classes
cd: S MartyP arser - Diagrama de Classes
<< interface >>
IP r oductLineUMLModelP ar ser << interface >>
IP r oductLineV ar iabilityP ar ser
MetaModelElem ent MetaModel
* 1
*
1 1
* *
ModelE lem ent Model X MIReader P r oductLineModelPar ser
* 1 1
1 1
*
X MITr igger
*
1
X MITr ansfor m ation X MITr ansfor m ations
*
12. O SMartyParser para Modelos
UML de LP: exemplo de uso
1)
ProductLineModelParser smartyParser = new ProductLineModelParser
("AGM.xmi","metamodel.xml","xmiTrans1_2.xml");
2)
List<ModelElement> vars = smartyParser.getAllVariabilities();
3)
for (ModelElement element : vars) {
System.out.println(element.getName());
}
4)
sprite pair
movable sprite
wall
game sprite
...
14. Trabalhos relacionados
• O EMF (Eclipse Modeling Framework)
(Eclipse.org)
• O Netbeans XMI Writer (Netbeans.org)
• UML2Django (Petry, 2008)
15. Conclusão
• Este trabalho apresentou um parser XMI para
modelos UML de LP com o objetivo de facilitar a
análise de variabilidade segundo a abordagem
SMarty.
• Vários trabalhos foram encontrados em projetos
de código fonte aberto e na literatura, porém
nenhum trata efetivamente de LP.
• O framework Open Core foi estendido para linha
de produto e variabilidade.
16. Trabalhos futuros
• Projeto e implementação de um ambiente
experimental gráfico de avaliação de LP com base na
abordagem SMarty
• Análise de métricas de modelo UML a fim de
identificar problemas na modelagem e na abordagem
de LP
• Proposta e validação experimental de métricas para
arquitetura de LP
• Realização de experimentos e análises de trade-off
para priorizar atributos de qualidade de LP