Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Applying Refactoring Tools in Practice

80 visualizaciones

Publicado el

Almost everything can be done using refactoring tools:
* How to get buy-in for refactoring? (use Technical Debt quantification tools)
* How to identify refactoring candidates? (use smell detection tools)
* How to prioritize / identify what to refactor first? (use reports from design analysis tools)
* How do I identify dependencies and evaluate impact of refactoring? (use visulization tools)
* How to I actually perform refactoring? (Use IDE support for automated refactoring and use them!)

Deriving from a rich experience in using tools for refactoring in real-world projects, this talk takes you through a whirl-wind tour of refactoring tools (of course for Java). What's more, this talk includes quick demos of some of these tools so you can see them in action.

Presented in BoJUG meetup on 19th Jan in Bangalore -

Publicado en: Software
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Applying Refactoring Tools in Practice

  1. 1. Ganesh Samarthyam (
  2. 2. 2 Technical debt “Technical debt is the debt that accrues when you knowingly or unknowingly make wrong or non-optimal design decisions” Reference: Refatoring for Software Design Smells– Girish et al Morgan Kaufman 2014
  3. 3. 3 Why care about technical debt? Reference: Zen and the art of software quality – Jim Highsmith Agile 2009 conference
  4. 4. 4 What constitutes technical debt? … Code debt Static analysis tool violations Inconsistent coding style Design debt Design smells Violations of design rules Test debt Lack of tests Inadequate test coverage Architecture debt Lacking structure (big ball of mud) Violation of Architecture Rules
  5. 5. 5 What is refactoring? Refactoring (noun): a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior Refactor (verb): to restructure software by applying a series of refactorings without changing its observable behavior
  6. 6. 6 How to improve design quality in practice?
  7. 7. 7 We need tool help
  8. 8. 8 Tools to explore Jhawk (Java) CodeCity (C++, Java, C#) CppDepend (C++) Sotograph (C++, Java, C#) Imagix 4D (C, C++, Java) Lattix (C/C++, Java, C#) SolidSX (C++, Java, C#) Bauhaus (C/C++, Java, C#) Structure101 (Java, C#) Understand (C/C++, Java, C#) Simian (C/C++, Java, C#, …) Jarchitect (Java) Ndepend (C#) Stan4J (Java) InFusion (C/C++, Java) InCode (C/C++, Java)
  9. 9. 9 Structural Analysis for Java (stan4j)
  10. 10. 10 JArchitect
  11. 11. 11 InFusion/InCode
  12. 12. 12 PMD CPD
  13. 13. 13 SotoArc
  14. 14. 14 Lattix DSM
  15. 15. 15 CodeCity
  16. 16. 16 JHawk
  17. 17. 17 SolidSx
  18. 18. 18 Structure 101
  19. 19. 19 Understand
  20. 20. 20 Imagix 4D
  21. 21. 21 Bauhaus
  22. 22. 22 Eclipse IDE
  23. 23. 23 Tool links • Structure101: • Jarchitect: • Designite: http://www.designite- • PMD CPD: • Stan4J: • IntelliJ IDEA: • Sotograph/SotoArc: • Lattix: • SolidSX: