• Title/Summary/Keyword: refactoring

Search Result 66, Processing Time 0.026 seconds

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.

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.

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.

Automated Code Smell Detection and Refactoring using OCL (OCL을 이용한 자동화된 코드스멜 탐지와 리팩토링)

  • Kim, Tae-Woong;Kim, Tae-Gong
    • The KIPS Transactions:PartD
    • /
    • v.15D no.6
    • /
    • pp.825-840
    • /
    • 2008
  • Refactoring is a kind of software modification process that improves system qualities internally but maintains system functions externally. What should be improved on the existing source codes should take precedence over the others in such a modification process using this refactoring. Martin Fowler and Kent Beck proposed a method that identifies code smells for this purpose. Also, some studies on determining what refactoring will be applied to which targets through detecting code smells in codes were presented. However, these studies have a lot of disadvantages that show a lack of precise description for such code smells and detect limited code smells only. In addition, these studies showed other disadvantages that generate ambiguity in behavior preservation due to the fact that a description method of pre-conditions for the behavior preservation is included in a refactoring process or unformalized. Thus, our study represents a precise specification of code smells using OCL and proposes a framework that performs a refactoring process through the automatic detection of code smells using an OCL interpreter. Furthermore, we perform the automatic detection in which the code smells are be specified by using OCL to the java program and verify its applicability and effectivity through applying a refactoring process.

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.

Nonfunctionality-driven Design Refactoring (비기능성 기반 디자인 재구성)

  • 권재은;김형호;배두환
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2000.10a
    • /
    • pp.367-369
    • /
    • 2000
  • 소프트웨어 설계 단계에서 기능성(functionality)과 더불어 비기능성 (non-functionality)에 관한 고려가 매우 중요하다. 그럼에도 불구하고 비기능성 고유의 복잡성으로 인해 두가지를 함께 해결하기는 매우 어려운 문제였고, 비기능성을 구현하는데 많은 난점이 있어왔다. 우리는 이러한 문제를 해결하기 위해 기능성의 유지를 보장하는 소프트웨어 수정 방법인 재구성(refactoring)에 착안하였다. 이를 사용하여 기능성과 독립적으로 비기능성을 획득하도록 설계를 수정할 수 있도록 도와주는 체계적인 비기능성 기반 디자인 재고성(Nonfunctionality-driven Design Refactoring)을 제안한다. 또한 우리가 제시한 방법을 간단한 웹 쇼핑몰 시스템 예제에 적용하여 확장성이 증가하도록 디자인 재구성을 하여 본다.

  • PDF

A Study of Positive Object-Oriented Refactoring Technique for the Software Reuse (소프트웨어 재사용을 위한 실증적 객체지향 Refactoring 프로세스 설계)

  • 박진호;이종호;류성열
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2000.10a
    • /
    • pp.382-384
    • /
    • 2000
  • 현재 기업들은 거의 모든 부분이 전산화 작업으로 이루어지고 있으며, 기업의 중요한 업무는 모두 방대한 시스템이 사람을 대신해서 처리해 주고 있는 실정이다. 하지만 시스템 유지보수의 체계적인 프로세스에 대해서는 현재 연구된 바가 없어 쉽게 적용할 수 없는 문제가 존재한다. 재공학은 재사용하려는 소프트웨어를 분석, 재정의, 재문서화 등의 소프트웨어 역공학 방법을 통하여 좀더 효율적으로 소프트웨어를 분석할 수 있고, 순공학을 통해 문제점들의 교환과 새로운 구조와 시스템의 수정을 통해 더욱 경제적인 시스템을 만들 수 있다. 객체지향 어플리케이션의 Refactoring에서는 대표적으로 클래스간의 공통성을 추출하고, 이를 일반화시켜 추상클래스를 생성 및 삭제, 이동하는 과정을 통해 소프트웨어의 구조를 변경시켜 시스템의 성능향상을 도모하게 된다. 본 논문에서는 시스템의 재사용을 위한 실증적인 객체지향 Refactoring 기법을 제시한다.

  • PDF

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

Analysis of Refactoring Techniques and Tools for Source Code Quality Improvement (소스 코드 품질 향상을 위한 리팩토링 기법 및 도구 분석)

  • Kim, Doohwan;Jung, YooJin;Hong, Jang-Eui
    • Journal of Convergence Society for SMB
    • /
    • v.6 no.4
    • /
    • pp.137-150
    • /
    • 2016
  • Along with the rapid development of IT technology and business services, the effort to provide new services to the customers has been increasing, and also the improvement and enhancement of legacy systems are continuously occurring for rapid service delivery. In this situation, the quality assurance of the source code for the legacy system became a key technical elements that can quickly respond to the service needs. Refactoring is an engineering technique to ensure the quality for the legacy code, and essential for the improvement and extension of the legacy system in order to provide value-added services. This paper proposes some features of refactoring techniques through surveying and analyzing the existing refactoring techniques and tools to enhance source code quality. When service developers want to refactor the source code of the legacy system to enhance code quality, our proposed features may provide with the guidance on what to use any technique and tool in their work. This can improve the source code quality with correct refactoring and without trial and error, and will also enable rapid response to new services.