Defining structural design patterns