On energy debt: managing consumption on evolving software

This paper introduces the concept of energy debt: a new metric, reflecting the implied cost in terms of energy consumption over time, of choosing a flawed implementation of a software system rather than a more robust, yet possibly time consuming, approach. A flawed implementation is considered to contain code smells, known to have a negative influence on the energy consumption. Similar to technical debt, if energy debt is not properly addressed, it can accumulate an energy "interest". This interest will keep increasing as new versions of the software are released, and eventually reach a point where the interest will be higher than the initial energy debt. Addressing the issues/smells at such a point can remove energy debt, at the cost of having already consumed a significant amount of energy which can translate into high costs. We present all underlying concepts of energy debt, bridging the connection with the existing concept of technical debt and show how to compute the energy debt through a motivational example.

[1]  Ming Zhang,et al.  Where is the energy spent inside my app?: fine grained energy accounting on smartphones with Eprof , 2012, EuroSys '12.

[2]  Foutse Khomh,et al.  EARMO: An Energy-Aware Refactoring Approach for Mobile Apps , 2018, IEEE Transactions on Software Engineering.

[3]  Ward Cunningham,et al.  The WyCash portfolio management system , 1992, OOPSLA '92.

[4]  Jácome Cunha,et al.  Energy efficiency across programming languages: how do energy, time, and memory relate? , 2017, SLE.

[5]  Luis Cruz,et al.  Using Automatic Refactoring to Improve Energy Efficiency of Android Apps , 2018, CIbSE.

[6]  Robert L. Nord,et al.  Technical Debt: From Metaphor to Theory and Practice , 2012, IEEE Software.

[7]  Alireza Sadeghi,et al.  EcoDroid: An Approach for Energy-Based Ranking of Android Apps , 2015, 2015 IEEE/ACM 4th International Workshop on Green and Sustainable Software.

[8]  Abram Hindle,et al.  Energy Profiles of Java Collections Classes , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[9]  Apostolos Ampatzoglou,et al.  A Framework for Managing Interest in Technical Debt: An Industrial Validation , 2018, 2018 IEEE/ACM International Conference on Technical Debt (TechDebt).

[10]  Eric Allman,et al.  Managing Technical Debt , 2012, ACM Queue.

[11]  Ramesh Govindan,et al.  Calculating source line level energy information for Android applications , 2013, ISSTA.

[12]  Marco Couto,et al.  Energy Refactorings for Android in the Large and in the Wild , 2020, 2020 IEEE 27th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[13]  Peng Liang,et al.  A systematic mapping study on technical debt and its management , 2015, J. Syst. Softw..

[14]  Gabriele Bavota,et al.  Mining energy-greedy API usage patterns in Android apps: an empirical study , 2014, MSR 2014.

[15]  Jácome Cunha,et al.  jStanley: Placing a Green Thumb on Java Collections , 2018, 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[16]  P. Avgeriou,et al.  Establishing a framework for managing interest in technical debt , 2015, BMSD 2015.

[17]  Andrea De Lucia,et al.  On the impact of code smells on the energy consumption of mobile applications , 2019, Inf. Softw. Technol..

[18]  Angeliki-Agathi Tsintzira Technical Debt Quantification through Metrics: An Industrial Validation , 2019 .

[19]  Apostolos Ampatzoglou,et al.  Estimating the breaking point for technical debt , 2015, 2015 IEEE 7th International Workshop on Managing Technical Debt (MTD).

[20]  João Paulo Fernandes,et al.  Haskell in Green Land: Analyzing the Energy Behavior of a Purely Functional Language , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[21]  Rogério F. da Silva,et al.  The Challenge of Evaluating Virtual Communities of Practice: A Systematic Mapping Study , 2020, Interdisciplinary Journal of Information, Knowledge, and Management.

[22]  Jácome Cunha,et al.  The Influence of the Java Collection Framework on Overall Energy Consumption , 2016, 2016 IEEE/ACM 5th International Workshop on Green and Sustainable Software (GREENS).

[23]  Luis Cruz,et al.  Performance-Based Guidelines for Energy Efficient Mobile Applications , 2017, 2017 IEEE/ACM 4th International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[24]  Jácome Cunha,et al.  SPELLing out energy leaks: Aiding developers locate energy inefficient code , 2020, J. Syst. Softw..

[25]  Ramesh Govindan,et al.  Estimating Android applications' CPU energy usage via bytecode profiling , 2012, 2012 First International Workshop on Green and Sustainable Software (GREENS).

[26]  Matti Siekkinen,et al.  Modeling, Profiling, and Debugging the Energy Consumption of Mobile Devices , 2015, ACM Comput. Surv..

[27]  Rui Zhang,et al.  An Empirical Study of Practitioners' Perspectives on Green Software Engineering , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[28]  Jácome Cunha,et al.  Detecting Anomalous Energy Consumption in Android Applications , 2014, SBLP.

[29]  Lori L. Pollock,et al.  Initial explorations on design pattern energy usage , 2012, 2012 First International Workshop on Green and Sustainable Software (GREENS).

[30]  Foutse Khomh,et al.  Getting the most from map data structures in Android , 2018, Empirical Software Engineering.