A proposta discute uma abordagem formal para o gerenciamento de variabilidades em modelos UML usando a Object Constraint Language (OCL). O trabalho revisa conceitos como linhas de produto de software, diagrama de interação, package merge e OCL e propõe objetivos como estender a abordagem SMarty e aplicar OCL para validar modelos UML no gerenciamento de variabilidade.
Proposta de uma Abordagem Formal para o Gerenciamento de Variabilidades em Modelos UML com Object Constraint Language
1. PROPOSTA DE UMA ABORDAGEM FORMAL PARA O
GERENCIAMENTO DE VARIABILIDADES EM MODELOS UML
COM OBJECT CONSTRAINT LANGUAGE
Mestrando: Anderson da Silva Marcolino
Orientador: Prof. Dr. Edson A. Oliveira Junior
2. Agenda
• Motivação
• Linha de Produto de Software
• Abordagem SMarty
• OCL
• Objetivos do Trabalho
• Plano de Atividades
• Revisão Sistemática
• Dificuldades Encontradas
• Conclusões Parciais
3. Motivação
• Ausência de abordagens completas para o
gerenciamento de variabilidade com o uso de UML, com
nível de formalismo e consistência, propostas pela OCL;
• Facilitação no uso de LPS ao propor a utilização de
conceitos conhecidos amplamente como a UML.
4. Linha de Produto de Software
• Abordagem que objetiva promover a geração de
produtos específicos com base na reutilização de
uma infraestrutura central - núcleo de artefatos -
formada por uma arquitetura de software e seus
componentes.
5. Linha de Produto de Software
• Vantagens:
• Maior reutilização de artefatos;
• Maximização de lucros;
• Diminuição do time to market;
• Diminuição de riscos;
• Produtos com maior qualidade;
• Contribuição para o aprimoramento.
6. Linha de Produto de Software
Figura 1 – Custo e Esforço no Desenvolvimento
7. Linha de Produto de Software
Figura 2 – Redução do Time to Market
8. Linha de Produto de Software
• Atividades Essenciais:
1. Desenvolvimento do Núcleo de Artefatos;
2. Desenvolvimento do Produto;
3. Gerenciamento de Linha de Produto.
• O Elemento principal no gerenciamento de uma LP é o
gerenciamento de variabilidade.
11. Abordagem SMarty
Figura 2 – Rastreabilidade do SMartyProfile para o Meta-modelo da UML2
12. OCL
• OCL – Object Constraint Language(Linguagem
para Especificação de Restrições em Objetos).
• Linguagem formal usada para descrever
expressões em modelos da UML.
• Estas expressões especificam condições invariáveis, que
devem ser asseguradas para o sistema que esta sendo
modelado ou permitem efetuar consultas sobre os objetos
que estão descritos no modelo(com auxilio de ferramenta).
13. OCL
• Onde usar OCL?
• Como uma linguagem de consultas;
• Para especificar invariantes nas classes e em tipos no
modelo de classes;
• Para especificar tipos invariantes para estereótipos;
• Para descrever pré e pós condições nas operações e
métodos;
• Para especificar objetivos(conjuntos) para as mensagens e
ações;
• Para especificar restrições em operações; e
• Para especificar regras de derivações para os atributos,
para qualquer expressão em um modelo UML.
14. OCL
• Exemplo básico do uso de OCL:
context TypeName inv: 'this is an OCL expression
with stereotype <<invariant>> in the context of
TypeName' = 'another string‘
Fonte: OMG - Documents Associated With Object Constraint Language, Version 2.3.1
Disponível em <http://www.omg.org/spec/OCL/2.3.1/PDF>. Acessado em 19 de Set. 2012.
15. OCL e Verificação de Consistência
• Na revisão sistemática adiante apresentada, notamos o a
utilização do OLC para gerar a verificação de
consistência(consistency checking), nosso principal interesse
no uso da OCL.
• Segue assim, as propostas dos estudos recuperados, e
conclusões sobre as mesmas, que servirão de base para o
trabalho futuro.
16. OCL e Verificação de Consistência
• Streitferdt et al em seu trabalho Details of Formalized
Relations in Feature Models Using OCL propõem a utilização
de OCL para a verificação de consistência para o modelo de
características(feature model), estendendo-a, e apelidando-a
de A-OCL.
• Esta foi aplicada ao feature model definido na abordagem
denominada Feature Oriented Domain Analysis – FODA.
• Na proposta utilizou-se de parte da OCL para restringir e
identificar as variabilidades e escolhas das variantes para sua
solução, utilizando contextos matemáticos, contextos para
features com dependências(requires) e restrições(excludes).
17. OCL e Verificação de Consistência
Figura 3 – Exemplo uso de OCL para Feature Model
18. OCL e Verificação de Consistência
• Em sintese Streitferdt et al conclui que sua extensão permite
um fácil entendimento e visualização do modelo de
características, que, se demasiado grande pode dificultar o
entendimento, e levar a resolução de variabilidades errôneas.
19. OCL e Verificação de Consistência
• Marinho apresente em seu trabalho A Proposal for Consistency Checking
in Dynamic Software Product Line Models Using OCL, aplicado a linhas de
produto de software dinâmicas, a aplicação de OCL para verificar se as
configurações dos produtos preservam suas restrições especificas.
• Este propõe a criação, utilizando o perfil UML de um profile UML para a LP
e um para modelo de contexto, indicando que, se utilizar os dois conceitos
em um diagrama, as relações mantidas no modelo podem dificultar,
principalmente em LP de larga escala.
20. OCL e Verificação de Consistência
• Gomaa e Shin, em seu trabalho Multiple-view modelling and meta-
modelling of software product lines, apresenta regras de verificação de
consistência baseados no relacionamento entre meta-classes nos meta-
modelos. Tais regras, formalizadas utilizando OCL são utilizadas para
resolver inconsistências entre múltiplas visões em uma mesma fase ou em
diferentes fazes, e são utilizadas ainda para definir mapeamentos
permitidos entre múltiplas visões em diferentes fases.
• Gomaa e Shin deixam claro que sua proposta pode servir a qualquer LP
modelada em UML.
21. OCL e Verificação de Consistência
• Na seção, trabalhos relacionados apresenta diversas abordagens, e ainda,
como tais efetuam o processo de checagem de consistência – nota-se ai o
apelo a uma validação manual, propensa a erros. E também, apresenta os
diversos mecanismos para efetuar a consistência, bem como para que tipo
de abordagem: desenvolvimento de sistemas únicos, ou com LP.
• Apresenta-se então todos os meta modelos da UML, e suas diferentes
visões, e a partir dai define-se a validação de consistência entre as
múltiplas visões, e em seguida, o PLUSEE(Product Line UML Based
Software Engineering Environment) e como utiliza-lo para a aplicação do
formalismo em tais visões.
22. OCL e Verificação de Consistência
• Para a verificação de consistência utilizou-se ferramenta desenvolvida em
Java, para tal.
• Finalmente, em suas considerações, indica a necessidade de estender sua
abordagem aos demais modelos da UML, visto que apenas os inerentes a
LP foram utilizados, bem como aplica tal consistência a UML 2.0, uma vez
que a versão utilizada foi a UML 1.3, e ainda aplicar sua proposta em casos
de estudos maiores.
23. OCL e Verificação de Consistência
• Apresentou-se aqui os trabalhos com maior destaque em
OCL, mas ainda há outros pontos a serem explorados nos
demais.
• Notadamente, há a necessidade de aplicar-se a
consistência em LP, visto que, com o aumento
significativo das variabialidades, e seus pontos de
variação, resolvê-las de forma incorreta pode acarretar
prejuízo ou gerar produtos inadequados ao domínio para
o qual foi projetado.
24. OCL e Verificação de Consistência
• Não há trabalhos que apresentem a utilização de todos
os conceitos e notações que a OCL permite, e enriquecer
modelos UML para o gerenciamento de variabilidade, é
assim, garantir melhores produtos. Desenvolver uma
abordagem que atenda os mais diferentes nichos de
mercado se faz necessário, o que vem de encontro com o
trabalho aqui proposto.
25. Objetivos do Trabalho
• Realizar uma revisão sistemática sobre o uso de Diagramas de
Interação, package merge e OCL, relacionados ao
gerenciamento de variabilidade em linha de produto de
software;
• Com o estudo dos resultados obtidos na Revisão, estender a
abordagem SMarty para os diagramas da UML(sequência,
colaboração e mecanismo de package merge) ;
• Apresentar um exemplo de aplicação da abordagem proposta;
• Executar um experimento com a nova extensão do SMarty;
26. Objetivos do Trabalho
• Compará-la com outras abordagens existentes: CVL (Common
Variability Language) e PLUSEE(Product Line UML Based
Software Engineering Environment);
• Identificar as abordagens e o modo como OCL está sendo
aplicado aos modelos UML no gerenciamento de
variabilidade, através dos resultados da Revisão Sistemática, e
utilizá-la nos modelos presentes no SMarty;
• Comparar e avaliar os modelos UML do SMarty com OCL;
• Analisar os resultados obtidos.
27. Conceitos Relacionados
• Diagramas de Interação
• A interação é empregada para a modelagem do fluxo de controle de
uma operação, de uma classe, um componente, um caso de uso ou do
sistema como um todo.
• Existem dois diagramas que compões os diagramas de Interação:
Diagrama de Sequência e de Colaboração.
28. Conceitos Relacionados
• Diagrama de Sequência
• Diagrama de Sequência é uma das ferramentas UML usadas para
representar interações entre objetos de um cenário, realizadas através
de operações ou métodos (procedimentos ou funções);
• Construído a partir do Diagrama de Casos de Usos;
• O diagrama de sequência dá ênfase a ordenação temporal em que as
mensagens são trocadas entre os objetos de um sistema.
30. Conceitos Relacionados
• Diagrama de Colaboração
• Dá ênfase à ordenação estrutural em que as mensagens são trocadas
entre os objetos de um sistema.
31. Conceitos Relacionados
Figura 5 – Exemplo Diagrama de Colaboração
Fonte: OMG - UML Superstructure Specification, v2.0
Disponível em < http://www.omg.org/cgi-bin/doc?formal/05-07-04 >. Acessado em 20 de Set. 2012.
32. Conceitos Relacionados
• Package Merge
• Um package merge(mesclagem de pacotes) é um relacionamento direto
entre dois pacotes, que indica que o conteúdo dos dois estão sendo
combinados.
• Semelhante ao mecanismo de Generalização no sentido de que o
elemento de origem conceitualmente adiciona as características do
elemento de destino para as suas próprias características, resultando em
um elemento que combina as características de ambos.
• Este mecanismo deve ser usado quando os elementos definidos em
pacotes diferentes tem o mesmo nome e pretendem representar o
mesmo conceito.
33. Conceitos Relacionados
Figura 6 – Exemplo Package Merge
Fonte: OMG - UML Superstructure Specification, v2.0
Disponível em < http://www.omg.org/cgi-bin/doc?formal/05-07-04 >. Acessado em 20 de Set. 2012.
34. Plano de Atividades
Etapa Período Concluída
1-Cursar Disciplinas 02/2012 – 11/2012
2-Planejar e conduzir revisão sistemática 07/2012 – 09/2012
3-Realizar Exame de Proficiência 06/2012 Ok
4-Desenvolver um exemplo de aplicação e redigir 09/2012 – 12/2012
um artigo
5-Elaborar projeto de mestrado 01/2013 – 03/2013
6-Defender projeto de mestrado 04/2013
7-Desenvolver projeto de mestrado 04/2013 – 11/2013
8-Escrita de dissertação e artigos 11/2012 – 12/2013
9-Defender Dissertação 02/2014
36. Atividades Complementares
• Avaliação da JML(Java Modeling Language) para uso na dissertação:
• JML é uma linguagem de especificação de interface, de
comportamento formal para Java, que contêm as notações essenciais
usadas em DBC(Design by contract).
• Design by contract é um método de desenvolvimento de software. A
ideia principal por trás do DBC é que a classe e seus clientes possuem
um “contrato”. O cliente deve garantir certas condições antes de
chamar um método definido pela classe e em troca, a classe garante
certas propriedades que irá realizar após a chamada.
• Os contratos são definidos por código de programa, na linguagem de programação em si, e são
traduzidos em código executável pelo compilador. Deste modo, qualquer violação do contrato,
que ocorra enquanto o programa estiver em execução, pode ser detectada de imediato.
Fonte: The Java Modeling Language (JML)
Disponível em <http://www.eecs.ucf.edu/~leavens/JML/documentation.shtml> . Acessado em 19 de Set. 2012.
37. Revisão Sistemática
• BIOLCHINI et al.(2005) e KITCHENHAM et al. (2004)
• UMA REVISÃO SISTEMÁTICA SOBRE A UTILIZAÇÃO
DE DIAGRAMAS DE INTERAÇÃO, PACKAGE MERGE E
OBJECT CONSTRAINT LANGUAGE EM
GERENCIAMENTO DE VARIABILIDADE
38. Revisão Sistemática
• Objetivos da Pesquisa:
• Identificar as abordagens mais estudadas/utilizadas para estender o
gerenciamento de variabilidade aos diagramas de interação da
UML(Sequência e Colaboração) ;
• Identificar a utilização do conceito de package merge nos meta-
modelos da UML e para modelos relacionados à Linha de Produto
de Software, no que tange gerenciamento de variabilidade;
• Identificar o uso da Object Constraint Language para validação de
meta-modelos em Linha de Produto de Software, mais
precisamente em gerenciamento de variabilidade, formalizando-os;
39. Revisão Sistemática
• Parâmetros de busca:
• Fontes: Base de dados eletrônicas indexadas ACM, Compendex, IEEE,
Science Direct e Scopus, máquinas de busca eletrônica(Scirus - Elsevier e
Google Scholar), conferências, workshops e consultas a especialistas.
• Idioma dos Trabalhos: Inglês,.
• Tipos de Documentos: artigos de conferências, anais de congressos,
artigos de periódicos, livros/capítulos de livros, capítulos de teses e
dissertação e relatórios técnicos, preferencialmente em formato PDF, ODT
ou DOC/DOCX.
• Ano de Publicação: estudos que foram publicados a partir do ano de
2002;
40. Revisão Sistemática
• Palavras-chave: “software”, “software product line”, “sequence diagram”,
“collaboration diagram”, “package merge” e “object constraint language”.
• String de busca:
“software”
AND
(“product line” OR “product-line" OR "product-family" OR "product family" OR “family
of products" OR “variability”)
AND
(“sequence diagram” OR “collaboration diagram” “interaction diagram” OR OCL OR
“object constraint language” OR “consistency checking” OR “package merge” OR
“package merging”)
41. Revisão Sistemática
• Processo de Seleção Preliminar
• Consulta, através da string pré-estabelecida, nas máquinas de busca e bases
indexadas;
• Leitura do título e resumo do trabalhos recuperados; e
• Utilização dos critérios de inclusão e exclusão, para seleção dos mais
relevantes.
• Processo de Seleção Final
• Leitura completa dos estudos pré-selecionados;
• Coleta de dados dos trabalhos selecionados, bem como a elaboração de um
resumo contemplando os pontos de destaque dos mesmos.
44. • Trabalhos Relevantes:
ID Título Autor(es) Ano Fonte Busca Qualis / Conferência, Periódico
Índice-H ou Livro
ICSE ACM/IEEE International
1 A Proposal for Consistency Checking in Dynamic Software Marinho 2010 ACM A1 Conference on Software
Product Line Models Using OCL Engineering
ECBS - IEEE International
2 Details of Formalized Relations in Feature Models Using OCL Streitferdt et al 2003 IEEE B1 Conference and Workshop on the
Engineering of Computer-Based
Systems
ICECCS - International Conference
3 Multiple-View Meta-Modeling of Software Product Lines Gomaa e Shin 2002 IEEE B1 on Engineering of Complex
Computer Systems
GPCE - International conference on
4 Seamless Development of Software Product Lines Feature Laguna et al 2007 ACM B1 Generative programming and
Models to UML Traceability component engineering
ICEBE IEEE International
5 A Software Product Line Approach for E-Commerce Systems Laguna e Hernández 2010 Compendex B2 Conference on e-Business
Engineering
ICECCS - International Conference
3 Multiple-view modelling and meta-modelling Gomaa 2002 Compendex B2 on Engineering of Complex
of software product lines Computer Systems
ICIT - IEEE International
9 Software Product Line Testing: a Feature Oriented Approach Lamancha et al 2012 Scopus B2 Conference on Industrial
Technology
REFSQ-International working
6 A Flexible Requirements Analysis Approach for Software Guelfi e Perrouin 2007 Compendex B3 conference on Requirements
Product Lines engineering: foundation for
software quality
Brazilian Symposium on Software
5 A Verification Mechanism of Feature Models for Marinho et al 2011 Compendex C Components, Architectures and
Mobile and Context-Aware Software Product Lines Reuse
Software Variability Management
11 Product Line Derivation with UML Ziadi et al 2003 Google C Workshop - European Science
Scholar Foundation - ESB
Journal of Universal Computer
10 UML Support for Designing Software Product Lines: Laguna e Marqués 2010 Scopus - Science, vol. 1 no. 1 (201 J.UCS
6, 7 0)
The Package Merge Mechanism
Livro - Software Product Lines
12 Software Product Line Engineering with the UML: Ziadi e Jézéquel 2006 Google - Springer Verlag (Ed.) (2006)
Deriving Products Scholar
45. Revisão Sistemática
• Extração de informações dos trabalhos relevantes:
• Título, Autores, Origem, Ano da Publicação, Publicação, Classificação
no Qualis, Fonte, Quantidade de Páginas, Palavras-chave e Visão geral
do trabalho.
46. Dificuldades Encontradas
• Muitos estudos, porém poucos relacionados
aos temas buscados – e ainda, mesmo alguns
dos selecionados são mesclados com outros
conceitos irrelevantes para a proposta.
47. Conclusões Parciais
• Raros resultados da aplicação dos diagramas de
Colaboração da UML, bem como o mecanismo de
Package Merge;
• Poucos artigos abordam a aplicação de formalismo
com OCL aos modelos da UML no gerenciamento de
variabilidade;
48. Conclusões Parciais
• Desta forma há a necessidade de aprofundamento e
aplicação destes modelos e mecanismos, bem como
a aplicação do formalismo proposto pela OCL nos
modelos UML utilizados pela abordagem SMarty, e
finalmente a sua comparação com outras propostas
existentes.
49. PROPOSTA DE UMA ABORDAGEM FORMAL PARA O GERENCIAMENTO
DE VARIABILIDADES EM MODELOS UML COM OBJECT CONSTRAINT
LANGUAGE
Anderson da Silva Marcolino – andersonmarcolino@gmail.com
Perguntas?