SBES 2007   XXI Simpósio Brasileiro de Engenharia de SoftwareEnhancing the Understandability of OCL Specifications        ...
Resumo OCL(Object Constraint Language)    Linguagem padronizada pelo OMG para a especificação precisa de restrições     ...
Introdução         Introdução• Características da linguagem OCL:    Linguagem declarativa, precisa e tipada;    Construç...
Code Smells e RefactoringCode Smell                                   Refactoring   São certas estruturas presentes no   ...
OCLTodas instâncias do tipo Account não pode   A operação select resulta em subgrupo deter saldo negativo.                ...
OCL Smells e Refactorings                                                      UML 1.3 (OMG 1999)A Figura 4 é utilizado co...
OCL Smells                                                         UML 1.3 (OMG 1999)À primeira vista, a complexidade é de...
OCL Smell: Cadeias de Implicações•   O OCL Smell Cadeia de Implicações corresponde a expressões que    possuam a estrutura...
ExemploToda transição em uma máquina de transição de estados (statemachine) quetiver como origem (source) um pseudo-estado...
Refactoring – Substituir Cadeia de Implicações por            uma Única Implicação•   a => (b => c) ≡ (a and b) => c;•    ...
Exemplo refatoradoAs seguintes refatorações foram efetuadas: Substituir as cadeias de implicações por umúnica implicação q...
OCL Smell: Expressão Prolixa•   Este OCL smell ocorre em expressões OCL definidas de forma mais    extensa que o necessári...
Exemplos           13
OCL Smell: Cadeias ForAll•   Cadeias ForAll é um caso especial de expressão prolixa que corresponde    a expressões conten...
OCL Smell: Downcasting•   Downcasting é uma construção bastante conhecida na comunidade de    programação orientada a obje...
OCL Smell: Expressões Condicionais Relacionadas a Tipos•   Este OCL Smell corresponde a expressões if-then-else-endif que ...
Exemplo          [1] os pinos de entrada de          uma ação de ligação          (LinkAction)            são os mesmos pi...
OCL Smell: Downcasting•   Downcasting é uma construção bastante conhecida na comunidade de    programação orientada a obje...
Refatoração: Introdução de polimorfismo•   Ao introduzir polimorfismo substitui-se expressões complexas if-then-else-endif...
Um estudo experimental para avaliação de OCL Refactorings• Definição do Estudo:•   Analisar o efeito da aplicação de refat...
Contexto e MaterialQuestão tipo S: questões de interpretação de restrições com a presença de OCL smells;Questão tipo R: qu...
Formulação das hipóteses•   A variável independente deste estudo é o tipo de expressões OCL presente    em cada questão re...
Instrumentação1.   Tutorial: Cada sujeito foi dada duas semanas para estudar um tutorial de OCL;2.   Avaliação em OCL: ind...
Estudo Experimental: Resultados e ameaças à validade•   Análise dos instrumentos:     Para esta avaliação, utilizamos o t...
Scores  Um teste de análise de variância (α = 0,05) foi aplicada para a contagem de cada tipo dequestão (μSS e μRS). Os re...
Tempo de resposta Um teste de análise de variância (α nível de significância = 0,05) foi aplicada para o tempo pararespond...
Avaliação subjetiva • Mais de 60% de perguntas do tipo R foram classificadas como fácil ou   muito fácil, e apenas 10% das...
Conclusões•   Apesar da reduzida população deste estudo (22 participantes), os resultados dos testes    estatísticos confi...
Referências• Correa,A., Werner,C.,Barros,M.(2007),”Enhancing the  Understandability the OCL Specifications”.In: XXI  Simpó...
?¿?¿Perguntas?¿?¿             ?¿?¿Dúvidas?¿?¿             Obrigada pela sua atenção!!!                                    ...
Próximos SlideShares
Carregando em…5
×

OCL

769 visualizações

Publicada em

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
769
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
14
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

OCL

  1. 1. SBES 2007 XXI Simpósio Brasileiro de Engenharia de SoftwareEnhancing the Understandability of OCL Specifications Alexandre Correa, Cláudia Werner COPPE/UFRJ – Universidade Federal do Rio de Janeiro(UFRJ) Márcio Barros UNIRIOTEC – Universidade Federal do Estado do Rio de Janeiro(UNIRIO) Seminário de Metodologia de Desenvolvimento de Software Aluna: Gislene dos Santos Carvalho 1
  2. 2. Resumo OCL(Object Constraint Language)  Linguagem padronizada pelo OMG para a especificação precisa de restrições associadas a modelos compatíveis com o MOF(Meta Object Facility);  Especificação precisa de elementos aonde as notações gráficas da UML não são capazes de representar, como, por exemplo, restrições, expressões associadas a atributos derivados, expressões de consulta e definições contratuais de operações. Problemas  OCL Smells. Objetivos deste seminário Soluções  OCL Refactorings;  Estudo experimental. 2
  3. 3. Introdução Introdução• Características da linguagem OCL:  Linguagem declarativa, precisa e tipada;  Construções semelhantes as encontradas em POO;  MDA/padrão OMG QVT - ajuda a remover os potenciais problemas de ambiguidade que pode estar presente nas especificações da linguagem natural, como aconteceu com o primeiro padrão UML primeiro.• Problemas e Soluções:  Code Smells: OCL Smells -> Problema;  Refactorings: OCL Refactorings -> Solução;  Estudo Experimental -> avaliação da usabilidade e potencial da solução. 3
  4. 4. Code Smells e RefactoringCode Smell Refactoring São certas estruturas presentes no  Corresponde a alterações feitas para a código de um software que sugerem a estrutura interna de um software, necessidade de uma reestruturação preservando a sua semântica (FOWLER, 1999); comportamental, que visa melhorar os fatores de qualidade como modularidade Duplicação de código, implementação de compreensibilidade, e extensibilidade métodos grandes e complexos, [Homens e Tourwe 2004]. encadeamento de mensagens são alguns exemplos;  Outras melhorias: reusabilidade, manutenibilidade, eficiência. Afeta negativamente a legibilidade e manutenibilidade do código.  Facilita a evolução do software. 4
  5. 5. OCLTodas instâncias do tipo Account não pode A operação select resulta em subgrupo deter saldo negativo. contas de um determinado cliente(self) tendo a operação isGold é a avaliada como verdadeira. A operação size indica o tamanho do subconjunto resultante. OCL é uma linguagem tipada. Toda expressão tem um tipo que define o as operações que podem ser aplicadas para o seu resultado. 5
  6. 6. OCL Smells e Refactorings UML 1.3 (OMG 1999)A Figura 4 é utilizado como um exemplo, que até mesmo regras simplespode resultar em expressões OCL difíceis de ler e compreender.Essa restrição, no entanto, poderia ter sido definida com uma expressãotão simples como: self.allConnections-> isUnique(name).Essa expressão da figura é conhecida como Expressão Prolixa. 6
  7. 7. OCL Smells UML 1.3 (OMG 1999)À primeira vista, a complexidade é devido a várias chamadas para oclIsKindOf eoperações oclAsType [Vaziri e Jackson 2002].Uma análise mais aprofundada revela, porém, que a falta de um supertipo paraClassifierRole e tipos AssociationRole resultou em expressões complexas emuito semelhantes separadas somente pelo operador and. 7
  8. 8. OCL Smell: Cadeias de Implicações• O OCL Smell Cadeia de Implicações corresponde a expressões que possuam a estrutura T implies E. A gramática abaixo determina que a configuração mínima para este OCL Smell corresponde a uma expressão da forma A implies B implies C, ou seja, uma expressão contendo pelo menos duas implicações em sequência. ImpliesChainSmell ::= T implies E T ::= OCLExpression //expressão OCL do tipo Boolean E ::= Left_par T „implies‟ (T | E) Right_par Left_par ::= „(„ Right_par ::= „)‟ 8
  9. 9. ExemploToda transição em uma máquina de transição de estados (statemachine) quetiver como origem (source) um pseudo-estado do tipo fork, deve ter comodestino (target) um elemento do tipo State. 9
  10. 10. Refactoring – Substituir Cadeia de Implicações por uma Única Implicação• a => (b => c) ≡ (a and b) => c;• Se a expressão resultante é um conjunto complexo de forma a b1 e b2 e b3 ... e bn, deve-se refatorar esta expressão para extrair a definição de propriedades auxiliares ou operações de partes desse conjunto. A definição de propriedades auxiliares ou operações de uma expressão OCL corresponde as refatorações seguintes:  Adicionar definição de operação e substituir expressão pela chamada da operação:  promover o encapsulamento e reuso através de uma especificação.  evitar a duplicação de expressões que são utilizadas em várias partes de uma especificação;  Adicionar definição de propriedade e substituir expressão por chamada de propriedade:  Criação e utilização de operações auxiliares em OCL. 10
  11. 11. Exemplo refatoradoAs seguintes refatorações foram efetuadas: Substituir as cadeias de implicações por umúnica implicação que substituiu duas implicações, por uma conjunção; Adicionar definiçãode propriedade, que acrescentou a propriedade sourceIsFork para a classe de Transição;e Substituir expressão por chamada de propriedade que substituiu o antecedente darestrição pela expressão self.sourceIsFork.. 11
  12. 12. OCL Smell: Expressão Prolixa• Este OCL smell ocorre em expressões OCL definidas de forma mais extensa que o necessário.• Duas formas usuais de expressões prolixas são as seguintes:  Expressões que contém mais chamadas de operação do que o necessário: estas expressões podem ser abreviados pela simplificação das chamadas de operação, que consiste em reescrever uma expressão OCL de formar a utilizar menos chamadas de operação.  Invariantes definidas de maneira errada: uma invariante pode ser descrita de muitas maneiras, dependendo da sua classe de contexto, anexando uma invariante para o contexto errado geralmente torna mais difícil de especificar e manter. Uma refatoração é a mudança de contexto, ou seja, reescrever uma invariante utilizando um contexto diferente. 12
  13. 13. Exemplos 13
  14. 14. OCL Smell: Cadeias ForAll• Cadeias ForAll é um caso especial de expressão prolixa que corresponde a expressões contendo a seguinte estrutura: X -> forAll (a1 | a1.B-> forAll (b1 | b1.C-> forAll (c1 | P (c1)))), Suponha-se que X é um grupo de elementos de tipo A, e existe umaassociação entre as classes A e B, e entre as classes B e C.• Refatoração: aplicar um sistema de navegação, de A à C, ou seja, XBC -> forAll (c1 | P1 (c1)). Tal modificação correspondente à aplicação da substituição de cadeia de quantificadores universais por navegações. 14
  15. 15. OCL Smell: Downcasting• Downcasting é uma construção bastante conhecida na comunidade de programação orientada a objetos.• Em OCL, esta construção se manifesta através da utilização de expressõescontendo a estrutura x.oclAsType(Y).z, normalmente precedidas por umaexpressão com o formato x.oclIsKindOf(Y). O objetivo desse tipo deconstrução é tornar possível a referência a uma propriedade z definida em umtipo Y, dada uma expressão x de um tipo X do qual Y é uma especialização.• Exemplo: 15
  16. 16. OCL Smell: Expressões Condicionais Relacionadas a Tipos• Este OCL Smell corresponde a expressões if-then-else-endif que possuam, na parte correspondente à condição da expressão, chamadas a operações que verificam se um elemento é de um determinado tipo.• A forma geral dessas expressões é dada por: if x.oclIsKindOf(A) then <exp1> else if x.oclIsKindOf(B) then <exp2> else … endif, ou seja, a expressão terá o valor determinado por <exp1>, se a classe de x for A ou alguma especialização de A, <exp2> se a classe de x for B ou alguma especialização de B, e assim por diante para outras eventuais ocorrências desse tipo de condição.• Resultam em especificações mais complexas e menos legíveis, além de indicar a possível ausência de uma estrutura de generalização no modelo.• Refatoração: introdução de polimorfismo. 16
  17. 17. Exemplo [1] os pinos de entrada de uma ação de ligação (LinkAction) são os mesmos pinos associados aos dados de cada extremidade de uma ligação mais os pinos de inserção (insertAt). 17
  18. 18. OCL Smell: Downcasting• Downcasting é uma construção bastante conhecida na comunidade de programação orientada a objetos.• Em OCL, esta construção se manifesta através da utilização de expressõescontendo a estrutura x.oclAsType(Y).z, normalmente precedidas por umaexpressão com o formato x.oclIsKindOf(Y). O objetivo desse tipo deconstrução é tornar possível a referência a uma propriedade z definida em umtipo Y, dada uma expressão x de um tipo X do qual Y é uma especialização.• Exemplo: 18
  19. 19. Refatoração: Introdução de polimorfismo• Ao introduzir polimorfismo substitui-se expressões complexas if-then-else-endif que fazem uso considerável de operações, tais como oclIsKindOf, oclIsTypeOf, oclAsType, por uma combinação de operações genéricas e específicas definidas em uma hierarquia de classes. Outras refatorações utilizadas ao modelo subjacente: adicionar classe, adicionar generalização, Pull Up, Push Down, adicionar operações entre outros. Figura 10 19
  20. 20. Um estudo experimental para avaliação de OCL Refactorings• Definição do Estudo:• Analisar o efeito da aplicação de refatorações em restrições especificadas em OCL que contenham OCL smells;• Com o propósito de caracterizar a viabilidade do uso e da continuidade do desenvolvimento desses conceitos;• Referente aos benefícios obtidos em relação ao entendimento de restrições especificadas em OCL;• Do ponto de vista do pesquisador;• No contexto de 23 desenvolvedores de software graduados com 40 horas de curso em UML/OCL oferecido pela UFRJ. Conhecimento restrito sintaxe e semântica básica em OCL. 20
  21. 21. Contexto e MaterialQuestão tipo S: questões de interpretação de restrições com a presença de OCL smells;Questão tipo R: questões de interpretação de restrições obtidas a partir deRefatorações aplicadas às expressões presentes nas questões do tipo S doquestionário aplicado ao outro grupo. 21
  22. 22. Formulação das hipóteses• A variável independente deste estudo é o tipo de expressões OCL presente em cada questão respondida. Com dois valores: S(presença de OCL smells) e R(restrições refatoradas).• Impacto da variável independente sobre as variáveis dependentes: – Pontuação na questão(QS): um ponto para o sim / não parte da resposta e um ponto para a parte justificação. As variáveis SS = soma de QS em questões tipo S e RS = soma de QS em questões tipo R; – Tempo para responder as questões(QT): tempo em segundos gastos para responder completamente uma questão. ST e RT são definidas como a soma de QT em questões do tipo S e R;• Hipótese Nula(H0): HO: μSS = μRS and μST = μRT -> não existe diferença de precisão e tempo para responder as perguntas do tipo S e R.• Hipótese Alternativa(H1): H1: μSS < μRS or μST > μRT -> 22
  23. 23. Instrumentação1. Tutorial: Cada sujeito foi dada duas semanas para estudar um tutorial de OCL;2. Avaliação em OCL: indivíduos foram agrupados em dois blocos de 11 sujeitos cada(pontuações mais altas e mais baixas pontuação) de acordo com a mediana de seus pontos em um teste de 10 perguntas sobre OCL. Um sujeito foi alocado para testar a instrumentação.3. Sessão principal: cada participante respondeu o conjunto de 10 perguntas atribuído ao seu grupo (SI ou SII). Cada indivíduo teve que responder plenamente uma pergunta para proceder para o próximo. Eles não foram autorizados a alterar as respostas das perguntas anteriores. Isto foi preciso para recolher o tempo gasto pelos sujeitos em cada pergunta. Não houve limite de tempo;4. Avaliação subjetiva: classificar cada pergunta - o nível de dificuldade e a qualidade percebida das expressões OCL. Para a avaliação do nível de dificuldade cada pergunta, foi utilizada uma escala de Likert de 1 a 5 (1-muito fácil, 2-fácil, 3-médio, 4 - difícil, 5- muito difícil). A qualidade das expressões OCL presentes em cada questão foi avaliada de acordo com a seguinte escala nominal: 1 - restrição é mal escrito, 2 - não tenho certeza se a restrição é bem ou mal escrito, 3 - restrição é bem escrito. 23
  24. 24. Estudo Experimental: Resultados e ameaças à validade• Análise dos instrumentos:  Para esta avaliação, utilizamos o teste de análise de variância (ANOVA), com um nível de significância (α) de 0.05 (WOHLIN et al., 2000), sobre o seguinte conjunto de dados: 1. Pontuação e tempo gasto em cada conjunto de perguntas; 2. Pontuação e tempo gasto em questões do mesmo tipo em cada conjunto de questões.• Resultados:  Os resultados não mostraram diferença significativa na pontuação e tempo para responder entre os grupos. Assim, não há nenhuma evidência de que as diferenças ao longo dos instrumentos deve impor ameaças a outras análises. 24
  25. 25. Scores Um teste de análise de variância (α = 0,05) foi aplicada para a contagem de cada tipo dequestão (μSS e μRS). Os resultados mostrados rejeitam a hipótese nula emfavor da hipótese alternativa: μSS <μRS, ou seja, a pontuação média em no tipo S deperguntas foi menor do que a média em tipo R de perguntas. Portanto, os resultadosindicam que, pelo menos na amostra analisada no estudo, a presença de OCL smellsimpacta negativamente a compreensão de restrições OCL. 25
  26. 26. Tempo de resposta Um teste de análise de variância (α nível de significância = 0,05) foi aplicada para o tempo pararesponder a cada tipo de questão (μST e μRT). O resultado rejeita a hipótese nula emfavor da hipótese alternativa: μST> μRT, ou seja, o tempo médio para resposta de tipo Squestões foi maior do que a média de tempo para responder a perguntas do tipo R. Portanto, oresultados indicam que, pelo menos na amostra analisada no estudo, a presença de OCLSmells pode impactar negativamente o tempo necessário para compreender os limites OCL. 26
  27. 27. Avaliação subjetiva • Mais de 60% de perguntas do tipo R foram classificadas como fácil ou muito fácil, e apenas 10% das perguntas do tipo R foram julgadas como difícil ou muito difícil; • Por outro lado, menos de 30% das perguntas do tipo S foram classificadas como fácil ou muito fácil, enquanto 30% deles foram julgadas como difícil ou muito difícil.• Esta avaliação também mostrou que existe uma diferença significativa na percepção da qualidade das expressões presentes em perguntas do tipo S e do tipo R.• Ao passo que apenas 4% das avaliações das perguntas do tipo R foram classificadas como de má qualidade, a porcentagem foi expressiva nas perguntas do tipo S: 36%.• 80% das expressões do tipo R foram avaliadas como de boa qualidade. No entanto, um número significativo das avaliações (44%) das expressões contendo OCL smells(tipo S) foram avaliadas como de boa qualidade. 27
  28. 28. Conclusões• Apesar da reduzida população deste estudo (22 participantes), os resultados dos testes estatísticos confirmam, no universo analisado, a estrutura das expressões OCL pode influenciar no desempenho dos participantes em relação à compreensão e ao tempo gasto para entender uma restrição OCL;• OCL smells afeta negativamente a compreensão de restrição OCL;• Os resultados obtidos na avaliação subjetiva da qualidade das expressões presentes nas questões refletem, de certo modo, a inexperiência dos participantes com a OCL.• O estudo apontou indícios de que a técnica de refatoração em expressões OCL pode ser viável, mas é preciso repetição de estudo em outros contextos e com populações maiores.• Necessidade de investimento em criação de ferramentas para identificação automática de OCL smells e de modelos de refatoração. 28
  29. 29. Referências• Correa,A., Werner,C.,Barros,M.(2007),”Enhancing the Understandability the OCL Specifications”.In: XXI Simpósio Brasileiro de Engenharia de Software, In English.• Correa, A. (2006), “Refactoring OCL Model Constraints Specifications”, Doctoral Thesis – COPPE/UFRJ, In Portuguese. 29
  30. 30. ?¿?¿Perguntas?¿?¿ ?¿?¿Dúvidas?¿?¿ Obrigada pela sua atenção!!! 30

×