Integrating Adaptation Patterns into Agent Methodologies to Build Self-Adaptive Systems