traditional requirements specification languages need to evolve for explicitly encapsulating points of variability in the behavior of the system [8] and elements of uncertainty in the environment [9]. These elements must be first class entities the system can exploit to decide how to act.