KR102413994B1 - 성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법 및 그 장치 - Google Patents
성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법 및 그 장치 Download PDFInfo
- Publication number
- KR102413994B1 KR102413994B1 KR1020200095193A KR20200095193A KR102413994B1 KR 102413994 B1 KR102413994 B1 KR 102413994B1 KR 1020200095193 A KR1020200095193 A KR 1020200095193A KR 20200095193 A KR20200095193 A KR 20200095193A KR 102413994 B1 KR102413994 B1 KR 102413994B1
- Authority
- KR
- South Korea
- Prior art keywords
- performance
- performance improvement
- power
- improvement factor
- source code
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4432—Reducing the energy consumption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은, 소프트웨어의 소스 코드를 입력받는 소스 코드 입력 단계; 상기 소스 코드를 분석하여 실행 성능 개선 요소를 확인하는 성능 확인 단계; 상기 실행 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하는 1차 개선 단계; 제 1 성능 개선 후 상기 소스코드를 분석하여 전력 성능 개선 요소를 확인하는 전력 확인 단계; 및 상기 전력 성능 개선 요소에 대한 제 1 수정을 진행하여 제 2 성능 개선을 진행하는 2차 개선 단계;를 포함하는, 성능 개선을 위한 소프트웨어 소스 코드 변경 방법 및 그 장치에 관한 것이다.
Description
본 발명은 성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법 및 그 장치에 관한 것이다.
제 4 차 산업 혁명에서 환경 모니터링, 교통 정보 분석, 유틸리티 모니터링, 대중 교통 및 사건보고. 스마트 시티 개발이 필요하게 되었다. 특히 스마트 시티를개발하느데, 스마트 테크놀러지나 스마트 인프라 스트럭쳐가 필요하다.
사이버 물리 시스템 (CPS:Cyber-Physical system) 기술은 스마트 시티 기술을 모니터링하고 통합하는 데 사용된다. 또한, CPS는 물리적 세계의 일반적인 대상을 복잡한 시스템의 다양한 컴퓨터와 연결하는데 이용되며, 현존하는 확장된 인베디드 시스템을 포함할 수 있다.
오늘날 임베디드 시스템은 단순한 구조에서 수많은 컴퓨터 장치들로 구성되는 복잡한 구조로 발전 되어왔다. 이러한 시스템에는 정확한 성능과 다양한 기능이 필요하며, 특히 거대하고 복잡한 소스 코드가 필요하지만 CPS 기반 소프트웨어 성능 또는 품질은 보장하는 것이 어려웠다.
이러한 성능 및 품질 개선을 위한 다양한 하드웨어적 해결책이 제안되어 왔다. 하지만, 이러한 하드웨어적 해결책은 많은 비용이 소모될 뿐 아니라 시간적으로도 많은 시간이 필요하다는 문제점이 있어왔다.
본 발명은, 상술한 문제를 해결하기 위하여 안출된 것으로서, 소프트웨어의 소스코드를 개선하여 저전력 또는 성능 개선을 도모하기 위한 성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법 및 그 장치를 제공하는 것을 목적으로 한다.
상술한 과제를 해결하기 위하여 안출된 본 발명의 일실시예인 성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법은, 소프트웨어의 소스 코드를 입력받는 소스 코드 입력 단계; 상기 소스 코드를 분석하여 실행 성능 개선 요소를 확인하는 성능 확인 단계; 상기 실행 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하는 1차 개선 단계; 제 1 성능 개선 후 상기 소스코드를 분석하여 전력 성능 개선 요소를 확인하는 전력 확인 단계; 및 상기 전력 성능 개선 요소에 대한 제 2 수정을 진행하여 제 2 성능 개선을 진행하는 2차 개선 단계;를 포함할 수 있다.
여기서, 상기 성능 확인 단계는, 성능 가시화 모듈을 통해 상기 실행 성능 개선 요소를 가시화하여 시각적으로 표시하는 단계를 포함할 수 있다.
여기서, 상기 성능 확인 단계는, 소스 네비게이터 모듈을 통해 소스 코드 분석을 진행하는 분석 단계; 상기 분석 단계 후 상기 분석 결과에 따라 성능 데이터 프레임을 생성하는 단계; 상기 소스 네비게이터 모듈에서의 결과물을 상기 성능 데이터 프레임에 삽입하여 성능 데이터 베이스를 완성하는 단계; 및 성능 가시화 모듈을 통해 상기 성능 데이터 베이스에 기초하여 상기 실행 성능 개선 요소를 선정하고 이를 가시화하는 단계를 포함할 수 있다.
여기서, 상기 1차 개선 단계는, 상기 실행 성능 개선 요소에 대한 변경 준비가 이루어지는 성능 변경 준비 단계; 및 상기 변경 준비 이후에 상기 실행 성능 개선 요소에 대한 수정 작업이 진행되는 성능 개선 소스 수정 단계를 포함할 수 있다.
여기서, 상기 성능 변경 준비 단계는, 성능 개선 요소 데이터 베이스를 준비하는 단계; 상기 성능 개선 요소 데이터 베이스 중 상기 실행 성능 개선 요소에 대응되는 성능 개선 요소 소스를 확인하는 단계; 및 상기 확인된 성능 개선 요소 소스를 상기 실행 성능 개선 요소와 함께 표시하는 단계를 포함할 수 있다.
여기서, 상기 성능 개선 소스 수정 단계는, 상기 성능 개선 요소 데이터 베이스에서 추천된 개선 요소 소스로 상기 수정작업을 진행하는 단계를 포함할 수 있다.
여기서, 상기 전력 확인 단계는, 전력 가시화 모듈을 통해 상기 전력 성능 개선 요소를 가시화하여 시각적으로 표시하는 단계를 포함할 수 있다.
여기서, 상기 전력 확인 단계는, 상기 소프트웨어를 실행하여 1차 전력 측정을 제 1 전력 정보를 생성하는 하는 단계; 전력 측정 프로젝트를 생성하여 전력 측정 환경을 준비하는 전력 측정 준비 단계: 상기 소스코드를 입력한 상태에서 상기 전력 측정 프로젝트를 실행하는 프로젝트 실행 단계; 상기 프로젝트 실행 단계후 2차 전력 측정을 하여 제 2 전력 정보를 생성하는 단계; 및 상기 제 1 전력 정보와 제 2 전력 정보를 비교하여 상기 전력 성능 개선 요소를 생성하는 단계를 포함할 수 있다.
여기서, 상기 2차 개선 단계는, 상기 전력 성능 개선 요소에 대한 변경 준비가 이루어지는 전력 변경 준비 단계; 및 상기 변경 준비 이후에 상기 전력 성능 개선 요소에 대한 수정 작업이 진행되는 전력 소스 수정 단계를 포함할 수 있다.
여기서, 상기 전력 변경 준비 단계는, 전력 개선 요소 데이터 베이스를 준비하는 단계; 상기 전력 개선 요소 데이터 베이스 중 상기 전력 성능 개선 요소에 대응되는 전력 개선 요소 소스를 확인하는 단계; 및 상기 확인된 전력 개선 요소 소스를 상기 전력 성능 개선 요소와 함께 표시하는 단계를 포함할 수 있다.
여기서, 상기 전력 소스 수정 단계는, 상기 전력 개선 요소 데이터 베이스에서 추천된 전력 개선 요소 소스로 상기 수정 작업을 진행하는 단계를 포함할 수 있다.
본 발명에 따른 다른 실시예인 성능 개선을 위한 소프트웨어 소스 코드 변경 장치는, 소프트웨어의 소스 코드를 입력받기 위한 입력부; 및 상기 소스 코드를 분석하여 실행 성능 개선 요소를 확인하고, 상기 실행 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하고, 제 1 성능 개선 후 상기 소스코드를 분석하여 전력 성능 개선 요소를 확인하는 전력 확인한 후, 상기 전력 성능 개선 요소에 대한 제 1 수정을 진행하여 제 2 성능 개선을 진행하는 제어부를 포함할 수 있다.
여기서, 상기 성능 개선을 위한 소프트웨어 소스 코드 변경 장치는 디스플레이부를 더 포함하고, 상기 제어부는, 상기 실행 성능 개선 요소를 가시화하여 상기 디스플레이부에 시각적으로 표시하는 성능 가시화 모듈을 포함할 수 있다.
여기서, 상기 제어부는, 상기 소스 코드에 대한 분석을 진행하는 소스 네비게이터 모듈; 상기 분석 결과에 따라 성능 데이터 프레임을 생성하는 성능 데이터 프레임 생성 모듈; 및 상기 소스 네비게이터 모듈에서의 결과물을 상기 성능 데이터 프레임에 삽입하여 성능 데이터 베이스를 생성하는 성능 데이터 생성 모듈;을 포함하고, 상기 성능 가시화 모듈을 통해 상기 성능 데이터 베이스에 기초하여 상기 실행 성능 개선 요소를 선정하고 이를 가시화하여 상기 디스플레이부에 표시할 수 있다.
여기서, 상기 성능 개선을 위한 소프트웨어 소스 코드 변경 장치는, 디스플레이부를 더 포함하고, 상기 제어부는, 상기 전력 성능 개선 요소를 가시화하여 시각적으로 상기 디스플레이부에 표시하는 전력 가시화 모듈을 포함할 수 있다.
상술한 구성을 가진 본 발명의 일실시예에 따르면, 인베디드 시스템에 사용되는 소프트웨어의 소스 코드 중 성능 개선이 필요한 소스 코드에 대하여 적절한 변경을 가능하게 함으로써, 소프트웨어적인 성능 개선 또는 저전력 설계가 용이하게 된다.
도 1은 본 발명의 일실시예인 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법을 설명하기 위한 플로우차트
도 2는 본 발명의 다른 실시예로서 도 1의 방법이 적용된 장치를 설명하기 위한 블록 구성도.
도 3 내지 도 6는 본 발명의 일실시예인 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 중 성능 개선 단계에 대한 설명을 위한 이미지 도면
도 7 내지 도 10은 본 발명의 일실시예인 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 중 전력 개선 단계에 대한 설명을 위한 이미지도면.
도 2는 본 발명의 다른 실시예로서 도 1의 방법이 적용된 장치를 설명하기 위한 블록 구성도.
도 3 내지 도 6는 본 발명의 일실시예인 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 중 성능 개선 단계에 대한 설명을 위한 이미지 도면
도 7 내지 도 10은 본 발명의 일실시예인 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 중 전력 개선 단계에 대한 설명을 위한 이미지도면.
이하, 본 발명의 바람직한 실시 예들을 첨부된 도면을 참고하여 더욱 상세히 설명한다. 본 발명의 실시 예들은 여러 가지 형태로 변형될 수 있으며, 본 발명의 범위가 아래에서 설명하는 실시 예들에 한정되는 것으로 해석되어서는 안 된다. 본 실시예들은 당해 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 본 발명을 더욱 상세하게 설명하기 위해서 제공되는 것이다.
도 1은 본 발명의 일실시예인 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법을 설명하기 위한 플로우차트이고, 도 2는 본 발명의 다른 실시예로서 도 1의 방법이 적용된 장치를 설명하기 위한 블록 구성도이며, 도 3 내지 도 6는 본 발명의 일실시예인 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 중 성능 개선 단계에 대한 설명을 위한 이미지 도면이고, 도 7 내지 도 10은 본 발명의 일실시예인 성능 개선을 위한 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 중 전력 개선 단계에 대한 설명을 위한 이미지도면이다.
우선 도 1을 참조하여 다음과 같은 과정을 통해 본 발명에 따른 일실시예인성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법을 간단하게 설명하고, 그 다음 도 2를 참조하여 본 발명의 다른 실시예인 성능 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 장치를 간단하게 설명한 후, 그 구체적인 동작을 도 3 내지 도 11을 참조하여 설명하도록 한다.
도 1에 도시된 바와 같이, 우선, 소스 입력부를 통해 소프트웨어의 소스코드를 입력 받는다(S1). 그 다음 상기 소스 코드를 분석하여 실행 성능 개선 요소를 확인한다(S2). 그리고 나서 실행 성능 개선 요소에 대하여 제 1 수정을 진행하여 제 1 성능 개선을 진행한다. 이 때 제 1 성능 개선은 실행 속도를 유지 또는 빠르게 하는 개선이 해당될 수 있다. 제 1 성능 개선 후 상기 소스코드를 다시 분석하여 전력 성능 개선 요소를 확인한다(S4). 그 다음 전력 성능 개선 요소에 대한 제 2 수정을 진행하여 제 2 성능 개선을 진행한다(S5).
이와 같은 동작이 이루어지는 소프트웨어 소스 코드 변경 장치의 구조는 도 2를 통해 알 수 있다. 도 2를 참조하면, 본 발명에 따른 성능 개선을 위한 소프트웨어 소스 코드 변경 장치는 크게 소스 입력부, 디스플레이부, 메모리, 수정 입력부 및 제어부를 포함하여 구성될 수 있다.
소스 입력부는 S1단계에서의 소프트웨어의 소스코드를 입력받기 위한 구성요소로서 유무선 통신 모듈, 또는 USB 단자와 같은 데이터 입력 단자가 이에 해당할 수 있다.
디스플레이부는, 후술하는 성능가시화 모듈 및 전력 가시화 모듈에 의하여 가시화된 성능 개선 요소를 시각적으로 표시하기 위한 구성요소이다.
메모리는 성능개선 요소 DB 및 전력 개선 요소 DB 등의 데이터 베이스를 저장하고, 본 발명에 따른 성능 개선을 위한 소프트웨어 소스 코드 변경 방법에 따른프로그램을 저장하기 위한 구성요소이다.
수정 입력부는, 사용자에 의한 수정작업을 위한 구성요소로서 키보드나 마우스와 같은 사용자 입력 유닛이 이용될 수 있다.
제어부는, 상기 소스 코드를 분석하여 실행 성능 개선 요소를 확인하고, 상기 실행 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하고, 제 1 성능 개선 후 상기 소스코드를 분석하여 전력 성능 개선 요소를 확인하는 전력 확인한 후, 상기 전력 성능 개선 요소에 대한 제 1 수정을 진행하여 제 2 성능 개선을 진행하는 구성요소이다. 제어부는 소스 네비게이터 모듈, 성능 데이터 프레임 생성 모듈, 성능 데이터 생성 모듈, 성능 가시화 모듈, 전력 측정 모듈, 전력 소스 네비게이터 모듈, 그리고 전력 가시화 모듈을 포함하여 구성될 수 있다.
이하에서는 상술한 구성을 가진 성능 개선을 위한 소프트웨어 소스 코드 변경 장치에서의 동작에 대하여 도 1 및 도 3 내지 도 11을 참조하여 설명하도록 한다.
우선 소스 코드 입력 단계는 전술한 와 같이 소스 입력부를 통해 이루어진다. 예컨대 소스 코드를 소스 네비게이터에 입력한다. 소스 네비게이터는 오픈 소스 코드 분석 도구이다. 예를 들면, C:/Project/SN/SN-NG4.4/bin/filelist.dat에 타겟 소스의 주소를 입력한다. 이렇게 입력된 소스 코드는 소스 코드 네비게이터의 파서(parser)에 의해 소스 코드 분석이 진행된다. 소스 코드 네비게이터의 파서에 의해 실행 결과물의 예시가 도 3이며, 여기서는 C:\Project\SN\SN-NG4.4\bin\SNDB4 에서 SNDB 파일들을 확인할 수 있으며, 이 파일들은 바이너리 파일이여서 정제과정이 필요하다. 정제과정에서 사용하는 프로그램은 dbdump.exe 파일이다. dbdump.exe는 바이너리(binary)파일 형태의 대상 데이터를 텍스트로 변환하여 저장하는 파일이다.
그 다음 상기 분석 결과에 따라 성능 데이터 프레임을 생성한다. 실행명령어 $ java-jar Extranctinfo.jar "./SN/SN-NG4.4/bin/SNDB4" "/SN/SN-NG4.4/bin/dbdump.exe"에 의해 ExtractInfo.jar의 DB.java 파일의 init() 메서드에서 성능데이터 프레임을 생성한다(도 4 참조).
그 다음, 소스 네비게이터 모듈에서의 결과물을 성능 데이터 프레임에 SQLITE를 활용하여 성능 데이터 베이스를 완성한다. 즉, 실행명령어 $ java-jar Extranctinfo.jar "./SN/SN-NG4.4/bin/SNDB4" "./SN/SN-NG4.4/bin/dbdump.exe"에 의해 생성된 데이터 베이스에 소스 네비게이터의 결과물들을 jdbdump.exe 파일로 insert한다. 생성된 테이블 스키마는 도 5와 같다.
그 다음 성능 가시화 모듈을 통해성능 개선 요소를 산정하고 이를 가시화한다. Generate Dot를 활용하여 실행명령어 $ java-jar GenrateDotContents(SN)_.jar "./graphviz/dot.exe” “ranksep=2.0;” “11111” “C” GenarateDotContents(SN)_.jar의 GenarateDot.java 파일의 DrawRect()메서드에서 성능지표를 추출할 수 있는 쿼리문을 작성한다. 결과물을 Graphviz에 입력하고 실행하면 성능가시화 그래프가 나온다. 그 예가 도 6이며, 사용자는 도 6을 통해 실행속도를 저하하는 요소들(적색으로 표시됨), 즉 실행 성능 개선 요소들을 시각적으로 확인할 수 있게 된다.
그 다음, 성능 개선 요소에 대하여 제 1 수정을 진행하여 성능 개선 작업을 한다. 즉, 실행 성능 개선 요소에 대한 변경 준비가 이루어지는 성능 변경 준비 단계와 상기 변경 준비 이후에 상기기 실행 성능 개선 요소에 대한 사용자의 수정 작업이 진행되는 성능 개선 소스 수정 단계를 통해 이루어지며, 성능 개선 요소 데이터 베이스를 준비하는 단계; 상기 성능 개선 요소 데이터 베이스 중 상기 실행 성능 개선 요소에 대응되는 성능 개선 요소 소스를 확인하는 단계; 상기 확인된 성능 개선 요소 소스를 상기 실행 성능 개선 요소와 함께 표시하는 단계를 포함하고, 상기 성능 개선 소스 수정 단계는, 상기 성능 개선 요소 데이터 베이스에서 추천된 개선 요소 소스로 상기 수정작업을 진행하는 단계를 포함할 수 있다.
즉, 성능 개선 요소들에 대한 수정 작업은 성능 가시화 모듈에 의해 수정이 필요한 "실행 성능 개선 요소"가 타 요소와 다르게 표시된 상태에서, 사용자는 실행 성능 개선요소에 대한 수정작업을 진행하게 된다. 이 때, 성능 개선 요소 데이터 베이스가 메모리에 저장되어 있고, 저장된 성능 개선 요소 데이터 베이스에서 제어부가 상기 실행 성능 개선 요소에 대응되는 성능 개선 요소 소스를 확인하고, 이를 실행 성능 개선 요소와 함께 표시한 후 사용자의 선택에 의해 실행 성능 개선 요소가 자동으로 수정될 수 있다. 또는 수작업으로 진행될 수도 있다.
그 예를 들면 다음과 같다.
우선 정의된 성능저하 요소의 패턴은 3가지로 예시한다.
Pattern Name |
Code Pattern |
Regular Expression Rule |
Loop unrolling & Loop Down Count (인수가 증가하는 반복문) |
int sum = 0; for(int i=0; i<1000;i++){ sum += array[i]; } |
[a-zA-Z_]([a-zA-Z_0-9])* [&<] ([a-zA-Z_0-9])+ ; [a-zA-Z_]([a-zA-Z_0-9])* \+\+ |
Unnecessary control statements of the inner loops (반복문 내 불필요한 조건문) |
for(i=0; i<1000;i++){ if(i & 0x01) { do_odd(i); }else{ do_even(i); } } |
[a-zA-Z_]([a-zA-Z_0-9])* [&<] ([a-zA-Z_0-9])+ ; [a-zA-Z_]([a-zA-Z_0-9])* \+\+ \) \{ [\s\S]* if \( |
Multiple if then else (다수의 if then else문) |
if(a==1){ }else if(a==2){ }else if(a==3){ }else if(a==4){ } |
if \( [a-zA-Z_0-9\b\s\+\/\*\%%\[\]]* [&<!=&>&|]* [a-zA-Z_0-9\b\s\+\/\*\%%\[\]]+ \) |
c/c++ 언어로 작성된 프로그램을 정적 분석하는 오픈 소스 도구인 cppcheck와 정규 표현식을 통해 소스코드를 검촐하고 실행 명령어 중 잘못된 패턴을 검출하고, 이것을 개선하는 과정을 거치게 된다. 예컨대, PropertiesWnd.cpp파일에서 Loop unrolling & Loop Down Count를 리팩토링하는 방식, Unnecessary control statements of the inner loops를 리팩토링하는 방식, Multiple if then else를 리팩토링 하는 방식으로 이루어진다.
이와 같은 1차 성능 개선 작업이 이루어진다음 성능 가시화모듈을 통해 평가를 해보면, 도 7과 같이 성능 저하 요소의 갯수(적색으로 표시된 부분)가 감소하였음을 알 수 있다.
그 다음 전력 성능 개선 작업(2차 개선 작업)이 진행된다. 제 1 차 성능 개선 장겁후 상기 소스 코드를 분석하여 전력 성능 개선 요소를 확인한다. 이 때 전력 측정 환경을 준비한 다음 상기 소프트웨어를 실행하여 1차 전력 측정을 제 1 전력 정보를 생성하는 하는 단계; 전력 측정 프로젝트를 생성하여 전력 측정 환경을 준비하는 전력 측정 준비 단계: 상기 소스코드를 입력한 상태에서 상기 전력 측정 프로젝트를 실행하는 프로젝트 실행 단계; 상기 프로젝트 실행 단계후 2차 전력 측정을 하여 제 2 전력 정보를 생성하는 단계; 상기 제 1 전력 정보와 제 2 전력 정보를 비교하여 상기 전력 성능 개선 요소를 생성하는 단계를 포함하여 이루어질 수 있다. 이것은 도 8에서와 같이 Keil uVision IDE에서 상기 프로젝트가 생성될 수 있다.
이와 같이 전력 성능 개선 요소를 확인하게 되면, 제 2 성능 개선 작업이 이루어지게 되는데, 상기 전력 성능 개선 요소에 대한 변경 준비가 이루어지는 전력 변경 준비 단계; 및 상기 변경 준비 이후에 상기 전력 성능 개선 요소에 대한 수정 작업이 진행되는 전력 소스 수정 단계를 포함하게 된다.
여기서 상기 전력 변경 준비 단계는, 전력 개선 요소 데이터 베이스를 준비하는 단계; 상기 전력 개선 요소 데이터 베이스 중 상기 전력 성능 개선 요소에 대응되는 전력 개선 요소 소스를 확인하는 단계; 상기 확인된 전력 개선 요소 소스를 상기 전력 성능 개선 요소와 함께 표시하는 단계; 상기 전력 소스 수정 단계는, 상기 전력 개선 요소 데이터 베이스에서 추천된 전력 개선 요소 소스로 상기 수정 작업을 진행하는 단계를 포함하게 된다.
위 전력 성능 개선 요소의 개선인 제 2 수정은 실질적으로 제 1 수정과 매우 유사하게 진행된다. 예를 들어 전력 성능 개선을 위해 소스코드를 입력하고, 전력 측정 프로젝트를 실행한 예가 도 9에 도시되어 있다. 또한, 전력 측정 단계의 예가 도 10에 도시되어 있다. 도 10에서는 도 9의 디버그 모드에서 전력 측정을 진행한 다 경우로서, 프로그램의 시작점과 종료지점이 나타나며, 현재 전류, 시작점과 종료점의 델타 전류값, 평균 전류값, 누적 전류값등이 차례로 측정된다. 이 때 누적 전류값을 이용하여 전력 개선 요소 소스를 확인할 수 있게 된다.
도 11은 전력 성능 개선 요소에 대한 제 2 수정을 진행하여 제 2 성능 개선을 진행된 후, 수정 전과 수정전을 비교하여 얼마나 전력 성능이 개선되었는지를 나타내는 이미지도이다. 도시된 바와 같이, 개선전의 전류량및 전력량에 비하여 개선후 상당폭의 저전력 성능 개선이 이루어졌음을 확인할 수 있다.
Claims (15)
- 소프트웨어의 소스 코드를 입력받는 소스 코드 입력 단계;
상기 소스 코드를 분석하여 실행 성능 개선 요소를 확인하는 성능 확인 단계, 상기 성능 확인 단계는 성능 가시화 모듈을 통해 상기 실행 성능 개선 요소를 가시화하여 시각적으로 표시하는 단계를 포함함;
상기 실행 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하는 1차 개선 단계;
제 1 성능 개선 후 상기 소스코드를 분석하여 전력 성능 개선 요소를 확인하는 전력 확인 단계; 및
상기 전력 성능 개선 요소에 대한 제 2 수정을 진행하여 제 2 성능 개선을 진행하는 2차 개선 단계;를 포함하고,
상기 1차 개선 단계는,
상기 실행 성능 개선 요소에 대한 변경 준비가 이루어지는 성능 변경 준비 단계; 및
상기 변경 준비 이후에 상기 실행 성능 개선 요소에 대한 수정 작업이 진행되는 성능 개선 소스 수정 단계를 포함하고,
상기 성능 변경 준비 단계는,
성능 개선 요소 데이터 베이스를 준비하는 단계;
상기 성능 개선 요소 데이터 베이스 중 상기 실행 성능 개선 요소에 대응되는 성능 개선 요소 소스를 확인하는 단계;
상기 확인된 성능 개선 요소 소스를 상기 실행 성능 개선 요소와 함께 표시하는 단계를 포함하고,
상기 성능 개선 소스 수정 단계는,
상기 성능 개선 요소 데이터 베이스에서 추천된 개선 요소 소스로 상기 수정작업을 진행하는 단계를 포함하는, 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
- 삭제
- 제 1 항에 있어서,
상기 성능 확인 단계는,
소스 네비게이터 모듈을 통해 소스 코드 분석을 진행하는 분석 단계;
상기 분석 단계 후 상기 분석 결과에 따라 성능 데이터 프레임을 생성하는 단계;
상기 소스 네비게이터 모듈에서의 결과물을 상기 성능 데이터 프레임에 삽입하여 성능 데이터 베이스를 완성하는 단계;
성능 가시화 모듈을 통해 상기 성능 데이터 베이스에 기초하여 상기 실행 성능 개선 요소를 선정하고 이를 가시화하는 단계를 포함하는, 성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법.
- 삭제
- 삭제
- 삭제
- 제 1 항에 있어서,
상기 전력 확인 단계는,
전력 가시화 모듈을 통해 상기 전력 성능 개선 요소를 가시화하여 시각적으로 표시하는 단계를 포함하는, 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
- 제 7 항에 있어서,
상기 전력 확인 단계는,
상기 소프트웨어를 실행하여 1차 전력 측정을 제 1 전력 정보를 생성하는 하는 단계;
전력 측정 프로젝트를 생성하여 전력 측정 환경을 준비하는 전력 측정 준비 단계:
상기 소스코드를 입력한 상태에서 상기 전력 측정 프로젝트를 실행하는 프로젝트 실행 단계;
상기 프로젝트 실행 단계후 2차 전력 측정을 하여 제 2 전력 정보를 생성하는 단계;
상기 제 1 전력 정보와 제 2 전력 정보를 비교하여 상기 전력 성능 개선 요소를 생성하는 단계를 포함하는,성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
- 제 8 항에 있어서,
상기 2차 개선 단계는,
상기 전력 성능 개선 요소에 대한 변경 준비가 이루어지는 전력 변경 준비 단계; 및
상기 변경 준비 이후에 상기 전력 성능 개선 요소에 대한 수정 작업이 진행되는 전력 소스 수정 단계를 포함하는, 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
- 제 9 항에 있어서,
상기 전력 변경 준비 단계는,
전력 개선 요소 데이터 베이스를 준비하는 단계;
상기 전력 개선 요소 데이터 베이스 중 상기 전력 성능 개선 요소에 대응되는 전력 개선 요소 소스를 확인하는 단계;
상기 확인된 전력 개선 요소 소스를 상기 전력 성능 개선 요소와 함께 표시하는 단계를 포함하는, 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
- 제 10 항에 있어서,
상기 전력 소스 수정 단계는,
상기 전력 개선 요소 데이터 베이스에서 추천된 전력 개선 요소 소스로 상기 수정 작업을 진행하는 단계를 포함하는, 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법.
- 소프트웨어의 소스 코드를 입력받기 위한 입력부;
디스플레이부 및
상기 소스 코드를 분석하여 실행 성능 개선 요소를 확인하고, 상기 실행 성능 개선 요소에 대한 제 1 수정을 진행하여 제 1 성능 개선을 진행하고, 제 1 성능 개선 후 상기 소스코드를 분석하여 전력 성능 개선 요소를 확인하는 전력 확인한 후, 상기 전력 성능 개선 요소에 대한 제 1 수정을 진행하여 제 2 성능 개선을 진행하는 제어부를 포함하고,
상기 제어부는,
상기 실행 성능 개선 요소를 가시화하여 상기 디스플레이부에 시각적으로 표시하는 성능 가시화 모듈;
상기 소스 코드에 대한 분석을 진행하는 소스 네비게이터 모듈;;
상기 분석 결과에 따라 성능 데이터 프레임을 생성하는 성능 데이터 프레임 생성 모듈;
상기 소스 네비게이터 모듈에서의 결과물을 상기 성능 데이터 프레임에 삽입하여 성능 데이터 베이스를 생성하는 성능 데이터 생성 모듈; 및
상기 전력 성능 개선 요소를 가시화하여 시각적으로 상기 디스플레이부에 표시하는 전력 가시화 모듈을 포함하고,
상기 제어부는, 상기 성능 가시화 모듈을 통해 상기 성능 데이터 베이스에 기초하여 상기 실행 성능 개선 요소를 선정하고 이를 가시화하여 상기 디스플레이부에 표시하는, 성능 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 장치. - 삭제
- 삭제
- 삭제
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200095193A KR102413994B1 (ko) | 2020-07-30 | 2020-07-30 | 성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법 및 그 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200095193A KR102413994B1 (ko) | 2020-07-30 | 2020-07-30 | 성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법 및 그 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220015107A KR20220015107A (ko) | 2022-02-08 |
KR102413994B1 true KR102413994B1 (ko) | 2022-06-28 |
Family
ID=80252338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200095193A KR102413994B1 (ko) | 2020-07-30 | 2020-07-30 | 성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법 및 그 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102413994B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100503776B1 (ko) * | 2005-03-12 | 2005-07-26 | (주)위즈베이스 | 웹 어플리케이션 성능 분석 및 튜닝 방법 |
KR102006507B1 (ko) * | 2011-09-02 | 2019-10-01 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 스크립트 코드를 가진 마크업 콘텐츠의 고속 프레젠테이션 기법 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100669242B1 (ko) * | 2004-12-15 | 2007-01-15 | 한국전자통신연구원 | 크로스 개발 환경에서의 임베디드 소프트웨어 최적화 및분석을 위한 장치 및 방법 |
-
2020
- 2020-07-30 KR KR1020200095193A patent/KR102413994B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100503776B1 (ko) * | 2005-03-12 | 2005-07-26 | (주)위즈베이스 | 웹 어플리케이션 성능 분석 및 튜닝 방법 |
KR102006507B1 (ko) * | 2011-09-02 | 2019-10-01 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 스크립트 코드를 가진 마크업 콘텐츠의 고속 프레젠테이션 기법 |
Also Published As
Publication number | Publication date |
---|---|
KR20220015107A (ko) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112015628B (zh) | 一种智能合约函数级动态监测分析系统及实现方法 | |
US8869103B2 (en) | Using intermediate representations to verify computer-executable code generated from a model | |
US8984485B2 (en) | Analysis of source code changes | |
CN101710378B (zh) | 一种基于序列模式挖掘的软件安全漏洞检测方法 | |
US9047399B2 (en) | Generating visualization from running executable code | |
CN107239392B (zh) | 一种测试方法、装置、终端及存储介质 | |
US8898635B2 (en) | System and method for automatic impact variable analysis and field expansion in mainframe systems | |
CN103577168A (zh) | 测试用例创建系统及方法 | |
CN109918294A (zh) | 一种混源软件自主可控性检测方法及系统 | |
CN108255837A (zh) | 一种sql解析器及方法 | |
Samuel et al. | Slicing-based test case generation from UML activity diagrams | |
Islam et al. | Coherent clusters in source code | |
CN105468525A (zh) | 基于c代码模型的构件接口单元测试方法 | |
CN114185791A (zh) | 一种数据映射文件的测试方法、装置、设备及存储介质 | |
CN112347120B (zh) | 一种基于复杂sql的自动优化方法和装置 | |
KR102413994B1 (ko) | 성능 개선을 위해 소프트웨어 소스 코드 변경한 후 이를 시각적으로 가시화하는 방법 및 그 장치 | |
KR102523329B1 (ko) | 전력 개선을 위해 소프트웨어 소스 코드 변경하고 성능 개선 요소를 시각적으로 가시화하여 표시하는 방법 | |
CN115794618A (zh) | 重复应用功能模块检测方法和装置 | |
CN112148581A (zh) | 代码规范检查方法、装置、系统及存储介质 | |
CN111125073A (zh) | 一种大数据平台数据质量校验的方法、装置及系统 | |
WO2012170675A2 (en) | Verification of computer-executable code generated from a model | |
CN117390055B (zh) | Jooq连表语句生成方法、设备以及介质 | |
EP4386562A1 (en) | Automated testing of database commands | |
CN118259874A (zh) | 一种产品设计的分析方法、系统和电子设备 | |
CN118193382A (zh) | 应用程序的测试方法、装置、设备、存储介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |