An agent-based requirements engineering framework for complex socio-technical systems