Dynamic adaptation of service-based applications: a design for adaptation approach