KR102018039B1 - 다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법 및 그 장치 - Google Patents

다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법 및 그 장치 Download PDF

Info

Publication number
KR102018039B1
KR102018039B1 KR1020170151525A KR20170151525A KR102018039B1 KR 102018039 B1 KR102018039 B1 KR 102018039B1 KR 1020170151525 A KR1020170151525 A KR 1020170151525A KR 20170151525 A KR20170151525 A KR 20170151525A KR 102018039 B1 KR102018039 B1 KR 102018039B1
Authority
KR
South Korea
Prior art keywords
code
change
flow graph
tracking
changes
Prior art date
Application number
KR1020170151525A
Other languages
English (en)
Other versions
KR20190054676A (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 KR1020170151525A priority Critical patent/KR102018039B1/ko
Priority to EP18206246.3A priority patent/EP3483725B1/en
Priority to US16/190,888 priority patent/US10817286B2/en
Priority to ES18206246T priority patent/ES2959942T3/es
Publication of KR20190054676A publication Critical patent/KR20190054676A/ko
Application granted granted Critical
Publication of KR102018039B1 publication Critical patent/KR102018039B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Document Processing Apparatus (AREA)

Abstract

본 발명은 다수의 프로젝트간 코드 변경 추적 및 관리방법 및 그 장치에 관한 것이다.
본 발명의 일실시예에 따른 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리장치는 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프를 생성하고, 생성된 프로젝트 별 기능 흐름 그라프를 비교하고, 비교에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하는 코드관리부; 주석 처리된 부가정보인 요구사항 및 변경요청 ID에 대한 정보를 코드관리부로 제공하고, 코드관리부로부터 변경추적결과를 전송받아 관리하는 변경관리부; 및 코드관리부로부터 변경추적결과를 수신하여 화면에 표시하는 디스플레이 수단;을 포함하여 구성되는 것을 특징으로 한다.

Description

다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법 및 그 장치{Apparatus and Method for tracking and managing code change among multiple projects}
본 발명은 소프트웨어 변경 추적 및 관리에 관한 것으로, 더욱 상세하게는 여러 프로젝트에 반영되어야할 변경 사항을 효과적으로 추적하기 위한 다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법 및 그 장치에 관한 것이다.
정지궤도 복합위성 2A호와 2B호는 거의 동일한 구조로 구성되며, 탑재체만 다른 형태로 개발되고 있다. 위성에 탑재되는 소프트웨어 역시 거의 유사하나, 각 위성의 특성에 따른 몇몇 부분에 대해 차이점이 존재한다.
위성의 개발 과정에서 두 프로젝트는 유사한 코드 베이스를 가지나, 개발이 어느 정도 이루어진 상태에서는 각각 독립적으로 코드를 유지, 관리하게 되는 것이 일반적이다.
위성의 운영 개념 수정이나 추가 요구 사항 등에 따라 코드가 변경되어야 할 경우, 관련 내용을 두 프로젝트에 모두 반영해야 경우가 많은데, 개발 및 검증 과정에 따라 실제 반영은 동시에 이루어지지 않는 경우가 많다.
일반적으로 코드의 변경 및 수정사항은 상용의 Diff 툴을 이용하게 되는데, 서로 다른 프로젝트의 코드를 비교할 경우, 구조적, 기능적으로는 동일한 경우에도 프로젝트 이름 등 비 기능적 차이로 인하여 두 코드는 서로 다르게 판별될 수 있다.
따라서 이러한 코드의 물리적 차이를 이용하여 코드 변경을 관리할 경우, 코드 베이스가 유사한 다수의 프로젝트를 동시에 진행 할 때라도 개발자가 다수의 프로젝트에 걸친 변경 사항을 효과적으로 추적하기가 어렵다.
따라서 코드의 구조 분석을 통해, 단순한 물리적 차이가 아닌 처리의 흐름을 분석하여, 프로젝트 간 코드의 유사도 및 변경 사항을 추적 관리함으로써, 동시 진행하는 다수의 프로젝트 간 코드 변경 사항을 효과적으로 추적, 관리할 수 있는 기술개발이 필요하다.
US 20080263504 A(Using code analysis for requirements management)
본 발명은 상기한 문제점을 해결하기 위해 안출된 것으로서, 코드의 구조 분석을 통해, 단순한 물리적 차이가 아닌 처리의 흐름을 분석하여, 프로젝트 간 코드의 유사도 및 변경 사항을 추적 관리함으로써, 동시 진행하는 다수의 프로젝트 간 코드 변경 사항을 효과적으로 추적, 관리할 수 있는 다수의 프로젝트간 코드 변경 추적 및 관리방법 및 그 장치를 제공하는 것을 그 목적으로 한다.
그러나 본 발명의 목적은 상기에 언급된 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일실시예에 따른 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리장치는 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프를 생성하고, 생성된 프로젝트 별 기능 흐름 그라프를 비교하고, 비교에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하는 코드관리부; 주석 처리된 부가정보인 요구사항 및 변경요청 ID에 대한 정보를 코드관리부로 제공하고, 코드관리부로부터 변경추적결과를 전송받아 관리하는 변경관리부; 및 코드관리부로부터 변경추적결과를 수신하여 화면에 표시하는 디스플레이 수단;을 포함하여 구성되는 것을 특징으로 한다.
바람직하게는, 상기 코드관리부는 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프를 생성하는 Flow Graph 생성기; 생성된 프로젝트 별 Flow Graph를 비교하는 Flow Graph 비교기; 및 상기 Flow Graph 비교기를 통해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하는 변경사항 추적기;를 포함하여 구성되는 것을 특징으로 한다.
바람직하게는, 상기 변경사항 추적기는 변경관리부로부터 주석 처리된 부가정보인 요구사항 및 변경요청 ID에 대한 정보를 수신하고, 변경추적결과를 변경관리부로 전송하고, 변경추적결과를 디스플레이 수단에 전송하는 것을 특징으로 한다.
바람직하게는, 상기 코드관리부는 주석 처리된 부가 정보에 특정 문자들이 삽입되어, 개발자가 의도한 변경 및 차이에 대해서는 Flow Graph 비교기가 프로젝트 코드 간 차이점으로 인식하지 못하도록 하는 것을 특징으로 한다.
바람직하게는, 상기 Flow Graph 생성기는 기능 흐름 그라프를 프로젝트 코드 별로 생성하고, 코드들 간의 물리적인 차이가 아닌 코드의 기능적 흐름에 기초하여 기능 흐름 그라프를 생성하여 프로젝트간 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 하는 것을 특징으로 한다.
본 발명의 다른 일실시예에 따른 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리를 위한 코드관리장치는 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프를 생성하는 Flow Graph 생성기; 생성된 프로젝트 별 Flow Graph를 비교하는 Flow Graph 비교기; 및 상기 Flow Graph 비교기를 통해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하고, 변경추적결과를 변경관리부로 전송하거나 디스플레이 수단에 전송하는 변경사항 추적기;를 포함하여 구성되는 것을 특징으로 한다.
바람직하게는, 상기 코드관리장치는 주석 처리된 부가 정보에 특정 문자들이 삽입되어, 개발자가 의도한 변경 및 차이에 대해서는 Flow Graph 비교기가 프로젝트 코드 간 차이점으로 인식하지 못하도록 하는 것을 특징으로 한다.
바람직하게는, 상기 Flow Graph 생성기는 기능 흐름 그라프를 프로젝트 코드 별로 생성하고, 코드들 간의 물리적인 차이가 아닌 코드의 기능적 흐름에 기초하여 기능 흐름 그라프를 생성하여 프로젝트간 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 하는 것을 특징으로 한다.
본 발명의 다른 일실시예에 따른 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리방법은 코드관리부가 변경관리부로부터 프로젝트 코드에 주석 처리된 부가 정보에 있는 요구사항 및 변경요청 ID에 대한 정보를 수신하는 변경 사항 정보 수신 단계; 코드관리부에 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프를 생성하는 기능 흐름 그라프 생성 단계; 생성된 프로젝트 별 기능 흐름 그라프를 비교하여 차이점 및 변경사항을 도출하는 기능 흐름 그라프 비교 단계; 상기 비교 단계에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하는 변경 사항 추적 단계; 및 생성된 변경추적결과를 수신하여 화면에 표시하는 변경추적결과 표시 단계;를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 변경 사항 추적 단계는 변경관리부가 코드관리부로부터 변경추적결과를 전송받아 관리하는 단계를 더 포함하는 것을 특징으로 한다.
바람직하게는, 상기 기능 흐름 그라프 비교 단계는 주석 처리된 부가 정보에 특정 문자들이 삽입되어, 개발자가 의도한 변경 및 차이에 대해서는 Flow Graph 비교기가 프로젝트 코드 간 차이점으로 인식하지 못하도록 하는 것을 특징으로 한다.
바람직하게는, 상기 기능 흐름 그라프 생성 단계는 기능 흐름 그라프를 프로젝트 코드 별로 생성하고, 코드들 간의 물리적인 차이가 아닌 코드의 기능적 흐름에 기초하여 기능 흐름 그라프를 생성하여 프로젝트간 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 하는 것을 특징으로 한다.
본 발명의 다른 일실시예에 따른 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리를 위한 코드관리방법은, 코드관리부에 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프를 생성하는 기능 흐름 그라프 생성 단계; 생성된 프로젝트 별 기능 흐름 그라프를 비교하여 차이점 및 변경사항을 도출하는 기능 흐름 그라프 비교 단계; 및 상기 비교 단계에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하고, 변경추적결과를 변경관리부로 전송하거나 디스플레이 수단에 전송하는 변경 사항 추적 단계;를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 기능 흐름 그라프 비교 단계는 주석 처리된 부가 정보에 특정 문자들이 삽입되어, 개발자가 의도한 변경 및 차이에 대해서는 Flow Graph 비교기가 프로젝트 코드 간 차이점으로 인식하지 못하도록 하는 것을 특징으로 한다.
바람직하게는, 상기 기능 흐름 그라프 생성 단계는 기능 흐름 그라프를 프로젝트 코드 별로 생성하고, 코드들 간의 물리적인 차이가 아닌 코드의 기능적 흐름에 기초하여 기능 흐름 그라프를 생성하여 프로젝트간 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 하는 것을 특징으로 한다.
본 발명의 다른 일실시예에 따른 컴퓨터로 판독 가능한 기록매체는 코드의 변경사항 추적 및 관리방법을 실행하는 프로그램을 기록한 것을 특징으로 한다.
이상에서 설명한 바와 같이, 본 발명은 동일 또는 유사한 코드 베이스를 갖는 유사 프로젝트의 코드에 대한 변경 사항을 보다 용이하게 추적할 수 있으며, 요구되는 변경 사항이 개별 프로젝트에 적용되었는지를 효과적으로 관리할 수 있다.
본 발명은 물리적인 차이가 아닌 기능적 흐름에 초점을 두고, Flow Graph를 생성하여 두 프로젝트를 비교하여 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있는 효과가 있다.
또한, Annotation (부가정보)을 이용하여, 차이점이 있더라도 무시할 수 있도록 하는 기능을 통해, 개발자가 의도한 변경 및 차이에 대해서는 더 이상 레포트 하지 않도록 할 수 있는 효과가 있다.
더불어 Annotation에 변경의 원인 및 설명, 또는 변경 요청 ID등을 기록하고, 이를 요구사항 관리 시스템 및 이슈 트래킹 시스템과 연동하면 보다 효과적으로 변경 사항을 추적, 관리할 수 있는 효과가 있다.
도 1은 본 발명의 일실시예에 따른 다수의 프로젝트에 대한 코드의 변경 추적 및 관리장치를 도시한 것이다.
도 2는 변경 추적을 위한 코드 구성의 예를 나타낸다.
도 3은 본 발명의 다른 실시예에 따른 다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법을 도시한 것이다.
도 4는 본 발명의 다른 실시예에 따른 다수의 프로젝트에 대한 코드의 변경 추적 및 관리를 위한 코드관리방법을 도시한 것이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성된다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 발명의 일실시예에 따른 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리장치는 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프(Flow Graph)를 생성하고, 생성된 프로젝트 별 기능 흐름 그라프를 비교하고, 비교에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하는 코드관리부; 주석 처리된 부가정보인 요구사항 및 변경요청 ID에 대한 정보를 코드관리부로 제공하고, 코드관리부로부터 변경추적결과를 전송받아 관리하는 변경관리부; 및 코드관리부로부터 변경추적결과를 수신하여 화면에 표시하는 디스플레이 수단;을 포함하여 구성될 수 있다.
본 발명의 다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법은 물리적인 차이가 아닌 기능적 흐름에 초점을 두고, 기능 흐름 그라프(Flow Graph)를 생성하여 두 프로젝트를 비교하여 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적한다. 또한, Annotation (부가정보)을 이용하여, 프로젝트 간 차이점이 있더라도 무시할 수 있도록 하는 기능을 통해, 개발자가 의도한 변경 및 차이에 대해서는 더 이상 레포트 하지 않도록 할 수 있다. 또한 Annotation에 변경의 원인 및 설명, 또는 변경 요청 ID등을 기록하고, 이를 요구사항 관리 시스템 및 이슈 트래킹 시스템과 연동하여 보다 효과적으로 변경 사항을 추적, 관리할 수 있다.
도 1은 본 발명의 일실시예에 따른 다수의 프로젝트에 대한 코드의 변경 추적 및 관리장치를 도시한 것이다. 도 2는 변경 추적을 위한 코드 구성의 예를 나타낸다.
도 1에서와 같이 본 발명의 코드 변경 추적 및 관리장치(1000)는 프로젝트 코드로 부터 변경 사항을 추출해내는 코드 관리부(100)와 요구사항 및 변경사항을 관리하는 변경 관리부(200)로 구성된다.
코드 관리부(100)는 Flow Graph 생성기(110), Flow Graph 비교기(120) 및 변경사항 추적기(130)를 포함하여 구성된다. 코드 관리부(100)는 필요에 따라 코드관리장치로 명명될 수 있다.
Flow Graph 생성기(110)는 프로젝트(Project 1(400_1), Project 2(400_2)) 코드를 입력 받아, 코드의 구조적 기능 흐름 및 Annotation(부가정보)을 분석하여 기능 흐름 그라프(Flow Graph)를 프로젝트 코드 별로 생성한다. Annotation은 프로젝트 코드에 주석 처리된 부가 정보를 의미한다. 기능 흐름 그라프 생성을 위해 프로젝트 코드의 Annotation에는 사전에 변경의 원인 및 설명, 또는 변경 요청 ID 등이 기록되어 있는 것을 전제로 한다. 코드들 간의 물리적인 차이가 아닌 코드의 기능적 흐름에 초점을 두고, Flow Graph를 생성하여 두 프로젝트 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 한다. 또한, Annotation (부가정보)을 이용하여, 프로젝트 간 차이점이 있더라도 무시할 수 있도록 도 2에서 보듯이 Annotation (부가정보)에 특정 문자((@SUP_MDIFF)들을 삽입하여, 개발자가 의도한 변경 및 차이에 대해서는 더 이상 레포트 하지 않도록 한다.
Flow Graph 비교기(120)는 Flow Graph 생성기(110)가 생성한 프로젝트 별 기능 흐름 그라프(Flow Graph)를 서로 비교하여 차이점 및 변경사항을 도출한다.
변경사항추적기(130)는 Flow Graph 비교기(120)를 통해 도출된 차이점 및 변경 사항을 Annotation에 기록된 정보 등을 바탕으로 변경 관리부(200)와 연동되어 변경 사항을 추적한다. 이를 위해 변경관리부(200)로부터 Annotation(부가정보, 주석) 되어 있는 요구사항 및 변경요청 ID에 대한 정보를 수신하고, 변경추적결과를 생성하고, 변경추적결과를 변경관리부(200)로 전송한다. 또한 변경사항추적기(130)는 생성된 변경추적결과를 디스플레이 수단(300)으로 전송한다.
디스플레이 수단(300)은 전송된 변경추적결과를 화면에 표시한다.
변경관리부(200)는 요구사항 관리시스템(210) 및 이슈 트래킹 시스템(220)을 포함하여 구성되는데, Annotation(부가정보, 주석) 되어 있는 요구사항 및 변경요청 ID에 대한 정보를 변경사항추적기(130)로 제공하고, 변경사항추적기(130)로부터 변경 사항을 전송받아 취합, 관리한다.
요구 사항은 소프트웨어 개발과 관련하여 해당 소프트웨어가 제공해야 하는 서비스와 소프트웨어를 동작하기 위해 또는 소프트웨어가 동작하는 가운데 필요한 제약조건 등을 의미하며, 기타 소프트웨어 개발과 관련된 각종 요구 사항을 포함할 수 있다.
Annotation(부가 정보)은 변경사항 또는 요구 사항을 식별 할 수 있는 정보 등을 포함할 수 있으며, 변경사항 또는 요구 사항과 관련된 정보를 의미한다. 그리고 부가 정보는 소스 코드의 컴파일 또는 실행 시에 영향을 미치지 않기 위해 소스 코드 내의 주석 부분에 존재할 수 있으며, 개발 환경, 개발 언어, 전처리기, 컴파일러 등에 따라 다양한 방식으로 표현될 수 있다.
요구사항 관리시스템(210)은 소스 코드 내의 주석 부분에 존재하는 요구사항과 관련된 부가 정보를 해석하여 상기 소스 코드와 요구 사항 사이의 관계를 파악하는 전처리부, 그리고 상기 소스 코드와 상기 요구 사항 사이의 관계를 기초로 상기 요구 사항이 상기 소스 코드에 반영된 현황을 분석하는 요구 사항 관리부를 포함하여 구성된다.
이슈 트래킹 시스템(220)은 Annotation(부가정보, 주석) 되어 있는 요구사항 및 변경요청 ID에 대한 정보를 변경사항추적기(130)로 제공하고, 변경사항추적기(130)로부터 변경 사항을 전송받아 취합, 관리할 수 있다. 또한 이슈 트래킹 시스템(220)은 요구사항 관리시스템으로 요구사항에 대한 정보를 요청하여 수신받고, 변경사항추적기로 요구사항을 제공하거나, 이슈 트래킹 시스템(220)은 변경요청 ID에 대한 정보만 변경사항추적기로 제공하고, 요구사항에 대한 정보는 요구사항 관리 시스템(210)이 변경사항추적기(130)로 직접 제공할 수도 있으며, 이는 통상의 기술자에게 설계선택사항이다.
도 2의 변경 추적을 위한 코드 구성의 예에서 보듯이, Project 1과 Project 2의 method1의 경우, 첫번째 if 문은 Change Request (CR) 123번에 의한 것임을 Annotation으로 표시하였다. Annotation 하는 방법은 사용하는 언어에 따라 또는 개발자의 취향에 따라 다른 형식을 취할 수 있는데, C 언어에서는 /* ~ */와 같은 형식으로 주석 부분이 이루어져 있다. CR 123에 대한 Annotation은 첫번째 if 문이 수행하는 기능과 관련된 변경 사항을 나타내며, 첫번째 if 문의 위 또는 아래에 추가되는 방법을 통해 첫번째 if 문과 연계하여 표시될 수 있는데, 본 실시예에서는 부가정보가 해당 기능 모듈(가령, 첫번째 if 문)의 위에 추가되는 방법을 가정하여 설명한다. 기능 모듈이란 독립적인 기능을 수행하는 하나의 단위로서, 함수, 클래스 등을 예로 들 수 있다.
Project 1의 코드에는 CR 125번에 따른 두번째 if 문이 존재하나, Project 2에는 해당 부분이 빠져있다. CR 125번이 Project 1에만 연관된 Change Request 라면, 도 2에서와 같이 @SUP_MDIFF 등 프로젝트간 코드 변경 비교 시, 변경 사항을 검사하지 않도록 부가정보를 추가할 수 있다. Annotation (부가정보)을 이용하여, 프로젝트 간 차이점이 있더라도 무시할 수 있도록 하는 기능을 통해, 개발자가 의도한 변경 및 차이에 대해서는 더 이상 레포트 하지 않도록 할 수 있게 된다. 만약 이 같은 정보(@SUP_MDIFF)를 추가하지 않으면 Project 2가 CR 125를 반영하지 않았음을 변경사항추적기가 디스플레이 수단을 통해 표시하게 된다.
도 3은 본 발명의 다른 실시예에 따른 다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법을 도시한 것이다.
도 3에서 보듯이, 본 발명에 따른 코드 변경 추적 및 관리방법은 변경 사항 정보 수신 단계(S100), 기능 흐름 그라프 생성 단계(S200), 기능 흐름 그라프 비교 단계(S300), 변경사항 추적 단계(S400) 및 변경추적결과 표시단계(S500)를 포함하여 구성될 수 있다.
본 발명의 다른 일실시예에 따른 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리방법은 코드관리부가 변경관리부로부터 프로젝트 코드에 주석 처리된 부가 정보에 있는 요구사항 및 변경요청 ID에 대한 정보를 수신하는 변경 사항 정보 수신 단계(S100); 코드관리부에 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프를 생성하는 기능 흐름 그라프 생성 단계(S200); 생성된 프로젝트 별 기능 흐름 그라프를 비교하여 차이점 및 변경사항을 도출하는 기능 흐름 그라프 비교 단계(S300); 상기 비교 단계에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하는 변경 사항 추적 단계(S400); 및 생성된 변경추적결과를 수신하여 화면에 표시하는 변경추적결과 표시 단계(S500);를 포함할 수 있다.
이하에서 각 구성 단계를 구체적으로 설명한다.
변경 사항 정보 수신 단계(S100)에서는 변경사항추적기(130)가 변경관리부(200)로부터 프로젝트 코드에 Annotation(부가정보, 주석) 되어 있는 요구사항 및 변경요청 ID에 대한 정보를 수신한다. 상기 Annotation에는 사전에 변경의 원인 및 설명, 또는 변경 요청 ID 등이 기록되어 있는 것을 전제로 한다. Annotation은 프로젝트 코드에 주석 처리된 부가 정보를 의미한다.
기능 흐름 그라프 생성 단계(S200)에서는 Flow Graph 생성기(110)는 프로젝트(Project 1, Project 2) 코드를 입력 받아, 코드의 구조적 기능 흐름 및 Annotation(부가정보)을 분석하여 기능 흐름 그라프(Flow Graph)를 프로젝트 코드 별로 생성한다. 코드들 간의 코드의 기능적 흐름에 기초하여 기능 흐름 그라프(Flow Graph)를 생성하여 두 프로젝트 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 한다. 또한, Annotation (부가정보)을 이용하여, 프로젝트 간 차이점이 있더라도 무시할 수 있도록 Annotation (부가정보)에 특정 문자((@SUP_MDIFF)들을 삽입하여, 개발자가 의도한 변경 및 차이에 대해서는 더 이상 레포트 하지 않도록 한다.
기능 흐름 그라프 비교 단계(S300)에서는 Flow Graph 비교기(120)가 Flow Graph 생성기(110)가 생성한 프로젝트 별 기능 흐름 그라프(Flow Graph)를 서로 비교하여 차이점 및 변경사항을 도출한다.
변경 사항 추적 단계(S400)에서는 변경사항추적기(130)가 Flow Graph 비교기(120)를 통해 도출된 차이점 및 변경 사항을 Annotation에 기록된 정보 등을 바탕으로 변경 관리부(200)와 연동되어 변경 사항을 추적한다. 이를 위해 변경관리부(200)로부터 Annotation(부가정보, 주석) 되어 있는 요구사항 및 변경요청 ID에 대한 정보를 수신하고, 변경추적결과를 생성하고, 변경추적결과를 변경관리부(200)로 전송한다.
변경관리부(200)는 변경사항추적기(130)로부터 변경추적결과를 전송받아 취합하여 관리한다.
변경추적결과 표시 단계(S500)에서는 변경사항추적기(130)가 생성된 변경추적결과를 디스플레이 수단(300)으로 전송하고, 디스플레이 수단(300)은 전송된 변경추적결과를 화면에 표시한다.
도 4는 본 발명의 다른 실시예에 따른 다수의 프로젝트에 대한 코드의 변경 추적 및 관리를 위한 코드관리방법을 도시한 것이다.
도 4에서 보듯이, 본 발명에 따른 코드 변경 추적 및 관리를 위한 코드관리방법은 기능 흐름 그라프 생성 단계(S1100), 기능 흐름 그라프 비교 단계(S1200), 및 변경사항 추적 단계(S1300)를 포함하여 구성될 수 있다. 본 발명의 다른 일실시예에 따른 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리를 위한 코드관리방법은, 코드관리부에 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프를 생성하는 기능 흐름 그라프 생성 단계(S1100); 생성된 프로젝트 별 기능 흐름 그라프를 비교하여 차이점 및 변경사항을 도출하는 기능 흐름 그라프 비교 단계(S1200); 및 상기 비교 단계에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하고, 변경추적결과를 변경관리부로 전송하거나 디스플레이 수단에 전송하는 변경 사항 추적 단계(S1300);를 포함할 수 있다.
상기 기능 흐름 그라프 생성 단계(S1100)는 기능 흐름 그라프를 프로젝트 코드 별로 생성하고, 코드들 간의 물리적인 차이가 아닌 코드의 기능적 흐름에 기초하여 기능 흐름 그라프를 생성하여 프로젝트간 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 한다.
상기 기능 흐름 그라프 비교 단계(S1200)는 주석 처리된 부가 정보에 특정 문자들이 삽입되어, 개발자가 의도한 변경 및 차이에 대해서는 Flow Graph 비교기가 프로젝트 코드 간 차이점으로 인식하지 못하도록 한다.
한편, 본 발명의 실시예에 따른 코드 변경 추적 및 관리방법은 다양한 전자적으로 정보를 처리하는 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 저장 매체에 기록될 수 있다. 저장 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
저장 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 소프트웨어 분야 당업자에게 공지되어 사용 가능한 것일 수도 있다. 저장 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 전자적으로 정보를 처리하는 장치, 예를 들어, 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (16)

  1. 동일 또는 유사한 코드 베이스를 갖는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리장치에 있어서,
    입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프(Flow Graph)를 생성하는 Flow Graph 생성기와, 생성된 다수의 프로젝트 코드 별 기능 흐름 그라프를 비교하는 Flow Graph 비교기와, 상기 Flow Graph 비교기를 통해 비교에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하는 변경사항 추적기를 포함하는 코드관리부;
    주석 처리된 부가정보인 요구사항 및 변경요청 ID에 대한 정보를 코드관리부로 제공하고, 코드관리부로부터 변경추적결과를 전송받아 관리하는 변경관리부; 및
    코드관리부로부터 변경추적결과를 수신하여 화면에 표시하는 디스플레이 수단;을 포함하여 구성되며,
    상기 Flow Graph 생성기는
    주석 처리된 부가정보에 특정 문자들을 삽입하여, 개발자가 의도한 변경 및 차이에 대해서는 상기 Flow Graph 비교기에서 프로젝트 코드 간 차이점 및 변경사항으로 인식하지 못하도록 하는 것을 특징으로 하는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 변경사항 추적기는
    변경관리부로부터 주석 처리된 부가정보인 요구사항 및 변경요청 ID에 대한 정보를 수신하고, 변경추적결과를 변경관리부로 전송하고, 변경추적결과를 디스플레이 수단에 전송하는 것을 특징으로 하는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리장치.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 Flow Graph 생성기는
    기능 흐름 그라프를 프로젝트 코드 별로 생성하고, 코드들 간의 물리적인 차이가 아닌 코드의 기능적 흐름에 기초하여 기능 흐름 그라프를 생성하여 프로젝트간 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 하는 것을 특징으로 하는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리장치.
  6. 동일 또는 유사한 코드 베이스를 갖는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리를 위한 코드관리장치에 있어서,
    입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프(Flow Graph)를 생성하는 Flow Graph 생성기;
    생성된 다수의 프로젝트 코드 별 기능 흐름 그라프를 비교하는 Flow Graph 비교기; 및
    상기 Flow Graph 비교기를 통해 비교에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하고, 변경추적결과를 변경관리부로 전송하거나 디스플레이 수단에 전송하는 변경사항 추적기;
    를 포함하여 구성되며,
    상기 Flow Graph 생성기는
    주석 처리된 부가정보에 특정 문자들을 삽입하여, 개발자가 의도한 변경 및 차이에 대해서는 상기 Flow Graph 비교기에서 프로젝트 코드 간 차이점 및 변경사항으로 인식하지 못하도록 하는 것을 특징으로 하는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리를 위한 코드관리장치.
  7. 삭제
  8. 제 6 항에 있어서,
    상기 Flow Graph 생성기는
    기능 흐름 그라프를 프로젝트 코드 별로 생성하고, 코드들 간의 물리적인 차이가 아닌 코드의 기능적 흐름에 기초하여 기능 흐름 그라프를 생성하여 프로젝트간 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 하는 것을 특징으로 하는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리를 위한 코드관리장치.
  9. 동일 또는 유사한 코드 베이스를 갖는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리방법에 있어서,
    코드관리부가 변경관리부로부터 프로젝트 코드에 주석 처리된 부가 정보에 있는 요구사항 및 변경요청 ID에 대한 정보를 수신하는 변경 사항 정보 수신 단계;
    코드관리부에 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프(Flow Graph)를 생성하되, 주석 처리된 부가정보에 특정 문자들을 삽입하는 기능 흐름 그라프 생성 단계;
    생성된 프로젝트 코드 별 기능 흐름 그라프를 비교하여 차이점 및 변경사항을 도출하되, 특정 문자들이 삽입된 주석 처리된 부가정보를 이용하여 개발자가 의도한 변경 및 차이에 대해서는 프로젝트 코드 간 차이점으로 인식하지 않는 기능 흐름 그라프 비교 단계;
    상기 비교 단계에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하는 변경 사항 추적 단계; 및
    생성된 변경추적결과를 수신하여 화면에 표시하는 변경추적결과 표시 단계;
    를 포함하는 것을 특징으로 하는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리방법.
  10. 제 9 항에 있어서,
    상기 변경 사항 추적 단계는 변경관리부가 코드관리부로부터 변경추적결과를 전송받아 관리하는 단계를 더 포함하는 것을 특징으로 하는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리방법.
  11. 삭제
  12. 제 9 항에 있어서,
    상기 기능 흐름 그라프 생성 단계는
    기능 흐름 그라프를 프로젝트 코드 별로 생성하고, 코드들 간의 물리적인 차이가 아닌 코드의 기능적 흐름에 기초하여 기능 흐름 그라프를 생성하여 프로젝트간 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 하는 것을 특징으로 하는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리방법.
  13. 동일 또는 유사한 코드 베이스를 갖는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리를 위한 코드관리방법에 있어서,
    코드관리부에 입력된 프로젝트 코드로부터 구조적 기능 흐름 및 주석 처리된 부가정보를 분석하여 기능 흐름 그라프(Flow Graph)를 생성하되, 주석 처리된 부가정보에 특정 문자들을 삽입하는 기능 흐름 그라프 생성 단계;
    생성된 프로젝트 코드 별 기능 흐름 그라프를 비교하여 차이점 및 변경사항을 도출하되, 특정 문자들이 삽입된 주석 처리된 부가정보를 이용하여 개발자가 의도한 변경 및 차이에 대해서는 프로젝트 코드 간 차이점으로 인식하지 않는 기능 흐름 그라프 비교 단계; 및
    상기 비교 단계에 의해 도출된 차이점 및 변경 사항을 주석 처리된 부가정보에 기록된 정보에 기초하여 변경 사항을 추적하여 변경추적결과를 생성하고, 변경추적결과를 변경관리부로 전송하거나 디스플레이 수단에 전송하는 변경 사항 추적 단계;
    를 포함하는 것을 특징으로 하는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리를 위한 코드관리방법.
  14. 삭제
  15. 제 13 항에 있어서,
    상기 기능 흐름 그라프 생성 단계는
    기능 흐름 그라프를 프로젝트 코드 별로 생성하고, 코드들 간의 물리적인 차이가 아닌 코드의 기능적 흐름에 기초하여 기능 흐름 그라프를 생성하여 프로젝트간 비교시 비 기능적 차이에 의한 효과를 배제하면서, 코드의 변경을 추적할 수 있도록 하는 것을 특징으로 하는 다수의 프로젝트에 대한 코드의 변경사항 추적 및 관리를 위한 코드관리방법.
  16. 제 9 항, 제 10 항, 제 12 항, 제 13 항 및 제 15 항 중 어느 한 항의 방법을 실행하는 프로그램을 기록한 것을 특징으로 하는 컴퓨터로 판독 가능한 기록매체.
KR1020170151525A 2017-11-14 2017-11-14 다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법 및 그 장치 KR102018039B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020170151525A KR102018039B1 (ko) 2017-11-14 2017-11-14 다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법 및 그 장치
EP18206246.3A EP3483725B1 (en) 2017-11-14 2018-11-14 Apparatus and method for tracking and managing code change between multiple projects
US16/190,888 US10817286B2 (en) 2017-11-14 2018-11-14 Apparatus and method for tracking and managing code change among multiple projects
ES18206246T ES2959942T3 (es) 2017-11-14 2018-11-14 Aparato y método para el seguimiento y gestión de cambio de código entre varios proyectos

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170151525A KR102018039B1 (ko) 2017-11-14 2017-11-14 다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20190054676A KR20190054676A (ko) 2019-05-22
KR102018039B1 true KR102018039B1 (ko) 2019-09-04

Family

ID=64316397

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170151525A KR102018039B1 (ko) 2017-11-14 2017-11-14 다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법 및 그 장치

Country Status (4)

Country Link
US (1) US10817286B2 (ko)
EP (1) EP3483725B1 (ko)
KR (1) KR102018039B1 (ko)
ES (1) ES2959942T3 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11487641B1 (en) * 2019-11-25 2022-11-01 EMC IP Holding Company LLC Micro services recommendation system for identifying code areas at risk
KR102314930B1 (ko) 2020-03-31 2021-10-20 에이비앤아이(주) 개발 프로젝트에서 복수의 분석 의도를 지원하는 목표 추적관리 시스템 및 그 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993710B1 (en) * 1999-10-05 2006-01-31 Borland Software Corporation Method and system for displaying changes of source code
KR100990091B1 (ko) * 2008-12-05 2010-10-29 한국항공우주연구원 요구 사항 관리 방법 및 장치
US8661052B2 (en) 2011-04-29 2014-02-25 Bae Systems Information And Electronic Systems Integration Inc. Functional change tracking for independent software products
US9740868B2 (en) * 2012-09-27 2017-08-22 International Business Machines Corporation Customizing a security report using static analysis
US20170109331A1 (en) * 2015-10-16 2017-04-20 International Business Machines Corporation Managing changes to a document in a revision control system
US10664267B2 (en) 2016-01-22 2020-05-26 International Business Machines Corporation Automatically detecting feature mismatches between mobile application versions on different platforms

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Alexandru Telea et al, "Code Flows: Visualizing Structural Evolution of Source Code", Proceedings of the 10th Joint Eurographics / IEEE - VGTC Conference on Visualization(2008.)*
Stack Overflow, "How to make git diff ignore comments"(2017.04.)*

Also Published As

Publication number Publication date
KR20190054676A (ko) 2019-05-22
ES2959942T3 (es) 2024-02-29
EP3483725A1 (en) 2019-05-15
US10817286B2 (en) 2020-10-27
US20190146787A1 (en) 2019-05-16
EP3483725B1 (en) 2023-07-19

Similar Documents

Publication Publication Date Title
CN101821764B (zh) 自动操纵web文档集合
US9052983B2 (en) Source code patches
US8516435B2 (en) System and method for generating implementation artifacts for contextually-aware business applications
US20160306612A1 (en) Determining errors and warnings corresponding to a source code revision
US10353702B2 (en) Source code element signatures
US20130117232A1 (en) Snapshots of database models
US7908588B2 (en) Program presentation with reviewer feedback maintenance
US20170212945A1 (en) Branchable graph databases
US20060150150A1 (en) Editor support for modifying generated source code
CN104412229A (zh) 自适应可移植库
US20050177828A1 (en) Restore media build automation
US9146711B1 (en) Software component configuration identification
KR102018039B1 (ko) 다수의 프로젝트에 대한 코드의 변경 추적 및 관리방법 및 그 장치
CN101866315A (zh) 软件开发工具的测试方法及系统
Bhattacharyya et al. The DSPCAD integrative command line environment: Introduction to DICE version 1.1
US11416455B2 (en) Version control of electronic files defining a model of a system or component of a system
JP2004342107A (ja) オブジェクト指向パイプラインを用いるシステム及び方法
US20110209135A1 (en) Program Change Management Apparatus, Computer Readable Record Medium Storing Program Change Management Program, And Program Change Management Method
Kongdenfha et al. Web service adaptation: Mismatch patterns and semi-automated approach to mismatch identification and adapter development
CN110737438A (zh) 一种数据处理方法和装置
US20230115334A1 (en) Identifying computer instructions enclosed by macros and conflicting macros at build time
Wille et al. Identifying variability in object-oriented code using model-based code mining
KR100990091B1 (ko) 요구 사항 관리 방법 및 장치
Deelman Looking into the future of workflows: The challenges ahead
Juhár et al. Exploring code projections as a tool for concern management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant