Challenges and Research Directions in Agent-Oriented Software Engineering