Software discovery library size matters less than how fast it is being updated with what customers deploy on their machines. Even a million-rule library is useless if it does not include the exact titles and current versions deployed, which resemble an ever-shifting kaleidoscope. It does not matter if you start from scratch; the efficiency of the process is much more important.
Efficient library management requires a corresponding software discovery engine with the logic that, combined with software discovery rules, transforms raw data into neatly structured software discovery results. Writing it presents interesting technological challenges. What are the requirements? Well, software applications:
Every ITAM solution has to tackle this reality somehow. The basic idea is not rocket science, but there is an important requirement that should be addressed. For each discovery result, you should also be able to drill down to the source elements (files, add/removes, etc.) that have triggered it. It is important for troubleshooting because, otherwise, software asset managers would have to believe your discovery results blind.
There are relatively simple libraries out there where each file maps to only one given product name/version; such cases are a no-brainer. It becomes much more complex with multiple signature files in different folders. Once you have gone through all the steps to the final software discovery results, the only link left to the items that triggered them may well be the discovery path. One approach is to combine software discovery results with a database that stores the file structure of each machine, such as that of Microsoft Windows Search Indexer. This is however a very demanding database to maintain for hundreds of thousands of machines. Clients must keep it running to allow them assess the software discovery triggers.
Inferapp's Open Software Discovery Engine avoids this dependency even for the most complex discovery rules, which is, at least to the best of the authors knowledge, a solution unique to the ITAM industry. The code is available on GitHub, both in C++ and Java. Happy coding!