A method for distributing software updates to one or more devices comprising: receiving one or more device states associated with the one or more devices at a service delivery platform separate from the one or more devices, each of the one or more device states including version information and wherein any of the one or more device states includes a plurality of computing component states associated with a plurality of computing components each contained in a respective one or the one or more devices, each of the plurality of computing component states including version information and where; the version information for each of the one or more device states and each of the plurality of associated computing component states are represented as a single hashed version information received from each of the one or more devices calculated using a hash of the version information associated with the one or more device states and each of the plurality of associated computing component states; storing the one or more device states and plurality of computing component states persistently; receiving a software update configuration at the service delivery platform, the software update configuration defining available software updates files and versions to be applied to a device and computing component; receiving one or more software update files at the service delivery platform associated with the software update configuration; determining a candidate device list by comparing a computed single hashed version information associated with the software update configuration version information with the single hashed version information from each of the one or more devices, the candidate device list containing references to one or more target devices, of the one or more devices, and associated plurality of computing components, and reference to the one or more software update files to apply to each of the associated one or more targeted devices and associated plurality of computing components, targeted to receive one or more of the one or more software update files; and transmitting each of the one or more software update files referenced in the candidate device list to the associated one more target devices. receiving one or more device states associated with the one or more devices at a service delivery platform separate from the one or more devices, each of the one or more device states including version information and wherein any of the one or more device states includes a plurality of computing component states associated with a plurality of computing components each contained in a respective one or the one or more devices, each of the plurality of computing component states including version information and where; the version information for each of the one or more device states and each of the plurality of associated computing component states are represented as a single hashed version information received from each of the one or more devices calculated using a hash of the version information associated with the one or more device states and each of the plurality of associated computing component states; storing the one or more device states and plurality of computing component states persistently; receiving a software update configuration at the service delivery platform, the software update configuration defining available software updates files and versions to be applied to a device and computing component; receiving one or more software update files at the service delivery platform associated with the software update configuration; determining a candidate device list by comparing a computed single hashed version information associated with the software update configuration version information with the single hashed version information from each of the one or more devices, the candidate device list containing references to one or more target devices, of the one or more devices, and associated plurality of computing components, and reference to the one or more software update files to apply to each of the associated one or more targeted devices and associated plurality of computing components, targeted to receive one or more of the one or more software update files; and transmitting each of the one or more software update files referenced in the candidate device list to the associated one more target devices.