The practice of developing computer software in a way that guards against the accidental introduction of security vulnerabilities