SlideShare una empresa de Scribd logo
1 de 101
An Overview of
.NET Best Practices


      Stephen D. Ritchie

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




• Twitter:      @RuthlessHelp
                @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

Más contenido relacionado

Similar a An Overview of .NET Best Practices

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
 
Grading Rubric For C++
Grading Rubric For C++Grading Rubric For C++
Grading Rubric For C++sritikumar
 
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
 
Presentation Verification & Validation
Presentation Verification & ValidationPresentation Verification & Validation
Presentation Verification & ValidationElmar Selbach
 
XSCALE: Beyond BDD
XSCALE: Beyond BDDXSCALE: Beyond BDD
XSCALE: Beyond BDDPeter Merel
 
Test team dynamics, Антон Мужайло
Test team dynamics, Антон МужайлоTest team dynamics, Антон Мужайло
Test team dynamics, Антон МужайлоSigma Software
 
Agile & Secure SDLC
Agile & Secure SDLCAgile & Secure SDLC
Agile & Secure SDLCPaul Yang
 
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
 
Barga Data Science lecture 4
Barga Data Science lecture 4Barga Data Science lecture 4
Barga Data Science lecture 4Roger Barga
 
Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018David Tan
 
SigOpt at GTC - Reducing operational barriers to optimization
SigOpt at GTC - Reducing operational barriers to optimizationSigOpt at GTC - Reducing operational barriers to optimization
SigOpt at GTC - Reducing operational barriers to optimizationSigOpt
 
Engineering scikit-learn
Engineering scikit-learnEngineering scikit-learn
Engineering scikit-learnAndreas Mueller
 

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

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 – 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
 
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
 
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
 
Grading Rubric For C++
Grading Rubric For C++Grading Rubric For C++
Grading Rubric For C++
 
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...
 
Presentation Verification & Validation
Presentation Verification & ValidationPresentation Verification & Validation
Presentation Verification & Validation
 
XSCALE: Beyond BDD
XSCALE: Beyond BDDXSCALE: Beyond BDD
XSCALE: Beyond BDD
 
Test team dynamics, Антон Мужайло
Test team dynamics, Антон МужайлоTest team dynamics, Антон Мужайло
Test team dynamics, Антон Мужайло
 
Agile & Secure SDLC
Agile & Secure SDLCAgile & Secure SDLC
Agile & Secure SDLC
 
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
 
Barga Data Science lecture 4
Barga Data Science lecture 4Barga Data Science lecture 4
Barga Data Science lecture 4
 
Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018Deploying ML models to production (frequently and safely) - PYCON 2018
Deploying ML models to production (frequently and safely) - PYCON 2018
 
SigOpt at GTC - Reducing operational barriers to optimization
SigOpt at GTC - Reducing operational barriers to optimizationSigOpt at GTC - Reducing operational barriers to optimization
SigOpt at GTC - Reducing operational barriers to optimization
 
Engineering scikit-learn
Engineering scikit-learnEngineering scikit-learn
Engineering scikit-learn
 

Más de Stephen Ritchie

Lightweight Documentation
Lightweight DocumentationLightweight Documentation
Lightweight DocumentationStephen Ritchie
 
Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015Stephen Ritchie
 
Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11Stephen Ritchie
 
Lightweight Documentation: An Agile Approach
Lightweight Documentation: An Agile ApproachLightweight Documentation: An Agile Approach
Lightweight Documentation: An Agile ApproachStephen 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
 
Advanced Code Analysis with .NET
Advanced Code Analysis with .NETAdvanced Code Analysis with .NET
Advanced Code Analysis with .NETStephen 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 In .NET
Advanced Code Analysis In .NETAdvanced Code Analysis In .NET
Advanced Code Analysis In .NETStephen Ritchie
 

Más de Stephen Ritchie (13)

Lightweight Documentation
Lightweight DocumentationLightweight Documentation
Lightweight Documentation
 
Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015Agile Engineering Sparker GLASScon 2015
Agile Engineering Sparker GLASScon 2015
 
DevOps Requires Agility
DevOps Requires AgilityDevOps Requires Agility
DevOps Requires Agility
 
Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11Continuous Integration - NoVA CodeCamp 2014-10-11
Continuous Integration - NoVA CodeCamp 2014-10-11
 
Lightweight Documentation: An Agile Approach
Lightweight Documentation: An Agile ApproachLightweight Documentation: An Agile Approach
Lightweight Documentation: An Agile Approach
 
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
 
Advanced Code Analysis with .NET
Advanced Code Analysis with .NETAdvanced Code Analysis with .NET
Advanced Code Analysis with .NET
 
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 In .NET
Advanced Code Analysis In .NETAdvanced Code Analysis In .NET
Advanced Code Analysis In .NET
 

Último

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Último (20)

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

An Overview of .NET Best Practices

Notas del editor

  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