Agile Systems With Reusable Patterns of Business Knowledge: A Component-Based Approach