TDC 2012 - Métricas de código na arquitetura

2,665 views

Published on

Através das métricas de código podemos conhecer a complexidade, tamanho, quantidade de métodos, nível de coesão, grau de acoplamento entre classes, dentre inúmeras outras possibilidades. Esta apresentação demonstrou a utilidade das métricas de software para arquitetos.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,665
On SlideShare
0
From Embeds
0
Number of Embeds
910
Actions
Shares
0
Downloads
55
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • Sendo o arquiteto de software (tanto no exercício de um cargo ou papel) o indivíduo responsável pela estrutura e design de um produto e também o canal de comunicação entre time de desenvolvimento e arquiteto corporativo (cargo ou papel), podemos aferir que:As medições e as métricas ajudam a entender o processo técnico usado para desenvolver um produto. O processo é medido num esforço para melhorá-lo, assim como o produto é medido num esforço para aumentar sua qualidade. Também são necessárias para analisar a qualidade e a produtividade do processo de desenvolvimento; bem como a manutenção do produto de software construído.
  • Medida: Fornece uma indicação quantitativa da extensão, quantidade, dimensão, capacidade ou tamanho de algum atributo de um produto ou processo. Medida é uma função de mapeamento;Medição: Ato de determinação de uma medida;Métrica: Medida quantitativa do grau em que um sistema se encontra em relação a um determinado atributo;Indicadores: Métrica ou combinação de métricas que fornece uma compreensão de um processo/projeto/produto.
  • Uma métrica deve ser válida, o que significa que ela deve quantificar o que queremos medir. Ela também precisa ser confiável, produzindo os mesmos resultados dadas as mesmas condições. Por fim, métricas precisam ser produzidas facilmente, ou seja, devem ser baratas.
  • É importante deixar claro que as métricas de código não estão relacionadas apenas com o software em si, mas também com os processos de desenvolvimento e manutenção. Consegue-se, a partir das métricas, dados quantitativos que oferecem uma boa informação sobre o andamento da construção sendo possível estimar custos, avaliar tendências, melhorar o design, ou até mesmo ter noção sobre a qualidade do sistema produzido.
  • A genial figura abaixo, criada por ThomHolwerda, apresenta a medida WTFs/minute (algo como“Que_Porra_é_Essa / minuto”) como um indicador da qualidade de um software.
  • LOC: Lines of CodeLOCM: Lack of cohesion of methods (falta de coesão dos métodos)NOC: Number of ChildrenILCC: IL cyclomatic complexityABC: Association between methodsDIT: Depth of Inheritance Tree
  • Abstração da JDK
  • Chamamos de "código morto" qualquer linha ou trecho de código não acessível por nenhum caminho de execução de um programa. Por ser (quase sempre) desnecessário, deadcode eleva a complexidade de um software - em suma, faz o código feder.Note que deadcode pode ser:- um código (por exemplo, um método, um membro de classe ou uma classe) não utilizado(a) por nenhum outro(a);- um código redundante (implorando por refactoring);- um código inacessível (o famoso unreachablecode, às vezes de difícil detecção).Porém, nem sempre um código inacessível é um deadcode. Ele pode simplesmente ter sido "morto" por um IF mal codificado.
  • .
  • .
  • Chamamos de "código morto" qualquer linha ou trecho de código não acessível por nenhum caminho de execução de um programa. Por ser (quase sempre) desnecessário, deadcode eleva a complexidade de um software - em suma, faz o código feder.Note que deadcode pode ser:- um código (por exemplo, um método, um membro de classe ou uma classe) não utilizado(a) por nenhum outro(a);- um código redundante (implorando por refactoring);- um código inacessível (o famoso unreachablecode, às vezes de difícil detecção).Porém, nem sempre um código inacessível é um deadcode. Ele pode simplesmente ter sido "morto" por um IF mal codificado.
  • TDC 2012 - Métricas de código na arquitetura

    1. 1. Trilha – Arquitetura Leandro Daniel Systems Architect Globalcode – Open4education
    2. 2. Globalcode – Open4education
    3. 3. Sob a óptica da arquitetura de software:MÉTRICAS DE CÓDIGO Globalcode – Open4education
    4. 4. O que veremos? O que são Conhecendo Usando métricas métricas de algumas de código código? métricas Métricas Queryable Indicadores de guiando o source code qualidade design Case: relação Algumas entre ferramentas métricas, design e testes Globalcode – Open4education
    5. 5. Não seria muito útil usar ummonóculo aqui, certo? Globalcode – Open4education
    6. 6. O que esse código diz? Globalcode – Open4education
    7. 7. O que (todo) esse código diz? Globalcode – Open4education
    8. 8. Sim, a entropia emsoftware existe ... Manter as coisas como estão, exige trabalho! Globalcode – Open4education
    9. 9. Globalcode – Open4education
    10. 10. As medições e as métricas ajudam a entender o processotécnico usado para desenvolver um produto. Globalcode – Open4education
    11. 11. Termos comuns Medida (indicação quantitativa) Medição (ato de medir) Métrica (medida quantitativa) Indicador (combinação) Globalcode – Open4education
    12. 12. Uma métrica precisa ser válida, confiável e barata. Globalcode – Open4education
    13. 13. Potencial das métricas (1 de 2) Analisar Medidas qualidade e Qualificar a funcionais sãoprodutividade do Utilizadas para performance necessárias processo de comparar a técnica dos para qualificar adesenvolvimento produtividade e manutenção produtos do performance de diferentes bem como do ponto de vista dos produtos técnicas e produto de do pela tecnologias software desenvolvedor perspectiva do construído usuário Globalcode – Open4education
    14. 14. Potencial das métricas (2 de 2) No nível técnico, as medições são importantes Embasar Reduzir Formar uma para determinar solicitações defrustrações e linha básica parâmetros novas pressões de para como ferramentas e cronograma estimativas quantidade de treinamentos teste necessário e impacto de mudanças Globalcode – Open4education
    15. 15. GlobalcodeThom Holwerda by – Open4education
    16. 16. Globalcode – Open4education
    17. 17. Métricas e indicadores Vamos começar do básico! :) Globalcode – Open4education
    18. 18. Ca e Ce Globalcode – Open4education
    19. 19. Cyclomatic Complexity Globalcode – Open4education
    20. 20. Calculando CC (Complexidade Ciclomática) Em linguagens como C#, as seguintes expressões são desconsideradas para cálculo da CC: else | do | switch | try | using | throw | finally | return | object creation | method call | field access Globalcode – Open4education
    21. 21. Grafo de acoplamento Globalcode – Open4education
    22. 22. Grafo de acoplamento Globalcode – Open4education
    23. 23. Grafo de acoplamento Globalcode – Open4education
    24. 24. Grafo de acoplamento Globalcode – Open4education
    25. 25. Acredite, todos falam emredução de acoplamento! Shotgun Surgery Feature CQS Envy Tell, D ont Ask Say It Law of Once Demeter and Only Once IoC DI Globalcode – Open4education
    26. 26. Um código... Globalcode – Open4education
    27. 27. Uma abstração! Assembly Classe Método Globalcode – Open4education
    28. 28. Globalcode – Open4education
    29. 29. Globalcode – Open4education
    30. 30. Uma matriz diz muita coisa! Classes mutuamente dependentes? Alto acoplamento? Quebrando princípíos? Globalcode – Open4education
    31. 31. Uma abstração da JDK (by CodeCity) Globalcode – Open4education
    32. 32. Visual Studio com NDepend Globalcode – Open4education
    33. 33. Queryable source code SELECT Dead code! [method name] FROM [my entire solution] WHERE MethodCa == 0 AND !MethodIsPublic AND !MethodIsProtected AND !MethodIsEntryPoint AND !MethodIsExplicitInterfaceImplementation AND !MethodIsClassConstructor AND !MethodIsFinalizer Globalcode – Open4education
    34. 34. Relação entre testes, design e métricas (gist)https://gist.github.com/2149474 Globalcode – Open4education
    35. 35. Classe antes do refactoring Globalcode – Open4education
    36. 36. Depois do refactoring Globalcode – Open4education
    37. 37. Resultado do refactoring(antes x depois) Depois Antes Globalcode – Open4education
    38. 38. Questões levantadas Se CC = N, então N Qual a é o número mínimo relação entre de testes necessário. Testes x CC? Testar métodos com Existem outros pontos que CC=1 pode ser inútil. aumentam a complexidade ciclomática sem ela aparecer nas métricas. Um Math.Max, é um exemplo. Globalcode – Open4education
    39. 39. Questões levantadas Qual a relação entre Cobertura de testes x CC? Batalha! Membros públicos Vs privados!! Em uma classe coesa, os métodos privados no fundo servem pra diminuir a CC e aumentar a legibilidade dos métodos públicos. Globalcode – Open4education
    40. 40. Questões levantadas Qual a relação entre Métricas x Design? Globalcode – Open4education
    41. 41. Referências Relação entre métricas, design e testes (Github) https://gist.github.com/2149474 Emergent design through metrics (by Neal Ford) http://goo.gl/tdyVO Série de posts sobre Code Metrics http://leandrodaniel.com/?tag=/Code+Metrics Globalcode – Open4education
    42. 42. Ferramentas Lista de ferramentas para análise de código estático http://goo.gl/KjLq FluentCodeMetrics (by Elemar Jr) http://goo.gl/CvnAW NDepend http://ndepend.com JArchitect http://jarchitect.com Globalcode – Open4education
    43. 43. Globalcode – Open4education

    ×