SlideShare une entreprise Scribd logo
1  sur  30
SBES 2007
   XXI Simpósio Brasileiro de Engenharia de Software



Enhancing 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
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
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
Code Smells e Refactoring


Code 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
OCL




Todas instâncias do tipo Account não pode   A operação select resulta em subgrupo de
ter 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
OCL Smells e Refactorings

                                                      UML 1.3 (OMG 1999)




A Figura 4 é utilizado como um exemplo, que até mesmo regras simples
pode resultar em expressões OCL difíceis de ler e compreender.
Essa restrição, no entanto, poderia ter sido definida com uma expressão
tão simples como:
                   self.allConnections-> isUnique(name).

Essa expressão da figura é conhecida como Expressão Prolixa.



                                                                   6
OCL Smells
                                                         UML 1.3 (OMG 1999)




À primeira vista, a complexidade é devido a várias chamadas para oclIsKindOf e
operações oclAsType [Vaziri e Jackson 2002].

Uma análise mais aprofundada revela, porém, que a falta de um supertipo para
ClassifierRole e tipos AssociationRole resultou em expressões complexas e
muito semelhantes separadas somente pelo operador and.

                                                                         7
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
Exemplo




Toda transição em uma máquina de transição de estados (statemachine) que
tiver como origem (source) um pseudo-estado do tipo fork, deve ter como
destino (target) um elemento do tipo State.


                                                                   9
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
Exemplo refatorado




As 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ção
de propriedade, que acrescentou a propriedade sourceIsFork para a classe de Transição;
e Substituir expressão por chamada de propriedade que substituiu o antecedente da
restrição pela expressão self.sourceIsFork..




                                                                                11
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
Exemplos




           13
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 uma
associaçã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
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ões
contendo a estrutura x.oclAsType(Y).z, normalmente precedidas por uma
expressão com o formato x.oclIsKindOf(Y). O objetivo desse tipo de
construção é tornar possível a referência a uma propriedade z definida em um
tipo Y, dada uma expressão x de um tipo X do qual Y é uma especialização.
• Exemplo:




                                                                   15
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
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
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ões
contendo a estrutura x.oclAsType(Y).z, normalmente precedidas por uma
expressão com o formato x.oclIsKindOf(Y). O objetivo desse tipo de
construção é tornar possível a referência a uma propriedade z definida em um
tipo Y, dada uma expressão x de um tipo X do qual Y é uma especialização.
• Exemplo:




                                                                   18
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
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
Contexto e Material




Questã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 de
Refatorações aplicadas às expressões presentes nas questões do tipo S do
questionário aplicado ao outro grupo.


                                                                                        21
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
Instrumentação

1.   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
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
Scores




  Um teste de análise de variância (α = 0,05) foi aplicada para a contagem de cada tipo de
questão (μSS e μRS). Os resultados mostrados rejeitam a hipótese nula em
favor da hipótese alternativa: μSS <μRS, ou seja, a pontuação média em no tipo S de
perguntas foi menor do que a média em tipo R de perguntas. Portanto, os resultados
indicam que, pelo menos na amostra analisada no estudo, a presença de OCL smells
impacta negativamente a compreensão de restrições OCL.




                                                                                             25
Tempo de resposta




 Um teste de análise de variância (α nível de significância = 0,05) foi aplicada para o tempo para
responder a cada tipo de questão (μST e μRT). O resultado rejeita a hipótese nula em
favor da hipótese alternativa: μST> μRT, ou seja, o tempo médio para resposta de tipo S
questões foi maior do que a média de tempo para responder a perguntas do tipo R. Portanto, o
resultados indicam que, pelo menos na amostra analisada no estudo, a presença de OCL
Smells pode impactar negativamente o tempo necessário para compreender os limites OCL.




                                                                                         26
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
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
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
?¿?¿Perguntas?¿?¿



             ?¿?¿Dúvidas?¿?¿



             Obrigada pela sua atenção!!!




                                       30

Contenu connexe

Similaire à XXI Simpósio Brasileiro de Engenharia de Software

MetaSketch OCL Interpreter
MetaSketch OCL InterpreterMetaSketch OCL Interpreter
MetaSketch OCL Interpreterjoaomarcosdm
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
pec-12-patterns-intro.ppt
pec-12-patterns-intro.pptpec-12-patterns-intro.ppt
pec-12-patterns-intro.pptssuser7025cf
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endMario Guedes
 
Reutilização
ReutilizaçãoReutilização
Reutilizaçãoemjorge
 
Apresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéApresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéRenzo Petri
 
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Vinicius Pulgatti
 

Similaire à XXI Simpósio Brasileiro de Engenharia de Software (20)

Java VS Kotlin
Java VS KotlinJava VS Kotlin
Java VS Kotlin
 
MetaSketch OCL Interpreter
MetaSketch OCL InterpreterMetaSketch OCL Interpreter
MetaSketch OCL Interpreter
 
424928
424928424928
424928
 
plsql oracle
plsql oracleplsql oracle
plsql oracle
 
Ass owl
Ass   owlAss   owl
Ass owl
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Padrões de design orientado a objetos
Padrões de design orientado a objetosPadrões de design orientado a objetos
Padrões de design orientado a objetos
 
Uml
UmlUml
Uml
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 
Design pattern
Design patternDesign pattern
Design pattern
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
pec-12-patterns-intro.ppt
pec-12-patterns-intro.pptpec-12-patterns-intro.ppt
pec-12-patterns-intro.ppt
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
Apresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéApresentação Banco de Dados - Caché
Apresentação Banco de Dados - Caché
 
Interface
InterfaceInterface
Interface
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
[Pereira IC'2011] Otimizacoes no LLVM
[Pereira IC'2011] Otimizacoes no LLVM[Pereira IC'2011] Otimizacoes no LLVM
[Pereira IC'2011] Otimizacoes no LLVM
 
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
Apresentacao Boas praticas, revisão java, SOLID, KISS, DRY, design patterns, ...
 
GoF.ppt
GoF.pptGoF.ppt
GoF.ppt
 

Dernier

PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdfProfGleide
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...LuizHenriquedeAlmeid6
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasRicardo Diniz campos
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptxpamelacastro71
 
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbyasminlarissa371
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...Martin M Flynn
 
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASEdinardo Aguiar
 
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
Geometria  5to Educacion Primaria EDU  Ccesa007.pdfGeometria  5to Educacion Primaria EDU  Ccesa007.pdf
Geometria 5to Educacion Primaria EDU Ccesa007.pdfDemetrio Ccesa Rayme
 
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxDeyvidBriel
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileirosMary Alvarenga
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira partecoletivoddois
 
PRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoPRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoSilvaDias3
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
geografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundogeografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundonialb
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxIsabelaRafael2
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPanandatss1
 
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino FundamentalCartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamentalgeone480617
 

Dernier (20)

PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecas
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptx
 
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
 
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
 
treinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppttreinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppt
 
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
Geometria  5to Educacion Primaria EDU  Ccesa007.pdfGeometria  5to Educacion Primaria EDU  Ccesa007.pdf
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
 
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parte
 
PRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoPRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basico
 
Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
geografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundogeografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundo
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SP
 
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino FundamentalCartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
 

XXI Simpósio Brasileiro de Engenharia de Software

  • 1. SBES 2007 XXI Simpósio Brasileiro de Engenharia de Software Enhancing 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. 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. 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. Code Smells e Refactoring Code 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. OCL Todas instâncias do tipo Account não pode A operação select resulta em subgrupo de ter 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. OCL Smells e Refactorings UML 1.3 (OMG 1999) A Figura 4 é utilizado como um exemplo, que até mesmo regras simples pode resultar em expressões OCL difíceis de ler e compreender. Essa restrição, no entanto, poderia ter sido definida com uma expressão tão simples como: self.allConnections-> isUnique(name). Essa expressão da figura é conhecida como Expressão Prolixa. 6
  • 7. OCL Smells UML 1.3 (OMG 1999) À primeira vista, a complexidade é devido a várias chamadas para oclIsKindOf e operações oclAsType [Vaziri e Jackson 2002]. Uma análise mais aprofundada revela, porém, que a falta de um supertipo para ClassifierRole e tipos AssociationRole resultou em expressões complexas e muito semelhantes separadas somente pelo operador and. 7
  • 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. Exemplo Toda transição em uma máquina de transição de estados (statemachine) que tiver como origem (source) um pseudo-estado do tipo fork, deve ter como destino (target) um elemento do tipo State. 9
  • 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. Exemplo refatorado As 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ção de propriedade, que acrescentou a propriedade sourceIsFork para a classe de Transição; e Substituir expressão por chamada de propriedade que substituiu o antecedente da restrição pela expressão self.sourceIsFork.. 11
  • 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. Exemplos 13
  • 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 uma associaçã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. 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ões contendo a estrutura x.oclAsType(Y).z, normalmente precedidas por uma expressão com o formato x.oclIsKindOf(Y). O objetivo desse tipo de construção é tornar possível a referência a uma propriedade z definida em um tipo Y, dada uma expressão x de um tipo X do qual Y é uma especialização. • Exemplo: 15
  • 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. 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. 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ões contendo a estrutura x.oclAsType(Y).z, normalmente precedidas por uma expressão com o formato x.oclIsKindOf(Y). O objetivo desse tipo de construção é tornar possível a referência a uma propriedade z definida em um tipo Y, dada uma expressão x de um tipo X do qual Y é uma especialização. • Exemplo: 18
  • 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. 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. Contexto e Material Questã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 de Refatorações aplicadas às expressões presentes nas questões do tipo S do questionário aplicado ao outro grupo. 21
  • 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. Instrumentação 1. 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. 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. Scores Um teste de análise de variância (α = 0,05) foi aplicada para a contagem de cada tipo de questão (μSS e μRS). Os resultados mostrados rejeitam a hipótese nula em favor da hipótese alternativa: μSS <μRS, ou seja, a pontuação média em no tipo S de perguntas foi menor do que a média em tipo R de perguntas. Portanto, os resultados indicam que, pelo menos na amostra analisada no estudo, a presença de OCL smells impacta negativamente a compreensão de restrições OCL. 25
  • 26. Tempo de resposta Um teste de análise de variância (α nível de significância = 0,05) foi aplicada para o tempo para responder a cada tipo de questão (μST e μRT). O resultado rejeita a hipótese nula em favor da hipótese alternativa: μST> μRT, ou seja, o tempo médio para resposta de tipo S questões foi maior do que a média de tempo para responder a perguntas do tipo R. Portanto, o resultados indicam que, pelo menos na amostra analisada no estudo, a presença de OCL Smells pode impactar negativamente o tempo necessário para compreender os limites OCL. 26
  • 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. 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. 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. ?¿?¿Perguntas?¿?¿ ?¿?¿Dúvidas?¿?¿ Obrigada pela sua atenção!!! 30