Methods and Tools for the Development of Adaptive Applications