1. A method for performing an upgrade of a software while in-service in a computer, the method comprising: providing a process object that manages at least one asynchronous input queue, is bound to at least one output queue collection and has a state data store; providing an original agent object linked to said process object, and having a behavior able to access said asynchronous input queue, said output queue collection and said state data store, said 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 collection 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 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 process object; installing said upgrade agent object without suspending execution of said software; when said original agent object is in said idle state: suspending 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; causing said upgrade agent object to be linked to said process object and disconnecting said original agent object from said process object; and resuming operation of said process object and execution of said upgrade agent object.