Post on 25-Jun-2015
description
PROPOSTA DE UMA ABORDAGEM FORMAL PARA O GERENCIAMENTO DE VARIABILIDADES EM MODELOS UML COM OBJECT CONSTRAINT LANGUAGE
Mestrando: Anderson da Silva MarcolinoOrientador: Prof. Dr. Edson A. Oliveira Junior
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
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.
Linha de Produto de Software
• Abordagem que objetiva promover a geração de
produtos específicos com base na reutilização de
uma infraestrutura central - núcleo de artefatos -
formada por uma arquitetura de software e seus
componentes.
Linha de Produto de Software
• 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.
Linha de Produto de Software
Figura 1 – Custo e Esforço no Desenvolvimento
Linha de Produto de Software
Figura 2 – Redução do Time to Market
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.
Gerenciamento de Variabilidade
Abordagem SMarty
Abordagem SMarty
Figura 2 – Rastreabilidade do SMartyProfile para o Meta-modelo da UML2
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).
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.
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.
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.
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).
OCL e Verificação de Consistência
Figura 3 – Exemplo uso de OCL para Feature Model
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.
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.
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.
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.
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.
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.
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.
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;
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.
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.
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.
Conceitos Relacionados
Figura 4 – Exemplo Diagrama de Sequência
Conceitos Relacionados
• Diagrama de Colaboração
• Dá ênfase à ordenação estrutural em que as mensagens são trocadas
entre os objetos de um sistema.
Conceitos Relacionados
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.
Figura 5 – Exemplo Diagrama de Colaboração
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.
Conceitos Relacionados
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.
Figura 6 – Exemplo Package Merge
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 um artigo
09/2012 – 12/2012
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
Atividades Complementares
• Desenvolvimento do site para abordagem SMarty e trabalhos
relacionados:
Figura 7 - Página Inicial site da Abordagem SMarty
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.
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
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;
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;
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”)
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.
Revisão Sistemática
IEEE; 32; 3.63%
ACM; 355; 40.25%
Compendex; 30; 3.40%Especialistas; 7; 0.79%
Google Scholar; 100;
11.34%
ScienceDirect; 279;
31.63%
Scirus; 26; 2.95%Scopus; 53; 6.01%
Estudos Obtidos por Fontes (Total: 882 Estudos)
IEEE ACM Compendex Especialistas Google Scholar ScienceDirect Scirus Scopus
Revisão Sistemática
• Números Obtidos:• 882 estudos recuperados(100%);
• 33 estudos selecionados para leitura(3,74%);
• 9 estudos selecionados, porém repetidos.
• 12 trabalhos relevantes(1,36%).
• Trabalhos Relevantes:ID Título Autor(es) Ano Fonte Busca Qualis /
Índice-H
Conferência, Periódico
ou Livro1 A Proposal for Consistency Checking in Dynamic Software
Product Line Models Using OCL
Marinho 2010 ACM A1 ICSE ACM/IEEE International Conference on Software Engineering
2 Details of Formalized Relations in Feature Models Using OCL Streitferdt et al 2003 IEEE B1 ECBS - IEEE International Conference and Workshop on the Engineering of Computer-Based Systems
3 Multiple-View Meta-Modeling of Software Product Lines Gomaa e Shin 2002 IEEE B1 ICECCS - International Conference on Engineering of Complex Computer Systems
4 Seamless Development of Software Product Lines Feature
Models to UML Traceability
Laguna et al 2007 ACM B1 GPCE - International conference on Generative programming and component engineering
5 A Software Product Line Approach for E-Commerce Systems Laguna e Hernández 2010 Compendex B2 ICEBE IEEE International Conference on e-Business Engineering
3 Multiple-view modelling and meta-modelling
of software product lines
Gomaa 2002 Compendex B2 ICECCS - International Conference on Engineering of Complex Computer Systems
9 Software Product Line Testing: a Feature Oriented Approach Lamancha et al 2012 Scopus B2 ICIT - IEEE International Conference on Industrial Technology
6 A Flexible Requirements Analysis Approach for Software
Product Lines
Guelfi e Perrouin 2007 Compendex B3 REFSQ-International working conference on Requirements engineering: foundation for software quality
5 A Verification Mechanism of Feature Models for
Mobile and Context-Aware Software Product Lines
Marinho et al 2011 Compendex C Brazilian Symposium on Software Components, Architectures and Reuse
11 Product Line Derivation with UML Ziadi et al 2003 Google
Scholar
C Software Variability Management Workshop - European Science Foundation - ESB
10 UML Support for Designing Software Product Lines:
The Package Merge Mechanism
Laguna e Marqués 2010 Scopus - Journal of Universal Computer Science, vol. 16, no. 17 (2010) J.UCS
12 Software Product Line Engineering with the UML:
Deriving Products
Ziadi e Jézéquel 2006 Google
Scholar
- Livro - Software Product Lines Springer Verlag (Ed.) (2006)
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.
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.
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;
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.
Perguntas?
PROPOSTA DE UMA ABORDAGEM FORMAL PARA O GERENCIAMENTO DE VARIABILIDADES EM MODELOS UML COM OBJECT CONSTRAINT
LANGUAGE
Anderson da Silva Marcolino – andersonmarcolino@gmail.com