Agile Software Development: Principles, Patterns,and Practices - The Abstract Server Pattern