• Title/Summary/Keyword: Software Refactoring

Search Result 39, Processing Time 0.034 seconds

A Systematic Literature Survey of Software Metrics, Code Smells and Refactoring Techniques

  • Agnihotri, Mansi;Chug, Anuradha
    • Journal of Information Processing Systems
    • /
    • v.16 no.4
    • /
    • pp.915-934
    • /
    • 2020
  • Software refactoring is a process to restructure an existing software code while keeping its external behavior the same. Currently, various refactoring techniques are being used to develop more readable and less complex codes by improving the non-functional attributes of software. Refactoring can further improve code maintainability by applying various techniques to the source code, which in turn preserves the behavior of code. Refactoring facilitates bug removal and extends the capabilities of the program. In this paper, an exhaustive review is conducted regarding bad smells present in source code, applications of specific refactoring methods to remove that bad smell and its effect on software quality. A total of 68 studies belonging to 32 journals, 31 conferences, and 5 other sources that were published between the years 2001 and 2019 were shortlisted. The studies were analyzed based on of bad smells identified, refactoring techniques used, and their effects on software metrics. We found that "long method", "feature envy", and "data class" bad smells were identified or corrected in the majority of studies. "Feature envy" smell was detected in 36.66% of the total shortlisted studies. Extract class refactoring approach was used in 38.77% of the total studies, followed by the move method and extract method techniques that were used in 34.69% and 30.61% of the total studies, respectively. The effects of refactoring on complexity and coupling metrics of software were also analyzed in the majority of studies, i.e., 29 studies each. Interestingly, the majority of selected studies (41%) used large open source datasets written in Java language instead of proprietary software. At the end, this study provides future guidelines for conducting research in the field of code refactoring.

Analysis of Energy Efficiency for Code Refactoring Techniques (코드 리팩토링 기법의 전력 효율성 분석)

  • Park, Jae-Jin;Kim, Doohwan;Hong, Jang Eui
    • KIPS Transactions on Software and Data Engineering
    • /
    • v.3 no.3
    • /
    • pp.109-118
    • /
    • 2014
  • Code refactoring focuses on enhancing the maintainability of software to extend its lifetime. However as software applications were varied and the range of its usage becomes broaden, there are some efforts to improve software qualities like performance or reliability as well as maintainability using code refactoring techniques. Recently, as low-energy software has become one of critical issues in mobile environment, developing energy efficient software through code refactoring becomes an important one. Therefore this paper has its goal to investigate whether the existing refactoring techniques can support energy efficient software generation or not. That is to say, the existing code refactoring techniques can cause the minus of energy efficiency because they did not considered the energy consumption in their refactoring process. This paper experiments and analyzes to check whether the M. Fowler's code refactoring techniques can support the energy efficient software generation or not. Our research result can give to software developer some informations about energy-efficient refactoring techniques, and can support the development of software that has high maintainability and good energy efficiency.

Analyzing Characteristics of Code Refactoring for Python Deep-Learning Applications (파이썬 딥러닝 응용의 코드 리팩토링 특성 분석)

  • Kim, Dong Kwan
    • The Journal of the Korea Contents Association
    • /
    • v.22 no.10
    • /
    • pp.754-764
    • /
    • 2022
  • Code refactoring refers to a maintenance task to change the code of a software system in order to consider new requirements, fix bugs, and restructure code. There have been various studies of refactoring subjects such as refactoring types, refactoring benefits, and CASE tools. However, Java applications rather than python ones have been benefited by refactoring-based coding practices. There are few cases of refactoring stuides on Python applications. This paper finds and analyzes single refactoring operations and composite refactoring operations for Python-based deep learning systems. In addition, we find that there is a statistically significant difference in the frequency of occurrence of single and complex refactoring operations in the two groups of deep learning applications and typical Python applications. Furthermore, we analyze keywords of commit messages to catch refactoring intentions of software developers.

Extension of Code Refactoring Technique to Support Energy Efficiency and Language Conversion of Embedded Software (임베디드 소프트웨어의 에너지 효율성과 언어 변환 지원을 위한 코드 리팩토링 기법 확장)

  • Nam, Seungwoo;Hong, Jang-Eui
    • Journal of Convergence for Information Technology
    • /
    • v.8 no.2
    • /
    • pp.91-103
    • /
    • 2018
  • Refactoring is an engineering technique for securing the quality of existing legacy code, improving the internal structure without changing the functionality of the software. Along with the reuse of open source software, reuse of source code through programming language conversion is increasingly required due to technical or market requirements. In this situation, the refactoring technique including language conversion as well as energy efficiency is considered to be an important means for improving the productivity and the quality of embedded software development. This paper proposes a code refactoring technique that converts the grammar and structure of a programming language into those of a different language through comparison and mapping, in addition to the existing energy efficient refactoring technique. The use of the proposed refactoring technique can expect to improve the competitiveness of the product through rapid software development and quality improvement by coping with the environment change of the software development language and enhancing the reuse of the existing code.

Refactoring Legacy Software for Component-Based Reuse (컴포넌트 기반 재사용을 위한 레거시 소프트웨어 리팩토링)

  • Cho, Hyun;Choi, Soon-Kyu;Kim, Eun-Young
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2002.10d
    • /
    • pp.55-57
    • /
    • 2002
  • IT 기술이 급격히 변화하더라도 새롭게 개발되는 대부분 소프트웨어의 핵심 부분은 기존에 존재하는 소프트웨어를 재사용하여 구현되어지는 경우가 많다. 그러나, 소프트웨어가 최초로 개발된 후 시간이 흐르고 빈번한 수정이 가해지게되면 소프트웨어는 필연적으로 최초의 형상과 많이 달라져 소프트웨어의 효과적인 재사용을 어렵게 한다. 이러한 레거시 소프트웨어를 재사용하기 위해 Refactoring을 적용하여 레거시 소프트웨어를 컴포넌트화하고 이를 재사용하고자 한다. 또한, Refactoring에 관련된 일련의 활동을 Activity로 보고 변경 관리의 대상으로 선정하여 이를 관리함으로써 Refactoring 활동을 평가하고자 한다.

  • PDF

Application Consideration of Machine Learning Techniques in Satellite Systems

  • Jin-keun Hong
    • International journal of advanced smart convergence
    • /
    • v.13 no.2
    • /
    • pp.48-60
    • /
    • 2024
  • With the exponential growth of satellite data utilization, machine learning has become pivotal in enhancing innovation and cybersecurity in satellite systems. This paper investigates the role of machine learning techniques in identifying and mitigating vulnerabilities and code smells within satellite software. We explore satellite system architecture and survey applications like vulnerability analysis, source code refactoring, and security flaw detection, emphasizing feature extraction methodologies such as Abstract Syntax Trees (AST) and Control Flow Graphs (CFG). We present practical examples of feature extraction and training models using machine learning techniques like Random Forests, Support Vector Machines, and Gradient Boosting. Additionally, we review open-access satellite datasets and address prevalent code smells through systematic refactoring solutions. By integrating continuous code review and refactoring into satellite software development, this research aims to improve maintainability, scalability, and cybersecurity, providing novel insights for the advancement of satellite software development and security. The value of this paper lies in its focus on addressing the identification of vulnerabilities and resolution of code smells in satellite software. In terms of the authors' contributions, we detail methods for applying machine learning to identify potential vulnerabilities and code smells in satellite software. Furthermore, the study presents techniques for feature extraction and model training, utilizing Abstract Syntax Trees (AST) and Control Flow Graphs (CFG) to extract relevant features for machine learning training. Regarding the results, we discuss the analysis of vulnerabilities, the identification of code smells, maintenance, and security enhancement through practical examples. This underscores the significant improvement in the maintainability and scalability of satellite software through continuous code review and refactoring.

Code Refactoring Techniques Based on Energy Bad Smells for Reducing Energy Consumption (Energy Bad Smells 기반 소모전력 절감을 위한 코드 리팩토링 기법)

  • Lee, Jae-Wuk;Kim, Doohwan;Hong, Jang-Eui
    • KIPS Transactions on Software and Data Engineering
    • /
    • v.5 no.5
    • /
    • pp.209-220
    • /
    • 2016
  • While the services of mobile devices like smart phone, tablet, and smart watch have been increased and varied, the software embedded into such devices has been also increased in size and functional complexity. Therefore, increasing operation time of mobile devices for serviceability became an important issue due to the limitation of battery power. Recent studies focus on the software development having efficient behavioral patterns because the energy consumption of mobile devices is caused by software behaviors which control the hardware operations. However, it is often difficult to develop the embedded software with considering energy-efficiency and behavior optimization due to the short development cycle of the mobile services in many cases. Therefore, this paper proposes the refactoring techniques for reducing energy consumption, and enables to fulfill the energy requirements during software development and maintenance. We defined energy bad smells with the code patterns that can excessively consume the energy, and our refactoring techniques are to remove these bad smells. We performed some case studies to verify the usefulness of our refactoring techniques.

Bayesian Network-based Probabilistic Management of Software Metrics for Refactoring (리팩토링을 위한 소프트웨어 메트릭의 베이지안 네트워크 기반 확률적 관리)

  • Choi, Seunghee;Lee, Goo Yeon
    • Journal of KIISE
    • /
    • v.43 no.12
    • /
    • pp.1334-1341
    • /
    • 2016
  • In recent years, the importance of managing software defects in the implementation stage has emerged because of the rapid development and wide-range usage of intelligent smart devices. Even if not a few studies have been conducted on the prediction models for software defects, their outcomes have not been widely shared. This paper proposes an efficient probabilistic management model of software metrics based on the Bayesian network, to overcome limits such as binary defect prediction models. We expect the proposed model to configure the Bayesian network by taking advantage of various software metrics, which can help in identifying improvements for refactoring. Once the source code has improved through code refactoring, the measured related metric values will also change. The proposed model presents probability values reflecting the effects after defect removal, which can be achieved by improving metrics through refactoring. This model could cope with the conclusive binary predictions, and consequently secure flexibilities on decision making, using indeterminate probability values.

Refactoring Effectiveness Analysis for Software Quality Enhancement : using AIS Mediation Server Program (소프트웨어 품질 향상을 위한 리팩토링 효과 분석 : AIS 중개 서버 프로그램을 대상으로)

  • Lee, Seo-Jeong;Lee, Jae-Wook;Hwang, Hoon-Kyu;Lee, Jang-Se
    • Journal of Navigation and Port Research
    • /
    • v.36 no.5
    • /
    • pp.363-370
    • /
    • 2012
  • Recently, International Maritime Organization has been developing e-navigation implementation strategy plan, which is focused on various services for vessel safety navigation. Then, different kinds of software will be developed in maritime area and with this, the quality issues are to be expected becoming more important. In this paper, we adopt software refactoring techniques to reduce the complexity of structure on source code level. It makes software program more effective to understand and modify, without any change of outward behavior. The existing AIS broadcast server program is used as an example for our trial, and calculating coupling and cohesion metric are introduced to analyze the refactoring effect, taking account of the maintainability of IEC/ISO9126 software quality standards.

Prioritization-Based Model for Effective Adoption of Mobile Refactoring Techniques

  • Alhubaishy, Abdulaziz
    • International Journal of Computer Science & Network Security
    • /
    • v.21 no.12spc
    • /
    • pp.375-382
    • /
    • 2021
  • The paper introduces a model for evaluating and prioritizing mobile quality attributes and refactoring techniques through the examination of their effectiveness during the mobile application development process. The astonishing evolution of software and hardware has increased the demand for techniques and best practices to overcome the many challenges related to mobile devices, such as those concerning device storage, network bandwidth, and energy consumption. A number of studies have investigated the influence of refactoring, leading to the enhancement of mobile applications and the overcoming of code issues as well as hardware issues. Furthermore, rapid and continuous mobile developments make it necessary for teams to apply effective techniques to produce reliable mobile applications and reduce time to market. Thus, we investigated the influence of various refactoring techniques on mobile applications to understand their effectiveness in terms of quality attributes. First, we extracted the most important mobile refactoring techniques and a set of quality attributes from the literature. Then, mobile application developers from nine mobile application teams were recruited to evaluate and prioritize these quality attributes and refactoring techniques for their projects. A prioritization-based model is examined that integrates the lightweight multi-criteria decision making method, called the best-worst method, with the process of refactoring within mobile applications. The results prove the applicability and suitability of adopting the model for the mobile development process in order to expedite application production while using well-defined procedures to select the best refactoring techniques. Finally, a variety of quality attributes are shown to be influenced by the adoption of various refactoring techniques.