SlideShare a Scribd company logo
1 of 101
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

Similar to An Overview of .NET Best Practices

DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangersDCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangersStephen Ritchie
 
Automated Testing: Obstacles, Pitfalls, and Dangers
Automated Testing: Obstacles, Pitfalls, and DangersAutomated Testing: Obstacles, Pitfalls, and Dangers
Automated Testing: Obstacles, Pitfalls, and DangersStephen Ritchie
 
Overcoming the Obstacles, Pitfalls, and Dangers of Unit Testing
Overcoming the Obstacles, Pitfalls, and Dangers of Unit TestingOvercoming the Obstacles, Pitfalls, and Dangers of Unit Testing
Overcoming the Obstacles, Pitfalls, and Dangers of Unit TestingStephen Ritchie
 
Agile Testing Best Practices
Agile Testing Best PracticesAgile Testing Best Practices
Agile Testing Best PracticesStephen Ritchie
 
20100309 05 - Air France : des audits manuels aux audits automatisés
20100309 05 - Air France : des audits manuels aux audits automatisés20100309 05 - Air France : des audits manuels aux audits automatisés
20100309 05 - Air France : des audits manuels aux audits automatisésLeClubQualiteLogicielle
 
Certification Study Group - NLP & Recommendation Systems on GCP Session 5
Certification Study Group - NLP & Recommendation Systems on GCP Session 5Certification Study Group - NLP & Recommendation Systems on GCP Session 5
Certification Study Group - NLP & Recommendation Systems on GCP Session 5gdgsurrey
 
Agile engineering environment 50 minutes or less
Agile engineering environment   50 minutes or lessAgile engineering environment   50 minutes or less
Agile engineering environment 50 minutes or lessVernon Stinebaker
 
10 Safe Essential Elements to Achieve the Benefits of SAFe
10 Safe Essential Elements to Achieve the Benefits of SAFe10 Safe Essential Elements to Achieve the Benefits of SAFe
10 Safe Essential Elements to Achieve the Benefits of SAFeCprime
 
Apache Spark Model Deployment
Apache Spark Model Deployment Apache Spark Model Deployment
Apache Spark Model Deployment Databricks
 
Yaroslav Ravlinko "Build your own Machine Learning Platform or how to develo...
Yaroslav Ravlinko  "Build your own Machine Learning Platform or how to develo...Yaroslav Ravlinko  "Build your own Machine Learning Platform or how to develo...
Yaroslav Ravlinko "Build your own Machine Learning Platform or how to develo...Lviv Startup Club
 
Grading Rubric For C++
Grading Rubric For C++Grading Rubric For C++
Grading Rubric For C++sritikumar
 
How to Be More Productive With AI Development Assistance
How to Be More Productive With AI Development AssistanceHow to Be More Productive With AI Development Assistance
How to Be More Productive With AI Development AssistanceOutSystems
 
XSCALE: Beyond BDD
XSCALE: Beyond BDDXSCALE: Beyond BDD
XSCALE: Beyond BDDPeter Merel
 
Presentation Verification & Validation
Presentation Verification & ValidationPresentation Verification & Validation
Presentation Verification & ValidationElmar Selbach
 
Barga Data Science lecture 4
Barga Data Science lecture 4Barga Data Science lecture 4
Barga Data Science lecture 4Roger Barga
 
Test team dynamics, Антон Мужайло
Test team dynamics, Антон МужайлоTest team dynamics, Антон Мужайло
Test team dynamics, Антон МужайлоSigma Software
 

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

DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangersDCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
DCDNUG 10/16/2012 Automated testing obstacles pitfalls dangers
 
Automated Testing: Obstacles, Pitfalls, and Dangers
Automated Testing: Obstacles, Pitfalls, and DangersAutomated Testing: Obstacles, Pitfalls, and Dangers
Automated Testing: Obstacles, Pitfalls, and Dangers
 
Overcoming the Obstacles, Pitfalls, and Dangers of Unit Testing
Overcoming the Obstacles, Pitfalls, and Dangers of Unit TestingOvercoming the Obstacles, Pitfalls, and Dangers of Unit Testing
Overcoming the Obstacles, Pitfalls, and Dangers of Unit Testing
 
Agile Testing Best Practices
Agile Testing Best PracticesAgile Testing Best Practices
Agile Testing Best Practices
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
 
20100309 05 - Air France : des audits manuels aux audits automatisés
20100309 05 - Air France : des audits manuels aux audits automatisés20100309 05 - Air France : des audits manuels aux audits automatisés
20100309 05 - Air France : des audits manuels aux audits automatisés
 
Certification Study Group - NLP & Recommendation Systems on GCP Session 5
Certification Study Group - NLP & Recommendation Systems on GCP Session 5Certification Study Group - NLP & Recommendation Systems on GCP Session 5
Certification Study Group - NLP & Recommendation Systems on GCP Session 5
 
Agile engineering environment 50 minutes or less
Agile engineering environment   50 minutes or lessAgile engineering environment   50 minutes or less
Agile engineering environment 50 minutes or less
 
Agile Engineering Environment – 2017
Agile Engineering Environment – 2017Agile Engineering Environment – 2017
Agile Engineering Environment – 2017
 
Agile Engineering Environment – 2017
Agile Engineering Environment – 2017Agile Engineering Environment – 2017
Agile Engineering Environment – 2017
 
10 Safe Essential Elements to Achieve the Benefits of SAFe
10 Safe Essential Elements to Achieve the Benefits of SAFe10 Safe Essential Elements to Achieve the Benefits of SAFe
10 Safe Essential Elements to Achieve the Benefits of SAFe
 
Apache Spark Model Deployment
Apache Spark Model Deployment Apache Spark Model Deployment
Apache Spark Model Deployment
 
DSDM® AgilePF® - Agile Project Framework - Foundation
DSDM® AgilePF® - Agile Project Framework - FoundationDSDM® AgilePF® - Agile Project Framework - Foundation
DSDM® AgilePF® - Agile Project Framework - Foundation
 
Yaroslav Ravlinko "Build your own Machine Learning Platform or how to develo...
Yaroslav Ravlinko  "Build your own Machine Learning Platform or how to develo...Yaroslav Ravlinko  "Build your own Machine Learning Platform or how to develo...
Yaroslav Ravlinko "Build your own Machine Learning Platform or how to develo...
 
Grading Rubric For C++
Grading Rubric For C++Grading Rubric For C++
Grading Rubric For C++
 
How to Be More Productive With AI Development Assistance
How to Be More Productive With AI Development AssistanceHow to Be More Productive With AI Development Assistance
How to Be More Productive With AI Development Assistance
 
XSCALE: Beyond BDD
XSCALE: Beyond BDDXSCALE: Beyond BDD
XSCALE: Beyond BDD
 
Presentation Verification & Validation
Presentation Verification & ValidationPresentation Verification & Validation
Presentation Verification & Validation
 
Barga Data Science lecture 4
Barga Data Science lecture 4Barga Data Science lecture 4
Barga Data Science lecture 4
 
Test team dynamics, Антон Мужайло
Test team dynamics, Антон МужайлоTest team dynamics, Антон Мужайло
Test team dynamics, Антон Мужайло
 

More from Stephen Ritchie

Continuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master CraftContinuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master CraftStephen Ritchie
 
Dc scrum agile_eng_20130923
Dc scrum agile_eng_20130923Dc scrum agile_eng_20130923
Dc scrum agile_eng_20130923Stephen Ritchie
 
Test Driven Development: Blueprint, Toolbox, and Master Craft
Test Driven Development: Blueprint, Toolbox, and Master CraftTest Driven Development: Blueprint, Toolbox, and Master Craft
Test Driven Development: Blueprint, Toolbox, and Master CraftStephen Ritchie
 
Continuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master CraftContinuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master CraftStephen Ritchie
 
Continuous Integration DCAEC12
Continuous Integration DCAEC12Continuous Integration DCAEC12
Continuous Integration DCAEC12Stephen Ritchie
 
An Overview of .NET Best Practices
An Overview of .NET Best PracticesAn Overview of .NET Best Practices
An Overview of .NET Best PracticesStephen Ritchie
 
Advanced Code Analysis with .NET
Advanced Code Analysis with .NETAdvanced Code Analysis with .NET
Advanced Code Analysis with .NETStephen Ritchie
 
Advanced Code Analysis In .NET
Advanced Code Analysis In .NETAdvanced Code Analysis In .NET
Advanced Code Analysis In .NETStephen Ritchie
 
Automated Testing with Databases
Automated Testing with DatabasesAutomated Testing with Databases
Automated Testing with DatabasesStephen Ritchie
 

More from Stephen Ritchie (9)

Continuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master CraftContinuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master Craft
 
Dc scrum agile_eng_20130923
Dc scrum agile_eng_20130923Dc scrum agile_eng_20130923
Dc scrum agile_eng_20130923
 
Test Driven Development: Blueprint, Toolbox, and Master Craft
Test Driven Development: Blueprint, Toolbox, and Master CraftTest Driven Development: Blueprint, Toolbox, and Master Craft
Test Driven Development: Blueprint, Toolbox, and Master Craft
 
Continuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master CraftContinuous Integration: Blueprint, Toolbox, Master Craft
Continuous Integration: Blueprint, Toolbox, Master Craft
 
Continuous Integration DCAEC12
Continuous Integration DCAEC12Continuous Integration DCAEC12
Continuous Integration DCAEC12
 
An Overview of .NET Best Practices
An Overview of .NET Best PracticesAn Overview of .NET Best Practices
An Overview of .NET Best Practices
 
Advanced Code Analysis with .NET
Advanced Code Analysis with .NETAdvanced Code Analysis with .NET
Advanced Code Analysis with .NET
 
Advanced Code Analysis In .NET
Advanced Code Analysis In .NETAdvanced Code Analysis In .NET
Advanced Code Analysis In .NET
 
Automated Testing with Databases
Automated Testing with DatabasesAutomated Testing with Databases
Automated Testing with Databases
 

Recently uploaded

Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireExakis Nelite
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyUXDXConf
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessUXDXConf
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimaginedpanagenda
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfFIDO Alliance
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxJennifer Lim
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfFIDO Alliance
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandIES VE
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftshyamraj55
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 

Recently uploaded (20)

Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 

An Overview of .NET Best Practices

Editor's Notes

  1. 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
  2. Manual BuildsVisual Studio is NOT a Build ToolDanger ZoneInconsistencyHero Worship
  3. Helpful ChangeWrite a Build ScriptConventional Scripting ToolMSBuildConventionalPart of .NETUsed by Visual Studio and TFSWidely used, lots of examplesPart of .NET Fundamentals
  4. Conventional Scripting ToolNAntFree and open-sourcePopular with .NET developersWidely used, lots of examplesBased on the Java build tool, AntObsolete
  5. 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
  6. Task LibrariesMSBuild Extension PackMSBuild Community TasksAutomate, Automate, AutomateAssembly InfoXML Peek & Poke, Transform ConfigCopy Files, Zip, PackageDocumentation
  7. One Script, Builds EverythingCompletelyConsistentlyrunner.msbuildrunner.batVirtuous DisciplineRunner Runs Every Build StepAlways “Run the Runner”Avoid Integration HellPullRebuildCodeRebuildPush
  8. Week 2Continuous Integration ServerSelect oneInstall itRun Build ScriptRebuild PhaseSoup-to-Nuts
  9. No CI ServerDevelopers Push CodeFire and ForgetSCM RepositoryHolds Code RevisionsUnknown ConditionDanger ZoneDeferring the BuildIntegration HellLurking Quality Issues
  10. Install CI ServerSCM TriggerRun runner.msbuild
  11. CommercialMicrosoft’s Team Foundation Server
  12. Free, Open SourceCruise Control .NET
  13. Free, Open SourceJenkins
  14. CommercialJetBrainsTeamCity
  15. ObserveCode PushBuild SuccessReportBuild HistoryVisibilityBuild FeedbackImprove Personal ProcessStakeholder Visibility
  16. 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
  17. 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
  18. Identify an Analysis ToolStatic Code AnalysisRun the Analysis Tool within the CI Server
  19. FxCop.NET Framework Guidelines
  20. GendarmeFinds Common Problems
  21. StyleCopHelps Enforce Coding Standards
  22. NDependGo Deep: analysis in depth
  23. SimianDuplicate Code Finder
  24. Sonar 3DashboardRules, Alerts, Thresholds
  25. Add to runner.msbuildRun PerformantAnalysisPer-Commit AnalysisCI ServerRun Performant AnalysisMonitorViolations Break the BuildNightly AnalysisRun Complete AnalysisAnalyzeEvaluate, TriageImproveUrgent, Important
  26. 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
  27. No Automated TestsUnitIntegrationWhatDefines “Automated Testing”?Runs EverywhereEvery Developer’s MachineNo Manual …ConfigurationInterventionDeterministic, Isolated, Repeatable
  28. Select a Testing FrameworkRun the Tests with a Scripting ToolRun the Tests within the CI Server
  29. Testing FrameworkMSTest
  30. Testing FrameworkMbUnit
  31. Testing FrameworkxUnit.net
  32. Testing FrameworkNUnit
  33. Select a Mocking FrameworkAllows for Test IsolationEnables Interaction Testing
  34. Mocking FrameworkRhinoMocks
  35. Mocking FrameworkMoq
  36. Add to runner.msbuildRun All Unit TestsPer-Commit TestingCI ServerRun All Unit TestsMonitorFailing Unit Test, Breaks the BuildNightly TestingRun Automated Integration Tests
  37. 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.
  38. 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.
  39. 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
  40. 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
  41. PackagingDeploymentCode ReviewMake sure code reviews happenAutomated TestingWrite more unit testsTry to exceed 40% statement coverageCode AnalysisIdentify, fix and monitor 16 more code analysis violations
  42. 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
  43. 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
  44. 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
  45. Automated TestingWrite more unit testsWrite more automated integration testsTry to exceed 80% statement coverage
  46. 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
  47. 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