• 제목/요약/키워드: 코드 리팩토링

검색결과 28건 처리시간 0.023초

프로그램 의존성 그래프를 이용한 어스팩트 리팩토링에 관한 연구 (A Study on Aspect Refactoring using Program Dependency Graph)

  • 조병현;이승형;송영재
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2010년도 춘계학술발표대회
    • /
    • pp.989-992
    • /
    • 2010
  • 리팩토링은 시스템의 기능 변경 없이 코드 구조를 재조정하여 가독성을 높이고 유지보수성을 향상하기 위함이다. 기존의 어스팩트 리팩토링은 프로그램의 특정 부분을 어스팩트로 정의하여 리팩토링하거나 구현된 어스팩트 명세를 재구성하는 방식으로, 객체지향 프로그램에 적용하는데 어려움이 있다. 본 논문은 객체지향 리팩토링에 어스팩트 개념을 적용하기 위한 구체화된 접근방법을 제시하는 것이 목적이며 이를 위해 프로그램 의존성 그래프를 이용한다. 리팩토링의 주요 어스팩트인 중복 코드는 프로그램 의존 그래프에서 노드 사이의 순서관계를 비교하여, 리팩토링을 위한 어스팩트 후보로 변환하며 이를 근거로 재조합 함으로써 캡슐화된 객체 내부의 리팩토링 요소를 편리하게 처리할 수 있다.

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

  • 함동화;이준하;박수진;박수용
    • 소프트웨어공학소사이어티 논문지
    • /
    • 제26권4호
    • /
    • pp.93-103
    • /
    • 2013
  • 소프트웨어의 규모는 시간이 지남에 따라 복잡성과 유지보수 비용이 증가한다. 이로 인해 최근 유지보수의 중요성이 더욱 대두되고 있다. 소프트웨어가 진화 할수록 유지보수를 어렵게 하는 징후인 코드의 나쁜 냄새(Bad Smell)가 점점 심해지기 때문에 나쁜 냄새가 나는 코드를 제거하여 유지보수를 용이하게 개선해야 한다. 최근에는 이러한 나쁜 냄새를 위해 소프트웨어 리팩토링 기법에 대한 연구가 많이 연구되고 있다. 본 논문에서는 나쁜 냄새의 한 종류인 긴 매개변수 리스트(Long Parameter List)를 식별하고 해결하여 소프트웨어의 유지보수성을 향상시키는 방안을 제안한다. 제안되는 방안은 매개변수간의 의미적인 유사도를 측정하여 이를 군집화 하여 새로운 객체가 될 수 있는 매개변수들을 식별한다. 제안되는 방안은 경력 있는 객체지향 소프트웨어 개발자들이 군집화한 매개변수리스트와의 비교를 통해 평가되고, 그 결과가 통계적으로 검증된다.

  • PDF

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

  • 최원재;김태환;문현준;김정선
    • 한국컴퓨터정보학회:학술대회논문집
    • /
    • 한국컴퓨터정보학회 2020년도 제62차 하계학술대회논문집 28권2호
    • /
    • pp.389-390
    • /
    • 2020
  • 배포된 소프트웨어는 고객의 새로운 요구사항을 반영하면서 기능을 추가하거나 수정한다. 수정된 소프트웨어는 문제없이 동작하지만, 내부의 구조는 점점 더 복잡해지면서 유지보수가 어려워지고, 수정 시 버그 발생 확률이 높아지게 된다. 이에 따라 잘못된 코드 구조를 개선하고, 소프트웨어의 품질을 향상시켜야한다. 본 논문에서는 개발된 ERP 근태관리 시스템이 지속적인 요구사항을 반영하면서 발생한 잘못된 코드 구조인 코드 스멜을 탐지하고 분석하는 연구를 진행하였다.

  • PDF

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

  • 이서정;이재욱;황훈규;이장세
    • 한국항해항만학회지
    • /
    • 제36권5호
    • /
    • pp.363-370
    • /
    • 2012
  • 최근 국제해사기구에서 추진하고 있는 e-navigation은 선박의 안전운항을 위한 다양한 서비스를 지향하고 있다. 이에 따라, 해양 분야에 다양한 소프트웨어 개발이 기대되고 있으며, 동시에 그 품질의 중요성이 높아지고 있다. 이 논문에서는 소프트웨어의 품질 향상의 실험을 위해, 기존 AIS중개서버 프로그램에 소프트웨어 리팩토링(refactoring) 기법을 적용하였으며, 그 효과를 분석하였다. 리팩토링은 소프트웨어를 소스 코드 수준에서 구조의 복잡성을 줄여서, 이해하기 쉽고 기능 변경이 용이한 상태로 변경하는 기법이다. 이를 통해, 겉으로 보이는 동작의 변화는 없이 내부구조가 변경된다. 리팩토링 적용 효과 분석을 위해서, IEC/ISO 9126 소프트웨어 품질표준의 유지보수성과 관련된 기존 메트릭의 산술적 측정기법을 도입했다.

BMP 기반 엔티티 빈의 재사용성과 유지보수성 향상 방안 (Improving Reusability and Maintainability of Entity Bean in Bean-Managed Persistence.)

  • 김고운;이금석
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2003년도 춘계학술발표논문집 (하)
    • /
    • pp.1729-1732
    • /
    • 2003
  • EJB는 J2EE 기반의 분산 컴포넌트 모델로 재사용 가능한 소프트웨어이다. 그중 데이터베이스의 데이터를 객체화한 엔티티 빈 컴포넌트는 영속성에 따라 CMP와 BMP로 구분이 되는데, BMP는 영속성의 차이로 인해 CMP와 조립하기 어려워 재사용성이 떨어지고, 소스코드가 복잡해 유지보수가 어렵다. 본 논문에서는 EJB 컴포넌트 중에서 BMP를 기반으로 구현한 엔티티 빈에 Dual Persistent 엔티티 빈 패턴(Entity Bean Pattern)을 적용하여 재사용성을 향상시키고, 소스코드를 리팩토링(Refactoring) 하여 유지보수성 향상시키는 DPwR(Dual Persistence with Refactoring) 방법을 제안하였다.

  • PDF

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

  • 안현식;박보경;김영철;김기두
    • 정보처리학회논문지:컴퓨터 및 통신 시스템
    • /
    • 제9권10호
    • /
    • pp.213-220
    • /
    • 2020
  • 높은 사양이 필요한 하드웨어 기반의 모바일 및 IoT 임베디드 시스템은 저전력과 성능에 중요한 이슈를 갖고 있다. 이는 전력 소비로 발열량 증가 및 기기의 수명 단축 문제가 발생된다. 이러한 환경에서 소프트웨어도 제한된 전력, 메모리 등에서 안정적인 동작을 수행해야하므로 디바이스의 소비전력이 증가한다. 이를 해결하고자, 코드 관점에서 성능을 저하시키는 모듈을 식별하고, 그 모듈의 전력 최소화를 통한 성능 개선 가시화 방법을 제안한다. 이는 코드 가시화를 통해 복잡한 모듈(특히 Cyclomatic complexity, Coupling & Cohesion)을 식별하고, 저전력 코드 패턴화와 성능 코드를 간결화 한다. 이런 코드로 소비전력을 감소 및 성능 개선 함으로써 코드의 품질을 최적화 할 수 있다.

CSS 가독성 향상을 위한 최적화기법 (An Optimization Technique to Improve Readability of CSS)

  • 정우성;이은주
    • 한국컴퓨터정보학회논문지
    • /
    • 제15권7호
    • /
    • pp.99-108
    • /
    • 2010
  • 웹 어플리케이션의 원활한 유지보수를 위하여 소스 페이지의 가독성 향상은 필수적이다. CSS는 웹 페이지의 구성 요소 중에서 순수한 표현계층이지만 인라인 형태로 삽입되는 경우가 많고, 웹 개발도구에 의해 자동생성되기도 하는데, 이들은 전체 코드의 가독성과 UI 계층의 재사용성이 떨어지게 된다. 기존의 CSS 최적화 연구는 주로 사이즈 압축을 다루고 있어 재사용성이나 가독성에 초점을 맞추고 있지 않다. 본 논문에서는 CSS 가독성 및 재사용성 향상을 위하여 CSS 코드를 구조화하고, 가독성 향상을 위한 기준을 정의하였다. 이들을 기반으로 최종적으로 CSS 코드의 가독성을 높이는 알고리즘을 제안하고, 예제 및 실험을 통하여 본 접근법의 유용성을 보인다.

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

  • 강건희;김영철;이근상;김영수;박용범;손현승
    • 정보과학회 컴퓨팅의 실제 논문지
    • /
    • 제21권2호
    • /
    • pp.148-153
    • /
    • 2015
  • 국내의 소프트웨어 산업계는 고품질 소프트웨어를 위해, 개발/테스트 프로세스, 성숙도 측정등에 초점을 두고 있다. 그러나 실제 중소기업의 산업현장에서는 코드중심으로 개발되고 있다. 그리고 대부분의 기존 레거시 시스템은 설계의 부재 그리고 코드 패칭으로 코드 내부의 복잡도가 매우 높은 현실이다. 이를 해결하고자, 코드의 가시화(visualization)를 적용하였다. 이 가시화는 모듈간의 복잡도를 줄이려는 목적을 가지고 있다. 이를 위해 기존 공개 도구로 툴 체인 구성 방법을 제안한다. 제안한 방법은 NIPA의 SW Visualization 기법을 적용 확장하였다. 또한 코드 가시화내의 품질지표 중에 결합도 요소 중의 나쁜 지표에 대한 리팩토링 시도이다. 결과적으로 레가시 코드에 대해 역 공학 기법(from programming via model to architecture)적용과 이를 통한 소프트웨어 고품질화이다.

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

  • 김강태
    • 한국컴퓨터정보학회논문지
    • /
    • 제13권4호
    • /
    • pp.1-9
    • /
    • 2008
  • 대부분의 전자제품은 날로 다양한 소비자의 니즈로 인해 수많은 라인업을 보유하고 있다. 이에 대응하기 위해 보통 '베이스 모델'이라 불리는 초기 개발모델에서 각 상품화 과제의 특정 요구사항을 반영하여 파생개발을 한다. 제품 라인업에 기반한 소프트웨어 라인 업이 형성되는 개발환경에서 '베이스 코드'의 구조와 그 구성요소의 품질은 향후 파생되는 여러 많은 제품의 생산성과 품질의 근간이 된다. '베이스코드'는 최초 개발 후 여러 상품화를 거치면서 그 구조와 코드 자체에 수많은 변경이 가해진다. 상품화 과제의 요구사양에 따라 변경되거나 추가되는 기능의 구현은 필수적 활동이며, 성능 개선 및 문제점 해결을 위한 구조 및 코드의 변경 역시 상품화를 통해 지속적으로 발생하는 유지관리 활동이다. 하지만 위와 같은 변경은 최초 설계 시 의도된 구조가 깨지거나 코드의 복잡도가 증가하는 등의 노쇠화 징후(Ageing symptom)로 나타나 유지관리에 어려움을 준다. 본 논문은 노쇠화 된 베이스 코드의 상품화 적용 효율을 높이기 위해 재사용성, 유지보수성, 확장성 등의 비기능적 요소(quality attribute)의 개선을 위한 절차와 기법으로 리엔지니어링 프레임워크를 제안한다.

  • PDF

CodeBERT 모델의 전이 학습 기반 코드 공통 취약점 탐색 (Detecting Common Weakness Enumeration(CWE) Based on the Transfer Learning of CodeBERT Model)

  • 박찬솔;문소영;김영철
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제12권10호
    • /
    • pp.431-436
    • /
    • 2023
  • 소프트웨어 공학 영역에 인공지능의 접목은 큰 화두 중 하나이다. 전 세계적으로 1) 인공지능을 통한 소프트웨어 공학, 2) 소프트웨어 공학을 통한 인공지능 두 가지 방향으로 활발히 연구되고 있다. 그 중 소프트웨어 공학에 인공지능을 접목하여 나쁜 코드 영역을 식별하고 해당 부분을 리팩토링하는 연구가 진행되고 있다. 해당 연구에서 인공지능이 나쁜 코드 요소의 패턴을 잘 학습하기 위해서는 학습하려는 나쁜 코드 요소가 라벨링 된 데이터셋이 필요하다. 문제는 데이터셋이 부족할뿐더러, 자체적으로 수집한 데이터셋의 정확도는 신뢰할 수 없다. 이를 해결하기 위해 코드 데이터 수집 시 전체 코드가 아닌 높은 복잡도를 가진 코드 모듈 영역을 대상으로만 나쁜 코드 데이터를 수집한다. 이후 수집한 데이터셋을 CodeBERT 모델의 전이 학습하여 코드 공통 취약점을 탐색하는 방법을 제안한다. 해당 데이터셋을 통해 CodeBERT 모델이 코드의 공통 취약점 패턴을 더 잘 학습할 수 있다. 이를 통해 전통적인 방법보다 인공지능 모델을 이용해 코드를 분석하고 공통 취약점 패턴을 더 정확하게 식별할 수 있을 것으로 기대한다.