• Nenhum resultado encontrado

04 Localizacao Conceitos

N/A
N/A
Protected

Academic year: 2021

Share "04 Localizacao Conceitos"

Copied!
50
0
0

Texto

(1)
(2)

Conceitos e localização de conceitos

Etapa fundamental do design da mudança

Realizada logo após a iniciação

Initiation Concept Location Impact Analysis Prefactoring Actualization Postfactoring V E R I F I C A T I

(3)

Papel da localização de conceitos

A localização de conceitos encontra o

fragmento de código onde uma mudança será

realizada

Solicitações

de

mudança

são

mais

frequentemente formuladas em termos dos

conceitos do domínio

Exemplo: “Corrigir o erro que ocorre quando se

tenta colar um texto”

(4)

Compreensão parcial de código-fonte

Programas

grandes

não

podem

ser

compreendidos completamente

Programadores buscam a compreensão mínima

essencial para a tarefa particular

Eles usam uma estratégia de “quando necessário”

Eles tentam entender como certos

conceitos

específicos são refletidos no código

(5)
(6)

Detalhe de ortografia

(Merriam-Webster)

Inten

s

ion \in-’ten(t)-shən\ (em português, intensão)

synonym CONNOTATION

the suggesting of a meaning by a word apart from the thing it

explicitly names or describes b: something suggested by a word or

thing — W. R. Inge> an essential property or group of properties of a

thing named by a term in logic

Inten

t

ion \in-’ten(t)-shən\ (em português, intenção)

synonyms INTENT , PURPOSE , DESIGN , AIM , END ,

OBJECT , OBJECTIVE, GOAL mean what one intends to

accomplish or attain.

(7)

Exemplo de conceito: Cão

<<intensão >>

<<nome>>

Cão / Dog / Hund

<< extensões >>

Mamífero peludo com

dentes…

Beethoven

Lassie

(8)

Localização de conceitos

Extensões de conceitos são implementadas

como fragmentos de código

variáveis, classes, métodos ou outros

Programadores devem achar estes

fragmentos de código

É fácil em programas pequenos ou em

programas que o programador conhece bem

É difícil em programas grandes ou em

(9)

Busca nos trechos desconhecidos de um

sistema

(10)

Formulando uma consulta

Extrair o conjunto de conceitos usados na

solicitação de mudança

Remover os conceitos destinados apenas à

comunicação com os programadores

Remover os conceitos que não terão

provável implementação no código

conceitos relacionados a coisas que estão for a

do escopo do programa

(11)

Exemplo

Sistema de Ponto-de-Vendas (PDV)

Solicitação de mudança é “Implementar um

pagamento com cartão de crédito”

Identificar os conceitos

“Implementar”

“Cartão de crédito”

“Pagamento”

(12)

Exemplo

Sistema de Ponto-de-Vendas (PDV)

Solicitação de mudança é “Implementar um

pagamento com cartão de crédito”

Identificar os conceitos

Implementar

” …

comunicação com o

programador

“Cartão de crédito”

“Pagamento”

(13)

Exemplo

Sistema de Ponto-de-Vendas (PDV)

Solicitação de mudança é “Implementar um

pagamento com cartão de crédito”

Identificar os conceitos

Implementar

” …

comunicação com o

programador

“Cartão de crédito”

… a ser implementado, não

está no

código antigo

(14)

Exemplo

Sistema de Ponto-de-Vendas (PDV)

Solicitação de mudança é “Implementar um

pagamento com cartão de crédito”

Identificar os conceitos

Implementar

” …

communication with

programmer

“Cartão de crédito”

… a ser implementado, não

está no

código antigo

“Pagamento” !!! Conceito significativo,

(15)

Como reconhecer o conceito

Lendo o código

Comentários e identificadores

Algoritmos próprios (plano)

Pequena modificação

Mudar o código levemente e executar

Descartar esta modificação!

(16)

Metodologias de localização de

conceitos

Conhecimento humano

Ferramentas de rastreabilidade

Busca dinâmica (rastros de execução)

Busca estática

busca por dependências

"grep" (casamento de padrões)

(17)

Técnica de busca com GREP

GREP é uma sigla para "global regular expression print".

GREP imprime as linhas que contêm o casamento com uma

expressão regular.

Programador formula iterativamente uma expressão de busca e

então investiga os resultados.

Se os resultados são grandes demais para revisar, ou o

programador realiza uma busca adicional sobre estes resultados

ou reformula a expressão de busca.

(18)

Exemplo: Art of Illusion

Estúdio de modelagem 3D, escrito em Java

Mais de 600 classes, 100838 LOC.

Implementar um controle de zoom

Atualmente, a única forma de fazer zoom é entrar

o valor de zoom em uma caixa de texto específica

um valor de zoom tem de ser digitado pelo usuário

O valor default é100%.

Implementar um controle de zoom que use as

(19)
(20)

Exemplo com GREP

Primeira busca: “zoom”

A busca produziu 6 linhas irrelevantes

Segunda busca: “scale”

Retornou 1544 linhas, grande demais para

inspecionar.

Terceira busca: “100”

Valor de escala default é 100

Busca entre os resultados da busca anterior

Retornou 4 linhas do arquivo ViewerCanvas.java.

Inspeção

(21)

Técnica de busca por dependências

Usa Grafos de Dependências de Classes

(CDG)

Extraídos do código existente.

Funcionalidade local

Conceitos que são implementados no módulo e

não são delegados a outros módulos.

Funcionalidade composta

Funcionalidade completa de um módulo

(22)

Funcionalidades do componente X

Concept A

Concept B

Component X

Local

responsibility

(23)

Localização de conceitos através de busca de

dependências

(24)
(25)

Busca por dependências – parte 1

Comece na classe ModelingApp

Conceito não está contido dentro da responsabilidade

local da classe

Próximo passo: inspecionar LayoutWindow

Responsável pela construção da janela principal do AOI

Responsabilidade composta contém o conceito, mas a

responsabilidade local não o contém.

Havia pistas que levaram a buscar em ValueField

Implementa a caixa de texto.

(26)

Busca por dependências – parte 2

A classe SceneViewer

Várias funções são responsáveis por responder

aos eventos do usuário

A função updateImage() era responsável por

repintar a tela

Descobriu-se que a responsabilidade composta

desta função continha o conceito.

A responsabilidade local de SceneViewer ainda

não continha o conceito

(27)

Comparação das técnicas

A técnica baseada em grep

Depende do uso de convenções de

nomenclatura

Independente da estrutura de classes

Ferramentas GREP fornecem apenas a lista dos

resultados de busca

Adequada apenas para conceitos explícitos

A técnicas de busca por dependências

estáticas

(28)

Exemplo com Violet

Violet

Editor de UML de código aberto

Apoia o desenho de diagramas UML

Diagrama de classes, diagrama de sequência,

diagrama de estados, diagrama de objetos,

diagrama de casos de uso

60 classes e 10000 linhas de código

http://sourceforge.net/projects/violet/

(29)
(30)

Solicitação de mudança

Registrar o autor de cada figura

Esta mudança tornará o Violet mais

versátil

Suporte para trabalho cooperativo

O autor criou uma figura

O autor conhece a semântica da figura

Nome do conceito: “author”

Extensão de conceito implícito

A extensão não está presente no código atual

(31)

Localizando propriedades da figura: Início

UMLEditor SequenceDiagram Graph UseCaseDiagram Graph ClassDiagram Graph ObjectDiagram Graph StateDiagram Graph ClassRelationship

(32)

Classes a inspecionar

UMLEditor SequenceDiagram Graph UseCaseDiagram Graph ClassDiagram Graph ObjectDiagram Graph StateDiagram Graph ClassRelationship

Edge PackageNode ClassNode InterfaceNode NoteNode

(33)

Fornecedor mais provável

UMLEditor SequenceDiagram Graph UseCaseDiagram Graph ClassDiagram Graph ObjectDiagram Graph StateDiagram Graph ClassRelationship

(34)

Próximas classes a inspecionar

UMLEditor SequenceDiagram Graph UseCaseDiagram Graph ClassDiagram Graph ObjectDiagram Graph StateDiagram Graph ClassRelationship

Edge PackageNode ClassNode InterfaceNode NoteNode

(35)

Caminho errado

UMLEditor SequenceDiagram Graph UseCaseDiagram Graph ClassDiagram Graph ObjectDiagram Graph StateDiagram Graph ClassRelationship

(36)

Backtrack

UMLEditor SequenceDiagram Graph UseCaseDiagram Graph ClassDiagram Graph ObjectDiagram Graph StateDiagram Graph ClassRelationship

Edge PackageNode ClassNode InterfaceNode NoteNode

(37)

Conceito localizado

UMLEditor SequenceDiagram Graph UseCaseDiagram Graph ClassDiagram Graph ObjectDiagram Graph StateDiagram Graph ClassRelationship

(38)

Possível extensão da busca

UMLEditor SequenceDiagram Graph UseCaseDiagram Graph ClassDiagram Graph ObjectDiagram Graph StateDiagram Graph ClassRelationship

Edge PackageNode ClassNode InterfaceNode NoteNode

(39)

Outra localização realizada

UMLEditor SequenceDiagram Graph UseCaseDiagram Graph ClassDiagram Graph ObjectDiagram Graph StateDiagram Graph ClassRelationship

(40)

Exemplo 2: Eclipse 3.3

Eclipse – Ambiente de desenvolvimento

integrados para Java (dentre outras

linguagens)

15479 classes, 156334 métodos

Solicitação de mudança: BugID 172261*:

[Actions] When rename a file in one

project’s navigator, the other selected file’s

name is renamed

(41)
(42)

8 s

up

plie

rs

CLDS no Eclipse 3.3

FrameworkCommandProv

ider

MSG

NLS

(43)

CLDS no Eclipse 3.3

103

5 s

(44)

CLDS no Eclipse 3.3

(45)

CLDS no Eclipse 3.3

(46)

CLDS - resultados

Classe principal: Launcher

Número mínimo possível de classes

visitadas = 4

Número de classes propostas a serem

visitadas =1076 (1+8+1035+32)

Programadores podem facilmente se

perder quando JRipples requerer que

sejam visitados um grande número

de fornecedores de uma classe

(47)

Ferramenta interativa para localização de

conceitos

(48)

Localização de conceitos por grep

Técnica clássica para localização de

conceitos

Baseada em casamento de padrões

Programador formula uma consulta

Baseada no(s) nome(s) do conceito(s)

Grep busca nos arquivos

Encontra as linhas de código correspondentes

(“acertos”)

Programador investiga os acertos

(49)

Exemplo: Bug “Anchors” no Mozilla*

Solicitação de mudança

Anchors in e-mails are broken (Clicking Anchor

doesn't go to target in e-mail)

Conhecimento inicial

E-mail

HTML document typeOf

(50)

Conhecimento após a aprendizagem

Resultado da busca repetida

Programador aprende a partir das buscas

“mailbox: //" URI

propertyOf partOf

Consulta grep vencedora:

mailbox: //

E-mail HTML document HTML fragment Anchor typeOf partOf partOf Targets

Referências

Documentos relacionados

O modelo usado para averiguar a validade preditiva e nomológica do construto focal – GFP – envolveu, além do teste da escala, o exame de sua relação com um construto

On a cherché à connaître la vision des professionnels qui travaillent avec les familles/ où l’éducation parental sur les pratiques de qualité, à quelles niveaux

Informações da PNUMA (2011) informam que o ecoturismo cresce mundialmente em torno de 34% ao ano e três vezes mais do que o turismo convencional. O aspecto mais comum dos

(Consider, for example, complete bipartite graphs.) It is all the more remarkable, then, that the assumption of a large chromatic number rather than a large average degree seems to

From this, we identify the vertices of the skeleton with the minimum degree and we prove that the union of stars and triangles characterizes regular skeletons of the matching

Organização do Trabalho 3 ART-2A, a qual é utilizada na tarefa de classificação dos componentes para seu agrupamento; no capítulo 4 são fornecidos detalhes sobre o desenvolvimento

・ Find all vertices connected to a given source vertex.. ・ Find a path between

  Decouple graph algorithm from graph data type.   Avoid