Programowanie kontraktowe
Filozofia programowania: każda funkcja ma formalne warunki wstępne, warunki końcowe i niezmienniki.
Autorem jest Bertrand Meyer (język Eiffel, 1986). Asercje opisują „co musi być prawdą, zanim zaczniemy” oraz „co gwarantujemy po zakończeniu”. Wymusza to jawne myślenie kontraktami. W nowoczesnych językach idea przeniknęła przez systemy typów i testowanie właściwości (property-based testing).