• 제목/요약/키워드: Coupling Metrics

검색결과 34건 처리시간 0.186초

A Systematic Literature Survey of Software Metrics, Code Smells and Refactoring Techniques

  • Agnihotri, Mansi;Chug, Anuradha
    • Journal of Information Processing Systems
    • /
    • 제16권4호
    • /
    • pp.915-934
    • /
    • 2020
  • Software refactoring is a process to restructure an existing software code while keeping its external behavior the same. Currently, various refactoring techniques are being used to develop more readable and less complex codes by improving the non-functional attributes of software. Refactoring can further improve code maintainability by applying various techniques to the source code, which in turn preserves the behavior of code. Refactoring facilitates bug removal and extends the capabilities of the program. In this paper, an exhaustive review is conducted regarding bad smells present in source code, applications of specific refactoring methods to remove that bad smell and its effect on software quality. A total of 68 studies belonging to 32 journals, 31 conferences, and 5 other sources that were published between the years 2001 and 2019 were shortlisted. The studies were analyzed based on of bad smells identified, refactoring techniques used, and their effects on software metrics. We found that "long method", "feature envy", and "data class" bad smells were identified or corrected in the majority of studies. "Feature envy" smell was detected in 36.66% of the total shortlisted studies. Extract class refactoring approach was used in 38.77% of the total studies, followed by the move method and extract method techniques that were used in 34.69% and 30.61% of the total studies, respectively. The effects of refactoring on complexity and coupling metrics of software were also analyzed in the majority of studies, i.e., 29 studies each. Interestingly, the majority of selected studies (41%) used large open source datasets written in Java language instead of proprietary software. At the end, this study provides future guidelines for conducting research in the field of code refactoring.

A Trellis-based Technique for Blind Channel Estimation and Equalization

  • Cao, Lei;Chen, Chang-Wen;Orlik, Philip;Zhang, Jinyun;Gu, Daqing
    • Journal of Communications and Networks
    • /
    • 제6권1호
    • /
    • pp.19-25
    • /
    • 2004
  • In this paper, we present a trellis-based blind channel estimation and equalization technique coupling two kinds of adaptive Viterbi algorithms. First, the initial blind channel estimation is accomplished by incorporating the list parallel Viterbi algorithm with the least mean square (LMS) updating approach. In this operation, multiple trellis mappings are preserved simultaneously and ranked in terms of path metrics. Equivalently, multiple channel estimates are maintained and updated once a single symbol is received. Second, the best channel estimate from the above operation will be adopted to set up the whole trellis. The conventional adaptive Viterbi algorithm is then applied to detect the signal and further update the channel estimate alternately. A small delay is introduced for the symbol detection and the decision feedback to smooth the noise impact. An automatic switch between the above two operations is also proposed by exploiting the evolution of path metrics and the linear constraint inherent in the trellis mapping. Simulation has shown an overall excellent performance of the proposed scheme in terms of mean square error (MSE) for channel estimation, robustness to the initial channel guess, computational complexity, and channel equalization.

정적 코드 내부 정보의 테이블 정규화를 통한 품질 메트릭 지표들의 가시화를 위한 추출 메커니즘 (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)에 대한 계산을 질의어화 하고 추출된 정보를 가시화하는 과정을 구현하는 것에만 초점을 두었다. 이러한 연구들은 방대한 코드로부터 추출한 정보를 이용하여 코드를 분석할 때 많은 시간과 자원이 소모된다는 한계점이 있다. 또한 각 코드 내 정보 테이블들이 정규화되지 않았기 때문에 코드 내부의 정보(클래스, 함수, 속성 등)들에 대한 테이블 조인 연산 시 메모리 공간과 시간 소비가 발생할 수 있다. 이러한 문제들을 해결하기 위해, 데이터베이스 테이블의 정규화된 설계와 이를 통한 코드 내부의 품질 메트릭 지표에 대한 추출 및 가시화 메커니즘 제안한다. 이러한 메커니즘을 통해 코드 가시화 공정이 최적화되고, 개발자가 리팩토링해야 할 모듈을 가이드 할 수 있을 것으로 기대한다. 앞으로는 부분 학습도 시도할 예정이다.

UML 클래스 다이어그램의 분석에 의한 객체지향 시스템의 정적 구조 복잡도 연구 (The Complexity of the Static Structures of Object-Oriented Systems by Analyzing the Class Diagram of UML)

  • 정홍;홍동권
    • 한국지능시스템학회논문지
    • /
    • 제14권6호
    • /
    • pp.793-799
    • /
    • 2004
  • 객체지향 시스템의 복잡성 척도에 대하여 많은 연구와 검증이 이루어져 왔다. 대부분의 척도들은 시스템의 부분적 측면 예를 들어, 객체 간 결합도, 상속 구조의 복잡도, 메소드의 응집도 등에 대한 측정을 목표로 하고 있다. 그런데 소프트웨어 실무자들은 부분적이 아닌 시스템의 전반적인 복잡도를 측정할 수 있기를 바라고 있다. 본 논문은 UML의 클래스 다이어그램을 분석함으로써 객체지향 시스템의 전체적 구조에 대한 복잡도를 연구한 것이다. 클래스 다이어그램은 클래스와 클래스 간 관계로 구성되어 있다. 관계에는 연관 관계, 일반화 관계, 집합 관계 등 세 가지가 있는데 이 관계들이 객체지향 시스템의 구조를 이해하기 어렵게 하고 있다. 본 연구에서는 이 세 가지 관계를 통합하여 객체지향 시스템의 복잡도를 측정하는 경험적 척도를 제안하고 있다. 이 척도는 소프트웨어 개발자가 코딩하기 전에 객체지향 시스템의 복잡도를 평가해 보고 필요시 설계를 수정할 수 있도록 하게 함으로써 설계 업무에 많은 도움을 줄 것이다.

결합도 측정 메트릭을 이용한 객체지향적 개발 소프트웨어의 영향도 분석에 관한 연구 (Study on the Analysis of the impact of object-oriented software development using the coupling metrics that measure)

  • 권예진;박용범
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2013년도 춘계학술발표대회
    • /
    • pp.998-1003
    • /
    • 2013
  • 소프트웨어가 복잡해지고 대형화됨에 따라 다양한 소프트웨어 측정 개발에 필요한 비용이 점차 증가하게 되었지만 지금까지 시도된 측정 기법은 정형화되어 있지 않고 다양한 측정 메트릭을 통해 소프트웨어를 측정한다고 해도 측정 결과의 비교와 분석을 통해 수치적 해석 데이터를 얻기가 어려웠다. 따라서 본 논문에서는 사용자의 사용 사례를 통해 패턴을 추출하고 이를 통해 실험 데이터를 만들어 실제 소프트웨어가 동작하는 도중 내부 모듈간의 동적인 관계를 측정할 수 있는 시스템을 제안하였다.

페이지랭크 알고리즘을 이용한 결합도 척도의 개선 (Using PageRank Algorithm to Improve Coupling Metrics)

  • 박철현;류성태;이은석
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2011년도 춘계학술발표대회
    • /
    • pp.1405-1408
    • /
    • 2011
  • 소프트웨어 품질 측정은 소프트웨어 공학의 필수적인 요소이다. 소프트웨어 품질 척도 중 하나인 결합도는 모듈간의 얼마나 강하게 연결되어있는지를 나타낸다. 결합도는 소프트웨어의 결함-경향성, 모듈화, 재사용성, 변경-경향성 등 다양한 목적으로 사용된다. 기존의 결합도 척도들은 메소드호출 횟수에 의해서 결정되는데, 이는 메소드의 가중치를 고려하지 않기 때문에 결합도를 정확히 측정 하지 못한다. 본 논문은 페이지랭크 알고리즘을 이용하여 메소드의 가중치를 측정하고, 이를 이용한 결합도 척도 개선 방법에 대해 제안한다. 본 논문의 유효성을 검증하기 위하여, 4 개의 오픈 소스 프로젝트를 대상으로 기존의 방법과 개선된 방법으로 결합도 척도 3 개를 측정하였다. 개선된 결합도 3 개는 유지보수의 척도로 사용되는 변경-경향성(Change-Proneness)과의 상관계수가 기존의 결합도 척도에 비하여 눈의 띄게 향상되었다. 따라서 개선된 결합도 척도는 소프트웨어 품질을 더 정확하게 측정할 수 있다.

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

  • 박찬솔;전병국;김영철
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2022년도 추계학술발표대회
    • /
    • pp.85-87
    • /
    • 2022
  • 고품질 코드를 위한 정적 분석은 아직도 매우 필요한 영역이며, 또한 코드의 가시화는 개발자들에게 코드의 복잡한 모듈에 대한 가이드에 필요하다. 기존의 코드 가시화는 정적 분석의 코드 내부 정보들을 DB 테이블화 및 품질 지표(CK Metrics, Coupling, # function Calls, Bed smell) 질의어화, 그리고 추출된 정보를 가시화하는 것에만 초점을 두었다. 문제는 코드 내부 정보(Class, method, parameters, etc) 테이블들에 대한 join 연산 시 엄청난 시간과 리소스가 소모된다. 이 문제를 해결하기 위해, 우리는 테이블 설계의 정규화를 제안한다. 또한 필요한 품질 지표의 질의를 통해 코드 내부 정보 추출하여 데이터 및 제어 복잡 모듈을 식별하여 refactoring 를 가이드 한다. 앞으로는 이 부분의 AI learning 을 통해 bad/good program 을 식별을 기대한다.

재사용 모듈 추출을 위한 오픈 소스 기반 소프트웨어 시스템 구축 (Constructing an Open Source Based Software System for Reusable Module Extraction)

  • 변은영;박보경;장우성;김영철;손현승
    • 정보과학회 컴퓨팅의 실제 논문지
    • /
    • 제23권9호
    • /
    • pp.535-541
    • /
    • 2017
  • 소프트웨어 시장 규모가 확대되면서 다양한 요구사항을 만족시키는 대규모 소프트웨어가 개발되고 있다. 이로 인해 소프트웨어 복잡도가 증가하게 되고 품질 관리는 어려워졌다. 특히, 레거시 시스템의 개선 및 새로운 시스템 개발 환경에서 재사용은 중요하다. 이 논문에서는 품질을 인증 받은 모듈을 재사용하는 방법을 제안한다. 재사용 적용 레벨은 코드 영역(메소드, 클래스, 컴포넌트), 프로젝트 도메인, 비즈니스로 나누어진다. 이 논문에서는 소프트웨어 복잡성을 측정하는 결합도와 응집도 기반의 재사용 메트릭과 메소드와 클래스 레벨에 따라 "재사용에 적합한 모듈 덩어리"를 시각화하는 재사용 적합 모듈 추출 메카니즘을 제안한다. 레거시 프로젝트에 역공학 기법을 적용하여 어떤 모듈/객체/덩어리가 재사용할 수 있는 지를 식별하고 확장 시스템을 개발하거나 유사한 새로운 시스템을 개발하기 위해 재사용한다면 소프트웨어의 신뢰성을 보장하고 소프트웨어 개발 단계에서 필요한 시간과 비용을 절감시킬 수 있다.

클라우드네이티브 애플리케이션 구축을 위한 마이크로서비스 식별 방법 (Identification of Microservices to Develop Cloud-Native Applications)

  • 최옥주;김유경
    • 한국소프트웨어감정평가학회 논문지
    • /
    • 제17권1호
    • /
    • pp.51-58
    • /
    • 2021
  • 최근 주목받고 있는 마이크로서비스는 독립적으로 개발될 뿐만 아니라 독립적으로 실행 및 배포가 가능하다는 장점 때문에, 클라우드 컴퓨팅 환경에서 보다 유연한 확장과 효율적인 협력을 보장할 수 있다. 이러한 영향으로 최근 마이크로서비스지향 애플리케이션 환경으로의 전환이 급격히 증가하고 있다. 마이크로서비스의 도입을 위해서는 무엇보다 모노리식 아키텍처로 구축된 단일 애플리케이션의 구성요소를 마이크로서비스 단위로 식별하는 문제가 선결되어야 한다. 본 논문에서는 레거시 시스템으로부터 마이크로서비스 식별의 문제를 알고리즘 기반으로 해결하기 이한 접근방법을 제안한다. 코드의 메타정보를 이용하여 그래프를 생성하고 클러스터링 알고리즘을 적용하여 마이크로서비스 후보를 추출한다. 추출된 마이크로서비스 후보에 대해 메트릭을 이용하여, 모듈화 품질을 평가한다. 또한 제안된 식별 방법의 효과를 검증하기 위해 벤치마크를 위해 많이 사용되는 공개 소프트웨어의 코드를 이용하여 후보 서비스를 도출하고, 메트릭을 이용하여 모듈화 수준을 평가한다. 결과적으로 좀더 작은 단위의 마이크로서비스로 식별해 내면서 모듈품질을 향상시키는 결과를 확인할 수 있다.

AJFCode: An Approach for Full Aspect-Oriented Code Generation from Reusable Aspect Models

  • Mehmood, Abid;Jawawi, Dayang N.A.
    • KSII Transactions on Internet and Information Systems (TIIS)
    • /
    • 제16권6호
    • /
    • pp.1973-1993
    • /
    • 2022
  • Model-driven engineering (MDE) and aspect-oriented software development (AOSD) contribute to the common goal of development of high-quality code in reduced time. To complement each approach with the benefits of the other, various methods of integration of the two approaches were proposed in the past. Aspect-oriented code generation, which targets obtaining aspect-oriented code directly from aspect models, offers some unique advantages over the other integration approaches. However, the existing aspect-oriented code generation approaches do not comprehensively address all aspects of a model-driven code generation system, such as a textual representation of graphical models, conceptual mapping, and incorporation of behavioral diagrams. These problems limit the worth of generated code, especially in practical use. Here, we propose AJFCode, an approach for aspect-oriented model-driven code generation, which comprehensively addresses the various aspects including the graphical models and their text-based representation, mapping between visual model elements and code, and the behavioral code generation. Experiments are conducted to compare the maintainability and reusability characteristics of the aspect-oriented code generated using the AJFCode with the most comprehensive object-oriented code generation approach. AJFCode performs well in terms of all metrics related to maintainability and reusability of code. However, the most significant improvement is noticed in the separation of concerns, coupling, and cohesion. For instance, AJFCode yields significant improvement in concern diffusion over operations (19 vs 51), coupling between components (0 vs 6), and lack of cohesion in operations (5 vs 9) for one of the experimented concerns.