1,451 research outputs found
Definition, implementation and validation of energy code smells: an exploratory study on an embedded system
Optimizing software in terms of energy efficiency is one of the challenges that both research and industry will have to face in the next few years.We consider energy efficiency as a software product quality characteristic, to be improved through the refactoring of appropriate code pattern: the aim of this work is identifying those code patterns, hereby defined as Energy Code Smells, that might increase the impact of software over power consumption. For our purposes, we perform an experiment consisting in the execution of several code patterns on an embedded system. These code patterns are executed in two versions: the first one contains a code issue that could negatively impact power consumption, the other one is refactored removing the issue. We measure the power consumption of the embedded device during the execution of each code pattern. We also track the execution time to investigate whether Energy Code Smells are also Performance Smells. Our results show that some Energy Code Smells actually have an impact over power consumption in the magnitude order of micro Watts. Moreover, those Smells did not introduce a performance decreas
Predicting the Impact of Batch Refactoring Code Smells on Application Resource Consumption
Automated batch refactoring has become a de-facto mechanism to restructure
software that may have significant design flaws negatively impacting the code
quality and maintainability. Although automated batch refactoring techniques
are known to significantly improve overall software quality and
maintainability, their impact on resource utilization is not well studied. This
paper aims to bridge the gap between batch refactoring code smells and
consumption of resources. It determines the relationship between software code
smell batch refactoring, and resource consumption. Next, it aims to design
algorithms to predict the impact of code smell refactoring on resource
consumption. This paper investigates 16 code smell types and their joint effect
on resource utilization for 31 open source applications. It provides a detailed
empirical analysis of the change in application CPU and memory utilization
after refactoring specific code smells in isolation and in batches. This
analysis is then used to train regression algorithms to predict the impact of
batch refactoring on CPU and memory utilization before making any refactoring
decisions. Experimental results also show that our ANN-based regression model
provides highly accurate predictions for the impact of batch refactoring on
resource consumption. It allows the software developers to intelligently decide
which code smells they should refactor jointly to achieve high code quality and
maintainability without increasing the application resource utilization. This
paper responds to the important and urgent need of software engineers across a
broad range of software applications, who are looking to refactor code smells
and at the same time improve resource consumption. Finally, it brings forward
the concept of resource aware code smell refactoring to the most crucial
software applications
Rohelisema tarkvaratehnoloogia poole tarkvaraanalĂŒĂŒsi abil
Mobiilirakendused, mis ei tĂŒhjenda akut, saavad tavaliselt head kasutajahinnangud. Mobiilirakenduste energiatĂ”husaks muutmiseks on avaldatud mitmeid refaktoreerimis- suuniseid ja tööriistu, mis aitavad rakenduse koodi optimeerida. Neid suuniseid ei saa aga seoses energiatĂ”hususega ĂŒldistada, sest kĂ”igi kontekstide kohta ei ole piisavalt energiaga seotud andmeid. Olemasolevad energiatĂ”hususe parandamise tööriistad/profiilid on enamasti prototĂŒĂŒbid, mis kohalduvad ainult vĂ€ikese alamhulga energiaga seotud probleemide suhtes. Lisaks kĂ€sitlevad olemasolevad suunised ja tööriistad energiaprobleeme peamiselt a posteriori ehk tagantjĂ€rele, kui need on juba lĂ€htekoodi sees. Android rakenduse koodi saab pĂ”hijoontes jagada kaheks osaks: kohandatud kood ja korduvkasutatav kood. Kohandatud kood on igal rakendusel ainulaadne. Korduvkasutatav kood hĂ”lmab kolmandate poolte teeke, mis on rakendustesse lisatud arendusprotessi kiirendamiseks. Alustuseks hindame mitmete lĂ€htekoodi halbade lĂ”hnade refaktoreerimiste energiatarbimist Androidi rakendustes. SeejĂ€rel teeme empiirilise uuringu Androidi rakendustes kasutatavate kolmandate osapoolte vĂ”rguteekide energiamĂ”ju kohta. Pakume ĂŒldisi kontekstilisi suuniseid, mida vĂ”iks rakenduste arendamisel kasutada. Lisaks teeme sĂŒstemaatilise kirjanduse ĂŒlevaate, et teha kindlaks ja uurida nĂŒĂŒdisaegseid tugitööriistu, mis on rohelise Androidi arendamiseks saadaval. Selle uuringu ja varem lĂ€bi viidud katsete pĂ”hjal toome esile riistvarapĂ”histe energiamÔÔtmiste jÀÀdvustamise ja taasesitamise probleemid. Arendame tugitööriista ARENA, mis vĂ”ib aidata koguda energiaandmeid ja analĂŒĂŒsida Androidi rakenduste energiatarbimist. Viimasena töötame vĂ€lja tugitööriista REHAB, et soovitada arendajatele energiatĂ”husaid kolmanda osapoole vĂ”rguteekeMobile apps that do not drain the battery usually get good user ratings. To make mobile apps energy efficient many refactoring guidelines and tools are published that help optimize the app code. However, these guidelines cannot be generalized w.r.t energy efficiency, as there is not enough energy-related data for every context. Existing energy enhancement tools/profilers are mostly prototypes applicable to only a small subset of energy-related problems. In addition, the existing guidelines and tools mostly address the energy issues a posteriori, i.e., once they have already been introduced into the code.
Android app code can be roughly divided into two parts: the custom code and the reusable code. Custom code is unique to each app. Reusable code includes third-party libraries that are included in apps to speed up the development process. We start by evaluating the energy consumption of various code smell refactorings in native Android apps. Then we conduct an empirical study on the energy impact of third-party network libraries used in Android apps. We provide generalized contextual guidelines that could be used during app development
Further, we conduct a systematic literature review to identify and study the current state of the art support tools available to aid green Android development. Based on this study and the experiments we conducted before, we highlight the problems in capturing and reproducing hardware-based energy measurements. We develop the support tool âARENAâ that could help gather energy data and analyze the energy consumption of Android apps. Last, we develop the support tool âREHABâ to recommend energy efficient third-party network libraries to developers.https://www.ester.ee/record=b547174
Reducing energy usage in resource-intensive Java-based scientific applications via micro-benchmark based code refactorings
In-silico research has grown considerably. Today's scientific code involves long-running computer simulations and hence powerful computing infrastructures are needed. Traditionally, research in high-performance computing has focused on executing code as fast as possible, while energy has been recently recognized as another goal to consider. Yet, energy-driven research has mostly focused on the hardware and middleware layers, but few efforts target the application level, where many energy-aware optimizations are possible. We revisit a catalog of Java primitives commonly used in OO scientific programming, or micro-benchmarks, to identify energy-friendly versions of the same primitive. We then apply the micro-benchmarks to classical scientific application kernels and machine learning algorithms for both single-thread and multi-thread implementations on a server. Energy usage reductions at the micro-benchmark level are substantial, while for applications obtained reductions range from 3.90% to 99.18%.Fil: Longo, Mathias. Consejo Nacional de Investigaciones CientĂficas y TĂ©cnicas. Centro CientĂfico TecnolĂłgico Conicet - Tandil. Instituto Superior de IngenierĂa del Software. Universidad Nacional del Centro de la Provincia de Buenos Aires. Instituto Superior de IngenierĂa del Software; Argentina. University of Southern California; Estados UnidosFil: Rodriguez, Ana Virginia. Consejo Nacional de Investigaciones CientĂficas y TĂ©cnicas. Centro CientĂfico TecnolĂłgico Conicet - Tandil. Instituto Superior de IngenierĂa del Software. Universidad Nacional del Centro de la Provincia de Buenos Aires. Instituto Superior de IngenierĂa del Software; ArgentinaFil: Mateos Diaz, Cristian Maximiliano. Consejo Nacional de Investigaciones CientĂficas y TĂ©cnicas. Centro CientĂfico TecnolĂłgico Conicet - Tandil. Instituto Superior de IngenierĂa del Software. Universidad Nacional del Centro de la Provincia de Buenos Aires. Instituto Superior de IngenierĂa del Software; ArgentinaFil: Zunino Suarez, Alejandro Octavio. Consejo Nacional de Investigaciones CientĂficas y TĂ©cnicas. Centro CientĂfico TecnolĂłgico Conicet - Tandil. Instituto Superior de IngenierĂa del Software. Universidad Nacional del Centro de la Provincia de Buenos Aires. Instituto Superior de IngenierĂa del Software; Argentin
Test Smell: A Parasitic Energy Consumer in Software Testing
Traditionally, energy efficiency research has focused on reducing energy
consumption at the hardware level and, more recently, in the design and coding
phases of the software development life cycle. However, software testing's
impact on energy consumption did not receive attention from the research
community. Specifically, how test code design quality and test smell (e.g.,
sub-optimal design and bad practices in test code) impact energy consumption
has not been investigated yet. This study examined 12 Apache projects to
analyze the association between test smell and its effects on energy
consumption in software testing. We conducted a mixed-method empirical analysis
from two dimensions; software (data mining in Apache projects) and developers'
views (a survey of 62 software practitioners). Our findings show that: 1) test
smell is associated with energy consumption in software testing. Specifically
smelly part of a test case consumes 10.92\% more energy compared to the
non-smelly part. 2) certain test smells are more energy-hungry than others, 3)
refactored test cases tend to consume less energy than their smelly
counterparts, and 4) most developers lack knowledge about test smells' impact
on energy consumption. We conclude the paper with several observations that can
direct future research and developments
- âŠ