Applying UML and Patterns1