SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Conf 2015
Cláudio Martins
claudiomartins2000@gmail.com
Novembro/2015
1
Sobre o palestrante : Cláudio Martins
Sou Mestre em Computação pela Universidade Federal do
Rio Grande do Sul (UFRGS/2003), graduado em Tecnologia
de PD (UFPA/1989), especialista em Análise e Projeto de
Sistemas (UFPA/1998).Sistemas (UFPA/1998).
Professor do Instituto Federal do Pará (IFPA), e analista de
sistemas da Companhia de Informática de Belém (Cinbesa).
Trabalho há mais de vinte anos com engenharia de software
e sistemas de informação.
2Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Lattes: http://lattes.cnpq.br/7014997829591968
LinkedIn: http://br.linkedin.com/in/claudiomartins2010
Facebook: https://www.facebook.com/claudiomartins2000
Blog: http://claudiomartins-prof.blogspot.com.br/
• A palestra tem por objetivo apresentar as principais
métricas de código orientado a objetos como suporte
à tarefa de refatoração de código.
Agenda
à tarefa de refatoração de código.
• A palestra é dividida em três partes:
– Motivação
– Refatoração
– Métricas para Software Orientado a Objetos
3
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Motivação:Motivação:
Software, manutenção e qualidade
4
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
O que é Software?
• Há pouco tempo, as pessoas não
conseguiam perceber a existência ou
importância do software.importância do software.
– Hardware/Equipamento e software se
confundiam em só um conceito.
• Hoje, o software está presente e
onipresente em vários meios e dispositivos.
Software (definição)
•Programas de computador (código, instruções), estruturas de
dados e...
•A documentação necessária para instalar, usar e tornar os
programas compreensíveis para quem os mantêm.
5
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Custo do Software
• Ao longo do ciclo de vida, os custos em Desenvolvimento
e Manutenção do Software:
▫ Desenvolvimento ................ 30 a 40 %▫ Desenvolvimento ................ 30 a 40 %
▫ Manutenção ........................ 60 a 70 %
6
Custos relativos ao Desenvolvimento
do Software e Manutenção.
Custos relativos a TIC, Desenvolvimento de
Software e Manutenção de Software
Sem Manutenção,
tudo se desgasta,tudo se desgasta,
deteriora.
7
Ciclo de vida do hardware/equipamentos
físicos
8
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Ciclo de vida do Software
9
Diz respeito a uma das 8 Leis de Lehman:
Complexidade crescente - Se não forem tomadas medidas para reduzir
ou manter a complexidade de um software, conforme ele é alterado sua
complexidade irá aumentar progressivamente.
Deve haver um esforço para reduzir a complexidade final de um sistema
enquanto este recebe alterações.Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Reengenharia de Software
10
• É o processo de alterar a codificação do software sem alterar sua
funcionalidade.
– Ex: definição e nomes de dados e código do programa, melhorias e
simplificações em instruções.
Reestruturação de Código
simplificações em instruções.
• O propósito principal é tornar o programa mais fácil de ser
compreendido.
Fundamentos da Reengenharia
11
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Refatoração (Refactoring)Refatoração (Refactoring)
de Software OO
12
Refatoração
• Refatoração (do inglês, Refactoring) é o processo de
modificar um software para melhorar sua estrutura
interna (do código) sem alterar seu comportamentointerna (do código) sem alterar seu comportamento
externo.
– Martin Fowler et al. (1999).
• Refatoração busca tornar o software mais fácil de
entender e mais barato de se modificar (evoluir).
• O uso desta técnica evita a deterioração tão comum• O uso desta técnica evita a deterioração tão comum
durante o ciclo de vida de um código.
• Não se trata de otimização.
– Refatorar ~ Refabricar ~ Reestruturar
– É uma prática “ágil”!
13
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Refatoração (Refactoring) de Software
•A refatoração visa auxiliar o processo de desenvolvimento
(programação) e evolução (manutenção) do software a partir de
mecanismos de reestruturação de código (orientado a objetos).
14
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
“Mau cheiro” (Bad Smell)
Problemas de qualidade de código
15
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Exemplo prático de Refatoração
•Considere a classe ‘C’, responsável por implementar
funcionalidades em uma conta bancária:
public class C {
public double s;
public void sacar(double valor){
this.s = s – valor;
}
public static void main(String args[]){
C c = new C();C c = new C();
c.s = 100;
c.sacar(50);
System.out.println(“Saldo:”+c.s);
}
}
16
Exemplo prático de Refatoração:
Renomear Classe
Solução:
Trocar o nome da classe
public class Conta {
public double s;
public void sacar(double valor){
this.s = s – valor;
}
public static void main(String args[]){
Conta c = new Conta();Conta c = new Conta();
c.s = 100;
c.sacar(50);
System.out.println(“Saldo:”+c.s);
}
}
17
Exemplos comuns de Refatoração
•Mudança do nome de variáveis•Mudança do nome de variáveis
•Mudanças nas interfaces dos objetos
•Pequenas mudanças arquiteturais
•Decompor grandes métodos em métodos menores
•Encapsular código repetido em um novo método
•Generalização de métodos. Ex:•Generalização de métodos. Ex:
raizQuadrada(float x)⇒ raiz (float x, int n)
18
Catálogo de Refatorações
•Existem algumas propostas de catálogos.
Ex:
▫Kerievsky's (2004)
▫Sven Gort e Philippe T’Seyen, Refactoring Thumbnails,
▫Alur et. al.,no livro “Core J2EE Patterns, 2001 (obs: p/
arquitetura JEE)
•Talvez o mais conhecido dos catálogos
seja o proposto por Fowler [2000]
19
http://www.martinfowler.com/
O que é Métrica?
Métrica é a medição de
um atributo
20
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
um atributo
(propriedades ou
características ) de uma
determinada entidade
(produto, processo ou
recursos).
• A abordagem tradicional para refatorar código é a leitura
do código em busca dos ‘maus cheiros’ (bad smell).
– Essa é uma abordagem que pode ser subjetiva e dependente de
Motivação: “Code Smell” e Refatoração
– Essa é uma abordagem que pode ser subjetiva e dependente de
um especialista (principalmente em grandes sistemas!).
– Para grandes sistemas é inviável.
21http://martinfowler.com/bliki/CodeSmell.html
• Abordagem baseada em Métricas de Software.
• As métricas de software podem medir inúmeras
características do software
Como podemos refatorar de forma objetiva?
características do software
– da qualidade do produto
– do processo de desenvolvimento do software.
• Em refatoração, o foco estará nas métricas de software
voltadas ao produto de software no que se refere ao
código.código.
22
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
• As métricas que interessam à refatoração estão
relacionadas aos atributos de software :
– Tamanho
Métricas de Software
– Tamanho
– Complexidade
– Acoplamento
– Coesão
• Em algum sentido, medir o grau de “Abstração” do software
• No caso da refatoração, esses atributos estarão• No caso da refatoração, esses atributos estarão
relacionados as seguintes elementos do código OO:
pacotes, classes e métodos.
23
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Há várias métricas que medem a qualidade interna.
Ex:
– Total de linhas de código (Lines of Code – LOC)
Métricas de software ( qualidade interna / código)
– Total de linhas de código (Lines of Code – LOC)
– Número de classes (NC – Number of Classes)
– Falta de coesão em métodos (LCOM)
– Depth of Inheritance Tree (DIT)
– Number of Overridden Methods (NORM)
– Number of Methods (NOM)
– Number of FieldsNumber of Fields
– Specialization Index
– McCabe Cyclomatic Complexity
– Weighted Methods per Class (WMC)
– Etc.
24
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
• LOC é a mais antiga e a mais simples das métricas de software.
• LOC mede o tamanho (em linhas) das classes e métodos.
• Normalmente não contabiliza as linha em branco.
Linhas de Código (LOC – Lines of Code)
LOC = 77 linhas
25Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
LOCm = 5LOCm = 5 comentários
• Métricas de complexidade indicam o quanto é complexo
é um código (do método, classe, pacote), em relação às
estruturas internas de comandos e como são
organizados.
Métricas de complexidade
organizados.
• Ex:
– Métricas simples para medir complexidade:
• Número de atributos (NF – Number of Fields)
• Número de métodos (NOM – Number of Methods)
• Número de Parâmetros (NP – Number of Parameters)
– Métricas mais usadas para complexidade:
• Profundidade de Blocos Aninhados (NBD – Nested Block Depth)
• Complexidade Ciclomática de McCabe (CC ou VG)
• Métodos Ponderados por Classe (WMC – Weighted Methods per Class)
26
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Métricas simples relacionadas à complexidade
NF = 5 campos
NP = 6 Parameters
27
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
NOM =7 métodos
• NBD representa o número máximo de blocos de código aninhados
(Nested Block Depth) em um determinado método.
– A métrica NBD mede a complexidade do método.
Profundidade de Blocos Aninhados
(NBD – Nested Block Depth)
28
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Complexidade Ciclomática (CC ou VG) de McCabe
Mede complexidade de código do método.
Normalmente, VG < 5 => complexidade menor
É calculada contando o número de laços e
condicionais existentes, somando-se 1 no final.
29
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
• WMC mede a complexidade individual de uma classe.
– A complexidade de uma classe é reflete o número de seus
métodos e suas complexidades.
Métodos Ponderados por Classe
(WMC – Weighted Methods per Class)
métodos e suas complexidades.
• WMC é geralmente calculado como a somatório das
complexidades dos métodos da classe.
– A métrica de complexidade dos métodos geralmente é medida
pela Complexidade Ciclomática (McCabe).
30
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Métricas de Acoplamento
Medem o acoplamento entre classes ou subsistemas, isto é, medem a ligação
ou dependência entre essas classes ou subsistemas (pacotes).
31
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Recomendação:
Classes com responsabilidades claras e um baixo acoplamento
• Acoplamento Eferente (EC- Efferent Coupling ou EC):
– número total de classes dentro de um pacote que dependem
de classes externas ao pacote.
Métricas de Acoplamento
de classes externas ao pacote.
• Acoplamento Aferente (AC - Afferent Coupling)
– número total de classes externas de um pacote que
dependem de classes de dentro desse pacote
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
32
Acoplamento Eferente (Ce – Efferent Coupling)
33
O acoplamento eferente do pacote = 2
- há duas classes dentro do pacote que dependem de classes fora do
pacote.
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Acoplamento Aferente (Ca – Afferent Coupling)
34
O acoplamento aferente do pacote é cinco,
pois existem 5 classes fora do pacote que dependem de classes dentro do pacote.
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Ex: CBO (Coupling Between Object Classes)
CBO mede o total de mensagens trocadas entre os objetos das
classes analisadas em um pacote/sistema.
Ex: CBO do pacote = 8, há 8 relacionamentos entre classes do pacote
e classes externas ao pacote.e classes externas ao pacote.
35
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
• Profundidade da Árvore de Herança
(DIT – Depth of Inheritance Tree)
• Número de Filhos (NoC – Number of Children)
Métricas de Herança
• Número de Filhos (NoC – Number of Children)
• Número de Métodos Redefinidos
(NORM –Number of Overridden Methods)
• Índice de Especialização (SI – Specialization Index)
36
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
• Essa métrica admite valores entre zero e um.
• Uma medida de abstração (A) próxima de zero (0) :
– indica que as entidades analisadas são bastante concretas e
Abstração (A – Abstractness)
– indica que as entidades analisadas são bastante concretas e
que o mecanismo de abstração foi pouco utilizado, o que
reduzirá a probabilidade de reúso da entidade.
• Quando a métrica se aproxima de um (1):
– O software é bastante abstrato o que evidencia a existência
de classes abstratas e interfaces (com poucasde classes abstratas e interfaces (com poucas
funcionalidades implementadas).
– Normalmente “frameworks” possuem A próximo de 1.
37
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
• A métrica Instabilidade (I) avalia entidades (pacotes,
p.ex) quanto a sua dependência perante outras
entidades, servindo de avaliação quanto ao impacto de
Instabilidade (I – Instability)
entidades, servindo de avaliação quanto ao impacto de
mudanças na entidade a ser medida.
• A métrica Instabilidade admite valores entre zero e um.
• A instabilidade é o resultado da divisão do acoplamento
eferente de um pacote pelo total de acoplamentos
(aferentes e eferentes) dele.(aferentes e eferentes) dele.
– De uma maneira bem simples, um pacote é instável se ele
depende de muitos outros pacotes. Dessa forma, pacotes
projetados para serem reusáveis devem ter baixa
instabilidade.
38
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
• A Distância (Distance from the Main Sequence - D)
relaciona a Abstração (A) e a Instabilidade (I), calculado
pela distância do ponto traçado entre A e I e a linha
Distância (Distance from the Main Sequence – D
ou Dn)
pela distância do ponto traçado entre A e I e a linha
(seqüência) principal (ideal) do balanceamento entre A e I.
• A Distância Normalizada da Sequência Principal
(Dn) varia entre 0 e 1
• Dn deve ser melhor para valores baixo, demonstrando um
balancemento entre a instabilidade e abstração.balancemento entre a instabilidade e abstração.
39
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Gráfico de Abstração vs. Instabilidade (para Dn)
Dn deve se manter próxima à
linha da sequência principal
11
Abstração
Dn
40
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
1Instabilidade
0
• Há muitas ferramentas disponíveis no mercado, tanto
comerciais quanto open-source, para coleta de
métricas de código (análise estática de código):
Ferramentas de medição
métricas de código (análise estática de código):
• Ex (software livre):
– FindBugs (http://findbugs.sourceforge.net/)
– PMD (http://pmd.sourceforge.net)
– Checkstyle (http://checkstyle.sourceforge.net/index.html)
– JDepend (http://clarkware.com/software/JDepend.html)– JDepend (http://clarkware.com/software/JDepend.html)
– Eclipse Metrics
– Simple Code Metrics (NetBeans)
41
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
• O sistema “Locadora de Vídeo”, usado no livro de Martin
Fowler, apresenta dificuldades na manutenção e evolução
para novos requisitos (gerar conta no formato HTML, p.ex).
Exemplo de Refatoraçao com Métricas:
Código da “Locadora de Vídeo”
para novos requisitos (gerar conta no formato HTML, p.ex).
• Desafio/Meta: Desenvolva um projeto de refatoração
prevendo melhorias no código quanto à redução da
complexidade e melhorias das abstrações presentes do
sistema.
FilmeLocaçãoCliente
42
códigoPreço: int
Filme
diasAlugados: int
LocaçãoCliente
conta()
1
**1
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Métricas obtidas para o sistema original
43
Método “conta()” com
VG= 8 (Complexidade
Ciclomátitica) alta
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Resultados após refatorações no projeto
44
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Análise e interpretação das métricas de pacote
Relacionadas ao pacote
•O sistema “Locadora de Vídeo” após as refatorações (Extração de
métodos, Método Fábrica, Polimorfismo, etc) apresenta melhoras
nas métricas:
•A (Abstração) e D (Distância da sequência principal) ,
refletindo os efeitos da criação de classes abstratas
45
refletindo os efeitos da criação de classes abstratas
(ClassificaçãoPreço) e interface (Alugável).
•O resultado da refatoração, como é de se esperar, fez aumentar a
métrica NCP (Número de classes) e LOC (linhas de código), porém
para um benefício a favor do reuso, manuteção e legibilidade da
aplicação.
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Análise e interpretação das métricas de classes
46
Melhorias na coesão (LCC- Loose
Class Cohesion) e acoplamento
(LCOM e TCC) das classes.
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Análise e interpretação das métricas de métodos
47
Melhoria na complexidade (VG) doMelhoria na complexidade (VG) do
método “conta”, cuja
responsabilidades foram movidas
para outros métodos de outras
classes (LOC diminui no método).
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
• Quando se avalia a qualidade do produto de software,
um dos atributos a ser considerado é a facilidade de
manutenção/evolução do software.
Considerações Finais
manutenção/evolução do software.
• Refatoração é uma das estratégia a ser adotada para
tratar e melhorar o projeto e a evolução do software.
• Para grandes sistemas de software, a refatoração
torna-se um desafio.
– Para isso, é importante adotar métricas e ferramentas que
ajudem o processo de refatoração.ajudem o processo de refatoração.
• Assim, garantindo a qualidade do projeto do software,
garante-se a viabilidade econômica e uso desse
software por um tempo maior no ciclo de vida.
48
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
Obrigado pela atenção!
@_ClaudioMartins
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
49
http://claudiomartins-prof.blogspot.com.br/
• Chidamber, S. R. & Kemerer, C. F. (1994). A Metrics Suite for
Object Oriented Design (IEEE Transactions on Software
Engineering, Vol. 20, No. 6).
Em: http://www.pitt.edu/~ckemerer/CK%20research%20papers/
Referências
Em: http://www.pitt.edu/~ckemerer/CK%20research%20papers/
MetricForOOD_ChidamberKemerer94.pdf
• FOWLER, Martin. Refactoring. Disponível em
<http://www.refactoring.com>.
• McCabe, T. J. 1976. A complexity measure. IEEE Trans. Software
Eng. 2, 4, 308–320.
• PRESSMANN, Roger S. (1995). Engenharia de Software. 3. ed.• PRESSMANN, Roger S. (1995). Engenharia de Software. 3. ed.
São Paulo: Makron Books.
• SOMMERVILLE, Ian (2003). Engenharia de Software. São Paulo:
Addison Wesley.
50
Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins

Más contenido relacionado

La actualidad más candente

Redes de-computadores-tipos-de-redes
Redes de-computadores-tipos-de-redesRedes de-computadores-tipos-de-redes
Redes de-computadores-tipos-de-redesLeonardo Bruno
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosRafael Albani
 
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Leinylson Fontinele
 
Endereçamento IP
Endereçamento IPEndereçamento IP
Endereçamento IPPjpilin
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosLeinylson Fontinele
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
Sistemas Multimídia - Aula 01 - Apresentação
Sistemas Multimídia - Aula 01 - ApresentaçãoSistemas Multimídia - Aula 01 - Apresentação
Sistemas Multimídia - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Tutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchTutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchDaniel Brandão
 
Bancode dados modelagem conceitual
Bancode dados modelagem conceitualBancode dados modelagem conceitual
Bancode dados modelagem conceitualMario Sergio
 
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Leinylson Fontinele
 
Aula 1: Conceitos de redes sem fio
Aula 1: Conceitos de redes sem fioAula 1: Conceitos de redes sem fio
Aula 1: Conceitos de redes sem fiocamila_seixas
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaLeinylson Fontinele
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitoselliando dias
 

La actualidad más candente (20)

Introducaoplds
IntroducaopldsIntroducaoplds
Introducaoplds
 
Tecnologias Atuais de Redes - Aula 4 - Comutação
Tecnologias Atuais de Redes - Aula 4 - ComutaçãoTecnologias Atuais de Redes - Aula 4 - Comutação
Tecnologias Atuais de Redes - Aula 4 - Comutação
 
Redes de-computadores-tipos-de-redes
Redes de-computadores-tipos-de-redesRedes de-computadores-tipos-de-redes
Redes de-computadores-tipos-de-redes
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de Dados
 
Infraestrutura de Redes
Infraestrutura de RedesInfraestrutura de Redes
Infraestrutura de Redes
 
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
 
Endereçamento IP
Endereçamento IPEndereçamento IP
Endereçamento IP
 
Redes 3 protocolos
Redes 3 protocolosRedes 3 protocolos
Redes 3 protocolos
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Sistemas Multimídia - Aula 01 - Apresentação
Sistemas Multimídia - Aula 01 - ApresentaçãoSistemas Multimídia - Aula 01 - Apresentação
Sistemas Multimídia - Aula 01 - Apresentação
 
Tutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchTutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL Workbench
 
Bancode dados modelagem conceitual
Bancode dados modelagem conceitualBancode dados modelagem conceitual
Bancode dados modelagem conceitual
 
Projeto de redes
Projeto de redesProjeto de redes
Projeto de redes
 
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
Banco de Dados II Aula Prática 1 (Conversão do modelo conceitual para modelo ...
 
Aula 1: Conceitos de redes sem fio
Aula 1: Conceitos de redes sem fioAula 1: Conceitos de redes sem fio
Aula 1: Conceitos de redes sem fio
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 
Banco De Dados
Banco De DadosBanco De Dados
Banco De Dados
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
 

Similar a Palestra TaSafo Conf-2015: Refatoração com Métricas

Gerenciamento PDS
Gerenciamento PDSGerenciamento PDS
Gerenciamento PDSFatec Jales
 
FEI - Modelagem de negocios - 2° semestre 2010
FEI - Modelagem de negocios - 2° semestre 2010FEI - Modelagem de negocios - 2° semestre 2010
FEI - Modelagem de negocios - 2° semestre 2010nathan85
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREErnesto Bedrikow
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01Franklin Matos Correia
 
1 Qss
1 Qss1 Qss
1 Qsslcbj
 
Microserviços - Desafios para lidar com a qualidade
Microserviços - Desafios para lidar com a qualidadeMicroserviços - Desafios para lidar com a qualidade
Microserviços - Desafios para lidar com a qualidadeAndré Abe Vicente
 
Gerenciamento da Qualidade
Gerenciamento da QualidadeGerenciamento da Qualidade
Gerenciamento da QualidadeMarcelo Yamaguti
 
Manutenção de Software
Manutenção de SoftwareManutenção de Software
Manutenção de SoftwareWagner Zaparoli
 
CV Jorge Ramos Ago 2014
CV Jorge Ramos Ago 2014CV Jorge Ramos Ago 2014
CV Jorge Ramos Ago 2014Jorge Ramos
 
Engenharia Reversa e Reengenharia Software
Engenharia Reversa e Reengenharia SoftwareEngenharia Reversa e Reengenharia Software
Engenharia Reversa e Reengenharia Softwareelliando dias
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
 
tdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdftdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdfDouglas Siviotti
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwareTiago Barros
 
Modelos e etapas do processo de software.pdf
Modelos e etapas do processo de software.pdfModelos e etapas do processo de software.pdf
Modelos e etapas do processo de software.pdfIvanFontainha
 

Similar a Palestra TaSafo Conf-2015: Refatoração com Métricas (20)

Gerenciamento PDS
Gerenciamento PDSGerenciamento PDS
Gerenciamento PDS
 
FEI - Modelagem de negocios - 2° semestre 2010
FEI - Modelagem de negocios - 2° semestre 2010FEI - Modelagem de negocios - 2° semestre 2010
FEI - Modelagem de negocios - 2° semestre 2010
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWARE
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01
 
1 Qss
1 Qss1 Qss
1 Qss
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Microserviços - Desafios para lidar com a qualidade
Microserviços - Desafios para lidar com a qualidadeMicroserviços - Desafios para lidar com a qualidade
Microserviços - Desafios para lidar com a qualidade
 
Gerenciamento da Qualidade
Gerenciamento da QualidadeGerenciamento da Qualidade
Gerenciamento da Qualidade
 
Manutenção de Software
Manutenção de SoftwareManutenção de Software
Manutenção de Software
 
Aula4
Aula4Aula4
Aula4
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
CV Jorge Ramos Ago 2014
CV Jorge Ramos Ago 2014CV Jorge Ramos Ago 2014
CV Jorge Ramos Ago 2014
 
Engenharia Reversa e Reengenharia Software
Engenharia Reversa e Reengenharia SoftwareEngenharia Reversa e Reengenharia Software
Engenharia Reversa e Reengenharia Software
 
Aula1 dia 22 02 2022.pdf
Aula1  dia 22 02 2022.pdfAula1  dia 22 02 2022.pdf
Aula1 dia 22 02 2022.pdf
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
 
tdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdftdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdf
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de Software
 
Modelos e etapas do processo de software.pdf
Modelos e etapas do processo de software.pdfModelos e etapas do processo de software.pdf
Modelos e etapas do processo de software.pdf
 
Aula 05
Aula 05Aula 05
Aula 05
 

Palestra TaSafo Conf-2015: Refatoração com Métricas

  • 2. Sobre o palestrante : Cláudio Martins Sou Mestre em Computação pela Universidade Federal do Rio Grande do Sul (UFRGS/2003), graduado em Tecnologia de PD (UFPA/1989), especialista em Análise e Projeto de Sistemas (UFPA/1998).Sistemas (UFPA/1998). Professor do Instituto Federal do Pará (IFPA), e analista de sistemas da Companhia de Informática de Belém (Cinbesa). Trabalho há mais de vinte anos com engenharia de software e sistemas de informação. 2Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins Lattes: http://lattes.cnpq.br/7014997829591968 LinkedIn: http://br.linkedin.com/in/claudiomartins2010 Facebook: https://www.facebook.com/claudiomartins2000 Blog: http://claudiomartins-prof.blogspot.com.br/
  • 3. • A palestra tem por objetivo apresentar as principais métricas de código orientado a objetos como suporte à tarefa de refatoração de código. Agenda à tarefa de refatoração de código. • A palestra é dividida em três partes: – Motivação – Refatoração – Métricas para Software Orientado a Objetos 3 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 4. Motivação:Motivação: Software, manutenção e qualidade 4 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 5. O que é Software? • Há pouco tempo, as pessoas não conseguiam perceber a existência ou importância do software.importância do software. – Hardware/Equipamento e software se confundiam em só um conceito. • Hoje, o software está presente e onipresente em vários meios e dispositivos. Software (definição) •Programas de computador (código, instruções), estruturas de dados e... •A documentação necessária para instalar, usar e tornar os programas compreensíveis para quem os mantêm. 5 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 6. Custo do Software • Ao longo do ciclo de vida, os custos em Desenvolvimento e Manutenção do Software: ▫ Desenvolvimento ................ 30 a 40 %▫ Desenvolvimento ................ 30 a 40 % ▫ Manutenção ........................ 60 a 70 % 6 Custos relativos ao Desenvolvimento do Software e Manutenção. Custos relativos a TIC, Desenvolvimento de Software e Manutenção de Software
  • 7. Sem Manutenção, tudo se desgasta,tudo se desgasta, deteriora. 7
  • 8. Ciclo de vida do hardware/equipamentos físicos 8 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 9. Ciclo de vida do Software 9 Diz respeito a uma das 8 Leis de Lehman: Complexidade crescente - Se não forem tomadas medidas para reduzir ou manter a complexidade de um software, conforme ele é alterado sua complexidade irá aumentar progressivamente. Deve haver um esforço para reduzir a complexidade final de um sistema enquanto este recebe alterações.Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 11. • É o processo de alterar a codificação do software sem alterar sua funcionalidade. – Ex: definição e nomes de dados e código do programa, melhorias e simplificações em instruções. Reestruturação de Código simplificações em instruções. • O propósito principal é tornar o programa mais fácil de ser compreendido. Fundamentos da Reengenharia 11 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 13. Refatoração • Refatoração (do inglês, Refactoring) é o processo de modificar um software para melhorar sua estrutura interna (do código) sem alterar seu comportamentointerna (do código) sem alterar seu comportamento externo. – Martin Fowler et al. (1999). • Refatoração busca tornar o software mais fácil de entender e mais barato de se modificar (evoluir). • O uso desta técnica evita a deterioração tão comum• O uso desta técnica evita a deterioração tão comum durante o ciclo de vida de um código. • Não se trata de otimização. – Refatorar ~ Refabricar ~ Reestruturar – É uma prática “ágil”! 13 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 14. Refatoração (Refactoring) de Software •A refatoração visa auxiliar o processo de desenvolvimento (programação) e evolução (manutenção) do software a partir de mecanismos de reestruturação de código (orientado a objetos). 14 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 15. “Mau cheiro” (Bad Smell) Problemas de qualidade de código 15 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 16. Exemplo prático de Refatoração •Considere a classe ‘C’, responsável por implementar funcionalidades em uma conta bancária: public class C { public double s; public void sacar(double valor){ this.s = s – valor; } public static void main(String args[]){ C c = new C();C c = new C(); c.s = 100; c.sacar(50); System.out.println(“Saldo:”+c.s); } } 16
  • 17. Exemplo prático de Refatoração: Renomear Classe Solução: Trocar o nome da classe public class Conta { public double s; public void sacar(double valor){ this.s = s – valor; } public static void main(String args[]){ Conta c = new Conta();Conta c = new Conta(); c.s = 100; c.sacar(50); System.out.println(“Saldo:”+c.s); } } 17
  • 18. Exemplos comuns de Refatoração •Mudança do nome de variáveis•Mudança do nome de variáveis •Mudanças nas interfaces dos objetos •Pequenas mudanças arquiteturais •Decompor grandes métodos em métodos menores •Encapsular código repetido em um novo método •Generalização de métodos. Ex:•Generalização de métodos. Ex: raizQuadrada(float x)⇒ raiz (float x, int n) 18
  • 19. Catálogo de Refatorações •Existem algumas propostas de catálogos. Ex: ▫Kerievsky's (2004) ▫Sven Gort e Philippe T’Seyen, Refactoring Thumbnails, ▫Alur et. al.,no livro “Core J2EE Patterns, 2001 (obs: p/ arquitetura JEE) •Talvez o mais conhecido dos catálogos seja o proposto por Fowler [2000] 19 http://www.martinfowler.com/
  • 20. O que é Métrica? Métrica é a medição de um atributo 20 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins um atributo (propriedades ou características ) de uma determinada entidade (produto, processo ou recursos).
  • 21. • A abordagem tradicional para refatorar código é a leitura do código em busca dos ‘maus cheiros’ (bad smell). – Essa é uma abordagem que pode ser subjetiva e dependente de Motivação: “Code Smell” e Refatoração – Essa é uma abordagem que pode ser subjetiva e dependente de um especialista (principalmente em grandes sistemas!). – Para grandes sistemas é inviável. 21http://martinfowler.com/bliki/CodeSmell.html
  • 22. • Abordagem baseada em Métricas de Software. • As métricas de software podem medir inúmeras características do software Como podemos refatorar de forma objetiva? características do software – da qualidade do produto – do processo de desenvolvimento do software. • Em refatoração, o foco estará nas métricas de software voltadas ao produto de software no que se refere ao código.código. 22 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 23. • As métricas que interessam à refatoração estão relacionadas aos atributos de software : – Tamanho Métricas de Software – Tamanho – Complexidade – Acoplamento – Coesão • Em algum sentido, medir o grau de “Abstração” do software • No caso da refatoração, esses atributos estarão• No caso da refatoração, esses atributos estarão relacionados as seguintes elementos do código OO: pacotes, classes e métodos. 23 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 24. Há várias métricas que medem a qualidade interna. Ex: – Total de linhas de código (Lines of Code – LOC) Métricas de software ( qualidade interna / código) – Total de linhas de código (Lines of Code – LOC) – Número de classes (NC – Number of Classes) – Falta de coesão em métodos (LCOM) – Depth of Inheritance Tree (DIT) – Number of Overridden Methods (NORM) – Number of Methods (NOM) – Number of FieldsNumber of Fields – Specialization Index – McCabe Cyclomatic Complexity – Weighted Methods per Class (WMC) – Etc. 24 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 25. • LOC é a mais antiga e a mais simples das métricas de software. • LOC mede o tamanho (em linhas) das classes e métodos. • Normalmente não contabiliza as linha em branco. Linhas de Código (LOC – Lines of Code) LOC = 77 linhas 25Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins LOCm = 5LOCm = 5 comentários
  • 26. • Métricas de complexidade indicam o quanto é complexo é um código (do método, classe, pacote), em relação às estruturas internas de comandos e como são organizados. Métricas de complexidade organizados. • Ex: – Métricas simples para medir complexidade: • Número de atributos (NF – Number of Fields) • Número de métodos (NOM – Number of Methods) • Número de Parâmetros (NP – Number of Parameters) – Métricas mais usadas para complexidade: • Profundidade de Blocos Aninhados (NBD – Nested Block Depth) • Complexidade Ciclomática de McCabe (CC ou VG) • Métodos Ponderados por Classe (WMC – Weighted Methods per Class) 26 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 27. Métricas simples relacionadas à complexidade NF = 5 campos NP = 6 Parameters 27 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins NOM =7 métodos
  • 28. • NBD representa o número máximo de blocos de código aninhados (Nested Block Depth) em um determinado método. – A métrica NBD mede a complexidade do método. Profundidade de Blocos Aninhados (NBD – Nested Block Depth) 28 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 29. Complexidade Ciclomática (CC ou VG) de McCabe Mede complexidade de código do método. Normalmente, VG < 5 => complexidade menor É calculada contando o número de laços e condicionais existentes, somando-se 1 no final. 29 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 30. • WMC mede a complexidade individual de uma classe. – A complexidade de uma classe é reflete o número de seus métodos e suas complexidades. Métodos Ponderados por Classe (WMC – Weighted Methods per Class) métodos e suas complexidades. • WMC é geralmente calculado como a somatório das complexidades dos métodos da classe. – A métrica de complexidade dos métodos geralmente é medida pela Complexidade Ciclomática (McCabe). 30 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 31. Métricas de Acoplamento Medem o acoplamento entre classes ou subsistemas, isto é, medem a ligação ou dependência entre essas classes ou subsistemas (pacotes). 31 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins Recomendação: Classes com responsabilidades claras e um baixo acoplamento
  • 32. • Acoplamento Eferente (EC- Efferent Coupling ou EC): – número total de classes dentro de um pacote que dependem de classes externas ao pacote. Métricas de Acoplamento de classes externas ao pacote. • Acoplamento Aferente (AC - Afferent Coupling) – número total de classes externas de um pacote que dependem de classes de dentro desse pacote Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins 32
  • 33. Acoplamento Eferente (Ce – Efferent Coupling) 33 O acoplamento eferente do pacote = 2 - há duas classes dentro do pacote que dependem de classes fora do pacote. Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 34. Acoplamento Aferente (Ca – Afferent Coupling) 34 O acoplamento aferente do pacote é cinco, pois existem 5 classes fora do pacote que dependem de classes dentro do pacote. Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 35. Ex: CBO (Coupling Between Object Classes) CBO mede o total de mensagens trocadas entre os objetos das classes analisadas em um pacote/sistema. Ex: CBO do pacote = 8, há 8 relacionamentos entre classes do pacote e classes externas ao pacote.e classes externas ao pacote. 35 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 36. • Profundidade da Árvore de Herança (DIT – Depth of Inheritance Tree) • Número de Filhos (NoC – Number of Children) Métricas de Herança • Número de Filhos (NoC – Number of Children) • Número de Métodos Redefinidos (NORM –Number of Overridden Methods) • Índice de Especialização (SI – Specialization Index) 36 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 37. • Essa métrica admite valores entre zero e um. • Uma medida de abstração (A) próxima de zero (0) : – indica que as entidades analisadas são bastante concretas e Abstração (A – Abstractness) – indica que as entidades analisadas são bastante concretas e que o mecanismo de abstração foi pouco utilizado, o que reduzirá a probabilidade de reúso da entidade. • Quando a métrica se aproxima de um (1): – O software é bastante abstrato o que evidencia a existência de classes abstratas e interfaces (com poucasde classes abstratas e interfaces (com poucas funcionalidades implementadas). – Normalmente “frameworks” possuem A próximo de 1. 37 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 38. • A métrica Instabilidade (I) avalia entidades (pacotes, p.ex) quanto a sua dependência perante outras entidades, servindo de avaliação quanto ao impacto de Instabilidade (I – Instability) entidades, servindo de avaliação quanto ao impacto de mudanças na entidade a ser medida. • A métrica Instabilidade admite valores entre zero e um. • A instabilidade é o resultado da divisão do acoplamento eferente de um pacote pelo total de acoplamentos (aferentes e eferentes) dele.(aferentes e eferentes) dele. – De uma maneira bem simples, um pacote é instável se ele depende de muitos outros pacotes. Dessa forma, pacotes projetados para serem reusáveis devem ter baixa instabilidade. 38 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 39. • A Distância (Distance from the Main Sequence - D) relaciona a Abstração (A) e a Instabilidade (I), calculado pela distância do ponto traçado entre A e I e a linha Distância (Distance from the Main Sequence – D ou Dn) pela distância do ponto traçado entre A e I e a linha (seqüência) principal (ideal) do balanceamento entre A e I. • A Distância Normalizada da Sequência Principal (Dn) varia entre 0 e 1 • Dn deve ser melhor para valores baixo, demonstrando um balancemento entre a instabilidade e abstração.balancemento entre a instabilidade e abstração. 39 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 40. Gráfico de Abstração vs. Instabilidade (para Dn) Dn deve se manter próxima à linha da sequência principal 11 Abstração Dn 40 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins 1Instabilidade 0
  • 41. • Há muitas ferramentas disponíveis no mercado, tanto comerciais quanto open-source, para coleta de métricas de código (análise estática de código): Ferramentas de medição métricas de código (análise estática de código): • Ex (software livre): – FindBugs (http://findbugs.sourceforge.net/) – PMD (http://pmd.sourceforge.net) – Checkstyle (http://checkstyle.sourceforge.net/index.html) – JDepend (http://clarkware.com/software/JDepend.html)– JDepend (http://clarkware.com/software/JDepend.html) – Eclipse Metrics – Simple Code Metrics (NetBeans) 41 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 42. • O sistema “Locadora de Vídeo”, usado no livro de Martin Fowler, apresenta dificuldades na manutenção e evolução para novos requisitos (gerar conta no formato HTML, p.ex). Exemplo de Refatoraçao com Métricas: Código da “Locadora de Vídeo” para novos requisitos (gerar conta no formato HTML, p.ex). • Desafio/Meta: Desenvolva um projeto de refatoração prevendo melhorias no código quanto à redução da complexidade e melhorias das abstrações presentes do sistema. FilmeLocaçãoCliente 42 códigoPreço: int Filme diasAlugados: int LocaçãoCliente conta() 1 **1 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 43. Métricas obtidas para o sistema original 43 Método “conta()” com VG= 8 (Complexidade Ciclomátitica) alta Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 44. Resultados após refatorações no projeto 44 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 45. Análise e interpretação das métricas de pacote Relacionadas ao pacote •O sistema “Locadora de Vídeo” após as refatorações (Extração de métodos, Método Fábrica, Polimorfismo, etc) apresenta melhoras nas métricas: •A (Abstração) e D (Distância da sequência principal) , refletindo os efeitos da criação de classes abstratas 45 refletindo os efeitos da criação de classes abstratas (ClassificaçãoPreço) e interface (Alugável). •O resultado da refatoração, como é de se esperar, fez aumentar a métrica NCP (Número de classes) e LOC (linhas de código), porém para um benefício a favor do reuso, manuteção e legibilidade da aplicação. Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 46. Análise e interpretação das métricas de classes 46 Melhorias na coesão (LCC- Loose Class Cohesion) e acoplamento (LCOM e TCC) das classes. Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 47. Análise e interpretação das métricas de métodos 47 Melhoria na complexidade (VG) doMelhoria na complexidade (VG) do método “conta”, cuja responsabilidades foram movidas para outros métodos de outras classes (LOC diminui no método). Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 48. • Quando se avalia a qualidade do produto de software, um dos atributos a ser considerado é a facilidade de manutenção/evolução do software. Considerações Finais manutenção/evolução do software. • Refatoração é uma das estratégia a ser adotada para tratar e melhorar o projeto e a evolução do software. • Para grandes sistemas de software, a refatoração torna-se um desafio. – Para isso, é importante adotar métricas e ferramentas que ajudem o processo de refatoração.ajudem o processo de refatoração. • Assim, garantindo a qualidade do projeto do software, garante-se a viabilidade econômica e uso desse software por um tempo maior no ciclo de vida. 48 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins
  • 49. Obrigado pela atenção! @_ClaudioMartins Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins 49 http://claudiomartins-prof.blogspot.com.br/
  • 50. • Chidamber, S. R. & Kemerer, C. F. (1994). A Metrics Suite for Object Oriented Design (IEEE Transactions on Software Engineering, Vol. 20, No. 6). Em: http://www.pitt.edu/~ckemerer/CK%20research%20papers/ Referências Em: http://www.pitt.edu/~ckemerer/CK%20research%20papers/ MetricForOOD_ChidamberKemerer94.pdf • FOWLER, Martin. Refactoring. Disponível em <http://www.refactoring.com>. • McCabe, T. J. 1976. A complexity measure. IEEE Trans. Software Eng. 2, 4, 308–320. • PRESSMANN, Roger S. (1995). Engenharia de Software. 3. ed.• PRESSMANN, Roger S. (1995). Engenharia de Software. 3. ed. São Paulo: Makron Books. • SOMMERVILLE, Ian (2003). Engenharia de Software. São Paulo: Addison Wesley. 50 Qualidade de software - Refatoraça e Métricas / Prof. Msc. Cláudio Martins