Foundation works by collecting data together and then making inferences based on the collected data.
For example, Discovery logs on to a host and collects information about the processes that are running on it. It stores the gathered information as nodes in the datastore. If it subsequently sees a node for “/usr/apache/bin/httpd”, then it may (after some more investigation) conclude that the software called “Apache Webserver” is installed on that host and create a Software Instance node.
That’s the difference in a nutshell – a package is a node that discovery creates when it scans a host and retrieves its package list, whereas a software instance is a node that is created because Foundation decided that a piece of software is installed on a host. The former is “directly discovered data”, or DDD, and the latter is “inferred data”.
In the Foundation UI, you can click on the “show provenance” button on any inferred data (Software Instance, Business Application Instance, etc) page to see how Foundation came to its conclusion.