Programowanie kontraktowe (ang. Design by contract, DbC) – w programowaniu, metoda organizowania kodu źródłowego programu, polegająca na takim ułożeniu go, aby nie tylko było jasne, jak program ma działać, lecz także, aby można było zweryfikować istnienie określonych założeń dotyczących konkretnych elementów programu (funkcje, struktury, klasy, moduły, itp.).
Programowanie kontraktowe jest wymarłym określeniem, które jest niczym innym jak opisaniem procesu wykorzystania weryfikacji i walidacji danych.
Historia Określenie to zostało wprowadzone przez , w odniesieniu do projektu jego języka programowania Eiffel, w artykułach, począwszy od roku 1986, a także w edycjach z lat 1988 i 1997 swojej książki pod tytułem „Object-Oriented Software Construction”. W 2004 roku przyznano Eiffel Software znak towarowy Design by contract, W związku z tym, w źródłach anglojęzycznych można się również spotkać z określeniami Programming by contract i Contract programming.