Kontrolna logika je ključni del programskega programa, ki nadzoruje delovanje programa. Kontrolna logika se odziva na ukaze uporabnika in deluje tudi sama za izvajanje avtomatiziranih nalog, ki so strukturirane v program. Poznan je tudi kot krmilnik in je del osnovne arhitekture programske opreme, ki je bila razvita hkrati, ko je program zasnovan in kodiran.
Kontrolna logika deluje binarno, kar pomeni, da uporabniki programske opreme ne morejo neposredno komunicirati z njo. Tako morajo biti programi opremljeni s funkcijo, ki lahko prevede ukaze od uporabnika v binarni sistem, tako da jih krmilna logika razume. Izhod krmilne logike se pojavi v binarnem formatu, vendar ga program prevede v funkcijo ali sporočilo. Tako, ko uporabnik pritisne gumb »shrani« na urejevalniku besedil, se ta pretvori v binarni signal za kontrolno logiko, ki nato izvede ukaz za shranjevanje in vrne sporočilo prek prevajalca, ki uporabnika opozori na dejstvo, da je shranjevanje končano.
Ta del programskega programa vključuje taktni signal, ki se uporablja za časovne operacije, skupaj z dekodirno enoto za binarni prevod. Kontrolna logika se zanaša na uro, da zagotovi, da se operacije izvajajo v pravilnem vrstnem redu in ob pravem času. Čeprav se operacije pogosto zdijo hkratne, je v resnici majhna zamuda, ko se krmilnik premika skozi vrsto korakov, da se izvede funkcija, kot zahteva uporabnik ali interno kodiranje programskega programa.
Kot ukazno središče programa krmilnik vedno deluje. Programi so sposobni izvajati več operacij hkrati, hkrati pa sodelovati s preostalim računalniškim sistemom. Nadzorni center programa mora uravnotežiti ukaze uporabnika, direktive, ustvarjene znotraj programa, in potrebe operacijskega sistema, da zagotovi zanesljivo delovanje programa.
Ko je programska oprema v razvoju, se krmilna logika testira in po potrebi prilagodi, da postane čim bolj učinkovita in zmogljiva. Razvijalci programske opreme jo lahko tudi občasno posodabljajo z novimi izdajami programske opreme, da prilagodijo nove funkcije in odpravijo napake, ki se pojavijo, ko je program v redni uporabi. Razvoj programske opreme zahteva bistro oko za podrobnosti, pa tudi potrpežljivost.