Metrics  for   Agile Projects

Presented at  Agile NCR 2008 Conference (March 8, 08) by  Deepak Mittal

Speaker back­ground

9 years of experience with software development became agilist 2 years back when joined Xebia Certified Scrum Master recently founded IntelliGrape Systems  enjoy looking at and evaluating new and exciting  frameworks in java space

”If you can not measure it, you can not  improve it.” Lord Kelvin

”Measure and let it be known that you  are measuring.” ”Measurement drives behaviour.” ”You get what you measure”

IntelliGrape.Session Agenda ● What are Metrics / Diagnostics Why are Metrics so important for Agile Projects Various types of Metrics Metrics collection tools Demo at Metrics reports Recommendations / Thoughts ● ● ● ● ● .

IntelliGrape.Take Away from Session ✔ The importance of Metrics on Agile  Projects Various Metrics that can be collected  and analysed Tools used for Metrics collection ✔ ✔ .

com .Quick Poll ● How many people have used Metrics in their  projects : Agile or Non Agile?  One useful metric One useless metric ● ●   http://www.IntelliGrape.

 Code Quality .IntelliGrape. Velocity.Metrics Vs Diagnostics ● A metric measures something of direct value to the  business – e.g. Earned Business value per iteration ● A diagnositc measures something of our ability to  produce the thing of value – e.

IntelliGrape.Why do we Measure? ● to inform to compare / benchmark to motivate to improve to get CMM certification :) ● ● ● ● .

g. Kloc how do you improve? ● No Metrics at all – ● Using the right metrics http://www.3 Approaches to Metrics ● Using the wrong metrics – Improper metrics collection besides being  wasteful also skews team­behaviour in counter­ productive   . e. Code Review  Effectiveness.

Why Metrics are Important for  Agile Projects ● Because we are doing the same thing over and  over again – the same metrics are applicable  through­out the project.  Agile projects are all about early feedback which  helps you improve in the project and not only at the  end of the project Agile Principle : Plan­> Do ­> Inspect ­> Adapt  (Having metrics help you inspect objectively) ● ●   ● .IntelliGrape.

 you need good code coverage  and clearly defined package dependencies To be able to make frequent releases.IntelliGrape.Why Metrics are Important for  Agile Projects ● Agile projects embrace change – To incorporate changing requirements – you  need a healthy codebase Evolutionary design against big up­front design  To refactor – – –   . you need  continuous integration http://www.

com .IntelliGrape.Quick Re­cap ● Why do we measure Metrics / Diagnostics Why Metrics are needed on Agile Projects ● ●   http://www.

IntelliGrape.Metrics Classification ● Code  Design  Project  Automation Business Value  etc ● ● ● ● ● .

Code Metrics ● Cyclomatic complexity  Best practices violation  Coding standards violation  Possible bugs (empty try­catch) Code duplication  Unit Tests Quality  Dead Code (unused variables) ● ● ● ● ● ● .IntelliGrape.

Code Metrics Tools ● Checkstyle PMD Jester Findbugs Simian ● ● ● ● .IntelliGrape.

Design Metrics ● Distance from Main sequence – measures the  balance between abstractness and instability – – – – # of Abstract Classes & Interfaces # of Concrete Classes # of Incoming Dependencies (Affering Coupling) # of Outgoing Dependencies (Efferent Coupling)  ● Cyclic Dependencies .

com .IntelliGrape.Design Metrics Tools ● jDepend Eclipse CAP Plug­in ●   http://www.

IntelliGrape.Project Metrics ● Velocity  / Burn­down  Rework %  Open and Closed Issues Defects carried over to next iteration  User stories carried over to next iteration Obstacles carried over to next iteration ● ● ● ● ● .

com .IntelliGrape.Project Metrics Tools ● VersionOne ThoughtWorks Mingle ScrumWorks Atlassian JIRA MS Excel ● ● ● ●   http://www.

com   .Automation Metrics ● Test coverage  # of builds in a day  Time taken for the build  Total builds done / passed / failed  Trends  – – – ● ● ● ● Code coverage Checkstyle  PMD http://www.IntelliGrape.

com .Automation Metrics Tools ● Atlassian Clover Cobertura CruiseControl Maven Dashboard plug­in ● ● ●   http://www.IntelliGrape.

Business Value Metrics ● EBV – Earned Business Value  RTF – Running Tested Features Potential Value delivered  ● ● . .  Small stories with clearly defined completion  criteria: 100% done or 0% done : binary status ●   http://www.The ”real” Metric Earned Business Value ● Product owner assigns a relative weight to each  user story/feature.

IntelliGrape.Benefits of EBV metric ● No big­upfront design possible because of the  focus on business value You build the application in vertical slices than  horizontal layers You don't work on layers but features Customer sees the value immediately rather than  after months Easy to identify when the project hits the point of  diminishing returns ● ● ● ●   .

Business Value Metrics Tools ● MS Excel ThoughtWorks Mingle VersionOne ● ● .IntelliGrape. .Demo : Metrics of a real project Show Code. Design and Automation Metrics on Magnolia CMS   http://www. .Checkstyle   http://www.

Cobertura : Code coverage .

IntelliGrape.Copy Paste Detection .

FindBugs .

IntelliGrape.jDepend : Design Metrics .

com .PMD Reports   http://www.IntelliGrape.

com .CruiseControl Metrics   http://www.IntelliGrape.

IntelliGrape.Metrics Demo : Recap ● Maven dashboard report Good Builds / Bad builds Build break­down Checkstyle PMD Findbugs: Possible Bugs Code Duplication ● Cyclic dependencies Code coverage Distance from Main  Sequence Abstractness Cyclomatic Complexity ● ● ● ● ● ● ● ● ● ● ● .

 Velocity and Velocity .  etc from a past project   http://www.IntelliGrape.Demo : Burn­down chart Show  Burn­down Chart.

com .Sprint Burn down Chart   http://www.IntelliGrape.

Velocity .IntelliGrape.

IntelliGrape.Open and Closed Issues . .Release Burn­down Chart   http://www.

IntelliGrape.Demo of EBV Metric ● EBV Metrics Excel Sheet .

IntelliGrape.Benefits of Metrics Collection &  Analysis on my Projects ● Keeping a check on codebase health Estimation for future sprints Project planning Velocity Trends and Insights Tells us when to re­factor Code metrics used as the most important factor  when doing a big refactoring ● ● ● ● ●   ● .

Metrics Collection Tools List ● ScrumWorks FindBugs PMD Checkstyle Clover jDepend Jester ● Cobertura Code Analysis Plugin Maven Dashboard Simian ThoughtWorks Mingle VersionOne Atlassian JIRA ● ● ● ● ● ● ● ● ● ● ● ● .IntelliGrape.

com .IntelliGrape.Useless Metrics ● Kloc & Defects / Kloc  – – doesn't make sense promotes copy­pasting ● Time/Effort spent in various phases of the project   http://www. ● ● ●   .Recommendations ● Collect minimum number of metrics that will provide  all information necessary to meet business goals –  Measure ”just enough”. Look at Metrics in perspective Choose Metrics carefully ­ applying waterfall  metrics to agile projects can do more harm than  good Metrics collection should be as automated as  possible http://www. .References / Attribution ● Neal Ford's presentation on Agile Metrics David Nicolette's presentation on Agile Metrics Appropriate Agile Measurement Hemant Saraf : for excellent review & ideas ● ● ●   http://www.

com .Feedback   http://www.IntelliGrape.

License                This work is licensed under the Creative Commons Attribution­Noncommercial­Share Alike .0 License   http://www.

Sign up to vote on this title
UsefulNot useful