Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Good Software Practices

Good Software Practices

A discussion of good software practices across a range of topics.

Ed0195c951a51ca754ba19eb92a98e3f?s=128

Chris Ayers

October 20, 2018
Tweet

Transcript

  1. Good Software Development Practices An overview of Industry Best Practices

  2. About Me Email: Chris.Ayers@NewSignature.com Twitter: @Chris_L_Ayers LinkedIn: /in/chris-l-ayers/ Blog: https://chrislayers.com/

  3. Topics • Why? • Software Architecture • Software Development •

    Testing • Deployment • Tools
  4. Why? • Maintainability • Dependability • Efficiency • Scalability •

    Usability
  5. Why? “How does a project get to be a year

    late?... One day at a time. ” -- Fred Brooks Brooks Law: "Adding manpower to a late software project makes it later!“ “No matter what the problem is, it's always a people problem.” --Gerald M. Weinberg
  6. None
  7. Design Patterns • Observer Pattern • Strategy Pattern • Adapter

    Pattern • Builder Pattern • Singleton Pattern • Factory Pattern • Decorator Pattern
  8. Architectures • Layered (n-tier) architecture • Event-driven architecture • Microkernel

    architecture • Microservices architecture • Command and Query Responsibility Segregation • Event Sourcing
  9. Inversion of Control & Dependency Injection • Clarity • Modularity

    • Testability • Different Implementations
  10. Cohesion • Functional • Sequential • Communicational • Temporal •

    Logical • Coincidental
  11. Coupling • Content • Common (global) • External • Control

    • Stamp • Data • Uncoupled
  12. Software Development “ If debugging is the process of removing

    software bugs, then programming must be the process of putting them in. ” - Edsger Dijkstra
  13. Source Control • Version Control System - (SVN/TFS/GIT) • Branching

    / Merging Standards • Feature Flags • Commit Message Standards • Check-in Policy • Continuous Integration
  14. Branching Strategies Branch per Release Branch per Component

  15. Coding

  16. Coding Standards • Spaces vs Tabs • EditorConfig • Naming

    Conventions • New Lines / Braces / Commas • Indenting • Comments • Magic Numbers
  17. Code Reviews Does the code build? Does it run without

    errors? Does it follow coding standards? Does it follow naming standards?
  18. Testing • Frameworks • Mocks and Fakes • Unit Testing

    • Integration Testing • Regression Testing • Automated UI Testing • Integration with Source Control
  19. Continuous Integration • Automated Builds • Parameterized builds • Automated

    Deploys • Repeatable deployments
  20. Monitoring • Application Insights • Splunk • New Relic •

    Retrace
  21. Tools • Visual Studio / Eclipse / IdeaJ / Sublime

    • Resharper • Linqpad / Notepad • Command Line – NodeJs / Grunt / Gulp • Browsers – Modern.IE (Microsoft VMs) • Developer Tools / Page Speed
  22. Continuing Education • Blogs • RSS Feeds • Meetups •

    Books • Articles • Training Sessions • Code Camps • Coding at home
  23. None