A Component-Based Multi-Agent System Modeling Methodology