Text this: Object-oriented software engineering: using UML, patterns, and java