SlideShare a Scribd company logo
An Overview of
.NET Best Practices


      Stephen D. Ritchie

      12 Nov 2012
Live Tweet, Tonight’s Slides and Examples




• Twitter:      @RuthlesssHelp
                @Apress

• Slideshare: http://www.slideshare.net/ruthlesshelp

• Github:       http://github.com/ruthlesshelp




                             Excella Consulting
Overall – Challenges




 Continuous Integration
            No CI Server
            No Code Analysis
            Not Triggered by SCM
                       Excella Consulting   -3-
Overall – Challenges




 Code Reviews
            Not Conducted
            Issues Not Tracked
            Issues Dropped
                       Excella Consulting   -4-
Current – Challenges




 Automated Builds and
 Deployments
            Manual Deployment
            No Automated Testing
            No Code Analysis
                       Excella Consulting   -5-
Current – Challenges




 Automated Unit Testing
            Low Code Coverage
            No Mocking Framework
            Failing or Ignored Tests
                       Excella Consulting   -6-
Opportunities




 Best Practices Matrix
     Complexity                      Value
     Risk
     Cost

                Excella Consulting           -7-
Minimal, Essential




 Source Control




                     Excella Consulting   -8-
TFS



Excella Consulting         -9-
SVN



Excella Consulting         - 10 -
Mercurial



Excella Consulting   - 11 -
Git



Excella Consulting         - 12 -
Level Metaphor




                 Excella Consulting   - 13 -
Go to Green
  1         2               3

  4         5               6

  7         8               9
       Excella Consulting       - 14 -
Level 1 – Goals




 Build Script




                  Excella Consulting   - 15 -
Level 1 – Starting Point




 Manual Builds




                           Excella Consulting   - 16 -
MSBuild



Excella Consulting   - 17 -
NAnt



Excella Consulting          - 18 -
PowerShell



Excella Consulting   - 19 -
Extensions



Excella Consulting   - 20 -
Level 1 – Example




 Example Build
 Script



                    Excella Consulting   - 21 -
Level 1 – Result




Build Script
One Script,
Builds Everything
“Run the Runner”
                   Excella Consulting   - 22 -
Go to Green
  1         2               3

  4         5               6

  7         8               9
       Excella Consulting       - 23 -
Level 2 – Goals




 Continuous
 Integration



                  Excella Consulting   - 24 -
Level 2 – Starting Point




 No CI Server




                           Excella Consulting   - 25 -
Level 2 – To Do




 Install CI Server
       Triggered by Code Push
       “Run the Runner”

                  Excella Consulting   - 26 -
TFS



Excella Consulting         - 27 -
CC.NET



Excella Consulting   - 28 -
Jenkins



Excella Consulting     - 29 -
TeamCity



Excella Consulting   - 30 -
Level 2 – Example




 CI Server
 Example



                    Excella Consulting   - 31 -
Level 2 – Result




 Observe & Report




                   Excella Consulting   - 32 -
Go to Green
  1         2               3

  4         5               6

  7         8               9
       Excella Consulting       - 33 -
Level 3 – Goals




 Code Analysis




                  Excella Consulting   - 34 -
Level 3 – Starting Point




 No Code Analysis




                           Excella Consulting   - 35 -
Level 3 – To Do




 Analysis Tool
       Static Code Analysis
       Run with CI Server

                  Excella Consulting   - 36 -
FxCop



Excella Consulting           - 37 -
Gendarme



Excella Consulting   - 38 -
StyleCop



Excella Consulting   - 39 -
NDepend



Excella Consulting   - 40 -
Simian



Excella Consulting       - 41 -
Sonar



Excella Consulting           - 42 -
Level 3 – Example




 Analysis Tool
 Example

                       FxCop 10

                    Excella Consulting   - 43 -
Level 3 – Result




 Analyze,
 Improve,
 Monitor


                   Excella Consulting   - 44 -
Go to Green
  1         2               3

  4         5               6

  7         8               9
       Excella Consulting       - 45 -
Level 4 – Goals




 Automate Testing




                  Excella Consulting   - 46 -
Level 4 – Starting Point




 No Tests




                           Excella Consulting   - 47 -
Level 4 – To Do




 Testing Framework
       Run with Runner
       Run with CI Server

                  Excella Consulting   - 48 -
MSTest



Excella Consulting    - 49 -
MBUnit



Excella Consulting     - 50 -
xUnit.net



Excella Consulting   - 51 -
NUnit



Excella Consulting           - 52 -
Level 4 – To Do




 Mocking Framework
       Isolation
       Interaction Testing

                   Excella Consulting   - 53 -
Rhino Mocks



  Excella Consulting   - 54 -
Moq



Excella Consulting         - 55 -
Level 4 – Example




 Automate Testing
 Example



                    Excella Consulting   - 56 -
Level 4 – Results




 Passing
 Tests



                    Excella Consulting   - 57 -
Go to Green
  1         2               3

  4         5               6

  7         8               9
       Excella Consulting       - 58 -
Level 5 – Goals




 Code Coverage
            + More Tests
            + More Code Analysis


                  Excella Consulting   - 59 -
Level 5 – To Do




 Coverage Tool
       Run in Visual Studio
       Run with CI Server

                  Excella Consulting   - 60 -
NCover



Excella Consulting    - 61 -
OpenCover



Excella Consulting   - 62 -
dotCover



Excella Consulting   - 63 -
Level 5 – Example




 Code Coverage
 Example



                    Excella Consulting   - 64 -
Level 5 – Results




 100% Class Coverage

            + More Code Analysis



                    Excella Consulting   - 65 -
Go to Green
  1         2               3

  4         5               6

  7         8               9
       Excella Consulting       - 66 -
Level 6 – Goals




 Code Review
            + More Tests
            + More Code Analysis


                  Excella Consulting   - 67 -
Level 6 – To Do




 Pick Approach
       Share Opinions
       Track Issues

                  Excella Consulting   - 68 -
Pairing



Excella Consulting        - 69 -
Group



Excella Consulting           - 70 -
Peer



Excella Consulting          - 71 -
Level 6 – Example




 Code Review
 Example

                                         Peer

                    Excella Consulting          - 72 -
Level 6 – Results




 Reviewed Code
            100% Method Coverage
            + More Code Analysis


                    Excella Consulting   - 73 -
Go to Green
  1         2               3

  4         5               6

  7         8               9
       Excella Consulting       - 74 -
Level 7 – Goals




 Packaging
            + More Tests
            + More Coverage
            + More Code Analysis

                  Excella Consulting   - 75 -
MSI



Excella Consulting         - 76 -
Web Deploy



 Excella Consulting   - 77 -
Octopus



Excella Consulting   - 78 -
Zip Archive



 Excella Consulting   - 79 -
Level 7 – Example




 Packaging Example

                                         Zip


                    Excella Consulting         - 80 -
Level 7 – Results




 Packaged Deliverable
            Code Reviews
            40% Line Coverage
            + More Code Analysis
                    Excella Consulting   - 81 -
Go to Green
  1         2               3

  4         5               6

  7         8               9
       Excella Consulting       - 82 -
Level 8 – Goals




 Automated
 Deployments
            + More Tests
            + More Line Coverage
            + More Code Analysis
                  Excella Consulting   - 83 -
Script



Excella Consulting            - 84 -
Level 8 – Example




 Automated
 Deployment Example

                       MSBuild

                    Excella Consulting   - 85 -
Level 8 – Results




 Automated
 Deployments
            + Code Reviews
            + 60% Line Coverage
            + More Code Analysis
                    Excella Consulting   - 86 -
Go to Green
  1         2               3

  4         5               6

  7         8               9
       Excella Consulting       - 87 -
Level 9 – Goals




 Full Code Coverage

            + More Tests
            + More Coverage
            + More Code Analysis
                  Excella Consulting   - 88 -
Testing



Excella Consulting     - 89 -
Level 9 – Example




 Full Code Coverage
 Example



                    Excella Consulting   - 90 -
Level 9 – Results




 > 80% Line Coverage
            + Code Reviews
            Automated Deployments
            + More Code Analysis
                    Excella Consulting   - 91 -
Go to Green
  1         2               3

  4         5               6

  7         8               9
       Excella Consulting       - 92 -
Overall – Results




 Continuous Integration
            CI Server
            Code Analysis
            Triggered by SCM
                    Excella Consulting   - 93 -
Overall – Results




 Code Reviews
            Conducted Regularly
            Issues Tracked
            Issues Resolved
                    Excella Consulting   - 94 -
Overall – Results




 Automated Builds and
 Deployments
            Automated Deployment
            Automated Testing
            Code Analysis
                    Excella Consulting   - 95 -
Overall – Results




 Automated Unit Testing
            Code Coverage: > 80%
            Mocking Framework
            Passing Tests: Priority
                    Excella Consulting   - 96 -
Follow On – Goals




 Retrospectives
Presentations


                    Excella Consulting   - 97 -
Further Discussion




            Any questions?

           Any comments?


                     Excella Consulting
Shameless Self Promotion Time!




                            40% off eBook at
                            apress.com

                            Use promo code:
                            PR0N3T

                            Offer ends 15-Dec-2012




                            Excella Consulting
Contact Me




• Twitter:    @ruthlesshelp

• Email:      stephen.ritchie@excella.com

• Blog:       http://ruthlesslyhelpful.net

• LinkedIn:   http://www.linkedin.com/in/sritchie




                           Excella Consulting
Slides and Examples




• Slideshare: http://www.slideshare.net/ruthlesshelp

• Github:      http://github.com/ruthlesshelp




                           Excella Consulting

More Related Content

PDF
How to Prepare for the OCPJP 8 Exam?
PDF
Agile2014 Report: As a Speaker and a Reporter of the latest Agile in the world
PPTX
DevOps Requires Agility
PPTX
Continuous Integration - NoVA CodeCamp 2014-10-11
PPTX
Agile Engineering Sparker GLASScon 2015
PPTX
Overview of .NET Best Practices
PPTX
Lightweight Documentation
PPTX
Lightweight Documentation: An Agile Approach
How to Prepare for the OCPJP 8 Exam?
Agile2014 Report: As a Speaker and a Reporter of the latest Agile in the world
DevOps Requires Agility
Continuous Integration - NoVA CodeCamp 2014-10-11
Agile Engineering Sparker GLASScon 2015
Overview of .NET Best Practices
Lightweight Documentation
Lightweight Documentation: An Agile Approach

Similar to An Overview of .NET Best Practices (20)

PPTX
Agile Testing Best Practices
PPTX
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
PPT
The Magic Of Application Lifecycle Management In Vs Public
PDF
Building a Giant Atlassian Universe to Take Over the World
PPTX
Automated Testing: Obstacles, Pitfalls, and Dangers
PPTX
Quality Coding: What's New with Visual Studio 2012
PPTX
Quality Coding: What’s New with Visual Studio 2012
PPTX
PHX Session #1: Development Best Practices And How Microsoft Helps
PPTX
Integreation
PPTX
Quality Coding with Visual Studio 2012
PPS
Software Development in the Brave New world
PPS
3685807
PPTX
Team Foundation Server 2012 Reporting
PDF
Integrating agile in a waterfall world pmi 2012, full slides
PPTX
SDLC Smashup
PPTX
Chapter 11 Managing Systems Implementation .pptx
PDF
Agile By The Numbers - Scott Ambler
PPTX
It's XP Stupid (2019)
PDF
Managing Hard Times With Quality & Project Management
PDF
Why Most IT Projects Fail
Agile Testing Best Practices
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
The Magic Of Application Lifecycle Management In Vs Public
Building a Giant Atlassian Universe to Take Over the World
Automated Testing: Obstacles, Pitfalls, and Dangers
Quality Coding: What's New with Visual Studio 2012
Quality Coding: What’s New with Visual Studio 2012
PHX Session #1: Development Best Practices And How Microsoft Helps
Integreation
Quality Coding with Visual Studio 2012
Software Development in the Brave New world
3685807
Team Foundation Server 2012 Reporting
Integrating agile in a waterfall world pmi 2012, full slides
SDLC Smashup
Chapter 11 Managing Systems Implementation .pptx
Agile By The Numbers - Scott Ambler
It's XP Stupid (2019)
Managing Hard Times With Quality & Project Management
Why Most IT Projects Fail
Ad

More from Stephen Ritchie (10)

PPTX
Continuous Integration: Blueprint, Toolbox, Master Craft
PDF
Dc scrum agile_eng_20130923
PPTX
Test Driven Development: Blueprint, Toolbox, and Master Craft
PPTX
Continuous Integration: Blueprint, Toolbox, Master Craft
PPTX
Continuous Integration DCAEC12
PPTX
An Overview of .NET Best Practices
PPTX
Advanced Code Analysis with .NET
PPTX
Overcoming the Obstacles, Pitfalls, and Dangers of Unit Testing
PPTX
Advanced Code Analysis In .NET
PPTX
Automated Testing with Databases
Continuous Integration: Blueprint, Toolbox, Master Craft
Dc scrum agile_eng_20130923
Test Driven Development: Blueprint, Toolbox, and Master Craft
Continuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration DCAEC12
An Overview of .NET Best Practices
Advanced Code Analysis with .NET
Overcoming the Obstacles, Pitfalls, and Dangers of Unit Testing
Advanced Code Analysis In .NET
Automated Testing with Databases
Ad

Recently uploaded (20)

PDF
cuic standard and advanced reporting.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Encapsulation theory and applications.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Cloud computing and distributed systems.
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
KodekX | Application Modernization Development
cuic standard and advanced reporting.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Understanding_Digital_Forensics_Presentation.pptx
Encapsulation_ Review paper, used for researhc scholars
Encapsulation theory and applications.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
20250228 LYD VKU AI Blended-Learning.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Digital-Transformation-Roadmap-for-Companies.pptx
Electronic commerce courselecture one. Pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
sap open course for s4hana steps from ECC to s4
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Cloud computing and distributed systems.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
MYSQL Presentation for SQL database connectivity
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
KodekX | Application Modernization Development

An Overview of .NET Best Practices

Editor's Notes

  • #16: Week 1Build ScriptWrite a build script using a common build scripting tool.Rebuild AllThe entire project solutionSoup-to-nuts rebuildOne command file calls one script
  • #17: Manual BuildsVisual Studio is NOT a Build ToolDanger ZoneInconsistencyHero Worship
  • #18: Helpful ChangeWrite a Build ScriptConventional Scripting ToolMSBuildConventionalPart of .NETUsed by Visual Studio and TFSWidely used, lots of examplesPart of .NET Fundamentals
  • #19: Conventional Scripting ToolNAntFree and open-sourcePopular with .NET developersWidely used, lots of examplesBased on the Java build tool, AntObsolete
  • #20: Conventional Scripting ToolPowerShell – the Microsoft shell toolpsake – a PowerShell based build systemSupports scriptingCan automate many administrative tasks on Windows Server and most Microsoft server applicationsPart of Windows Fundamentals
  • #21: Task LibrariesMSBuild Extension PackMSBuild Community TasksAutomate, Automate, AutomateAssembly InfoXML Peek & Poke, Transform ConfigCopy Files, Zip, PackageDocumentation
  • #23: One Script, Builds EverythingCompletelyConsistentlyrunner.msbuildrunner.batVirtuous DisciplineRunner Runs Every Build StepAlways “Run the Runner”Avoid Integration HellPullRebuildCodeRebuildPush
  • #25: Week 2Continuous Integration ServerSelect oneInstall itRun Build ScriptRebuild PhaseSoup-to-Nuts
  • #26: No CI ServerDevelopers Push CodeFire and ForgetSCM RepositoryHolds Code RevisionsUnknown ConditionDanger ZoneDeferring the BuildIntegration HellLurking Quality Issues
  • #27: Install CI ServerSCM TriggerRun runner.msbuild
  • #28: CommercialMicrosoft’s Team Foundation Server
  • #29: Free, Open SourceCruise Control .NET
  • #30: Free, Open SourceJenkins
  • #31: CommercialJetBrainsTeamCity
  • #33: ObserveCode PushBuild SuccessReportBuild HistoryVisibilityBuild FeedbackImprove Personal ProcessStakeholder Visibility
  • #35: Week 3Code AnalysisRun code analysis tool against the codebaseUnderstand the InspectionsFocus on the Minimum, RecommendedFind One Rule That’s Being ViolatedDecide that on one that’s worth fixingOne that’s worth monitoringFix Every Violation of That One InspectionBuild ScriptCode analysis running from within the build scriptRunning from within the CI serverBuild breaks if that one inspection rule is violated
  • #36: No Code AnalysisDanger ZoneCritical Errors: these probably exist in the code, but you don’t know whereBad Practices: you could be following a bad coding practicesCode Smells: you could be following new and better coding practices
  • #37: Identify an Analysis ToolStatic Code AnalysisRun the Analysis Tool within the CI Server
  • #38: FxCop.NET Framework Guidelines
  • #39: GendarmeFinds Common Problems
  • #40: StyleCopHelps Enforce Coding Standards
  • #41: NDependGo Deep: analysis in depth
  • #42: SimianDuplicate Code Finder
  • #43: Sonar 3DashboardRules, Alerts, Thresholds
  • #45: Add to runner.msbuildRun PerformantAnalysisPer-Commit AnalysisCI ServerRun Performant AnalysisMonitorViolations Break the BuildNightly AnalysisRun Complete AnalysisAnalyzeEvaluate, TriageImproveUrgent, Important
  • #47: Week 4Write One Automated Unit TestBuild ScriptHave the test run within the build scriptHave the test run within the CI serverCode AnalysisIdentify, fix and monitor 2 more inspections
  • #48: No Automated TestsUnitIntegrationWhatDefines “Automated Testing”?Runs EverywhereEvery Developer’s MachineNo Manual …ConfigurationInterventionDeterministic, Isolated, Repeatable
  • #49: Select a Testing FrameworkRun the Tests with a Scripting ToolRun the Tests within the CI Server
  • #50: Testing FrameworkMSTest
  • #51: Testing FrameworkMbUnit
  • #52: Testing FrameworkxUnit.net
  • #53: Testing FrameworkNUnit
  • #54: Select a Mocking FrameworkAllows for Test IsolationEnables Interaction Testing
  • #55: Mocking FrameworkRhinoMocks
  • #56: Mocking FrameworkMoq
  • #58: Add to runner.msbuildRun All Unit TestsPer-Commit TestingCI ServerRun All Unit TestsMonitorFailing Unit Test, Breaks the BuildNightly TestingRun Automated Integration Tests
  • #60: Automated Unit TestingOne automated unit test assembly for each assembly/executable-under-testOne tests class for each class-under-testAchieve 100% class coverageMocking FrameworkUse a mocking frameworkCI ServerMake sure all unit tests runs on the CI serverCode AnalysisIdentify, fix and monitor 4 more code analysis violations.
  • #66: Automated Unit TestingOne automated unit test assembly for each assembly/executable-under-testOne tests class for each class-under-testAchieve 100% class coverageMocking FrameworkUse a mocking frameworkCI ServerMake sure all unit tests runs on the CI serverCode AnalysisIdentify, fix and monitor 4 more code analysis violations.
  • #68: Code ReviewDecide on the code review strategyPerform a “model code review”, together with everyone on the teamHash it out and define an approach that the team is willing to commit toAutomated Unit TestingWrite one unit test for each method in each class-under-testTry to achieve 100% method coverageCode AnalysisIdentify, fix and monitor 8 more code analysis violations
  • #74: Code ReviewDecide on the code review strategyPerform a “model code review”, together with everyone on the teamHash it out and define an approach that the team is willing to commit toAutomated Unit TestingWrite one unit test for each method in each class-under-testTry to achieve 100% method coverageCode AnalysisIdentify, fix and monitor 8 more code analysis violations
  • #76: PackagingDeploymentCode ReviewMake sure code reviews happenAutomated TestingWrite more unit testsTry to exceed 40% statement coverageCode AnalysisIdentify, fix and monitor 16 more code analysis violations
  • #82: Automated DeploymentWrite a deployment/packaging scriptCode ReviewMake sure code reviews happenAutomated TestingWrite more unit testsTry to exceed 40% statement coverageCode AnalysisIdentify, fix and monitor 16 more code analysis violations
  • #84: Automated DeploymentWrite a deployment/packaging scriptAutomated DeploymentAutomate the deployment to an integration environment as part of the “per commit” pipelineCode ReviewsPerform all code reviewsAutomated TestingWrite more unit testsTry to exceed 60% statement coverageCode AnalysisIdentify, fix and monitor 32 more code analysis violations
  • #87: Automated DeploymentAutomate the deployment to TestAutomate the deployment to an integration environment as part of the “per commit” pipelineCode ReviewsPerform all code reviewsAutomated TestingWrite more unit testsTry to exceed 60% statement coverageCode AnalysisIdentify, fix and monitor 32 more code analysis violations
  • #89: Automated TestingWrite more unit testsWrite more automated integration testsTry to exceed 80% statement coverage
  • #92: Automated TestingWrite more unit testsTry to exceed 80% statement coverageCode ReviewsPerform all code reviewsAutomated DeploymentWorking with QA, automate the deployment to Test environment.Code AnalysisIdentify all applicable code analysis rulesFix and monitor all mandatory rules
  • #98: RetrospectiveLiked: What did we do right?Learned: What did we learn?Lacked: What held us back?Longed for: What did we wish we had?Presentation to Project StakeholdersGather metrics along the wayGather success storiesDemonstrate the CI serverPresent the results