KR20090068273A - 동적으로 최적화된 라이선스 사용으로 소프트웨어 제품의 사용을 계량하기 위한 방법, 시스템 및 컴퓨터 프로그램 - Google Patents

동적으로 최적화된 라이선스 사용으로 소프트웨어 제품의 사용을 계량하기 위한 방법, 시스템 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20090068273A
KR20090068273A KR1020097008969A KR20097008969A KR20090068273A KR 20090068273 A KR20090068273 A KR 20090068273A KR 1020097008969 A KR1020097008969 A KR 1020097008969A KR 20097008969 A KR20097008969 A KR 20097008969A KR 20090068273 A KR20090068273 A KR 20090068273A
Authority
KR
South Korea
Prior art keywords
license
licenses
software product
software
product
Prior art date
Application number
KR1020097008969A
Other languages
English (en)
Other versions
KR101107946B1 (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20090068273A publication Critical patent/KR20090068273A/ko
Application granted granted Critical
Publication of KR101107946B1 publication Critical patent/KR101107946B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/018Certifying business or products

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Multimedia (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Marketing (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Storage Device Security (AREA)

Abstract

컴퓨터상에서 소프트웨어 제품의 사용(usage of software products)을 통제 및 계량을 하기 위한 방법과 장치에 관한 것이다. 동일한 소프트웨어 제품에 대하여 라이선스(license)가 여럿 있을 때 그 라이선스들의 이용을 최대화하기 위해, 최선의 라이선스(the best license)를 결정하는 방법을 제공한다. 그러한 결정은 최선의 이용가능 라이선스의 선택에 영향을 주는 파라미터들의 소정의 세트(들)에 바탕을 둔다. 본 발명에 따른 방법은, 동적으로 라이선스의 파라미터들 중 어느 것이라도 변경이 되었을 때, 라이선스들의 동적 재할당이 허용되므로, 어느 때라도 이용가능한 라이선스들의 최선의 이용이 가능하게 된다.
본 발명의 따르면, 라이선스들은 소프트웨어 제품의 사용 제한들 (usage constraints)을 표시하는 연관된(associated) 파라미터들의 목록(list)과 함께 하나의 카달로그(a catalogue)에 저장된다. 그 다음, 이 라이선스들은 소정의 파라미터들 최적 기준에 따라 정렬(ordered)되어서, 요구가 수신되면, 라이선스 매니져가 쉽게 최선의 라이선스, 즉 요구된 사용에 적합하면서, 가장 높은 사용 제한을 가지고 있는 라이선스를 찾아낼 수 있도록 한다. 부가적으로 상기 라이선스는 하나 혹은 그 이상의 계층구조들에 따라서 정렬되는데, 각각의 계층구조는 미리 정해진 선택 규칙에 따라 다른 계층구조들에 대하여 정렬되다.

Description

동적으로 최적화된 라이선스 사용으로 소프트웨어 제품의 사용을 계량하기 위한 방법, 시스템 및 컴퓨터 프로그램{A METHOD, SYSTEM AND COMPUTER PROGRAM FOR METERING USAGE OF SOFTWARE PRODUCTS WITH A DYNAMICALLY OPTIMISED LICENSE USE}
본 발명은 데이터 처리 분야에 관한 것이다. 보다 상세하게는, 데이터 처리 시스템상에서 소프트웨어 제품의 사용(usage of software products)을 통제하고 계량하는 방법에 관한 것이다. 본 발명은 또한 상기 방법을 수행하는 컴퓨터 프로그램과 그 프로그램을 구현하는 제품(a product embodying the program)에 관한 것이다. 더 나아가서 본 발명은 또한 대응하는 장치(a corresponding apparatus)에 관한 것이다.
소프트웨어 제품들(예를 들어, 컴퓨터 프로그램들)은 무한한 수의 사본으로(in an infinite number of copies) 완벽하게 복제될 수 있다. 이것은 자신들의 지적재산권을 보호하기를 바라는 소프트웨어 제품의 발행자들(publishers)에게 큰 걱정거리이다. 사실 발행자들은 통상적으로 각 소프트웨어 제품의 라이선스된 사용(a licensed use)에 대해서 로열티를 받는다. 그러므로 소프트웨어 제품의 어떠한 무단 사용 혹은 배포(any unaccounted use or distribution)는 로열티를 받지 못하는 결과를 초래한다. 인터넷의 광범위한 보급으로 지난 여러 해 동안 이 문제는 악화 되어 왔고, 인터넷의 광범위한 확산은 이러한 종류의 소프트웨어 제품들의 통제되지 않은 배포(uncontrolled distribution)를 더욱 용이하게 하였다.
소프트웨어 제품들의 무단 사용(unaccounted usuage)을 막는 가장 직접적인 방법은 불법 복제와 전송을 금지하는 것이다. 예를 들어, 어떤 소프트웨어 제품들은, 만들어질 수 있는 사본의 수를 제한하거나, 혹은 미리 정해진 시간이 경과 하고 난 후 그 소프트웨어 제품들의 동작을 불가능하게 만들어 버리는, 제어 코드(control code)를 내장(embed)하고 있다. 또 다른 기술은 제품들을 실행하기 위한 소프트웨어 혹은 하드웨어 키의 소유를 요구하도록 구성된다. 또 다른 해결방안은 라이센싱 관리 시스템에 콜(call)하는 것을 포함하기 위해 각 소프트웨어 제품을 변경하도록(modifying) 구성된다. 소프트웨어 제품이 시작될 때마다, 해당 요구(a corresponding request)가 라이센싱 관리 시스템에 전송된다. 라이센싱 관리 시스템은 그 소프트웨어의 사용이 승인된 것인 지 아닌지 확인해 준다(verify). 만일 그 확인의 결과가 긍정적이면, 그 소프트웨어 제품은 실행을 계속할 수 있고, 만일 부정적이면, 그 소프트웨어 제품은 강제로 중지될 것이다.
그러나, 위에서 설명한 기술은 각 소프트웨어 제품이 발행자에 의해서 변경될 것이 요구되는데, 그래서 그러한 기술은 일반화되기 어렵다. 또한, 공지 기술에서 알려진 해결 방안들은 너무 엄격해서(quite rigid) 다른 요구 조건들에 쉽게 맞추기가 어렵다.
다른 접근 방법은 소프트웨어 카탈로그(catalogue)의 사용에 기초를 둔다. 이 소프트웨어 카탈로그는 계량될 모든 알려진 제품들을 목록에 올리고 ; 각 제품은 그것의 실행을 알려주는(indicative of its running) 하나 혹은 그 이상의 실행 가능 모듈들(executable modules)에 의해서 확인된다. 이 경우에, 백그라운드에서 작업하는(working in the background) 라이센싱 에이젼트(licensing agent)가 개시된(launched) 실행 가능 모듈들을 검출하고 ; 그 다음 그 라이센싱 에이젼트는 소프트웨어 카탈로그를 통해서 해당 제품들을 확인한다.
이러한 목적을 위해서, 라이센싱 에이젼트는 주기적으로 현재 실행중인(running) 실행가능 모듈들의 목록을 수집한다. 각 실행 가능 모듈에 대해서, 만일 해당 제품이 승인되지 않은 것이라면, 라이센싱 에이젼트는 (그 제품의 실행을 중지 시키기 위해) 해당 프로세스를 죽이고(kill), 그 제품이 다시 기동(start)되지 못하게 할 수 있다.
한편으로, WO-A-0308570에 기재된 바와 같이, 라이센싱 에이젼트는 어떤 제품의 실행 요구에 응답하여 시작된 모든 새로운 프로세스를 검출한다(예를 들어, 커널 후킹(kernel hooking) 기술을 이용하여). 그 프로세스는 일시 정지되고(suspended) 그 제품을 실행할 승인 유무가 확인된다. 만일 승인이 허락되었다면, 그 프로세스는 재개되어 그 제품이 시작될 수 있게 해 준다. 반대의 경우, 그 프로세스는 중지되고(aborted), 그에 의해서 그 제품의 실행은 금지되며 ; 이것은 그 제품이 잠재적으로 위험한 동작을 실행하고 있는 동안에 그 제품을 죽이는 것(killing)을 피할 수 있게 해 준다.
소프트웨어 카탈로그에 기초한 기술들에서는 동일한 제품에 대하여 카탈로그 상에서 여러개의 라이선스들이 이용 가능할 수 있는 경우가 발생할 수 있다. 어떤 요구가 서버에 의해서 수신되고 동일 제품의 다른 버전들(different versions)이 이용가능하고 그 요구에 적합한 때, 그 서버는 여러개의 라이선스들 중 어느 것이 허락되어야 하는지를 선택하기 위해서 효율적인 메커니즘(efficient mechanism)을 가져야 한다. 그러한 최적 메커니즘은 사용과 소비의 관점에서 이용 가능한 라이선스들의 활용을 최대화하는데 대단히 도움이 된다.
미국 특허 출원 11/181404는 이용 가능한 라이선스들의 활용을 최대화하기 위해서 최선의 라이선스를 선택하기 위한 방법과 시스템을 개시하고 있다. 상기 인용된 선행 기술에서 제안된 솔루션(the proposed solution)은, 선택이 가능하면, 더 넓게 적용할 수 있는 라이선스(a license with a wider applicability)는 미래의 필요를 위해 남겨두고, 더 좁은 범위의 라이선스(a license with a narrower scope)를 사용하는 것이 바람직하다는 아이디어에 기초를 둔다. 라이선스들은 제품의 사용 제한들(usage constraints)을 표시하는 파리미터들의 연관된(associated) 목록과 함께 하나의 카달로그(a catalogue)에 저장된다. 그 다음, 이 라이선스들은 미리 결정된 파라미터들의 최적 기준에 따라 정렬(ordered)되어서, 요구가 수신되면, 라이선스 매니져가 쉽게 최선의 라이선스, 즉 요구된 사용에 적합하면서, 가장 높은 사용 제한을 가지고 있는 그러한 라이선스를 찾아낼 수 있도록 한다.
그러나, 조직들(organizations)은 매일 매일 더 복잡해 지고 있으며, 그들은 전통적인 지리적 조직(traditional grographical organization)에 관하여 더 복잡한 방식으로 조직되는 경향이 있다. 한편으로, 하드웨어 가상 기술(hardware virtualization technology)은 계속적으로 진화하여, 하드웨어 파티션 선택들(hardware partition alternatives)에서 점점 더 많은 융통성(flexibility)과 복잡성(complexity)를 제공하고 있다.
매출을 증가시키고 여러 다른 소비자들에게 맞춤형 오퍼링(tailored offering)을 제공하기 위해서, 라이선스 조건들(terms and conditions)도 매일 매일 더 복잡해지고 다양해지고 있다. 즉, 아무런 제한 없이 회사 전체(the whole enterprise)가 사용할 수 있고 라이선스가 매입되자마자 라이선스 요금이 지급될 수 있는 라이선스들로부터, 요금이 소프트웨어가 얼마나 사용되었는가와 시스템이 얼마나 파우어플(powerful)한가에 기초하는 싱글 오퍼레이팅 시스템(a single operating system)을 목표로 하는 라이선스까지 다양한 조건의 라이선스가 있다.
소비자들은 보통 청구된 요금액수(the amount billed)를 줄이기 위해서 혹은 미래의 소프트웨어 업그레이드와 유지비용을 줄이기 위해서, 허락된 라이선스를 각 소프트웨어 사용에 연관시켜(by associating), 라이선스 사용을 최적화하는 라이센싱 시스템을 기대한다. 라이선스 할당 문제(license allocation problem)에 대한 최선의 솔루션을 찾는 것은 매우 복잡한 일이고 하드웨어 계산 자원(hardware computation resources)의 관점에서 소모적이다. 이 때문에, 대략의 솔루션들(approximated solutions)이 종종 요구된다.
그래서, 라이센싱 시스템은 다음의 문제에 직면해 있다. :
1. 더욱더 복잡한 조직들과 가상 계층적 구조들(virtualization hierarchies)을 처리함.
2. 최선의 라이선스 할당을 제공함.
보통으로 상업적으로 이용 가능한 방법들은 라이선스에 대해서 정의된 타겟들(targets)에 기초한 컨슘세션(consume session)(설치 혹은 사용일 수 있다)에 라이선스가 연관될 수 없을 때 소프트웨어 사용은 라이선스가 되지 않은 것(unlicensed)으로 선언한다. 이 방법은 그 제한들의 소스(source of the constraints), 즉 소프트웨어 벤더에 의해서 정의된 제한들(하나의 하드웨어에 대해서만 유효한 라이선스와 같은) 혹은 내부적 어카운팅(internal accounting) 때문에 소비자에 의해서 정의된 제한들의 소스에 대해서는 설명하지는 않는다.
본 발명의 목적은 종래 방법에서 상술한 결함들을 해결하는 방법과 시스템을 제공하는 것이다.
본 발명에 따라, 데이터 처리 시스템상의 적어도 하나의 소프트웨어 제품의 사용을 계량하는 방법이 제공된다. 상기 적어도 하나의 소프트웨어 제품은 다수의 이용 가능한 연관된 라이선스들을 가지며, 각 라이선스는 한 세트의 속성들을 갖는다. 상기 방법은 상기 시스템상의 상기 적어도 하나의 제품의 사용을 표시하는 이벤트(event)를 검출하는 단계와 ; 상기 검출에 응답하여, 상기 속성의 미리 정해진 선택도 규칙들(preference rules)에 따라 상기 다수의 라이선스들 중에 최선의 이용 가능 라이선스를 결정하는 단계와 ; 확인된 최선의 이용가능 라이선스에 따라 상기 적어도 하나의 소프트웨어 제품에 계량 조건들을 적용하는 단계와 ; 상기 최선의 이용가능 라이선스의 변경을 검출하여 그에 따라서 새로운 계량조건들을 상기 적어도 하나의 소프트웨어 제품에 적용하는 단계를 포함한다.
이 방법에서, 이용가능 라이선스의 활용(exploitation)은 시스템 및 라이선스의 이용 가능성의 변경된 조건에 따라 동적으로 조정된다. 여러 라이선스들이 이용 가능하고 현재의 필요들(the current needs)에 적합한 때는, 미리 정의된 파리미터들에 따라 어떤 라이선스가 최선인지를 결정하기 위해서 시스템의 조건들은 계속적으로 감시된다(monitored).
본 발명의 다른 목적은 상기 설명한 방법을 수행하기 위한 컴퓨터 프로그램을 제공하는 것이다. 더 나아가서, 본 발명의 또 다른 목적은 소프트웨어 제품들의 사용을 계량하기 위한 대응 장치를 제공하는 것이다.
본 발명의 특징(characteristic)으로 믿어지는 신규한 구성들(features)은 첨부된 청구항들에 기술되어 있다. 그러나 이들 및 기타 관련된 목적들과 그 장점들뿐만 아니라 본 발명 그 자체는 첨부된 도면들과 관련된 아래의 상세한 설명을 참조함으로써 잘 이해될 수 있을 것이다.
제 1a도는 본 발명의 방법을 적용할 수 있는 데이터 처리 시스템의 대략적 블록 다이어그램이다.
제 1b도는 상기 시스템의 범용 컴퓨터의 기능 블록들을 보여준다.
제 2도는 본 발명의 방법을 실시하기 위해 사용될 수 있는 주요 소프트웨어 구성요소들(main software components)들을 묘사한다.
제 3도는 라이선스 제한들을 부과하기 위해서 사용된 가상(virtualization), 조직적, 및 지리적 계층구조들(hierarchies)의 방문 순서(the order of visit)를 기술하는 다이어그램을 보여준다.
제 4도는 본 발명의 방법을 보여주는 실시 예와 관련된 활동(activities)들의 흐름을 기술하는 다이어그램을 보여준다.
제 1a도를 특히 참조하면, 분산 구조(distributed architecture)를 갖는 데이터 처리 시스템(100)이 묘사되어 있다. 시스템(100)은 다른 세트들로 그룹을 이루고 있는 다수의 워크스테이션들(105w)을 포함한다 ; 라이센싱 서버(105s)는 각 세트의 워크스테이션들 (105w)와 연관된다. 라이센싱 서버(105s)와 대응 워크스테이션들(105w)은 네트워크(110)(예를 들어, LAN)을 통해서 서로 연결된다. 다른 라이센싱 서버들(105s)은 다른 네트워크(120)(예를 들어, 인터넷)을 통해서 원격 관리 서버(115)와 통신한다 ; 원격 관리서버(115)는 중앙 저장소(central repository)를 구현하며, 이 저장소에는 시스템(100)의 사용, 구매 및 재고목록 데이터(inventory data)가 수집되고 관리된다.
제 1b도에서 보듯이, 이 시스템의 범용 컴퓨터(워크 스테이션, 라이센싱 서버, 혹은 관리 서버)는 (150)으로 표시된다. 범용 컴퓨터(150)은 시스템 버스(153)에 병렬로 연결된 여러 유니트들(units)에 의해서 구성된다. 상세한 설명은 다음과 같다.
하나 혹은 그 이상의 마이크로 프로세서들(uP)(156)은 컴퓨터(150)의 동작을 제어한다 ; RAM(159)는 마이크로 프로세서들(156)의 워킹 메모리(working memory) 로 직접 사용된다. 그리고 ROM(162)는 컴퓨터(150)의 부트스트랩(bootstrap)을 위한 기본코드(basic code)를 저장한다. 주변장치들은 로컬 버스 (165) 주변에 (각 각의 인터페이스들에 의해서) 클러스터 된다(clustered).
특히, 대량의 메모리는 하드디스크(168) 및 CD-ROM(174)를 판독하기 위한 드라이브(171)로 구성된다. 더 나아가서, 컴퓨터(150)는 입력장치들(177)(예를 들어, 키보드와 마우스), 및 출력장치들(180)(예를 들어, 모니터 및 프린터)을 포함한다. 네트워크 인터페이스 카드(NIC)(183)는 컴퓨터(150)를 네트워크에 연결하기 위하여 사용된다. 브리지 유니트(bridge unit)(186)는 시스템 버스(153)를 로컬버스(165)에 인터페이스 한다. 각 마이크로 프로세서(156)와 브리지 유니트(186)는 정보를 전송하기 위하여 시스템 버스(153)에 대한 접근을 요구하는 매스터 에이젼트(master agent)로서 동작될 수 있다. 아비터(arbiter)(189)는 시스템 버스(153)에 대하여 상호 배타적으로(with mutual exclusion) 접근 승인을 관리한다.
만일 시스템이 다른 토폴러지(topology)를 갖거나, 혹은 다른 네트워크에 기초하고 있다 하더라도, 비슷하게 고려할 수 있다. 또한, 컴퓨터들은 다른 구조를 가질 수도 있고, 등가의 유니트들을 포함하거나 혹은 다른 데이터 처리 장치들(예를 들어, PDA들, 휴대폰들과 같은 장치들)로 구성될 수 있다. 어떤 경우건, 본 발명의 솔루션은 또한 워크스테이션들의 제어가 분산되어 있는 시스템에서도 사용될 수 있고, 스탠드얼론(stand alone)컴퓨터에서도 적용될 수 있다.
제 2도를 참조하면, 본 발명의 바람직한 실시 예의 방법을 실시하는데 사용될 수 있는 주요 소프트웨어 구성요소들이 전체로서 (200)으로 표시된다. 정보(프 로그램과 데이터)는 보통 다른 컴퓨터들의 하드디스크들에 저장되고, 프로그램이 실행될 때 해당 워킹 메모리들로 로드된다.
특히 범용의 라이센싱 서버를 살펴보면, 대응 라이센싱 매니져(205)는 연관된 워크스테이션들(105w)(도면에서는 하나만 표시하였다)을 제어한다. 라이센싱 매니져(205)는 라이선스 카탈로그(210)에 접근한다. 여기서, 라이선스 카탈로그는 다른 소프트웨어 제품들의 사용 승인 조건들에 관한 정보를 포함하고 있다 ; 예를 들어, 라이선스 카탈로그(210)은 최대 프로세싱 파우어(the maximum processing power), 혹은 각 제품이 실행(run)될 수 있는 워크스테이션들(105w)의 워킹 메모리들의 최대 용량(maximum capacity), 제품에 대한 라이선스 수(the number of license for the product)(동시에 실행하도록 허용된 제품의 인스턴스들(instances)의 최대 수를 정의하는), 등을 상술한다(specify).
통상적으로, 하나 이상의 라이선스가 각 제품에 대하여 이용가능 하다.
라이센싱 매니져(205)는 또한 정보가 러닝테이블(215)로 유입되는 것을 통제한다. 이 러닝테이블은 워크스테이션들(105w)상에서 현재 실행중인 (currently in execution) 제품들을 목록에 기록한다(list). 또한 라이센싱 매니져(205)는 대응 워크스테이션들(105w)로부터 정보(예를 들어, 설치된 프로그램들에 관한 정보, 승인되지 않은 혹은 미지의 프로그램들을 실행하려는 어떠한 시도들에 대한 정보 등)를 수집한다. 이 정보는 대응 로그(corresponding log)(220)에 저장된다.
라이센싱 서버(105s)는 또한, 각 워크스테이션 (105w)에 분산된, 글로벌 소프트웨어 카탈로그(global software catalogue)(225)를 저장한다. 이 글로벌 소프 트웨어 카탈로그는 시스템에서 계량될 모든 알려진 소프트웨어 제품들을 목록에 기록한다.
글로벌 카탈로그(225)는 백그라운드(background)에서 실행되는(running) 계량 에이젼트(metering agent) (240)에 의해서 접근된다. 계량 에이젼트(240)은 또한 훅 모듈(hook module)(245)를 인터페이스 한다. 훅 모듈(245)는 커널 확장(kernel extention) 수단에 의해서 구현되며, 이것은 워크스테이션(105w)의 오퍼레이팅 시스템에 공지기술에서 이용 가능한(publically available) 표준 인터페이스들을 사용하여 기능(functionality)을 추가한다. 훅 모듈(245)은 워크스테이션(105w)상의 모든 새로운 프로세스(any new process)의 시작(starting)을 가로채어서(intercept), 불려온 대응 실행가능 모듈(the corresponding executable module that has been invoked)의 이름을 계량 에이젼트(240)에 보고한다. 계량 에이젼트(240)은 실행이 시작된 제품(the product that has been launched)(불려온 실행가능 모듈에 대응하는)을 결정한다.
그 다음 실행이 시작된 제품의 이름이 라이센싱 매니져(205)에 전송된다. 라이센싱 매니져(205)는 (라이선스 카탈로그(210)와 러닝 테이블(215)을 이용하여) 그 제품을 실행하는 승인을 부여하거나 혹은 거부한다. 이 프로세스의 결과는 로그(220)에 저장되고, 이 프로세스는 계량 에이젼트(240)로 복귀한다(필요한 경우, 러닝 테이블(215)을 업데이트 한다). ; 그 다음, 계량 에이젼트(240)는 상기 판정의 결과에 따라서 대응 프로세스(the corresponding process)를 재개하거나 혹은 포기한다.
만일 프로그램과 데이터가 다른 방식으로 구성되어 있고(structured), 다른 모듈들 혹은 기능들이 제공되거나, 혹은 정보가 균등의 메모리 구조에 저장된다 하더라도, 비슷하게 처리할 수 있을 것이다. 어떤 경우건, 본 발명의 솔루션은 또한 각 워크스테이션 상에 직접 제품들을 실행하기 위한 승인들을 통제하는 라이센싱 매니져에도 적합하게 구현될 수 있다.
라이선스에 대한 요구가 접수될 때 (예를 들어, 시스템 상에 실행이 시작되는 (launch) 제품의 검출 될 때), 라이선스 매니져(205)는 적합한 라이선스가 이용 가능한 지를 결정한다. 특히, 라이선스 카탈로그(210) 상에 이용 가능한 라이선스가 단일 버젼(single version)인 경우, 선택은 필요 없고 그 라이선스는 기타 다른 액션 없이 승인될 수 있다. 이와 반대로, 동일한 제품에 대하여 하나 이상의 라이선스가 이용 가능한 경우는, 결정 메커니즘이 요구된다.
본 발명의 바람직한 실시 예는, 매우 다른 가격 모델들을 지원하기에 일반적으로 충분한 방법을 유지하면서, 복잡한 조직적 및 가상의 계층구조들(complex organizational and virtualization hierarchies)의 존재 속에서도 정당화될 수 있는, 소프트웨어 제품의 사용과 라이선스들 사이에 “만족할 만한” 연관(“good” association)을 제공하는 것을 목표로 한다.
본 발명의 바람직한 실시 예에 따른 방법은 각 시간마다 최선의 라이선스를 선택하는 것을 가능하게 해 준다. 그래서 응용 프로그램 하나가 실행을 시작할 때, 그 시간에서 최선의 라이선스가 그 응용 프로그램에 부여될 수 있다. 그 응용 프로그램의 유효 기간(life time) 동안, 최선의 라이선스는 변경될 수 있거나 혹은 사 용된 라이선스(used license)를 더 이상 적용할 수 없는 경우가 있다. 다음은 몇가지 실 예들이다.
1. 응용프로그램 실행 시작 시(at the time the application started))에 사용된(in use) 라이선스는 특정의 시기에(at a certain time) 해제되어서, 최선의 이용가능 라이선스가 된다.
2. 최초의 라이선스(the original license)는 어떤 식으로던지(someway) 변경되기 때문에, 더 이상 계속해서 사용될 수 없다. (예를 들어, 응용프로그램이 실행되고 있는 오프레이팅 시스템에 대해서 더 이상 적용될 수 없다는 식으로, 추가의 제한조건들을 추가함에 의해서)
3. 하드웨어 구성 혹은 조직의 계층구조에서 어떤 변경이 발생한다. 예를 들어 :
a. 응용프로그램을 호스팅(hosting)하는 OS가 한 부서에서 다른 부서로 이관되어서(moved), 최초의 라이선스를 더 이상 적용할 수 없게 하거나 혹은 다른 라이선스를 최선의 이용가능 라이선스로 되게 한다.
b. 응용 프로그램이 실행되는 OS를 호스팅하는 HW가 업그레이드 (그 응용 프로그램의 사용을 중단함이 없이)되어서 그 라이선스를 더 이상 적용할 수 없도록 한다.
위에서 설명한 것들은 단순히 라이선스 속성들(the license to properties), hw(즉, 리소스) 속성들, 조직 속성들(properties of organization)(즉, 그룹 속성들), 혹은 이들 실체들 사이의 링크 속성들(properties of the link)에 대한 변경 의 예들이다. 이들 변경은 다른 라이선스를 최선의 라이선스가 되게 할 수 있다.
조직들은 보통으로 기업(enterprise)의 지리적 혹은 조직적 구조들을 표시하는 계층 구조들(hierarchies)로 나누어진다. 라이선스들은 이들 계층 구조의 다른 레벨들(different levels of these hierarchies)에서 획득되거나 부여될 수 있다. 이러한 이유들 때문에, 어떤 라이선스가 소프트웨어 제품의 사용에 부여될 최선의 라이선스가 될 것인지를 결정할 때에는 계층 구조가 고려되어야 한다.
시스템은 다음의 입력들을 받아들인다.
- 본 발명의 방법은 계층 구조들에 기초한 조직의 정보를 요약한다. : 한 계층 구조는 지리적 계층구조(대륙, 지역, 국가, 시….)일 수 있고, 다른 계층구조는 조직적 계층구조(개발연구실, 코드 개발 팀, 자바 개발부,….)일 수 있다.
기본적으로 본 발명의 방법은 한 세트의 그룹 계층구조들(여기서 각 그룹은 위에서 설명한 샘플 조직들 중 하나이다)을 입력으로 받아들인다. 각 계층 구조는 자기 자신의 확인자(its own identifier)를 갖는데, 이는 각 계층구조의 일부를 구성하는 그룹들을 구별할 수 있게 한다. 하나의 계층구조 내에 있는 하나의 그룹은 동일한 계층구조 내에서 하나의 페어런트(a parent)를 가질 수 있고, 다른 계층 구조들 내에 있는 하나의 그룹에 (언제라도(at any point in time)) 링크될 수 있다(차일드(child)로). 계층 구조의 ID들은 계층구조들의 랭킹(ranking)을 발생시킨다. : 하나의 계층 구조 내에 있는 하나의 그룹은 더 높은 랭크(higher rank)의 계층구조들의 그룹들에게만 연관될 수 있다(차일드로서).
- 다른 계층 구조는 가상 층들(virtualization layers)을 포함한다 : 각 노드(node)는 그러한 계층구조들의 루트(root)이고, 그의 차일드는 공유된 풀들(shared pools), LPARS, VMs, 오프레이팅 시스템들이 될 수 있고 그리고 미래에는(WepSphere 같은) 컨테이너들(containers)이 될 수 있다. 그러한 계층구조들의 각 멤버(member)는 하나의 리소스(resource)이다. 하나의 리소스는 그의 페어런트 리소스(루트들은 노드들이 된다)에 링크되고, 또한 각 그룹 계층적 구조들 중 하나의 그룹에 링크될 수 있다. 하나의 리소스는 하나의 페어런트를 가질 수 있고, 어떤 주어진 시점에서 각 계층구조의 하나의 그룹에 링크될 수 있는데, 이것은 두 개의 다른 시간에 동일 계층구조 내에 있는 두 개의 다른 리소스 페어런트들, 혹은 링크된 그룹들을 가질 수 있음을 의미한다.
리소스들, 그룹들 혹은 리소스들과 그룹들 사이의 모든 링크에는 유효 시간 기간(validity time interval)이 붙는다(tagged). 이것은 예를 들어 디파트먼트 라이선스 매니져(the department license manager)가 어떤 주어진 시간 기간(a given period of time)에서 개발 연구실(the development lab)의 일부였는데, 새로운 시간 기간(a new period of time)에서는 예를 들어 리서치 연구실(the research lab)로 옮겨갔다는 것을 의미한다. 혹은 오퍼레이팅 시스템이 주어진 시간 기간에서는 기계 A 상에서 호스트 되었다가, 그 다음에는, 예를 들어 업그레이드를 위해 기계 B로 옮겨 간다는 것이다.
각 리소스 혹은 그룹은 연관된 어떤 속성들을 가질 수 있다. 이러한 속성들은 각 실체(each entity)에 관한 유용한 데이터들을 찾아내는 라이센싱 시스템의 능력에 의존한다 : 이러한 속성들은 예를 들어 노드의 프로세서 수, 오퍼레이팅 시 스템의 메모리 량, 부서에서의 종업원 수와 같은 것들이 있다. 이들 속성들은 라이선스가 얼마나 사용되었는 지를 계산하기 위해 일부 프라이싱 모델들(some pricing models)이 잠재적으로 요구할 수 있기 때문에 수집된다. (예를 들어, IBM IPLA 라이선스들은 소프트웨어 사용을 계산하기 위해서 가상 계층구조의 각 레벨에서 용량정보를 요구한다.)
- 앨고리듬의 다른 입력은 라이센싱 시스템에 알려진 사용자들의 세트(the set of users)이다. 이들 사용자들은 소프트웨어를 설치하거나 실행하는 사람들이며, 이들 사용자들은 또한 라이선스 소비를 기업 종업원들의 서브세트로만 제한하기 위하여 사용될 수 있다. 각 사용자에게는, 추가적인 속성이 붙혀 질 수 있다. 이 추가적인 속성은 라이센싱 시스템이 찾아낼 수 있는 (retrieve) 사용자의 모든 속성을 기술하며 라이선스 계산을 위해 프라이싱 모델에 유용한 것이 될 수 있다.
- 여전히 다른 입력은 한 세트의 라이선스들이며, 각 라이선스는 라이센싱 시스템에 의해서 지원되는 하나의 프라이싱 모델과 연관되어 있다. 각 라이선스는 잠재적으로 다수의 디스트리뷰션들(distributions), 즉 라이선스 권리를 갖는 디비젼들(divisions)로 나뉘어질 수 있으며, 각 각은 그 라이선스를 사용하는 것이 허락된 다른 주체들(subjects)에 연관된다.
각 디스트리뷰션은 이 디스트리뷰션을 사용하도록 허락된 한 세트의 타겟들(a set of targets)(그룹들 혹은 리소스들이 될 수 있다)을 가지고 있는데, 이들 타겟들의 각각에 대해서는 하나 혹은 그 이상의 연관 유효 시간 기간 들(association validity time intervals)이 제공된다(이것은 타겟들이 이 시간 기간들에서만 라이선스를 사용할 수 있도록 허락되었다는 것을 의미한다). 또한 각 디스트리뷰션은 모든 사용자들, 혹은 그들의 서브 세트에 연관될 수 있다(이렇게 하여 그것을 사용할 수 있는 사용자들을 제한할 수 있다). 다시 이들 연관들(associations)의 각 각은 하나 혹은 그 이상의 시간 기간들로(with one or more time intervals) 증가되어(augmented), 그 연관 유효성(the association validity)을 세분화(detailing) 한다.
가능한 종류의 라이선스들의 예는 다음과 같다 :
1. 개발연구실(the Development lab)에 근무하는 종업원 누구에게라도 사용가능한 라이선스(타겟은 개발연구실을 대표하는 그룹이며, 이 라이선스에 사용자 제한은 없다).
2. 이탈리아(Italy)에 근무하는 종업원 누구라도 사용 가능한 라이선스(타겟은 이탈리아라고 하는 지리적 위치를 표시하는 그룹이며, 이 라이선스에도 사용자 제한은 없다).
3. 특정 하드웨어 시스템 상에서만 사용 가능한 라이선스(예를 들어, 특정 PC상에서). 타겟은 특정 하드웨어를 표시하는 리소스이며, 이 라이선스에도 사용자 제한은 없다.
4. 기명 사용자(a named user)만 사용 가능한 라이선스. 타겟은 전체 기업이지만, 사용자 제한이 있고, 이 라이선스는 오직 하나의 사용자(기명사용자)에게만 연관된다.
각 라이선스와 디스트리뷰션(distribution)은 연관된 속성들을 갖는데, 이 연관된 속성들은 라이선스 및 디스트리뷰션을 정의할 때 사용자가 입력한 값들이며, 이들은 그 라이선스들과 연관된 프라이싱 모델(pricing model)이 라이선스 사용 계산과 준수(compliance)를 위해서 요구한다.
연관된 속성들의 예로는 라이선스에 의해서 사용이 허락된 프로세서들의 수 ; 혹은 타이어 라이선스(tier licenses)같은 다수의 라이선스들(multiple numbers for licenses), 여기서 각 수(each number)는 다른 하드웨어 타이어 등을 위한 것이다.
현재의 방법들의 제한들(limitations) 중 하나는, 그들은 벤더들이 라이선스 조건들의 일부로서 정의한(예를 들어, 계약한 기계에서만 소프트웨어의 사용을 허락하는 메인프레임 라이선스 같은) 타겟들, 혹은 어카운팅 목적을 위하여 사용자가 정의한 (부서에 의해서 지불 되고, 따라서 그 부서만을 타겟으로 하는 라이선스 같은) 타겟들 간의 차이를 구별하지 못한다는 것이다.
첫 번째 경우는, 라이선스 되지 않은 기계들에서 소프트웨어를 사용하는 것인데, 이것은 라이선스 조건들을 위반하는 것이며, 따라서 법적인 문제를 일으킬 수 있다. 두 번째의 경우에, 만일 제품이 10개의 유니트들에 대하여 라이선스 되었는데, 9개는 타겟 부서 내에서 사용되고, 하나는 타겟 부서를 벗어나서 사용된다면, 벤더에 의해서 부과된 라이선스 조건 범위 내에 있기 때문에 소비자는 법적인 문제는 없다 ; 다만, 한 사람의 사용자가 그의 부서에서 지불 하지 않는 라이선스를 사용하고 있기 때문에, 그 사용자에게 내부 어카운팅(internal accounting) 문 제만 있다.
이러한 추가적인 시나리오를 지원하기 위해서, 각 라이선스(혹은 다른 실시 예에서 프라이싱 모델)는, 디스트리뷰션(그 라이선스들의 디스트리뷰션)이 소프트웨어 벤더에 의해서 부과된 것인지, 혹은 단순히 어카운팅 목적인지를 표시하는 하나의 플래그(a flag)를 갖는다.
최종 입력으로써 각 라이선스의 디스트리뷰션 중 하나가 디폴트 디스트리뷰션으로써 플래그 될 수 있다. 이것은 라이선스 타겟들에는 포함되지 않지만, 그 라이선스에 연관된 제품들 사용에 연관될 디스트리뷰션을 의미한다.
라이선스에 대한 사용의 좋은 연관(a good association of usage to licenses)을 보증하기 위해서, 라이센싱 시스템은 논 컨슈밍 라이선스(non-consuming license)의 개념을 지원한다 : 만일 사용자가 소프트웨어 사용량과 무관하게 라이선스에 대한 비용을 지불해야 한다면 라이선스(혹은 프라이싱 모델)은 논 컨슈밍(non consuming)으로 플래그 될 수 있다. 예를 들어, 개발연구실을 위한 제품 Foo에 대한 사이트 라이선스(site license)는 논 컨슈밍 라이선스의 좋은 예가 될 수 있다 : 그 연구실은 라이선스를 취득할 때 그 라이선스에 대하여 요금을 지불하고 일단 요금이 지불되고 나면 그 연구실은 추가적인 요금을 지불할 필요 없이 그리고 그 라이선스를 초과 사용할 위험 없이 제품 Foo를 원하는 만큼 자주 사용할 수 있다.
하나의 소프트웨어 제품에 대하여 그러한 라이선스가 이용 가능하다면, 이는 우선 라이선스(preferred license)로 간주 되어야 한다. 왜냐하면 초과 사용할 위 험 혹은 추가요금을 지불할 필요가 없이(즉, 사용 라이선스 당 지불 처럼) 사용이 그것에 연관될 수 있기 때문이다.
이제 제 3도를 참조하면, 각 컨슘세션(consume session)에 대해서, 앨고리듬(algorithm)은 다음의 단계들을 실행한다.
1. 리소스와 그룹 계층구조들(300)을 순회(navigate)함, 이 순회는 소프트웨어 사용을 시작한 리소스로부터 출발하며, 각 시간 기간에서(in each time interval)그 리소스로부터 도달 가능하고(reachable) 컨슘세션(the consume session)을 발생시키는 제품에 연관된 라이선스 디스트리뷰션의 세트를 추출한다.
적합한 라이선스를 찾기 위해 노드(nodes)를 방문하는 순서(the order)는 다음 순서이다 : R2, R1, G13, G12, G11, G03, G02, G01.
이것은 리소스 계층구조가 첫 번째로 방문된다는 것을 의미한다. 각 리소스의 페어런트는 그 리소스 자체 다음으로 방문된다. 다수의 페어런트들의 경우에는, 그들은 순차로(in time order) 방문될 수 있다(그러나 이것은 앨고리듬의 정확성을 위해 엄격히 요구되는 것은 아니다).
리소스들을 방문하는 동안, 앨고리듬들은 각 리소스로부터 도달 가능한 그룹들의 목록을 수집한다. 이 경우에 R2 로부터 G03이 도달될 수 있고 R1로부터 G13이 도달될 수 있다. 리소스 계층구조의 방문을 마친 후 앨고리듬은 그룹 계층구조들로 이동하는데 더 낮은 랭크(rank)(즉, 가장 높은 id)를 갖는 것들로부터 시작한다.
그래서 G03이 G13전에 도달 가능한 것으로 파악되었을 지라도, G13이 가장 높은 id를 갖고 있음을 고려하여, 그 리소스 계층구조의 방문을 마친 후에 앨고리 듬은 id1을 갖는 그룹 계층구조로 이동하고, 그렇게하여 G13으로부터 출발하여 G13으로부터 도달 가능한 모든 그룹들을 방문한다. 계층구조 1 방문의 끝에 앨고리듬은 여전히 노드 G03을 방문해야만 할 것이다. 그래서 방문할 노드들이 여전히 존재하고 그들이 그 동일 계층구조의 모든 부분(all part)이기 때문에, 노드 G03과 그것으로부터 도달 가능한 모든 노드들(G02, G01)을 방문하면서 그 방문은 계속된다.
그 방문 동안, 도달 가능 시간 기간(a reachable time interval)은 항상 유지된다. 그래서, R2는 컨슘 세션 기간(t1, t3) 내에서 항상 도달 가능하다. 또한 R1도 기간(t1,t3) 내에서 항상 도달 가능하다. 한편, G13은 기간(t2, t3) 내에서 도달 가능하다.
라이선스들에 대한 서치를 시작하면, 위에서 설명한 시퀀스(sequence)를 따라 제품 P1에 대하여 발견된 첫번째의 것은 유효시간(t2, t3)를 갖는 라이선스 L2이고 그 다음은 유효시간(t1, t3)를 갖는 L4이다.
2. 사용자 제한들(limits)에 기초한 각 라이선스의 유효시간을 선택함.
만일 라이선스(혹은 디스트리뷰션)가 사용자 제한을 갖고 있지 않다면, 그 라이선스는 언제라도 컨슘세션에 연관될 수 있다. 만일 그렇지 않다면, 그 라이선스(혹은 디스트리뷰선)는 컨슘세션 사용자가 그 라이선스(혹은 디스트리뷰션)에 연관되어 있지 않은 시간 기간(periods)에서는 연관될 수 없다. 예를 들어, L2가 시간 기간(t1, t2)에서 사용자 U1에 연관되어 있다면, L2는 그 사용 세션을 위해는 사용될 수 없다. 왜냐하면, 타겟 제한들은 기간(t2, t3)에서 만족되고, 사용자 제한들은 오직 (t1, t2)에서만 만족되기 때문이다.
이 단계는 또한 단계(1) 전에 수행될 수 있다.
3. 컨슘세션에 연관될 수 있는 모든 라이선스들(혹은 디스트리뷰션들)에 대해서, 그 세션이 정말로 그리고 어떤 시간 기간들에서도 할당될 수 있다면, 프라이싱 모델을 요구함.
연관될 컨슘세션에 추가적인 제한들을 부과하는 어떤 프라이싱 모델들이 있다. 예를 들어, 하나의 기준 프라이싱 모델(a reference pricing model)은 P1로 참조된 제품이 기계에 설치될 경우에만 컨슘세션이 라이선스(혹은 디스트리뷰션)에 연관되는 것을 허용하며, 그렇지 않은 경우 그 라이선스는 사용될 수 없다. 그래서 그 연관은 또한 참조된 제품이 기계에 설치되는 시간 기간들 동안만 가능하다.
4. 일단 앨고리듬이 관련된 시간 기간들을 갖는(with the related time intervals) 컨슘세션에 연관이 가능한 라이선스들의 목록을 획득하면, 앨고리듬은 논 컨슘밍 라이선스들을 선택함. 그래서 만일 L1이 논 컨슈밍이라면, L2가 전에 도달되었다 할지라도 그 세션은 L1에 할당된다.
5. 만일 유효한 라이선스가 발견되지 않으면, 타겟 제한들에 기초하여, 앨고리듬은 “디폴트”로 표시된 그리고 도달가능 시간 기간을 갖는 모든 계층구조들(G01)의 루트(root)로부터 도달가능한 라이선스들(혹은 디스트리뷰션)을 서치함. 컨슘 세션을 시작하는 제품에 연관된 가장 가까운 라이선스(혹은 디스트리뷰션)는 그 연관을 위해 유효한 첫 번째 라이선스로 간주된다.
6. 만일 두 개 이상의 라이선스들(혹은 디스트리뷰션들)이 주어진 시간 기간 동안 획득된다면(그들 중 두 개는 동일 리소스 혹은 그룹에 연관되기 때문에) 앨고리듬은 사용 라이선스들보다 설치 라이선스들(installation licenses)을 선택함. 만일 두 개의 설치 혹은 사용 라이선스들(혹은 디스트리뷰션들)이 있다면, 앨고리듬은 그들을 라이선스 id 및 디스트리뷰션 id에 따라 정렬하고(order) 사용을 발생시키는 리소스의 id에 따라 하나를 선택한다.(그러나 그것은 또한 사용자 id, 혹은 두 id 모두의 어떤 조합, 혹은 컨슘세션의 어떤 속성에 기초할 수도 있다.)
상기 방법은 논 컨슈밍 라이선스들을 컨슈밍 라이선스들보다 우선 선택하여 결과적으로 라이선스 연관을 최적화 함으로써 복잡한 조직 구조들(complex organizational structures)과 가상 계층구조들을 처리하는 것을 가능하게 한다. 상기 방법은 또한 연관처리(the association processing) 과정에서 라이선스 모델 특유의 제한들(license model specific constraints)을 포함하는 것을 허용하며, 따라서 다른 프라이싱 모델들과 그들의 제한들을 지원한다.
이 방법은, 또한 컨슘세션을 시작하는 제품이 아니라 컨슘 하는것의 계층구조 내에 있는 모든 제품들에 연관되어 있는 모든 라이선스들을 고려함으로써, 제품 계층구조들에게까지 확장될 수 있다.
바람직한 라이선스들(the preferred licenses)을 컨슈밍 리소스로부터의 거리와 계층구조들의 상대적 순서(relative order)의 혼합(mix)에 따라 정렬하는 방법은 여러 가능성들 중 단지 하나일 뿐이다. 하나의 대안은 모든 속성들(attributes)을, 아마도 상대적 비중(a relative weight)으로 조합하여 각 라이선스에 대한 글로벌 “우선 값”(global “preference value”)를 계산하는 것일 수 있다.
제 4도를 살펴보면, 본 발명의 실시 예에 따른 계량 프로세스(a metering process)의 논리의 흐름이 방법(400)으로 표시되어 있다. 이 방법은 흑색 출발 원(the black start circle)(405)에서 시작한다. 블록(410)에 진행하면, 하나의 요구가 라이센싱 매니져(205)에 의하여 접수된다. 이 요구는 보통으로 위에서 설명한 바와 같이 새로운 프로세스의 시작을 검출함에 의해서 촉발된다(triggered).
이 방법이 블록 (415)로 진행하면, 라이선스 카탈로그(210)로부터 속성들이 추출된다. 블록 (420)에서 모든 이용 가능한 라이선스들이 미리 정해진 최적의 기준에 따라 정렬된다(즉, 미국 특허출원 11/181404에서 개시된 바와 같이 미래의 사용을 위해 더 융통성있는(more flexible) 라이선스들은 남겨둔다).
블록 (425)에서는, 최선의 이용 가능한 라이선스가 선택되어 응용프로그램의 사용(application use)에 지정(assign)된다. 블록(430)은 상기의 미리 정해진 최적화에 영향을 주는 조건들 중 어느 것이라도 변경이 되었는지를 감시를 한다. 그러한 경우에, 그러한 기준에 따라 더 나은 라이선스가 찾아 질 수 있다면, 그것은 (단계 (435)에서) 확인된다. 만일 그 대답이 “예” 라면(단계 440) 새로운 라이선스가 사용 응용프로그램에 지정된다.
이 방법이 균등의 혹은 추가적인 단계들을 포함하더라도 비슷하게 적용해 나갈 수 있을 것이다.
다른 방법으로는(alternatively), 파라미터들의 목록은 사용자 선택에 따라 커스터마이즈될 수 있거나 혹은 다른 조건들에 기초될 수 있다. 동일한 방법으로 최적화 기준도 다른 표현들(different expressions)에 의해서, 심지어 더 복잡한 논리적 오퍼레이터들을 사용하여서도 정의될 수 있다.
또한 라이선스가 요구된 사용에 대해서 적합한지 아닌지에 대한 결정도 파라미터들의 평가와 소팅(sorting) 전에 내려질 수 있을 것이다.
불필요한 세부 사항으로 본 발명의 설명을 흐리게 하는 것을 피하기 위하여 상세하게 설명하지는 않았지만, 제품의 실행이 종료되었을 때(이용 가능한 라이선스들의 테이블을 업데이트 하기 위하여) 이를 라이센싱 매니져에게 통지하기 위한 절차가 또한 제공되는 것은 자명하다.
또한, 각 워크스테이션으로 하여금 라이센싱 매니져에게 주기적으로(예를 들어, 매 10분마다) 하트비트 메시지(heartbeat message)를 보내게 하는 것도 가능하다. 이 방법에서, 하트비트 메시지가 미리 정의된 기간 내에 접수되지 않는 경우(이것은 워크스테이션이 정확하게 사용되지 않고 있음을 의미한다), 워크 스테이션에서 실행되고 있는 제품들은 실행 테이블로부터 삭제될 수 있다(해당 라이선스들을 해제하기 위하여).
더 나아가, 관리 서버도 주기적으로 다른 라이센싱 서버들 상에서 로그된 정보를 수집하는데, 이는 다른 보고서들(예를 들어, 워크스테이션들 상에서 소프트웨어 제품들의 설치 및/또는 사용과 관련한)을 제출하기 위해서이다.
지금까지 본 발명에 관하여 바람직한 실시 예(들)을 참조하여 어느 정도 상세하게 설명은 하였지만, 형식이나 세부내용에서 다양한 변경과 다른 실시 예들을 추가하는 것이 가능하다는 것을 이해해야 한다.
특히, 동일한 결과들을 달성하기 위하여 동일한 방식으로 실질적으로 동일 기능을 수행하는 그러한 엘리멘트들(elements) 및/또는 방법 단계들(method steps)의 모든 조합들이 본 발명의 범위 내에 있음은 명백하다.
예를 들어, 제안된 본 발명의 솔루션을 라이센싱 관리와 다른 상황에서 사용하는 것도 생각해 볼 수 있다. 특히, 제품들에 관하여 검출된 정보는 (사용 승인의 확인이 아닌) 보고용 혹은 재고관리 목적만으로도 사용될 수도 있다. 또한, 소프트웨어 제품과 관련하여 “사용”(use)이라는 용어가 사용될 때, 이 용어는 시스템 메모리 내에 그 소프트웨어 제품을 단순히 설치하거나 혹은 로딩을 포함할 수 있음을 주목해야 한다.
어떤 경우건, 본 발명의 방법은 어떤 종류의 소프트웨어 제품들(예를 들어, 비디오 게임들, 멀티미디어 제품들, 및 기타 이와 유사한 제품들)의 사용을 계량하기 위해서 사용될 수 있다 ; 더 나아가, 제품들의 실행개시(launch)는 다른 방법으로(예를 들어, 실행되고 있는 실행가능 모듈들의 목록(the executable modues)을 주기적으로 수집함으로써)도 검출될 수 있다.
또한, 프로그램들은 기타 종류의 컴퓨터 판독가능 매체들(예를 들어, 하나 혹은 그 이상의 DVD들)상에서 배포될 수 있다 ; 또는 컴퓨터 하드디스크에 미리 저장되어 배포되거나, 인터넷 등을 통해서 컴퓨터에 전송 혹은 방송되거나 하는 등의 방법으로 배포될 수도 있다. 혹은 더 일반적으로 컴퓨터들의 워킹 메모리들에 직접 로드 가능한 형태로도 제공될 수 있다.
더 나아가서, 추가의 장점을 제공하는 추가적인 특징들은 본 발명을 실시하기 위해서 필수적인 것이 아니라서 설명에서 제외되었거나 다른 특징들로 대체되었 을 수 있음은 이 분야에서 통상의 지식을 가진 자에게 자명할 것이다.
어떤 경우건, 본 발명에 따른 방법은 또한 하나의 하드웨어 구성(예를 들어, 반도체 재료 칩에 집적된), 혹은 소프트웨어와 하드웨어의 조합 모두에서 사용하기에 적합하다.
이 분야에서 통상의 지식을 가진자는 본 발명을 실시하고자 할 때 자신의 주변 상황(local)에서 요구되는 특유한 요건들(specific requirements)을 만족시키기 위해, 위에서 설명한 본 발명의 해결방법을 적용하는데 여러 수정과 변경을 할 수 있으나, 그러한 모든 수정과 변경은 당연히 아래의 청구항에서 정의한 본 발명의 보호의 범위 내에 포함된다.

Claims (10)

  1. 데이터 처리 시스템 상에서 적어도 하나의 소프트웨어 제품의 사용을 계량하는 방법(400)에 있어서, 상기 적어도 하나의 소프트웨어 제품은 다수의 이용 가능한 연관된 라이선스들을 가지며, 각 라이선스는 한 세트의 속성들(a set of attributes)을 가지며, 상기 방법은,
    상기 시스템 상에서 상기 적어도 하나의 제품의 사용을 표시하는 이벤트(event)를 검출하는 단계 ;
    상기 검출에 응답하여, 상기 속성들의 미리 정해진 선택 규칙들(predetermined preference rules)에 따라, 상기 다수의 라이선스들 중에 최선의 이용가능 라이선스를 결정하는 단계 ;
    계량 조건들을 상기 확인된 최선의 이용가능 라이선스에 따라 상기 적어도 하나의 소프트웨어 제품에 적용하는 단계 ;
    상기 최선의 이용가능 라이선스의 변경을 검출하고 그에 따라 상기 적어도 하나의 소프트웨어 제품에 새로운 계량조건들을 적용하는 단계를 포함하는
    소프트웨어 제품의 사용을 계량하는 방법(400).
  2. 제1항에 있어서, 상기 검출 단계는
    상기 속성들 중 적어도 하나를 변경하는(modify) 이벤트를 검출하기 위해 상기 처리시스템을 감시하는 단계 ;
    상기 변경에 응답하여, 상기 최선의 이용 가능 라이선스를 확인하는 단계(step)를 반복하고 필요한 경우, 상기 적어도 하나의 소프트웨어 제품에 새로운 계량조건들을 적용하는 단계를 포함하는
    소프트웨어 제품의 사용을 계량하는 방법.
  3. 제2항에 있어서, 상기 속성들은 상기 소프트웨어 제품의 사용제한들(usage constraints)를 표시하는
    소프트웨어 제품의 사용을 계량하는 방법(400).
  4. 상기 청구항들 중 어느 하나에서, 상기 적어도 하나의 소프트웨어 제품은 한 세트의 사용요건들(usage requirements)을 갖고 있으며, 상기 결정의 단계는
    상기 선택 규칙들(the preference rules)에 따라 상기 이용 가능한 라이선스들의 정렬된 목록을 각 소프트웨어 제품에 대하여 작성하는 단계 ;
    상기 제품의 사용요건들을 충족시키는(matching) 모든 파라미터들을 갖는 적합한 라이선스를 찾을 때까지 상기 목록을 스캔하는 단계를 포함하는
    소프트웨어 제품의 사용을 계량하는 방법(300).
  5. 제4항에 있어서, 상기 이용 가능한 라이선스들은 적어도 하나의 계층구조(hierarchy)에 따라 정렬되고 상기 목록의 스캔닝은 상기 적어도 하나의 계층구조를 따르는 소프트웨어 제품의 사용을 계량하는 방법(300).
  6. 제5항에 있어서, 다수의 정렬된 계층구조들(a plurality of ordered hierarchies)을 포함하고, 각 계층구조에 속한 라이선스들은 이전의 계층구조(the preceding hierarchy)에 속한 라이선스들이 스캔 되고 난 후에라야 스캔 되는
    소프트웨어 제품의 사용을 계량하는 방법(300).
  7. 상기 항들 중 하나에서, 상기 결정의 단계는 상기 다수의 라이선스들 중 어느 것이 가장 높은 사용 제한(the highest usage constraint)을 갖고 있는 지를 결정하는 것을 포함하는
    소프트웨어 제품의 사용을 계량하는 방법(400).
  8. 제7항에 있어서, 상기 파라미터들의 세트에는 라이선스 만료일이 포함하는
    소프트웨어 제품의 사용을 계량하는 방법(400).
  9. 프로그램이 시스템 상에서 실행될 때 상기 모든 항의 방법을 수행하기 위한 데이터 처리 시스템(100)의 작업 메모리(159)에 직접 로딩하는 것이 가능한 프로그램 코드 수단을 포함하는 컴퓨터 프로그램.
  10. 상기 제1항에서 8항까지의 단계들을 수행하기 위한 수단을 포함하는, 데이터 처리 시스템 상의 소프트웨어 제품 사용을 계량하기 위한 장치.
KR1020097008969A 2006-11-02 2007-08-27 동적으로 최적화된 라이선스 사용으로 소프트웨어 제품의 사용을 계량하기 위한 방법, 시스템 및 컴퓨터 프로그램 KR101107946B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06123333 2006-11-02
EP06123333.4 2006-11-02
PCT/EP2007/058877 WO2008052820A1 (en) 2006-11-02 2007-08-27 A method, system and computer program for metering usage of software products with a dynamically optimised license use

Publications (2)

Publication Number Publication Date
KR20090068273A true KR20090068273A (ko) 2009-06-25
KR101107946B1 KR101107946B1 (ko) 2012-01-25

Family

ID=39125079

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097008969A KR101107946B1 (ko) 2006-11-02 2007-08-27 동적으로 최적화된 라이선스 사용으로 소프트웨어 제품의 사용을 계량하기 위한 방법, 시스템 및 컴퓨터 프로그램

Country Status (5)

Country Link
US (1) US20080109241A1 (ko)
EP (1) EP2078273A1 (ko)
KR (1) KR101107946B1 (ko)
TW (1) TW200837599A (ko)
WO (1) WO2008052820A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10673952B1 (en) 2014-11-10 2020-06-02 Turbonomic, Inc. Systems, apparatus, and methods for managing computer workload availability and performance
US11272013B1 (en) 2009-06-26 2022-03-08 Turbonomic, Inc. Systems, apparatus, and methods for managing computer workload availability and performance
US8914511B1 (en) 2009-06-26 2014-12-16 VMTurbo, Inc. Managing resources in virtualization systems
US9888067B1 (en) 2014-11-10 2018-02-06 Turbonomic, Inc. Managing resources in container systems
US9805345B1 (en) 2014-11-10 2017-10-31 Turbonomic, Inc. Systems, apparatus, and methods for managing quality of service agreements
US9852011B1 (en) 2009-06-26 2017-12-26 Turbonomic, Inc. Managing resources in virtualization systems
US9830192B1 (en) 2014-11-10 2017-11-28 Turbonomic, Inc. Managing application performance in virtualization systems
US10191778B1 (en) 2015-11-16 2019-01-29 Turbonomic, Inc. Systems, apparatus and methods for management of software containers
USRE48663E1 (en) 2009-06-26 2021-07-27 Turbonomic, Inc. Moving resource consumers in computer systems
US10552586B1 (en) 2015-11-16 2020-02-04 Turbonomic, Inc. Systems, apparatus and methods for management of computer-based software licenses
US9830566B1 (en) 2014-11-10 2017-11-28 Turbonomic, Inc. Managing resources in computer systems using action permits
USRE48714E1 (en) 2009-06-26 2021-08-31 Turbonomic, Inc. Managing application performance in virtualization systems
USRE48680E1 (en) 2009-06-26 2021-08-10 Turbonomic, Inc. Managing resources in container systems
US9858123B1 (en) 2014-11-10 2018-01-02 Turbonomic, Inc. Moving resource consumers in computer systems
US10346775B1 (en) 2015-11-16 2019-07-09 Turbonomic, Inc. Systems, apparatus and methods for cost and performance-based movement of applications and workloads in a multiple-provider system
US9672545B2 (en) 2009-08-06 2017-06-06 International Business Machines Corporation Optimizing license use for software license attribution
US20140289184A1 (en) * 2009-09-09 2014-09-25 Sanjeev Kumar Biswas License structure representation for license management
US8561131B1 (en) * 2011-06-30 2013-10-15 Crimson Corporation Allocating products to licenses on a computing device

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1912885B (zh) * 1995-02-13 2010-12-22 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US5790664A (en) * 1996-02-26 1998-08-04 Network Engineering Software, Inc. Automated system for management of licensed software
CN1237804C (zh) * 2001-04-19 2006-01-18 松下电器产业株式会社 许可证管理系统、许可证管理设备、中继设备和终端设备
CN100487626C (zh) * 2001-10-30 2009-05-13 国际商业机器公司 用于控制数字编码产品使用的计算机实现方法和系统
US7571143B2 (en) * 2002-01-15 2009-08-04 Hewlett-Packard Development Company, L.P. Software pay-per-use pricing
DE10249678A1 (de) * 2002-10-24 2004-05-13 Siemens Ag Progressive Lizenzierung komponenten-basierter MES-Software
US20040249756A1 (en) * 2003-06-03 2004-12-09 Bea Systems, Inc. Self-service customer license management application allowing software version upgrade and downgrade
US7734550B1 (en) * 2003-10-07 2010-06-08 Microsoft Corporation Method and system for identifying the controlling license for installed software
US7500108B2 (en) * 2004-03-01 2009-03-03 Microsoft Corporation Metered execution of code
US20060015466A1 (en) * 2004-07-15 2006-01-19 Mario Noioso Method and apparatus for controlling and metering usage of software products with an optimized license use
US20060165005A1 (en) * 2004-11-15 2006-07-27 Microsoft Corporation Business method for pay-as-you-go computer and dynamic differential pricing

Also Published As

Publication number Publication date
TW200837599A (en) 2008-09-16
EP2078273A1 (en) 2009-07-15
US20080109241A1 (en) 2008-05-08
WO2008052820A1 (en) 2008-05-08
KR101107946B1 (ko) 2012-01-25

Similar Documents

Publication Publication Date Title
KR101107946B1 (ko) 동적으로 최적화된 라이선스 사용으로 소프트웨어 제품의 사용을 계량하기 위한 방법, 시스템 및 컴퓨터 프로그램
KR101790792B1 (ko) 가상화 환경에서 라이센스 권리부여의 관리를 위한 시스템 및 방법
US10572688B2 (en) Blockchain based software licensing enforcement
US7849017B2 (en) Enforced seat-based licensing
US20120041844A1 (en) Elastic licensing of software in a cloud environment
US7716476B2 (en) Selectively authorizing software functionality after installation of the software
US9710621B1 (en) Platform for cloud application software
US8805743B2 (en) Tracking, distribution and management of apportionable licenses granted for distributed software products
US20130013767A1 (en) System and method for managing software provided as cloud service
US20060015466A1 (en) Method and apparatus for controlling and metering usage of software products with an optimized license use
Barati et al. Privacy-aware cloud auditing for GDPR compliance verification in online healthcare
KR20120085772A (ko) 하이퍼바이저 가상 실행 환경에서 사용-기반 애플리케이션 라이센싱을 위한 시스템 및 방법
US20040025157A1 (en) Installation of a data processing solution
US20040073789A1 (en) Method for collaborative software licensing of electronically distributed computer programs
KR20090097174A (ko) 소프트웨어 라이센스에서의 조건부 정책
Almorsy et al. Mdse@ r: model-driven security engineering at runtime
CN108874501A (zh) 软件定义的微服务
Abbadi Self-managed services conceptual model in trustworthy clouds’ infrastructure
Prakash et al. Cloud serverless security and services: a survey
US20070038572A1 (en) Method, system and computer program for metering software usage
CA2844667C (en) System and method for electronic distribution of software and data
US7941377B2 (en) Method and apparatus for metering usage of software products with automatic catalog population
Watson Introducing supporting infrastructure for trusted operating system support in FreeBSD
Wang et al. Cobweb: Practical remote attestation using contextual graphs
Nadgowda et al. tapiserí: Blueprint to modernize DevSecOps for real world

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee