The last fifteen years have seen the rise of a new phase in software development which is concerned with the acquisition, modelling and analysis of stakeholder purposes (?goals?) in order to derive functional and non-functional requirements. We review the history of ideas and research results for this new phase and sketch on-going research on the topic. Specifically, we discuss an agent-oriented software development methodology called Tropos that is founded on the concepts of goal, actor as well as inter-actor dependencies. We also show how goal models that characterize a space of possible solutions for meeting stakeholder goals can be used as a basis for designing high variability software.