Reconciling event- and agent-based paradigms in the engineering of complex systems: The role of environment abstractions