Patent ID: 8364786

Claim:
A method for building a software stack for a target device to support a software application, the method comprising: identifying programming language abstractions that are required to support the software application based on a semantic analysis of a specification of the software application; receiving a set of resource constraints for the target device, wherein the resource constraints comprise available memory size, power requirements, and bandwidth capability for the device; for each identified programming language abstraction, analyzing a plurality of available implementations of the identified programming language abstraction based on the set of received resource constraints for the target device, wherein each implementation characterizes the service provided by the abstraction at varying capacities of memory, power, and bandwidth requirements; selecting a set of implementations for the identified programming language abstractions based on the analyzing, wherein the selected set of implementations satisfy the received resource constraints for the target device; building, by computer, the software stack based on the selected implementations of the identified programming language abstractions, wherein the software stack meets the received resource constraints for the target device; and loading the software stack and the software application on the target device.