In practice, the first step when confronted with a problem is to think of how this problem can be modeled, i.e. what variables, what domains for these variables, and what constraints should be used to encode the problem.
In the following, we present Constraint Satisfaction Problems as an abstract, but formal view of a single model of a problem. Then we introduce viewpoints, focusing on the problem variables and their initial domains. A viewpoints naturally leads to a model for a problem, as will be exemplified using the Sudoku puzzle.