KR102630168B1 - 코드를 관리하는 전자 장치 및 방법 - Google Patents

코드를 관리하는 전자 장치 및 방법 Download PDF

Info

Publication number
KR102630168B1
KR102630168B1 KR1020230070972A KR20230070972A KR102630168B1 KR 102630168 B1 KR102630168 B1 KR 102630168B1 KR 1020230070972 A KR1020230070972 A KR 1020230070972A KR 20230070972 A KR20230070972 A KR 20230070972A KR 102630168 B1 KR102630168 B1 KR 102630168B1
Authority
KR
South Korea
Prior art keywords
code
entry node
node
nodes
execution frequency
Prior art date
Application number
KR1020230070972A
Other languages
English (en)
Inventor
홍성민
김상률
임병후
문인주
최제헌
이승열
Original Assignee
쿠팡 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 쿠팡 주식회사 filed Critical 쿠팡 주식회사
Priority to KR1020230070972A priority Critical patent/KR102630168B1/ko
Application granted granted Critical
Publication of KR102630168B1 publication Critical patent/KR102630168B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4435Detection or removal of dead or redundant code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 개시의 일 실시예에 따른 전자 장치에서 코드를 관리하는 방법은, 소스코드에서 복수의 노드에 대한 정보를 확인하는 단계, 상기 복수의 노드 중 적어도 하나의 진입 노드를 확인하는 단계, 상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 단계, 및 상기 적어도 하나의 진입 노드의 실행 빈도에 기초하여 상기 소스코드 중 관리 대상인 코드 세트를 확인하는 단계를 포함할 수 있다.

Description

코드를 관리하는 전자 장치 및 방법{ELECTRONIC DEVICE AND METHOD FOR MANAGING CODES}
본 개시는 코드를 관리하는 기술에 관한 것으로서, 구체적으로, 코드의 실행 빈도에 기초하여, 데드 코드(dead code)를 식별하여 제거하는 기술에 관한 것이다.
소스코드에 있어서 사용되지 않거나 거의 실행(사용)되지 않는 코드가 제거되지 않는 경우, 이러한 코드가 누적되면서 용량 및 시간 측면에서 비효율적이라는 문제가 발생할 수 있다. 종래에는 연결된 참조(reference)가 존재하지 않는 코드를 미사용 코드(unused code)로 식별하여 제거하는 기능이 사용되고 있다. 다만, 코드 중에서는 연결된 참조가 존재함에도 불구하고 전혀 실행되지 않거나 거의 실행되지 않는 코드(즉, 데드 코드)도 존재하며, 이러한 코드는 상술한 기능을 통해 제거되지 않는다는 문제점이 있다.
본 개시의 일 실시예에 따르면, 코드의 실행 빈도에 따라 데드 코드를 식별하고, 데드 코드를 관리할 수 있도록 하는 것을 기술적 해결 과제로 한다.
본 개시의 일 실시예에 따른 전자 장치에서 코드를 관리하는 방법은, 소스코드에서 복수의 노드에 대한 정보를 확인하는 단계; 상기 복수의 노드 중 적어도 하나의 진입 노드를 확인하는 단계; 상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 단계; 및 상기 적어도 하나의 진입 노드의 실행 빈도에 기초하여 상기 소스코드 중 관리 대상인 코드 세트를 확인하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 단계는, 상기 적어도 하나의 진입 노드에 실행 빈도를 측정하기 위한 테스트 코드를 삽입하는 단계; 설정된 기간 동안 상기 테스트 코드의 로그 기록을 확인하는 단계; 및 상기 테스트 코드의 로그 기록에 따라, 상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 단계를 포함할 수 있다.
일 실시예에 따른 코드를 관리하는 방법은, 상기 적어도 하나의 진입 노드의 실행 빈도에 기초하여, 상기 적어도 하나의 진입 노드의 레벨을 결정하는 단계를 더 포함하고, 상기 관리 대상인 코드 세트를 확인하는 단계는, 상기 적어도 하나의 진입 노드의 레벨에 기초하여, 상기 소스코드 중 상기 관리 대상인 코드 세트를 확인하는 단계일 수 있다.
일 실시예에 따르면, 상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 단계는 복수 회 반복하여 수행하고, 상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 간격은 상기 적어도 하나의 진입 노드의 레벨에 기초하여 결정될 수 있다.
일 실시예에 따른 코드를 관리하는 방법은, 상기 관리 대상인 코드 세트를 데드 코드로 확인하는 단계; 및 상기 데드 코드가 설정된 삭제 조건에 대응하는 경우, 상기 데드 코드를 삭제하는 단계를 더 포함할 수 있다.
일 실시예에 따른 코드를 관리하는 방법은, 상기 삭제한 데드 코드에 대한 호출을 획득하는 단계; 및 상기 삭제한 데드 코드를 복구하는 단계를 더 포함할 수 있다.
일 실시예에 따른 코드를 관리하는 방법은, 상기 소스코드에 대한 코드 커버리지 테스트를 수행하는 단계를 더 포함하고, 상기 적어도 하나의 진입 노드의 상기 코드 커버리지 테스트를 통과하기 위한 임계값은, 상기 적어도 하나의 진입 노드의 레벨에 기초하여 결정될 수 있다.
일 실시예에 따른 상기 관리 대상인 코드 세트를 확인하는 단계는, 실행 빈도가 설정된 임계값 미만인 제1 진입 노드를 확인하는 단계; 상기 제1 진입 노드와 연관된 적어도 하나의 제1 서브 노드를 확인하는 단계; 및 상기 제1 진입 노드 및 상기 적어도 하나의 제1 서브 노드에 대응하는 코드를 상기 관리 대상인 코드 세트로 확인하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 관리 대상인 코드 세트를 확인하는 단계는, 상기 적어도 하나의 제1 서브 노드 중 실행 빈도가 상기 임계값 이상인 제2 진입 노드와 연관된 적어도 하나의 제2 서브 노드를 확인하는 단계; 및 상기 적어도 하나의 제2 서브 노드에 대응하는 코드는 상기 관리 대상인 코드 세트에서 제외하는 단계를 더 포함할 수 있다.
일 실시예에 따른 코드를 관리하는 방법은, 상기 소스코드에 대한 그래프 구조의 데이터를 생성하는 단계를 더 포함하고, 상기 복수의 노드에 대한 정보를 확인하는 단계는, 상기 그래프 구조의 데이터에 포함된 상기 복수의 노드에 대한 정보를 확인하는 단계일 수 있다.
일 실시예에 따른 코드를 관리하는 방법은, 상기 적어도 하나의 진입 노드의 실행 빈도에 따라 상기 복수의 노드의 속성을 결정하는 단계; 및 통합 개발 환경을 통해 상기 복수의 노드의 속성이 반영된 상기 그래프 구조의 데이터를 표시하는 단계를 더 포함할 수 있다.
일 실시예에 따른 상기 복수의 노드의 속성은, 상기 복수의 노드의 크기 또는 색상 중 적어도 하나를 포함할 수 있다.
일 실시예에 따른 코드를 관리하는 방법은, 상기 소스코드의 실행 요청을 획득하는 단계를 더 포함하고, 상기 복수의 노드에 대한 정보를 확인하는 단계는, 상기 실행 요청에 따라 호출되는 프로그램의 구조에 기초하여, 상기 복수의 노드에 대한 정보를 확인하는 단계일 수 있다.
일 실시예에 따른 상기 복수의 노드에 대한 정보를 확인하는 단계는, 상기 실행 요청에 따라 호출되는 프로그램의 구조에 기초하여, 상기 소스코드에 포함된 클래스, 필드 또는 함수를 확인하는 단계; 및 상기 확인한 클래스, 필드 또는 함수를, 상기 복수의 노드로 확인하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 적어도 하나의 진입 노드는, 최상위 클래스, 외부 서버에 의존적인 필드 또는 외부 서버에 의존적인 함수를 포함할 수 있다.
일 실시예에 따른 코드를 관리하는 방법은, 상기 소스코드에 코드 블록을 추가하는 단계; 및 상기 코드 블록이 추가된 시점부터 소정의 기간이 경과할 때까지 상기 코드 블록에 대한 실행 빈도가 측정되지 않는 경우, 상기 코드 블록을 데드 코드로 확인하는 단계를 더 포함할 수 있다.
본 개시의 일 실시예에 따른 전자 장치는, 단말과 통신 연결된 통신 회로; 하나 이상의 프로세서; 및 하나 이상의 인스트럭션을 저장하는 하나 이상의 메모리를 포함하고, 상기 하나 이상의 프로세서는, 상기 하나 이상의 인스트럭션을 실행함으로써, 소스코드에서 복수의 노드에 대한 정보를 확인하고, 상기 복수의 노드 중 적어도 하나의 진입 노드를 확인하고, 상기 적어도 하나의 진입 노드의 실행 빈도를 확인하고, 상기 적어도 하나의 진입 노드의 실행 빈도에 기초하여 상기 소스코드 중 관리 대상인 코드 세트를 확인하도록 구성될 수 있다.
본 개시의 일 실시예에 따르면, 코드의 실행 빈도에 따라 데드 코드를 식별하고, 데드 코드를 관리할 수 있다.
도 1은 본 개시의 일 실시예에 따른 전자 장치의 블록도이다.
도 2는 본 개시의 일 실시예에 따른, 전자 장치와 단말 사이의 동작을 설명하기 위한 도면이다.
도 3은 본 개시의 일 실시예에 따른 전자 장치의 처리 흐름도이다.
도 4a 및 4b는 본 개시의 일 실시예에 따른 소스코드에 대한 그래프이다.
도 5는 본 개시의 일 실시예에 따른 소스코드에 대한 그래프이다.
도 6은 본 개시의 일 실시예에 따른 전자 장치의 처리 흐름도이다.
도 7은 본 개시의 일 실시예에 따른 소스코드를 시각화한 도면이다.
실시 예들에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "...모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
명세서 전체에서 기재된 "a, b, 및 c 중 적어도 하나"의 표현은, 'a 단독', 'b 단독', 'c 단독', 'a 및 b', 'a 및 c', 'b 및 c', 또는 'a,b,c 모두'를 포괄할 수 있다.
이하에서 언급되는 "단말"은 네트워크를 통해 서버나 타 단말에 접속할 수 있는 컴퓨터나 휴대용 단말로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop) 등을 포함하고, 휴대용 단말은 예를 들어, 휴대성과 이동성이 보장되는 무선 통신 장치로서, IMT(International Mobile Telecommunication), CDMA(Code Division Multiple Access), W-CDMA(W-Code Division Multiple Access), LTE(Long Term Evolution) 등의 통신 기반 단말, 스마트폰, 태블릿 PC 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 1은 본 개시의 일 실시예에 따른 전자 장치(100)의 블록도이다. 전자 장치(100)는 전자 상거래와 관련된 서비스를 운용하는 서버(server)일 수 있다. 전자 장치(100)는 서비스를 운용하기 위한 다양한 프로그램(소프트웨어)을 관리하는 서버일 수 있다. 전자 장치(100)는 단말과 통신 연결되어 다양한 정보를 송수신할 수 있다. 전자 장치(100)는 프로그램과 관련된 다양한 정보를 획득하고 단말로부터 획득하고, 이를 단말 또는 다른 장치에 제공하는 장치일 수 있다.
도 1을 참조하면, 일 실시예에 따른 전자 장치(100)는 프로세서(110), 메모리(120) 및 통신 회로(130)를 포함할 수 있다. 전자 장치(100)에 포함된 구성 요소들 중 적어도 하나가 생략되거나, 다른 구성요소가 전자 장치(100)에 추가될 수 있다. 추가적으로 또는 대체적으로 일부의 구성요소들이 통합되어 구현되거나, 단수 또는 복수의 개체로 구현될 수도 있다. 전자 장치(100) 내의 적어도 일부의 구성요소들은 버스(bus), GPIO(general purpose input/output), SPI(serial peripheral interface) 또는 MIPI(mobile industry processor interface) 등을 통해 서로 연결되어, 데이터 및/또는 시그널을 주고 받을 수 있다.
일 실시예에 따른 전자 장치(100)의 프로세서(110)는 전자 장치(100)의 각 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 수행할 수 있는 구성으로서, 전자 장치(100)의 구성요소들과 작동적으로 연결될 수 있다. 프로세서(110)는 전자 장치(100)의 다른 구성 요소로부터 수신된 명령 또는 데이터를 메모리(120)에 로드하고, 메모리(120)에 저장된 명령 또는 데이터를 처리하며, 결과 데이터를 저장할 수 있다. 일 실시예에 따른 전자 장치(100)의 메모리(120)는 적어도 하나의 구성요소(예: 프로세서(110))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 메모리(120)는 상기에 기재된 프로세서(110)의 동작에 대한 인스트럭션들을 저장할 수 있다. 프로그램은 메모리(120)에 소프트웨어로서 저장될 수 있으며, 예를 들어, 운영 체제, 미들 웨어 또는 애플리케이션을 포함할 수 있다.
일 실시예에 따른 전자 장치(100)의 통신 회로(130)는 외부 장치(예: 단말)와 유선 또는 무선 통신 채널을 설립하고, 외부 장치와 다양한 데이터를 송수신할 수 있다. 전자 장치(100)의 통신 회로(130)는 외부 장치와 유선으로 통신하기 위해서, 외부 장치와 유선 케이블로 연결되기 위한 적어도 하나의 포트를 포함할 수 있다. 전자 장치(100)의 통신 회로(130)는 셀룰러 통신 모듈을 포함하여 셀룰러 네트워크(예: 3G, LTE, 5G, Wibro 또는 Wimax)에 연결되도록 구성할 수 있다. 일 실시예에 따르면, 전자 장치(100)의 통신 회로(130)는 근거리 통신 모듈을 포함하여 근거리 통신(예를 들면, Wi-Fi, Bluetooth, Bluetooth Low Energy(BLE), UWB)을 이용해 외부 장치와 데이터 송수신을 할 수 있으나, 이에 제한되지 않는다.
도 2는 본 개시의 일 실시예에 따른 전자 장치(100)와 단말(200)의 동작을 설명하기 위한 도면이다.
일 실시예에 따른 전자 장치(100)는 단말(200)과 통신 연결되어 다양한 정보를 송수신할 수 있다. 단말(200)은 컨트롤러(210), 통신 회로(220) 및 데이터베이스(230)를 포함할 수 있다. 단말(200)에 포함된 구성 요소들 중 적어도 하나가 생략되거나, 다른 구성요소가 단말(200)에 추가될 수도 있다. 단말(200) 내의 적어도 일부의 구성요소들은 버스, GPIO, SPI 또는 MIPI 등을 통해 서로 연결되어, 데이터 및/또는 시그널을 주고 받을 수 있다.
일 실시예에 따른 단말(200)의 컨트롤러(210)는 단말(200)의 각 구성요소들의 제어 및/또는 통신에 관한 연산에나 데이터 처리를 수행할 수 있는 구성으로서, 단말(200)의 구성요소들과 작동적으로 연결될 수 있다. 일 실시예에 따른 컨트롤러(210)는 사용 빈도 수집부(211)(usage frequency collector) 및 배치 작업 생성부(213)(batch job builder)를 포함할 수 있다.
일 실시예에 따른 단말(200)의 통신 회로(220)는 외부 장치(예: 전자 장치(100))와 유선 또는 무선 통신 채널을 설립하고, 외부 장치와 다양한 데이터를 송수신할 수 있다. 단말(200)의 통신 회로(220)는 외부 장치와 유선으로 통신하기 위해서, 외부 장치와 유선 케이블로 연결되기 위한 적어도 하나의 포트를 포함할 수도 있다. 단말(200)의 통신 회로(220)는 셀룰러 통신 모듈을 포함하여 셀룰러 네트워크(예: 3G, LTE, 5G, Wibro 또는 Wimax)에 연결되도록 구성할 수 있다. 단말(200)의 통신 회로(220)는 근거리 통신 모듈을 포함하여 근거리 통신(예를 들면, Wi-Fi, Bluetooth, Bluetooth Low Energy(BLE), UWB)을 이용해 외부 장치와 데이터 송수신을 할 수도 있으나, 이에 제한되지 않는다.
일 실시예에 따른 단말(200)은 프로그램을 구동하기 위한 소스코드(205)를 저장할 수 있다. 소스코드(205)는 서버인 전자 장치(100)로부터 수신하여 단말(200)에 저장될 수 있다. 전자 장치(100)는 프로그램에 사용된 소스코드(205)에 대한 그래프 구조의 데이터를 생성할 수 있다. 그래프 구조란, 데이터를 구성하는 객체들 간의 관계를 나타내는 구조일 수 있다. 그래프 구조는 복수의 노드(node) 및 노드 사이를 연결하는 복수의 엣지(edge)를 포함할 수 있다. 본 문서에 개시된 그래프는 방향성 그래프(directed graph)를 의미할 수 있다. 본 개시에서는 그래프 구조의 데이터를 중심으로 설명하지만, 트리 구조의 데이터를 이용할 수도 있다.
그래프 구조의 데이터에 포함된 복수의 노드는, 소스코드(205)에 포함된 클래스(class), 필드(field) 또는 함수(function)를 나타낼 수 있다. 클래스란 객체를 정의하는 틀을 의미할 수 있다. 객체는 프로그램에 사용되는 데이터를 의미할 수 있다. 클래스는 객체의 상태를 나타내는 필드와 객체의 행동을 나타내는 메소드(method)를 포함할 수 있다. 필드는 클래스에 포함된 변수(variables)를 의미할 수 있다. 함수는 특정 목적을 가진 작업을 수행하는 코드의 집합(또는 코드가 모인 블록)일 수 있다. 즉, 각각의 노드는 특정 기능을 수행하기 위한 코드의 집합으로 구성될 수 있다.
일 실시예에 따른 전자 장치(100)는 소스코드 시각화 도구를 이용하여 소스코드에 대한 그래프 구조의 데이터를 생성할 수 있다. 소스코드 시각화 도구는, 예를 들어, 소스코드에 포함되어 있는 유용한 프로그램 정보를 추출하는 전처리 단계로서 파서(parser)를 이용하여 구문 분석을 수행하고, 구문 분석을 수행함에 따라 중간 표현(intermediate representation)을 생성할 수 있다. 소스코드 시각화 도구는 추상구문트리를 이용하여 구문 정보를 읽음으로서, 그래프 구조의 데이터를 생성할 수 있다. 상술한 예시 이외에도, 전자 장치(100)는 다양한 소스코드 시각화 도구를 이용하여 소스코드를 시각화할 수 있다. 사용자는 시각화된 소스코드를 이용하여 소스코드를 쉽게 이해하고 분석할 수 있다. 즉, 전자 장치(100)는 소스코드 시각화 도구를 이용하여 소스코드에 포함된 클래스, 필드 또는 함수를 확인하고, 확인한 클래스, 필드 또는 함수 각각을 노드로 하는 그래프 구조의 데이터를 생성할 수 있다.
일 실시예에 따른 전자 장치(100)는 소스코드에서 복수의 노드에 대한 정보를 확인할 수 있다. 구체적으로, 전자 장치(100)는 소스코드의 실행 요청에 따라 호출되는 서버단의 프로그램의 구조에 기초하여 복수의 노드에 대한 정보를 확인할 수도 있고, 소스코드에 대한 그래프 구조의 데이터에 기초하여 복수의 노드에 대한 정보를 확인할 수 있다. 일 실시예에 따르면, 전자 장치(100)는 소스코드의 실행 요청을 획득하고, 상기 실행 요청에 따라 호출되는 프로그램의 구조에 기초하여, 복수의 노드에 대한 정보를 확인할 수 있다. 예를 들어, 전자 장치(100)는 상기 실행 요청에 따라 호출되는 프로그램의 구조에 기초하여, 소스코드에 포함된 클래스, 필드 또는 함수를 확인하고, 상기 확인한 클래스, 필드 또는 함수를 복수의 노드로 확인할 수 있다. 일 실시예에 따르면, 전자 장치(100)는 그래프 구조의 데이터에 포함된 복수의 노드를 확인할 수도 있다.
일 실시예에 따른 전자 장치(100)는 복수의 노드 중 적어도 하나의 진입 노드를 확인(결정)할 수 있다. 진입 노드는, 엔드 투 엔드(end-to-end) 방식에 있어서, 엔드 간의 의존적인 시작 지점을 의미할 수 있다. 진입 노드는, 진입 포인트, 엔트리 포인트, 엔트리 코드로 불릴 수도 있다. 진입 노드에 해당하는지 여부는, 사용자에 의해 결정될 수도 있고, 특정 규칙(예: 클래스 명, 클래스의 계층, 서버에 의존하는지 여부)에 따라 결정될 수도 있다. 주로 외부 서버에 의해 호출되는 노드가 진입 노드로 결정될 수 있다. 전자 장치(100)는, 예를 들어, 그래프 구조의 데이터에 포함된 복수의 노드 중, 최상위 클래스, 외부 서버에 의존적인 필드 또는 외부 서버에 의존적인 함수에 대응하는 적어도 하나의 노드를 진입 노드로 결정할 수 있다.
일 실시예에 따른 전자 장치(100)는 적어도 하나의 진입 노드의 실행 빈도를 확인하기 위하여, 적어도 하나의 진입 노드에 실행 빈도를 측정하기 위한 테스트 코드(test code)를 삽입할 수 있다. 예를 들어, 프로세서(110)는 컴파일 시점에 적어도 하나의 진입 노드에 해당하는 클래스에, 실행 빈도를 측정하기 위한 테스트 코드를 삽입할 수 있다. 전자 장치(100)는 적어도 하나의 진입 노드에 테스트 코드가 삽입된 소스코드를 단말(200)로 전송할 수 있다. 단말(200)은 적어도 하나의 진입 노드에 테스트 코드가 삽입된 소스코드를 컴파일(compile)할 수 있다. 또 다른 실시예에 따르면, 전자 장치(100)는 단말(200)이 보관하고 있는 소스코드의 적어도 하나의 진입 노드에 테스트 코드를 삽입할 수도 있다.
일 실시예에 따른 사용 빈도 수집부(211)는 적어도 하나의 진입 노드에 삽입된 테스트 코드가 실행(사용)되었는지에 대한 정보를 수집하는 구성일 수 있다. 사용 빈도 수집부(211)는 소프트웨어 모듈일 수 있다. 사용 빈도 수집부(211)는 적어도 하나의 진입 노드에 삽입된 테스트 코드가 얼마나 실행 되었는지를 모니터링함으로써, 적어도 하나의 진입 노드의 실행 빈도를 확인할 수 있다. 사용 빈도 수집부(211)는 수집된 정보를 데이터베이스(230)에 저장할 수 있다. 진입 노드의 실행 빈도를 측정하는 구체적인 방법은 후술하기로 한다.
일 실시예에 따른 단말(200)의 데이터베이스(230)는, 컨트롤러(210)의 제어 하에, 다양한 정보(또는 데이터)를 저장할 수 있다. 데이터베이스(230)는 프로그램과 관련된 다양한 정보를 저장할 수 있다. 본 실시예에서는 데이터베이스(230)가 단말(200)에 포함되는 것으로 설명하였으나 이에 제한되는 것은 아니고, 데이터베이스(230)는 단말(200)의 외부에 구현되어 단말(200)과 다양한 데이터를 주고 받을 수도 있다. 데이터베이스(230)는 적어도 하나의 진입 노드의 실행 빈도에 관한 정보를 저장할 수 있다. 일 실시예에 따르면, 데이터베이스(230)는 자주 실행된 진입 노드에 대해서는 실행 빈도에 관한 정보를 저장하지 않을 수도 있다. 일 실시예에 따르면, 적어도 하나의 진입 노드 각각의 실행 빈도에 관한 시계열적인 변화를 측정하기 위하여, 모든 진입 노드의 실행 빈도에 관한 정보를 측정할 수 있다.
일 실시예에 따르면 배치 작업 생성부(213)는, 데이터베이스(230)에 저장된 적어도 하나의 진입 노드의 실행 빈도에 관한 정보를 통신 회로(220)를 통해 서버(즉, 전자 장치(100))로 전송할 수 있다. 배치 작업 생성부(213)는 단말(200)이 유휴 상태이면, 적어도 하나의 진입 노드의 실행 빈도에 관한 정보를 서버(전자 장치(100))로 전송할 수 있다.
일 실시예에 따르면 전자 장치(100)는 소스코드에 포함된 적어도 하나의 진입 노드의 실행 빈도를 관리하는 서버일 수 있다. 전자 장치(100)는 테스트 코드를 삽입할 대상, 테스트 코드를 삽입할 빈도 및 적어도 하나의 노드의 실행 빈도에 관한 정보를 결정 및 관리할 수 있다. 전자 장치(100)는 단말(200)로부터 수집된 적어도 하나의 진입 노드의 실행 빈도에 관한 정보를 토대로, 테스트 코드를 삽입할 대상 및 테스트 코드를 삽입할 빈도를 결정할 수 있다. 예를 들어, 실행 빈도가 높은 진입 노드에 대해서는, 필수적인 코드로 판단하여, 추후에는 테스트 코드를 삽입하지 않는 것으로 결정할 수도 있고, 테스트 코드를 1년에 한번만 삽입하는 것으로 결정할 수도 있다. 예를 들어, 실행 빈도가 낮은 진입 노드에 대해서는, 관리 대상으로 판단하여, 테스트 코드를 일주일에 한번씩 삽입하는 것으로 결정할 수 있다.
도 3은 본 개시의 일 실시예에 따른 전자 장치(100)의 처리 흐름도이다.
처리 흐름도 300을 참조하면, 일 실시예에 따른 전자 장치(100)의 프로세서(110)는, 단계 310에서, 소스코드에서 복수의 노드에 대한 정보를 확인할 수 있다. 일 실시예에 따르면, 전자 장치(100)는 소스코드의 실행 요청을 획득하고, 실행 요청에 따라 호출되는 프로그램의 구조에 기초하여 복수의 노드에 대한 정보를 확인할 수 있다. 예를 들어, 전자 장치(100)는 단말(200)로부터 소스코드의 실행 요청을 획득하고 호출되는 프로그램의 구조에 기초하여 복수의 노드에 대한 정보를 식별할 수 있다.
일 실시예에 따르면, 전자 장치(100)는 소스코드에 대한 그래프 구조의 데이터를 생성하고, 그래프 구조의 데이터에 포함된 복수의 노드를 확인할 수 있다. 전자 장치(100)는 사용자가 소스코드를 한눈에 쉽게 이해할 수 있도록 시각화할 수 있다. 예를 들어, 전자 장치(100)는 소스코드 시각화 도구를 이용하여 소스코드를 분석함으로써, 소스코드에 대한 그래프 구조의 데이터를 생성할 수 있다. 소스코드에 대한 그래프 구조의 데이터는 도 4a를 이용하여 구체적으로 설명하기로 한다.
도 4a를 참조하면, 소스코드에 대한 그래프 구조의 데이터(400)는 복수의 노드 및 복수의 노드 사이를 연결하는 복수의 엣지로 구성될 수 있다. 전자 장치(100)는 소스 코드에 포함된 클래스, 필드 또는 함수를 확인(식별)하고, 확인한 클래스, 필드 또는 함수 각각을 노드로 하는 그래프 구조의 데이터(400)를 생성할 수 있다. 즉, 소스코드에 대한 그래프 구조의 데이터(400)에 포함된 복수의 노드는 소스코드에 포함된 클래스, 필드 또는 함수에 대응될 수 있다. 소스코드에 대한 그래프 구조의 데이터(400)는, 복수의 노드 및 노드 사이를 연결하는 복수의 엣지를 포함할 수 있다. 엣지는 노드 간의 참조 관계(또는 종속 관계)를 나타낼 수 있다. 예를 들어, 제1 노드(401)와 제2 노드(403)는 엣지로 연결되어 있고, 제2 노드(403)는 제1 노드(401)를 참조(reference)로 하는 서브 노드(sub-node) 또는 자식 노드(child node)일 수 있다. 전자 장치(100)는, 상술한 방법을 이용하여 소스코드를 분석함으로써, 소스코드에 대한 그래프 구조의 데이터(400)를 생성하고, 이를 이용하여 소스코드에서 복수의 노드에 대한 정보를 확인할 수 있다. 상술한 소스코드에 대한 그래프 구조의 데이터(400)는 통합 개발 환경(IDE)을 통해 사용자에게 표시될 수 있다.
다시 도 3으로 돌아와서, 일 실시예에 따른 프로세서(110)는, 단계 320에서, 소스코드에 포함된 복수의 노드 중 적어도 하나의 진입 노드를 결정할 수 있다. 진입 노드는, 엔드 투 엔드 방식에 있어서, 엔드 간의 의존적인 시작 지점을 의미할 수 있다. 진입 노드에 해당하는지 여부는, 사용자에 의해 결정될 수도 있고, 특정 규칙(예: 클래스 명, 클래스의 계층, 서버에 의존하는지 여부)에 따라 결정될 수도 있다. 주로 외부 서버에 의해 호출되는 노드가 진입 노드로 결정될 수 있다.
도 4b를 참조하면, 전자 장치(100)는 소스코드에 대한 그래프 구조의 데이터(400)에 포함된 복수의 노드 중 적어도 하나의 진입 노드를 확인(식별)할 수 있다. 전자 장치(100)는 복수의 노드 중 적어도 하나의 진입 노드(410), 적어도 하나의 진입 노드(410)에 연결된 자식 노드(420) 및 미사용 노드(430)를 확인(식별)할 수 있다. 전자 장치(100)는, 예를 들어, 그래프 구조의 데이터에 포함된 복수의 노드 중, 최상위 클래스, 외부 서버에 의존적인 필드 또는 외부 서버에 의존적인 함수에 대응하는 적어도 하나의 노드를 진입 노드(410)로 결정할 수 있다. 자식 노드(420)는 적어도 하나의 진입 노드(410)를 부모 노드(parent node)로 하는 종속 노드일 수 있다. 미사용 노드(unused node)는 적어도 하나의 진입 노드(410)에 연결되지 않은 노드로서, 소스코드 실행 시 사용되지 않는 노드일 수 있다. 프로세서(110)는 미사용 노드(430)를 삭제할 수 있다.
다시 도 3으로 돌아와서, 일 실시예에 따른 프로세서(110)는, 단계 330에서, 적어도 하나의 진입 노드의 실행 빈도를 확인할 수 있다. 전자 장치(100)는 적어도 하나의 진입 노드에 실행 빈도를 측정하기 위한 테스트 코드를 삽입할 수 있다. 전자 장치(100)는 설정된 기간 동안(예: 1개월 동안) 테스트 코드의 로그 기록을 확인할 수 있다. 전자 장치(100)는 테스트 코드의 로그 기록에 따라, 적어도 하나의 진입 노드의 실행 빈도를 확인할 수 있다. 적어도 하나의 진입 노드의 실행 빈도를 확인하는 단계는 복수회 반복하여 수행될 수 있다. 예를 들어, 전자 장치(100)는 1개월 간격으로 적어도 하나의 진입 노드의 실행 빈도를 확인할 수도 있다. 적어도 하나의 진입 노드의 실행 빈도를 확인하는 간격은 적어도 하나의 진입 노드의 실행 빈도에 기초하여 결정될 수 있다. 예를 들어, 실행 빈도가 높은 진입 노드에 대해서는 테스트 코드를 1년에 한번씩 삽입함으로써, 1년 간격으로 실행 빈도를 확인할 수 있다. 예를 들어, 실행 빈도가 낮은 진입 노드에 대해서는 테스트 코드를 1주일에 한번씩 삽입함으로써, 1주일 간격으로 실행 빈도를 확인할 수 있다. 상술한 바와 같이, 적어도 하나의 진입 노드 각각은 과거에 확인한 실행 빈도에 기초하여, 실행 빈도를 확인하는 간격(또는 주기)를 조정할 수 있다.
일 실시예에 따른 전자 장치(100)는, 적어도 하나의 진입 노드의 실행 빈도에 기초하여, 적어도 하나의 진입 노드의 레벨을 결정할 수 있다. 예를 들어, 전자 장치(100)는 적어도 하나의 진입 노드에 1부터 10까지의 레벨 중 하나의 레벨을 부여할 수 있다. 전자 장치(100)는 적어도 하나의 진입 노드의 실행 빈도가 높을수록 높은 레벨을 부여할 수 있다. 전자 장치(100)는 적어도 하나의 진입 노드의 레벨에 기초하여, 적어도 하나의 진입 노드의 실행 빈도를 확인하는 간격을 결정할 수 있다.
도 5를 참조하면, 프로세서(110)는 적어도 하나의 진입 노드(510) 각각의 레벨을 결정할 수 있다. 예를 들어, 프로세서(110)는 실행 빈도가 매우 높은 진입 노드 A(511) 및 진입 노드 B(513)의 레벨을 10으로 결정할 수 있다. 예를 들어, 프로세서(110)는 실행 빈도가 낮은 진입 노드 C(515) 및 진입 노드 D(517)의 레벨을 2로 결정할 수 있고, 실행 빈도가 매우 낮은 진입 노드 E(519)의 레벨을 1로 결정할 수 있다.
전자 장치(100)의 프로세서(110)는 적어도 하나의 진입 노드(510)의 실행 빈도에 따라 복수의 노드의 속성을 결정할 수 있다. 전자 장치(100)는 통합 개발 환경(IDE)을 통해 복수의 노드의 속성이 반영된 그래프 구조의 데이터(500)를 표시할 수 있다. 복수의 노드의 속성은, 예를 들어, 복수의 노드의 크기 또는 색상 중 적어도 하나를 포함할 수 있다. 예를 들어, 전자 장치(100)는, 상대적으로 실행 빈도가 높은 노드는 빨간색으로, 실행 빈도가 중간인 노드는 노란색으로, 실행 빈도가 낮은 노드는 파란색으로 표시할 수 있다. 예를 들어, 전자 장치(100)는 실행 빈도가 높은 노드는 크게, 실행 빈도가 중간인 노드는 중간으로, 실행 빈도가 낮은 노드는 작게 표시할 수 있다. 예를 들어, 전자 장치(100)는 실행 빈도가 높은 노드는 대각선 해칭을 이용하여 진하게 표시하고, 실행 빈도가 중간인 노드는 수평선을 이용하여 중간으로 표시하며, 실행 빈도가 낮은 노드는 도트 무늬를 이용하여 연하게 표시할 수 있다. 이외에도 전자 장치(100)는 노드의 실행 빈도(또는 레벨)에 따라 노드를 서로 구별되게 표시할 수 있다.
다시 도 3으로 돌아와서, 일 실시예에 따른 프로세서(110)는, 단계 340에서, 적어도 하나의 진입 노드의 실행 빈도에 기초하여 소스코드 중 관리 대상인 코드 세트를 확인할 수 있다. 프로세서(110)는 실행 빈도가 설정된 임계값 미만인 제1 진입 노드를 확인하고, 제1 진입 노드와 연관된 적어도 하나의 제1 서브 노드를 확인할 수 있다. 상기의 경우, 프로세서(110)는 제1 진입 노드 및 적어도 하나의 제1 서브 노드에 대응하는 코드를 관리 대상인 코드 세트로 확인할 수 있다. 일 실시예에 따르면, 프로세서(110)는 레벨이 설정된 임계 레벨 미만인 제1 진입 노드를 확인하고, 제1 진입 노드와 연관된 적어도 하나의 제1 서브 노드를 확인할 수 있다. 상기의 경우, 프로세서(110)는 제1 진입 노드 및 적어도 하나의 제1 서브 노드에 대응하는 코드를 관리 대상인 코드 세트로 확인할 수 있다.
도 5를 참조하면, 프로세서(110)는 레벨이 설정된 임계 레벨 미만인 제1 진입 노드를 확인하고, 제1 진입 노드와 연관된 적어도 하나의 제1 서브 노드를 확인할 수 있다. 예를 들어, 진입 노드 D(517)의 레벨이 2로 결정된 경우, 프로세서(110)는 설정된 임계 레벨(예: 레벨 3) 미만인 진입 노드 D(517)를 확인할 수 있다. 프로세서(110)는 진입 노드 D(517)와 연관된 적어도 하나의 서브 노드(521)를 확인할 수 있다. 프로세서(110)는 진입 노드 D(517) 및 적어도 하나의 서브 노드(521)에 대응하는 코드를 관리 대상인 코드 세트로 확인할 수 있다.
만일, 적어도 하나의 제1 서브 노드 중 실행 빈도가 임계값 이상인 제2 진입 노드와 연관된 적어도 하나의 제2 서브 노드가 존재하는 경우, 프로세서(110)는 적어도 하나의 제2 서브 노드에 대응하는 코드는 관리 대상인 코드 세트에서 제외할 수 있다. 예를 들어, 진입 노드 C(515)의 레벨이 2로 결정된 경우, 프로세서(110)는 설정된 임계 레벨(예: 레벨 3) 미만인 진입 노드 C(515)를 확인할 수 있다. 프로세서(110)는 진입 노드 C(515)와 연관된 적어도 하나의 서브 노드(523, 525)를 확인할 수 있다. 이 중, 서브 노드(525)는 진입 노드 C(515)이외에도 진입 노드 B(513)와도 연관된다. 따라서, 서브 노드(525)에 대응하는 코드는 관리 대상인 코드 세트에서 제외할 수 있다. 한편, 적어도 하나의 서브 노드(523)는 복수의 진입 노드 중 진입 노드 C(515)에만 연관되어 있으므로, 진입 노드 C(515) 및 적어도 하나의 서브 노드(523)에 대응하는 코드는 관리 대상인 코드 세트에서 제외할 수 있다. 한편, 레벨 10인 진입 노드 A(511)는 관리 대상인 코드 세트에서 제외될 수 있다. 레벨 1인 진입 노드 E(519)는 관리 대상인 코드 세트로 확인할 수 있다.
일 실시예에 따르면, 프로세서(110)는 관리 대상인 코드 세트를 데드 코드로 확인할 수 있다. 프로세서(110)는 데드 코드가 설정된 삭제 조건에 대응하는 경우, 데드 코드를 자동으로 삭제할 수 있다. 일 실시예에 따르면, 프로세서(110)는 데드 코드가 설정된 삭제 조건에 대응하는 경우, 데드 코드를 삭제하는 것이 바람직하다는 알림을 단말(200)로 제공할 수 있다.
일 실시예에 따른 전자 장치(100)는, 데드 코드를 삭제한 이후, 삭제한 데드 코드에 대한 호출을 획득하는 경우, 삭제한 데드 코드를 복구할 수 있다. 즉, 상술한 방법에 따르면, 실행 빈도가 낮은 노드는 데드 코드로 분류되어 자동 삭제될 수 있는데, 간혹 필수적인 노드가 잘못 삭제될 수 있다. 따라서, 삭제한 데드 코드에 대한 호출이 발생하는 경우, 삭제한 데드 코드를 다시 복구할 수 있다.
도 6은 본 개시의 일 실시예에 따른 전자 장치(100)의 처리 흐름도이다. 도 3에서 설명한 내용과 중복되는 내용은 생략하기로 한다.
처리 흐름도 600을 참조하면, 일 실시예에 따른 전자 장치(100)의 프로세서(110)는, 단계 610에서, 소스코드에서 복수의 노드에 대한 정보를 확인할 수 있다. 일 실시예에 따르면, 프로세서(110)는 소스코드에 대한 그래프 구조의 데이터를 생성하고, 그래프 구조의 데이터에 포함된 복수의 노드를 확인할 수 있다. 일 실시예에 따르면, 프로세서(110)는 소스코드의 실행 요청을 획득하고, 실행 요청에 따라 호출되는 프로그램의 구조에 기초하여 복수의 노드에 대한 정보를 확인할 수 있다. 예를 들어, 프로세서(110)는 상기 실행 요청에 따라 호출되는 프로그램의 구조에 기초하여 소스코드에 포함된 클래스, 필드 또는 함수를 확인하고, 확인한 클래스, 필드 또는 함수를 복수의 노드로 확인할 수 있다.
일 실시예에 따른 프로세서(110)는, 단계 620에서, 복수의 노드 중 적어도 하나의 진입 노드를 확인할 수 있다. 진입 노드에 해당하는지 여부는, 사용자에 의해 결정될 수도 있고, 특정 규칙(예: 클래스 명, 클래스의 계층, 서버에 의존하는지 여부)에 따라 결정될 수도 있다. 예를 들어, 적어도 하나의 진입 노드는 최상위 클래스, 외부 서버에 의존적인 필드 또는 외부 서버에 의존적인 함수를 포함할 수 있다.
일 실시예에 따른 프로세서(110)는, 단계 630에서, 적어도 하나의 진입 노드에 실행 빈도를 측정하기 위한 테스트 코드를 삽입할 수 있다. 프로세서(110)는 컴파일 시점에 적어도 하나의 진입 노드에 해당하는 코드 세트에 실행 빈도를 측정하기 위한 테스트 코드를 삽입할 수 있다.
일 실시예에 따른 프로세서(110)는, 단계 640에서, 설정된 기간 동안 테스트 코드의 로그 기록을 확인할 수 있다. 예를 들어, 프로세서(110)는 1개월 간 테스트 코드가 실행되었는지 여부를 나타내는 로그 기록을 확인할 수 있다. 일 실시예에 따른 프로세서(110)는, 단계 650에서, 테스트 코드의 로그 기록에 따라 적어도 하나의 진입 노드의 실행 빈도를 확인할 수 있다.
일 실시예에 따른 프로세서(110)는, 단계 660에서, 적어도 하나의 진입 노드의 실행 빈도에 기초하여, 적어도 하나의 진입 노드의 레벨을 결정할 수 있다. 프로세서(110)는 진입 노드의 실행 빈도가 높을수록 진입 노드의 레벨을 높게 결정할 수 있다. 예를 들어, 진입 노드의 레벨은 1~10 중 하나일 수 있다.
예를 들어, 설정된 기간 동안 1회도 실행되지 않은 진입 코드의 경우, 레벨 1로 결정될 수 있다. 예를 들어, 설정된 기간 동안 40회 미만 실행된 진입 코드의 경우, 레벨 2로 결정될 수 있다. 예를 들어, 설정된 기간 동안 40회 이상 100회 미만 실행된 진입 코드의 경우, 레벨 3으로 결정될 수 있다. 예를 들어, 설정된 기간 동안 5000회 이상 실행된 진입 코드의 경우, 레벨 10으로 결정될 수 있다.
일 실시예에 따른 프로세서(110)는, 소스코드에 대한 코드 커버리지 테스트(code coverage test)를 수행할 수도 있다. 적어도 하나의 진입 노드의 코드 커버리지 테스트를 통과하기 위한 임계값은 적어도 하나의 진입 노드에 레벨에 기초하려 결정될 수 있다. 코드 커버리지는 소프트웨어의 테스트 케이스가 얼마나 충족되었는지 나타내는 지표로서, 해당하는 코드가 얼마나 실행하였는지 수치로 나타내는 테스트일 수 있다. 코드 커버리지 테스트는 소스코드를 기반으로 수행하는 화이트 박스 테스트를 통해 측정할 수 있다.
일 실시예에 따른 프로세서(110)는, 단계 670에서, 적어도 하나의 진입 노드의 레벨에 기초하여 소스코드 중 관리 대상인 코드 세트를 확인할 수 있다. 프로세서(110)는 레벨 3 미만인 진입 노드에 대응하는 코드를 관리 대상인 코드 세트로 확인할 수 있다. 프로세서(110)는 레벨 3 미만인 진입 노드와 연관된 적어도 하나의 제1 서브 노드에 대응하는 코드도 관리 대상인 코드 세트로 확인할 수 있다. 한편, 상기 적어도 하나의 제1 서브 노드 중 레벨 3 이상인 진입 노드와 연관된 적어도 하나의 제2 서브 노드의 경우에는, 적어도 하나의 제2 서브 노드에 대응하는 코드는 관리 대상인 코드 세트에서 제외할 수 있다.
일 실시예에 따른 프로세서(110)는, 단계 680에서, 관리 대상인 코드 세트를 데드 코드로 확인할 수 있다. 일 실시예에 따른 프로세서(110)는, 단계 690에서, 데드 코드가 설정된 삭제 조건에 대응하는 경우, 데드 코드를 삭제할 수 있다. 예를 들어, 데드 코드가 레벨 1인 진입 노드 및 이와 연관된 적어도 하나의 서브 노드에 대응하는 코드인 경우, 데드 코드를 삭제할 수 있다. 예를 들어, 데드 코드가 설정된 기간 동안 실행되지 않는 경우, 데드 코드를 삭제할 수 있다.
도 7은 본 개시의 일 실시예에 따른 소스코드를 시각화한 도면이다.
도 7을 참조하면, 전자 장치(100)의 프로세서(110)는 소스코드를 분석함으로써, 소스코드에 대한 다이어그램(700)을 생성할 수 있다. 프로세서(110)는 소스코드 시각화 도구를 이용하여 소스 코드에 대한 다이어그램(700)을 생성할 수 있다. 다이어그램(700)은 복수의 노드를 포함할 수 있고, 복수의 노드는 소스코드에 포함된 클래스, 필드 또는 함수를 나타낼 수 있다. 즉, 프로세서(110)는 소스코드에서 복수의 노드에 대한 정보를 확인하고, 복수의 노드를 포함하는 소스코드에 대한 다이어그램(700)을 생성할 수 있다. 프로세서(110)는 복수의 노드의 실행 빈도를 확인할 수 있다. 예를 들어, 프로세서(110)는 복수의 노드 중 적어도 하나의 진입 노드를 확인하고, 적어도 하나의 진입 노드의 실행 빈도를 확인하며, 적어도 하나의 진입 노드의 실행 빈도에 기초하여 복수의 노드의 실행 빈도를 확인할 수 있다.
프로세서(110)는 복수의 노드의 실행 빈도에 기초하여, 복수의 노드의 레벨을 결정할 수 있다. 예를 들어, 프로세서(110)는 노드의 실행 빈도가 높을수록 높은 레벨을 부여할 수 있다. 예를 들어, 프로세서(110)는 상술한 도 3 내지 6에서 설명한 방법을 이용하여, 복수의 노드의 레벨을 결정할 수 있다.
다이어그램(700)의 복수의 노드는, 실행 빈도가 (상대적으로) 높은 제1 노드, 실행 빈도가 보통인 제2 노드, 실행 빈도가 낮은 제3 노드 및 미확인된 제4 노드를 포함할 수 있다. 예를 들어, 노드의 레벨이 1~10 중 하나인 것으로 가정하여 설명하기로 한다. 상기의 경우, 레벨이 4 이상인 노드는 제1 노드로 분류되고, 레벨이 3인 노드는 제2 노드로 분류되며, 레벨이 1 및 2인 노드는 제3 노드로 분류될 수 있다. 소스코드에 새롭게 추가된 후 아직 실행 빈도 측정이 수행되지 않은 코드 블록은 제4 노드로 분류될 수 있다.
즉, 프로세서(110)는 실행 빈도가 높은 제1 노드에 대응하는 코드를 소스코드에 필수적인 코드로 판단하고, 제1 노드에 대응하는 코드는 삭제하지 않는 것으로 관리할 수 있다. 프로세서(110)는 실행 빈도가 중간인 제2 노드에 대응하는 코드를 소스코드에 필수적이지는 않지만 종종 사용되는 코드로 판단하고, 제2 노드에 대응하는 코드는 추가적인 모니터링이 필요한 코드로 관리할 수 있다. 프로세서(110)는 실행 빈도가 낮은 제3 노드에 대응하는 코드를 소스코드에 필수적이지 않으며 삭제해도 무방한 코드로 판단하고, 제3 노드에 대응하는 코드를 삭제할 수 있다. 프로세서(110)는 실행 빈도 측정이 되지 않은 제4 노드에 대해서는, 디폴트 값으로 낮은 레벨(예: 1~2)를 부여하고, 실행 빈도 측정이 필요한 것으로 판단할 수 있다.
프로세서(110)는 복수의 노드 각각의 레벨에 따라 실행 빈도를 측정할 간격(또는 주기)를 결정할 수 있다. 예를 들어, 프로세서(110)는 제1 노드에 대해서는 1년에 1회 실행 빈도를 측정하고, 제2 노드에 대해서는 1주일에 1회 실행 빈도를 측정하며, 제4 노드에 대해서는 소정의 기간(예: 1개월) 내에 실행 빈도 측정이 필요하다고 판단할 수 있다. 프로세서(110)는 제3 노드에 대해서는 추가적인 실행 빈도 측정 없이 삭제할 수 있다.
사용자는 다이어그램(700)을 통해, 소스코드에 포함된 복수의 노드의 실행 빈도를 한눈에 시각적으로 확인할 수 있다. 사용자는 다이어그램(700)을 통해 추가적인 모니터링이 필요한 노드와 삭제하는 것이 바람직한 노드를 확인할 수 있고, 실행 빈도 측정이 필요한 노드에 대해서도 한눈에 확인할 수 있다. 사용자는 전자 장치(100)를 통해 소스코드에 포함된 복수의 노드가 모두 실행 빈도가 높은 제1 노드가 될 때까지 실행 빈도 측정 및 관리를 수행할 수 있다.
일 실시예에 따른 프로세서(110)는 소스코드에 코드 블록이 추가된 경우, 상기 코드 블록이 추가된 시점부터 소정의 기간이 경과할 때까지 코드 블록에 대한 실행 빈도가 측정되지 않는 경우, 코드 블록을 데드 코드로 확인할 수 있다. 예를 들어, 소스코드에 새로운 코드 블록이 추가된 경우, 프로세서(110)는 디폴트 값으로 추가된 코드 블록에 대응하는 노드의 레벨을 1로 설정할 수 있다. 프로세서(110)는 해당 코드 블록이 추가된 시점부터 소정의 기간(예: 1개월)이 경과할 때까지 코드 블록에 대한 실행 빈도가 측정되지 않는 경우, 해당 코드 블록을 데드 코드로 확인하고, 삭제할 수 있다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
전술한 실시예들에 따른 장치 또는 단말은, 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-Access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독 가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 집적 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler), 파이썬(Python) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
전술한 실시예들은 일 예시일 뿐 후술하는 청구항들의 범위 내에서 다른 실시예들이 구현될 수 있다.

Claims (17)

  1. 전자 장치에서 코드를 관리하는 방법에 있어서,
    소스코드에서 복수의 노드에 대한 정보를 확인하는 단계;
    상기 복수의 노드 중 적어도 하나의 진입 노드를 확인하는 단계;
    상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 단계;
    상기 적어도 하나의 진입 노드의 실행 빈도에 기초하여, 상기 적어도 하나의 진입 노드의 레벨을 결정하는 단계; 및
    상기 적어도 하나의 진입 노드의 레벨에 기초하여 상기 소스코드 중 관리 대상인 코드 세트를 확인하는 단계를 포함하고,
    상기 관리 대상인 코드 세트를 확인하는 단계는,
    상기 적어도 하나의 진입 노드 중 결정된 레벨이 미리 설정된 임계 레벨 미만인 제1 진입 노드를 확인하는 단계;
    상기 제1 진입 노드와 연관된 적어도 하나의 제1 서브 노드를 확인하는 단계; 및
    상기 제1 진입 노드 및 상기 적어도 하나의 제1 서브 노드에 대응하는 코드를 상기 관리 대상인 코드 세트로 확인하는 단계를 포함하는, 코드를 관리하는 방법.
  2. 제1항에 있어서,
    상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 단계는,
    상기 적어도 하나의 진입 노드에 실행 빈도를 측정하기 위한 테스트 코드를 삽입하는 단계;
    설정된 기간 동안 상기 테스트 코드의 로그 기록을 확인하는 단계; 및
    상기 테스트 코드의 로그 기록에 따라, 상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 단계를 포함하는, 코드를 관리하는 방법.
  3. 삭제
  4. 제1항에 있어서,
    상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 단계는 복수 회 반복하여 수행하고,
    상기 적어도 하나의 진입 노드의 실행 빈도를 확인하는 간격은 상기 적어도 하나의 진입 노드의 레벨에 기초하여 결정되는, 코드를 관리하는 방법.
  5. 제1항에 있어서,
    상기 관리 대상인 코드 세트를 데드 코드로 확인하는 단계; 및
    상기 데드 코드가 설정된 삭제 조건에 대응하는 경우, 상기 데드 코드를 삭제하는 단계를 더 포함하는, 코드를 관리하는 방법.
  6. 제5항에 있어서,
    상기 삭제한 데드 코드에 대한 호출을 획득하는 단계; 및
    상기 삭제한 데드 코드를 복구하는 단계를 더 포함하는, 코드를 관리하는 방법.
  7. 제1항에 있어서,
    상기 소스코드에 대한 코드 커버리지 테스트를 수행하는 단계를 더 포함하고,
    상기 적어도 하나의 진입 노드의 상기 코드 커버리지 테스트를 통과하기 위한 임계값은, 상기 적어도 하나의 진입 노드의 레벨에 기초하여 결정되는, 코드를 관리하는 방법.
  8. 삭제
  9. 제1항에 있어서,
    상기 관리 대상인 코드 세트를 확인하는 단계는,
    상기 적어도 하나의 제1 서브 노드 중 레벨이 상기 임계 레벨 이상인 제2 진입 노드와 연관된 적어도 하나의 제2 서브 노드를 확인하는 단계; 및
    상기 적어도 하나의 제2 서브 노드에 대응하는 코드는 상기 관리 대상인 코드 세트에서 제외하는 단계를 더 포함하는, 코드를 관리하는 방법.
  10. 제1항에 있어서,
    상기 소스코드에 대한 그래프 구조의 데이터를 생성하는 단계를 더 포함하고,
    상기 복수의 노드에 대한 정보를 확인하는 단계는,
    상기 그래프 구조의 데이터에 포함된 상기 복수의 노드에 대한 정보를 확인하는 단계인, 코드를 관리하는 방법.
  11. 제10항에 있어서,
    상기 적어도 하나의 진입 노드의 실행 빈도에 따라 상기 복수의 노드의 속성을 결정하는 단계; 및
    통합 개발 환경을 통해 상기 복수의 노드의 속성이 반영된 상기 그래프 구조의 데이터를 표시하는 단계를 더 포함하는, 코드를 관리하는 방법.
  12. 제11항에 있어서,
    상기 복수의 노드의 속성은, 상기 복수의 노드의 크기 또는 색상 중 적어도 하나를 포함하는, 코드를 관리하는 방법.
  13. 제1항에 있어서,
    상기 소스코드의 실행 요청을 획득하는 단계를 더 포함하고,
    상기 복수의 노드에 대한 정보를 확인하는 단계는,
    상기 실행 요청에 따라 호출되는 프로그램의 구조에 기초하여, 상기 복수의 노드에 대한 정보를 확인하는 단계인, 코드를 관리하는 방법.
  14. 제13항에 있어서,
    상기 복수의 노드에 대한 정보를 확인하는 단계는,
    상기 실행 요청에 따라 호출되는 프로그램의 구조에 기초하여, 상기 소스코드에 포함된 클래스, 필드 또는 함수를 확인하는 단계; 및
    상기 확인한 클래스, 필드 또는 함수를, 상기 복수의 노드로 확인하는 단계를 포함하는, 코드를 관리하는 방법.
  15. 제14항에 있어서,
    상기 적어도 하나의 진입 노드는, 최상위 클래스, 외부 서버에 의존적인 필드 또는 외부 서버에 의존적인 함수를 포함하는, 코드를 관리하는 방법.
  16. 제1항에 있어서,
    상기 소스코드에 코드 블록을 추가하는 단계; 및
    상기 코드 블록이 추가된 시점부터 소정의 기간이 경과할 때까지 상기 코드 블록에 대한 실행 빈도가 측정되지 않는 경우, 상기 코드 블록을 데드 코드로 확인하는 단계를 더 포함하는, 코드를 관리하는 방법.
  17. 전자 장치에 있어서,
    단말과 통신 연결된 통신 회로;
    하나 이상의 프로세서; 및
    하나 이상의 인스트럭션을 저장하는 하나 이상의 메모리를 포함하고,
    상기 하나 이상의 프로세서는, 상기 하나 이상의 인스트럭션을 실행함으로써,
    소스코드에서 복수의 노드에 대한 정보를 확인하고,
    상기 복수의 노드 중 적어도 하나의 진입 노드를 확인하고,
    상기 적어도 하나의 진입 노드의 실행 빈도를 확인하고,
    상기 적어도 하나의 진입 노드의 실행 빈도에 기초하여, 상기 적어도 하나의 진입 노드의 레벨을 결정하고,
    상기 적어도 하나의 진입 노드의 레벨에 기초하여 상기 소스코드 중 관리 대상인 코드 세트를 확인하도록 구성되고,
    상기 하나 이상의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
    상기 적어도 하나의 진입 노드 중 결정된 레벨이 미리 설정된 임계 레벨 미만인 제1 진입 노드를 확인하고,
    상기 제1 진입 노드와 연관된 적어도 하나의 제1 서브 노드를 확인하고,
    상기 제1 진입 노드 및 상기 적어도 하나의 제1 서브 노드에 대응하는 코드를 상기 관리 대상인 코드 세트로 확인하도록 구성되는, 전자 장치.
KR1020230070972A 2023-06-01 2023-06-01 코드를 관리하는 전자 장치 및 방법 KR102630168B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230070972A KR102630168B1 (ko) 2023-06-01 2023-06-01 코드를 관리하는 전자 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230070972A KR102630168B1 (ko) 2023-06-01 2023-06-01 코드를 관리하는 전자 장치 및 방법

Publications (1)

Publication Number Publication Date
KR102630168B1 true KR102630168B1 (ko) 2024-01-29

Family

ID=89716703

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230070972A KR102630168B1 (ko) 2023-06-01 2023-06-01 코드를 관리하는 전자 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102630168B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301568A (ja) * 2004-04-09 2005-10-27 Denso Corp 表示情報記憶制御装置および表示情報記憶制御プログラム
JP2009064112A (ja) * 2007-09-04 2009-03-26 Fujitsu Microelectronics Ltd メモリへのコード転送方法
JP2013148987A (ja) * 2012-01-17 2013-08-01 Fujitsu Ltd 分割装置、分割方法、および分割プログラム
JP2018163432A (ja) * 2017-03-24 2018-10-18 三菱電機株式会社 自動修正装置
JP2020067697A (ja) * 2018-10-22 2020-04-30 富士通株式会社 デッドコード解析プログラム、デッドコード解析方法及びデッドコード解析装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301568A (ja) * 2004-04-09 2005-10-27 Denso Corp 表示情報記憶制御装置および表示情報記憶制御プログラム
JP2009064112A (ja) * 2007-09-04 2009-03-26 Fujitsu Microelectronics Ltd メモリへのコード転送方法
JP2013148987A (ja) * 2012-01-17 2013-08-01 Fujitsu Ltd 分割装置、分割方法、および分割プログラム
JP2018163432A (ja) * 2017-03-24 2018-10-18 三菱電機株式会社 自動修正装置
JP2020067697A (ja) * 2018-10-22 2020-04-30 富士通株式会社 デッドコード解析プログラム、デッドコード解析方法及びデッドコード解析装置

Similar Documents

Publication Publication Date Title
US5930798A (en) Universal data measurement, analysis and control system
US20150067153A1 (en) Remote monitoring of data facility in real-time using wireless sensor network
US20140165045A1 (en) System and method for display of software quality
EP2336889A1 (en) Detection rule generation device, detection rule generation method, and computer program
US20140372083A1 (en) Derived restrictions in a combinatorial model
US11966312B2 (en) Operation logs visualization device, operation logs visualization method and operation logs visualization program
US20170286262A1 (en) Tagged tracing, logging and performance measurements
US9262731B1 (en) Service ticket analysis using an analytics device
KR101198397B1 (ko) 원자력 발전소 출력운전 중 범용 리스크감시 시스템 및 그 방법
CN111061647A (zh) 一种软件性能自动化测试方法、装置及电子设备
CN114185750A (zh) 流程监控方法、装置、设备及存储介质
KR102630168B1 (ko) 코드를 관리하는 전자 장치 및 방법
CN112527312B (zh) 一种嵌入式系统的测试方法和测试装置
CN115480940A (zh) 一种财务比率指标页面化调用方法、装置及介质
CN113962398A (zh) 量子计算机自动化管控方法、系统、服务器及存储介质
CN113672509A (zh) 自动化测试方法、装置、测试平台及存储介质
CN113992723B (zh) 一种基于物联网的设备维护保修及服务资源调度平台
CN113419739B (zh) 节点图差异检测方法、装置、电子设备及存储介质
Pisilä Data representation requirements on network measurement applications
US20240020039A1 (en) Evidence collection guidance method and apparatus for file selection and computer-readable storage medium
CN116934132A (zh) 作业信息管理系统以及作业信息管理方法
CN118034977A (zh) 一种微服务架构中请求调用的分析方法及终端
KR20230006998A (ko) 소프트웨어의 기능점수를 산출하는 방법 및 장치
CN117010803A (zh) 用于显示零件变更状态的方法和装置及存储介质
CN114500266A (zh) 对于节点的工作状态进行分析的方法、装置及设备

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant