Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,830 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
  • Be the first to comment

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

×