Selecting design patterns