A method for performing an upgrade of a software application while in-service in a computer, the method comprising: providing in said software application an interface process object that manages at least one asynchronous input queue, is bound to at least one output queue and has a state data store; providing an original agent object linked to said interface process object, and having a behavior able to access said asynchronous input queue, said output queue and said state data store, said interface process object and said original agent object being configured to cause said original agent object to perform an action on data received in said asynchronous input queue, to provide output on said output queue and store data required for any future operation of said original agent object in said state data store, and to enter an idle state when finished an operation on data received in said asynchronous input queue; executing said software in said computer, said software interfacing with said original agent object using said queues of said interface process object; creating an upgrade agent object to replace said original agent object with an upgraded behavior, said upgrade agent object adapted to use said interface process object; installing said upgrade agent object without suspending execution of said software by: when said original agent object is in said idle state: causing the interface process object to suspend reading data from said asynchronous input queue, while continuing to allow said asynchronous input queue to be available to other objects in said software; adjusting, if required, said state data to take into account any changes in data due to said upgrade agent object; and causing said upgrade agent object to be linked to said interface process object and disconnecting said original agent object from said interface process object; and resuming operation of said interface process object and execution of said upgrade agent object. providing in said software application an interface process object that manages at least one asynchronous input queue, is bound to at least one output queue and has a state data store; providing an original agent object linked to said interface process object, and having a behavior able to access said asynchronous input queue, said output queue and said state data store, said interface process object and said original agent object being configured to cause said original agent object to perform an action on data received in said asynchronous input queue, to provide output on said output queue and store data required for any future operation of said original agent object in said state data store, and to enter an idle state when finished an operation on data received in said asynchronous input queue; executing said software in said computer, said software interfacing with said original agent object using said queues of said interface process object; creating an upgrade agent object to replace said original agent object with an upgraded behavior, said upgrade agent object adapted to use said interface process object; installing said upgrade agent object without suspending execution of said software by: when said original agent object is in said idle state: causing the interface process object to suspend reading data from said asynchronous input queue, while continuing to allow said asynchronous input queue to be available to other objects in said software; adjusting, if required, said state data to take into account any changes in data due to said upgrade agent object; and causing said upgrade agent object to be linked to said interface process object and disconnecting said original agent object from said interface process object; and resuming operation of said interface process object and execution of said upgrade agent object. when said original agent object is in said idle state: causing the interface process object to suspend reading data from said asynchronous input queue, while continuing to allow said asynchronous input queue to be available to other objects in said software; adjusting, if required, said state data to take into account any changes in data due to said upgrade agent object; and causing said upgrade agent object to be linked to said interface process object and disconnecting said original agent object from said interface process object; and causing the interface process object to suspend reading data from said asynchronous input queue, while continuing to allow said asynchronous input queue to be available to other objects in said software; adjusting, if required, said state data to take into account any changes in data due to said upgrade agent object; and causing said upgrade agent object to be linked to said interface process object and disconnecting said original agent object from said interface process object; and resuming operation of said interface process object and execution of said upgrade agent object.