Construction of and Execution of Adaptable Applications Using an Aspect-Oriented and Model Driven Approach