Agent design using model driven development