KR100740222B1 - 소프트웨어 소스 코드의 저작권 관리방법 - Google Patents

소프트웨어 소스 코드의 저작권 관리방법 Download PDF

Info

Publication number
KR100740222B1
KR100740222B1 KR1020060046156A KR20060046156A KR100740222B1 KR 100740222 B1 KR100740222 B1 KR 100740222B1 KR 1020060046156 A KR1020060046156 A KR 1020060046156A KR 20060046156 A KR20060046156 A KR 20060046156A KR 100740222 B1 KR100740222 B1 KR 100740222B1
Authority
KR
South Korea
Prior art keywords
source code
software
node
copyright management
information
Prior art date
Application number
KR1020060046156A
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 KR1020060046156A priority Critical patent/KR100740222B1/ko
Application granted granted Critical
Publication of KR100740222B1 publication Critical patent/KR100740222B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Abstract

본 발명은 개발자에 대한 정보와 소스 코드의 구조적 정보를 암호화된 형태로 포함하고 있어, 소스 코드를 직접 제공하지 않더라도 개발자의 소유권 정보와 소스 코드의 구조적 정보에 의해 소프트웨어 저작권 분쟁에서 원본의 진위를 판별할 수 있도록 하는 소프트웨어 소스 코드의 저작권 관리방법에 관한 것이다.
본 발명에 따른 소프트웨어 소스 코드의 저작권 관리방법에 있어서, 저작권 관리 시스템(300)은 기록/재생장치(100)를 통해 기록매체(110)에 기록되어 있는 소프트웨어 소스 코드를 입력받는 과정; 저작권 관리 시스템(300)은 작성자 정보를 입력받는 과정; 저작권 관리 시스템(300)은 기록/재생장치(100)로부터 입력되는 소프트웨어의 소스 코드를 분석하여 루트 노드에 2개의 자노드가 연결되는 DOM 트리를 생성하는 과정; 및 저작권 관리 시스템(300)은 상기 생성된 DOM 트리를 이용하여 각 작성자 정보에 매칭되는 XML 형식의 디지털 라이센스를 생성시켜 출력부(400)를 통해 제공하는 과정으로 이루어진 것을 특징으로 한다.
디지털, 라이센스, 소프트웨어, 소스 코드, 저작권

Description

소프트웨어 소스 코드의 저작권 관리방법{COPYRIGHT MANAGEMENT METHOD OF SOFTWARE SOURCE CODE}
도 1은 본 발명에 따른 소프트웨어 소스 코드의 저작권 관리 시스템을 설명하기 위한 블록도이다.
도 2는 본 발명에 따른 소프트웨어 소스 코드의 저작권 관리 방법을 설명하기 위한 동작 흐름도이다.
도 3은 본 발명에 따라 프로그램 소스 코드의 소프트웨어 아키텍쳐 DOM 트리로의 변환과정을 설명하기 위한 도면이다.
도 4는 본 발명에 따른 소프트웨어 소스 코드의 디지털 라이센스 생성과정을 설명하기 위한 개념도이다.
도 5는 합(sum) 노드의 연산자와 입·출력 패턴 및 합(sum) 노드의 표현을 설명하기 위한 도면이다.
*** 도면의 주요부분에 대한 부호설명 ***
100 ; 기록/재생장치
110 : 기록장치
200 : 입력장치
300 : 저작권 관리 시스템
400 : 출력장치
본 발명은 소프트웨어 소스 코드(source code)의 저작권 관리방법에 관한 것이다. 보다 상세하게는, 개발자에 대한 정보와 소스 코드의 구조적 정보를 암호화된 형태로 포함하고 있어서, 소스 코드를 직접 제공하지 않더라도 개발자의 소유권 정보와 소스 코드의 구조적 정보에 의해 소프트웨어 저작권 분쟁에서 원본의 진위를 판별할 수 있도록 하는 소프트웨어 소스 코드의 저작권 관리방법에 관한 것이다.
전통적으로 저작권은 주로 법적인 관점에서 다루어지고 연구되어 왔다. 저작권의 본질, 그것의 보호의 범위, 강제와 침해 등이 일반적인 연구의 대상이었다. 우선, 저작권은 여러 가지 창조적인 저작물 시장을 위한 안전하고 안정적인 환경을 제공하는 법적 시스템이다. 오늘날 비즈니스의 영역에서 라이센싱, 투자, 거래 및 이전의 문제와 관련하여 저작권에 대한 관심이 크게 증대되고 있지만, 이것도 근본적으로는 저작권이 영향력 있는 법적 시스템이라는 속성에서 비롯되는 것이다. 최 근 들어서 저작권의 경제적 영향에 대한 학계의 관심과 저작권의 국민 경제적 역할에 대한 계량적 측정에 대한 정책담당자들의 관심이 세계적으로 증대되는 것은 일상적인 경제생활의 생산, 유통, 소비의 전반에 걸쳐 지속적으로 확대되어 온 저작권의 영향력이 이러한 수준을 넘어섰음을 의미한다.
이러한 저작권의 경제적 가치의 증대에는 여러 가지 이유가 있다. 첫째, 저작권에 대한 관심은 부분적으로는 비물질적인 생산요소가 보다 주목을 받는 지식기반사회에서 증가하고 있는 지적재산(Intellectual Property : IP)의 역할에 대한 인식이 증대된 결과이다. 저작권은 창의성과 정보에 기반을 둔 산업의 성장과 산업의 생산성, 고용 및 투자를 위하여 중요하다. 둘째는, 디지털 기술의 발달로 인하여 저작권보호의 대상물의 범위가 크게 증대되었다는 것이다. 소프트웨어, 멀티미디어 및 기타 기술기반 산물로부터 경제적 이득은 막대해지고 있다. 셋째는, 디지털 혁명의 결과, 저작권 보호 대상들이 전자상거래의 주요한 요소가 되었다는 점이다.
과거 산업사회의 태동과 발전과정에서 뿐만 아니라, 21세기 정보화 사회의 발전에 있어서도 이러한 지적재산권 제도는 중요한 역할을 하고 있다. 우리나라의 국가 경쟁력 제고를 위해서도 디지털콘텐츠에서 확대된 소프트웨어의 소스 코드에 대한 지적재산권 제도와 기술의 정비는 매우 중요한 의미를 지닌다.
디지털 콘텐츠의 저작권 보호를 위한 연구에 비해서 소프트웨어의 소스 코드에 대한 저작권을 관리하기 위한 기술은 아직도 초기 연구단계에 있다. 소프트웨어 소스 코드의 소유권 분쟁이 발생했을 때는 소유권을 증명하기 위해서는 원본의 소프트웨어 소스 코드를 공개해야만 하는 문제점이 있다.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위해 안출된 것으로, 본 발명의 목적은 개발자에 대한 정보와 소스 코드(source code)의 구조적 정보를 암호화된 형태로 포함하고 있어서, 소스 코드를 직접 제공하지 않더라도 개발자의 소유권 정보와 소스 코드의 구조적 정보에 의해 소프트웨어 저작권 분쟁에서 원본의 진위를 판별할 수 있도록 하는 소프트웨어 소스 코드의 저작권 관리방법을 제공하는데 있다.
또한 본 발명의 다른 목적은 소스 코드의 판별에 의한 제2의 소스코드 유출을 사전에 막아서 제2의 분쟁을 발생시키지 않도록 하기 위한 소프트웨어 소스 코드의 저작권 관리방법을 제공하는데 있다.
또한 본 발명의 또다른 목적은 소스 코드 유출 여부를 개발자 및 유출자가 아닌 다른 제3자의 주관성에 의지하지 않고 객관적인 패턴 매칭 프로그램으로 확연한 보고서를 제공해 줄 수 있도록 하는 소프트웨어 소스 코드의 저작권 관리방법을 제공하는데 있다.
상기와 같은 기술적 과제를 해결하기 위하여 제안된 본 발명의 일 실시예는, 소프트웨어 소스 코드의 저작권 관리방법은, 저작권 관리 시스템에 기록/재생장치를 통해 기록매체에 기록되어 있는 소프트웨어 소스 코드를 입력하는 과정과, 저작권 관리 시스템에 작성자 정보를 입력하는 과정과, 저작권 관리 시스템에서 기록/재생장치로부터 입력되는 소프트웨어의 소스 코드를 분석하여 루트 노드에 2개의 자노드가 연결되는 DOM 트리를 생성하는 과정, 및 저작권 관리 시스템에서 상기 생성된 DOM 트리를 이용하여 각 작성자 정보에 매칭되는 XML 형식의 디지털 라이센스를 생성시켜 출력부를 통해 출력하는 과정으로 이루어진 것을 특징으로 한다.
바람직하게는, DOM 트리는 소스코드의 어휘 분석에 따른 DOM 노드 생성에 따라 생성되며, 상기 소스코드의 어휘 분석에 따른 DOM 노드 생성과정은 프로그램 언어의 예약어 분석, 함수의 DOM 자노드 생성, 자노드의 연산자와 입출력 자료형 패턴 분석, 빈노드의 트리축약분석, 중복 노드 제거와 트리순회를 이용한 인덱스 패턴 분석 및 소프트웨어 버전 관리 분석과정에 의해 생성되는 것을 특징으로 한다.
바람직하게는, 상기 소프트웨어 소스 코드의 디지털 라이센스는 인덱스 패턴, 소프트웨어 아키텍쳐, 노드의 패턴정보, 메시지 축약(MD : Message Digest) 및 암호화 정보 중 적어도 하나 이상의 정보를 포함하고 있으며, 상기 정보를 이용하여 저작권 침해 여부를 판정할 수 있도록 하는 것을 특징으로 한다.
이하, 본 발명에 따른 소프트웨어 소스 코드의 저작권 관리 시스템에 대해 자세히 설명하면 다음과 같다.
본 발명에 따른 소프트웨어 소스 코드의 저작권 관리 시스템은 첨부 도면 도 1에 도시된 바와 같이, 소프트웨어 소스 코드가 기록된 기록매체(110)로부터 기록된 소프트웨어 소스 코드를 재생시키는 기록/재생장치(100)와, 소프트웨어 소스 코드 작성 회사의 정보(이하, “작성자 정보”라 칭하기로 한다)를 입력할 수 있는 입력장치(200)와, 상기 기록/재생장치(100)에 의해 재생된 소프트웨어 소스 코드와 상기 입력장치(200)를 통해 입력된 작성자 정보를 이용하여 루트 노드(Root Node)와 상기 루트 노드에 연결되는 2개의 자노드(Child Node)로 이루어진 DOM(Document Object Model) 트리(Tree)를 생성시키고, 생성된 DOM 트리를 이용하여 XML 형식의 디지털 라이센스를 생성시키고, 생성된 복수의 디지털 라이센스의 패턴을 비교하여 저작권 침해를 판정할 수 있는 보고서를 생성시키는 저작권 관리 시스템(300)과, 상기 저작권 관리 시스템(300)으로부터 생성된 저작권 침해 보고서를 출력하는 출력수단(400) 등을 포함하여 이루어진다.
상기 디지털 라이센스 생성 프로그램에 생성된 자노드는 소프트웨어 소스 코드의 저작자에 대한 정보를 갖는 저작자 DOM 트리와 소프트웨어 소스 코드의 아키텍처를 나타내는 소프트웨어 아키텍처 DOM 트리로 이루어진다. 상기 저작자 DOM 트 리에는 일반적인 소프트웨어 등록증의 내용과 정보의 무결성을 보장하기 위한 메시지 축약(MD : Message Digest) 코드가 추가된다.
상기 소프트웨어 아키텍쳐 DOM 트리는 소프트웨어 소스코드의 디지털 라이센스의 핵심 부분으로서, 소프트웨어 소스코드를 파싱하여 생성된 예약어 토큰과 소프트웨어의 구조에 의해서 형성된 트리 형태의 아키텍처이다.
상기 소프트웨어 아키텍쳐는 예약어와 같은 코드를 이용하여 토큰이 생성되고, 상기 토큰과 프로그램 구조인 토큰의 위치를 이용하여 구축된다. 즉, 모든 프로그래밍 언어는 예약어를 갖고 있다. 예약어를 코드라 하며, 코드를 이용하여 토큰을 생성하고, 토큰과 프로그램의 구조인 토큰의 위치를 이용하여 소프트웨어의 아키텍처를 구축한다. 예를 들어, ANSI 표준 C 언어의 경우는 32개의 예약어와 ANSI 표준 C 언어에 등록되지 않은 11개의 보조 예약어를 갖는다.
그리고 상기 소프트웨어 아키텍처 노드의 루트는 메인(main()) 함수가 되고, 메인(main()) 함수의 루트 노드(Root Node) 아래에 여러 개의 자노드를 포함한다. 자노드는 소프트웨어의 소스 코드의 블록과 제어문 그리고 함수 호출로 구성된다.
먼저, 블록에 의한 자노드 생성에 대해 설명하면, 소프트웨어의 소스 코드에 포함된 중괄호(“{”, “}”)로 나타내어지는 블록은 수행될 코드의 묶음으로서 이 를 자노드로 생성한다. 블록은 서브 함수와 연속으로 수행될 명령 문장 그리고 블록을 내포할 수 있다. 그러므로 블록을 하나의 자노드로 생성한다.
다음, 제어문에 의한 자노드 생성에 대해 설명하면, 프로그래밍 언어의 제어문에는 조건문, 반복문 그리고 분기문이 있다. 제어문은 주어진 조건에 의해서 프로그래밍된 임무의 진행 순서나 절차가 바뀌어진다. 동일한 프로그램을 수행하더라도 주어진 조건의 상황에 따라 프로그램의 수행은 달라지게 된다. 그러므로 제어문을 자노드로 생성한다.
다음, 함수의 호출에 의한 자노드 생성에 대해 설명하면, C 언어는 최소한 한 개 이상의 함수로 구성되며, 크게 메인(main()) 함수와 서브 함수로 구분되며, 서브 함수를 자노드로 생성한다. 서브 함수는 또한 다른 서브 함수나 자신을 다시 호출할 수 있으며, 이를 자노드로 생성한다. 함수 호출에서 무한 루프와 재귀적인 호출에 대해서는 동일한 함수가 3번 이상 호출이 발생하면 연속적인 자노드를 2개만 생성한다.
다음, 자노드의 연산자와 입출력 자료형 패턴 생성에 대해 설명하면, 함수의 코드 중에 연산자가 존재하지 않는 경우에는 자노드를 생성하지 않는다. 연산자를 포함하는 함수만이 입력에 대해 새로운 출력을 생성할 수 있다. 즉, 연산자를 포함하는 함수이어야만 임의의 프로세싱으로 간주하고, 연산자를 포함하지 않는 코드는 단지 화면의 출력이거나, 악의적인 경우의 원본 코드를 속이기 위한 빈 코드의 삽입으로 간주할 수 있다. 그러므로, 이런 코드에 대해 대처할 수 있는 트리의 축약 과정이 필요하다. 모든 노드에는 노드만이 갖는 패턴을 생성하게 된다. 노드에 나타내는 패턴은 입력된 자료형과 수, 연산자 그리고 출력된 자료형과 수를 이용하여 노드의 패턴을 내부 형식(internal format)으로 생성한다.
노드의 패턴 데이터를 이용하게 되면, 소프트웨어의 아키텍처가 동일하더라도 노드의 패턴 데이터로 프로그램의 기능이 다름을 구분할 수 있게 된다. 즉, 첨부 도면 도 5에 도시된 합(sum) 노드의 경우 입력 패턴은 두 개의 정수형 데이터, 연산자 패턴은 더하기(+), 출력 패턴은 정수형 데이터로 표현되는 노드로 표현됨으로써 소프트웨어의 아키텍처만을 비교하는 단점을 극복할 수 있게 되며, 프로그램의 구별 능력을 증대시키게 된다.
다음, 빈 노드의 트리 축약에 대해 설명하면, 연산자를 포함하지 않은 함수 노드는 DOM 트리의 축소와 실제 소스 코드의 분석과정에서 차별화를 위한 어떠한 의미를 제공하지 않는다. 그러므로 연산자 패턴을 포함하지 않은 함수 노드를 제거해도 소스 코드를 같은 의미로 볼 수 있다. 그러므로 연산자 패턴을 갖지 않은 함수 노드를 제거할 수 있으며, 더불어 DOM 트리의 축소를 수행할 수 있다.
다음, 중복 노드 제거와 트리 순회를 이용한 인덱스 패턴 생성에 대해서 설 명하면, 소프트웨어 소스코드의 디지털 라이센스에는 인덱스 패턴을 갖고 있다. 인덱스 패턴에 의해서 디지털 라이센스에 기록된 소프트웨어에 대한 순차패턴과 클러스터링 정보를 제공한다. 만약, 임의의 두 소프트웨어의 인덱스 패턴을 비교해서 동일한 인덱스 패턴으로 매칭되면, 소프트웨어의 아키텍처와 노드의 패턴에 의해서 두 소프트웨어는 정밀한 분석이 이루어진다. 인덱스 패턴의 생성 과정은 DOM 트리의 순회 방법인 중순위(In-order) 방법에 의해서 패턴을 나열하게 되며, 나열된 순차 패턴에서 처음 나타난 다음의 중복된 패턴을 제거하여 인덱스 패턴을 생성하게 된다.
다음, 소프트웨어 버전 관리에 대해 설명하면, 인덱스 패턴은 소프트웨어를 구분 및 분류하는데도 이용되지만, 소프트웨어의 버전(Version) 관리에도 필요한 정보를 제공하는데 사용된다. A라는 소프트웨어가 개발되어 유지 보수되면 버전업 과정이 이루어진다. 버전업 과정을 위해서는 최소한 인덱스 패턴은 동일하더라도 소프트웨어 아키텍처나 노드의 패턴이 동일해서는 안된다. 소프트웨어의 버전업은 과거의 소프트웨어 버전과는 많은 부분은 동일하더라도 일부분에서는 노드 패턴의 변경, 노드 위치의 변동, 새로운 노드의 추가와 구 노드의 제거 등의 과정이 나타나게 될 것이다. 이러한 정보에 의해서 소프트웨어의 버전업 관리가 이루어지게 된다.
그리고 상기 소프트웨어 소스코드의 디지털 라이센스는 인덱스 패턴, 소프트 웨어 아키텍쳐, 노드의 패턴정보, 메시지 축약(MD : Message Digest) 및 암호화 정보 등과 같은 다양한 정보를 포함하고 있어, 소프트웨어의 소스 코드를 대신하여 저작권 침해 여부를 판정할 수 있도록 한다.
이때, 상기 인덱스 패턴은 프로그래밍 언어의 예약어에 의한 예약어의 발생 순차 패턴과 중복 제거에 의한 인덱스 패턴을 생성한다. 기본적으로 이 인덱스 패턴에 의해서 프로그램을 구분 및 분류 그리고 비교를 수행한다. C 언어의 예약어는 32개이므로 메인(main()) 함수를 루트 노드로 설정할 경우 32!(2.6313083693369353016721801216e+35)개의 인덱스 패턴이 존재할 수 있다.
그리고 소프트웨어 아키텍처는 상기 인덱스 패턴이 동일한 경우에는 어느 정도 유사한 소프트웨어로 간주할 수 있다. 그래서 노드로 구성된 소프트웨어 아키텍처에 의해서 소프트웨어를 분류할 수 있다. 코드는 컴퓨터에 의해서 수행되어질 프로그램을 구성하는 기본적인 구성 요소에 해당한다. 한편 아키텍처는 코드라는 기본 구성 요소로 이루어진 구조물을 의미한다. 코드는 행위에 제약을 가할 수도 있고 구조에 영향을 미치기도 한다. 그렇지만 모든 것이 오로지 코드에 의해서만 결정되지 않으며, 아키텍처에 의해서도 분류정보를 제공할 수 있다.
그리고 상기 노드의 패턴 정보는 상기 인덱스 패턴과 상기 소프트웨어 아키텍처가 동일한 경우에는 거의 동일한 소프트웨어라고 할 수 있다. 그러나 상기 소프트웨어도 생명주기(Life-Cycle)를 갖기 때문에 과거의 소프트웨어의 패턴이 상속될 수 있다. 이런 경우를 버전업 되었다고 하는데, 노드의 패턴 정보에 의해서 이러한 정보를 제공할 수 있다.
그리고 메시지 축약과 암호화정보는 데이터 무결성을 보장받기 위한 정보로서, 악의의 행위에 대해 데이터의 무결성을 보장하고, 개인 정보의 유출을 막기 위해서 임의의 항목들은 암호화시키고, 임의의 입력된 대용량 데이터 집합을 짧고 축약된 식별자 데이터를 생성한다. 또한 이상적으로 주어진 축약 값을 생성하는 입력이 무엇인지를 계산할 수 없도록 메시지 축약은 일방향 함수의 특성을 갖다.
상기와 같이 구성된 소프트웨어 소스 코드의 저작권 관리시스템의 저작권 관리방법에 대해 설명하면 다음과 같다.
소프트웨어 소스 코드의 저작권 관리 시스템의 저작권 관리 방법을 첨부 도면 도 1 내지 도 5를 참조하여 설명하면, 저작권 관리 시스템(300)은 기록/재생장치(100)를 통해 기록매체(110)에 기록되어 있는 소프트웨어 소스 코드를 입력받는다(S100). 이때, 원본 소프트웨어 소스 코드와 상기 원본 소프트웨어를 침해한 소프트웨어의 소소 코드를 순차적으로 입력받는다.
다음 저작권 관리 시스템(300)은 작성자 정보를 입력받는다(S110).
상기와 같이 작성자 정보를 입력받은 후, 저작권 관리 시스템(300)은 기록/재생장치(100)로부터 입력되는 소프트웨어의 소스 코드를 분석하여 첨부 도면 도 3에 도시된 바와 같이 루트 노드에 2개의 자노드가 연결되는 DOM 트리를 생성한다(S120).
그리고, 저작권 관리 시스템(300)은 상기 생성된 DOM 트리를 이용하여 각 작성자 정보에 매칭되는 XML 형식의 디지털 라이센스를 생성시켜 출력부(400)를 통해 제공한다(S130). 이때, 출력부(400)는 모니터 및 프린터이다.
상기 S120 과정인 DOM 트리 생성과정에서 소스 코드의 어휘 분석에 따른 DOM 노드 생성과정은 프로그램 언어의 예약어, 함수의 DOM 자노드, 자노드의 연산자와 입출력 자료형 패턴, 빈노드의 트리축약, 중복 노드 제거와 트리순회를 이용한 인덱스 패턴 및 소프트웨어 버전 관리에 의해 생성된다.
상기 프로그램 언어의 예약어는 모든 프로그래밍 언어에 포함되어 있으며, 흔히 예약어를 코드라 한다. 이에, 코드를 이용하여 토큰을 생성하고, 토큰과 프로그램의 구조인 토큰의 위치를 이용하여 소프트웨어의 아키텍쳐를 구축하게 된다.
그리고, 함수의 DOM 자노드는 첨부 도면 도 3에 도시된 바와 같이 하나의 루 트 노드에 여러 개의 자노드를 포함할 수 있으며, 상기 자노드의 경우 소프트웨어 소스코드의 블록과 제어문, 함수 호출로 구성되며, 이에 대해 기술하면, 블록에 의한 자노드 생성과정은 소프트웨어의 소스 코드에포함된 중괄호(“{”, “}”)로 나타내어지는 블록은 수행될 코드의 묶음으로서 이를 자노드로 생성한다. 블록은 서브 함수와 연속으로 수행될 명령 문장 그리고 블록을 내포할 수 있다. 그러므로 블록을 하나의 자노드로 생성한다.
다음, 제어문에 의한 자노드 생성과정은, 프로그래밍 언어에 포함되어 있는 조건문, 반복문 및 분기문 등과 같은 제어문을 자노드로 생성한다. 상기 제어문의 경우 주어진 조건에 의해서 프로그래밍된 임무의 진행 순서나 절차가 변경시키는 것으로서, 동일한 프로그램을 수행하더라도 주어진 조건의 상황에 따라 프로그램의 수행은 달라지게 된다.
다음, 함수의 호출에 의한 자노드 생성과정은, C 언어 등으로 이루어진 소프트웨어는 최소한 한 개 이상의 함수로 구성되며, 크게 메인(main()) 함수와 서브 함수로 구분되며, 서브 함수를 자노드로 생성한다. 서브 함수는 또한 다른 서브 함수나 자신을 다시 호출할 수 있으며, 이를 자노드로 생성한다. 함수 호출에서 무한 루프와 재귀적인 호출에 대해서는 동일한 함수가 3번 이상 호출이 발생하면 연속적인 자노드를 2개만 생성한다.
그리고 자노드의 연산자와 입출력 자료형 패턴 생성과정은, 함수의 코드 중에 연산자가 존재하는 경우 연산자를 이용하여 자노드를 생성한다. 즉 연산자를 포함하는 함수만이 입력에 대해 새로운 출력을 생성할 수 있기 때문이다. 다시 말해 연산자를 포함하는 함수이어야만 임의의 프로세싱으로 간주하고, 연산자를 포함하지 않는 코드는 단지 화면의 출력이거나, 악의적인 경우의 원본 코드를 속이기 위한 빈 코드의 삽입으로 간주할 수 있다. 그러므로, 이런 코드에 대해 대처할 수 있는 트리의 축약 과정이 필요하다. 모든 노드에는 노드만이 갖는 패턴을 생성하게 된다. 노드에 나타내는 패턴은 입력된 자료형과 수, 연산자 그리고 출력된 자료형과 수를 이용하여 노드의 패턴을 내부 형식(internal format)으로 생성한다.
노드의 패턴 데이터를 이용하게 되면, 소프트웨어의 아키텍처가 동일하더라도 노드의 패턴 데이터로 프로그램의 기능이 다름을 구분할 수 있게 된다. 즉, 첨부 도면 도 5에 도시된 합(sum) 노드의 경우 입력 패턴은 두 개의 정수형 데이터, 연산자 패턴은 더하기(+), 출력 패턴은 정수형 데이터로 표현되는 노드로 표현됨으로써 소프트웨어의 아키텍처만을 비교하는 단점을 극복할 수 있게 되며, 프로그램의 구별 능력을 증대시키게 된다.
그리고, 빈 노드의 트리 축약 과정에 대해 설명하면, 연산자를 포함하지 않은 함수 노드는 DOM 트리의 축소와 실제 소스코드의 분석과정에서 차별화를 위한 어떠한 의미를 제공하지 않는다. 그러므로 연산자 패턴을 포함하지 않은 함수 노드 를 제거해도 소스코드를 같은 의미로 볼 수 있다. 그러므로 연산자 패턴을 갖지 않은 함수 노드를 제거할 수 있으며, 더불어 DOM 트리의 축소를 수행할 수 있다.
그리고, 중복 노드 제거와 트리 순회를 이용한 인덱스 패턴 생성 과정에 대해서 설명하면, 소프트웨어 소스코드의 디지털 라이센스에는 인덱스 패턴을 갖고 있다. 인덱스 패턴에 의해서 디지털 라이센스에 기록된 소프트웨어에 대한 순차패턴과 클러스터링 정보를 제공한다. 만약, 임의의 두 소프트웨어의 인덱스 패턴을 비교해서 동일한 인덱스 패턴으로 매칭되면, 소프트웨어의 아키텍처와 노드의 패턴에 의해서 두 소프트웨어는 정밀한 분석이 이루어진다. 인덱스 패턴의 생성 과정은 DOM 트리의 순회 방법인 중순위(In-order) 방법에 의해서 패턴을 나열하게 되며, 나열된 순차 패턴에서 처음 나타난 다음의 중복된 패턴을 제거하여 인덱스 패턴을 생성하게 된다.
마지막으로, 소프트웨어 버전 관리과정에 대해 설명하면, 인덱스 패턴은 소프트웨어를 구분 및 분류하는데도 이용되지만, 소프트웨어의 버전(Version) 관리에도 필요한 정보를 제공하는데 사용된다. A라는 소프트웨어가 개발되어 유지 보수되면 버전업 과정이 이루어진다. 버전업 과정을 위해서는 최소한 인덱스 패턴은 동일하더라도 소프트웨어 아키텍처나 노드의 패턴이 동일해서는 안된다. 소프트웨어의 버전업은 과거의 소프트웨어 버전과는 많은 부분은 동일하더라도 일부분에서는 노드 패턴의 변경, 노드 위치의 변동, 새로운 노드의 추가와 구 노드의 제거 등의 과 정이 나타나게 될 것이다. 이러한 정보에 의해서 소프트웨어의 버전업 관리가 이루어지게 된다.
한편, 상기 소프트웨어 소스코드의 디지털 라이센스는 인덱스 패턴, 소프트웨어 아키텍쳐, 노드의 패턴정보, 메시지 축약(MD : Message Digest) 및 암호화 정보 등과 같은 다양한 정보를 포함하고 있어, 소프트웨어의 소스 코드를 대신하여 저작권 침해 여부를 판정할 수 있도록 한다.
이때, 상기 인덱스 패턴은 프로그래밍 언어의 예약어에 의한 예약어의 발생 순차 패턴과 중복 제거에 의한 인덱스 패턴을 생성한다. 기본적으로 이 인덱스 패턴에 의해서 프로그램을 구분 및 분류 그리고 비교를 수행한다. C 언어의 예약어는 32개이므로 메인(main()) 함수를 루트 노드로 설정할 경우 32!(2.6313083693369353016721801216e+35)개의 인덱스 패턴이 존재할 수 있다.
그리고 소프트웨어 아키텍처는 상기 인덱스 패턴이 동일한 경우에는 어느 정도 유사한 소프트웨어로 간주할 수 있다. 그래서 노드로 구성된 소프트웨어 아키텍처에 의해서 소프트웨어를 분류할 수 있다. 코드는 컴퓨터에 의해서 수행되어 질 프로그램을 구성하는 기본적인 구성 요소에 해당한다. 한편 아키텍처는 코드라는 기본 구성 요소로 이루어진 구조물을 의미한다. 코드는 행위에 제약을 가할 수도 있고 구조에 영향을 미치기도 한다. 그렇지만 모든 것이 오로지 코드에 의해서만 결정되지 않으며, 아키텍처에 의해서도 분류정보를 제공할 수 있다.
그리고 상기 노드의 패턴 정보는 상기 인덱스 패턴과 상기 소프트웨어 아키텍처가 동일한 경우에는 거의 동일한 소프트웨어라고 할 수 있다. 그러나 상기 소프트웨어도 생명주기(Life-Cycle)를 갖기 때문에 과거의 소프트웨어의 패턴이 상속될 수 있다. 이런 경우를 버전업 되었다고 하는데, 노드의 패턴 정보에 의해서 이러한 정보를 제공할 수 있다.
그리고 메시지 축약과 암호화 정보는 데이터 무결성을 보장받기 위한 정보로서, 악의의 행위에 대해 데이터의 무결성을 보장하고, 개인 정보의 유출을 막기 위해서 임의의 항목들은 암호화시키고, 임의의 입력된 대용량 데이터 집합을 짧고 축약된 식별자 데이터를 생성한다. 또한 이상적으로 주어진 축약 값을 생성하는 입력이 무엇인지를 계산할 수 없도록 메시지 축약은 일방향 함수의 특성을 갖는다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 갖는 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예는 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이런 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호범위는 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
이상에서 설명한 바와 같이, 본 발명에 따른 소프트웨어 소스 코드의 저작권 관리방법은 개발자에 대한 정보와 소스 코드의 구조적 정보를 암호화된 형태로 포함하고 있어서, 소스 코드를 직접 제공하지 않더라도 개발자의 소유권 정보와 소스 코드의 구조적 정보에 의해 소프트웨어 저작권 분쟁에서 원본의 진위를 판별할 수 있도록 하는 효과가 있다.
또한 본 발명은 소스 코드의 판별에 의한 제2의 소스 코드 유출을 사전에 막아서 제2의 분쟁을 발생시키지 않도록 하는 효과가 있으며, 또한 본 발명은 소스 코드 유출 여부를 개발자 및 유출자가 아닌 다른 제3자의 주관성에 의지하지 않고 객관적인 패턴 매칭 프로그램으로 확연한 보고서를 제공해 줄 수 있도록 하는 효과가 있다.
즉, 본 발명에 따른 소프트웨어의 소스 코드를 이용한 디지털 라이센스는 분쟁 발생시 소유권을 주장하기 위한 원본을 제출하지 않고, 소스 코드의 디지털 라이센스로 대처할 수 있다. 디지털 라이센스는 소스 코드와 동일 수준의 정보량을 갖으며, 단지 라이센스에 의해서 원본 소스를 생성할 수 없는 일방향 함수의 성질을 갖는다. 활용 방안으로는 소프트웨어 등록시 라이센스를 생성하며, 라이센스 생 성에 의해서 소프트웨어를 구분하며, 동일한 소프트웨어는 등록되지 않으며, 기능을 향상시켜 소프트웨어 버전 관리에도 활용할 수 있다.

Claims (9)

  1. 소프트웨어 소스 코드의 저작권 관리방법에 있어서,
    (1) 저작권 관리 시스템에 기록/재생장치를 통해 기록매체에 기록되어 있는 소프트웨어 소스 코드를 입력하는 과정;
    (2) 저작권 관리 시스템에 작성자 정보를 입력하는 과정;
    (3) 저작권 관리 시스템에서 기록/재생장치로부터 입력되는 소프트웨어의 소스 코드를 분석하여 루트 노드(Root Node)에 2개의 자노드(Child Node)가 연결되는 DOM(Document Object Model) 트리를 생성하는 과정; 및
    (4) 저작권 관리 시스템은 상기 생성된 DOM 트리를 이용하여 각 작성자 정보에 매칭되는 XML 형식의 디지털 라이센스를 생성시켜 출력부를 통해 출력하는 과정;
    으로 이루어진 것을 특징으로 하는 소프트웨어 소스 코드의 저작권 관리방법.
  2. 제 1 항에 있어서, 상기 (3) 과정에서의 DOM 트리는,
    소스코드의 어휘 분석에 따른 DOM 노드 생성에 따라 생성되며,
    상기 소스코드의 어휘 분석에 따른 DOM 노드 생성과정은,
    프로그램 언어의 예약어 분석, 함수의 DOM 자노드 생성, 자노드의 연산자와 입출력 자료형 패턴 분석, 빈노드의 트리축약분석, 중복 노드 제거와 트리순회를 이용한 인덱스 패턴 분석 및 소프트웨어 버전 관리 분석과정에 의해 생성되는 것을 특징으로 하는 소프트웨어 소스 코드의 저작권 관리방법.
  3. 제 2 항에 있어서, 상기 프로그램 언어의 예약어 분석과정은,
    모든 프로그래밍 언어에 포함되어 있는 예약어를 이용하여 토큰을 생성하고, 토큰과 프로그램의 구조인 토큰의 위치를 이용하여 소프트웨어의 아키텍쳐를 구축하여 DOM 트리가 생성되도록 하는 것을 특징으로 하는 소프트웨어 소스 코드의 저작권 관리방법.
  4. 제 2 항에 있어서, 상기 함수의 DOM 자노드 생성과정은,
    소프트웨어의 소스 코드에 포함된 중괄호(“{”, “}”)로 나타내어지는 블록을 자노드로 생성시키는 블록에 의한 자노드 생성과정을 포함하는 것을 특징으로 하는 소프트웨어 소스 코드의 저작권 관리방법.
  5. 제 4 항에 있어서, 상기 함수의 DOM 자노드 생성과정은,
    프로그래밍 언어에 포함되어 있는 조건문, 반복문 및 분기문 등과 같은 제어 문을 자노드로 생성하는 제어문에 의한 자노드 생성과정을 더 포함하는 것을 특징으로 하는 소프트웨어 소스 코드의 저작권 관리방법.
  6. 제 5 항에 있어서, 상기 함수의 DOM 자노드 생성과정은,
    소프트웨어에 한 개, 또는 한 개 이상 포함되어 있는 함수 중 서브 함수를 이용하여 자노드로 생성하는 함수의 호출에 의한 자노드 생성과정을 더 포함하는 것을 특징으로 하는 소프트웨어 소스 코드의 저작권 관리방법.
  7. 제 2 항에 있어서, 자노드의 연산자와 입출력 자료형 패턴 분석과정은,
    함수의 코드 중에 연산자가 존재하는 경우 연산자를 이용하여 자노드를 생성하는 것을 특징으로 하는 소프트웨어 소스 코드의 저작권 관리방법.
  8. 제 2 항에 있어서, 상기 중복 노드 제거와 트리 순회를 이용한 인덱스 패턴 분석과정은,
    중순위(In-order) 방법에 의해서 패턴을 나열하며, 나열된 순차 패턴에서 처음 나타난 다음의 중복된 패턴을 제거하여 인덱스 패턴을 생성하는 것을 특징으로 하는 소프트웨어 소스 코드의 저작권 관리방법.
  9. 제 1 항에 있어서, 상기 (4) 과정의 소프트웨어 소스 코드의 디지털 라이센스는,
    인덱스 패턴, 소프트웨어 아키텍쳐, 노드의 패턴정보, 메시지 축약(MD : Message Digest) 및 암호화 정보 중 적어도 하나 이상의 정보를 포함하고 있으며, 상기 정보를 이용하여 저작권 침해 여부를 판정할 수 있도록 하는 것을 특징으로 하는 소프트웨어 소스 코드의 저작권 관리방법.
KR1020060046156A 2006-05-23 2006-05-23 소프트웨어 소스 코드의 저작권 관리방법 KR100740222B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060046156A KR100740222B1 (ko) 2006-05-23 2006-05-23 소프트웨어 소스 코드의 저작권 관리방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060046156A KR100740222B1 (ko) 2006-05-23 2006-05-23 소프트웨어 소스 코드의 저작권 관리방법

Publications (1)

Publication Number Publication Date
KR100740222B1 true KR100740222B1 (ko) 2007-07-16

Family

ID=38498867

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060046156A KR100740222B1 (ko) 2006-05-23 2006-05-23 소프트웨어 소스 코드의 저작권 관리방법

Country Status (1)

Country Link
KR (1) KR100740222B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101097104B1 (ko) 2009-12-22 2011-12-22 한국저작권위원회 저작권 정보 삽입 시스템 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006328A (en) 1995-07-14 1999-12-21 Christopher N. Drake Computer software authentication, protection, and security system
WO2000058811A2 (en) * 1999-03-27 2000-10-05 Microsoft Corporation Structure of digital rights management (drm) system
KR20050081440A (ko) * 2004-02-13 2005-08-19 엘지엔시스(주) 다중 버전 소프트웨어 구조 및 그 실행 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006328A (en) 1995-07-14 1999-12-21 Christopher N. Drake Computer software authentication, protection, and security system
WO2000058811A2 (en) * 1999-03-27 2000-10-05 Microsoft Corporation Structure of digital rights management (drm) system
KR20050081440A (ko) * 2004-02-13 2005-08-19 엘지엔시스(주) 다중 버전 소프트웨어 구조 및 그 실행 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101097104B1 (ko) 2009-12-22 2011-12-22 한국저작권위원회 저작권 정보 삽입 시스템 및 방법

Similar Documents

Publication Publication Date Title
US7769787B2 (en) Method and system for maintaining originality-related information about elements in an editable object
US20130145344A1 (en) Applying coding standards in graphical programming environments
Said et al. A method of refinement in UML-B
LaMantia et al. Analyzing the evolution of large-scale software systems using design structure matrices and design rule theory: Two exploratory cases
JP2010507165A (ja) ソースコード内のセキュリティ脆弱性の検出
JP2001511557A (ja) 2000年テストケースを生成するためのシステムおよび方法
Hague et al. Unboundedness and downward closures of higher-order pushdown automata
KOCH et al. Distributed graph transformation with application to visual design of distributed systems
Fung et al. MMINT-A: a tool for automated change impact assessment on assurance cases
CN115291836A (zh) 一种基于stride方法的威胁建模自动化识别系统和方法
Reuling et al. Towards projectional editing for model-based SPLs
KR100740222B1 (ko) 소프트웨어 소스 코드의 저작권 관리방법
Rodríguez et al. A foundation for the composition of multilevel domain-specific languages
KR100728612B1 (ko) 데이터이행에 있어서의 데이터 품질관리 방법
JP3997495B2 (ja) ソフトウェア解析装置及びソフトウェア解析方法
Gómez et al. Co-creation of models and metamodels for enterprise architecture projects
Hillemacher et al. Artifact-Based Analysis for the Development of Collaborative Embedded Systems
Pietsch et al. Delta-oriented development of model-based software product lines with DeltaEcore and SiPL: A comparison
Tekinerdogan et al. Model management and analytics for large scale systems
Mitchell et al. Losing functions without gaining data: another look at defunctionalisation
Naughton The Bionic Library: Did Google Work around the GPL?
Vendome Assisting Software Developers With License Compliance
Ziegenhagen et al. Expanding tracing capabilities using dynamic tracing data
KR101488595B1 (ko) 위지윅 기반 html 편집기의 템플릿 구조 유지방법 및 장치
Cha Business model and comparasion of S/W source code vs. Digital license for iPRs

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20100712

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee