• Online, Self-Paced
Course Description

Defensive Programming is a methodology for writing code that is not prone to present or future errors potentially caused by unexpected user inputs/actions. In this course you will explore the fundamentals of defensive programming including inspections, testing, input validation, error handling, planning, methods, variables, assertions, and iterative design.

Learning Objectives

Introduction to Defensive Programming

  • start the course
  • describe the potential risks faced by software applications
  • identify the key reasons why risks are a recurring issue
  • recognize the key features of defensive coding
  • list some key approaches to preventing problems during the planning stage

Defensive Programming Techniques

  • recognize what clean code is
  • identify the key features of iterative design
  • use pseudocode to develop programming solutions
  • use assertions in your programming code
  • apply pre and post conditions to C#

Inspections and Testing

  • identify how to perform low level design inspections
  • describe the benefits of testing your code
  • recognize how to write testable code in C#
  • recognize how to perform unit tests using Visual Studio for C#

Defendable Code

  • create examples of defensible methods in C#
  • identify the techniques for applying defensive techniques for method parameters and return values in C# methods
  • recognize how to implement variable declarations for defendable code
  • identify how to use null values in creating defendable code
  • identify how to use if and switch statements in creating defendable code

Working with Errors

  • identify error handling techniques to promote defensive coding
  • demonstrate how to use exceptions to handle errors
  • create a C# application that incorporates error codes and messages into its error handling
  • recognize how to use error processing and global objects
  • identify how to handle errors locally in C# code
  • recognize how to anticipate potential errors in C# code

Practice: Creating Defensible Code

  • write clean, testable code

Framework Connections

The materials within this course focus on the NICE Framework Task, Knowledge, and Skill statements identified within the indicated NICE Framework component(s):

Specialty Areas

  • Software Development
  • Test and Evaluation
  • Vulnerability Assessment and Management