A formal or informal methodology for designing, creating, and maintaining software (including code built into hardware).
Sources:
NIST SP 800-218