Requirements Analysis for Customizable Software: A Goals-Skills-Preferences Framework