Monday, November 29, 2010

5S for .NET

I just finished Implementing lean software development: From Concept to Cash. In chapter 8: Quality (page 192) We find the 5S’s for Java find below my interpretation for .NET.

  • Sort (Seiri): Reduce the size of the code base. Throw away everything that is not needed. Remove:
    1. Dead Code
    2. Unused using statements
    3. Unused references
    4. Unused variables
    5. Unused Methods
    6. Unused Classes
    7. Refactor redundant/duplicate code
    8. Delete code in comments
    9. Delete or fix Ignored Unit Tests
  • Systematize (Seiton): Organize projects and packages. Have a place for everything and everything in its place
    • Resolve package dependency cycles
    • Minimize dependencies
  • Shine (Seiso): Clean up. Problems are more visible when everything is neat and clean.
    • Resolve unit test failures (Pass rate should be 100%)
    • Improve unit test coverage (> 80%)
    • Improve Unit test performance
    • Check duration to run all tests
    • Resolve compiler warnings
    • Resolve TODO’s
    • Resolve FxCop Warnings
    • Refactor methods that are too long
    • Refactor methods where Cyclomatic Complexity > 10
  • Standardize (Seiketsu): Once you get a clean slate, keep it that way. Reduce complexity over time to improve ease of maintenance.
  • Sustain (Shitsuke): Use and follow standard procedures
    • Integrate FxCop in daily build
    • Fail Continuous integration build on unit test failure (Gated Check ins)

These criteria can easily be found using ndepend which is word its price in gold