TROPOS: an agent-oriented software development methodology