• 제목/요약/키워드: refactoring

검색결과 66건 처리시간 0.033초

컴포넌트기반 방법론을 사용한 프레임워크 개발에 관한 연구 (A Study on the Development of Framework Using Component Based Methodology)

  • 김행곤;한은주
    • 한국정보처리학회논문지
    • /
    • 제7권3호
    • /
    • pp.842-851
    • /
    • 2000
  • Developers can reuse not only class code but also wide range of knowledge on domain by reusing framework. Existing Object-Oriented Methodology and Catalysis Methodology were presented when redefining component in the course of redesigning framework. However, existing methodologies have weakness that entire process is waterfall mode or design of interface lays too much stress on implementation stage. So, this thesis will present Component-Oriented Methodology for the reuse of framework, and construct the environment for framework and domain development. That is, domain is analyzed by input of domain knowledge on real world to create software based on component, and hotspot is identified through analyzed information, and refactoring by putting additional information on users and developers. After that, I will create domain framework and application framework depending on domain. In this Component-Oriented Methodology, information is searched, understood and extracted or composite through component library storage internally. Then this information is classified into the information on component, and used as additional information in redesigning. With this, developer can obtain reusability, easiness and portability by constructing infrastructure environment that allows to register, update and delete component through Component Management System(CMS) under he development environment which can be easily applied to his own application using framework component, in this thesis, CoRBA(Common Object Request Broker Architecture) environment.

  • PDF

Parallelization of a Purely Functional Bisimulation Algorithm

  • Ahn, Ki Yung
    • 한국컴퓨터정보학회논문지
    • /
    • 제26권1호
    • /
    • pp.11-17
    • /
    • 2021
  • 본 논문에서는 순수 함수형 언어로 작성된 쌍방시뮬레이션 알고리듬의 성능을 멀티코어 프로세서 컴퓨터에서 병렬화로 향상시키는 방법을 연구한다. 이 병렬화에 있어 핵심 아이디어는 순수 함수형 프로그램의 참조 투명성을 십분 활용하면 병렬화가 전혀 고려되지 않고 작성된 초기 구현으로부터 최소한의 수정만으로 성능 개선 효과를 기대할 수 있다는 것이다. 초기 구현과 병렬화 구현 둘 다 순수 함수형 언어인 하스켈로 작성되었다. 초기 구현을 병렬화할 때 변화는 아주 적어서 병렬화된 구현에서도 초기 구현의 프로그램 구조가 거의 그대로 유지되었다. 벤치마크를 통해 제시된 간단한 병렬화만으로도 초기 구현과 비교해 두 배 이상의 성능 개선을 확인했다. 또한, 병렬화와는 별개의 최적화 기법인 메모이제이션이 적용된 버전의 쌍방시뮬레이션 구현에도 같은 방식의 병렬화를 적용함으로써 마찬가지로 성능을 개선할 수 있음을 확인하였다.

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

  • 이원영;김영철
    • 인터넷정보학회논문지
    • /
    • 제23권2호
    • /
    • pp.79-86
    • /
    • 2022
  • 본 논문은 역공학 기반 소프트웨어 가시화를 통해 설계 개선 실현과 고품질화에 초점을 두고 있다. 앞으로의 4차 산업의 다양한 영역에서 새로운 기술과 복잡한 소프트웨어가 대두됨에 따라 안정성과 신뢰성을 겸비한 소프트웨어 검증이 이슈화되고 있다. 간단한 연산 소프트웨어부터 기계 학습기반의 데이터 지향 소프트웨어까지 다양한 소프트웨어 고품질화를 위한 역공학 기반 UML 설계 추출 및 가시화 방법을 제안한다. 이를 기반으로 목표 설계에 대한 정확도를 확인하고 코드 내부 복잡도 식별을 이용하여 설계 개선을 통한 소프트웨어 품질 향상을 기대한다.

객체 지향 시스템에서의 클래스 간 의존성 강도 측정을 위한 커플링 척도 (A Coupling Metric for Measuring Strength of Dependency between Classes in Object-Oriented Systems)

  • 화지민;이숙희;권용래
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제14권1호
    • /
    • pp.81-85
    • /
    • 2008
  • 객체지향 패러다임에서 커플링은 유지보수활동에 가장 큰 영향을 주는 속성 중 하나로 많은 연구들이 진행되어 왔다. 그러나 기존의 커플링 척도는 클래스들간의 의존성 여부만 측정할 뿐 의존성 강도를 표현하지 못하기 때문에 리팩토링이나 시스템 분해와 같이 의존성 강도 정보가 필요한 유지보수활동에서 의사 결정을 지원하는데 한계가 있다. 이 논문에서는 이를 해결하기 위해 클래스 간의 의존성 여부뿐만 아니라 유지 보수성-재검사 비용 측면에서 클래스 간의 의존성 강도까지 표현할 수 있는 커플링 척도를 제안한다. 그리고 시스템 분해 문제에 적용한 예제를 통하여 시스템 유지 보수를 위한 여러 분야에 적용될 수 있음을 보인다.

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

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

트랜잭션의 시점, 크기 및 개발자의 숙련도를 고려한 논리적커플링 측정기법 (A Logical Coupling Measurement Method Based on Transaction Time, Size and Expertise of Developer)

  • 심빈구;김진태;박수용
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제36권11호
    • /
    • pp.891-900
    • /
    • 2009
  • 소프트웨어의 수명이 길어짐에 따라, 소프트웨어 유지보수비용을 줄이기 위한 기법에 대한 연구의 중요도가 높아지고 있다. 소프트웨어 엔티티들간의 커플링(Coupling)정보는 소스코드 분석 및 리팩토링등의 소프트웨어 유지보수에 활동에서 의사결정시 정량적인 근거자료로 유용하게 사용되고 있다. 논리적 커플링(Logical Coupling)은 소프트웨어가 진화하는 과정에서 관측된 엔티티들간의 관계성 정도를 나타낸다. 논리적커플링이 처음 소개된 이후로, 커플링의 단위를 상세화 하는 연구가 발표됨으로써, 큰 단위의 엔티티간 논리적커플링으로는 설명할 수 없는 소프트웨어의 특성들이 설명되었다. 하지만, 기존 연구는 프로젝트 구성원들의 성향 및 프로젝트의 특성을 고려하지 못 하였다. 본 연구는 버전관리시스템의 변경기록에 담겨있는 프로젝트 구성원들의 성향과 프로젝트 자체의 특징을 고려한 다중관점 기반의 논리적커플링 측정기법을 제안하고, 오픈소스프로젝트를 통해 제안하는 기법을 검증하였다.

신경망을 이용한 클래스 간 메소드 위치 결정 메커니즘 (A Mechanism to Determine Method Location among Classes using Neural Network)

  • 정영애;박용범
    • 정보처리학회논문지B
    • /
    • 제13B권5호
    • /
    • pp.547-552
    • /
    • 2006
  • 클래스의 속성과 메소드 참조관계를 고려한 응집도 측정 방법은 다양한 형태로 연구되어 왔다 이러한 응집도의 측정 방법은 일반적으로 하나의 클래스에서 이루어진다. 단일 클래스에서 두 개의 클래스로 참조 범위를 확장하면 두 클래스 사이에 발생할 수 있는 참조관계를 알 수 있다. 본 논문에서는 메소드의 위치 결정을 위하여 신경망 학습모델을 제안하였다. 신경망은 입출력 패턴에 대한 반복학습 후, 학습 패턴에 포함되지 않았던 입력 패턴의 목적 값을 예측하고, 일반화(generalization)하는데 효과적이다. 두 개의 클래스 안의 속성과 메소드를 5개 이하로 제한하였고, 학습 벡터는 30개의 이진 값으로 구성된 입력 벡터와 메소드 위치 결정 값인 이진 목적 값으로 생성되었다. 제안된 신경망은 교차검증에서 약 95%, 테스트 데이터에 대해서는 약88%의 예측율을 보였다.

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)적용과 이를 통한 소프트웨어 고품질화이다.

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

  • 이승형;유현
    • 디지털융복합연구
    • /
    • 제15권3호
    • /
    • pp.181-186
    • /
    • 2017
  • 시스템 최적화는 소스코드의 변경 없이 중복된 모듈을 추출하고, 추출된 모듈의 재사용을 위하여 프로그램의 구조를 변경하는 기법이다. 구조지향 개발과 객체지향 개발은 크로스커팅 영역의 모듈화에는 효율적이나 크로스커팅 개념을 모듈화 할 수 없다. 기존 시스템에서 크로스커팅 개념을 적용하기 위해, 각 시스템 내에 분산되어 있는 시스템 최적화 대상 모듈을 크로스커팅 영역으로 추출하는 기술이 필요하다. 본 논문에서는 개발이 완료된 시스템에서 중복 모듈을 추출하기 위한 방법을 제안한다. 제안하는 방법은 소스코드 분석을 통해 데이터 의존관계와 제어 의존관계를 분석하여 중복되는 요소를 추출한다. 추출된 중복된 요소는 시스템 최적화를 위하여 프로그램 의존 관계 분석에 사용될 수 있다. 중복된 의존관계 분석 결과는 제어 흐름 그래프로 변환되며, 이를 활용하여 최소 크로스커팅 모듈을 생성할 수 있다. 의존 관계 분석을 통해 추출된 요소는 크로스커팅 영역 모듈로 설정함으로써 시스템 내 중복된 코드를 최소화 할 수 있는 시스템 최적화 방법을 제시한다.

추상구문트리를 이용한 어스팩트 마이닝 프로세스 설계 (Aspect Mining Process Design Using Abstract Syntax Tree)

  • 이승형;송영재
    • 한국콘텐츠학회논문지
    • /
    • 제11권5호
    • /
    • pp.75-83
    • /
    • 2011
  • 어스팩트 지향 프로그래밍은 시스템에서 크로스커팅 개념을 추출하고 소프트웨어 모듈화를 통하여 기능의 분산과 코드의 혼란을 해결하기 위한 패러다임이다. 현존하는 어스팩트 개발 방법은 크로스커팅 대상 영역을 추출에 어려움이 있기 때문에, 어스팩트 마이닝을 적용하기가 쉽지 않다. 어스팩트 마이닝에서는 기존 프로그램의 리팩토링 요소를 크로스커팅 영역으로 변환하는 기술이 필수적이다. 본 논문에서는 리팩토링에 적합한 크로스커팅 영역 자동 추출을 위한 시스템에서 크로스커팅 개념을 추출하기 위한 어스팩트 마이닝 방법을 제안한다. 소스 모듈의 추상 구문구조 명세를 이용하여, 모듈의 구조적 중복 관계 요소를 추출한다. Apriori 알고리즘을 통하여 중복 구문트리를 생성하고, 크로스커팅 영역 대상인 중복된 소스 모듈을 자동 생성, 최적화 할 수 있다. Berkeley Yacc의 berbose.c 모듈을 제안하는 마이닝 프로세스에 적용해 본 결과, 원본 대비 9.47%의 길이와 부피의 감소하였고, CCFinder 대비 4.92%의 길이 감소, 5.11%의 부피 감소 효과를 확인하였다.