Declarative techniques such as Constraint Programming are very useful in modeling complex requirements. They have the added benefit of being executable specifications and, when properly tuned, high-performance ones. In this paper we argue that Information Systems ought to include constraint-based techniques in their design and implementation. We support this claim by introducing tools based on constraint programming, which we apply to an actual use-case: the academic timetable construction and maintenance problem, as developed at the University of Evora. The system we built was implemented using the GNU Prolog language. Moreover, Constraints have the potential to describe global properties that a model must observe, which makes them a seman...