Slide 1

Slide 1 text

Tushar Sharma Tracking Smells for Effective Maintainability Improvements

Slide 2

Slide 2 text

Tracking Smells for Effective Maintainability Improvements Software Evolution Technical Debt Code Smells

Slide 3

Slide 3 text

Tracking Smells for Effective Maintainability Improvements

Slide 4

Slide 4 text

Tracking Smells for Effective Maintainability Improvements

Slide 5

Slide 5 text

http://www.tusharma.in I am in job market …

Slide 6

Slide 6 text

• Continuing Growth • All in-use software systems will grow • Increasing Complexity • As a software system evolves, the complexity increases unless efforts are made to contain the complexity • Declining Quality • The quality of the software will decline unless it is rigorously maintained Lehman’s laws of software evolution

Slide 7

Slide 7 text

Evolution of JUnit 3.7 4.0 4.5 4.11

Slide 8

Slide 8 text

Which one is easy to work with?

Slide 9

Slide 9 text

Courtesy: CMU SEI

Slide 10

Slide 10 text

Technical Debt

Slide 11

Slide 11 text

Why care about Technical Debt?

Slide 12

Slide 12 text

What Technical Debt Constitutes

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

What is a smell? …certain structures in the code that suggest (sometimes they scream for) the possibility of refactoring. - Kent Beck 20 Definitions of smells: http://www.tusharma.in/smells/smellDefs.html

Slide 15

Slide 15 text

Types of smells • Code smells • Implementation smells • Architecture smells • Design smells • Test smells • Performance smells • Configuration smells • Database smells • Models smells • Usability smells • Web smells • …

Slide 16

Slide 16 text

Smells: Types http://www.tusharma.in/smells/

Slide 17

Slide 17 text

Granularity of code smells - Implementation - Design - Architecture

Slide 18

Slide 18 text

Implementation smells

Slide 19

Slide 19 text

Design Smells

Slide 20

Slide 20 text

Architecture Smells

Slide 21

Slide 21 text

Demo http://www.designite-tools.com

Slide 22

Slide 22 text

Designite is a software design quality assessment tool for C#. Key features • Detects 7 architecture smells • Detects 19 design smells • Detects 11 implementation smells • Computes various object-oriented code metrics • Provides smell trend analysis of Git repositories • Many visualization aids including smell treemap, and smell sunburst • Detects code duplication • Allows customization of analysis • Smart tracking of detected smells http://www.designite-tools.com Academic license is free!

Slide 23

Slide 23 text

Detection is only the first step towards maintainability improvement.

Slide 24

Slide 24 text

Life-cycle of a Smell

Slide 25

Slide 25 text

Detecting smells is not enough; track smells for better maintainability!!

Slide 26

Slide 26 text

Let’s see it in practice

Slide 27

Slide 27 text

Let us conclude

Slide 28

Slide 28 text

A Hack

Slide 29

Slide 29 text

T E C H N II C A L D E B T Structure in code that suggest the possibility of refactoring I A E

Slide 30

Slide 30 text

T E C H N II C A L D E B T A tool to detect smells I A S M E L L S

Slide 31

Slide 31 text

T E C H N II C A L D E B T ____ is required for effective maintainability improvements D E S I G N I T E A S M E L L S

Slide 32

Slide 32 text

T E C H N II C A L D E B T D E S I G N I T E T R A C K I N G S M E L L S

Slide 33

Slide 33 text

Tushar Sharma [email protected] http://www.tusharma.in Thank you!! Courtesy: spikedmath.com