Patent attributes
An independent product upgrade function is associated with each of multiple software products installed in a set of multiple computing devices. Responsive to a triggering event, each upgrade function determines whether the corresponding product can be updated based on rules for the corresponding product. Upgrade may be dependent on other products, but the upgrade function need not know the conditions for upgrading other products. If a product can be updated, update is performed and all other products are notified. Each of the other product upgrade functions then determines whether its corresponding product can be upgraded as a result of the recent upgrade to the first product, and if so, another set of notifications is sent. This cycle continues until all dependent products have been updated. Upgrade functions preferably operate in a peer-to-peer relationship, and upgrade can be initiated in any node.