de
So,ware
e
Refatorao
Centro
de
Inform-ca
-
Universidade
Federal
de
Pernambuco
Sistemas
de
Informao
Vinicius
Cardoso
Garcia
vcg@cin.ufpe.br
Slides
originais
elaborados
por
Ian
Sommerville
O
autor
permite
o
uso
e
a
modicao
dos
slides
para
ns
did-cos
Mudana
de
so,ware
Mudana
de
soFware
inevitvel
Novos
requisitos
surgem
quando
o
soFware
usado;
O
ambiente
de
negcio
muda;
Erros
devem
ser
reparados;
Novos
computadores
e
equipamentos
so
adicionados
ao
sistema;
O
desempenho
ou
a
conabilidade
do
sistema
deve
ser
melhorada.
Importncia
da
evoluo
As
organizaes
fazem
grandes
inves-mentos
em
seus
sistemas
de
soFware
eles
so
a<vos
cr<cos
de
negcios.
Para
manter
o
valor
desses
a-vos
de
negcio,
eles
devem
ser
mudados
e
atualizados.
A
maior
parte
do
oramento
de
soFware
nas
grandes
organizaes
voltada
para
evoluo,
ao
invs
do
desenvolvimento
de
sistemas
novos
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
3
Leis
de
Lehman
1)
Manuteno
um
processo
inevitvel.
Ambiente
do
sistema
muda
e
requisitos
mudam
3)
Sistemas
de
grande
porte
possuem
dinmica
prpria
(estgios
iniciais
de
desenv.).
Tamanho
e
complexidade
dicultam
alterao
4)
Estado
saturado.
Mudanas
de
recursos
e
pessoal
no
tm
efeito.
Sistemas
grandes
e
overhead
de
comunicao
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
5
Leis
de
Lehman
5)
Novas
funcionalidades
introduzem
novos
defeitos.
No
orar
grandes
incrementos
sem
pensar
nas
correes
de
defeitos
6)
Declnio
da
qualidade
e
insa-sfao
dos
usurios
7)
Aprimoramento
a
par-r
de
sistemas
de
feedback
Manuteno
de
so,ware
a
modicao
de
um
programa
aps
ter
sido
colocado
em
uso.
A
manuteno
normalmente
no
envolve
mudanas
considerveis
na
arquitetura
do
sistema.
As
mudanas
so
implementadas
pela
modicao
de
componentes
existentes
e
pela
adio
de
novos
componentes
ao
sistema.
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
8
A
Manuteno
Inevitvel
Os
sistemas
esto
fortemente
acoplados
ao
seu
ambiente.
Quando
um
sistema
instalado
em
um
ambiente,
ele
muda
esse
ambiente
e,
portanto,
mudam
os
requisitos
de
sistema.
Tipos
de
manuteno
Manuteno
para
reparar
defeitos
de
soFware
Manuteno
para
adaptar
o
so,ware
a
um
ambiente
operacional
diferente
Mudana
em
um
sistema
para
corrigir
decincias
de
maneira
a
atender
seus
requisitos.
Mudana
de
um
sistema
de
tal
maneira
que
ele
opere
em
um
ambiente
diferente
(computador,
OS,
etc.)
a
par-r
de
sua
implementao
inicial.
Modicao
do
sistema
para
sa-sfazer
a
novos
requisitos.
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
10
Ian Sommerville, Engenharia de SoFware, 8. edio. Captulo 21 [if977] Engenharia de SoFware - SI - CIn - UFPE 11
Custos
de
manuteno
Geralmente,
so
maiores
que
os
custos
de
desenvolvimento
(de
2
a
100
vezes,
dependendo
da
aplicao).
So
afetados
por
fatores
tcnicos
e
no
tcnicos.
A
manuteno
corrompe
a
estrutura
do
soFware,
tornando
a
manuteno
posterior
mais
discil.
Design
Erosion
SoFware
em
envelhecimento
pode
ter
altos
custos
de
suporte
(por
exemplo,
linguagens
an-gas,
compiladores,
etc.).
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
12
Habilidade do pessoal
Previso
de
manuteno
Avaliao
de
quais
partes
do
sistema
podem
causar
problemas
e
ter
altos
custos
de
manuteno
A
aceitao
de
mudana
depende
da
facilidade
de
manuteno
dos
componentes
afetados
por
ela;
A
implementao
de
mudanas
degrada
o
sistema
e
reduz
a
sua
facilidade
de
manuteno;
Os
custos
de
manuteno
dependem
do
nmero
de
mudanas,
e
os
custos
de
mudana
dependem
da
facilidade
de
manuteno.
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
14
Processos
de
evoluo
Os
processos
de
evoluo
dependem
Do
-po
de
soFware
que
est
sendo
man-do;
Dos
processos
de
desenvolvimento
usados;
Das
habilidades
e
das
experincias
do
pessoal
envolvido;
Propostas
para
mudana
so
os
direcionadores
para
a
evoluo
do
sistema.
Metodologias
mais
novas
no
costumam
ter
um
processo
separado
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
15
Previso
de
mudanas
A
previso
do
nmero
de
mudanas
requer
o
entendimento
dos
relacionamentos
entre
um
sistema
e
seu
ambiente.
Sistemas
fortemente
acoplados
requerem
mudanas
sempre
que
o
ambiente
mudado.
Fatores
que
inuenciam
esse
relacionamento
so
O
nmero
e
a
complexidade
das
interfaces
de
sistema;
O
nmero
de
requisitos
de
sistema
inerentemente
volteis;
Os
processos
de
negcio
nos
quais
o
sistema
usado.
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
16
Medidas
de
processo
As
medies
de
processo
podem
ser
usadas
para
avaliar
a
facilidade
de
manuteno
Nmero
de
solicitaes
para
manuteno
corre-va;
Tempo
mdio
necessrio
para
anlise
de
impacto;
Tempo
mdio
para
implementar
uma
solicitao
de
mudana;
Nmero
de
solicitaes
de
mudana
pendentes.
Se
qualquer
uma
ou
todas
essas
esto
aumentando,
isso
pode
indicar
um
declnio
na
facilidade
de
manuteno.
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
17
Ian Sommerville, Engenharia de SoFware, 8. edio. Captulo 21 [if977] Engenharia de SoFware - SI - CIn - UFPE 18
Reengenharia
de
sistema
a
reestruturao
ou
reescrita
de
parte
ou
de
todo
um
sistema
sem
mudar
sua
funcionalidade.
Importante
ressaltar:
reestruturao
de
grande
porte!
Aplicvel
onde
partes
de
um
sistema
de
grande
porte
necessitam
de
manuteno
freqente.
Envolve
a
adio
de
esforo
para
tornar
o
sistema
mais
fcil
de
manter.
Simplicidade
um
obje-vo
complexo
20
Ian Sommerville, Engenharia de SoFware, 8. edio. Captulo 21 [if977] Engenharia de SoFware - SI - CIn - UFPE 21
Analisar
e
modicar
a
estrutura
para
facilidade
de
entendimento.
Reorganizar
a
estrutura
do
programa.
Limpar
e
reestruturar
os
dados
do
sistema.
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
22
Leituras
recomendadas
SOMMERVILLE,
I.
Engenharia
de
SoFware.
8.
Ed.
So
Paulo:
Pearson
Educa-on,
2007
Captulo
21
24
25
Refatorao
(Refactoring)
Uma
[pequena]
modicao
no
sistema
que
no
altera
o
seu
comportamento
funcional,
mas
que
melhora
alguma
qualidade
no- funcional:
simplicidade
exibilidade
clareza
Exemplos de Refatorao
Mudana do nome de variveis Mudanas nas interfaces dos objetos Pequenas mudanas arquiteturais Encapsular cdigo repetido em um novo mtodo Generalizao de mtodos
raizQuadrada(float x) raiz(float x,int n)
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
27
Aplicaes
1. Melhorar
cdigo
an-go
e/ou
feito
por
outros
programadores.
2. Desenvolvimento
incremental
la
XP.
Em
geral,
um
passo
de
refatorao
to
simples
que
parece
pouco
-l.
Mas
quando
se
juntam
50
passos,
bem
escolhidos,
em
sequncia,
o
cdigo
melhora
radicalmente.
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
28
Passos
de
Refatorao
Cada
passo
trivial.
Demora
pouco
tempo
para
ser
realizado.
uma
operao
sistem-ca
e
bvia
Os
passos,
individualmente,
podem
mudar
o
comportamento
do
programa
A
sequncia
de
passos
que
forma
a
refatorao
garante
a
preservao
do
comportamento
Catlogo
de
Refatoraes
[Fowler,
1999]
contm
72
refatoraes.
Anlogo
aos
padres
de
projeto
orientado
a
objetos
[Gamma
et
al.
1995]
(GoF).
Vale
a
pena
gastar
algumas
horas
com
[Fowler,
1999].
(GoF
obrigatrio,
no
tem
opo).
[Fowler,
1999]
Mar-n
Fowler.
Refactoring:
Improving
the
Design
of
Exis-ng
Code,
Addison-Wesley,
1999.
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
31
Dica
Quando
voc
tem
que
adicionar
uma
funcionalidade
a
um
programa
e
o
cdigo
do
programa
no
est
estruturado
de
uma
forma
que
torne
a
implementao
desta
funcionalidade
conveniente,
primeiro
refatore
de
modo
a
facilitar
a
implementao
da
funcionalidade
e,
s
depois,
implemente-a.
32
33
O Testador Ideal
Teste
Detalhes
ver
executar
OK
Erro
34
35
Compile
e
teste.
[if977]
Engenharia
de
SoFware
-
SI
-
CIn
-
UFPE
37
39