• Title/Summary/Keyword: Software Refactoring

Search Result 39, Processing Time 0.022 seconds

Building a Code Visualization Process to Extract Bad Smell Codes (배드 스멜 코드 추출을 위한 코드 가시화 프로세스 구축)

  • Park, Jihoon;Park, Bo Kyung;Kim, Ki Du;Kim, R. Young Chul
    • KIPS Transactions on Software and Data Engineering
    • /
    • v.8 no.12
    • /
    • pp.465-472
    • /
    • 2019
  • Today, in many area the rise of software necessity there has been increasing the issue of the impotance of Good Software. Our reality in software industrial world has been happening to frequently change requirements at any stage of software life cycle. Furthermore this frequent changing will be increasing the design complexity, which will result in being the lower quality of software against our purpose the original design goals. To solve this problem, we suggest how to improve software design through refactoring based on reverse engineering. This is our way of diverse approaches to visually identify bad smell patterns in source code. We expect to improve software quality through refactoring on even frequently changing requirements.

Refactoring the Code for Visualizing Protein Database Information in a 3D Viewer for Software Reusability

  • Chun, Yoo-Jin;Ham, Seong-Il;Yang, San-Duk;Rhie, Arang;Park, Hyun-Seok
    • Genomics & Informatics
    • /
    • v.6 no.1
    • /
    • pp.50-53
    • /
    • 2008
  • We have released five Java Application Programming Interface (API) packages for viewing three-dimensional structures of proteins from the Protein Data Bank. To this end, the user interface of an earlier version has been refactored in an object-oriented fashion, in which refactoring is the process of changing a software system to improve its internal structure, without altering the external behavior. Various GUI design and features have been provided conveniently thanks to the Model-View-Control (MVC) model, which is an architectural pattern used in software engineering. Availability: The source code and API specification can be downloaded from https://sourceforge.net/projects/j3dpsv/.

An Approach to decide the location of a method using the logistic analysis (로지스틱 분석을 이용한 메소드 위치 결정 방법)

  • Jung Young A.;Park Young B,
    • The KIPS Transactions:PartD
    • /
    • v.12D no.7 s.103
    • /
    • pp.1017-1022
    • /
    • 2005
  • There are many changes in the software requirements during the whole software life cycle. These changes require modification of the software, and it is important to keep software quality and stability while we are modifying the software. Refactoring is one of the technology to keep software quality and stability during the software modification; there are many researches related to automatic refactoring. In this paper, we propose three factors for Move Method which is one of the refactoring technique. We applied binomial logistic analysis to data which were extracted from sample program by each factor. The result of this process was very close to the result of manual analysis by program experts. Furthermore, we found that these factors have major roll to determine Position of a method, and these factors can be used as a basis of finding optimal position of a method.

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

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.

A stepwise refinement method by applying Refactoring in system level design (시스템 레벨 설계에서 리팩토링을 적용한 단계적 상세화)

  • Kim, Hyun-Jong;Kong, Heon-Tag;Kim, Chi-Su
    • Journal of the Korea Academia-Industrial cooperation Society
    • /
    • v.12 no.6
    • /
    • pp.2840-2850
    • /
    • 2011
  • Programmers can use the Hardware-Software Co-Designing, in which they design a hardware system and software system simultaneously and then unify them, to design an embedded system. This study analyzes the problems of designing an embedded system and suggests applying the system-level design technique, which uses SpecC technology, as a solution to the problems. Also, it suggests systematic and concrete stepwise refinement by applying Refactoring technology in software engineering as a way to make the use of system-level stepwise refinement.

An Experiment in Refactoring an Object-Oriented CASE Tool (객체 지향 CASE 도구에 대한 재구조화 실험)

  • Jo, Jang-U;Kim, Tae-Gyun
    • The Transactions of the Korea Information Processing Society
    • /
    • v.6 no.4
    • /
    • pp.932-940
    • /
    • 1999
  • Object-oriented programming is often touted as promoting software reuse. However it is recognized that objected-oriented software often need to be restructured before it can be reused. refactoring is the process that changes the software structure to make it more reusable, easier to maintain and easire to be enhanced wit new functionalities. This paper desirbes experience gained and lessons learned from restructuring OODesigner, a Computer Aided Software Engineering(CASE) tool that supports Objects Modeling Technique(OMT). this tool supports a wide range of features such as constructing object modeler of OMT, managing information repository, documenting class resources, automatical generating C++ and java code, reverse engineering of C++ and Java cod, searching and reusing classes in the corresponding repository and collecting metrics data. although the version 1.x was developed using OMT(i.e the tool has been designed using OMT) and C++, we recognized that the potential maintenance problem originated from the ill-designed class architecture. Thus this version was totally restructured, resulting in a new version that is easier to maintain than the old version. In this paper, we briefly describe its restructuring process, emphasizing the fact that the Refactoring of the tool is conducted using the tool itself. Then we discuss lessons learned from these processes and we exhibit some comparative measurements of the developed version.

  • PDF

A Study of Re-Engineering Refactoring Technique for the Software Maintenance and Reuse (소프트웨어 유지보수와 재사용을 위한 재공학 Refactoring 기법 연구)

  • 박진호;이종호;류성열
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2000.04a
    • /
    • pp.513-515
    • /
    • 2000
  • 소프트웨어 유지보수는 노력과 시간이 많이 소요된다. 유지보수 되는 기존의 시스템들을 규모가 크고 복잡하기 때문에 운영비용의 대부분이 소프트웨어 유지보수에 소요되는 실정이다. 소프트웨어의 재사용은 이러한 문제점들을 해결하기 위하여, 소프트웨어 역공학, 재공학, 컴포넌트와 같은 많은 기법들이 제안되었다. 이런 기법들 중에서 재공학은 재사용 하려는 소프트웨어를 분석, 재정의, 재문서화 등의 소프트웨어 역공학 방법을 통하여 좀더 효율적으로 소프트웨어를 분석할 수 있고, 순공학을 통해 문제점들의 교환과 새로운 구조와 시스템의 수정을 통해 더욱 경제적인 시스템을 만들 수 있다. 본 논문에서는 시스템의 유지보수와 재사용을 위한 재공학 Refactoring 기법을 제시한다.

  • PDF

Refactoring for Increasing Scalability in Server Components (서버 컴포넌트의 확장성 증가를 위한 재구성 기법)

  • 권재은;김형호;배두환
    • Journal of Software Engineering Society
    • /
    • v.14 no.1
    • /
    • pp.30-41
    • /
    • 2001
  • 서버의 확장성, 즉 제한된 자원으로 처리할 수 있는 클라이언트의 수는 서버의 성능과 유지 비용에 직접적인 영향을 끼친다. 확장성이 큰 서버를 구현하기 위해 서버 컴포넌트는 클라이언트의 상태를 유지하지 않아야 한다는 것은 널리 받아들여지고 있다. 그러나, 이러한 상태 비유지 컴포넌트를 생성하는 것에 대한 체계적인 방법이 전무한 실정이다. 따라서, 본 논문에서는 재구성(refactoring)을 이용하여 상태 유지(stateful) 서버를 상태 비유지(stateless) 서버로 변환시키는 체계적인 방법을 제시한다. 다음으로 여러 개의 컴포넌트를 찾고, 각각에 재구성을 수행하는 방법을 제시한다. 다음으로 여러 개의 컴포넌트로 구성된 서버에 위 방법을 적용할 수 잇는 알고리즘을 제시한다. EJB 기반의 간단한 은행 시스템에 재구성 방법을 적용하여, 상태 유지 서버가 상태 비유지 서버로 성공적으로 변환되는 모습을 보인다.

Removing Long Parameter List Using Semantic Matrix (메소드의 매개변수 리스트의 간소화를 위한 리팩토링 방안)

  • Ham, Dong Hwa;Lee, Jun Ha;Park, Soo Jin;Park, Soo Young
    • Journal of Software Engineering Society
    • /
    • v.26 no.4
    • /
    • pp.93-103
    • /
    • 2013
  • Complexity and maintenance cost of software increase as much as software has been evolved, therefore importance of software maintenance recently arise. There are many signs that are difficulties to maintain software, called bad smell, in a large-scale software. The bad smell should be removed to improve maintainability. Recently, many software refactoring methods have researched to terminate the bad smell. In this paper, we propose how to identify long parameter list, which causes bad smell, and how to solve the problem for increasing software maintainability. In our approach, we classify the parameters for creating new objects by measuring semantic similarity among them. This is evaluated by experienced software developers, and the result is statistically verified.

  • PDF