Software Bloat and Wasted Joules: Is Modularity a Hurdle to Green Software?
Status:: π©
Links:: Energy Debt | Technical Debt | Impacts of Software Modularity on Energy Efficiency
Metadata
Authors:: Bhattacharya, Suparna; Gopinath, K.; Rajamani, Karthick; Gupta, Manish
Title:: Software Bloat and Wasted Joules: Is Modularity a Hurdle to Green Software?
Publication Title:: "Computer"
Date:: 2011
URL:: http://ieeexplore.ieee.org/document/6017179/
DOI:: 10.1109/MC.2011.293
Bibliography
Bhattacharya, S., Gopinath, K., Rajamani, K., & Gupta, M. (2011). Software Bloat and Wasted Joules: Is Modularity a Hurdle to Green Software? Computer, 44(9), 97β101. https://doi.org/10.1109/MC.2011.293
Zotero
Type:: #zotero/journalArticle
Keywords:: [β
, Green Software, Software Architecture]
Relations
Abstract
The paper discusses that adopting an integrated analysis of software bloat and hardware platforms is necessary to realizing modular software that's also green.
Notes & Annotations
π Annotations (imported on 2023-08-24#11:59:28)
During the past two decades, software design paradigms have evolved to prioritize programmer productivity over runtime efficiency, in part due to dramatic improvements in performance enabled through CMOS technology.
For example, moving a single date field from a SOAP message to a Java object in a stock-brokerage benchmark involved 58 transformations and generated 70 objects. Many of these were facilitative transformations for reusing existing parsers, serializers, and formatters. The observations highlight the considerable overhead expended in supplying data to the applicationβs core business logic.
To date, server energy-optimization efforts have largely focused on the design of energy-efficient hardware and energy-aware thermal and power management techniques. Energyproportional design has gained interest as a principled approach to achieve significant energy savings. However, reducing energy waste due to software inefficiencies requires a new perspective.
The traditional maxim for creating lean software, as advocated by David Parnas and Niklaus Wirth, among others, is to engineer it right by adopting minimalist design principles that avoid bloat. Such software is built in a series of stepwise refinements carefully crafted to provision each potential use case without sacrificing extensibility or reuse. The Linux kernel illustrates the successful adoption of this principle to efficiently satisfy diverse environments and requirements.
Modularity is fundamental to the composability of software packages and to their rapid development and deployment. However, the prevalent approach to achieving it can lead to significant software bloat, which is detrimental to power, performance, and energy efficiency.
The real issue isnβt modularity itself but that, because of the difficulty in modularizing functions exactly as needed, programmers inadvertently introduce superfluous processing and data overhead for reuse.