From Goals to High-Variability Software Design