Representing and reasoning about preferences in requirements engineering