KR102422972B1 - 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치 - Google Patents

프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치 Download PDF

Info

Publication number
KR102422972B1
KR102422972B1 KR1020200153987A KR20200153987A KR102422972B1 KR 102422972 B1 KR102422972 B1 KR 102422972B1 KR 1020200153987 A KR1020200153987 A KR 1020200153987A KR 20200153987 A KR20200153987 A KR 20200153987A KR 102422972 B1 KR102422972 B1 KR 102422972B1
Authority
KR
South Korea
Prior art keywords
ast
information
snapshot
display
snapshots
Prior art date
Application number
KR1020200153987A
Other languages
English (en)
Other versions
KR20220067366A (ko
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 KR1020200153987A priority Critical patent/KR102422972B1/ko
Publication of KR20220067366A publication Critical patent/KR20220067366A/ko
Application granted granted Critical
Publication of KR102422972B1 publication Critical patent/KR102422972B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

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)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 M개의 스냅샷들을 포함한 소스 코드 히스토리를 저장하는 메모리, 디스플레이, 상기 메모리 및 상기 디스플레이와 기능적으로 연결되는 프로세서를 포함하고, 상기 프로세서는 상기 메모리에 저장된 소스 코드 히스토리의 M개의 스냅샷들 중 n(n은 자연수)번째 스냅샷과 n-1번째 스냅샷에 대한 클래스 AST 페어링을 수행하고, 상기 페어링에 따른 AST 페어들 간의 비교를 수행하고, 상기 비교 결과를 기반으로 변경 사항을 식별하고, 상기 변경 사항을 작업 단위로 구분 및 시각화한 후, 상기 디스플레이에 출력하도록 설정된 것을 특징으로 하는 프로그램 유지 보수를 지원하는 컴퓨팅 장치와 이를 이용한 프로그램 유지 보수 방법을 개시한다.

Description

프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치{Method for maintenance for program and computing device supporting the same}
본 발명은 프로그램 유지 보수에 관한 것으로, 소스 코드 히스토리에 저장된 스냅샷들을 이용한 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치에 관한 것이다.
프로그램 유지보수는 소프트웨어 개발에서 가장 많은 비용을 차지하는 부분이다. 이에 따라 프로그램 유지 보수자들은 기존 시스템의 Version 관리 시스템(VCS)을 활용하여 개발자들이 어떻게 기능을 개발하고 Bug를 수정하였는지에 대해 과거의 개발이력을 직접 분석함으로써 유지보수를 수행할 수 있다. 하지만, 이러한 작업은 프로그램 유지 보수자들에게 많은 시간과 비용을 요구하며, 결과적으로 일정의 지연과 예산의 초과투자를 유발할 수 있다.
기존 선행 개발 프로그램들의 경우 소프트웨어 개발 통합 도구에서 개발자의 여러 개발 행위를 즉각적으로 기록하고, 이를 별도의 저장소에 저장하여 개발자에게 개발의 과정을 보여준다. 하지만, 이러한 방식들은 프로그램 개발 과정에 대한 정보를 문자열단위로 보여주는 특징 때문에, 프로그램 유지 보수자가, 각 문자열들을 하나씩 확인하고, 그 뜻을 이해해야 하기 때문에, 많은 시간과 피로감을 느낄 수 있으며, 문제점 찾기가 쉽지 않은 단점이 존재한다. 또 다른 방식으로, 여러 Version의 해당 System을 빌드하여 가져온 다음에 동적 분석에 따라 개발 과정을 보여주는 방식이 있다. 이러한 방식은 시스템이 어떻게 개발되었는지 보여주는 가장 직관적인 방식이지만, 만약 해당 시스템 build가 수행되지 못할 경우 그 과정을 파악할 수 없다는 문제점이 있다.
한국공개특허 제10-2020-0080704호(2020.07.07.)
본 발명은 프로그램 유지보수에 관한 것으로, 별도의 저장소나 System Build를 요구하지 않고, Source Code History 내의 각 Snapshot에서 어떠한 작업들이 수행되었는지를 AST(Abstract Syntax Tree) 기반 Method Attribute 요소 중심으로, 개발 과정을 시각화하여 제공함으로써, 각 Version마다 어떠한 작업이 수행 되었는지를 쉽게 빠르게 확인할 수 있도록 하는 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치를 제공함에 있다.
예컨대, 본 발명은 소스 코드 히스토리에 저장된 스냅샷들을 이용하여 작업 변경 사항들을 추출하고, 추출된 작업 변경 사항들을 출력하여 프로그램 이해를 쉽게 하면서 유지 보수를 보다 쉽게 할 수 있도록 하는 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치를 제공하는 것을 그 목적으로 한다.
상기와 같은 목적을 달성하기 위한 본 발명의 컴퓨팅 장치는 M개의 스냅샷들을 포함한 소스 코드 히스토리를 저장하는 메모리, 디스플레이, 상기 메모리 및 상기 디스플레이와 기능적으로 연결되는 프로세서를 포함하고, 상기 프로세서는 상기 메모리에 저장된 소스 코드 히스토리의 M개의 스냅샷들 중 n(n은 자연수)번째 스냅샷과 n-1번째 스냅샷에 대한 클래스 AST 페어링을 수행하고, 상기 페어링에 따른 AST 페어들 간의 비교를 수행하고, 상기 비교 결과를 기반으로 변경 사항을 식별하고, 상기 변경 사항을 작업 단위로 구분 및 시각화한 후, 상기 디스플레이에 출력하도록 설정된 것을 특징으로 하는 프로그램 유지 보수를 지원하는 컴퓨팅 장치.
특히, 상기 프로세서는 상기 n-1 번째 스냅샷과 상기 n번째 스냅샷들 간의 비교를 수행하여 Java 파일 페어를 생성하고, 상기 Java 파일 페어로부터 클래스 페어의 AST 트리를 추출한 후, 각 클래스 AST 트리에 대한 페어링을 수행하도록 설정된 것을 특징으로 한다.
또한, 상기 프로세서는 상기 코드 변경 사항에 대한 확인을 통해 상기 AST 페어들의 변경 타입을 정보 수정, 정보 삭제, 정보 추가로 구분하도록 설정된 것을 특징으로 한다.
상기 프로세서는 상기 정보 수정, 정보 삭제, 정보 추가 중 적어도 하나를 색 또는 텍스트로 구분하여 상기 디스플레이 출력하도록 설정된 것을 특징으로 한다.
여기서, 상기 프로세서는 상기 AST 페어의 변경 타입들에 대한 작업 단위 구분을 수행하는 과정에서 각 작업 단위들에 대한 수정, 삭제, 추가를 확인하고, 작업별로 수정, 삭제 또는 추가에 대해 구분 표시하도록 설정될 수 있다.
본 발명의 실시 예에 따른 프로그램 유지 보수 방법은, 메모리에 저장된 소스 코드 히스토리의 M개의 스냅샷들 중 n(n은 자연수)번째 스냅샷과 n-1번째 스냅샷을 획득하는 단계, 상기 n번째 스냅샷과 n-1번째 스냅샷에 대한 클래스 AST 페어링을 수행하는 단계, 상기 페어링에 따른 AST 페어들 간의 비교를 수행하는 단계, 상기 비교 결과를 기반으로 변경 사항을 식별하는 단계, 상기 변경 사항을 작업 단위로 구분 및 시각화한 후, 상기 디스플레이에 출력하는 단계를 포함하는 것을 특징으로 한다.
특히, 상기 AST 페어링을 수행하는 단계는 상기 n-1 번째 스냅샷과 상기 n번째 스냅샷들 간의 비교를 수행하여 Java 파일 페어를 생성하는 단계, 상기 Java 파일 페어로부터 클래스 페어의 AST 트리를 추출하는 단계, 각 클래스 AST 트리에 대한 페어링을 수행하는 단계를 포함하는 것을 특징으로 한다.
그리고 상기 식별하는 단계는 상기 코드 변경 사항에 대한 확인을 통해 상기 AST 페어들의 변경 타입을 정보 수정, 정보 삭제, 정보 추가로 구분하는 단계를 포함하는 것을 특징으로 한다.
추가로, 상기 방법은 상기 정보 수정, 정보 삭제, 정보 추가 중 적어도 하나를 색 또는 텍스트로 구분하고 시각화한 후 상기 디스플레이 출력하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 상기 출력하는 단계는 상기 AST 페어의 변경 타입들에 대한 작업 단위 구분을 수행하는 과정에서 각 작업 단위들에 대한 수정, 삭제, 추가를 확인하고, 작업별로 수정, 삭제 또는 추가에 대해 구분 표시하는 단계를 포함하는 것을 특징으로 한다.
상술한 본 발명은, VCS(version control system) 시스템에서 관리된 각 Version의 시스템 Source Code를 분석하고 이를 여러 개의 작업 단위로 표현하여 자동적으로 보여줌으로써 프로그램 유지 보수자들의 작업 효율성을 높일 뿐만 아니라 소프트웨어 교육측면에서도 해당 시스템이 어떻게 개발되었는지 보여줌으로써 개발에 대한 학습을 지원할 수 있다.
예컨대, 본 발명은 새로운 개발자가 팀에 합류하거나, 변경된 내용을 확인 및 사용하기 위해 새롭게 구축해야 하는 프로젝트의 개발 환경 및 실행 환경을 자동으로 제공할 수 있으며, 소프트웨어를 개발하기 위해 프로그래밍 언어의 이해가 필요한 모든 분야에 효과적인 교육 환경을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치 구성의 한 예를 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 프로세서 구성의 한 예를 나타낸 도면이다.
도 3은 본 발명의 실시 예에 따른 프로그램 유지 보수 방법의 한 예를 나타낸 도면이다.
도 4a는 본 발명의 실시 예에 따른 프로그램 유지 보수와 관련한 시스템 운용 환경의 한 예를 나타낸 도면이다.
도 4b는 도 4a의 작업 단위 식별 정보를 확대한 도면이다.
이하, 본 발명의 바람직한 실시예를 첨부한 도면에 의거하여 보다 상세하게 설명하면 다음과 같다. 물론 본 발명의 권리범위는 하기의 실시예에 한정되는 것은 아니며, 본 발명의 기술적 요지를 벗어나지 않는 범위 내에서 당해 기술분야의 통상적인 지식을 가진자에 의하여 다양하게 변형 실시될 수 있다.
이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 바람직한 실시 예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있다.
이하에서 설명하는 본 발명의 컴퓨팅 장치 및 이의 운용 방법은 기존 시스템을 실행하고 변경하며 결과 값을 테스트 하는 과정을 통해, 소프트웨어의 각 부분의 소스 코드들의 연결과 전체적인 코드에 대해 깊은 이해를 가능하게 할 수 있다. 또한, 본 발명의 컴퓨팅 장치 및 이의 운용 방법은 소프트웨어의 개발 과정에서 수행된 테스트 통과 여부를 살펴볼 수 있는 기능을 제공함으로써, 개발자가 소프트웨어 개발 당시 발생한 문제해결을 위해 어떻게 소스 코드를 작성했는지 알 수 있어 재사용자가 중점적으로 분석해야 할 부분을 쉽게 식별할 수 있다. 이와 관련하여, 본 발명은 소프트웨어와 관련한 복수 버전의 소스 코드들과 해당 소스 코드들의 테스트 실행 환경 데이터(예: 개발 환경 정보, 테스트 환경 정보)를 매핑하여 저장 관리하고, 필요에 따라 테스트 컴퓨터 실행 환경을 복원하여 제공할 수 있다. 상기 테스트 환경 정보는 실행 결과가 더 포함될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시 예를 보다 상세하게 설명하고자 한다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치 구성의 한 예를 나타낸 도면이다.
도 1을 참조하면, 본 발명의 실시 예에 따른 컴퓨팅 장치(100)는 통신 인터페이스(110), 메모리(130), 디스플레이(140) 및 프로세서(150)를 포함할 수 있다. 추가적으로, 상기 컴퓨팅 장치(100)는 사용자 입력을 수행할 수 있는, 입력 장치(170), 오디오 정보를 출력할 수 있는 출력 장치(180)를 더 포함할 수 있다.
상기 통신 인터페이스(110)는 상기 컴퓨팅 장치(100)의 통신 기능을 지원할 수 있다. 상기 통신 인터페이스(110)는 유선 통신 채널 또는 무선 통신 채널 중 적어도 하나를 지원할 수 있는 적어도 하나의 통신 회로 및 무선 통신 채널을 지원하는 적어도 하나의 안테나를 포함할 수 있다. 예컨대, 상기 통신 인터페이스(110)는 프로세서(150) 제어에 대응하여, 다른 메모리 장치 또는 서버 장치와 통신 채널을 형성하고, 다른 메모리 장치 또는 서버 장치로부터 프로그램 개발에 이용된 버전별 스냅샷들을 수신할 수 있다. 수신된 상기 버전별 스냅샷들은 프로세서(150) 제어에 대응하여 메모리(130)에 저장될 수 있다. 상기 프로그램이 컴퓨팅 장치(100)에서 개발된 경우, 상기 버전별 스냅샷들을 수신하는 통신 인터페이스(110) 구성은 생략될 수도 있다. 추가로, 상기 통신 인터페이스(110)는 컴퓨팅 장치(100)와 독립적으로 구성된 입출력 장치와 통신 채널을 형성하고, 프로세서(150) 제어에 대응하여 작업 단위 식별 결과를 외부 입출력 장치(또는 외부 전자 장치)에 전송할 수 있다.
상기 메모리(130)는 상기 컴퓨팅 장치(100) 구동에 필요한 프로그램 및 데이터를 저장할 수 있다. 특히, 상기 메모리(130)는 본 발명의 실시 예에 따른 프로그램 버전별 스냅샷들에 대한 작업 단위 분류 결과 출력과 관련하여, 상기 프로그램 버전별 스냅샷들을 저장할 수 있다. 상기 프로그램 버전별 스냅샷들(예: M개 스냅샷(30))은 예컨대, 메모리(130)에 저장된 소스 코드 히스토리(131)에 포함될 수 있다. 상기 소스 코드 히스토리(131)는 앞서 설명한 바와 같이, 특정 프로그램 개발 과정에서 저장되거나, 다른 외부 서버 장치 등으로부터 수신될 수 있다. 상기 메모리(130)는 작업 단위 분류 결과를 임시 저장할 수 있으며, 프로그램 버전별 스냅샷들로부터 작업 단위 분류 결과를 추출하는 과정에서 처리되는 데이터를 임시 저장할 수 있다.
상기 디스플레이(140)는 컴퓨팅 장치(100) 운용과 관련한 적어도 하나의 화면을 출력할 수 있다. 예컨대, 상기 컴퓨팅 장치(100)가 프로그램 개발에 이용되는 경우, 상기 디스플레이(140)는 개발 과정에 필요한 다양한 화면을 출력할 수 있다. 또는, 상기 디스플레이(140)는 프로그램 버전별 스냅샷들을 외부 서버 장치 또는 외부 메모리 장치로부터 상기 통신 인터페이스(110)를 통해 수신하는 경우, 상기 외부 서버 장치 또는 외부 메모리 장치와 컴퓨팅 장치(100)의 연결에 대응하는 화면, 상기 프로그램 버전별 스냅샷들을 포함한 소스 코드 히스토리(131)를 수신하는 화면, 상기 소스 코드 히스토리(131)를 메모리(130)에 저장하는 화면 등을 출력할 수 있다. 상기 디스플레이(140)는 사용자(또는 프로그램 유지 보수자) 요청에 대응하여 메모리(130)에 저장된 M개의 스냅샷(30)들 각각 출력할 수 있다. 또는, 디스플레이(140)는 M개의 스냅샷(30)들을 기반으로 생성된 클래스 X AST 페어들을 나타내는 화면, 코드 변경 사항에 대한 식별 결과, 정보의 수정, 삭제, 추가를 지시하는 화면, 작업 단위 식별 분류된 화면 등을 출력할 수 있다. 상기 디스플레이(140)는 상기 컴퓨팅 장치(100)와 일체화된 형태로 마련되거나 또는 별도의 유선 케이블 또는 무선 통신 채널을 통해 연결될 수 있다. 또한, 상기 디스플레이(140)는 복수개의 표시 장치를 포함할 수 있으며, 복수개의 표시 장치들은 본 발명의 작업 단위 식별 분류 과정 각각에 대한 화면들을 각각 출력할 수 있다.
상기 입력 장치(170)는 상기 컴퓨팅 장치(100)에 대한 사용자 입력을 수행할 수 있는 적어도 하나의 입력 수단을 포함할 수 있다. 예컨대, 상기 입력 장치(170)는 컴퓨팅 장치(100)와 기능적으로 연결된 키보드, 키패드, 마우스, 음성 입력 장치, 터치스크린, 터치 패드, 스타일러스 팬 및 그에 상응하는 전자 패널 중 적어도 하나를 포함할 수 있다. 상기 디스플레이(140)가 입력 기능(예: 터치 기능)을 포함하는 경우, 상기 디스플레이(140)는 상기 입력 장치(170)의 한 구성이 될 수 있다. 상기 입력 장치(170)는 프로그램 버전별 스냅샷들에 대한 작업 단위 분류 식별 및 표시에 관한 다양한 입력 신호를 사용자 제어에 대응하여 생성할 수 있다. 예컨대, 상기 입력 장치(170)는 특정 프로그램에 대한 유지 보수를 요청하는 사용자 입력 신호, 상기 유지 보수에 대응하여 특정 단계(예: Class X의 AST 페어 단계, 페어링 결과에 대한 변경 사항 식별 단계, 식별 결과 표시 단계 등을 호출하는 사용자 입력 신호를 사용자 제어에 대응하여 생성할 수 있다. 상기 사용자 입력 신호는 프로세서(150)에 전달되어, 대응되는 기능 수행 또는 화면 출력과 관련한 트리거 신호로 작용할 수 있다.
상기 출력 장치(180)는 상기 컴퓨팅 장치(100)와 기능적으로 연결되는 적어도 하나의 출력 수단을 포함할 수 있다. 예컨대, 상기 출력 장치(180)는 지정된 텍스트 또는 이미지를 출력할 수 있는 상기 디스플레이(140)를 포함할 수 있다. 또한, 상기 출력 장치(180)는 본 발명의 실시 예에 따른 프로그램 버전 별 스냅샷을 기반으로 작업 단위 별 식별 분류 결과와 관련한 오디오 정보를 출력할 수 있는 오디오 장치(예: 스피커)를 포함할 수 있다. 또는, 상기 출력 장치(180)는 LED 램프 또는 진동 센서 등을 포함할 수도 있다. 상기 출력 장치(180)는 컴퓨팅 장치(100) 운용과 관련한 다양한 정보 출력을 위한 구성으로서, 유선 케이블 또는 무선으로 연결될 수 있는 독립된 장치를 포함할 수 있다.
상기 프로세서(150)는 상기 컴퓨팅 장치(100) 운용과 관련한 프로그램의 활성화, 프로그램 운용에 필요한 데이터의 전달 및 처리를 수행할 수 있다. 본 발명의 프로세서(150)는 프로그램 유지 보수와 관련한 적어도 하나의 알고리즘 또는 작업 단위 식별 분류 결과 출력을 위해 마련된 소프트웨어 구동 등을 수행할 수 있다. 이와 관련하여, 상기 프로세서(150)는 도 2에 도시된 바와 같은 구성을 포함할 수 있다.
도 2는 본 발명의 실시 예에 따른 프로세서 구성의 한 예를 나타낸 도면이다.
도 2를 참조하면, 본 발명의 실시 예에 따른 프로세서(150) 구성은 AST 페어 생성부(151), 비교부(153), 작업 식별부(155)를 포함할 수 있다.
상기 AST 페어 생성부(151)는 특정 프로그램에 관한 유지 보수와 관련하여, 작업 단위 식별 결과 출력을 요청하는 사용자 입력이 발생하면, 특정 프로그램 개발과 관련하여 메모리(130)에 저장된 소스 코드 히스토리(131)에서 M(M은 자연수 또는 N과 같거나 큰 자연수)개의 스냅샷(30)들을 수집할 수 있다. 상기 M개의 스냅샷(30)들은 상기 특정 프로그램 개발 과정에서 기록된 전체 스냅샷들 또는 전체 스냅샷들 중 사용자가 지정된 일정 실행 기능과 관련한 일부 스냅샷들을 포함할 수 있다. 앞서 언급한 바와 같이, 상기 M개의 스냅샷(30)들은 외부 서버 장치 또는 외부 메모리 장치로부터 수신될 수도 있다. 상기 AST 페어 생성부(151)는 상기 M개의 스냅샷(30)들에 대한 페어링을 수행할 수 있다. 이와 관련하여, 상기 AST 페어 생성부(151)는 M개의 스냅샷(30)들의 순서를 확인하고, 이전 순서의 제1 스냅샷과 현재 순서의 제2 스냅샷을 선택하고, 제1 스냅샷과 제2 스냅샷에 대한 비교를 위해 Java 파일 페어를 생성할 수 있다. 상기 AST 페어 생성부(151)는 생성된 Java 파일 페어들에 대한 AST Tree를 추출하고, 추출된 페어의 AST Tree에 대해 Class AST Tree 페어링을 수행할 수 있다. 상기 AST 페어 생성부(151)는 각 순서별로 생성된 Class AST Tree 페어들을 비교부(153)에 전달할 수 있다.
상기 비교부(153)는 상기 AST 페어 생성부(151)로부터 Class X의 AST 페어들 예컨대, M개의 스냅샷(30)들에 대한 AST 페어들에 대한 코드 변경 사항을 식별할 수 있다. 즉, 페어 관계인 제1 스냅샷의 Class들과 제2 스냅샷의 Class들 상호 비교하여 변경된 사항 예컨대, 수정, 삭제, 추가를 식별할 수 있다. 상기 비교부(153)는 사용자 요청에 따라 AST 페어들 간의 수정, 삭제 및 추가 결과를 디스플레이(140)에 출력할 수도 있다. 이때, 비교부(153)는 수정, 삭제, 추가식별을 위하여, 해당 항목들에 대해 각기 서로 다른 색을 할당하면서, 색이 지시하는 정보를 텍스트로 제공할 수 있다. 상기 비교부(153)는 식별 결과를 작업 식별부(155)에 전달할 수 있다. 또는, 비교부(153)는 수정, 삭제, 추가를 지시하는 텍스트, 예컨대, M(modify), D(delete), A(add)를 관련 항목 또는 항목이 있었던 위치에 출력할 수 있다.
상기 작업 식별부(155)는 비교부(153)로부터 수신한 비교 결과 예컨대, AST 페어들 간의 수정, 삭제, 추가 사항들에 대하여 작업 단위로 구분할 수 있다. 이와 관련하여, 작업 식별부(155)는 사전 정의된 알고리즘을 이용하여 AST 페어들 간의 수정(M), 삭제(D), 추가(A)에 대한 검색 빌드를 수행할 수 있다. 상기 작업 식별부(155)는 구분된 작업들에 대하여, 디스플레이(140)에 시각화하여 출력하되, 수정, 삭제, 추가된 작업들을 색 또는 텍스트를 이용하여 구분 및 시각화한 후 출력할 수 있다. 이 과정에서, 상기 작업 식별부(155)는 수정, 삭제, 추가 작업이 있는 경우, 해당 항목 검출에 대한 지정된 정보(예: 알람에 대응하는 오디오 정보 또는 텍스트나 이미지 정보 또는 화면 효과 등)를 출력할 수 있다.
도 3은 본 발명의 실시 예에 따른 프로그램 유지 보수 방법의 한 예를 나타낸 도면이다.
도 3을 참조하면, 본 발명의 실시 예에 따른 프로그램 유지 보수 방법과 관련하여, 301 단계에서, 컴퓨팅 장치(100)의 프로세서(150)는 N-1 번째 및 N 번째 스냅샷을 수집할 수 있다. 이와 관련하여, 상기 프로세서(150)는 메모리(130)에 저장된 M개의 스냅샷(30)으로부터 스냅샷들을 획득하거나, 외부 전자 장치(예: 외부 서버 장치 또는 외부 메모리 장치)로부터 M개의 스냅샷들을 획득할 수 있다. 외부 전자 장치로부터 M개의 스냅샷들을 획득하는 과정에서, 통신 인터페이스(110)를 통해 수신된 M개의 스냅샷들을 상기 메모리(130)에 임시 저장된 후, 프로세서(150)의 처리가 적용될 수 있다.
303 단계에서, 상기 프로세서(150)는 Class X의 AST 페어를 생성할 수 있다. 이와 관련하여, 프로세서(150)는 이전 순서의 제1 스냅샷과 현재 순서의 제2 스냅샷 비교를 수행하면서, Java 파일의 페어를 생성하고, 클래스 페어의 AST 트리 추출 및 각 클래스 AST 트리들에 대한 페어링을 수행할 수 있다.
305 단계에서, 상기 프로세서(150)는 변경 사항을 식별할 수 있다. 페어링 이후 짝지어진 AST 페어(또는 Class X의 AST 페어)들을 상호 비교하여, 정보의 변경 사항 확인을 위한 식별 작업 예컨대 비교 작업을 수행할 수 있다. 307 단계에서, 상기 프로세서(150)는 식별 결과에서 변경 사항 예컨대, 수정, 삭제, 추가된 부분이 있는지 확인할 수 있다. 상기 프로세서(150)는 변경 사항들의 타입에 따라 특정 심볼(예: 수정-M, 삭제-D, 추가-A)을 할당하거나, 특정 색을 할당하거나, 또는 두 가지 분류 방법 모두를 적용할 수 있다.
변경 사항이 있는 경우, 상기 프로세서(150)는 309 단계에서 작업 단위 식별 및 출력을 수행할 수 있다. 이와 관련하여, 프로세서(150)는 사전에 마련된 알고리즘을 구동하여, Class의 각 작업들에 대한 수정, 삭제, 추가 부분을 식별할 수 있다. 식별된 정보들은 디스플레이(140)에 출력될 수 있다. 변경 사항이 없는 경우, 상기 프로세서(150)는 309 단계를 스킵할 수 있다.
다음으로, 상기 프로세서(150)는 상기 N번째 스냅샷이 마지막 스냅샷(last)인지 확인할 수 있다. 상기 N번째 스냅샷이 마지막 스냅샷인 경우, 상기 프로세서(150)는 프로그램 유지 보수와 관련한 루틴을 종료할 수 있다. 상기 N번째 스냅샷이 마지막 스냅샷이 아닌 경우, 상기 프로세서(150)는 313 단계에서 N 값을 1 증가(N에 N+1 값을 대입)시키고, 301 단계 이전으로 분기하여 이하 동작을 재수행할 수 있다.
도 4a는 본 발명의 실시 예에 따른 프로그램 유지 보수와 관련한 시스템 운용 환경의 한 예를 나타낸 도면이며, 도 4b는 도 4a의 작업 단위 식별 정보를 확대한 도면이다.
도 4a 및 도 4b를 참조하면, 본 발명의 프로그램 유지 보수와 관련하여, 컴퓨팅 장치(100)는 410 단계에서, Nth Snapshot 및 N-1th Snapshot을 획득할 수 있다. 이와 관련하여, 컴퓨팅 장치(100)의 메모리(130)는 특정 프로그램의 개발 과정에서 각 버전별 스냅샷들을 저장할 수 있다. 또는, 컴퓨팅 장치(100)는 통신 인터페이스(110)를 통하여 특정 프로그램의 개발 버전별 스냅샷들을 저장한 메모리 장치와 통신 채널을 형성하고, 상기 통신 채널을 통하여, 상기 메모리 장치로부터 상기 버전별 스냅샷들을 획득할 수 있다. 상기 메모리 장치는 상기 컴퓨팅 장치(100)와 유선 케이블 또는 무선 통신 채널을 통해 연결될 수 있다.
상기 각 버전별 프로그램들이 Java 언어로 작성된 것을 가정하면, 컴퓨팅 장치(100)는 420 단계에서 Class X의 AST 페어를 생성 및 페어들 간의 비교를 수행하여 코드 변경 사항에 대한 식별을 수행할 수 있다. 이를 보다 상세히 설명하면, 상기 컴퓨팅 장치(100)는 421 단계에서, 획득된 Nth Snapshot 및 N-1th Snapshot에 대해, 비교되는 자바 파일 셋트 페어(Set of Diff Java File pair)를 생성하고, 상기 생성된 자바 파일 페어로부터 클래스 페어들의 AST 트리(Class Pair`s AST Tree)를 추출한 후, 각 클래스 AST 트리 페어링(Each Class AST Tree pairing)을 수행할 수 있다. 즉, 컴퓨팅 장치(100)는 421 단계에서, Class X의 AST 페어 생성을 위해, 자바 파일 페어, 페어들의 AST 트리 추출 및 트리들의 페어링 수행을 수행할 수 있다. 상기 컴퓨팅 장치(100)는 421 단계에서 생성된 클래스 AST 트리 페어링에 대한 결과들을 423 단계에서, 페어별로 분류 및 메모리(130)에 임시 저장할 수 있다. 상기 컴퓨팅 장치(100)는 425 단계에서, 각 클래스 X의 AST 페어들에 대한 코드 변경 사항을 식별을 위하여, 페어들 간의 비교 작업을 수행할 수 있다.
다음으로, 상기 컴퓨팅 장치(100)는 430 단계에서, 페어들 간의 비교 작업에 대한 결과 즉, 변경 사항이 있는 AST 페어들의 변경 타입을 결정할 수 있다. 예컨대, 상기 컴퓨팅 장치(100)는 페어들 간의 비교 결과로서, 상기 AST 페어들을 특정 정보가 수정된 페어, 특정 정보가 삭제된 페어, 특정 정보가 추가된 페어들로 분류할 수 있다. 상기 정보가 수정된 페어는 N-1 번째 스냅샷에 있는 특정 정보가 N번째 스냅샷에서 다른 정보로 대체된 경우를 포함할 수 있다. 상기 정보가 삭제된 페어는 N-1 번째 스냅샷에 있는 특정 정보가 N번째 스냅샷에서 제거된 경우를 포함할 수 있다. 상기 정보가 추가된 페어는 N-1 번째 스냅샷에 없는 특정 정보가 N번째 스냅샷에 포함된 경우를 포함할 수 있다.
상기 컴퓨팅 장치(100)는 440 단계에서, 분류된 페어들에 대한 작업 단위 식별을 수행할 수 있다. 도 4b를 참조하면, 작업 단위 식별과 관련하여, 컴퓨팅 장치(100)는 알고리즘을 이용한 태스크들의 식별(Algorithm 1: Identifying Tasks)을 수행하되, 430 단계에서 분류한 AST 페어들에 대한 Task 식별을 수행할 수 있다.
작업 단위 식별을 완료한 후, 컴퓨팅 장치(100)는 450 단계에서, 각 작업별 분류 결과(예: 작업 1...작업n)를 디스플레이(140)에 출력할 수 있다. 상기 디스플레이(140)에 출력되는 작업별 분류 결과는 작업 단위 삭별 과정에서 검토된 수정, 삭제, 추가들에 대한 정보가 구분 및 시각화되어 표시될 수 있다. 예컨대, 디스플레이(140)에 출력되는 작업별 분류 결과는 색 또는 명암 등을 기반으로 수정, 삭제, 추가 사항들이 구별되어 표시될 수 있다. “삭제”의 경우, 삭제된 사항들에 대한 메모 정보로 표시될 수 도 있다.
상술한 본 발명의 실시 예들은 AST(Abstract Syntax Tree)를 활용한 Method Attribute 요소 중심의 개발 과정 시각화 방식을 사용하여 직관성을 높이며 별도의 System Build 없이도 정적분석을 활용한 방식으로 개발의 과정을 보여줌으로써 각 Version마다 어떠한 작업이 수행 되었는지를 보여줄 수 있다.
한편, 본 명세서와 도면에 개시된 실시 예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게는 자명한 것이다.
100: 컴퓨팅 장치
110: 통신 인터페이스
130: 메모리
140: 디스플레이
150: 프로세서
151: AST 페어 생성부
153: 비교부
155: 작업 식별부

Claims (10)

  1. M개의 스냅샷들을 포함한 소스 코드 히스토리를 저장하는 메모리;
    디스플레이;
    상기 메모리 및 상기 디스플레이와 기능적으로 연결되는 프로세서;를 포함하고,
    상기 프로세서는
    상기 메모리에 저장된 소스 코드 히스토리의 M개의 스냅샷들 중 n(n은 자연수)번째 스냅샷과 n-1번째 스냅샷에 대한 클래스 AST 페어링을 수행하고, 상기 페어링에 따른 AST 페어들 간의 비교를 수행하고,
    상기 비교 결과를 기반으로 변경 사항을 식별하고,
    상기 변경 사항을 작업 단위로 구분 및 시각화한 후, 상기 디스플레이에 출력하도록 설정되고,
    상기 프로세서는
    상기 변경 사항에 대한 확인을 통해 상기 AST 페어들의 변경 타입을 정보 수정, 정보 삭제, 정보 추가로 구분하도록 설정되되, 사전에 정의된 알고리즘을 이용하여 상기 AST 페어들 간의 수정, 삭제, 추가에 대한 검색 빌드를 수행하도록 설정되고, 상기 정보 수정, 정보 삭제, 정보 추가 중 적어도 하나를 색 또는 텍스트로 구분하여 상기 디스플레이에 출력하도록 설정된 것을 특징으로 하는 프로그램 유지 보수를 지원하는 컴퓨팅 장치.
  2. 제1항에 있어서,
    상기 프로세서는
    상기 n-1 번째 스냅샷과 상기 n번째 스냅샷들 간의 비교를 수행하여 Java 파일 페어를 생성하고, 상기 Java 파일 페어로부터 클래스 페어의 AST 트리를 추출한 후, 각 클래스 AST 트리에 대한 페어링을 수행하도록 설정된 것을 특징으로 하는 프로그램 유지 보수를 지원하는 컴퓨팅 장치.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 프로세서는
    상기 AST 페어의 변경 타입들에 대한 작업 단위 구분을 수행하는 과정에서 각 작업 단위들에 대한 수정, 삭제, 추가를 확인하고, 작업별로 수정, 삭제 또는 추가에 대해 구분 표시하도록 설정된 것을 특징으로 하는 프로그램 유지 보수를 지원하는 컴퓨팅 장치.
  6. 프로그램 유지 보수 방법에 있어서,
    메모리에 저장된 소스 코드 히스토리의 M개의 스냅샷들 중 n(n은 자연수)번째 스냅샷과 n-1번째 스냅샷을 획득하는 단계;
    상기 n번째 스냅샷과 n-1번째 스냅샷에 대한 클래스 AST 페어링을 수행하는 단계;
    상기 페어링에 따른 AST 페어들 간의 비교를 수행하는 단계;
    상기 비교 결과를 기반으로 변경 사항을 식별하는 단계;
    상기 변경 사항을 작업 단위로 구분 및 시각화한 후, 디스플레이에 출력하는 단계;를 포함하고,
    상기 식별하는 단계는
    상기 변경 사항에 대한 확인을 통해 상기 AST 페어들의 변경 타입을 정보 수정, 정보 삭제, 정보 추가로 구분하되, 사전에 정의된 알고리즘을 이용하여 상기 AST 페어들 간의 수정, 삭제, 추가에 대한 검색 빌드를 수행하는 단계;를 포함하고,
    상기 정보 수정, 정보 삭제, 정보 추가 중 적어도 하나를 색 또는 텍스트로 구분하여 상기 디스플레이 출력하는 단계;를 더 포함하는 것을 특징으로 하는 프로그램 유지 보수 방법.
  7. 제6항에 있어서,
    상기 AST 페어링을 수행하는 단계는
    상기 n-1 번째 스냅샷과 상기 n번째 스냅샷들 간의 비교를 수행하여 Java 파일 페어를 생성하는 단계;
    상기 Java 파일 페어로부터 클래스 페어의 AST 트리를 추출하는 단계;
    각 클래스 AST 트리에 대한 페어링을 수행하는 단계;를 포함하는 것을 특징으로 하는 프로그램 유지 보수 방법.
  8. 삭제
  9. 삭제
  10. 제6항에 있어서,
    상기 출력하는 단계는
    상기 AST 페어의 변경 타입들에 대한 작업 단위 구분을 수행하는 과정에서 각 작업 단위들에 대한 수정, 삭제, 추가를 확인하고, 작업별로 수정, 삭제 또는 추가에 대해 구분 표시하는 단계;를 포함하는 것을 특징으로 하는 프로그램 유지 보수 방법.
KR1020200153987A 2020-11-17 2020-11-17 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치 KR102422972B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200153987A KR102422972B1 (ko) 2020-11-17 2020-11-17 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200153987A KR102422972B1 (ko) 2020-11-17 2020-11-17 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치

Publications (2)

Publication Number Publication Date
KR20220067366A KR20220067366A (ko) 2022-05-24
KR102422972B1 true KR102422972B1 (ko) 2022-07-19

Family

ID=81805558

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200153987A KR102422972B1 (ko) 2020-11-17 2020-11-17 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치

Country Status (1)

Country Link
KR (1) KR102422972B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019160284A (ja) * 2018-03-08 2019-09-19 富士通株式会社 抽象コードグラフを用いたソフトウェアの表現

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000039608A (ko) * 1998-12-15 2000-07-05 이계철 추상구문 표기법을 이용한 프로토콜 형성 방법 및 장치
KR20050065015A (ko) * 2003-12-24 2005-06-29 (주) 뉴스텍시스템즈 프로그램의 복제 여부를 검사하는 방법 및 시스템
KR100777103B1 (ko) * 2005-08-19 2007-11-19 한국전자통신연구원 테스트 드라이버 생성 장치 및 방법
KR20200080704A (ko) 2018-12-27 2020-07-07 주식회사넥싸이트 컴퓨터 시스템의 진단코드를 히스토리모드로 표시하는 디버그 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019160284A (ja) * 2018-03-08 2019-09-19 富士通株式会社 抽象コードグラフを用いたソフトウェアの表現

Also Published As

Publication number Publication date
KR20220067366A (ko) 2022-05-24

Similar Documents

Publication Publication Date Title
US10354225B2 (en) Method and system for process automation in computing
US9298453B2 (en) Source code analytics platform using program analysis and information retrieval
US9262132B1 (en) Incremental local source code analysis
US20120117545A1 (en) Efficiently developing software using test cases to check the conformity of the software to the requirements
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
US9798650B1 (en) Application testing system and method
US9424116B2 (en) Program development in a distributed server environment
EP3314409B1 (en) Tracing dependencies between development artifacts in a software development project
US10678864B2 (en) Analysis model preparing system, programming apparatus, and analysis model preparing method
JP6866270B2 (ja) Sql文抽出装置、sql文抽出方法及びプログラム
JP2013152730A (ja) プラズマ処理システムコンポーネント解析ソフトウェアおよびそのプラズマ処理システムコンポーネント解析ソフトウェアを製作するための方法およびシステム
KR102422972B1 (ko) 프로그램 유지 보수 방법 및 이를 지원하는 컴퓨팅 장치
US20220206934A1 (en) Test apparatus, test method and program
US10310958B2 (en) Recording medium recording analysis program, analysis method, and analysis apparatus
JP5758311B2 (ja) テストコード生成装置、テストコード生成方法、テストコード生成プログラム
US10339032B2 (en) System for monitoring and reporting performance and correctness issues across design, compile and runtime
JP6551082B2 (ja) テスト支援装置、テスト支援方法およびテスト支援プログラム
CN114356783A (zh) 单元测试代码自动生成方法、装置、存储介质及设备
Muhamad et al. Visual GUI testing in continuous integration environment
JP4983027B2 (ja) チェックプログラム及びチェック方法
Gerdes Developing applications to automatically grade introductory visual basic courses
Khanam et al. Aspectual Analysis of Legacy Systems: Code Smells and Transformations in C
JP6866169B2 (ja) データベースシステム及びデータベース操作用プログラム
JP2017054453A (ja) 解析プログラム、解析方法および解析装置
US20150220310A1 (en) Object field optimization

Legal Events

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