Goal models have been used in Computer Science in order to represent
software requirements, business objectives and design qualities. In previous
work we have presented a formal framework for reasoning with goal models, in a
qualitative or quantitative way, and we have introduced an algorithm for forward
propagating values through goal models. In this paper we focus on the qualitative
framework and we propose a technique and an implemented tool for addressing
two much more challenging problems: (1) find an initial assignment of labels
to leaf goals which satisfies a desired final status of root goals by upward value
propagation, while respecting some given constraints; and (2) find an minimum
cost assignment of labels to leaf goals which satisfies root goals. The paper also
presents preliminary experimental results on the performance of the tool using the
goal graph generated by a case study involving the Public Transportation Service
of Trentino (Italy).