• 제목/요약/키워드: class complexity metrics

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

Unified Process의 분석 클래스에 대한 복잡도 척도 (Complexity Metrics for Analysis Classes in the Unified Software Development Process)

  • 김유경;박재년
    • 정보처리학회논문지D
    • /
    • 제8D권1호
    • /
    • pp.71-80
    • /
    • 2001
  • 구조적 개발 방법론에 적용하도록 만들어진 복잡도 척도들은 클래스, 상속성, 메시지 전달 그리고 캡슐롸와 같은 객체지향의 개념에 직접적으로 적용할 수 없다. 또한, 기존이 객체지향 소프트웨어에 대한 척도의 연구는 프로그램의 복잡도나, 설계 단계의 척도가 대부분이었다. 실제로 분석 단계 클래스의 복잡도를 낮춤으로써, 시스템의 개발 노력이나 비용 및 유지보수 단계에서의 노력이 크게 줄어들게 되므로, 분석 클래스에 대한 복잡도를 측량하기 위한 척도가 필요하다. 본 논문에서는 객체지향 개발방법론인 Unified Process의 분석 단계에서 추출되는 분석 클래스에 대하여 복잡도를 측정할 수 있는 새로운 척도를 제안한다. 협력의 복잡도 CC(Collaboration Complexity)는 가능한 협력의 최대 수로서 클래스가 잠재적으로 얼마나 복잡할 수 있는지를 측정하기 위한 척도이며, 각 협력자들의 인터페이스를 이해하는 것과 관련된 총체적 어려움을 측정하는 인터페이스 복잡도 IC(Interface Complexity)를 정의하였다. 제안된 척도는 클래스의 크기 및 상속성에 대하여 수학적인 증명을 하였으며, Weyuker의 9가지 공리적 성질에 대하여 이론적인 검증을 하였다. 또한, 텍스트 마이닝 기법을 사용하여 사용자의 질문에 자동으로 응답하는 시스템의 분석 클래스에 대하여 제안된 척도를 사용하여 복잡도를 측정하였고 기존의 복잡도 척도인 CBO와 WMC의 값을 계산하여 비교하였다. CC와 CBO, IC와 WMC의 값을 비교해 본 결과 제안된 복잡도 척도의 계산 결과 제안된 복잡도 척도의 계산 결과 값이 그 값들보다 좀 더 복잡도를 잘 표현하고 있었다. 이로써 소프트웨어 개발 주기의 초기에 클래스에 대한 복잡도를 평가해 보고, 나머지 단계에 필요한 시간과 노력을 예측함으로써 보다 비용-효과적인 객체지향 소프트웨어를 개발할 수 있는 가능성이 높아진다.

  • PDF

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의 클래스 다이어그램을 분석함으로써 객체지향 시스템의 전체적 구조에 대한 복잡도를 연구한 것이다. 클래스 다이어그램은 클래스와 클래스 간 관계로 구성되어 있다. 관계에는 연관 관계, 일반화 관계, 집합 관계 등 세 가지가 있는데 이 관계들이 객체지향 시스템의 구조를 이해하기 어렵게 하고 있다. 본 연구에서는 이 세 가지 관계를 통합하여 객체지향 시스템의 복잡도를 측정하는 경험적 척도를 제안하고 있다. 이 척도는 소프트웨어 개발자가 코딩하기 전에 객체지향 시스템의 복잡도를 평가해 보고 필요시 설계를 수정할 수 있도록 하게 함으로써 설계 업무에 많은 도움을 줄 것이다.

객체지향 역공학을 위한 소프트웨어 복잡도 측정 기법 (A Software Complexity Measurement Technique for Object-Oriented Reverse Engineering)

  • 김종완;황종선
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제32권9호
    • /
    • pp.847-852
    • /
    • 2005
  • 지난 10여년간 객체지향 코드의 관리 및 분석을 위해 객체지향 소프트웨어 시스템에 대한 다양한 복잡도 계산 기법들이 제안되었다. 이러한 기법들은 WMC(Weighted Methods per Class), LCOM(Lack of Cohesion in Methods)과 같이 소스코드 분석을 기반으로 한다. 기존 기법들의 한계는 코드에서 함수의 개수만 계산한다는 것이다. 본 논문에서는 함수의 파라메타 개수, 반환값 여부 그리고 자료형까지도 확인하는 새로운 가중치 기법을 제안하며, 이를 역공학에 적용한다. 또한 역공학과정에서 객체지향 코드를 위한 클래스 복잡도 계산 지침을 제공하기 위해 인터페이스에 가중치를 부여하는 효율적인 복잡도 측정 기법을 제안한다. 제안기법인 ECC(Enhanced Class Complexity)는 C++ 환경에서 일관성 있고 정확한 결과를 보여준다.

자바 프로그램의 복잡도 측정을 위한 척도 $\pi_{java}$의 설계 (Design of the Metrics Suite $\pi_{java}$for Java Program Complexity)

  • Eun-Mi Kim
    • 한국컴퓨터산업학회논문지
    • /
    • 제2권3호
    • /
    • pp.407-416
    • /
    • 2001
  • 본 논문에서는 C++ 프로그램을 측정하기 위하여 제안된 척도 $\pi_{java}$ c++/를 기반으로 Java 프로그램 복잡도를 측정하기 위한 척도 $\pi_{java}$ Java/을 제안한다. C++를 측정하기 위해 많은 척도들이 제안되어 왔으나 이들은 Java 프로그램만이 가지는 특성들을 고려하지 않았기 때문에 C++ 프로그램과 다른 성질을 가지고 있는 Java프로그램에 이들을 그대로 적용하는 것은 어렵다. 따라서, 본 논문에서는C++와 Java 언어의 공통점과 차이점을 분석한 결과와 본 연구팀이 C++ 프로그램의 복잡도를 측정하기 위해 제안했던 척도 $\pi_{java}$ c++/을 바탕으로 Java 프로그램의 복잡도를 측정하기 위한 새로운 척도 $\prod$$_{Java}$을 제안한다. 마지막으로 제안한 척도를 Weyuker의 성질에 적용하여 분석하며, 기존의 척도들과도 비교한다.

  • PDF

객체지향 분석 단계에서의 클래스 복잡도 측정 (Measurement of Classes Complexity in the Object-Oriented Analysis Phase)

  • 김유경;박재년
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제28권10호
    • /
    • pp.720-731
    • /
    • 2001
  • 구조적 개발 방법론에 적용하도록 만들어진 복잡도 척도들을 클래스의 상속성, 다형성, 메시지 전달 그리고 캡슐화와 같은 객체지향의 개념에 직접적으로 적용할 수 없다. 또한 기존의 객체지향 소프트웨어에 대한 척도의 연구는 프로그램의 복잡도나, 설계 단계의 척도가 대부분이었다. 실제로 분석단계 클래스의 복잡도를 낮춤으로서 시스템의 개발 노력이나 비용 및 유지보수 단계에서의 노력이 크게 줄어들게 되므로, 분석 클래스에 대한 복잡도를 측량하기 위한 척도가 필요하다. 본 논문에서는 객체지향 개발방법론인 RUP(Rational Unified Process)의 분석 단계에서 추출되는 분석 클래스에 대해서 복잡도를 측정할 수 있는 새로운 척도를 제안한다. 협력 복잡도CC(Collaboration Complexity)는 가능한 협력의 최대 수로서 클래스가 잠재적으로 얼마나 복잡할 수 있는지를 측정하기 위한 척도이며, 각 협력자들의 인터페이스를 이해하는 것과 관련된 총체적 어려움을 측정하는 인터페이스 복잡도 IC(Interface Complexity)를 정의하였다. 제안된 척도는 Weyuker의 9가지 공리적 성질에 대하여 이론적인 검증을 하였으며, 텍스트 마이닝 기법을 사용하여 사용자의 질문에 자동으로 응답하는 시스템의 분석 클래스에 대하여 제안된 척도를 적용하여 복잡도를 측정하였다. 제안된 CC와 IC의 값과 Chidamber와 Kemerer가 제안된 CBO와 WMC의 값을 비교해 본 결과, 제안된 복잡도 척도의 계산결과 값이 큰 클래스의 경우에는 설계 이후 단계에서도 역시 복잡도가 커지게 되는 것을 알 수 있었다. 이로써 소프트웨어개발 주기의 초기에 클래스에 대한 복잡도를 평가해 보고, 나머지 단계에 필요한 시간과 노력을 예측함으로써 보다 비용-효과적인 객체지향 소프트웨어를 개발할 수 있는 가능성이 높아질 것으로 기대된다.

  • PDF

Java프로그램에 대한 품질 및 복잡도 메트릭스 평가시스템 구현 (Development of A System for Quality Assessment and Complexity Metrics of Java programs)

  • 이상범;김경환
    • 한국산학기술학회논문지
    • /
    • 제4권4호
    • /
    • pp.346-351
    • /
    • 2003
  • 소프트웨어의 규모가 커지고 복잡해지고 있음에도 불구하고 한편으로는 개발기간의 단축, 코스트 절감, 생산성, 품질 향상 등이 요구되어지고 있다. 질 좋고 효율적인 소프트웨어를 구현하기 위해 예전부터 수많은 기법과 방법들이 제안되었고 구현되었다. 대표적인 것으로 다양한 CASE도구, 프로세스 평가모델(CMM, SPICE, ISO9000), 메트릭스 등이 있다. 하지만 이러한 개발 지원 방법들은 개발자 각 개인의 생산성을 위해 지원하기보다는 주로 프로젝트 전체 관리를 위해서 사용되어지고 있는 것이 일반적이다. 따라서 이러한 기법과 방법들을 개별 프로그래머의 개발과정에 사용하는 것은 부적절하다. 본 연구에서는 객체지향적 소프트웨어 개발방법론을 적용한 개발 프로세스를 개발조직의 평가개선보다는 개발자 개인의 작업향상과 품질향상에 위한 기법을 개발하였다. 특히 개발프로세스 중 코딩 단계에서 생산되는 생산물(source code)의 품질평가를 할 수 있는 평가 시스템을 제작하였다. 구체적으로 이 평가 시스템은 Java프로그램에 대한 품질평가로서 단순히 메트릭스 값만을 보여 주는 것이 아니라, 개발자가 작성한 소스코드, 클래스(class)의 계층구조를 동시에 보여준다.

  • PDF

웹 어플리케이션의 순환복잡도 메트릭스에 관한 연구 (A Study of Cyclomatic Complexity for Web Application)

  • 안종근;유해영
    • 정보처리학회논문지D
    • /
    • 제9D권3호
    • /
    • pp.447-456
    • /
    • 2002
  • 웹 어플리케이션은 기존의 어플리케이션과는 다른 구조적인 특징을 가지고 있다. 웹 서버 상에서 실행되는 프로그램 코드인 서버측 스크립트 요소, 웹 브라우저에서 수행되는 프로그램 코드인 클라이언트측 스크립트 요소, 웹 브라우저에서 사용자가 선택하는 링크 요소 그리고 사용자의 선택을 클라이언트 스크립트로 연결시켜 주는 이벤트 요소, 이렇게 네 가지 요소들이 상호 연관되어 웹 어플리케이션을 구성한다. 기존의 어플리케이션들보다 다양한 요소들로 구성된 웹 어플리케이션에서 복잡도 측정에 기존의 모듈 또는 클래스 단위로 적용되는 복잡도 측정 방법을 그대로 적용하기 힘들다. 이에 본 논문에서는 웹 어플리케이션의 구조적인 복잡함을 반영하는 웹 어플리케이션의 순환복잡도(CCWA : Cyclomatic Complexity for Web Application) 메트릭스를 제안한다. 제안된 CCWA 도구를 개발하여, 현재 기업에서 사용중인 웹 어플리케이션에 적용하여 평가하였다. 그 결과 제안된 CCWA 도구는 각 요소들에 순환복잡도를 각각 적용했을 때에는 발견할 수 없었던 복잡도가 높은 웹 어플리케이션 파일을 발견하게 해주었다.

클래스 상속구조에 대한 경험적 복잡성 척도 (A Heuristic Metric for Measuring Complexity of Class Inheritance Structures)

  • 정홍;김태식
    • 한국지능시스템학회논문지
    • /
    • 제12권4호
    • /
    • pp.328-333
    • /
    • 2002
  • 상속구조의 계층이 깊어질수록 재사용성은 좋으나 이해하기가 어려워지고 유지보수가 힘들어 진다. 반대로 계층이 얕을수록 추상성이 부족하나 이해성과 수정성이 좋아진다. 따라서 시스템의 유지보수성을 위해서는 깊은 상속구조를 분리하여 얕은 상속구조로 만드는 것이 바람직하다. 본 연구에서 제안한 복잡성 척도는 Chidamber and Kemerer의 상속구조에 관한 척도인 DIT(Depth of Inheritance Tree)와 NOC(Number Of Children)를 기초로 Li가 지적한 Chidamber and Kemerer 척도의 모호성을 해결한 통합적 척도로서, 클래스 상속구조의 복잡성 측정에 있어서 조상 클래스 수, 자손 클래스 수, 상속구조의 깊이를 고려한 간단하고 휴리스틱한 척도이다. 이는 상속구조의 분리에 있어서 복잡도를 정량적으로 평가할 수 있는 정보를 제공한다.

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 Metrics-Based Approach to the Reorganization of Class Hierarchy Structures)

  • 황석형;양해술;황영섭
    • 정보처리학회논문지D
    • /
    • 제10D권5호
    • /
    • pp.859-872
    • /
    • 2003
  • 클래스계층구조는 객체지향 소프트웨어의 중심적인 구성요소가 되며, 따라서 이에대한 품질은 매우 중요하다. 좋은 품질을 갖춘 클래스계층 구조를 구축하는 것은 객체지향 소프트웨어 개발에 있어서 매우 중요한 작업이지만, 좋은 품질의 클래스계층구조를 구축하는 작업은 수월하지 않다. 더욱이, 반복 및 점증적인 소프트웨어 개발에 있어서, 요구사양에 적합하도록 개발중인 클래스계층구조를 재구성하거나 세련시키는 작업이 빈번히 발생한다. 따라서, 객체지향 개발자들이 이와같은 클래스계층구조의 재구성 작업을 수행할 경우에 도움이 될 수 있는 기법 및 도구들에 대한 관심이 증가하고 있다. 본 논문에서는, 클래스계층구조의 복잡도를 일정수준 측정가능한 몇가지 평가척도를 제안하고, 이러한 평가척도들을 바탕으로 클래스계층구조를 재구성하는 알고리즘들을 정의한다. 또한, 각 알고리즘들에 대하여, 알고리즘을 적용하기 전과 후의 각 클래스계층구조들로부터 생성할 수 있는 객체들의 집합이 변화하지 알고 보존됨을 증명하였다. 본 논문에서 제안하는 재구성기법은 클래스계층구조의 구축 및 재구성 등의 지침으로서 사용할 수 있으며, 이러한 평가척도들을 기반으로 하는 클래스계층구조의 재구성 알고리즘들은 객체지향 소프트웨어 개발시에 유용한 도구로서 개발자들에게 도움이 될 수 있다.