Software approaches for energy-efficient system design