Apsauginis programavimas – tai kompiuterio programinės įrangos kodo kūrimas, skirtas išvengti probleminių problemų jiems dar neiškylant ir padaryti produktą stabilesnį. Pagrindinė šio požiūrio idėja yra sukurti programą, kuri galėtų tinkamai veikti net nenumatytų procesų metu arba kai vartotojai padaro netikėtus įrašus. Apsauginis programavimas dažnai remiasi šiek tiek paradoksaliu nereikalingo kodo pašalinimo deriniu, tuo pačiu užtikrinant, kad būtų sukurta pakankamai sumų, kad būtų galima atlikti visus galimus vartotojo veiksmus. Šiam procesui taip pat svarbu atlikti išsamų testavimą, taip pat sukurti programinę įrangą, kurią būtų galima lengvai audituoti ir patikrinti.
Daugeliu atžvilgių gynybinio programavimo koncepcija yra panaši į gynybinio vairavimo koncepciją, nes problemos yra įvertinamos prieš joms atsirandant. Vienas įprastų būdų tai padaryti yra sukurti kodą, skirtą bet kokiam galimam scenarijui. Programuotojai paprastai bando nustatyti būdus, kuriais vartotojai gali įvesti įvestį arba bandyti naudoti programinę įrangą, kuri gali būti už numatytų parametrų. Apsauginio programavimo naudojimas yra pagrįstas paties kodo pagrindu, kuris yra sukurtas taip, kad būtų galima apdoroti keistą įvestį be gedimų ar nesusiduriant su klaidos įvykiu.
Iš pažiūros priešingai nei šis gynybinio programavimo elementas, tačiau gerai parašytas kodas turi būti be nereikalingų įrašų. Kuo daugiau kodo eilučių yra programos dalis, tuo daugiau galimybių įvesti klaidų. Apsauginio programavimo praktika paprastai skatina kūrėjus pašalinti nereikalingą kodą ir, kai tik įmanoma, supaprastinti programas. Todėl reikia išlaikyti pusiausvyrą tarp programavimo, kuriame atsižvelgiama į netikėtus scenarijus, ir kodo, kuriame yra per daug nereikalingo turinio, kuris nesuteikia naudos.
Testavimas yra vienas iš svarbiausių gynybinio programavimo aspektų. Nepaisant didelių pastangų, kad kodas būtų tobulas, kūrėjai beveik visada praleidžia klaidą arba sukuria kodą su netikėtais rezultatais. Profesionalių bandytojų atliktas kruopštus testavimas leidžia kūrėjui šimtus valandų naudoti produktą, kad surastų klaidas prieš išleidžiant programinę įrangą.
Pats kodas, sukurtas naudojant gynybinį programavimą, taip pat yra gyvybiškai svarbus šio proceso aspektas. Jis turėtų būti ne tik kiek įmanoma racionalesnis, bet ir pateiktas aiškiai ir glaustai. Kūrėjas dažnai naudoja auditą, kad peržiūrėtų sukurtą kodą. Tai leidžia kitiems programuotojams matyti atliktą darbą, o skaitomas kodas yra svarbus, kad tai būtų tikroviška kūrimo dalis.