Before revision:  The challenge is linking hardware energy consumption to the high-level application source code, considering the complex run-time context , such as thread scheduling, user inputs and the abstraction of the virtual machine. Traditional energy modeling is bottom-to-top, but this approach faces obstacles when software consists of a number of abstract layers.
After revision:  The challenge is linking hardware energy consumption to the high-level application source code, considering the complex run-time context and software stack. Traditional techniques build the energy model by mapping a hardware energy model onto software constructs; this approach faces obstacles when software consists of a number of abstract layers.