• Title/Summary/Keyword: Code refactoring

Search Result 38, Processing Time 0.023 seconds

Design of Learning Process with Code Reconstruction Principle for Non-computer Majors

  • Hye-Wuk, Jung
    • International Journal of Advanced Culture Technology
    • /
    • v.10 no.4
    • /
    • pp.175-180
    • /
    • 2022
  • To develop computational thinking skills, university students are learning how to solve problems with algorithms, program commands and grammar, and program writing. Because non-computer majors have difficulty with computer programming-related content, they need a learning method to acquire coding knowledge from the process of understanding, interpreting, changing, and improving source codes by themselves. This study explored clone coding, refactoring coding, and coding methods using reconstruction tools, which are practical and effective learning methods for improving coding skills for students who are accustomed to coding. A coding learning process with the code reconstruction principle was designed to help non-computer majors use it to understand coding technology and develop their problem-solving ability and applied the coding technology learning method used in programmer education.

Towards Performance-Enhancing Programming for Android Application Development

  • Kim, Dong Kwan
    • International Journal of Contents
    • /
    • v.13 no.4
    • /
    • pp.39-46
    • /
    • 2017
  • Due to resource constraints, most of Android application developers need to address potential performance problems during application development and maintenance. The coding styles and patterns of Android programming could often affect the execution time and energy efficiency which are utilized by the Android applications. Thus, it is necessary for application developers to apply performance-enhancing programming practices for mobile application development. This paper introduces performance-enhancing best practices for Android programming, and further, it evaluates the impact of these practices on the CPU time of the application. The original version with the performance-worsening code has been refactored to become an efficient version without changing its functionality. To demonstrate the efficiency of the proposed approach, each coding pattern was evaluated by measuring the CPU time under the controlled runtime environment. Furthermore, the Android applications were evaluated and compared via the CPU time of the original version, with that of the refactored version. These experimental results indicate that, by -using the proposed programming practices, the Android developer can develop performance-efficient mobile applications.

Code Smell Analysis of ERP Time Attendance Management System (ERP 근태 관리 시스템의 코드 스멜 분석)

  • Choi, Wonjae;Kim, Taehwan;Moon, Hyunjun;Kim, Jungsun
    • Proceedings of the Korean Society of Computer Information Conference
    • /
    • 2020.07a
    • /
    • pp.389-390
    • /
    • 2020
  • 배포된 소프트웨어는 고객의 새로운 요구사항을 반영하면서 기능을 추가하거나 수정한다. 수정된 소프트웨어는 문제없이 동작하지만, 내부의 구조는 점점 더 복잡해지면서 유지보수가 어려워지고, 수정 시 버그 발생 확률이 높아지게 된다. 이에 따라 잘못된 코드 구조를 개선하고, 소프트웨어의 품질을 향상시켜야한다. 본 논문에서는 개발된 ERP 근태관리 시스템이 지속적인 요구사항을 반영하면서 발생한 잘못된 코드 구조인 코드 스멜을 탐지하고 분석하는 연구를 진행하였다.

  • PDF

Effective code static analysis and visualization based on Normalization of internal code information (코드 내부 정보의 정규화 기반 효율적인 코드 정적 분석 및 가시화)

  • Park, Chansol;Jeon, Byungkook;Kim, R. Young Chul
    • Proceedings of the Korea Information Processing Society Conference
    • /
    • 2022.11a
    • /
    • pp.85-87
    • /
    • 2022
  • 고품질 코드를 위한 정적 분석은 아직도 매우 필요한 영역이며, 또한 코드의 가시화는 개발자들에게 코드의 복잡한 모듈에 대한 가이드에 필요하다. 기존의 코드 가시화는 정적 분석의 코드 내부 정보들을 DB 테이블화 및 품질 지표(CK Metrics, Coupling, # function Calls, Bed smell) 질의어화, 그리고 추출된 정보를 가시화하는 것에만 초점을 두었다. 문제는 코드 내부 정보(Class, method, parameters, etc) 테이블들에 대한 join 연산 시 엄청난 시간과 리소스가 소모된다. 이 문제를 해결하기 위해, 우리는 테이블 설계의 정규화를 제안한다. 또한 필요한 품질 지표의 질의를 통해 코드 내부 정보 추출하여 데이터 및 제어 복잡 모듈을 식별하여 refactoring 를 가이드 한다. 앞으로는 이 부분의 AI learning 을 통해 bad/good program 을 식별을 기대한다.

Re-engineering framework for improving reusability of embedded software (임베디드 소프트웨어의 재사용성 향상을 위한 리엔지니어링 프레임워크)

  • Kim, Kang-Tae
    • Journal of the Korea Society of Computer and Information
    • /
    • v.13 no.4
    • /
    • pp.1-9
    • /
    • 2008
  • Most consumer electronics companies hold numerous line-ups to cope with divergent customer's needs. To cope with current situation, most products are derived from the 'base product' which is developed for brand new features with respect to the change requests. That is called derivation. After 'base code' is developed for newly introduced products, some modification will occur corresponding to the derivative product models. So, quality attributes of 'base code' affects quality and productivity of 'derived code'. But in the middle of continuous modification to 'base code', violation of architectural design decision and unauthorized or maybe unsophisticated change to source code willing to happen and thus it cause critical problem. Those code has 'aging symptom' both architectural and code level in nature. In this paper, we introduced reengineering framework which guide the procedure and tactics to find and fix 'aging symptom' for improvement on quality attribute of 'base code'.

  • PDF

A Practical Study on Code Static Analysis through Open Source based Tool Chains (Open Source 기반 툴 체인화를 통한 코드 정적 분석 연구)

  • Kang, Geon-Hee;Kim, R. Young Chul;Yi, Geun Sang;Kim, Young Soo;Park, Yong. B.;Son, Hyun Seung
    • KIISE Transactions on Computing Practices
    • /
    • v.21 no.2
    • /
    • pp.148-153
    • /
    • 2015
  • In our domestic software industries, it is focused on such a high quality development/ testing process, maturity measurement, and so on. But the real industrial fields are still working on a code-centric development. Most of the existing legacy systems did not keep the design and highly increased the code complexity with more patching of the original codes. To solve this problem, we adopt a code visualization technique which is important to reduce the code complexity among modules. To do this, we suggest a tool chaining method based on the existing open source software tools, which extends NIPA's Software Visualization techniques applied to procedural languages. In addition, it should be refactored to fix bad couplings of the quality measurement indicators within the code visualization. As a result, we can apply reverse engineering to the legacy code, that is, from programming via model to architecture, and then make high quality software with this approach.

Code Visualization Approach for Low level Power Improvement via Identifying Performance Dissipation (성능 저하 식별을 통한 저전력 개선용 코드 가시화 방법)

  • An, Hyun Sik;Park, Bokyung;Kim, R.Young Chul;Kim, Ki Du
    • KIPS Transactions on Computer and Communication Systems
    • /
    • v.9 no.10
    • /
    • pp.213-220
    • /
    • 2020
  • The power consumption and performance of hardware-based mobile and IoT embedded systems that require high specifications are one of the important issues of these systems. In particular, the problem of excessive power consumption is because it causes a problem of increasing heat generation and shortening the life of the device. In addition, in the same environment, software also needs to perform stable operation in limited power and memory, thereby increasing power consumption of the device. In order to solve these issues, we propose a Low level power improvement via identifying performance dissipation. The proposed method identifies complex modules (especially Cyclomatic complexity, Coupling & Cohesion) through code visualization, and helps to simplify low power code patterning and performance code. Therefore, through this method, it is possible to optimize the quality of the code by reducing power consumption and improving performance.

A Feature-Oriented Method for Extracting a Product Line Asset from a Family of Legacy Applications (레거시 어플리케이션 제품군으로부터 제품라인 자산을 추출하는 휘처 기반의 방법)

  • Lee, Hyesun;Lee, Kang Bok
    • KIPS Transactions on Software and Data Engineering
    • /
    • v.6 no.7
    • /
    • pp.337-352
    • /
    • 2017
  • Clone-and-own reuse is an approach to creating new software variants by copying and modifying existing software products. A family of legacy software products developed by clone-and-own reuse often requires high maintenance cost and tends to be error-prone due to patch-ups without refactoring and structural degradation. To overcome these problems, many organizations that have used clone-and-own reuse now want to migrate their legacy products to software product line (SPL) for more systematic reuse and management of software asset. However, with most of existing methods, variation points are embedded directly into design and code rather than modeled and managed separately; variation points are not created ("engineered") systematically based on a variability model. This approach causes the following problems: it is difficult to understand the relationships between variation points, thus it is hard to maintain such code and the asset tends to become error-prone as it evolves. Also, when SPL evolves, design/code assets tend to be modified directly in an ad-hoc manner rather than engineered systematically with appropriate refactoring. To address these problems, we propose a feature-oriented method for extracting a SPL asset from a family of legacy applications. With the approach, we identify and model variation points and their relationships in a feature model separate from implementation, and then extract and manage a SPL asset from legacy applications based on the feature model. We have applied the method to a family of legacy Notepad++ products and demonstrated the feasibility of the method.

Best Practices on Validation and Extraction of Object oriented Designs with Code Visualization Tool-chain (코드 가시화 툴체인 기반 UML 설계 추출 및 검증 사례)

  • Lee, Won-Young;Kim, Robert YoungChul
    • Journal of Internet Computing and Services
    • /
    • v.23 no.2
    • /
    • pp.79-86
    • /
    • 2022
  • This paper focuses on realizing design improvement and high quality through visualization of reverse engineering-based software. As new technologies and complex software emerge in various areas of the fourth industry in the future, software verification with both stability and reliability is becoming an issue. We propose a reverse engineering-based UML design extraction and visualization for high-quality software ranging from simple computational software to machine learning-based data-oriented software. Through this study, it is expected to improve software quality through design improvement by checking the accuracy of the target design and identifying the code complexity.

Extended IPO technique for Code Refactoring (코드 리팩토링을 위한 확장된 IPO 기법)

  • Park, Jae-Jin;Lee, Jae-Wook;Hong, Jang-Eui
    • Proceedings of the Korean Information Science Society Conference
    • /
    • 2012.06b
    • /
    • pp.255-257
    • /
    • 2012
  • 긴 파라미터 리스트(Long parameter list)는 소프트웨어 코드의 품질을 저해시키는 Bad Smell들 중 하나로써, 코드에 대한 이해도를 떨어뜨리고 코드의 변경을 어렵게 한다는 문제점이 있다. 이러한 문제를 해결하는 기법들 중 하나인 IPO(Introduce Parameter Object) 기법은 함께 사용되는 빈도가 높은 파라미터들을 하나의 클래스로 만든 후에 관련된 기능들을 해당 클래스의 메소드로 추출하여 사용하므로 코드의 중복을 막아 재사용성을 높이고 코드에 대한 이해도를 높일 수 있다. 하지만 IPO 기법의 주된 관심사는 파라미터 그룹의 발생 빈도에 초점을 두고 있으며, 커플링에 대한 고려가 충분히 이루어지지 않는다. 따라서 본 연구에서는 IPO 기법과 커플링의 관계를 분석하여 IPO 기법이 커플링까지 고려할 수 있도록 확장된 IPO기법을 제안한다. 제안된 기법은 기존의 기법에 비해 더 낮은 커플링을 달성하여 고품질의 코드를 얻을 수 있다.