Text this: Applying UML and patterns : An introduction to object - oriented analysis and design