Tackling Complexity of Distributed Systems: towards an integration of Service-Oriented Computing and Agent-Oriented Programming