Describir: Patterns of software construction :