A relatively new quality aspect of software is low carbon and sustainable computing, minimizing energy consumption and therefore carbon emissions due to that computing. Estimates put the share by IT-related electricity consumption between 5% and 10% of the worldwide electricity consumption, and this is still growing. This makes it important to develop new methods and approaches to help reduce the impact of IT on the climate.
Energy consumption of IT originates from the following sources: computing, transferring, storing, and keeping devices powered on. Visualizing energy consumption to a user (or developer) helps raise awareness, especially when build in a programming environment. If the energy consumption, using both dynamic and static methods, can be predicted, this information can be used to select the best implementation for a given task. This selection can happen by the programmer or in code by taking the runtime conditions of a system into account. The aforementioned approaches fall in the larger field of resource analysis.
Another approach is to focus on the abstraction layers in IT systems, as in practice these layers make analyzing code hard and most layers add some runtime overhead on top. By using smarter compiler technology, these abstraction layers can be removed. Different abstractions can also be created to reduce the overhead and/or make analyzing programs easier.