Você está na página 1de 21

Uma Abordagem Gradativa de Modernização de Software

Monolítico, Orientado a Objetos e em Camadas para SOA

Mestrado Profissional em Ciências da Computação

Aluno: Alessandro Borges Rodrigues
Orientador: Vinicius Cardoso Garcia

1 CIn.ufpe.
br
Objetivos
● Auxiliar na modernização de sistemas monolíticos
orientados a objetos e em camadas para SOA
○ Utiliza como base apenas o código fonte
○ Técnicas semi-automatizadas
○ Sem alterar as funcionalidades

2 CIn.ufpe.
br
Motivação e Justificativa
● Sistemas legados (ADJOYAN et al, 2014)
○ Tecnologia/Arquitetura ultrapassada
○ Possui valor para organização
○ Alta complexidade na manutenção
● Arquitetura em camadas é o padrão mais utilizado em
aplicações Java EE (BAZZ et al, 2012)
● Sistemas baseados em serviços (ZHAO et al, 2014)
○ Menor custo de manutenção
○ Alta escalabilidade
● Propostas encontradas não são eficientes quando
aplicadas em sistemas em camadas (WANG et al,
2008)

3 CIn.ufpe.
br
Proposta de Solução
● Catálogo de técnicas semi-automatizadas para auxílio
na modernização de sistemas monolíticos, orientados
a objetos e em camadas, para SOA
1. Diminuição das dependências das classes
2. Clusterização das classes
3. Criação dos serviços
● Estudo de caso no sistema acadêmico SIGA-EPCT
○ 200 classes de negócio
○ 244 classes de persistência
○ 474 entidades

4 CIn.ufpe.
br
Diminuição das Dependências

N1 N2

P1 P2

N1 N2

P1 P2 P3

Forças que de Conectividade (WANG et al, 2008)
5 CIn.ufpe.
br
Clusterização: Identificação de Clusters

N1 N2

N3

N4

N5

6 CIn.ufpe.
br
Clusterização: Algoritmo Fast
Community
● Encontrar “community structures” (ERDEMIR et al, 2014)
○ Conjunto de vértices com alta densidade nas arestas internas e baixa
densidade nas arestas externas
● Baseado no cálculo da modularidade

7 CIn.ufpe.
br
Clusterização: Algoritmo Fast
Community
1. Inicialmente, considere cada vértice como um
cluster diferente
2. Junte os dois clusters que tiveram o maior
crescimento, ou menor redução, da modularidade
3. Repita o passo 2 até que reste apenas um cluster Q=0,500 / ΔQ=0,6250
4. Selecione o ponto de corte do dendrograma
resultante analisando o maior valor de Qw

N1

Q=1,000 / ΔQ=1,000

N2

N3 Q=0,000 / ΔQ=0,500

N4

8 CIn.ufpe.
br
Clusterização: Algoritmo Fast
Community
● Superior a outros algoritmos da literatura (ACDC, Bunch,
K-Means e LIMBO) quando observados sob os critérios
(ERDEMIR et al, 2014):
○ “Authoritativeness”: medida de similaridade entre a decomposição feita
por profissionais e a feita automaticamente por um algoritmo de
clusterização
○ Estabilidade: extração automática não deve produzir resultados
drasticamente diferentes quando executados sobre versões similares de
um software com pequenas alterações
○ “Extremity of cluster distribution”: não se deve produzir componentes
muito grandes ou muito pequenos

9 CIn.ufpe.
br
Criação dos Serviços
● Métodos das classes de negócio
● Restrições (GUO et al, 2005)
○ O tipo do método deve ser público
○ Métodos abstratos não podem ser publicados
○ Métodos com mesmo nome devem possuir nomes de
serviço diferentes
○ Transações entre serviços
■ ACID (Atomicidade, Consistência, Isolamento e
Durabilidade)
■ WS-Transaction e WS-Coordination (IBM +
Microsoft)

10 CIn.ufpe.
br
Criação dos Serviços: Nomes de
métodos duplicados

11 CIn.ufpe.
br
Criação dos Serviços: Transação entre
serviços

● @com.sun.xml.ws.api.tx.at.Transactional
● TransactionFlowType
○ NEVER
○ SUPPORTS (padrão)
○ MANDATORY

12 CIn.ufpe.
br
Ferramentas
● JTransformer: Análise e Refatoração

13 CIn.ufpe.
br
Ferramentas
● JCluster
○ Cálculo da força de conectividade entre as classes
○ Exportação dos resultados para o JTransformer

14 CIn.ufpe.
br
Avaliação da Solução: GQM
(Goal/Question/Metric)
● Objetivo(Goal): Analisar a abordagem proposta, em
relação a sua eficácia, do ponto de vista do engenheiro
de software e no contexto de sistemas monolíticos,
orientados a objetos e com arquitetura de três camadas
○ Questão 1: Que tipo de melhoria a refatoração das
classes traz?
○ Questão 2: Quais foram as melhorias obtidas nos
componentes gerados?
○ Questão 3: A funcionalidade original é mantida
após a criação dos serviços?

15 CIn.ufpe.
br
Questão 1: Que tipo de melhoria a
refatoração das classes traz?

Código Original Código Refatorado

Negócio - Negócio 0,08 1,05

Negócio - Persistência 4,34 2,30

Geral 4,42 3,36

● M1(acoplamento): redução de 24% no acoplamento
das classes

16 CIn.ufpe.
br
Questão 2: Quais foram as melhorias
obtidas nos componentes gerados?
Após Clusterização

Original Ponto de Ponto de Ponto de Ponto de
Corte 1 Corte 2 Corte 3 Corte 4

Modularidade 1 0,9612 0,8999 0,8117 0,7253

Quantidade de 1 2 3 4 5
Componentes

COXP 14,20 13,96 13,73 13,51 13,30

TACO 22 11 7,33 5,50 4,40

ACCO 0 0,50 1,33 1,5 1,80

● M2 (tamanho): redução variou entre 50% e 80%
● M3 (complexidade): redução variou entre 1,70% e 6,33%
● M4 (acoplamento): aumento variou entre 166% e 260%
17 CIn.ufpe.
br
Questão 3: A funcionalidade original é
mantida após a criação dos serviços?
Classe Serviço Método Ind. Resultado

ManterCursoEJB ManterCursoService consultarTodosEtapaE não sucesso
nsino

ManterTCCMatric ManterTCCMatricula remover não sucesso
ulaEJB Service

ManterTCCMatric ManterTCCMatricula consultarTodosTCCs sim sucesso
ulaEJB Service

ManterMatrizCurri ManterMatrizCurricul consultarTodos não sucesso*
cularEJB arService

ReaberturaTurma ReaberturaTurmaCla reabrirTurma sim sucesso*
ClasseEJB sseService

18 CIn.ufpe.
br
Question 3: A funcionalidade original é
mantida após a criação dos serviços?

19 CIn.ufpe.
br
Limitações e Pontos Fracos
● Limitações
○ Não aborda a refatoração da camada de apresentação
○ Não realiza a separação do banco de dados e consequentemente
das entidades
● Pontos Fracos
○ Comparação de técnicas de análise de relacionamentos entre classes
○ Comparação de técnicas de clusterização

20 CIn.ufpe.
br
Conclusões
● Contribuições
○ Diminuição da quantidade de classes em cada web
service
○ Transação entre web services
○ Ferramentas
● Trabalhos futuros
○ Abordagem da camada de apresentação
○ Separação do banco de dados/entidades
○ Comparação de técnicas de identificação de
componentes/serviços

21 CIn.ufpe.
br