1. A method for installing software on a computing device comprising: receiving, at a service provider, a first software installation request to install a first software functionality; accessing a software installation map comprising: a plurality of software elements representing a plurality of software files, a subset of the plurality of software elements associated with the first software functionality; a plurality of dependency pointers identifying functional dependencies between the plurality of software files; determining at least one installation route for installing the first software functionality, the at least one installation route identifying the subset of the plurality of software elements; and providing the installation route to a computing device.