• Nenhum resultado encontrado

interesses em alto nível

N/A
N/A
Protected

Academic year: 2022

Share "interesses em alto nível"

Copied!
37
0
0

Texto

(1)

thiago delgado pinto – tpinto@inf.puc-rio.br

um estudo exploratório sobre a

identificação de aglomerações de interesses em alto nível

outubro, 2014

inf2921 – introdução à engenharia de software experimental – puc-rio prof. alessandro garcia

(2)

introdução

2

(3)

introdução

requisitos são obtidos a partir dos interessados (stakeholders)

papéis desempenhados por pessoas

os interesses identificados tem vários graus de relevância

há, em muitos casos, interesses conflitantes

ex.: desempenho vs. segurança

especificação de requisitos

(4)

introdução

decisão arquitetural – iso/ieee

Rozanski, Nick.; Woods, Eóin;. Software Systems Architecture: Working with Stakeholders using Viewpoints and Perspectives. 2011. 2nd ed. Pearson. 4

(5)

introdução

rationale arquitetural – iso/ieee

Rozanski, Nick.; Woods, Eóin;. Software Systems Architecture: Working with Stakeholders using Viewpoints and Perspectives. 2011. 2nd ed. Pearson.

(6)

introdução

ao evoluir, um software passa por mudanças evoluções

correções

sua modularidade é afetada

seu design projetado sofre mudanças evolução

6

(7)

introdução

ao evoluir, funcionalidades e interesses se espalham pelo código

gerando dificuldades em mantê-lo

o desenvolvedor precisa estar ciente

de todos os módulos responsáveis por cada funcionalidade e por cada interesse;

e de como a manutenção pode afetá-los espalhamento

Nguyen, 2011. Aspect Recomendation for Evolving Software. International Conference on Software Enginering (ICSE). 2011. pp 361-370.

(8)

motivação

8

(9)

o uso de técnicas para localizar no código

os módulos que implementam determinado interesse pode ser útil

para tratar problemas de manutenção;

para rastreabilidade da implementação em relação aos requisitos

motivação

Nguyen, 2011. Aspect Recomendation for Evolving Software. International Conference on Software Enginering (ICSE). 2011. pp 361-370.

(10)

similarmente, há técnicas que identificam aglomerados (clusters) de interesses espalhadas pelo código

técnicas baseadas no fan-in*

ex.: Marin et al. (2007), Zhang et al. (2008)

técnicas baseadas na similaridade de código

ex.: Nguyen et al. (2011), Adams et al. (2014)

motivação

*fan-in é uma métrica que computa o número de classes que referenciam determinada classe. 10

(11)

conhecendo a localização dos interesses no código, um desenvolvedor pode

verificar se a modularidade da implementação está adequada e optar por refatorá-la;

identificar módulos que deveriam estar

implementando determinado interesse e não estão;

detectar interesses emergentes, que surgiram com novos requisitos e não tiveram sua implementação planejada.

motivação

(12)

definições

12

(13)

definições

interesse entrecortante (cross-cutting concern) funcionalidade que pode não estar bem

alinhada com a modularização do sistema e que precisa ser espalhada por vários módulos

contêiner de interesse (concern container)

unidade de código que compartilha um interesse entrecortante.

principais definições [1/2]

(14)

definições

implementadores de interesse (concern implementors)

fragmentos de código que implementam um interesse entrecortante

principais definições [2/2]

14

(15)

definições

exemplo – sistema bancário online

15

classe BankAccount

com métodos deposit e withdraw

métodos mantêm a integridade no acesso concorrente ao banco de dados através de mecanismos de travamento (locking)

métodos lock e unlock

preocupação

(16)

definições

exemplo – sistema bancário online

16

interesse

entrecortante

(LOCKING)

entrecruza os métodos deposit e withdraw

(17)

definições

exemplo – sistema bancário online

contêineres de interesse

(18)

definições

exemplo – sistema bancário online

18

db.lock() e db.unlock()

são os implementadores do interesse

(19)

estudo anterior

19

(20)

estudo anterior

implementa a abordagem de Nguyen et al. (2011) detecta aglomerações de interesses no código

mais especificamente, detecta pares de interesse

premissa: "métodos que têm interações similares em um sistema (ex.: chamam ou são chamados por métodos similares, em contextos similares) tendem a compartilhar alguns interesses entrecortantes."

a ferramenta xscan

20

(21)

estudo anterior

aplicações OO

JHotDraw : software para desenho vetorial JEdit : editor de código

Columba : cliente de e-mail

JFreeChart : framework para criação de gráficos (charts) Tomcat : uma implementação de Java Servlet e JSP Jarp : analisador de redes petri

aplicações OA

AJHotDraw : versão orientada a aspectos do JHotDraw HealthWatcher: software para a área médica

a ferramenta xscan

21

(22)

estudo anterior

resultados originais da xscan [2/5]

22

(23)

estudo anterior

resultados originais da xscan [3/5]

(24)

estudo anterior

verificar se esta abordagem, baseada em similaridades de código, apresentava variações significativas (de precisão e cobertura) se aplicadas em versões menos maduras dos softwares avaliados no trabalho original

objetivos iniciais

24

(25)

estudo anterior

a abordagem gerou resultados muito diferentes dos apresentados no trabalho

cobertura

original : 89 – 100 % experimentos : 43 – 57 %

precisão

original : 90 – 100 % experimentos : 39 – 73 %

achados [1/5]

(26)

estudo anterior

os aglomerados apresentados relacionam métodos de diferentes classes que, intencionalmente ou não, implementam determinado interesse

não é feita uma análise sobre possíveis relações entre esses aglomerados, o que poderia culminar em uma verificação de mais alto nível, podendo facilitar o trabalho de um desenvolvedor

achados [2/5]

26

(27)

estudo anterior

a ferramenta identificou um grupo de classes que possuem o método addNotify() usado em contextos semelhantes

também identificou a presença do método

removeNotify() nessas mesmas classes

como esses métodos estão relacionados e são utilizados em contextos similares, a abordagem poderia sugerí-los como sendo participantes da mesma abstração

achados – exemplo [3/5]

(28)

estudo anterior

como a ferramenta não analisava os aglomerados sugeridos, relacionando-os, acabamos precisando agrupar vários desses aglomerados sob um mesmo interesse, para então poder compará-los aos nossos

ex.: no JEdit 4.3pre1 identificamos um interesse que chamamos de Buffer. Esse mesmo interesse foi identificado pela ferramenta, mas em vários grupos distintos, o que tornou nosso trabalho de análise e comparação dos resultados mais oneroso

achados [4/5]

28

(29)

estudo anterior

os arquivos dos aglomerados de contêineres de interesse relacionados à um interesse de alto nível são praticamente os mesmos na maioria dos casos

em geral, esse arquivos detectados em um aglomerado são idênticos aos de outro aglomerado ou são um subconjunto deste

isso reforça nossa intuição de que a realização de agrupamentos de alto nível é viável

achados [5/5]

(30)

estudo atual

30

(31)

estudo atual

(i) identificar se as abordagens de localização e de aglomeração de preocupações no código-fonte

conseguem agrupar essas

preocupações em níveis de abstrações altos

ex.: nível de classe/componente

que podem ser mais úteis ao programador para compreender a arquitetura atual de um software

(ii) avaliar se essas abstrações podem ser realmente úteis para um desenvolvedor, em relação à identificação de métodos isolados.

objetivos

(32)

estudo atual

(i) As abordagens de aglomeração atuais não fornecem um nível alto de abstração (ex: em nível de classes ou componentes, ao invés de somente métodos);

(ii) O agrupamento de pares de interesse semelhantes em classes é mais útil para o desenvolvedor, para que ele possa compreender uma arquitetura existente.

hipóteses

32

(33)

andamento

33

(34)

andamento

foram pesquisadas abordagens que pudessem ter o nível de abstração desejado

a grande maioria dos artigos encontrados foi lida

a abordagem mais promissora encontrada foi a COMMIT (Adams et al.)

autores da ferramenta foram contatados e forneceram os scripts usados

o que foi feito

34

(35)

andamento

colocar os scripts para funcionar

adaptar para a linguagem Java (atualmente é C)

avaliar as saídas geradas e o nível de abstração dos aglomerados de interesse identificados

analisar se o nível de abstração pode ajudar um desenvolvedor

próximos passos

(36)

bibliografia

36

fim

Adams, Brian; Jiang, Z. M.; Hassan, A. E. Identifying crosscutting concerns using historical code changes. International Conference on Software Enginering (ICSE) 2010, pages 305–

314. ACM Press, 2010.

Nguyen, T. T.; Nguyen, H. V.; Nguyen, H. A.; Nguyen, T. N.; Aspect recomendation for evolving software. In International Conference on Software Enginering (ICSE). 2011. pp 361-370.

Nunes, Camila; Garcia, Alessandro; Lucena, Carlos; Lee, Jaejoon. Heuristic expension of feature mappings evolving program families. Software Practice and Experience, 2013.

Rozanski, Nick.; Woods, Eóin;. Software systems architecture: working with stakeholders using viewpoints and perspectives. 2011. 2nd ed. Pearson Education.

(37)

37

Thiago Delgado Pinto tpinto@inf.puc-rio.br

Referências

Documentos relacionados

A Psicologia, por sua vez, seguiu sua trajetória também modificando sua visão de homem e fugindo do paradigma da ciência clássica. Ampliou sua atuação para além da

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

1- Indica com P, se a frase estiver na voz passiva e com A se estiver na ativa. Depois, passa-as para a outra forma. a) Vimos um cisne moribundo.. Assinala com um X o

1- Indica com P, se a frase estiver na voz passiva e com A se estiver na ativa. Depois, passa-as para a outra forma.. Assinala com um X o retângulo correspondente.. Derivada

Em primeiro lugar, como a pecuária é menos intensiva em capital que a agricultura, mais produtores irão escolher a pecuária quando os preços da terra estiverem baixos em

Se dispuser de uma peça de mão X-Smart IQ ® , você pode operar o localizador apical Propex IQ ® no modo combinado para o monitoramento simultâneo da progressão da lima

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...

[r]