Agent-oriented methods for engineering complex distributed systems. (May 2015)