111 research outputs found

    Predicting the Impact of Batch Refactoring Code Smells on Application Resource Consumption

    Full text link
    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

    Using bad smell-driven code refactorings in mobile applications to reduce battery usage

    Get PDF
    Mobile devices are the most popular kind of computational device in the world. These devices have more limited resources than personal computers, and more importantly, battery consumption is always an issue since mobile devices rely on their battery as energy supply. On the other hand, to date, many applications are developed using the object-oriented (OO) paradigm, which has some inherent features, such as object creation, that inherently consume energy in the context of mobile development. These features at the same time enable for maintainability, flexibility, among other software quality-related advantages. Moreover, known code refactorings driven by bad smells can be applied to mobile applications to produce good OO designs, at the expense of potentially consuming more energy. Then, this paper presents an analysis to evaluate the preliminary trade-off between OO design purity and battery consumption.Sociedad Argentina de Informática e Investigación Operativa (SADIO

    Using bad smell-driven code refactorings in mobile applications to reduce battery usage

    Get PDF
    Mobile devices are the most popular kind of computational device in the world. These devices have more limited resources than personal computers, and more importantly, battery consumption is always an issue since mobile devices rely on their battery as energy supply. On the other hand, to date, many applications are developed using the object-oriented (OO) paradigm, which has some inherent features, such as object creation, that inherently consume energy in the context of mobile development. These features at the same time enable for maintainability, flexibility, among other software quality-related advantages. Moreover, known code refactorings driven by bad smells can be applied to mobile applications to produce good OO designs, at the expense of potentially consuming more energy. Then, this paper presents an analysis to evaluate the preliminary trade-off between OO design purity and battery consumption.Sociedad Argentina de Informática e Investigación Operativa (SADIO

    Using bad smell-driven code refactorings in mobile applications to reduce battery usage

    Get PDF
    Mobile devices are the most popular kind of computational device in the world. These devices have more limited resources than personal computers, and more importantly, battery consumption is always an issue since mobile devices rely on their battery as energy supply. On the other hand, to date, many applications are developed using the object-oriented (OO) paradigm, which has some inherent features, such as object creation, that inherently consume energy in the context of mobile development. These features at the same time enable for maintainability, flexibility, among other software quality-related advantages. Moreover, known code refactorings driven by bad smells can be applied to mobile applications to produce good OO designs, at the expense of potentially consuming more energy. Then, this paper presents an analysis to evaluate the preliminary trade-off between OO design purity and battery consumption.Sociedad Argentina de Informática e Investigación Operativa (SADIO

    EMPIRICAL ASSESSMENT OF THE IMPACT OF USING AUTOMATIC STATIC ANALYSIS ON CODE QUALITY

    Get PDF
    Automatic static analysis (ASA) tools analyze the source or compiled code looking for violations of recommended programming practices (called issues) that might cause faults or might degrade some dimensions of software quality. Antonio Vetro' has focused his PhD in studying how applying ASA impacts software quality, taking as reference point the different quality dimensions specified by the standard ISO/IEC 25010. The epistemological approach he used is that one of empirical software engineering. During his three years PhD, he's been conducting experiments and case studies on three main areas: Functionality/Reliability, Performance and Maintainability. He empirically proved that specific ASA issues had impact on these quality characteristics in the contexts under study: thus, removing them from the code resulted in a quality improvement. Vetro' has also investigated and proposed new research directions for this field: using ASA to improve software energy efficiency and to detect the problems deriving from the interaction of multiple languages. The contribution is enriched with the final recommendation of a generalized process for researchers and practitioners with a twofold goal: improve software quality through ASA and create a body of knowledge on the impact of using ASA on specific software quality dimensions, based on empirical evidence. This thesis represents a first step towards this goa

    Supporting Sustainability and Technical Debt-Driven Design Decisions in Software Architectures

    Get PDF
    Degraded software usually incurs higher energy consumption, therefore suboptimal decisions in software architectures may lead to higher technical debt and less sustainable software products. There are metrics and tools to calculate technical debt and energy consumption of software, but it is required to provide mechanisms to store their relationship and how they change depending on the design decisions. In addition, there are different models for calculating the same metric and different metrics to measure technical debt and power consumption, and software engineers require selecting the most suitable model and metric depending on the software product context. This work presents a metamodel called ARCMEL to provide the required base of knowledge for supporting green-aware design decisions and to flexibly configure and select metrics and their models. ARCMEL has been implemented as part of the ARCMEL SCAT tool. Its validation is also presented in terms of completeness and flexibility

    Decomposing God Classes at Siemens

    Get PDF
    International audienceA group of developers at Siemens Digital Industry Division approached our team to help them restructure a large legacy system. Several problems were identified, including the presence of God classes (big classes with thousands of lines of code and hundred of methods). They had tried different approaches considering the dependencies between the classes, but none were satisfactory. Through interaction during the last three years with a lead software architect of the project, we designed a software visualization tool and an accompanying process that allows her to propose a decomposition of a God Class in a matter of one or two hours even without prior knowledge of the class (although actually implementing the decomposition in the source code could take a week of work). In this paper, we present the process that was formalized to decompose God Classes and the tool that was designed. We give details on the system itself and some of the classes that were decomposed. The presented process and visualisations have been successfully used for the last three years on a real industrial system at Siemens

    Rohelisema tarkvaratehnoloogia poole tarkvaraanalüüsi abil

    Get PDF
    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
    corecore