Você está na página 1de 21

Uma Abordagem Gradativa de Modernizao de Software

Monoltico, Orientado a Objetos e em Camadas para SOA

Mestrado Profissional em Cincias da Computao

Aluno: Alessandro Borges Rodrigues


Orientador: Vinicius Cardoso Garcia

1 CIn.ufpe.
br
Objetivos
Auxiliar na modernizao de sistemas monolticos
orientados a objetos e em camadas para SOA
Utiliza como base apenas o cdigo fonte
Tcnicas semi-automatizadas
Sem alterar as funcionalidades

2 CIn.ufpe.
br
Motivao e Justificativa
Sistemas legados (ADJOYAN et al, 2014)
Tecnologia/Arquitetura ultrapassada
Possui valor para organizao
Alta complexidade na manuteno
Arquitetura em camadas o padro mais utilizado em
aplicaes Java EE (BAZZ et al, 2012)
Sistemas baseados em servios (ZHAO et al, 2014)
Menor custo de manuteno
Alta escalabilidade
Propostas encontradas no so eficientes quando
aplicadas em sistemas em camadas (WANG et al,
2008)

3 CIn.ufpe.
br
Proposta de Soluo
Catlogo de tcnicas semi-automatizadas para auxlio
na modernizao de sistemas monolticos, orientados
a objetos e em camadas, para SOA
1. Diminuio das dependncias das classes
2. Clusterizao das classes
3. Criao dos servios
Estudo de caso no sistema acadmico SIGA-EPCT
200 classes de negcio
244 classes de persistncia
474 entidades

4 CIn.ufpe.
br
Diminuio das Dependncias

N1 N2

P1 P2

N1 N2

P1 P2 P3

Foras que de Conectividade (WANG et al, 2008)


5 CIn.ufpe.
br
Clusterizao: Identificao de Clusters

N1 N2

N3

N4

N5

6 CIn.ufpe.
br
Clusterizao: Algoritmo Fast
Community
Encontrar community structures (ERDEMIR et al, 2014)
Conjunto de vrtices com alta densidade nas arestas internas e baixa
densidade nas arestas externas
Baseado no clculo da modularidade

7 CIn.ufpe.
br
Clusterizao: Algoritmo Fast
Community
1. Inicialmente, considere cada vrtice como um
cluster diferente
2. Junte os dois clusters que tiveram o maior
crescimento, ou menor reduo, 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
Clusterizao: Algoritmo Fast
Community
Superior a outros algoritmos da literatura (ACDC, Bunch,
K-Means e LIMBO) quando observados sob os critrios
(ERDEMIR et al, 2014):
Authoritativeness: medida de similaridade entre a decomposio feita
por profissionais e a feita automaticamente por um algoritmo de
clusterizao
Estabilidade: extrao automtica no deve produzir resultados
drasticamente diferentes quando executados sobre verses similares de
um software com pequenas alteraes
Extremity of cluster distribution: no se deve produzir componentes
muito grandes ou muito pequenos

9 CIn.ufpe.
br
Criao dos Servios
Mtodos das classes de negcio
Restries (GUO et al, 2005)
O tipo do mtodo deve ser pblico
Mtodos abstratos no podem ser publicados
Mtodos com mesmo nome devem possuir nomes de
servio diferentes
Transaes entre servios
ACID (Atomicidade, Consistncia, Isolamento e
Durabilidade)
WS-Transaction e WS-Coordination (IBM +
Microsoft)

10 CIn.ufpe.
br
Criao dos Servios: Nomes de
mtodos duplicados

11 CIn.ufpe.
br
Criao dos Servios: Transao entre
servios

@com.sun.xml.ws.api.tx.at.Transactional
TransactionFlowType
NEVER
SUPPORTS (padro)
MANDATORY

12 CIn.ufpe.
br
Ferramentas
JTransformer: Anlise e Refatorao

13 CIn.ufpe.
br
Ferramentas
JCluster
Clculo da fora de conectividade entre as classes
Exportao dos resultados para o JTransformer

14 CIn.ufpe.
br
Avaliao da Soluo: GQM
(Goal/Question/Metric)
Objetivo(Goal): Analisar a abordagem proposta, em
relao a sua eficcia, do ponto de vista do engenheiro
de software e no contexto de sistemas monolticos,
orientados a objetos e com arquitetura de trs camadas
Questo 1: Que tipo de melhoria a refatorao das
classes traz?
Questo 2: Quais foram as melhorias obtidas nos
componentes gerados?
Questo 3: A funcionalidade original mantida
aps a criao dos servios?

15 CIn.ufpe.
br
Questo 1: Que tipo de melhoria a
refatorao das classes traz?

Cdigo Original Cdigo Refatorado

Negcio - Negcio 0,08 1,05

Negcio - Persistncia 4,34 2,30

Geral 4,42 3,36

M1(acoplamento): reduo de 24% no acoplamento


das classes

16 CIn.ufpe.
br
Questo 2: Quais foram as melhorias
obtidas nos componentes gerados?
Aps Clusterizao

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): reduo variou entre 50% e 80%


M3 (complexidade): reduo variou entre 1,70% e 6,33%
M4 (acoplamento): aumento variou entre 166% e 260%
17 CIn.ufpe.
br
Questo 3: A funcionalidade original
mantida aps a criao dos servios?
Classe Servio Mtodo Ind. Resultado

ManterCursoEJB ManterCursoService consultarTodosEtapaE no sucesso


nsino

ManterTCCMatric ManterTCCMatricula remover no sucesso


ulaEJB Service

ManterTCCMatric ManterTCCMatricula consultarTodosTCCs sim sucesso


ulaEJB Service

ManterMatrizCurri ManterMatrizCurricul consultarTodos no sucesso*


cularEJB arService

ReaberturaTurma ReaberturaTurmaCla reabrirTurma sim sucesso*


ClasseEJB sseService

18 CIn.ufpe.
br
Question 3: A funcionalidade original
mantida aps a criao dos servios?

19 CIn.ufpe.
br
Limitaes e Pontos Fracos
Limitaes
No aborda a refatorao da camada de apresentao
No realiza a separao do banco de dados e consequentemente
das entidades
Pontos Fracos
Comparao de tcnicas de anlise de relacionamentos entre classes
Comparao de tcnicas de clusterizao

20 CIn.ufpe.
br
Concluses
Contribuies
Diminuio da quantidade de classes em cada web
service
Transao entre web services
Ferramentas
Trabalhos futuros
Abordagem da camada de apresentao
Separao do banco de dados/entidades
Comparao de tcnicas de identificao de
componentes/servios

21 CIn.ufpe.
br

Você também pode gostar