• Title/Summary/Keyword: 복합 리팩토링

Search Result 6, Processing Time 0.02 seconds

The Composition Mechanism for Reusability of Refactoring (리팩토링 재사용을 위한 조립 메커니즘)

  • Kim, Kyung-Min;Kim, Tae-Gong
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2011.06b
    • /
    • pp.144-147
    • /
    • 2011
  • 최근 소프트웨어 개발에 리팩토링이 활성화되고 있다. 리팩토링에 대한 관심이 높아지면서 요소 리팩토링을 정의해서 이들의 조립을 통해 새로운 복합 리팩토링을 정의하려는 연구들이 많이 진행되고 있다. 그러나 이러한 연구들에서는 복합 리팩토링을 구성하고 있는 조립된 리팩토링의 종류가 요소 리팩토링으로 제한되어 있고, 조립 방법도 대부분 요소 리팩토링들의 순차적인 결합으로 되어 있는 경우에만 처리되고 있다. 이에 본 연구에서는 조립할 수 있는 리팩토링의 구성 요소를 요소 리팩토링뿐만 아니라 이미 정의되어 있는 복합 리팩토링도 가능하게 하고, 조건처리와 반복 등 다양한 방법으로 리팩토링들을 조립할 수 있는 메커니즘을 제안한다. 그리고 무순서반복 조립의 적용 가능성에 대한 증명 방법을 제안한다. 이를 통해 리팩토링들의 재사용성과 확장성을 향상시킬 수 있을 것이다.

The Meta-model for Composition of Refactoring (리팩토링 조립을 위한 메타모델)

  • Kim, Eun-Ji;Kim, Kyung-Min;Kim, Tae-Gong
    • Proceedings of the Korea Information Processing Society Conference
    • /
    • 2010.11a
    • /
    • pp.311-314
    • /
    • 2010
  • 리팩토링은 프로그램의 행위를 변경하지 않으면서 프로그램의 내부 구조를 수정하는 과정이다. 소프트웨어의 유지보수 측면에서 유용하기 때문에 리팩토링이 활발하게 이용되고 있다. 리팩토링에 대한 관심이 높아지면서 요소 리팩토링을 정의해서 이들의 조립을 통해 새로운 복합 리팩토링을 정의하려는 연구들이 많이 진행되고 있다. 그러나 이러한 연구들에서는 복합 리팩토링을 구성하고 있는 조립된 리팩토링의 종류가 요소 리팩토링으로 제한되어 있고, 조립 방법도 대부분 요소 리팩토링들의 순차적인 결합으로 되어 있는 경우에만 처리되고 있다. 이에 본 연구에서는 조립할 수 있는 리팩토링의 구성 요소를 요소 리팩토링뿐만 아니라 이미 정의되어 있는 복합 리팩토링도 가능하게 하고, 조건처리와 반복 등 다양한 방법으로 리팩토링들을 조립할 수 있는 메커니즘을 제안한다. 그리고 이러한 다양한 형태의 조립 메커니즘을 지원해주는 메타모델을 정의한다. 이를 통해 리팩토링들의 재사용성과 확장성을 향상시킬 수 있을 것이다.

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.

A Composition Check of Composite Refactorings Not Having a Specification of Precondition (선행조건이 명세되어 있지 않은 복합 리팩토링에 대한 조립성 검사)

  • Kim, Kyung-Min;Jang, Pil-Jae;Kim, Tae-Gong
    • The KIPS Transactions:PartD
    • /
    • v.18D no.1
    • /
    • pp.23-34
    • /
    • 2011
  • Refactoring has been actively used in recent software developments. Many studies on the processing of more large scaled composite refactorings have been conducted through the composition of elementary refactorings. It is important to verify the possibility of composition before the refactoring is performed, because the composite refactorings are processed to the sequence of composed elementary refactorings. In conventional studies, they verify the possibility of composition using the precondition of composite refactorings which are computed from the precondition and postcondition of elementary refactorings. They can not verify the possibility of composition in case which composite refactorings do not have a specification of precondition. Thus, we plan to verify the possibility of composition by using the elementary refactorings only without any additional definitions of the preconditions of composite refactorings. To achieve this goal, we proposes a specification method of elementary refactorings and a method for the composition check of refactorings. Then, we develop a prototype tool based on these methods. In addition, we verify the efficiency of our methods through case studies.

A Study on the Detection Method of Composite Refactoring Opportunities (복합 리팩토링 기회의 탐지 방법에 관한 연구)

  • Kim, Kyung-Min;Kim, Tae-Gong
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2012.06b
    • /
    • pp.223-225
    • /
    • 2012
  • 최근 소프트웨어 개발에 리팩토링이 활성화되고 있다. 리팩토링에 대한 관심이 높아지면서 요소 리팩토링을 정의해서 이들의 조립을 통해 더 큰 단위의 복합 리팩토링을 정의하려는 연구들이 많이 진행되고 있다. 복합 리팩토링을 이용하여 기존 코드의 설계를 개선하기 위해서는 복합 리팩토링의 적용에 앞서 개선할 점이 무엇인지 아는 것이 우선이다. 이처럼 리팩토링의 적용이 필요한 상황을 리팩토링 기회라고 한다. 이에 본 연구에서는 복합 리팩토링 기회를 탐지하는 방법을 제안한다. 그리고 제안한 방법으로 복합 리팩토링의 기회를 직접 탐지해봄으로써 본 연구의 효용성을 확인해본다.

System Optimization Technique using Crosscutting Concern (크로스커팅 개념을 이용한 시스템 최적화 기법)

  • Lee, Seunghyung;Yoo, Hyun
    • Journal of Digital Convergence
    • /
    • v.15 no.3
    • /
    • pp.181-186
    • /
    • 2017
  • The system optimization is a technique that changes the structure of the program in order to extract the duplicated modules without changing the source code, reuse of the extracted module. Structure-oriented development and object-oriented development are efficient at crosscutting concern modular, however can't be modular of crosscutting concept. To apply the crosscutting concept in an existing system, there is a need to a extracting technique for distributed system optimization module within the system. This paper proposes a method for extracting the redundant modules in the completed system. The proposed method extracts elements that overlap over a source code analysis to analyze the data dependency and control dependency. The extracted redundant element is used to program dependency analysis for the system optimization. Duplicated dependency analysis result is converted into a control flow graph, it is possible to produce a minimum crosscutting module. The element extracted by dependency analysis proposes a system optimization method which minimizes the duplicated code within system by setting the crosscutting concern module.