1. A method for managing a plurality of computing machines, the method comprising: accessing a catalogue memory structure storing a plurality of component signatures for discovering corresponding software components and, for each of a plurality of software applications, an indication of one or more of the software components belonging to a software application and one or more connection signatures for detecting corresponding connections, each connection being a connection between at least two of the software components of the software application; discovering one or more of the software components being instantiated in a software image of each computing machine according to corresponding component signatures; detecting one or more of the connections each connection being established between at least two instantiated software components of different computing machines according to corresponding connection signatures; associating each software image with a software deployment of the software application of each established connection of the software image; receiving a restore command for restoring a target recovery point selected among a plurality of recovery points, each recovery point comprising snapshots of respective software images of one or more of the software deployments being directly or indirectly overlapped; and restoring the target recovery point in response to the restore command by restoring the snapshots associated with the target recovery point on corresponding computing machines.