Empirically Investigating Energy Impacts Of Software Engineering Decisions
Software energy efficiency has become an important objective in a broad range of environments where reducing energy consumption is a high-priority goal (e.g., em- bedded systems in devices, mobile phones and tablets, laptops, and large data centers). Historically, software engineers were unconcerned with energy efficiency; instead they focused on quality attributes such as correctness, performance, reliability, and maintainability. Although the task of improving energy efficiency was left for compiler writers, operating system designers, and hardware engineers, software developers can further reduce the energy usage of the applications that they write beyond what can be achieved at lower system levels. Unfortunately, lack of information about how soft- ware engineering decisions impact energy consumption of applications and incorrect assumptions about the underlying causes of energy impacts prevent software developers fulfilling their role in reducing energy consumption.
In addition to reducing the energy consumption of an application, it is also important to maintain the application’s energy efficiency. Therefore, developers need to test their applications for energy consumption and energy issues while evolving them. However, the high costs of energy testing can adversely impact the planning process of application evolution since developers must anticipate performing energy testing in response to code changes.
In my dissertation, I aim to enable and support software engineers in developing and maintaining energy-efficient applications in two ways. First, I have conducted empirical studies that examine the software engineering decisions to improve developers’ understanding of how the decisions they make potentially impact the energy consumption of their applications. Second, I have developed a technique that predicts energy testing requirements of proposed code changes to help developers in making informed decisions and creating an effective timeline during the planning process of application evolution.