Pattern languages of program design - Vlissides, John M. (Jemma, 1996)