reference is first made to fig1 , which is a simplified , schematic diagram of software components executing in an sst memory 10 according to one embodiment of the present invention . in this embodiment , the sst memory is an atm memory . as shown in fig1 , the memory 10 executes various software entities , including an application suite 12 , a monitoring suite 14 , and a management system 16 . these software entities are implemented using the microsoft . net framework . the application suite 12 includes transaction control code 20 comprising a plurality of application business and user interface objects used for collecting information relating to a customer , managing components in the atm , obtaining authorization from a remote transaction authorization host ( not shown ), and other conventional functions of an atm . the application suite 12 also comprises a querying component 24 and a communication object 26 instantiated by the querying component 24 . the transaction control code 20 comprises a large number of objects ( labeled “ object 1 ” to “ object n ” in fig1 ), although only three objects 32 , 34 , 36 are illustrated in fig1 . each of these objects 32 , 34 , 36 includes an identical , defined interface ( referred to herein as the “ iactivitymonitor ” interface ) 38 that supports a single method ( the “ isactive ” method ). it should be appreciated that each of the objects 32 , 34 , 36 includes other interfaces to enable the objects 32 , 34 , 36 to perform their required functions , but these other interfaces are conventional and not required to understand this embodiment , so will not be described in detail herein . this iactivitymonitor interface 38 allows the querying component 24 to send a status request to any object having that interface . if that object is not in a halt state , then it responds to that status request within a predetermined time ( referred to herein as the response time ) with an indication that the object is operating normally . in this embodiment , the response time is one second , and a response to the status request is provided as a single bit which is active . if the object is in a halt state then it will either not respond within the response time , or will respond with an indication ( provided as a single bit which is inactive ) that the object is in a halt state . the communication object 26 is an interprocess communication ( ipc ) remoteable object , and is responsible for enabling the querying component 24 to communicate with the monitoring suite 14 . the querying component 24 includes a timer routine 40 to ensure that the querying component 24 sends a status request to each object 32 , 34 , 36 once every polling interval . in this embodiment , the polling interval is the same for all objects in the application suite 12 , and has a value of sixty seconds . the querying component 24 also uses the timer routine 40 to ensure that the querying component 24 transmits an application valid signal once every reporting interval . in this embodiment the reporting interval is ninety seconds . the monitoring suite 14 comprises a monitoring component 50 , and a process list object ( referred to herein as a monitor client list object ) 52 instantiated by the monitoring component 50 . the monitor client list object 52 is also an ipc remotable object , and is responsible for maintaining a list of processes within applications ( such as the process corresponding to communication object 26 in the application suite 12 ) that are being communicated with . if all of the objects 32 , 34 , 36 in the application suite 12 are operating normally ( that is , not in a halt state ), then the monitoring component 50 receives an application valid signal from communication object 26 once in every reporting interval ( ninety seconds in this embodiment ). the monitoring component 50 uses this application valid signal to generate a heartbeat valid signal . the monitoring component 50 then transmits the heartbeat valid signal to a heartbeat monitor 60 within the management system 16 , and writes a heartbeat valid entry to an event log 62 within the management system 16 . if one or more of the objects 32 , 34 , 36 in the application suite 12 are not operating normally ( that is , in a halt state ), then the monitoring component 50 does not receive an application valid signal from communication object 26 . the monitoring component 50 responds to the absence of the application valid signal to generate a heartbeat invalid signal . the monitoring component 50 then transmits the heartbeat invalid signal to the heartbeat monitor 60 , and writes a heartbeat invalid entry to the event log 62 . the monitoring component 50 includes a timer routine 54 to ensure that a heartbeat signal ( either heartbeat valid or heartbeat invalid ) is transmitted to the heartbeat monitor 60 once in every heartbeat interval , which is one hundred and twenty seconds in this embodiment . the operation of the software entities of fig1 will now be described with reference to fig2 , which is a simplified sequence diagram illustrating messages and events associated with the application suite 12 and the monitoring suite 14 , when the application suite 12 registers to provide a heartbeat function . initially , the monitoring component 50 is instantiated ( event 70 in fig2 ) prior to any of the processes or components that it monitors . the monitoring component 50 then creates and registers an instance of the monitor client list object 52 ( event 72 ). the application suite 12 then starts up and instantiates the querying component 24 ( event 74 ). the querying component 24 then registers an instance of the communication object 26 ( event 76 ). using ipc remoting , the querying component 24 then calls the monitor client list object 52 ( using the “ getobject ” command ) to obtain an object reference for the monitor client list object 52 ( event 78 ). the querying component 24 is programmed with a name and port of the monitor client list object 52 so that the querying component 24 knows how to access the monitor client list object 52 . once the querying component 24 has the object reference for the monitor client list object 52 , the querying component 24 can register the process name of the communication object 26 with the monitor client list object 52 ( event 80 ). once the communication object 26 has been registered with the monitor client list object 52 , the monitor client list object 52 updates the monitoring component 50 to inform the monitoring component 50 about the process name of the communication object 26 ( event 82 ). the monitoring component 50 uses this process name to obtain an object reference for the communication object 26 ( using the “ getobject ” command ) ( event 84 ) and parameters associated with the application suite 12 . these parameters include the reporting interval and the polling interval . at this point , the application suite 12 and the monitoring suite 14 are fully instantiated and set - up for monitoring the status of the objects 32 , 34 , 36 within the application suite 12 . if a new application is added , then this new application would perform similar events ( event 74 through event 80 ) to those described above , and the monitoring suite 14 would perform events 82 and 84 , so that the new application would be automatically added as an application to be monitored by the monitoring suite 14 . reference will now be made to fig3 , which is a sequence diagram following on from the sequence diagram of fig2 and illustrating messages and events associated with the application suite 12 and the monitoring suite 14 co - operating to provide a heartbeat valid signal to a management system 16 . the querying component 24 uses its timer routine 40 to measure the polling interval ( event 90 ). the querying component 24 ensures that during this polling interval it sends a status request message to all objects 32 , 34 , 36 having the iactivitymonitor interface 38 ( event 92 ). when each object 32 , 34 , 36 having the iactivitymonitor interface 38 is instantiated , it registers with a registration list object ( not shown ). once all of the objects 32 , 24 , 36 are instantiated , this registration list object ( not shown ) contains a list of all objects that are to receive status request messages from the querying component 24 . once the querying component 24 is instantiated , it gets a list of the registered objects ( objects 32 , 34 , 36 in this embodiment ) from the registration list object ( not shown ). this enables the querying component 24 to know which objects have the iactivitymonitor interface 38 . the status request message comprises a method ( the “ isactive ” method ) that must be processed by the object 32 , 34 , 36 within the response time ( one second in this embodiment ). in the example of fig3 , all of the objects respond with an active bit ( indicating that none of the objects is in a halt state ). this response generates an “ alive ” event ( event 94 ) at the querying component 24 , which is used by the communication object 26 to generate and transmit an application valid signal ( event 96 ) to the monitoring component 50 . the monitoring component 50 uses its timer routine 54 to measure the heartbeat interval ( event 98 ). the monitoring component 50 uses the timer routine 54 to ensure that a heartbeat signal is transmitted to the management system 16 ( specifically the heartbeat monitor 60 ) in a timely manner , that is , once during each heartbeat interval ( one hundred and twenty seconds in this embodiment ). in this example , an application valid signal was received from the communication object 26 , so the monitoring component 50 creates and transmits a heartbeat valid signal ( event 100 ) to the management system 16 . the monitoring component 50 also writes a heartbeat event to the event log 62 , indicating that a heartbeat valid signal was generated . as is known to those of skill in the art , the event log 62 is used as an aid in identifying any causes of failure caused by the software entities because it contains a list of events triggered by instrumented code . reference will now be made to fig4 , which is a sequence diagram following on from the sequence diagram of fig2 and illustrating messages and events associated with the application suite 12 and the monitoring suite 14 co - operating to provide a heartbeat invalid signal to a management system 16 . in the same manner as for fig3 , the querying component 24 uses its timer routine 40 to measure the polling interval ( event 102 ). the querying component 24 ensures that during this polling interval it sends a status request message to all objects 32 , 34 , 36 having the iactivitymonitor interface 38 ( event 104 ). the status request message comprises the isactive method , which must be processed by the object 32 , 34 , 36 within the response time ( one second in this embodiment ). in the example of fig4 , at least one of the objects 32 , 34 , 36 does not respond within the response time . the querying component 24 interprets this lack of response as meaning that one of the objects 32 , 34 , 36 is in a halt state . as a result , no “ alive ” event is generated at the querying component 24 , so an application valid signal is not sent from the communication object 26 to the monitoring component 50 . the monitoring component 50 uses its timer routine 54 to measure the heartbeat interval ( event 106 ). after the heartbeat interval has elapsed , since an application valid signal was not received from the communication object 26 within the heartbeat interval , the monitoring component 50 creates and transmits a heartbeat invalid signal ( event 108 ) to the heartbeat monitor 60 . the monitoring component 50 also writes a heartbeat ceased event to the event log 62 , indicating that a heartbeat invalid signal was generated . reference will now be made to fig5 , which is a simplified schematic diagram of an sst memory 200 executing software components providing a heartbeat function according to another embodiment of the present invention . as shown in fig5 , the memory 200 executes various software entities , including the application suite 12 , the monitoring suite 14 , the management system 16 ( all of the preceding software entities being identical to the corresponding entities of fig1 ), and a supervisor application suite 212 . all of these software entities execute within a . net framework . the supervisor application suite 212 includes supervisor control code 220 comprising a plurality of objects used for assisting a service person in conducting maintenance , settlement , upgrading , and diagnostic functions . the supervisor application suite 212 also comprises a querying component 224 and a communication object 226 instantiated by the querying component 224 . querying component 224 and communication object 226 are very similar , and provide corresponding functions , to querying component 24 and communication object 26 . however , querying component 224 may have a different response time and a different polling time , if desired . the querying component also includes a timer routine 240 . the supervisor control code 220 comprises a large number of objects ( labeled “ object 1 ” to “ object m ” in fig5 ), although only three objects 232 , 234 , 236 are illustrated in fig5 . each of these objects 232 , 234 , 236 includes an identical defined interface ( the “ iactivitymonitor ” interface ) 38 that supports a single method ( the “ isactive ” method ). it should be appreciated that each of the objects 232 , 234 , 236 includes other interfaces to enable the objects 232 , 234 , 236 to perform their required functions , but these other interfaces are conventional , so will not be described in detail herein . in a similar manner to the first embodiment ( fig1 to 4 ), once the monitoring component 50 is instantiated and has created and registered an instance of the monitor client list object 52 , both the application suite querying component 24 and the supervisor suite querying component 224 register with the monitoring component 50 and create communication objects 26 , 226 respectively . the application suite querying component 24 and the supervisor suite querying component 224 operate independently of each other , sending status messages to their respective objects within their respective polling intervals . only if the monitoring component 50 receives a heartbeat valid signal from each of the application suite 12 and the supervisor suite 212 will the monitoring component 50 generate and transmit a heartbeat valid signal to the heartbeat monitor 60 . if either the application suite 12 or the supervisor suite 212 does not provide an application valid signal , then the monitoring component 50 will generate and transmit a heartbeat invalid signal to the heartbeat monitor 60 . the monitoring component 50 may also update the event log 62 with details of which application suite ( 12 or 212 ) did transmit an application valid signal , and which application suite ( 12 or 212 ) did not transmit an application valid signal . it should now be appreciated that these embodiments have the advantage of providing a simple interface for objects that may enter a halt state , thereby avoiding having to code a heartbeat generation routine into every object . each object can be individually coded as to how to respond to a status request most efficiently . a single monitoring suite is provided to record responses from different applications , and to provide a single signal from which a heartbeat can be generated . various modifications may be made to the above described embodiments within the scope of the invention , for example , in other embodiments , a different software architecture may be provided that does not use the microsoft . net framework . in other embodiments , an object in a halt state may be able to respond to a status request with an inactive bit ( indicating that at least one of the objects is in a halt state ). in such embodiments , this response may generate a “ notalive ” event at the querying component , which may be used by the communication object to generate and transmit an application invalid signal to the monitoring component . alternatively , the communication object may not generate any signal , and the absence of an application valid signal may be used by the monitoring component to generate and transmit a heartbeat invalid signal . in other embodiments , instead of the absence of an application valid signal being used to trigger a heartbeat invalid signal , the communication object may generate and transmit a heartbeat invalid signal , which can be used to trigger a heartbeat invalid signal . in other embodiments , a more complex defined interface 38 may be provided than described in the above embodiments . for example , the interface may allow for more details about the thread that was not executing , or any underlying problem causing the thread to halt . in other embodiments , the value of the time ( the response time ) and intervals ( polling interval , reporting interval , and heartbeat interval ) may be different to those provided above . in other embodiments , the polling interval may be triggered by an event rather than the elapse of time . in other embodiments , the heartbeat system may be used on a computing device other than a self - service terminal . in other embodiments , the heartbeat system may be used on a self - service terminal other than an atm . in other embodiments , the querying component 24 may be programmed with a list of objects that support the defined interface 38 . the steps of the methods described herein may be carried out in any suitable order , or simultaneously where appropriate . the methods described herein may be performed by software in machine readable form on a tangible storage medium or as a propagating signal . the terms “ comprising ”, “ including ”, “ incorporating ”, and “ having ” are used herein to recite an open - ended list of one or more elements or steps , not a closed list . when such terms are used , those elements or steps recited in the list are not exclusive of other elements or steps that may be added to the list . unless otherwise indicated by the context , the terms “ a ” and “ an ” are used herein to denote at least one of the elements , integers , steps , features , operations , or components mentioned thereafter , but do not exclude additional elements , integers , steps , features , operations , or components .