• 제목/요약/키워드: Software Refactoring

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

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

컴포넌트기반 방법론을 사용한 프레임워크 개발에 관한 연구 (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

CMMI 기반의 XP를 위한 형상 관리 프로세스 구축 지침 (Guidelines for Implementing Configuration Management in Extreme Programming based on CMMI)

  • 한동준;한혁수
    • 인터넷정보학회논문지
    • /
    • 제9권2호
    • /
    • pp.107-118
    • /
    • 2008
  • Agile 소프트웨어 개발의 대표적인 방법론인 XP(eXtreme Programming)에서는 현장에서 바로 활용할 수 있는 아주 기본적인 프로세스만을 정의하고, 개발 그 자체에 집중하여 효율성을 극대화한다. 그러나 XP의 실천사항들은 개발에 집중되어 있어 개발 산출물에 대한 관리는 간과되기 쉬우며, 또한 관리적인 부분에 대한 지침이나 연구는 그 중요성에 비하여 미흡한 실정이다. 개발 과정 중 합의된 산출물의 변경과정에 대한 절차나, 지속적인 통합과 리팩토링을 위한 적절한 절차도 정의되어 있지 않아 산출물의 무결성을 보장하기가 어렵다. 이러한 문제점을 극복하기 위해서는 주요 산출물들에 대한 형상관리가 요구된다. XP에 형상 관리를 적용하기 위해서는 CMMI의 형상 관리 프로세스 영역을 참조하는 것이 바람직하다. CMMI는 형상 관리의 요건을 정의하고, 그 구현은 환경에 맞게 조정하는 것을 권장하기 때문에, 각 개발방식의 특성에 맞추어 적용할 수 있다. XP 방법론을 채택한 조직들에게 XP의 특성을 살리면서 CMMI에 기반한 형상 관리를 수행할 수 있는 지침이 제공된다면, XP의 지속적인 통합과 리팩토링, 짧은 릴리즈 주기와 같은 기민함을 유지하면서 산출물들의 무결성도 보장 할 수 있을 것이다. 본 연구에서는 CMMI를 기반으로 XP에서 적용될 수 있는 형상 관리 프로세스 요소를 추출하고, 그 요소들을 기반으로 XP의 형상 관리 활동을 위한 적용 지침을 개발하였다.

  • PDF

오픈소스 프로젝트의 테스트 주도 개발 채택여부가 사용자만족도에 미치는 영향에 관한 연구 (Test-Driven Development Adoption influence to User Satisfaction on OpenSource Project development)

  • 손효정;이민규;성백민;김종배
    • 한국정보통신학회:학술대회논문집
    • /
    • 한국정보통신학회 2015년도 추계학술대회
    • /
    • pp.1075-1078
    • /
    • 2015
  • 애자일 개발방법론의 가치를 반영한 대표적인 관행으로 웹 2.0 협업도구를 이용한 의사소통, 테스트 주도 개발(TDD, Test-Driven Development)방법 채택, 리팩토링 등 3가지를 이전 연구에서 선정하였다. 본 연구에서는 테스트 주도개발을 채택한 오픈소스 프로젝트의 경우 프로젝트 사용자만족도가 높을 것이라는 가설을 설정해 연구하였다. 최대의 오픈소스 호스팅 사이트인 소스포지(sourceforge.net)에서 100개 프로젝트(개발자 7명이상, 발생 버그수 100개 이상, 2000년 이후 생성된 프로젝트)를 선정하고 CVS 및 SVN log분석을 통해 TDD의 자동화 개발툴인 xUnit의 이용여부를 확인하였다. FLOSSmole의 데이터를 이용해 해당 프로젝트의 사용자만족도를 평가하였다. 사용자만족도는 각 프로젝트의 Rating, 버그수정 주기, 다운로드수와 페이지뷰수 등 4가지이다. 이를 통해 TDD의 채택여부와 사용자만족도의 상관관계를 분석하여 기존의 오픈소스 개발방법론에서 애자일 관행을 반영한 프로젝트가 사용자만족도가 높음을 밝혀, 결과적으로 오픈소스 커뮤니티 성숙도를 높이는데 기여하고자 한다.

  • PDF

정적 코드 내부 정보의 테이블 정규화를 통한 품질 메트릭 지표들의 가시화를 위한 추출 메커니즘 (Quality Visualization of Quality Metric Indicators based on Table Normalization of Static Code Building Information)

  • 박찬솔;문소영;김영철
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제12권5호
    • /
    • pp.199-206
    • /
    • 2023
  • 현대 소프트웨어의 규모는 커지고 있다. 이에 따라 고품질 코드를 위한 정적 분석의 중요성이 커지고 있다. 코드에 대한 정적 분석을 통해 결함과 복잡도를 식별하는 것이 필요하다. 이를 가시화하여 개발자 및 이해 관계자가 알기 쉽게 가이드도 필요하다. 기존 코드 가시화 연구들은 정적 분석의 코드 내부 정보들을 데이터베이스 테이블에 저장하여 및 품질 지표(CK Metrics, Coupling, Number of function calls, Bed smell)에 대한 계산을 질의어화 하고 추출된 정보를 가시화하는 과정을 구현하는 것에만 초점을 두었다. 이러한 연구들은 방대한 코드로부터 추출한 정보를 이용하여 코드를 분석할 때 많은 시간과 자원이 소모된다는 한계점이 있다. 또한 각 코드 내 정보 테이블들이 정규화되지 않았기 때문에 코드 내부의 정보(클래스, 함수, 속성 등)들에 대한 테이블 조인 연산 시 메모리 공간과 시간 소비가 발생할 수 있다. 이러한 문제들을 해결하기 위해, 데이터베이스 테이블의 정규화된 설계와 이를 통한 코드 내부의 품질 메트릭 지표에 대한 추출 및 가시화 메커니즘 제안한다. 이러한 메커니즘을 통해 코드 가시화 공정이 최적화되고, 개발자가 리팩토링해야 할 모듈을 가이드 할 수 있을 것으로 기대한다. 앞으로는 부분 학습도 시도할 예정이다.

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

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

추상구문트리를 이용한 어스팩트 마이닝 프로세스 설계 (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%의 부피 감소 효과를 확인하였다.

CORBA 환경에서 멀티미디어 컴퍼넌트 관리 시스템을 통한 프레임워크 구축 (Framework Construction with Multimedia Component Management System on CORBA)

  • 김행곤
    • 한국멀티미디어학회논문지
    • /
    • 제2권2호
    • /
    • pp.217-229
    • /
    • 1999
  • 프레임워크는추상화된 클래스들의 집합또는특정 도메인에서 재사용가능한설계를구성하는상호연관된 클래스틀의 집합으로 도메인에 속한 애플리케이션들간의 공통된 아키텍쳐를 정의한다- 프레엄워크를 재사용 함으로 개발자들은 클래스 코드뿐만 아니라 도메인에 대한 폭넓은 도메인 지식을 재사용할 수 있다. 따라서 본 논문에서는 프레임워크 재사용을 위해 컴퍼넌트기반의 방법론(COM; Component→Oriented M Methodology)을 제시하고 프레임워크 구축환경을 개발한다. 즉, 컴퍼넌트기반의 소프트웨어 생성을 위해 실세계의 도메인 지식을 입력으로 도메인을 분석하고 분석된 정보를 통해 hotspot을 식별하여 사용자와 개빌 자의 추가정보를 첨가하는 재설계 과정올 거친다. 이후 도메인에 따라 도메인 프레임워크와 애플리케이션 프레임워크를 생성한다 이러한 컴퍼넌트 지향 방법론은 내부적으로는 컴퍼넌트/패턴 라이브러리 저장소를 통해 정보를 검색, 이해하여 추출하거나 혹은 합성으로 얻어진 정보는 각각 컴퍼넌트와 패턴에 대한 정보로 분류되고 이것은 재설계시 추가정보로 사용되어진다. 이로 인해 사용자는 멀티미디어 컴퍼넌트를 이용해 자신의 애플리케이션에 쉽게 적용가능한 개발 환경 즉, 본 논문에서는 CORBA(Common Object Request B Broker Architecture) 환경하에 컴퍼넌트/패턴 관리 시스템(Component Pattern Management System C CPMS)을 통해 멀티 미 디 어 컴 퍼 넌트를 추가 갱 신 삭제하는 기 반 환경 (infrastructure environment)을 구축함 으로 재사용성, 사용의 용이성과 이식성을 가질 수 있다.

  • PDF