1. A method for enabling extensibility in a sensing system, the method comprising: maintaining physical information, by a device database, on at least one deployed sensor node, wherein the physical information describes sensor-specific calibration information; maintaining a sensing module registry, wherein the sensing module registry includes a number of software modules that are available for extracting information from sensor data received from the at least one deployed sensor node; maintaining a set of context pairs, wherein a respective context pair represents a sensing need of a user or a sensing application; in response to state changes within the sensing module registry, generating a directed graph that represents data flow among deployed sensing devices and software modules, wherein the directed graph comprises a plurality of graph nodes that each represents an instance of a software module deployed on a sensor node, and further comprises one or more edges that each connects a first graph node to a second graph node to represent a configured interface of an output from a first software module instance to a second software module instance; in response to the set of context pairs changing: determining a set of graph nodes that satisfy a plurality of sensing needs associated with the set of context pairs, wherein a graph node corresponds to a sensor node that satisfies a respective sensing need represented by a context pair; and generating, based on the set of graph nodes, a composition of software module instances that are each deployed on a corresponding sensor node to extract information from the distributed sensor data, wherein the composition of software module instances satisfies the plurality of sensing needs of the user or the sensing application.