約束編程(Constraint programming)是一種編程典範,在這種編程範式中,變數之間的「關係」是以約束的形式陳述(組織)的。這些「關係(約束)」和指令式程式設計語言元素不同的是:它們並非明確說明了要去執行的步驟中的某一步,而是規範其解的一些屬性。這樣看來,約束編程是一種聲明式編程。