Using variability modelling and design patterns for self-adaptive system engineering: application to smart-home. (2015)