Sei sulla pagina 1di 36

The Impact of Static-Dynamic Coupling on Remodularization

Rick Chern Kris De Volder

Vitor Madureira Sales

OOPSLA - October, 2008 Nashville, EUA

Introduo

Introduo

Foi considerado dois tipos de estrutura do programa:


Esttica Dinmica

Acoplamento esttico-dinmico:
Alguns projetos de linguagens tornam mais difcil mover cdigo de estrutura esttica sem modificar a estrutura dinmica do programa.

Como e quanto o acoplamento esttico-dinmico em uma linguagem impacta na complexidade da remodularizao do programa? Foi feito uma srie de remodularizaes usando Java e SubjectJ.
3

Acoplamento esttico-dinmico

Acoplamento esttico-dinmico

Acoplamento esttico-dinmico

Acoplamento esttico-dinmico

Acoplamento esttico-dinmico

Java possui alto grau de acoplamento esttico-dinmico.

Suporte difcil ferramentas de refatorao. (Cut-and-Paste)


Inteno original era separar o cdigo, mas complexidade foi inserida. A implementao de listener traz complexidade desnecessria. Java impe limitao estrutural na qual a remodularizao deve ser feita mudando a estrutura dinmica do programa.

SubjectJ

SubjectJ

Projetada para ser muito parecida com Java, porm com menor acoplamento esttico-dinmico.
Programas Java devem ser programas SubjectJ vlidos. Suporte a IDE semelhante.

SubjectJ decompe Programas Java em unidades modulares chamadas Sujeitos. A sintaxe do Sujeito essencialmente a sintaxe de um programa Java com anotaes.

Anotaes deixam explicitas quais sujeitos dependem de outros sujeitos.


Sujeitos devem ser declaratively complete.
10

SubjectJ

11

SubjectJ

12

SubjectJ

13

SubjectJ

14

SubjectJ Tools

SubjectJ possui um conjunto de ferramentas com o intuito de editar, compilar e executar programas SubjectJ refatorados.
Compose Decompose Checker

15

SubjectJ

16

SubjectJ

17

SubjectJ

18

SubjectJ

19

Experimento

20

Experimento

21

Ameaas validade

22

Ameaas validade

Variveis do experimento so linguagens enquanto se deseja entender o acoplamento esttico-dinmico. SubjectJ diferir alm do acoplamento esttico-dinmico. Ferramentas de suporte a refatorao com suporte distintos para as linguagens. Bugs, tempo de refatorao podem no ser um indicadores de complexidade. Generalizao dos resultados pode ser invivel.

23

Ameaas validade

Ganho de conhecimento pelo programador na remodularizao.

Tipos de remodularizao feita nos oitos sistemas.


Remodularizao Java first tm mais linhas.

Remodularizaes de outros tipos precisam de mais investigaes.


Programador o primeiro autor do artigo e criador de SubjectJ.

24

Resultados

25

Resultados

26

Introduo de Bugs

27

Bugs

28

Estratgias de Separao

29

Estratgias de Separao

SubjectJ
Mudanas na estrutura dinmica foram requeridas quando possua cdigo dentro de mtodos de interesse distinto do prprio mtodo.

Java
MVC. Mtodo esttico. Split Class em superclasse e subclasse. Estratgia Dual.

30

Estratgias de Separao

31

Suporte Refatorao

Nvel de suporte que pode ser alcanado por uma ferramenta de refatorao indiretamente afetado pelo nvel de acoplamento esttico-dinmico. Refatoraes podem requerer transformaes complexas, difceis de implementar. Eclipse IDE no suporta satisfatoriamente refatoraes. Ferramenta de refatorao so complementares a linguagens com menor acoplamento esttico-dinmico.

32

Concluso

33

Concluso

Como e quanto o acoplamento esttico-dinmico em uma linguagem impacta na complexidade da remodularizao do programa? Fornece resultados quantitativos para responder a questo. Sugerem que devido ao acoplamento esttico-dinmico a remodularizao Java demora mais tempo e insere mais bugs. Alto acoplamento esttico-dinmico em Java traz complexidade acidental. Estratgias de refatorao necessrias para remodularizar cdigos Java no so bem suportadas por ferramentas.
34

Thanks
vitormsales@dcc.ufmg.br

35

Bugs

36