Perkontrakta programado estas paradigmo kiu permesas fari komputilajn programojn pli sekuraj dank'al aldono de reguloj.
Plej kutime la reguloj estas aldonataj sur la signaturo de funkcio aŭ proceduro. Temas pri:
Ekzemple, se oni volas skribi funkcion por kalkuli logaritmon oni povus diri ke
La tradukilo decidas, kion oni faras de tiuj kondiĉoj:
Eiffel estas el la plej unuaj programlingvoj kiuj denaske permesas perkontraktan programadon. Tamen ekzistas ankaŭ bibliotekoj permesante programi per kontrakto kun plej kutimaj programlingvoj, ekzemple en Java. Programlingvoj kiel C kaj Java nun proponas la funkcion assert kun la sama celo, sed tio ne estas tute simila: assert povas aperi ie ajn en la funkcio. Tute male, kontraktoj estas deklarataj je la komenco de la funkcio, ili estas parto de ĝia signaturo kaj dank'al tio estas bonaj indikiloj por programistoj kiuj poste uzas la funkcion, por kompreni kiel uzi ĝin.