Agile Systems with Reusable Patterns of Business Knowledge: A Component-Based Approach (Artech House Computing Library)