Service Communautaire d'Information sur la Recherche et le Développement - CORDIS

Debugging systems for constraint programming

Conventional programming techniques are not well suited for solving many highly combinatorial industrial problems, like scheduling, decision making, resource allocation or planning. Constraint programming (CP), an emerging software technology, offers an original approach allowing efficient and flexible solving of complex problems, through combined implementation of various constraint solvers and expert heuristics. Its applications are increasingly fielded in various industries. One of the main features of CP is a new approach to software production: the same program is progressively improved at each step of the development cycle, from the first prototype until the final product. This makes debugging the cornerstone of CP technology. Debugging is considered in a broad sense: it concerns both validation aspects (to build a correct application) as well as methodological aspects (to find the best solution to a problem through a better understanding of constraint solver behaviour). To satisfy these objectives, tools must locate and explain bugs, and graphic tools must help interpret program behaviour and results. Existing tools have been seen to be ineffective in most industrial situations and tools developed for imperative or functional programming are not adapted to the context of CP. The main reasons are that the huge numbers of variables and constraints makes the computation state difficult to understand, and that the non deterministic execution drastically increases the number of computation states which must be analysed.


Anne-Francoise DOUIX
Tél.: +33-4-91268636
Fax: +33-4-91419637