KR20220003056A - 관리형 네트워크에 의해 사용되는 소프트웨어의 결정 및 조정 - Google Patents

관리형 네트워크에 의해 사용되는 소프트웨어의 결정 및 조정 Download PDF

Info

Publication number
KR20220003056A
KR20220003056A KR1020217039051A KR20217039051A KR20220003056A KR 20220003056 A KR20220003056 A KR 20220003056A KR 1020217039051 A KR1020217039051 A KR 1020217039051A KR 20217039051 A KR20217039051 A KR 20217039051A KR 20220003056 A KR20220003056 A KR 20220003056A
Authority
KR
South Korea
Prior art keywords
software
amounts
publishers
pane
software packages
Prior art date
Application number
KR1020217039051A
Other languages
English (en)
Other versions
KR102665243B1 (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 KR20220003056A publication Critical patent/KR20220003056A/ko
Application granted granted Critical
Publication of KR102665243B1 publication Critical patent/KR102665243B1/ko

Links

Images

Classifications

    • 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
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • 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
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0483Interaction with page-structured environments, e.g. book metaphor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history
    • H04L41/0853Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/16Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/22Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5058Service discovery by the service manager
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04803Split screen, i.e. subdividing the display area or the window area into separate subareas
    • 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
    • G06Q2220/00Business processing using cryptography
    • G06Q2220/10Usage protection of distributed data files
    • G06Q2220/18Licensing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0213Standardised network management protocols, e.g. simple network management protocol [SNMP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities

Abstract

데이터베이스는 (i) 각각과 연관된 퍼블리셔들, 제목들, 및 카테고리들을 포함하는, 소프트웨어 관리 툴을 통해 관리된 소프트웨어 패키지들, 및 (ii) 각각과 연관된 설명들 및 금액들을 포함하는 복수의 소프트웨어 활동의 표현들을 포함할 수 있다. 서버 디바이스(202)는 설명들로부터 소프트웨어 활동들의 퍼블리셔들, 제목들, 및 카테고리들을 예측하는 소프트웨어 활동들의 분류들을 획득하도록 구성될 수 있다. 서버 디바이스(202)는 (i) 비관리형 소프트웨어 패키지들, 및 (ii) 소프트웨어 패키지들과 연관된 금액들을 식별하기 위해 소프트웨어 패키지들을 분류들과 추가로 비교할 수 있다. 서버 디바이스(202)는 또한 제1 및 제2 페인들(1210, 1212)을 묘사하는 그래픽 사용자 인터페이스(1200)의 표현을 송신할 수 있으며, 제1 페인(1210)은 각각의 총 퍼블리셔 금액들 및 비관리형 소프트웨어 패키지들 중 임의의 것이 퍼블리셔들 각각에 기인하는지와 함께 퍼블리셔들을 리스팅하고, 제2 페인(1212)은 시간에 따라 발생된 금액들을 묘사하는 차트를 포함한다.

Description

관리형 네트워크에 의해 사용되는 소프트웨어의 결정 및 조정
중기업 및 대기업은 그들의 네트워크들 전체에 걸쳐 복수의 소프트웨어 패키지를 배치하고 제3자 또는 클라우드 기반 제공자들을 통해 액세스가능한 다른 소프트웨어 패키지들을 사용할 수 있다. 일부 경우들에, 이들 패키지들 중 수백 또는 수천개는 다양한 유형들의 컴퓨팅 디바이스들 상에 설치될 수 있다. 흔히, 기업 내의 정보 기술(IT) 전문가들은 배치되거나 사용되는 소프트웨어 패키지들에 대한 명확한 그림을 가지고 있지 않으며, 이들 패키지들이 적절히 라이센싱되는지 또는 기능이 중복되는지는 더 말할 것도 없다. 그 결과, 기업들은 그들의 소프트웨어 자산들을 이해하고 최적화하려고 시도하는 다량의 노력을 낭비할 수 있지만, 여전히 이 목표에는 미치지 못하고 있다.
소프트웨어 사용, 라이센스들 및/또는 가입들을 능동적으로 관리하기 위해, 기업들은 소프트웨어 자산 관리 툴들을 이용할 수 있다. 이들 툴들은 자격들을 이 소프트웨어(예를 들어, 기업에 의해 구매되거나 다른 방법으로 획득된 라이센스들의 유닛들)로 저장하기 위해 라이센스 관리자뿐만 아니라, 기업의 네트워크 상에 컴퓨팅 디바이스들을 프로빙함으로써 배치된 소프트웨어를 자동으로 발견하기 위해 발견 기능(discovery facility)을 포함하거나 사용할 수 있다. 추가 조정 툴은 소프트웨어 패키지들이 언더라이센싱되는 상황(따라서 기업을 법적 의무의 위험에 처하게 함) 또는 오버라이센싱되는 상황(따라서 기업을 불필요한 라이센스들에 돈을 낭비하는 위험에 처하게 함)을 식별하기 위해 발견된 소프트웨어를 자격들과 비교할 수 있다.
그러나, 자동화된 발견 툴은 특히 컴퓨팅 디바이스들이 네트워크를 주기적으로 연결하고 이탈할 때(예를 들어, 랩톱 및 모바일 디바이스들) 또는 문제의 소프트웨어가 기업에 설치되지 않고 대신에 클라우드 내에(예를 들어, 원격 제3자 네트워크 상에) 호스팅된 애플리케이션으로서 액세스될 때, 모든 설치된 소프트웨어 패키지들을 검출가능하지 않을 수 있다. 따라서, 자동화된 발견 절차들은 적어도 일부 유형들의 소프트웨어를 발견할 능력의 점에서, 범위 및 정확도에 제한될 수 있다.
본 실시예들은 소프트웨어 패키지들의 라이센싱에 관한 문서화가 네트워크 상에 있거나 네트워크 상에 배치되거나 클라우드 기반 제공자에 의해 호스팅될 수 있는 소프트웨어를 결정하기 위해 분석될 수 있는 기술들을 설명한다. 머신 학습을 사용하면, 소프트웨어 패키지의 퍼블리셔(예를 들어, 벤더) 이름 및 제품(애플리케이션 제목)은 분개 기입, 거래 설명, 송장, 청구서, 적하목록, 또는 다른 경비 기록(예를 들어, 영수증 또는 신용 카드 명세서)으로부터 결정될 수 있다. 이것은 다른 방법으로 용이하게 발견되지 않을 수 있는 소프트웨어 패키지들 및 그의 자격들의 발견을 허용한다.
이러한 방식으로 식별되는 소프트웨어 패키지들은 소프트웨어 자산 관리 툴을 통해 능동적으로 관리되는 것들과 비교된다. GUI들(Graphical user interfaces)은 비관리형 패키지들, 패키지들에 소비된 금액, 패키지들이 (예를 들어, 송장작성 또는 개별 구매들을 통해) 획득되는 방법, 및/또는 이들 패키지들이 구매 또는 배치된 코스트 센터, 부서, 또는 위치를 표시할 수 있다. 추가 GUI들은 중첩 기능을 갖는 소프트웨어 패키지들에 소비된 금액들 및 이 패키지들의 수들을 표시할 수 있다. 예를 들어, 기업들 내의 다양한 그룹들은 동일한 소프트웨어 패키지의 중복 사본들을 자신도 모르게 구매할 수 있거나, 동일한 목적을 갖는 복수의 소프트웨어 패키지를 사용하고 있을 수 있다.
본 명세서에 설명된 실시예들의 결과로서, IT 전문가들, 조달 전문가들, 및/또는 다른 사용자들은 그들의 소프트웨어 이용 및 라이센싱의 비효율들을 신속히 식별하고 해결할 수 있다.
따라서, 제1 예시적인 실시예는 (i) 소프트웨어 패키지들 각각과 연관된 퍼블리셔들, 제목들, 및 카테고리들을 포함하는, 소프트웨어 관리 툴을 통해 관리된 복수의 소프트웨어 패키지, 및 (ii) 소프트웨어 활동들 각각과 연관된 설명들 및 금액들을 포함하는 복수의 소프트웨어 활동(예를 들어, 거래들)의 표현들을 포함하는 데이터베이스를 수반할 수 있다. 제1 예시적인 실시예는 또한 서버 디바이스를 수반할 수 있다. 서버 디바이스는 소프트웨어 활동들의 머신 학습 기반 분류들을 획득하도록 구성될 수 있으며, 머신 학습 기반 분류들은 설명들로부터 소프트웨어 활동들의 퍼블리셔들, 제목들, 및 카테고리들을 예측한다. 서버 디바이스는 (i) 소프트웨어 관리 툴을 통해 관리되지 않은 비관리형 소프트웨어 패키지들, 및 (ii) 소프트웨어 패키지들의 적어도 일부와 연관된 금액들을 식별하기 위해 복수의 소프트웨어 패키지를 머신 학습 기반 분류들과 비교하도록 추가로 구성될 수 있다. 서버 디바이스는 클라이언트 디바이스에, 그래픽 사용자 인터페이스의 표현을 송신하도록 추가로 구성될 수 있으며, 그래픽 사용자 인터페이스는 제1 페인 및 제2 페인을 묘사하고, 제1 페인은 퍼블리셔들 각각에 기인하는 소프트웨어 패키지들과 연관된 각각의 총 퍼블리셔 금액들 및 비관리형 소프트웨어 패키지들 중 임의의 것이 퍼블리셔들 각각에 기인하는지와 함께 퍼블리셔들의 확장가능한 리스팅을 포함하고, 제2 페인은 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 묘사하는 차트를 포함한다.
제2 예시적인 실시예는 서버 디바이스에 의해 그리고 데이터베이스로부터, (i) 소프트웨어 패키지들 각각과 연관된 퍼블리셔들, 제목들, 및 카테고리들을 포함하는, 소프트웨어 관리 툴을 통해 관리된 복수의 소프트웨어 패키지, 및 (ii) 소프트웨어 활동들 각각과 연관된 설명들 및 금액들을 포함하는 복수의 소프트웨어 활동의 표현들을 획득하는 단계를 수반할 수 있다. 제2 예시적인 실시예는 또한 서버 디바이스에 의해, 소프트웨어 활동들의 머신 학습 기반 분류들을 획득하는 단계를 수반할 수 있으며, 머신 학습 기반 분류들은 설명들로부터 소프트웨어 활동들의 퍼블리셔들, 제목들, 및 카테고리들을 예측한다. 제2 예시적인 실시예는 또한 (i) 소프트웨어 관리 툴을 통해 관리되지 않은 비관리형 소프트웨어 패키지들, 및 (ii) 소프트웨어 패키지들의 적어도 일부와 연관된 금액들을 식별하기 위해 서버 디바이스에 의해 복수의 소프트웨어 패키지를 머신 학습 기반 분류들과 비교하는 단계를 수반할 수 있다. 제2 예시적인 실시예는 또한 서버 디바이스에 의해 그리고 클라이언트 디바이스에, 그래픽 사용자 인터페이스의 표현을 송신하는 단계를 수반할 수 있으며, 그래픽 사용자 인터페이스는 제1 페인 및 제2 페인을 묘사하고, 제1 페인은 퍼블리셔들 각각에 기인하는 소프트웨어 패키지들과 연관된 각각의 총 퍼블리셔 금액들 및 비관리형 소프트웨어 패키지들 중 임의의 것이 퍼블리셔들 각각에 기인하는지와 함께 퍼블리셔들의 확장가능한 리스팅을 포함하고, 제2 페인은 미리 결정된 시간 기간의 유닛들을 통해 금액들을 시각적으로 묘사하는 차트를 포함한다.
제3 예시적인 실시예에서, 제조 물품은, 컴퓨팅 시스템에 의한 실행 시에, 컴퓨팅 시스템으로 하여금 제1 및/또는 제2 예시적인 실시예에 따른 동작들을 수행하게 하는 프로그램 명령어들을 저장하는 비일시적 컴퓨터 판독가능한 매체를 포함할 수 있다.
제4 예시적인 실시예에서, 컴퓨팅 시스템은 적어도 하나의 프로세서뿐만 아니라, 메모리 및 프로그램 명령어들을 포함할 수 있다. 프로그램 명령어들은 메모리에 저장될 수 있고, 적어도 하나의 프로세서에 의한 실행 시에, 컴퓨팅 시스템으로 하여금 제1 및/또는 제2 예시적인 실시예에 따른 동작들을 수행하게 할 수 있다.
제5 예시적인 실시예에서, 시스템은 제1 및/또는 제2 예시적인 실시예의 동작들 각각을 수행하기 위한 다양한 수단들을 포함할 수 있다.
이들뿐만 아니라 다른 실시예들, 양태들, 이점들, 및 대안들은 적절한 경우 첨부 도면들을 참조하여 다음의 상세한 설명을 읽음으로써 관련 기술분야의 통상의 기술자에게 명백해질 것이다. 또한, 본 명세서에 제공된 이러한 요약 및 다른 설명들 및 도면들은 단지 예로서 실시예들을 예시하도록 의도되며, 따라서 많은 변형들이 가능하다. 예를 들어, 구조적 요소들 및 프로세스 단계들은 청구된 바와 같은 실시예들의 범위 내에 있으면서, 재배열, 결합, 분산, 제거, 또는 달리 변경될 수 있다.
도 1은 예시적인 실시예들에 따른 컴퓨팅 디바이스의 개략도를 도시한다.
도 2는 예시적인 실시예들에 따른 서버 디바이스 클러스터의 개략도를 도시한다.
도 3은 예시적인 실시예들에 따른 원격 네트워크 관리 아키텍처를 도시한다.
도 4는 예시적인 실시예들에 따른, 원격 네트워크 관리 아키텍처를 수반하는 통신 환경을 도시한다.
도 5a는 예시적인 실시예들에 따른, 원격 네트워크 관리 아키텍처를 수반하는 다른 통신 환경을 도시한다.
도 5b는 예시적인 실시예들에 따른 흐름도이다.
도 6a는 예시적인 실시예들에 따른 소프트웨어 카탈로그를 도시한다.
도 6b는 예시적인 실시예들에 따른 라벨링된 활동 기록들의 세트를 도시한다.
도 7a는 예시적인 실시예들에 따른 다중 계층 머신 학습 모델의 제1 계층의 트레이닝 단계를 도시한다.
도 7b는 예시적인 실시예들에 따른 다중 계층 머신 학습 모델의 제1 계층의 런타임 단계를 도시한다.
도 8은 예시적인 실시예들에 따른 다중 계층 머신 학습 모델의 제2 계층의 런타임 단계를 도시한다.
도 9는 예시적인 실시예들에 따른 다중 계층 머신 학습 모델의 제3 계층의 런타임 단계를 도시한다.
도 10은 예시적인 실시예들에 따른 흐름도이다.
도 11은 예시적인 실시예들에 따른 소프트웨어 거래들을 리스팅하는 그래픽 사용자 인터페이스를 도시한다.
도 12a, 도 12b, 도 12c, 도 12d, 도 12e, 도 12f, 및 도 12g는 예시적인 실시예들에 따른 소프트웨어 조정을 용이하게 하기 위한 그래픽 사용자 인터페이스들을 도시한다.
도 13a 및 도 13b는 예시적인 실시예들에 따른 소프트웨어 중복성 결정을 용이하게 하기 위한 그래픽 사용자 인터페이스들을 도시한다.
도 14는 예시적인 실시예들에 따른 흐름도이다.
예시적인 방법들, 디바이스들 및 시스템들이 본 명세서에 설명된다. "예" 및 "예시적인"이라는 단어들은 본 명세서에서 "예, 사례, 또는 예시로서 역할하는" 것을 의미하는데 사용된다는 것을 이해해야 한다. 본 명세서에서 "예" 또는 "예시적인"인 것으로서 설명되는 임의의 실시예 또는 특징은 이러한 것으로 언급되지 않는 한 반드시 다른 실시예들 또는 특징들보다 바람직하거나 유리한 것으로 해석되는 것은 아니다. 따라서, 본 명세서에 제시된 주제의 범위를 벗어나지 않고 다른 실시예들이 이용될 수 있고, 다른 변경들이 이루어질 수 있다.
따라서, 본 명세서에 설명된 예시적인 실시예들은 제한적인 것으로 의도되지 않는다. 본 명세서에 일반적으로 설명되고 도면들에 예시된 바와 같은 본 개시내용의 양태들은 광범위하게 다양한 상이한 구성들로 배열, 대체, 결합, 분리 및 설계될 수 있음이 쉽게 이해될 것이다. 예를 들어, 특징들의 "클라이언트" 및 "서버" 구성요소들로의 분리는 다수의 방식으로 발생할 수 있다.
또한, 맥락에서 달리 제시하지 않는 한, 도면들 각각에 도시된 특징들은 서로 조합하여 이용될 수 있다. 따라서, 도면들은 모든 도시된 특징들이 각각의 실시예에 필요한 것은 아니라는 점을 이해하면서, 하나 이상의 전체적인 실시예의 구성요소 양태들로서 일반적으로 보여져야 한다.
또한, 본 명세서 또는 청구항들에서의 요소들, 블록들, 또는 단계들의 임의의 열거는 명료함을 위한 것이다. 따라서, 이러한 열거는 이러한 요소들, 블록들 또는 단계들이 특정 배열을 준수하거나 특정 순서로 수행되는 것을 요구하거나 암시하는 것으로 해석되어서는 안 된다.
I. 서론
대기업은 많은 상호 관련된 동작들을 갖는 복잡한 엔티티이다. 이들 동작들 중 일부는 기업에 걸쳐, 예를 들어 인적 자원들(HR), 공급망, 정보 기술(IT), 및 재무에서 발견된다. 그러나, 각각의 기업은 또한 본질적인 능력들을 제공하고/하거나 경쟁력 있는 이점들을 생성하는 그 자신의 고유한 활동들을 갖는다.
널리 구현된 동작들을 지원하기 위해, 기업들은 전형적으로 고객 관계 관리(CRM) 및 인적 자본 관리(HCM) 패키지들과 같은 기성품인 소프트웨어 애플리케이션들을 이용한다. 그러나, 기업들은 또한 그들 자신의 고유한 요건들을 충족시키기 위해 맞춤형 소프트웨어 애플리케이션들을 필요로 할 수 있다. 대기업은 종종 수십 또는 수백 개의 이러한 맞춤형 소프트웨어 애플리케이션을 갖는다. 그럼에도 불구하고, 본 명세서의 실시예들에 의해 제공되는 이점들은 대기업들에 제한되지 않으며, 임의의 크기의 기업 또는 임의의 다른 유형의 조직에 적용가능할 수 있다.
많은 이러한 소프트웨어 애플리케이션들은 기업 내의 개별 부서들에 의해 개발된다. 이들은 간단한 스프레드시트들로부터 맞춤 제작된 소프트웨어 툴들 및 데이터베이스들까지의 범위에 있다. 그러나, 사일로화된(siloed) 맞춤형 소프트웨어 애플리케이션들의 확산은 많은 단점들을 갖는다. 이는 기업의 활동들을 실행 및 성장시키고, 혁신하며, 규제 요건들을 충족시킬 수 있는 기업의 능력에 부정적인 영향을 준다. 기업은 그 서브시스템들 및 데이터를 통합시키는 단일 시스템이 없기 때문에 그 활동들을 통합, 간소화 및 향상시키는 것이 어렵다는 것을 알 수 있다.
맞춤형 애플리케이션들을 효율적으로 생성하기 위해, 기업들은 불필요한 개발 복잡성을 제거하는 원격 호스팅된 애플리케이션 플랫폼으로부터 이익을 얻을 것이다. 이러한 플랫폼의 목표는 시간 소모적이고 반복적인 애플리케이션 개발 작업들을 줄여서, 다른 역할들의 소프트웨어 엔지니어들 및 개인들이 고유한 고가치 특징들의 개발에 집중할 수 있게 하는 것이다.
이 목표를 달성하기 위해, 기업 전체에 걸쳐 작업흐름들을 지능적으로 자동화하기 위해, aPaaS(Application Platform as a Service)의 개념이 도입된다. aPaaS 시스템은 기업으로부터 원격으로 호스팅되지만, 보안 접속들을 통해 기업 내의 데이터, 애플리케이션들, 및 서비스들에 액세스할 수 있다. 이러한 aPaaS 시스템은 다수의 유리한 능력들 및 특성들을 가질 수 있다. 이들 이점들 및 특성들은 IT, HR, CRM, 고객 서비스, 애플리케이션 개발, 및 보안에 대한 기업의 활동들 및 작업흐름을 향상시킬 수 있다.
aPaaS 시스템은 모델 뷰 제어기(MVC) 애플리케이션들의 개발 및 실행을 지원할 수 있다. MVC 애플리케이션들은, 정보가 사용자에게 제시되는 방식으로부터 정보의 표현들을 분리하기 위해, 그 기능을 3개의 상호연결된 부분들(모델, 뷰, 및 제어기)로 분할함으로써, 효율적인 코드 재이용 및 병행 개발을 허용한다. 이러한 애플리케이션들은 웹 기반일 수 있고, 생성, 판독, 업데이트, 삭제(CRUD) 능력들을 제공할 수 있다. 이것은 새로운 애플리케이션들이 공통 애플리케이션 인프라스트럭처 상에 구축되는 것을 허용한다.
aPaaS 시스템은 그래픽 사용자 인터페이스(GUI) 개발을 위한 위젯들의 표준화된 세트와 같은 표준화된 애플리케이션 구성요소들을 지원할 수 있다. 이러한 방식으로, aPaaS 시스템을 이용하여 구축된 애플리케이션들은 공통의 외관 및 느낌을 갖는다. 다른 소프트웨어 구성요소들 및 모듈들이 또한 표준화될 수 있다. 일부 경우들에, 이러한 외관 및 느낌은 기업의 맞춤형 로고들 및/또는 컬러 스킴들로 브랜드화되거나 스키닝될 수 있다.
aPaaS 시스템은 메타데이터를 이용하여 애플리케이션들의 거동을 구성하는 능력을 지원할 수 있다. 이것은 애플리케이션 거동들이 특정의 요구를 충족시키도록 신속하게 적응될 수 있게 한다. 이러한 접근법은 개발 시간을 감소시키고 유연성을 증가시킨다. 또한, aPaaS 시스템은 메타데이터 생성 및 관리를 용이하게 하는 GUI 툴들을 지원할 수 있고, 따라서 메타데이터의 에러들을 감소시킨다.
aPaaS 시스템은 애플리케이션들 사이의 명확히 정의된 인터페이스들을 지원할 수 있어서, 소프트웨어 개발자들은 원하지 않는 애플리케이션간 종속성들을 피할 수 있다. 따라서, aPaaS 시스템은 지속 상태 정보 및 다른 데이터가 저장되는 서비스 계층을 구현할 수 있다.
aPaaS 시스템은 통합 특징들의 풍부한 세트를 지원할 수 있어서, 그 위의 애플리케이션들은 레거시 애플리케이션들 및 제3자 애플리케이션들과 상호작용할 수 있다. 예를 들어, aPaaS 시스템은 레거시 HR, IT, 및 회계 시스템들과 통합되는 맞춤형 직원-온보딩 시스템을 지원할 수 있다.
aPaaS 시스템은 기업 등급 보안을 지원할 수 있다. 또한, aPaaS 시스템은 원격으로 호스팅될 수 있기 때문에, 기업 내의 시스템들 또는 기업 외부에서 호스팅되는 제3자 네트워크들 및 서비스들과 상호작용할 때 보안 절차들을 또한 이용해야 한다. 예를 들어, aPaaS 시스템은 공통 보안 위협들을 검출하고 식별하기 위해 기업 및 다른 당사자들 사이에 데이터를 공유하도록 구성될 수 있다.
aPaaS 시스템의 다른 특징들, 기능, 및 이점들이 존재할 수 있다. 이 설명은 예시를 위한 것이며, 제한하려는 것이 아니다.
aPaaS 개발 프로세스의 예로서, 소프트웨어 개발자는 aPaaS 시스템을 이용하여 새로운 애플리케이션을 생성하도록 작업될 수 있다. 첫째, 개발자는 애플리케이션이 이용하는 데이터의 유형들 및 그 사이의 관계들을 지정하는 데이터 모델을 정의할 수 있다. 그 후, aPaaS 시스템의 GUI를 통해, 개발자는 데이터 모델을 입력(예를 들어, 업로드)한다. aPaaS 시스템은 대응하는 데이터베이스 테이블들, 필드들, 및 관계들 모두를 자동으로 생성하며, 이들은 이후 객체 지향 서비스 계층을 통해 액세스될 수 있다.
또한, aPaaS 시스템은 또한 클라이언트측 인터페이스들 및 서버측 CRUD 로직을 갖는 완전 기능적 MVC 애플리케이션을 구축할 수 있다. 이 생성된 애플리케이션은 사용자에 대한 추가 개발의 기초로서 역할을 할 수 있다. 유리하게도, 개발자는 기본 애플리케이션 기능에 많은 시간의 양을 소비할 필요가 없다. 게다가, 애플리케이션이 웹 기반일 수 있기 때문에, 애플리케이션은 임의의 인터넷 가능 클라이언트 디바이스로부터 액세스될 수 있다. 대안적으로 또는 추가적으로, 예를 들어, 인터넷 서비스가 이용가능하지 않을 때, 애플리케이션의 로컬 사본이 액세스될 수 있다.
aPaaS 시스템은 또한 애플리케이션들에 추가될 수 있는 미리 정의된 기능의 풍부한 세트를 지원할 수 있다. 이러한 특징들은 검색, 이메일, 템플레이팅, 작업흐름 설계, 보고, 분석, 소셜 미디어, 스크립팅, 모바일 친화적 출력, 및 맞춤화된 GUI들에 대한 지원을 포함한다.
이하의 실시예들은 예시적인 aPaaS 시스템들의 아키텍처 및 기능적 양태들뿐만 아니라, 그 특징들 및 이점들을 설명한다.
II. 예시적인 컴퓨팅 디바이스들 및 클라우드 기반 컴퓨팅 환경들
도 1은 본 명세서의 실시예들에 따라 동작하도록 배열된 컴퓨팅 디바이스에 포함될 수 있는 구성요소들 중 일부를 도시하는, 컴퓨팅 디바이스(100)를 예시하는 단순화된 블록도이다. 컴퓨팅 디바이스(100)는 클라이언트 디바이스(예를 들어, 사용자에 의해 능동적으로 동작되는 디바이스), 서버 디바이스(예를 들어, 클라이언트 디바이스들에 계산 서비스들을 제공하는 디바이스), 또는 일부 다른 유형의 계산 플랫폼일 수 있다. 일부 서버 디바이스들은 특정 동작들을 수행하기 위해 때때로 클라이언트 디바이스들로서 동작할 수 있고, 일부 클라이언트 디바이스들은 서버 특징들을 포함할 수 있다.
이 예에서, 컴퓨팅 디바이스(100)는 프로세서(102), 메모리(104), 네트워크 인터페이스(106), 및 입력/출력 유닛(108)을 포함하고, 이들 모두는 시스템 버스(110) 또는 유사한 메커니즘에 의해 결합될 수 있다. 일부 실시예들에서, 컴퓨팅 디바이스(100)는 다른 구성요소들 및/또는 주변 디바이스들(예를 들어, 착탈식 저장소, 프린터들 등)을 포함할 수 있다.
프로세서(102)는 중앙 처리 유닛(CPU), 코프로세서(예를 들어, 수학, 그래픽, 또는 암호화 코프로세서), 디지털 신호 프로세서(DSP), 네트워크 프로세서, 및/또는 프로세서 동작들을 수행하는 집적 회로 또는 제어기의 형태와 같은 임의의 유형의 컴퓨터 처리 요소 중 하나 이상일 수 있다. 일부 경우들에서, 프로세서(102)는 하나 이상의 단일 코어 프로세서일 수 있다. 다른 경우들에서, 프로세서(102)는 복수의 독립적인 처리 유닛을 갖는 하나 이상의 멀티-코어 프로세서일 수 있다. 프로세서(102)는 또한 실행되는 명령어들 및 관련 데이터를 일시적으로 저장하기 위한 레지스터 메모리뿐만 아니라, 최근에 이용된 명령어들 및 데이터를 일시적으로 저장하기 위한 캐시 메모리를 포함할 수 있다.
메모리(104)는 RAM(random access memory), ROM(read-only memory), 및 비휘발성 메모리(예를 들어, 플래시 메모리, 하드 디스크 드라이브들, 솔리드 스테이트 드라이브들, CD(compact disc)들, DVD(digital video disc)들, 및/또는 테이프 저장소)를 포함하지만 이에 제한되지 않는 임의의 형태의 컴퓨터 이용가능한 메모리일 수 있다. 따라서, 메모리(104)는 주 메모리 유닛들뿐만 아니라 장기 저장소 둘 다를 나타낸다. 다른 유형들의 메모리는 생물학적 메모리를 포함할 수 있다.
메모리(104)는 프로그램 명령어들 및/또는 프로그램 명령어들이 동작할 수 있는 데이터를 저장할 수 있다. 예로서, 메모리(104)는 이들 프로그램 명령어들을 비일시적 컴퓨터 판독가능한 매체 상에 저장할 수 있고, 따라서 명령어들은 본 명세서 또는 첨부 도면들에 개시된 방법들, 프로세스들, 또는 동작들 중 임의의 것을 수행하기 위해 프로세서(102)에 의해 실행가능하다.
도 1에 도시된 바와 같이, 메모리(104)는 펌웨어(104A), 커널(104B), 및/또는 애플리케이션들(104C)을 포함할 수 있다. 펌웨어(104A)는 컴퓨팅 디바이스(100)의 일부 또는 전부를 부팅하거나 다른 방식으로 개시하는데 이용되는 프로그램 코드일 수 있다. 커널(104B)은 메모리 관리, 프로세스들의 스케줄링 및 관리, 입력/출력, 및 통신을 위한 모듈들을 포함하는 운영 체제일 수 있다. 커널(104B)은 또한 운영 체제가 컴퓨팅 디바이스(100)의 하드웨어 모듈들(예를 들어, 메모리 유닛들, 네트워킹 인터페이스들, 포트들, 및 버스들)과 통신할 수 있게 하는 디바이스 드라이버들을 포함할 수 있다. 애플리케이션들(104C)은 웹 브라우저들 또는 이메일 클라이언트들과 같은 하나 이상의 사용자 공간 소프트웨어 프로그램뿐만 아니라, 이러한 프로그램들에 의해 이용되는 임의의 소프트웨어 라이브러리들일 수 있다. 메모리(104)는 또한 이들 및 다른 프로그램들 및 애플리케이션들에 의해 이용되는 데이터를 저장할 수 있다.
네트워크 인터페이스(106)는 이더넷(예를 들어, 고속 이더넷, 기가비트 이더넷 등)과 같은 하나 이상의 유선 인터페이스의 형태를 취할 수 있다. 네트워크 인터페이스(106)는 또한 동축 케이블들 또는 전력선들과 같은 하나 이상의 비-이더넷 매체를 통해, 또는 SONET(Synchronous Optical Networking) 또는 DSL(digital subscriber line) 기술들과 같은 광역 매체를 통해 통신을 지원할 수 있다. 네트워크 인터페이스(106)는 추가로 IEEE 802.11(Wifi), BLUETOOTH®, GPS(global positioning system), 또는 광역 무선 인터페이스와 같은 하나 이상의 무선 인터페이스의 형태를 취할 수 있다. 그러나, 다른 형태들의 물리적 계층 인터페이스 및 다른 유형들의 표준 또는 독점 통신 프로토콜들이 네트워크 인터페이스(106)를 통해 이용될 수 있다. 또한, 네트워크 인터페이스(106)는 복수의 물리적 인터페이스를 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스(100)의 일부 실시예들은 이더넷, BLUETOOTH® 및 Wifi 인터페이스들을 포함할 수 있다.
입력/출력 유닛(108)은 컴퓨팅 디바이스(100)와의 사용자 및 주변 디바이스의 상호작용을 용이하게 할 수 있다. 입력/출력 유닛(108)은 키보드, 마우스, 터치 스크린 등과 같은 하나 이상의 유형의 입력 디바이스를 포함할 수 있다. 유사하게, 입력/출력 유닛(108)은 스크린, 모니터, 프린터, 및/또는 하나 이상의 발광 다이오드(LED)와 같은 하나 이상의 유형의 출력 디바이스를 포함할 수 있다. 추가적으로 또는 대안적으로, 컴퓨팅 디바이스(100)는, 예를 들어, USB(universal serial bus) 또는 HDMI(high-definition multimedia interface) 포트 인터페이스를 이용하여 다른 디바이스들과 통신할 수 있다.
일부 실시예들에서, 컴퓨팅 디바이스(100)와 같은 하나 이상의 컴퓨팅 디바이스는 aPaaS 아키텍처를 지원하도록 배치될 수 있다. 이들 컴퓨팅 디바이스들의 정확한 물리적 위치, 접속성 및 구성은 클라이언트 디바이스들에게 알려지지 않고/않거나 중요하지 않을 수 있다. 따라서, 컴퓨팅 디바이스들은 다양한 원격 데이터 센터 위치들에 하우징될 수 있는 "클라우드 기반" 디바이스들로 지칭될 수 있다.
도 2는 예시적인 실시예들에 따른 클라우드 기반 서버 클러스터(200)를 도시한다. 도 2에서, 컴퓨팅 디바이스(예를 들어, 컴퓨팅 디바이스(100))의 동작들은 서버 디바이스들(202), 데이터 저장소(204) 및 라우터들(206) 사이에 분산될 수 있으며, 이들 모두는 로컬 클러스터 네트워크(208)에 의해 접속될 수 있다. 서버 클러스터(200) 내의 서버 디바이스들(202), 데이터 저장소들(204), 및 라우터들(206)의 수는 서버 클러스터(200)에 할당된 컴퓨팅 작업(들) 및/또는 애플리케이션들에 의존할 수 있다.
예를 들어, 서버 디바이스들(202)은 컴퓨팅 디바이스(100)의 다양한 컴퓨팅 작업들을 수행하도록 구성될 수 있다. 따라서, 컴퓨팅 작업들은 하나 이상의 서버 디바이스(202) 사이에 분산될 수 있다. 이러한 컴퓨팅 작업들이 병렬로 수행될 수 있다면, 이러한 작업들의 분산은 이러한 작업들을 완료하고 결과를 반환하는 총 시간을 줄일 수 있다. 단순화를 위해, 서버 클러스터(200) 및 개별 서버 디바이스들(202) 둘 다를 "서버 디바이스"로 지칭할 수 있다. 이러한 명명법은 하나 이상의 별개의 서버 디바이스, 데이터 저장 디바이스 및 클러스터 라우터가 서버 디바이스 동작들에 수반될 수 있음을 암시하는 것으로 이해되어야 한다.
데이터 저장소(204)는 하드 디스크 드라이브들 및/또는 솔리드 스테이트 드라이브들의 그룹들에 대한 판독 및 기입 액세스를 관리하도록 구성된 드라이브 어레이 제어기들을 포함하는 데이터 저장소 어레이들일 수 있다. 드라이브 어레이 제어기들은, 단독으로 또는 서버 디바이스들(202)과 함께, 데이터 저장소(204)에 저장된 데이터의 백업 또는 중복 사본들을 관리하여, 서버 디바이스들(202) 중 하나 이상이 데이터 저장소(204)의 유닛들에 액세스하는 것을 방지하는 드라이브 실패들 또는 다른 유형들의 실패들에 대해 보호하도록 또한 구성될 수 있다. 드라이브들 이외의 다른 유형들의 메모리가 이용될 수 있다.
라우터들(206)은 서버 클러스터(200)에 대한 내부 및 외부 통신을 제공하도록 구성된 네트워킹 장비를 포함할 수 있다. 예를 들어, 라우터들(206)은 (i) 로컬 클러스터 네트워크(208)를 통한 서버 디바이스들(202)과 데이터 저장소(204) 사이의 네트워크 통신들, 및/또는 (ii) 네트워크(212)에 대한 통신 링크(210)를 통한 서버 클러스터(200)와 다른 디바이스들 사이의 네트워크 통신들을 제공하도록 구성된 하나 이상의 패킷-스위칭 및/또는 라우팅 디바이스(스위치들 및/또는 게이트웨이들을 포함함)를 포함할 수 있다.
추가적으로, 라우터들(206)의 구성은 서버 디바이스들(202) 및 데이터 저장소(204)의 데이터 통신 요건들, 로컬 클러스터 네트워크(208)의 레이턴시 및 처리량, 통신 링크(210)의 레이턴시, 처리량, 및 비용, 및/또는 시스템 아키텍처의 비용, 속도, 장애-허용도, 탄력성, 효율성 및/또는 다른 설계 목표들에 기여할 수 있는 다른 인자들에 적어도 부분적으로 기반할 수 있다.
가능한 예로서, 데이터 저장소(204)는 SQL(structured query language) 데이터베이스와 같은 임의의 형태의 데이터베이스를 포함할 수 있다. 테이블들, 어레이들, 리스트들, 트리들 및 튜플들을 포함하지만 이에 제한되지 않는 다양한 유형들의 데이터 구조들이 이러한 데이터베이스에 정보를 저장할 수 있다. 또한, 데이터 저장소(204) 내의 임의의 데이터베이스들은 모놀리식이거나 복수의 물리적 디바이스에 걸쳐 분산될 수 있다.
서버 디바이스들(202)은 데이터 저장소(204)에 데이터를 송신하고 그로부터 데이터를 수신하도록 구성될 수 있다. 이러한 송신 및 검색은, 각각, SQL 질의들 또는 다른 유형들의 데이터베이스 질의들 및 이러한 질의들의 출력의 형태를 취할 수 있다. 추가적인 텍스트, 이미지들, 비디오 및/또는 오디오가 또한 포함될 수 있다. 또한, 서버 디바이스들(202)은 수신된 데이터를 웹 페이지 표현들로 조직화할 수 있다. 이러한 표현은 HTML(hypertext markup language), XML(extensible markup language), 또는 일부 다른 표준화된 또는 독점적 포맷과 같은 마크업 언어의 형태를 취할 수 있다. 또한, 서버 디바이스들(202)은 Perl, Python, PHP 하이퍼텍스트 프리프로세서(Hypertext Preprocessor)(PHP), ASP(Active Server Pages), JavaScript 등과 같은, 그러나 이에 제한되지 않는 다양한 유형들의 컴퓨터화된 스크립팅 언어들을 실행하는 능력을 가질 수 있다. 이들 언어들로 작성된 컴퓨터 프로그램 코드는 클라이언트 디바이스들에게 웹 페이지들을 제공하는 것은 물론, 웹 페이지들과의 클라이언트 디바이스의 상호작용을 용이하게 할 수 있다.
III. 예시적인 원격 네트워크 관리 아키텍처
도 3은 예시적인 실시예들에 따른 원격 네트워크 관리 아키텍처를 도시한다. 이 아키텍처는 3개의 주요 구성요소, 즉 관리형 네트워크(300), 원격 네트워크 관리 플랫폼(320) 및 제3자 네트워크(340)를 포함하며, 이들 모두는 인터넷(350)에 의해 접속된다.
관리형 네트워크(300)는, 예를 들어, 컴퓨팅 및 통신 작업들은 물론, 데이터의 저장을 위해 엔티티에 의해 이용되는 기업 네트워크일 수 있다. 따라서, 관리형 네트워크(300)는 클라이언트 디바이스들(302), 서버 디바이스들(304), 라우터들(306), 가상 머신들(308), 방화벽(310) 및/또는 프록시 서버들(312)을 포함할 수 있다. 클라이언트 디바이스들(302)은 컴퓨팅 디바이스(100)에 의해 구현될 수 있고, 서버 디바이스들(304)은 컴퓨팅 디바이스(100) 또는 서버 클러스터(200)에 의해 구현될 수 있으며, 라우터들(306)은 임의의 유형의 라우터, 스위치 또는 게이트웨이일 수 있다.
가상 머신들(308)은 컴퓨팅 디바이스(100) 또는 서버 클러스터(200) 중 하나 이상에 의해 구현될 수 있다. 일반적으로, 가상 머신은 컴퓨팅 시스템의 에뮬레이션이고, 물리적 컴퓨터의 기능(예를 들어, 프로세서, 메모리, 및 통신 자원들)을 모방한다. 서버 클러스터(200)와 같은 하나의 물리적 컴퓨팅 시스템은 수천 개까지의 개별 가상 머신들을 지원할 수 있다. 일부 실시예들에서, 가상 머신들(308)은 개별 가상 머신들로의 물리적 컴퓨팅 자원들의 할당뿐만 아니라 성능 및 에러 보고를 용이하게 하는 중앙집중식 서버 디바이스 또는 애플리케이션에 의해 관리될 수 있다. 기업들은 종종 컴퓨팅 자원들을 필요한 방식에 따라 효율적으로 할당하기 위해 가상 머신들을 이용한다. 가상화된 컴퓨팅 시스템들의 제공자들은 VMWARE® 및 MICROSOFT®를 포함한다.
방화벽(310)은, 관리형 네트워크(300)로부터 개시되는 허가된 통신을 허용하면서, 관리형 네트워크(300)를 그 내부의 디바이스들, 애플리케이션들, 및 서비스들에 액세스하려는 비허가된 시도들로부터 보호하는 하나 이상의 특수 라우터 또는 서버 디바이스일 수 있다. 방화벽(310)은 또한 침입 검출, 웹 필터링, 바이러스 스캐닝, 애플리케이션-계층 게이트웨이들, 및 다른 애플리케이션들 또는 서비스들을 제공할 수 있다. 도 3에 도시되지 않은 일부 실시예들에서, 관리형 네트워크(300)는 원격 네트워크 관리 플랫폼(320)과 통신하는 하나 이상의 가상 사설 네트워크(VPN) 게이트웨이를 포함할 수 있다(아래 참조).
관리형 네트워크(300)는 또한 하나 이상의 프록시 서버(312)를 포함할 수 있다. 프록시 서버들(312)의 실시예는 관리형 네트워크(300), 원격 네트워크 관리 플랫폼(320) 및 제3자 네트워크(340) 사이의 데이터의 통신 및 이동을 용이하게 하는 서버 디바이스일 수 있다. 특히, 프록시 서버들(312)은 원격 네트워크 관리 플랫폼(320)의 하나 이상의 계산 인스턴스와의 보안 통신 세션들을 확립하고 유지할 수 있다. 이러한 세션에 의해, 원격 네트워크 관리 플랫폼(320)은 관리형 네트워크(300) 및 그 구성요소들의 아키텍처 및 구성의 양태들을 발견하고 관리할 수 있다. 가능하게는 프록시 서버들(312)의 도움으로, 원격 네트워크 관리 플랫폼(320)은 또한 관리형 네트워크(300)에 의해 이용되는 제3자 네트워크들(340)의 양태들을 발견 및 관리할 수 있다.
방화벽(310)과 같은 방화벽들은, 이러한 세션이 궁극적으로 방화벽 뒤로부터(즉, 관리형 네트워크(300) 상의 디바이스로부터) 개시되었거나 방화벽이 세션을 지원하도록 명시적으로 구성되었지 않는 한, 인터넷(350)을 통해 들어오는 모든 통신 세션들을 전형적으로 거부한다. 프록시 서버들(312)을 방화벽(310) 뒤에(예를 들어, 관리형 네트워크(300) 내에 있고 방화벽(310)에 의해 보호됨) 배치함으로써, 프록시 서버들(312)은 방화벽(310)을 통해 이들 통신 세션들을 개시할 수 있다. 따라서, 방화벽(310)은 원격 네트워크 관리 플랫폼(320)으로부터 들어오는 세션들을 지원하도록 특별히 구성될 필요가 없을 수 있고, 이에 의해 관리형 네트워크(300)에 대한 잠재적인 보안 위험들을 피할 수 있다.
일부 경우들에서, 관리형 네트워크(300)는 몇몇 디바이스들 및 적은 수의 네트워크들로 구성될 수 있다. 다른 배치들에서, 관리형 네트워크(300)는 복수의 물리적 위치에 걸쳐 있을 수 있고, 수백 개의 네트워크들 및 수십만 개의 디바이스들을 포함할 수 있다. 따라서, 도 3에 도시된 아키텍처는 몇 자릿수만큼 상향 또는 하향 스케일링할 수 있다.
또한, 관리형 네트워크(300)의 크기, 아키텍처, 및 접속성에 따라, 다양한 수의 프록시 서버들(312)이 내부에 배치될 수 있다. 예를 들어, 프록시 서버들(312) 각각은 관리형 네트워크(300)의 일부에 관한 원격 네트워크 관리 플랫폼(320)과의 통신을 담당할 수 있다. 대안적으로 또는 추가적으로, 부하 균형, 중복성, 및/또는 높은 가용성을 위해 2개 이상의 프록시 서버의 세트가 관리형 네트워크(300)의 이러한 부분에 할당될 수 있다.
원격 네트워크 관리 플랫폼(320)은 사용자들에게, 특히 관리형 네트워크(300)의 운영자들에게 aPaaS 서비스들을 제공하는 호스팅된 환경이다. 이러한 서비스들은 예를 들어 웹 기반 포털들의 형태를 취할 수 있다. 따라서, 사용자는, 예를 들어, 클라이언트 디바이스들(302)로부터 또는 잠재적으로는 관리형 네트워크(300) 외부의 클라이언트 디바이스로부터 원격 네트워크 관리 플랫폼(320)에 안전하게 액세스할 수 있다. 웹 기반 포털들을 통해, 사용자들은 애플리케이션들을 설계, 테스트 및 배치하고, 보고들을 생성하고, 분석들을 보고, 다른 작업들을 수행할 수 있다.
도 3에 도시된 바와 같이, 원격 네트워크 관리 플랫폼(320)은 4개의 계산 인스턴스(322, 324, 326 및 328)를 포함한다. 이러한 인스턴스들 각각은 특정 고객에게 이용가능한 웹 포털들, 서비스들, 및 애플리케이션들(예를 들어, 전체 기능 aPaaS 시스템)의 세트를 제공하는 하나 이상의 서버 디바이스 및/또는 하나 이상의 데이터베이스를 나타낼 수 있다. 일부 경우들에서, 단일 고객은 복수의 계산 인스턴스를 이용할 수 있다. 예를 들어, 관리형 네트워크(300)는 원격 네트워크 관리 플랫폼(320)의 기업 고객일 수 있고, 계산 인스턴스들(322, 324 및 326)을 이용할 수 있다. 하나의 고객에게 복수의 인스턴스를 제공하는 이유는 고객이 그 애플리케이션들 및 서비스들을 독립적으로 개발, 테스트 및 배치하기를 원할 수 있기 때문이다. 따라서, 계산 인스턴스(322)는 관리형 네트워크(300)와 관련된 애플리케이션 개발에 전용될 수 있고, 계산 인스턴스(324)는 이러한 애플리케이션들을 테스트하는 것에 전용될 수 있으며, 계산 인스턴스(326)는 테스트된 애플리케이션들 및 서비스들의 라이브 동작에 전용될 수 있다. 계산 인스턴스는 또한 호스팅된 인스턴스, 원격 인스턴스, 고객 인스턴스로 지칭되거나, 또는 어떤 다른 지정에 의해 지칭될 수 있다. 계산 인스턴스 상에 배치되는 임의의 애플리케이션은, 계산 인스턴스 내의 데이터베이스들에 대한 그 액세스가 그 안의 특정 요소들(예를 들어, 하나 이상의 특정 데이터베이스 테이블 또는 하나 이상의 데이터베이스 테이블을 갖는 특정 행들)로 제한될 수 있다는 점에서, 범위가 정해진 애플리케이션일 수 있다.
명확함을 위해, 본 명세서에서의 개시내용은 물리적 하드웨어, 소프트웨어, 및 그 배열을 "계산 인스턴스"라고 한다. 사용자들이 흔히 그에 의해 제공되는 그래픽 사용자 인터페이스들을 "인스턴스들"이라고 지칭할 수 있다는 것에 유의한다. 그러나, 본 명세서에서 달리 정의되지 않는 한, "계산 인스턴스"는 원격 네트워크 관리 플랫폼(320) 내에 배치된 컴퓨팅 시스템이다.
원격 네트워크 관리 플랫폼(320)의 멀티-인스턴스 아키텍처는 종래의 멀티-테넌트 아키텍처들과 대조적이며, 이에 비해 멀티-인스턴스 아키텍처들은 몇몇 이점들을 나타낸다. 멀티-테넌트 아키텍처들에서, 상이한 고객들(예를 들어, 기업들)로부터의 데이터는 단일 데이터베이스에 혼합된다. 이들 고객들의 데이터가 서로 분리되어 있지만, 단일 데이터베이스를 동작시키는 소프트웨어에 의해 분리가 시행된다. 그 결과, 이 시스템에서의 보안 위반은 모든 고객들의 데이터에 영향을 미쳐, 특히 정부, 건강관리, 및/또는 재무 규제를 받는 엔티티들에 대한 추가 위험들을 생성할 수 있다. 또한, 하나의 고객에 영향을 주는 임의의 데이터베이스 동작들은 어쩌면 그 데이터베이스를 공유하는 모든 고객들에게 영향을 줄 것이다. 따라서, 하드웨어 또는 소프트웨어 에러들로 인한 정전이 있다면, 이 정전은 모든 이러한 고객들에게 영향을 미친다. 마찬가지로, 데이터베이스가 하나의 고객의 요구를 충족시키도록 업그레이드되어야 하는 경우, 데이터베이스는 업그레이드 프로세스 동안 모든 고객들에게 이용가능하지 않을 것이다. 종종, 이러한 유지보수 윈도우들은 공유된 데이터베이스의 크기로 인해 길 것이다.
대조적으로, 멀티-인스턴스 아키텍처는 각각의 고객에게 전용 컴퓨팅 인스턴스에서 그 자신의 데이터베이스를 제공한다. 이것은 고객 데이터의 혼합을 방지하고, 각각의 인스턴스가 독립적으로 관리되는 것을 허용한다. 예를 들어, 하나의 고객의 인스턴스가 에러들 또는 업그레이드로 인한 정전을 경험할 때, 다른 계산 인스턴스들은 영향을 받지 않는다. 유지보수 정지 시간은, 데이터베이스가 하나의 고객의 데이터만을 포함하기 때문에 제한된다. 또한, 멀티-인스턴스 아키텍처의 더 간단한 설계는 각각의 고객 데이터베이스 및 인스턴스의 중복 사본들이 지리적으로 다양한 방식으로 배치되는 것을 허용한다. 이것은, 결함들이 검출되거나 유지보수가 수행되고 있을 때 고객의 인스턴스의 라이브 버전이 이동될 수 있는, 높은 가용성을 용이하게 한다.
일부 실시예들에서, 원격 네트워크 관리 플랫폼(320)은 이 플랫폼을 동작시키는 엔티티에 의해 제어되는 하나 이상의 중앙 인스턴스를 포함할 수 있다. 계산 인스턴스와 같이, 중앙 인스턴스는 소정 수의 물리적 또는 가상 서버들 및 데이터베이스 디바이스들을 포함할 수 있다. 이러한 중앙 인스턴스는 계산 인스턴스들 중 적어도 일부 사이에서 공유될 수 있는 데이터에 대한 저장소로서 역할을 할 수 있다. 예를 들어, 계산 인스턴스들 상에서 발생할 수 있는 공통 보안 위협들, 계산 인스턴스들 상에서 공통으로 발견되는 소프트웨어 패키지들, 및/또는 계산 인스턴스들에 배치될 수 있는 애플리케이션들에 대한 애플리케이션 저장소의 정의들은 중앙 인스턴스에 존재할 수 있다. 계산 인스턴스들은 이 데이터를 획득하기 위해 잘 정의된 인터페이스들을 통해 중앙 인스턴스들과 통신할 수 있다.
효율적인 방식으로 복수의 계산 인스턴스를 지원하기 위해, 원격 네트워크 관리 플랫폼(320)은 단일 하드웨어 플랫폼 상에서 복수의 이러한 인스턴스를 구현할 수 있다. 예를 들어, aPaaS 시스템은 서버 클러스터(200)와 같은 서버 클러스터 상에서 구현될 때, 다양한 양들의 계산, 저장, 및 통신 자원들을 인스턴스들에 전용하는 가상 머신을 동작시킬 수 있다. 그러나, 서버 클러스터(200)의 완전한 가상화는 필요하지 않을 수 있고, 다른 메커니즘들이 인스턴스들을 분리하는데 이용될 수 있다. 일부 예들에서, 각각의 인스턴스는 서버 클러스터(200) 상에 전용 계정 및 하나 이상의 전용 데이터베이스를 가질 수 있다. 대안적으로, 계산 인스턴스(322)는 복수의 물리적 디바이스에 걸쳐 있을 수 있다.
일부 경우들에서, 원격 네트워크 관리 플랫폼(320)의 단일 서버 클러스터는 복수의 독립적인 기업을 지원할 수 있다. 또한, 후술하는 바와 같이, 원격 네트워크 관리 플랫폼(320)은 부하 균형, 중복성 및/또는 높은 가용성을 용이하게 하기 위해 지리적으로 다양한 데이터 센터들에 배치된 복수의 서버 클러스터를 포함할 수 있다.
제3자 네트워크들(340)은 아웃소싱된 계산, 데이터 저장, 통신, 및 서비스 호스팅 동작들에 이용될 수 있는 원격 서버 디바이스들(예를 들어, 서버 클러스터(200)와 같은 복수의 서버 클러스터)일 수 있다. 이러한 서버들은 가상화될 수 있다(즉, 서버들은 가상 머신들일 수 있다). 제3자 네트워크들(340)의 예들은 AMAZON WEB SERVICES® 및 MICROSOFT® Azure를 포함할 수 있다. 원격 네트워크 관리 플랫폼(320)과 같이, 제3자 네트워크들(340)을 지원하는 복수의 서버 클러스터는 부하 균형, 중복성, 및/또는 높은 가용성을 위해 지리적으로 다양한 위치들에 배치될 수 있다.
관리형 네트워크(300)는 하나 이상의 제3자 네트워크(340)를 이용하여 그 클라이언트들 및 고객들에게 애플리케이션들 및 서비스들을 배치할 수 있다. 예를 들어, 관리형 네트워크(300)가 온라인 음악 스트리밍 서비스들을 제공하는 경우, 제3자 네트워크들(340)은 음악 파일들을 저장하고 웹 인터페이스 및 스트리밍 능력들을 제공할 수 있다. 이러한 방식으로, 관리형 네트워크(300)의 기업은 이들 동작들을 위해 그 자신의 서버들을 구축하고 유지할 필요가 없다.
원격 네트워크 관리 플랫폼(320)은 제3자 네트워크들(340)과 통합되어 가상 머신들 및 그 안의 관리 서비스들을 관리형 네트워크(300)에 노출시키는 모듈들을 포함할 수 있다. 이러한 모듈들은 사용자들이 가상 자원들을 요청하고 제3자 네트워크들(340)에게 유연한 보고를 제공할 수 있게 한다. 이 기능을 확립하기 위해, 관리형 네트워크(300)로부터의 사용자는 먼저 제3자 네트워크들(340)과의 계정을 확립하고 연관된 자원들의 세트를 요청할 수 있다. 이어서, 사용자는 계정 정보를 원격 네트워크 관리 플랫폼(320)의 적절한 모듈들에 입력할 수 있다. 그 다음, 이들 모듈들은 계정 내의 관리가능한 자원들을 자동으로 발견할 수 있고, 또한 이용, 성능, 및 청구와 관련된 보고들을 제공할 수 있다.
인터넷(350)은 글로벌 인터넷의 일부를 나타낼 수 있다. 그러나, 인터넷(350)은 대안적으로 사설 광역 또는 근거리 패킷 교환 네트워크와 같은 상이한 유형의 네트워크를 나타낼 수 있다.
도 4는 관리형 네트워크(300)와 계산 인스턴스(322) 사이의 통신 환경을 추가로 도시하며, 추가적인 특징들 및 대안적인 실시예들을 소개한다. 도 4에서, 계산 인스턴스(322)는 데이터 센터들(400A 및 400B)에 걸쳐 복제된다. 이러한 데이터 센터들은 아마도 상이한 도시들 또는 상이한 국가들에서 서로 지리적으로 떨어져 있을 수 있다. 각각의 데이터 센터는 원격 사용자들뿐만 아니라 관리형 네트워크(300)와의 통신을 용이하게 하는 지원 장비를 포함한다.
데이터 센터(400A)에서, 외부 디바이스들로의 그리고 이들로부터의 네트워크 트래픽은 VPN 게이트웨이(402A) 또는 방화벽(404A)을 통해 흐른다. VPN 게이트웨이(402A)는 IPSEC(Internet Protocol Security) 또는 TLS(Transport Layer Security)와 같은 보안 프로토콜을 통해 관리형 네트워크(300)의 VPN 게이트웨이(412)와 피어링될 수 있다. 방화벽(404A)은 사용자(414) 및 원격 사용자(416)와 같은 허가된 사용자들로부터의 액세스를 허용하고, 비허가된 사용자들에 대한 액세스를 거부하도록 구성될 수 있다. 방화벽(404A)을 통해, 이들 사용자들은 계산 인스턴스(322) 및 가능하게는 다른 계산 인스턴스들에 액세스할 수 있다. 부하 균형기(406A)는 계산 인스턴스(322)를 호스팅하는 하나 이상의 물리적 또는 가상 서버 디바이스 사이에 트래픽을 분산시키는데 이용될 수 있다. 부하 균형기(406A)는 클라이언트 디바이스들로부터 데이터 센터(400A)의 내부 구성(예를 들어, 계산 인스턴스(322))을 숨김으로써 사용자 액세스를 단순화할 수 있다. 예를 들어, 계산 인스턴스(322)가 복수의 데이터베이스에 대한 액세스를 공유하는 복수의 물리적 또는 가상 컴퓨팅 디바이스를 포함하는 경우, 부하 균형기(406A)는 하나의 컴퓨팅 디바이스 또는 데이터베이스가 다른 것들보다 상당히 더 바쁘지 않도록 이들 컴퓨팅 디바이스들 및 데이터베이스들에 걸쳐 네트워크 트래픽 및 처리 작업들을 분산시킬 수 있다. 일부 실시예들에서, 계산 인스턴스(322)는 VPN 게이트웨이(402A), 방화벽(404A), 및 부하 균형기(406A)를 포함할 수 있다.
데이터 센터(400B)는 데이터 센터(400A)에 그 자신의 버전들의 구성요소들을 포함시킬 수 있다. 따라서, VPN 게이트웨이(402B), 방화벽(404B), 및 부하 균형기(406B)는, 각각, VPN 게이트웨이(402A), 방화벽(404A), 및 부하 균형기(406A)와 동일하거나 유사한 동작들을 수행할 수 있다. 또한, 실시간 또는 거의 실시간 데이터베이스 복제 및/또는 다른 동작들에 의해, 계산 인스턴스(322)는 데이터 센터들(400A 및 400B)에 동시에 존재할 수 있다.
도 4에 도시된 바와 같은 데이터 센터들(400A 및 400B)은 중복성 및 높은 가용성을 용이하게 할 수 있다. 도 4의 구성에서, 데이터 센터(400A)는 능동이고, 데이터 센터(400B)는 수동이다. 따라서, 데이터 센터(400A)는 관리형 네트워크(300)로의 그리고 관리형 네트워크(300)로부터의 모든 트래픽을 서빙하는 반면, 데이터 센터(400B) 내의 계산 인스턴스(322)의 버전은 거의 실시간으로 업데이트되고 있다. 데이터 센터들 둘 다가 능동인 것과 같은 다른 구성들이 지원될 수 있다.
데이터 센터(400A)가 어떤 방식으로 실패하거나 아니면 사용자들이 이용할 수 없게 되면, 데이터 센터(400B)는 능동 데이터 센터 역할을 인계받을 수 있다. 예를 들어, 계산 인스턴스(322)의 도메인 이름을 데이터 센터(400A)의 하나 이상의 인터넷 프로토콜(IP) 주소와 연관시키는 도메인 이름 시스템(DNS) 서버들은 도메인 이름을 데이터 센터(400B)의 하나 이상의 IP 주소와 재연관시킬 수 있다. 이러한 재연관이 완료된 후에(이는 1초 또는 수초 미만이 걸릴 수 있음), 사용자들은 데이터 센터(400B)를 통해 계산 인스턴스(322)에 액세스할 수 있다.
도 4는 또한 관리형 네트워크(300)의 가능한 구성을 도시한다. 위에서 언급된 바와 같이, 프록시 서버들(312) 및 사용자(414)는 방화벽(310)을 통해 계산 인스턴스(322)에 액세스할 수 있다. 프록시 서버들(312)은 또한 구성 아이템들(410)에 액세스할 수 있다. 도 4에서, 구성 아이템들(410)은 클라이언트 디바이스들(302), 서버 디바이스들(304), 라우터들(306), 및 가상 머신들(308) 중 임의의 것 또는 전부, 그 상에서 실행되는 임의의 애플리케이션들 또는 서비스들뿐만 아니라, 디바이스들, 애플리케이션들, 및 서비스들 사이의 관계들을 지칭할 수 있다. 따라서, 용어 "구성 아이템들"은 임의의 물리적 또는 가상 디바이스, 또는 계산 인스턴스(322)에 의해 원격으로 발견가능하거나 관리되는 임의의 애플리케이션 또는 서비스, 또는 발견된 디바이스들, 애플리케이션들, 및 서비스들 사이의 관계들에 대한 약칭일 수 있다. 구성 아이템들은 계산 인스턴스(322)의 구성 관리 데이터베이스(CMDB)에 표현될 수 있다.
앞서 언급된 바와 같이, VPN 게이트웨이(412)는 전용 VPN을 VPN 게이트웨이(402A)에 제공할 수 있다. 이러한 VPN은 관리형 네트워크(300)와 계산 인스턴스(322) 사이에 상당한 양의 트래픽이 있을 때, 또는 보안 정책들이 이러한 사이트들 사이의 VPN의 이용을 다른 방식으로 제안하거나 요구할 때 도움이 될 수 있다. 일부 실시예들에서, VPN을 통해 직접 통신하는 관리형 네트워크(300) 및/또는 계산 인스턴스(322) 내의 임의의 디바이스에는 공개 IP 주소가 할당된다. 관리형 네트워크(300) 및/또는 계산 인스턴스(322) 내의 다른 디바이스들에는 사설 IP 주소들(예를 들어, 10.0.0.0 - 10.255.255.255 또는 192.168.0.0 - 192.168.255.255 범위들로부터 선택된 IP 주소들, 약칭으로 각각 서브넷들 10.0.0.0/8 및 192.168.0.0/16으로 표현됨)이 할당될 수 있다.
IV. 예시적인 디바이스, 애플리케이션, 및 서비스 발견
원격 네트워크 관리 플랫폼(320)이 관리형 네트워크(300)의 디바이스들, 애플리케이션들, 및 서비스들을 관리하기 위해, 원격 네트워크 관리 플랫폼(320)은 먼저 관리형 네트워크(300)에 어떤 디바이스들이 존재하는지, 이들 디바이스들의 구성들 및 동작 상태들, 및 디바이스들에 의해 제공되는 애플리케이션들 및 서비스들뿐만 아니라, 발견된 디바이스들, 애플리케이션들, 및 서비스들 사이의 관계들을 결정할 수 있다. 전술한 바와 같이, 각각의 디바이스, 애플리케이션, 서비스 및 관계는 구성 아이템으로 지칭될 수 있다. 관리형 네트워크(300) 내의 구성 아이템들을 정의하는 프로세스는 발견으로 지칭되며, 프록시 서버들(312)에 의해 적어도 부분적으로 용이하게 될 수 있다.
본 명세서의 실시예들의 목적을 위해, "애플리케이션"은 하나 이상의 프로세스, 스레드, 프로그램, 클라이언트 모듈, 서버 모듈, 또는 디바이스 또는 디바이스들의 그룹 상에서 실행되는 임의의 다른 소프트웨어를 지칭할 수 있다. "서비스"는 서로 함께 동작하는 하나 이상의 디바이스 상에서 실행되는 복수의 애플리케이션에 의해 제공되는 상위 레벨 능력을 지칭할 수 있다. 예를 들어, 상위 레벨 웹 서비스는 하나의 디바이스 상에서 실행되고 다른 디바이스 상에서 실행되는 데이터베이스 애플리케이션으로부터의 정보에 액세스하는 복수의 웹 애플리케이션 서버 스레드를 수반할 수 있다.
도 5a는 구성 아이템들이 어떻게 발견될 수 있는지, 그리고 발견된 구성 아이템들에 관련된 정보가 어떻게 저장될 수 있는지의 논리적 묘사를 제공한다. 단순화를 위해, 원격 네트워크 관리 플랫폼(320), 제3자 네트워크들(340), 및 인터넷(350)은 도시되지 않는다.
도 5a에서, CMDB(500) 및 작업 리스트(502)는 계산 인스턴스(322) 내에 저장된다. 계산 인스턴스(322)는 발견 명령들을 프록시 서버들(312)에 송신할 수 있다. 이에 응답하여, 프록시 서버들(312)은 프로브들을 관리형 네트워크(300) 내의 다양한 디바이스들, 애플리케이션들, 및 서비스들에 전송할 수 있다. 이러한 디바이스들, 애플리케이션들, 및 서비스들은 응답들을 프록시 서버들(312)에 송신할 수 있고, 그 후 프록시 서버들(312)은 발견된 구성 아이템들에 관한 정보를 CMDB(500)에 제공하여 그 안에 저장할 수 있다. CMDB(500)에 저장된 구성 아이템들은 관리형 네트워크(300)의 환경을 나타낸다.
작업 리스트(502)는 프록시 서버들(312)이 계산 인스턴스(322)를 대신하여 수행하는 활동들의 리스트를 나타낸다. 발견이 일어남에 따라, 작업 리스트(502)가 채워진다. 프록시 서버들(312)은 반복적으로 작업 리스트(502)에 대해 질의하고, 그 안의 다음 작업을 획득하고, 작업 리스트(502)가 비어 있거나 다른 중지 조건에 도달할 때까지 이 작업을 수행한다.
발견을 용이하게 하기 위해, 프록시 서버들(312)은 프록시 서버들(312)을 통해 도달가능한 관리형 네트워크(300) 내의 하나 이상의 서브넷에 관한 정보로 구성될 수 있다. 예를 들어, 프록시 서버들(312)은 서브넷으로서 IP 주소 범위 192.168.0/24를 부여받을 수 있다. 그 후, 계산 인스턴스(322)는 이 정보를 CMDB(500)에 저장하고, 이러한 주소들 각각에서 디바이스들의 발견을 위해 작업들을 작업 리스트(502)에 배치할 수 있다.
도 5a는 또한 관리형 네트워크(300) 내의 디바이스들, 애플리케이션들 및 서비스들을 구성 아이템들(504, 506, 508, 510 및 512)로서 도시한다. 전술한 바와 같이, 이러한 구성 아이템들은 물리적 및/또는 가상 디바이스들(예로서, 클라이언트 디바이스들, 서버 디바이스들, 라우터들 또는 가상 머신들), 그 상(예로서, 웹 서버들, 이메일 서버들, 데이터베이스들 또는 저장 어레이들)에서 실행되는 애플리케이션들, 그들 사이의 관계들뿐만 아니라 복수의 개별 구성 아이템을 수반하는 서비스들의 세트를 나타낸다.
작업 리스트(502)에 작업들을 배치하는 것은 프록시 서버들(312)이 발견을 시작하도록 트리거링하거나 또는 다른 방식으로 이를 야기할 수 있다. 대안적으로 또는 추가적으로, 발견은 트리거링 이벤트들에 기반하여 수동으로 트리거링되거나 자동으로 트리거링될 수 있다(예를 들어, 발견은 특정 시간에 하루에 한 번 자동으로 시작될 수 있다).
일반적으로, 발견은 4개의 논리적 단계, 즉 스캐닝, 분류, 식별, 및 탐색으로 진행될 수 있다. 발견의 각각의 단계는 프록시 서버들(312)에 의해 관리형 네트워크(300) 내의 하나 이상의 디바이스로 전송되는 다양한 유형들의 프로브 메시지들을 수반한다. 이들 프로브들에 대한 응답들은 프록시 서버들(312)에 의해 수신 및 처리될 수 있고, 그 표현들은 CMDB(500)에 전송될 수 있다. 따라서, 각각의 단계는 더 많은 구성 아이템들이 발견되고 CMDB(500)에 저장되게 할 수 있다.
스캐닝 단계에서, 프록시 서버들(312)은 디바이스의 일반적인 유형을 결정하기 위해 개방 송신 제어 프로토콜(TCP) 및/또는 사용자 데이터그램 프로토콜(UDP) 포트들에 대한 IP 주소들의 지정된 범위 내의 각각의 IP 주소를 프로빙할 수 있다. IP 주소에서의 이러한 개방 포트들의 존재는 특정 애플리케이션이 IP 주소가 할당되는 디바이스 상에서 동작하고 있음을 표시할 수 있으며, 이는 결국 디바이스에 의해 이용되는 운영 체제를 식별할 수 있다. 예를 들어, TCP 포트(135)가 개방되면, 디바이스는 WINDOWS® 운영 체제를 실행할 가능성이 있다. 유사하게, TCP 포트(22)가 개방되면, 디바이스는 LINUX®와 같은 UNIX® 운영 체제를 실행할 가능성이 있다. UDP 포트(161)가 개방되면, 디바이스는 SNMP(Simple Network Management Protocol)를 통해 추가로 식별될 수 있다. 다른 가능성들이 존재한다. 특정 IP 주소 및 그 개방 포트들에서의 디바이스의 존재가 발견되었다면, 이러한 구성 아이템들은 CMDB(500)에 저장된다.
분류 단계에서, 프록시 서버들(312)은 또한 각각의 발견된 디바이스를 프로빙하여 그 운영 체제의 버전을 결정할 수 있다. 특정 디바이스에 이용되는 프로브들은 스캐닝 단계 동안 디바이스들에 대해 수집된 정보에 기반한다. 예를 들어, TCP 포트(22)가 개방된 디바이스가 발견되면, UNIX®-특정 프로브들의 세트가 이용될 수 있다. 마찬가지로, TCP 포트(135)가 개방된 디바이스가 발견되면, WINDOWS®-특정 프로브들의 세트가 이용될 수 있다. 어느 경우든, 프록시 서버들(312)이 수행할 적절한 작업 세트가 작업 리스트(502)에 배치될 수 있다. 이들 작업들은 프록시 서버들(312)이 로그온하거나, 아니면 특정 디바이스로부터의 정보에 액세스하게 할 수 있다. 예를 들어, TCP 포트(22)가 개방되면, 프록시 서버들(312)은 특정 디바이스에 대한 SSH(Secure Shell) 접속을 개시하고 파일 시스템 내의 특정 위치들로부터 그 운영 체제에 관한 정보를 획득하도록 지시받을 수 있다. 이 정보에 기반하여, 운영 체제가 결정될 수 있다. 예로서, TCP 포트(22)가 개방된 UNIX® 디바이스는 AIX®, HPUX, LINUX®, MACOS®, 또는 SOLARIS®로 분류될 수 있다. 이 분류 정보는 CMDB(500)에 하나 이상의 구성 아이템으로서 저장될 수 있다.
식별 단계에서, 프록시 서버들(312)은 분류된 디바이스에 관한 특정 상세들을 결정할 수 있다. 이 단계 동안 이용되는 프로브들은 분류 단계 동안 특정 디바이스들에 대해 수집된 정보에 기반할 수 있다. 예를 들어, 디바이스가 LINUX®로서 분류되었다면, LINUX®-특정 프로브들의 세트가 이용될 수 있다. 마찬가지로, 디바이스가 WINDOWS® 2012로서 분류되었다면, WINDOWS®-2012-특정 프로브들의 세트가 이용될 수 있다. 분류 단계의 경우에서와 같이, 프록시 서버들(312)이 수행할 적절한 작업 세트가 작업 리스트(502)에 배치될 수 있다. 이들 작업들은 프록시 서버들(312)이 BIOS(basic input/output system) 정보, 일련 번호들, 네트워크 인터페이스 정보, 이들 네트워크 인터페이스(들)에 할당된 미디어 액세스 제어 주소(들), 특정 디바이스에 의해 이용되는 IP 주소(들) 등과 같은 정보를 특정 디바이스로부터 판독하게 할 수 있다. 이 식별 정보는 CMDB(500)에 하나 이상의 구성 아이템으로서 저장될 수 있다.
탐색 단계에서, 프록시 서버들(312)은 분류된 디바이스의 동작 상태에 대한 추가 상세들을 결정할 수 있다. 이 단계 동안 이용되는 프로브들은 분류 단계 및/또는 식별 단계 동안 특정 디바이스들에 대해 수집된 정보에 기반할 수 있다. 다시 말하지만, 프록시 서버들(312)이 수행할 적절한 작업 세트가 작업 리스트(502)에 배치될 수 있다. 이러한 작업들은 프록시 서버들(312)이 프로세서 정보, 메모리 정보, 실행 중인 프로세스들(애플리케이션들)의 리스트들 등과 같은 추가적인 정보를 특정 디바이스로부터 판독하게 할 수 있다. 한번 더 말하지만, 발견된 정보는 CMDB(500)에 하나 이상의 구성 아이템으로서 저장될 수 있다.
라우터와 같은 네트워크 디바이스 상에서 발견을 실행하는 것은 SNMP를 이용할 수 있다. 실행 중인 프로세스들 또는 다른 애플리케이션-관련 정보의 리스트를 결정하는 것 대신에 또는 그에 더하여, 발견은 라우터에 알려진 추가적인 서브넷들 및 라우터의 네트워크 인터페이스들의 동작 상태(예를 들어, 활성, 비활성, 큐 길이, 드롭된 패킷들의 수 등)를 결정할 수 있다. 추가적인 서브넷들의 IP 주소들은 추가 발견 절차들을 위한 후보들일 수 있다. 따라서, 발견은 반복적으로 또는 재귀적으로 진행될 수 있다.
발견이 완료되면, 각각의 발견된 디바이스, 애플리케이션 및 서비스의 스냅샷 표현이 CMDB(500)에서 이용가능하다. 예를 들어, 발견 후에, 관리형 네트워크(300) 내의 클라이언트 디바이스들, 서버 디바이스들, 및 라우터들에 대한 운영 체제 버전, 하드웨어 구성 및 네트워크 구성 상세들은 물론, 그 상에서 실행되는 애플리케이션들이 저장될 수 있다. 이 수집된 정보는 사용자가 디바이스들의 하드웨어 구성요소 및 동작 상태는 물론, 복수의 디바이스 및 애플리케이션에 걸쳐 있는 서비스들의 특성들을 볼 수 있게 하기 위해 다양한 방식들로 사용자에게 제시될 수 있다.
또한, CMDB(500)는 구성 아이템들 간의 종속성들 및 관계들에 관한 엔트리들을 포함할 수 있다. 보다 구체적으로, 특정 서버 디바이스 상에서 실행되고 있는 애플리케이션뿐만 아니라, 이 애플리케이션에 의존하는 서비스들은 CMDB(500)에서 이와 같이 표현될 수 있다. 예를 들어, 데이터베이스 애플리케이션이 서버 디바이스 상에서 실행 중이고, 이 데이터베이스 애플리케이션이 급여 서비스뿐만 아니라 새로운 직원 온보딩 서비스에 의해 이용된다고 가정한다. 따라서, 서버 디바이스가 유지보수를 위해 동작이 중단되면, 직원 온보딩 서비스 및 급여 서비스가 영향을 받을 것임이 명백하다. 마찬가지로, 구성 아이템들 사이의 종속성들 및 관계들은 특정 라우터가 실패할 때 영향을 받는 서비스들을 나타낼 수 있다.
일반적으로, 구성 아이템들 사이의 종속성들 및 관계들은 웹 기반 인터페이스 상에 표시되고 계층적 방식으로 표현될 수 있다. 따라서, 이러한 종속성들 및 관계들을 추가, 변경 또는 제거하는 것은 이 인터페이스를 통해 달성될 수 있다.
게다가, 관리형 네트워크(300)로부터의 사용자들은 특정 조정된 활동들이 복수의 발견된 디바이스에 걸쳐 일어날 수 있게 해주는 작업흐름들을 개발할 수 있다. 예를 들어, IT 작업흐름은 사용자가 단일 동작으로 공통 관리자 패스워드를 모든 발견된 LINUX® 디바이스들로 변경하는 것을 허용할 수 있다.
전술한 방식으로 발견이 일어나게 하기 위해, 프록시 서버들(312), CMDB(500) 및/또는 하나 이상의 자격증명 저장소는 발견될 하나 이상의 디바이스에 대한 자격증명들로 구성될 수 있다. 자격증명들은 디바이스들에 액세스하는데 필요한 임의의 유형의 정보를 포함할 수 있다. 자격증명들은 사용자 id/패스워드 쌍들, 인증서들 등을 포함할 수 있다. 일부 실시예들에서, 이러한 자격증명들은 CMDB(500)의 암호화된 필드들에 저장될 수 있다. 프록시 서버들(312)은 자격증명들에 대한 해독 키를 포함할 수 있어서, 프록시 서버들(312)은 이들 자격증명들을 이용하여 발견 중인 디바이스들에 로그온하거나 다른 방식으로 액세스할 수 있다.
발견 프로세스는 도 5b에 흐름도로서 도시된다. 블록(520)에서, 계산 인스턴스 내의 작업 리스트는 예를 들어, IP 주소들의 범위로 채워진다. 블록(522)에서, 스캐닝 단계가 발생한다. 따라서, 프록시 서버들은 이들 IP 주소들을 이용하여 디바이스들에 대한 IP 주소들을 프로빙하고, 이들 디바이스들 상에서 실행 중인 운영 체제들을 결정하려고 시도한다. 블록(524)에서, 분류 단계가 발생한다. 프록시 서버들은 발견된 디바이스들의 운영 체제 버전을 결정하려고 시도한다. 블록(526)에서, 식별 단계가 발생한다. 프록시 서버들은 발견된 디바이스들의 하드웨어 및/또는 소프트웨어 구성을 결정하려고 시도한다. 블록(528)에서, 탐색 단계가 발생한다. 프록시 서버들은 발견된 디바이스들 상에서 실행되는 애플리케이션들 및 동작 상태를 결정하려고 시도한다. 블록(530)에서, 발견된 디바이스들 및 애플리케이션들을 나타내는 구성 아이템들의 추가 편집이 발생할 수 있다. 이 편집은 사실상 자동 및/또는 수동일 수 있다.
도 5b에 나타낸 블록들은 예시를 위한 것이다. 발견은 더 많거나 더 적은 단계들을 가질 수 있는 매우 구성가능한 절차일 수 있고, 각각의 단계의 동작들은 변할 수 있다. 일부 경우들에서, 하나 이상의 단계는 맞춤화될 수 있거나, 아니면 위의 예시적인 설명들로부터 벗어날 수 있다.
V. 활동 기록들로부터의 소프트웨어 거래들의 발견
애플리케이션들 및 서비스들의 구매 또는 라이센싱을 수반하는 거래들은 활동 기록들에 기록될 수 있다. 이들 활동 기록들은 예를 들어, 영수증들, 라이센싱 계약들, 또는 지출 보고들의 표현들로부터 데이터를 획득할 수 있다. 본 명세서의 실시예들에 따라 활동 기록들을 분석함으로써, 소프트웨어와 관련된 거래들이 발견되고 분류될 수 있다.
특히, 현재 설명된 자동화 시스템은 소프트웨어에 관련되거나 소프트웨어에 관련되지 않는 것으로서 활동 기록들을 분류한다. 소프트웨어에 관련된 바와 같이 분류된 활동 기록은 소프트웨어의 제공자(예를 들어, 소프트웨어를 제조하거나 분배하는 소프트웨어 회사, 또는 소프트웨어 서비스를 제공하는 서비스 제공자)를 결정하기 위해 추가로 분석될 수 있다. 제공자가 결정되면, 활동 기록은 소프트웨어의 애플리케이션 제목을 결정하기 위해 추가로 분석될 수 있다. 본 명세서의 실시예들은 유리하게도 다중 레벨 머신 학습(ML) 모델을 이용하여 이들 분석들 각각을 수행하고 종래의 방법들보다 더 양호한 정확도로 그렇게 수행가능할 수 있다.
A. 소프트웨어 카탈로그
다중 계층 ML 모델은 카탈로그로부터 유도되는 소프트웨어 카탈로그 및/또는 소프트웨어 카탈로그 어휘에 액세스할 수 있다. 도 6a는 예시적인 실시예들에 따른 소프트웨어 카탈로그(600)를 도시한다. 소프트웨어 카탈로그(600)는 복수의 엔트리를 포함할 수 있으며, 그 각각은 특정 소프트웨어 제목 및/또는 버전과 관련될 수 있다. 즉, 각각의 엔트리는 제공자, 애플리케이션 제목 및/또는 버전을 포함할 수 있다. 예를 들어, 소프트웨어 카탈로그(600) 내의 엔트리는 복수의 애플리케이션 제목 및 그들의 대응하는 제공자들을 포함할 수 있다. 일부 경우들에, 소프트웨어 카탈로그는 제공자들의 URL들(uniform resource locators) 또는 도메인 이름들 및/또는 그들의 애플리케이션 제목들을 포함할 수 있다. 예를 들어, "MC 애플리케이션 제목 1"에 대한 도 6a의 엔트리(602)는 제공자 MICROCORP와 연관될 수 있다.
일부 실시예들에서, 소프트웨어 카탈로그(600)는 예를 들어, 1,000 엔트리, 10,000 엔트리, 100,000 엔트리 이상을 포함할 수 있다. 소프트웨어 카탈로그(600)의 각각의 엔트리는 소프트웨어 제품들 및 관련 서비스들의 과거, 현재, 또는 심지어 미래 프리-릴리즈(pre-release) 버전들과 관련될 수 있다. 일부 실시예들에서, 소프트웨어 카탈로그(600)는 파일 및/또는 데이터베이스로서 구현될 수 있다.
도 6a에 예시된 바와 같이, 소프트웨어 카탈로그(600)는 암시적 또는 명시적 트리 구조를 가질 수 있다. 예를 들어, 각각의 제공자(604)는 트리의 브랜치들을 표현할 수 있고 각각의 제품 또는 애플리케이션 제목(606)은 브랜치(branch)들 상의 리프들(leaves)을 표현할 수 있다. 소프트웨어 카탈로그(600)는 자동으로 또는 수동으로 유지(예를 들어, 업데이트 및 조정)될 수 있다(예를 들어, 업데이트들은 원격 서버로부터 검색될 수 있음).
애플리케이션 제목들이 업데이트되거나 개정될 때, 애플리케이션 제목들의 오래된 버전은 소프트웨어 카탈로그(600)에 남아 있을 수 있다. 제공자의 취득 또는 합병의 경우에, 대응하는 애플리케이션 제목은 새로운 제공자로 이송될 수 있다. 그러나, 트리 이력은 보존되므로(예를 들어, 트리 구조는 일반적으로 프루닝되지 않으므로) 그것은 - 특히 레거시 제품들에 관한 더 오래된 애플리케이션들의 분류를 돕기 위해 여전히 사용될 수 있다.
일부 실시예들에서, 소프트웨어 카탈로그(600)는 소프트웨어 카탈로그 어휘를 형성하기 위해 파싱될 수 있다. 예를 들어, 소프트웨어 카탈로그(600)는 "백 오브 워즈(bag-of-words)" 모델과 함께 사용하기 위해 파싱될 수 있다. 즉, 소프트웨어 카탈로그(600) 내의 각각의 개별 단어는 단어 카운트(예를 들어, 단어가 소프트웨어 카탈로그(600)에 나타나는 횟수) 및/또는 단어 빈도(예를 들어, 단어가 소프트웨어 카탈로그(600)에 나타나는 빈도)로 식별될 수 있다. 따라서, 백 오브 워즈 모델은 단어 카운트 및/또는 단어 빈도를 각각 갖는 고유한 단어들의 오더리스(orderless) 문서에 의해 표현되는 소프트웨어 카탈로그 어휘를 제공할 수 있다. 일부 경우들에, 파싱 프로세스는 대문자, 공간들, 특수 문자들, 및/또는 다른 포맷 정보를 무시할 수 있다.
백 오브 워즈 모델에 따라, "MC 애플리케이션 제목 1"은 {"MICROCORP", "애플리케이션", "제목", 및 "1"}로서 표현될 수 있다. 이러한 시나리오에서, 축소 "MC"는 "MICROCORP"로 확장될 수 있다. 각각의 엔트리로부터 복수의 고유한 단어를 제공하기 위한 다른 텍스트 정규화 프로세스들이 가능하다. 단어 카운트 및/또는 단어 빈도는 단어가 소프트웨어 카탈로그(600)에 몇 번 나타나는지에 기초하여 각각의 고유한 단어와 연관될 수 있다. 소프트웨어 카탈로그 어휘를 표현하기 위한 다른 방식들이 가능하다는 점이 이해될 것이다.
추가적으로 또는 대안적으로, 소프트웨어 카탈로그 어휘는 공간 정보를 소프트웨어 카탈로그의 파싱된 단어들과 연관시키는 n-그램 모델로서 저장될 수 있다. 예를 들어, 바이그램 모델은 소프트웨어 카탈로그(600)의 텍스트를 2-단어 단위로 파싱하고 그들을 저장할 뿐만 아니라 개별 단어들 및 그들의 별개의 단어 카운트들/빈도들을 저장할 수 있다. 일 예로서, 엔트리 "MC 애플리케이션 제목 1"에 대해, 바이그램 모델은 {"MICROCORP 애플리케이션", "애플리케이션 제목", 및 "제목 1"}과 같은 2-단어 단위뿐만 아니라 백 오브 워즈 표현과 유사한 단일-단어 단위를 포함할 수 있다. 다른 n-그램 모델들(예를 들어, 여기서 n은 3, 4 이상임)이 가능하다. 추가적으로, 의존 파싱 및/또는 구성구문 파싱과 같은 다른 파싱 모델들이 또한 가능하다.
B. 트레이닝 데이터 세트/라벨링된 데이터
트레이닝 데이터 세트는 다중 계층 ML 모델의 하나 이상의 계층을 트레이닝하기 위해 사용될 수 있다. 트레이닝 데이터 세트는 라벨링되었던 복수의 실제 및/또는 가설 활동 기록을 포함할 수 있다. 일부 실시예들에서, 각각의 활동 기록은 적어도 4개의 필드: (i) 활동 데이터, (ii) 제공자 데이터, (iii) 설명 데이터, 및 (iv) 하나 이상의 라벨을 포함할 수 있다.
주어진 활동 기록의 활동 데이터 필드는 지출 유형 또는 거래 유형에 관한 정보를 포함할 수 있다. 예를 들어, 활동 데이터 필드는 "소프트웨어", "출장", "개인", 또는 "이외" 등을 포함할 수 있다. 일부 경우들에, 활동 데이터 필드는 수동으로 입력(예를 들어, 수동으로 키 입력)될 수 있다. 따라서, 활동 데이터 필드는 광범위하게 다양한 엔트리들을 포함할 수 있다.
주어진 활동 기록의 제공자 데이터 필드는 잠재적인 벤더 이름에 관한 정보를 포함할 수 있다. 일부 예들에서, 제공자 데이터 필드는 "MICROCORP", "SOFTWARE SYSTEMS", "SFTWR SYS" 등과 같은 텍스트 정보를 포함할 수 있다. 광범위하게 다양한 엔트리들은 또한 제공자 데이터 필드에서 가능할 수 있다.
주어진 활동 기록의 설명 데이터 필드는 거래의 간단한 설명을 포함할 수 있다. 일 예로서, 설명 데이터 필드는 "오피스 생산성 툴", "MICROCORP에 대한 폰트 구매", 또는 "MICROCORP 오피스로의 수송"과 같은 텍스트 엔트리들을 포함할 수 있다. 다른 예들이 가능하다.
라벨 필드는 활동 기록이 (i) 소프트웨어, (ii) 특정 제공자(예를 들어, 소프트웨어 퍼블리셔 또는 회사), 및/또는 (iii) 특정 애플리케이션 제목 및/또는 그것의 버전과 관련되는지에 대해 "기반 진리"를 표시하는 하나 이상의 라벨을 포함할 수 있다. 일 예로서, 라벨 필드는 "SOFTWARE", "MICROCORP", "MC 애플리케이션 제목 1" 등을 포함할 수 있다.
도 6b는 예시적인 실시예들에 따른 라벨링된 활동 기록들(610)의 세트를 도시한다. 각각의 활동 기록은 식별자(ID)(612), 지출 계정 필드(620), 제공자 이름 필드(630), 설명 필드(640), 및 하나 이상의 라벨 필드(650, 660, 및/또는 670)를 포함할 수 있다. 활동 기록들(610)의 다른 유형들 및/또는 포맷들이 가능하다.
식별자(612)는 거래 수, 지출 보고 식별자, 또는 다른 유형의 고유한 식별자 예컨대 날짜, 시간, 제출자 이름 등을 포함할 수 있다. 지출 계정 필드(620)는 거래의 유형(예를 들어, 출장, 소프트웨어, 컴퓨터, 주차, 마일리지 등)에 관한 정보를 포함할 수 있다. 일부 실시예들에서, 지출 계정 필드(620)는 다른 유형들의 활동 데이터를 포함할 수 있다. 제공자 이름 필드(630)는 거래 당사자(예를 들어, 수취인)에 관한 정보를 포함할 수 있다. 일부 실시예들에서, 제공자 이름 필드(630)는 판매자 또는 계약자를 포함할 수 있다. 설명 필드(640)는 거래 또는 활동 기록에 관한 상세들을 나타내는 정보를 포함할 수 있다. 예를 들어, 설명 필드(640)는 거래 또는 활동 기록의 목적을 간단히 설명하는 수개의 단어들을 포함할 수 있다.
예시적인 실시예에서, 라벨링된 활동 기록들(610)은 다중 계층 ML 모델의 하나 이상의 계층을 트레이닝하기 위해 사용될 수 있는 라벨링된 데이터 세트의 예시적인 엔트리들을 표현할 수 있다. 이러한 시나리오들에서, 실제 소프트웨어 필드(650), 실제 제공자 필드(660), 및 실제 애플리케이션 제목 필드(670)는 주어진 거래 또는 활동 기록에 관한 "기반 진리"를 표시하는 라벨링된 데이터를 포함할 수 있다. 이들 기반 진리 값들은 수동으로 입력되거나 자동으로 결정될 수 있다.
도 6b에 도시된 바와 같이, 활동 기록 #1은 지출 계정 필드(620) 내의 텍스트 "가입 소프트웨어 라이센스들", 제공자 이름 필드(630) 내의 "MICROCORP RENEWALS", 및 설명 필드(640) 내의 "MC Appl 제목 1 갱신"을 포함할 수 있다. 실제 소프트웨어 필드(650)에 따르면, 활동 기록 #1은 소프트웨어와 관련되고, 실제 제공자 필드(660)에 따르면, 실제 제공자는 "MICROCORP"이고, 실제 애플리케이션 제목 필드(670)에 따르면, 실제 애플리케이션 제목은 "MC 애플리케이션 제목 1"이다.
활동 기록 #2는 지출 계정 필드(620) 내의 텍스트 "출장 지출들", 제공자 이름 필드(630) 내의 "RIDESHARE INC", 및 설명 필드(640) 내의 "MICROCORP 오피스로의 수송"을 포함할 수 있다. 실제 소프트웨어 필드(650)에 따르면, 활동 기록 #2는 소프트웨어와 관련되지 않는다(예를 들어, MICROCORP가 소프트웨어 제공자일지라도, 이 활동 기록은 소프트웨어 구매가 아닌, 이 회사의 오피스로의 출장과 관련됨). 이 경우에, 제공자 및 애플리케이션 제목은 관련되지 않고 라벨들에 나타날 필요가 없다.
활동 기록 #3은 지출 계정 필드(620) 내의 텍스트 "소프트웨어", 제공자 이름 필드(630) 내의 "SOFTWARE SYSTEMS", 및 설명 필드(640) 내의 "오피스 생산성 툴"을 포함할 수 있다. 실제 소프트웨어 필드(650)에 따르면, 활동 기록 #3은 소프트웨어와 관련되고, 실제 제공자 필드(660)에 따르면, 실제 제공자는 "SOFTWARE SYSTEMS"이다. 그러나, 라벨링된 데이터는 실제 애플리케이션 제목 필드(670)에 대한 엔트리를 포함하지 않는다. 예를 들어, 설명 필드(640) 내의 "오피스 생산성 툴"은 적절한 라벨을 결정하기에는 너무 모호할 수 있다. 그럼에도 불구하고, 활동 기록 #3은 다중 계층 ML 모델의 일부 구성요소들을 트레이닝할 시에 여전히 유용할 수 있다.
활동 기록 #4는 지출 계정 필드(620) 내의 텍스트 "이외", 제공자 이름 필드(630) 내의 "SFTWR SYSTMS", 및 설명 필드(640) 내의 "팀 피드백을 위한 출장 조사 시설"을 포함할 수 있다. 실제 소프트웨어 필드(650)에 따르면, 활동 기록 #4는 소프트웨어와 관련되고, 실제 제공자 필드(660)에 따르면, 실제 제공자는 "SOFTWARE SYSTEMS"이고, 실제 애플리케이션 제목 필드(670)에 따르면, 실제 애플리케이션 제목은 "SOFTWARE SYSTEMS 조사"이다.
활동 기록 #5는 지출 계정 필드(620) 내의 텍스트 "소프트웨어", 제공자 이름 필드(630) 내의 "FONTS, INC", 및 설명 필드(640) 내의 "폰트 구매"를 포함할 수 있다. 실제 소프트웨어 필드(650)에 따르면, 활동 기록 #5는 소프트웨어와 관련되지 않는다(예를 들어, 폰트 구매는 소프트웨어 구매로 간주되지 않을 수 있음). 이 경우에, 제공자 및 애플리케이션 제목은 관련되지 않고 라벨들에 나타날 필요가 없다.
C. ML 모델의 제1 계층 - 소프트웨어 거래들의 식별
다중 계층 ML 모델의 제1 계층은 소프트웨어와 관련되는 거래들을 식별하기 위해 감독된 스택 앙상블 모델(supervised stacked ensemble model)을 이용한다. 제1 계층은 (i) 활동 데이터, (ii) 제공자 데이터, 및 (iii) 설명 데이터로 지칭되는 3개의 텍스트 필드를 입력으로서 수락한다. 실제로, 활동 데이터 필드는 지출 계정 필드(620)로부터의 주어진 콘텐츠일 수 있고, 제공자 데이터 필드는 제공자 이름 필드(630)로부터의 주어진 콘텐츠일 수 있고, 설명 데이터 필드는 설명 필드(640)로부터의 주어진 콘텐츠일 수 있다. 따라서, 입력은 언라벨링된 지출 보고 또는 일부 다른 유형의 언라벨링된 거래 또는 활동 기록으로부터 나올 수 있다. 초기 단계는 이 입력이 소프트웨어와 관련되는지를 결정하는 것일 수 있다.
활동 데이터, 제공자 데이터, 및 설명 데이터 각각으로부터의 파싱된 데이터는 라벨링된 트레이닝 데이터 세트(예를 들어, 라벨링된 활동 기록들(610))로 트레이닝될 수 있었던 각각의 ML 분류자들(예를 들어, 단어 내장들 또는 나이브 베이즈 분류자들)로 입력된다. 앞서 언급된 바와 같이, 라벨링된 트레이닝 데이터 세트는 소프트웨어에 관련되거나 소프트웨어에 관련되지 않는 것으로서 라벨링된 실제 또는 가설 활동 기록들을 포함한다. 일 예로서, 활동 데이터는 이 필드 내의 "출장" 또는 "음식" 또는 "회의용 포스터보드"와 같은 단어들의 출현 또는 단어들의 짧은 시퀀스들이, 이 거래가 소프트웨어에 관련되지 않는다는 확률을 강하게 증가시키기 때문에 중요한 것으로 고려될 수 있다. 그들의 트레이닝에 기초하여, 각각의 ML 분류자들은 소프트웨어 또는 비-소프트웨어 거래들과 대응하는 단어들 및/또는 단어 시퀀스들을 독립적으로 학습할 수 있다. 즉, 각각의 ML 분류자들 각각은 각각의 텍스트 필드들 내의 단어들 및/또는 문구들이 소프트웨어와 관련된다는 가능성을 출력할 수 있다.
본 명세서에 설명된 바와 같이, 단어 내장 기반 분류자는 단어들 및/또는 단락들(예를 들어, 원시 문서에서 서로 인접하거나 인근에 있는 단어들의 그룹들)에 대한 설명어들을 결정하기 위해 신경망을 사용할 수 있다. 이들 설명어들은 단어들 및/또는 단락들을 단어들 및/또는 단락들의 시맨틱 의미들을 표현하는 n-차원 공간(예를 들어, 단어 벡터들 또는 단락 벡터들)으로 매핑할 수 있다.
본 명세서에 설명된 바와 같이, 나이브 베이즈 분류자는 베이즈의 이론을 적용하는 하나 이상의 유형의 확률적 분류자들일 수 있다. 또한, 나이브 베이즈 분류자는 복수의 특징 사이에 의존이 없는 것을 가정한다. 일부 실시예들에서, 그들의 폐쇄 형태로 인해, 나이브 베이즈 분류자는 다른 분류자 유형들 및/또는 신경망 구현과 비교하여 개선된 속도 및 계산 효율을 제공할 수 있다. 그러나, 다른 유형들의 ML 분류자들이 가능하다.
이들 텍스트 기반 분류 모델들에 더하여, 활동 기록의 필드들에 나타나는 단어들 및/또는 n-그램들은 그들의 교차를 발견하기 위해 소프트웨어 카탈로그(예를 들어, 소프트웨어 카탈로그(600))의 용어들과 비교될 수 있다. 활동 기록 텍스트 및 소프트웨어 카탈로그 둘 다에 나타나는 단어들 및/또는 n-그램들의 카운트들은 특정 활동 기록이 소프트웨어와 관련된다는 잠재적인 추가 표시들로서 사용된다. 예를 들어, 활동 기록 및 소프트웨어 카탈로그 내의 단어 "MICROCORP"의 보급은 활동 기록이 소프트웨어에 관련되는 것을 나타낼 수 있다.
그 다음, 단어 카운트뿐만 아니라 ML 분류자들 각각마다 하나씩인 3개의 별개의 가능성 각각은 각각의 예측의 확실성과 함께 각각의 필드의 상대적 중요도를 고려하는 이차 분류 모델에서 (예를 들어, 로지스틱 회귀를 사용하여) 집계된다. 즉, 3개의 별개의 가능성 및 단어 카운트는 로지스틱 회귀에서의 특징으로서 각각 취급된다.
본 명세서에 설명된 바와 같이, 로지스틱 회귀는 정규화 항을 포함하는 L2 로지스틱 회귀일 수 있다. 정규화 항은 높은 계수 값들 또는 가중치들을 "페널티화"하기 위해 적용될 수 있다. 이러한 정규화 항은 다중 계층 ML 모델의 맞춤화, 예측 정확도, 및/또는 다른 양태들을 개선하는 것을 도울 수 있다. 예시적인 실시예에서, L2 로지스틱 회귀의 출력은 가능성 또는 불확실성 값과 함께, 주어진 활동 기록이 소프트웨어인지의 여부에 대한 예측을 포함할 수 있다. 대안적으로, 로지스틱 회귀는 베이즈 최적 분류자에 의해 대체되거나 이 분류자와 함께 사용될 수 있다. 본 명세서에 설명된 바와 같이, 베이즈 최적 분류자는 가설 공간에서 복수의 가설을 수집하는 앙상블 분류자를 포함한다. 예를 들어, 베이즈 최적 분류자는 복수의 별개의 분류자를 합성하기 위해 스택 분류 모델에 사용될 수 있다.
이러한 제1 계층 프로세스의 결과는 임의의 주어진 활동이 소프트웨어와 관련된다는 확률을 예측하는 모델이다. 즉, 제1 계층 프로세스가 소프트웨어 결정 임계치(예를 들어, 50%) 이상인 가능성을 반환하면, 활동 기록은 다중 계층 ML 모델의 제2 계층에 의해 분석될 수 있다. 제1 계층 프로세스는 활동 기록이 소프트웨어와 관련된다는 낮은 가능성(예를 들어, 소프트웨어 결정 임계치 아래의 가능성)을 반환하면, 다음 계층으로 이동하지 않고 주어진 활동 기록을 폐기하는 것이 안전한 것으로 간주될 수 있다. 일반적으로, 다중 계층 ML 모델은 컴퓨팅 자원들을 보존하고 활동 기록 처리량을 개선하기 위해 임의의 계층에서 이들 "드롭아웃들"을 허용한다.
일부 실시예들에서, 가능하게는 소프트웨어일 수 있는(예를 들어, 소프트웨어일 20 내지 50% 가능성 내일 수 있는) 활동 기록들은 적법한 소프트웨어 관련 활동 기록들을 거짓 부정들로서 폐기하는 것을 회피하도록 수동 분류를 위해 태깅될 수 있다. 다른 실시예들에서, 소프트웨어에 관련되지 않는 것으로서의 활동 기록의 잘못된 분류를 회피하기 위한 노력으로, 소프트웨어 결정 임계치는 매우 낮게(예를 들어, 20% 가능성 이하로) 설정될 수 있다.
D. ML 모델의 제2 계층 - 제공자 분류
주어진 활동 기록이 소프트웨어로서 분류되면, 다중 계층 ML 모델은 활동 기록이 특정 제공자와 관련되는지를 예측할 수 있다. 많은 수의 가능한 소프트웨어 제공자들 및 그들 전부에 대한 데이터를 획득하는 것과 연관된 어려움들로 인해, 전적으로 감독된 다중 카테고리 모델은 실행가능하지 않을 수 있다. 대신에, 본 개시내용에서, 다중 계층 ML 모델의 제2 계층은 집계된 방식으로 규칙들의 순서화된 수집을 적용한다.
제공자 데이터 필드 및 설명 데이터 필드들은 백색 공간 및 다른 잠재적인 구분자들(콤마들, 탭들, 캐리지 리턴들 등) 주위의 텍스트를 분할함으로써 토큰화된다. 그 다음, 토큰화된 단어들은 단일 단어 토큰들의 벡터 및 n-그램 단어 조합들의 범위로 조직화될 수 있다. 일부 실시예들에서, n-그램 단어 토큰들은 여러 단어 이름들을 갖는 제공자들을 수용하는 것을 도울 수 있다.
그 다음, 규칙들의 순서화된 수집은 단일 및 n-그램 단어 토큰들의 벡터에 적용된다. 즉, 각각의 규칙은 벡터 및 소프트웨어 카탈로그 및/또는 소프트웨어 카탈로그 어휘를 취하고, 비교를 수행하고, 특정 벡터가 소프트웨어 카탈로그 내의 아이템들과 얼마나 유사한지를 표시하는 (비)유사도 점수를 반환한다.
예시적인 규칙은 활동 기록의 제공자 필드 상에 특정 정규화 연산을 수행하고 카탈로그 아이템의 제공자 이름 상에 다른 특정 정규화 연산을 수행할 수 있다. 이러한 규칙은 제공자 이름이 활동 기록의 제공자 필드의 시작에 나타나는지를 결정할 수 있다. 그렇다면, 규칙은 일치의 표시(예를 들어, "1" 또는 부린 "참" 값)을 반환하며, 그 밖에 규칙은 비일치의 표시(예를 들어, "0" 또는 부린 "거짓" 값)를 반환한다. 다른 규칙은 제공자 이름이 활동 기록의 제공자 필드의 정확한 일치인지를 결정할 수 있다. 또 다른 규칙은 제공자 이름이 활동 기록의 제공자 필드 내에 포함되는지를 결정할 수 있다. 또 다른 규칙은 제공자 데이터 필드와 제공자 이름 사이의 편집 거리를 계산하고 전체 단어 길이를 조정하면서 이러한 최단 거리를 선택할 수 있다. 추가적인 규칙들은 또한 단어 벡터(word2vec) 단어 내장을 사용하는 것 및 활동 기록 내 및 소프트웨어 카탈로그 내의 단어들 사이의 최소 코사인 거리를 취하는 것과 같은 더 정교한 기술들을 이용할 수 있다. 다른 규칙들이 가능할 수 있다.
전반적으로, 규칙(또한 유사도 함수로 지칭됨)은 활동 기록으로부터 데이터를 수신하고 소프트웨어 카탈로그 내의 제공자들에게 (비)유사도의 정도를 표시하는 수 또는 값을 반환하는 임의의 함수일 수 있다. 규칙들은 제공자들과 독립적일 수 있다. 규칙들은 이들이 동일선상에 있지 않다는 가정을 따를 수 있다.
트레이닝 단계 동안, 로지스틱 회귀는 각각의 규칙이 얼마나 잘 기능하는지 및 예측들을 최상으로 집계하는 법을 결정하기 위해 라벨링된 데이터세트에 적합할 수 있다. 트레이닝되면, 모델의 제2 계층은 활동 기록으로부터 데이터를 수락하고, 제1 규칙을 수행하고, 결과적인 확률들을 체크한다. 확률이 특정 제공자에 대한 임계치를 초과하면, 시스템은 특정 제공자의 예측으로 종료한다. 그렇지 않으면, 일치가 발견되거나 모든 규칙들이 실행될 때까지 제2 규칙이 체크되고, 제3 규칙이 체크되는 등등이다. 이들 규칙들의 순서화는 각각의 예상된 계산 시간 및/또는 예상된 정확도에 기초하여 배열될 수 있다. 예를 들어, 더 낮은 예상된 계산 시간 및/또는 더 높은 예상된 정확도를 갖는 규칙들은 규칙들의 순서화에서 더 일찍 배치될 수 있다. 일부 실시예들은 최장 가능한 용어들을 우선 일치시키려고 시도하는 규칙들을 적용하고 나중에서야 더 짧은 텍스트 스트링들과 일치하는 규칙들로 이동할 수 있다.
일부 실시예들에서, 규칙들은 각각의 규칙의 중요도를 표시하는 각각의 가중치들(예를 들어, 0과 1 사이의 값들)과 연관될 수 있다. 더 정확한 결과들을 생성하기 위해 예상되는 규칙들은 더 높은 가중치들을 제공받을 수 있다. 제2 계층은 라벨링된 데이터세트로 트레이닝되고 MLE(maximum likelihood estimator)를 적용하고 이들 가중치들을 결정할 수 있다.
E. ML 모델의 제3 계층 - 애플리케이션 제목 분류
활동 기록이 주어진 제공자와 연관되었다면, 소프트웨어 카탈로그 내의 애플리케이션 제목들의 검색 공간은 식별된 제공자와 연관된 그들 애플리케이션 제목들만을 포함하기 위해 감소될 수 있다. 즉, 제공자가 식별될 때, 소프트웨어 카탈로그 및/또는 대응하는 소프트웨어 카탈로그 어휘의 범위는 식별된 제공자와 관련되는 엔트리들로 제한될 수 있다.
제3 계층은 제2 계층과 유사하게 작동한다. 따라서, 제3 계층은 활동 기록의 설명 필드 및 소프트웨어 카탈로그의 설명 필드를 토큰화하고, 규칙들의 순서화된 수집을 이 데이터에 적용한다. 규칙들은 제2 계층에 대해 위에 사용된 것들과 유사할 수 있고, 각각의 규칙은 또한 트레이닝을 통해 결정된 각각의 가중치와 연관될 수 있다. 이들 규칙들의 순서화는 각각의 예상된 계산 시간 및/또는 예상된 정확도에 기초하여 배열될 수 있다. 또한, 제3 계층은 또한 주어진 제공자가 하나의 애플리케이션 제목만을 갖는 상황들을 고려하고, 주어진 제공자가 예측될 때마다 그 제목을 반환할 수 있다.
활동 기록이 완전히 분류되면, 활동 기록으로부터의 데이터는 CMDB 내의 구성 아이템으로서 저장될 수 있다. 예를 들어, 제공자 이름, 애플리케이션 제목, 버전, 가격, 계약 조건 등은 구성 아이템의 속성들일 수 있다.
일부 실시예들에서, 퍼블리셔 및/또는 제품 분류는 n-그램(여기서, n은 범위임) 단어 빈도-역 문서 빈도(TF-IDF) 벡터들의 코사인 유사도를 사용할 수 있으며, 이들 벡터들은 그들의 고유한 토큰 빈도 분포들을 반영하기 위해 카탈로그 및 거래들에 독립적으로 적합하다. 단어 벡터들 또는 단락 벡터들은 또한 유사도에 사용될 수 있다. "규칙들" 또는 유사도가 계산될 수 있는 많은 잠재적인 차원들(예를 들어, 거래로부터의 "벤더 이름" 및 퍼블리셔의 "이름" 또는 특정 퍼블리셔에 속하는 모든 잠재적인 제품들로부터의 "설명" 및 "이름" 등)이 있으므로, 비교적 작은 라벨링된 데이터세트는 상이한 유사도 접근법들의 효과에 관한 유용한 정보를 유도하고 최대 가능성 추정기를 통해 그들 모두를 최상으로 집계하는 법을 학습하기 위해 사용될 수 있다. 이것은 로지스틱 회귀 또는 소프트맥스 회귀를 여전히 수반할 수 있다.
TF-IDF 코사인 유사도 구현은 본질적으로 단어 가중치들에 대한 전제의 역할을 하는 TF-IDF와의 파라미터 공유의 형태에 해당한다. 결국, 이 파라미터 연결(tying)은 유연성이 새롭게 라벨링된 거래들로부터 새로운 토큰들을 픽업하게 하고 TF-IDF를 "사전에" 조정함으로써 클래스 특정 분포들을 학습하게 하기 위해 적절한 규칙화로 약화될 수 있다.
F. 실험적인 모델 결과들
런타임 실험들 동안, 본 명세서에 설명된 다중 계층 ML 모델은 언라벨링된 활동 기록들로부터 제공자들 및 애플리케이션 제목들 둘 다를 분류할 시에 94 내지 98% 초과의 정밀도를 달성하였다. 이들 결과들은 예시적인 활동 기록들의 90%만이 정확히 분류되는 수동 라벨링과 경쟁하거나 수동 라벨링을 능가한다.
일부 실시예들에서, 모델은 새로운 데이터(언라벨링된 활동 기록들)를 태깅하기 위해 이용될 수 있다. 이러한 시나리오들에서, 낮은 확신 예측들이 이루어질 때, 이러한 활동 기록들은 아직 소프트웨어 카탈로그에 있지 않은 소프트웨어 제품들을 포함할 수 있다. 따라서, 본 실시예들은 소프트웨어 카탈로그 및/또는 소프트웨어 카탈로그 어휘를 업데이트하는 법을 통지하는 것을 도울 수 있다.
VI. 예시적인 다중 계층 ML 모델
도 7a, 도 7b, 도 8, 및 도 9는 예시적인 실시예들에 따른 다중 계층 ML 모델의 3개의 계층을 더 상세히 도시한다. 즉, 도 7a는 제1 계층을 트레이닝하는 것을 도시하고, 도 7b는 제1 계층의 동작을 도시하고, 도 8은 제2 계층의 동작을 도시하고, 도 9는 제3 계층의 동작을 도시한다. 제2 계층 및 제3 계층의 임의의 트레이닝은 임의적이고 본 명세서의 본문에 설명된다.
앞서 언급된 바와 같이, 다중 계층 ML 모델의 적어도 하나의 계층은 활동 기록들의 라벨링된 세트에 기초하여 트레이닝 단계 동안 트레이닝될 수 있다. 이러한 시나리오들에서, 각각의 활동 기록은 활동 데이터, 제공자 데이터, 설명 데이터, 및 활동 기록이 소프트웨어, 제공자 이름, 및 애플리케이션 제목에 관련되는지의 기반 진리 값들을 표시하는 하나 이상의 라벨을 제한 없이 포함할 수 있다. 라벨링된 활동 기록들(610)은 이 트레이닝 데이터의 일 예를 제공한다.
다중 계층 ML 모델의 양태들은 여러 가지 상이한 방식들로 트레이닝될 수 있다. 예를 들어, 일부 실시예들에서, 구성 모델들의 하나 이상의 파라미터는 MLE 및/또는 MAP(maximum a posteriori) 추정을 사용하여 추정되고 조정될 수 있다. 구성 모델들의 파라미터들을 트레이닝하기 위한 다른 방식들은 다른 다양한 추정 방법들 중에서, 최대 간격 추정, 최대 엔트로피 추정, 최소 거리 추정, 및/또는 모멘트들의 방법을 포함할 수 있다.
일부 실시예들에서, 모델들 각각은 동일한 트레이닝 데이터 세트를 이용할 수 있다. 다른 예들에서, 각각의 모델은 그 자신의 고유한 트레이닝 데이터 세트를 제공받을 수 있다. 또한, 일부 트레이닝 데이터 엔트리들은 하나 이상의 테스팅 단계 동안의 사용을 위해 따로 확보될 수 있으며, 이는 초기 트레이닝 단계에 후속하여 그리고/또는 다수의 트레이닝 단계 사이에서 수행될 수 있다.
도 7a는 제1 계층(700)의 구성요소들을 트레이닝하는 것을 도시한다. 특히, ML 트레이닝 프로세스(708)는 라벨링된 활동 기록들(610)로부터의 활동 트레이닝 데이터(702)를 입력으로서 취하고 소프트웨어 분류자(714)를 출력으로서 생성할 수 있다. 일 예로서, 활동 트레이닝 데이터(702)는 라벨링된 활동 기록들(610)의 필드들(620 및 650)로부터의 데이터를 포함할 수 있다. 소프트웨어 분류자(714)는 활동 데이터의 새로운 관찰들이 소프트웨어에 관련되는지를 예측하는 부린 또는 수치 값을 반환하는 나이브 베이즈 분류자일 수 있다.
ML 트레이닝 프로세스(710)는 라벨링된 활동 기록들(610)로부터의 제공자 트레이닝 데이터(704)를 입력으로서 취하고 소프트웨어 분류자(716)를 출력으로서 생성할 수 있다. 일 예로서, 제공자 트레이닝 데이터(704)는 라벨링된 활동 기록들(610)의 필드들(630 및 650)로부터의 데이터를 포함할 수 있다. 소프트웨어 분류자(716)는 또한 제공자 데이터의 새로운 관찰들이 소프트웨어에 관련되는지를 예측하는 부린 또는 수치 값을 반환하는 나이브 베이즈 분류자일 수 있다.
ML 트레이닝 프로세스(712)는 라벨링된 활동 기록들(610)로부터의 설명 트레이닝 데이터(706)를 입력으로서 취하고 소프트웨어 분류자(718)를 출력으로서 생성할 수 이다. 일 예로서, 설명 트레이닝 데이터(706)는 라벨링된 활동 기록들(610)의 필드들(640 및 650)로부터의 데이터를 포함할 수 있다. 소프트웨어 분류자(718)는 또한 제공자 데이터의 새로운 관찰들이 소프트웨어에 관련되는지를 예측하는 부린 또는 수치 값을 반환하는 나이브 베이즈 분류자일 수 있다.
ML 트레이닝 프로세스(728)는 소프트웨어 분류자(714), 소프트웨어 분류자(716), 및 소프트웨어 분류자(718) 각각으로부터의 라벨링된 출력을 취한다. 따라서, 각각의 점선들에 의해 표시된 바와 같이, 소프트웨어 분류자 출력(720)은 소프트웨어 분류자(714)로부터 나오고, 소프트웨어 분류자 출력(722)은 소프트웨어 분류자(716)로부터 나오고, 소프트웨어 분류자 출력(724)은 소프트웨어 분류자(718)로부터 나온다. 라벨링된 출력은 소프트웨어 분류자(714), 소프트웨어 분류자(716), 및 소프트웨어 분류자(718) 각각의 예시적인 출력(실제 또는 합성)뿐만 아니라 그 기반 진리 정확도의 표시(예를 들어, 특정 활동 기록이 소프트웨어와 관련되는지 및 특정 활동 기록이 실제로 소프트웨어에 관련되는지의 예측)를 포함할 수 있다.
ML 트레이닝 프로세스(728)는 또한 단어 카운트 트레이닝 데이터(726) 및 연관된 기반 진리 라벨들을 취한다. 단어 카운트 트레이닝 데이터(726)는 특정 활동 기록이 특정 활동 기록과 소프트웨어 카탈로그 사이의 공통 단어들 및/또는 n-그램들에 기초하여 소프트웨어와 관련되는지의 예측들을 포함할 수 있다. 기반 진리 라벨들은 특정 활동 기록이 실제로 소프트웨어와 관련되는지를 표시할 수 있다.
ML 트레이닝 프로세스(728)는 로지스틱 회귀에 대한 가중치들(730)를 생성하며, 로지스틱 회귀는 소프트웨어 분류자(714), 소프트웨어 분류자(716), 소프트웨어 분류자(718), 및 단어 카운트 절차로부터의 출력들에 적용된다(상세에 대해서는 도 7b를 참조함). ML 트레이닝(708), ML 트레이닝(710), ML 트레이닝(712), 및 ML 트레이닝(728) 각각이 서로 독립적으로 발생할 수 있다는 점을 주목한다.
도 7b는 동작에서의 ML 모델의 제1 계층(750)을 도시한다. 활동 데이터(752), 제공자 데이터(754), 및 설명 데이터(756)는 새로운 활동 기록으로부터 나올 수 있다(여기서, 용어 "새로운"은 제1 계층이 트레이닝된 후에 활동 기록이 발생된 것, 또는 활동 기록이 제1 계층을 트레이닝하기 위해 사용되지 않을 수 있었던 것을 의미함).
이 데이터는 소프트웨어 분류자(714), 소프트웨어 분류자(716), 및 소프트웨어 분류자(718)에 각각 제공되며, 그 각각은 위의 논의에 따라 트레이닝되었을 수 있다. 이들 분류자들은 출력(758), 출력(760), 및 출력(762)을 각각 생성한다. 이들 출력들은 예를 들어, 활동 기록의 소프트웨어에 관련되는지의 예측들일 수 있고, 수치 또는 부린 형태를 취할 수 있다. 또한, 위에 논의된 바와 같이, (i) 활동 데이터(752), 제공자 데이터(754), 및 설명 데이터(756) 중 하나 이상과, (ii) 소프트웨어 카탈로그 사이의 단어 카운트 유사도(770)가 결정될 수 있다. 일반적으로, 소프트웨어 분류자(714), 소프트웨어 분류자(716), 소프트웨어 분류자(718), 및 단어 카운트 유사도(770)는 활동 데이터(752), 제공자 데이터(754), 및 설명 데이터(756)가 소프트웨어 거래와 일치하는지를 예측하는 유사도 함수들인 것으로 간주될 수 있다.
이들 출력들은 가중치들(764, 766, 768, 및 772)에 의해 각각 수정된다. 따라서, 가중치(764)는 출력(758)에 적용될 수 있고, 가중치(766)는 출력(760)에 적용될 수 있고, 가중치(768)는 출력(762)에 적용될 수 있고, 가중치(772)는 단어 카운트 유사도(770)에 적용될 수 있다. 이들 가중치들은 예를 들어, ML 트레이닝(728) 동안 결정될 수 있었다.
수정된 출력들은 로지스틱 회귀(774)에 제공되며, 이는 집계 "소프트웨어 또는 비-소프트웨어" 분류(776)를 생성한다. 로지스틱 회귀(774)는 예를 들어, L2 로지스틱 회귀일 수 있다.
로지스틱 회귀(774)가 소프트웨어와 관련된 바와 같이 활동 기록을 분류하는 경우에, 프로세스는 ML 모델의 제2 계층을 계속한다. 로지스틱 회귀(774)가 소프트웨어와 관련되지 않은 바와 같이 활동 기록을 분류하면, 활동 기록에 대한 분류 절차는 종료될 수 있다.
도 8은 동작에서의 다중 계층 ML 모델의 제2 계층(800)을 도시한다. 제2 계층은 제공자 데이터(754) 및 설명 데이터(756)를 입력으로서 취한다. 일부 실시예들에서, 이것은 동작(750)에서의 제1 계층에 입력으로서 사용되는 동일한 데이터일 수 있다. 일부 경우들에, 설명 데이터(756)가 생략될 수 있고 제공자 데이터(754)만이 사용된다.
토큰화(802)는 제공자 데이터(754) 및 설명 데이터(756)를 입력으로서 취하고 그 단어들 및/또는 n-그램들과 연관된 하나 이상의 토큰으로 구성되는 토큰화된 출력을 생성할 수 있다. 다른 처리, 조정, 또는 편집들은 제공자 데이터(754) 및 설명 데이터(756)에 이루어질 수 있다. 또한, 소프트웨어 카탈로그(804)는 토큰화(802)의 출력과 비교될 조건에 있도록 이미 토큰화(및/또는 처리, 조정, 또는 편집)된 것으로 가정된다.
그 다음, 다수의 규칙은 규칙 순서(806)로 이 데이터에 적용될 수 있다. 예를 들어, 제공자 규칙(808)을 적용하는 것은 토큰화(802)의 출력 및 소프트웨어 카탈로그(804)의 적어도 일부를 입력으로서 취하고, 각각의 알려진 제공자에 대한 각각의 확률들(814)을 출력으로서 생성할 수 있다. 마찬가지로, 제공자 규칙(810)을 적용하는 것은 토큰화(802)의 출력 및 소프트웨어 카탈로그(804)의 적어도 일부를 입력으로서 취하고, 각각의 알려진 제공자에 대한 각각의 확률들(816)을 출력으로서 생성할 수 있다. 유사하게, 제공자 규칙(812)을 적용하는 것은 토큰화(802)의 출력 및 소프트웨어 카탈로그(804)의 적어도 일부를 입력으로서 취하고, 각각의 알려진 제공자에 대한 각각의 확률들(818)을 출력으로서 생성할 수 있다. 제공자 규칙(810)과 제공자 규칙(812) 사이의 점선은 규칙 순서(806)가 임의의 수의 규칙들을 포함할 수 있는 것을 표시한다.
앞서 언급된 바와 같이, 규칙들은 토큰화된 입력 데이터와 소프트웨어 카탈로그(804) 사이의 정확한 일치들, 부분 일치들, 접두사 일치들, 접미사 일치들, 편집 거리들 또는 다른 유사도 함수들에 기초할 수 있다. 다른 유형들의 규칙들이 가능하다.
따라서, 소프트웨어 카탈로그(804)에 10개의 알려진 제공자가 있다면, 규칙은 이들 제공자들 각각에 대해 0부터 1까지의 확률을 발생시킬 수 있으며, 확률이 더 높을수록 토큰화된 입력 데이터와 소프트웨어 카탈로그(804) 사이의 일치가 더 양호하다. 예를 들어, 규칙이 정확한 일치에 기초하면, 규칙은 정확한 일치를 발견할 때 1의 확률 및 모든 다른 경우들에 0의 확률을 발생시킬 수 있다. 다른 한편, 규칙이 편집 거리에 기초하면, 규칙은 결정된 편집 거리에 반비례하는 확률을 발생시킬 수 있다.
규칙 순서(806)는 더 큰 정확도(예를 들어, 가중치들에 의해 표시된 바와 같음) 및/또는 더 낮은 계산 요건들을 규칙들이 우선 적용될 수 있도록 배열될 수 있다. 임의의 규칙이 임계치(예를 들어, 90% 또는 95%) 위의 확률을 발생시키면, 절차는 임의의 추가 규칙들을 적용하는 것을 생략할 수 있다. 또는, 절차는 모든 규칙들을 그들의 출력들에 관계없이 적용할 수 있다.
각각의 가중치는 각각의 규칙의 출력에 적용될 수 있다. 예를 들어, 가중치(820)는 각각의 알려진 제공자에 대한 각각의 확률들(814)에 적용될 수 있고, 가중치(822)는 각각의 알려진 제공자에 대한 각각의 확률들(816)에 적용될 수 있고, 가중치(824)는 각각의 알려진 제공자에 대한 각각의 확률들(818)에 적용될 수 있다. 앞서 언급된 바와 같이, 제2 계층은 라벨링된 데이터세트로 트레이닝되고 MLE를 적용하여 이들 가중치들을 결정할 수 있다.
집계 점수(826)를 계산하는 것은 각각의 알려진 제공자에 대해 수행될 수 있다. 이들 집계 점수들은 가중된 확률들의 합(예를 들어, 주어진 제공자에 대한 각각의 확률들에 적용된 가중치(820) + 주어진 제공자에 대한 각각의 확률들에 적용된 가중치(822) 등)일 수 있다. 다른 집계 함수들이 사용될 수 있다.
예측된 제공자(828)는 최고 집계 점수를 갖는 제공자일 수 있다. 이 제공자는 제공자 데이터(754) 및/또는 설명 데이터(756)와 가장 유사하거나 관련되는 것으로 간주될 수 있다. 일부 경우들에, 사용자는 상단 n 최고 집계 점수들(여기서, n은 3, 5, 10 등임)을 갖는 제공자들의 리스트를 제시받을 수 있고, 사용자는 이 리스트로부터 제공자를 선택할 수 있다.
제공자가 예측되면, 프로세스는 다중 계층 ML 모델의 제3 계층으로 이동할 수 있다. 도 9는 동작에서의 제3 계층(900)을 도시한다. 제3 계층(900)은 예측된 제공자(828) 및 설명 데이터(756)를 입력으로서 취한다. 일부 실시예들에서, 설명 데이터(756)는 동작에서의 제1 계층(750)에 입력으로서 사용되는 동일한 데이터일 수 있다.
토큰화(902)는 설명 데이터(756)를 입력으로서 취하고 그 단어들 및/또는 n-그램들과 연관된 하나 이상의 토큰으로 구성되는 토큰화된 출력을 생성할 수 있다. 다른 처리, 조정, 또는 편집들은 설명 데이터(756)에 이루어질 수 있다. 또한, 소프트웨어 카탈로그(804)는 토큰화(902)의 출력에 비교될 조건에 있도록 이미 토큰화(및/또는 처리, 조정, 또는 편집)된 것으로 가정된다.
제공자가 이미 예측되었으므로, 소프트웨어 카탈로그(804)로부터의 데이터의 서브세트는 이 계층에 사용될 수 있다. 특히, 예측된 제공자로부터의 애플리케이션 제목들만이 고려될 수 있다. 따라서, 일부 실시예들에서, 제3 계층은 예측된 제공자(828)와 연관되는 애플리케이션을 예측하거나 애플리케이션 제목을 전혀 예측하지 못한다. 또한, 예측된 제공자(828)가 단지 하나의 애플리케이션 제목과 연관되면, 이 애플리케이션 제목은 디폴트에 의해 선택될 수 있으며, 따라서 아래에 논의되는 규칙들 중 임의의 것의 애플리케이션을 회피한다.
그러나, 예측된 제공자(828)와 연관된 하나보다 많은 애플리케이션 제목이 있으면, 다수의 규칙은 이때 규칙 순서(906)로 이 데이터에 적용될 수 있다. 이들 규칙들은 제2 계층에 사용되는 것들과 유사하다.
예를 들어, 애플리케이션 제목 규칙(908)을 적용하는 것은 토큰화(902)의 출력 및 소프트웨어 카탈로그(804)의 적어도 일부를 입력으로서 취하고, 각각의 관련 애플리케이션 제목에 대한 각각의 확률들(914)을 출력으로서 생성할 수 있다. 마찬가지로, 애플리케이션 제목 규칙(910)을 적용하는 것은 토큰화(902)의 출력 및 소프트웨어 카탈로그(804)의 적어도 일부을 입력으로서 취하고, 각각의 관련 애플리케이션 제목에 대한 각각의 확률들(916)을 출력으로서 생성할 수 있다. 유사하게, 애플리케이션 제목 규칙(912)을 적용하는 것은 토큰화(802)의 출력 및 소프트웨어 카탈로그(804)의 적어도 일부를 입력으로서 취하고, 및 각각의 관련 애플리케이션 제목에 대한 각각의 확률들(918)을 출력으로서 생성할 수 있다. 제공자 규칙(910)과 제공자 규칙(912) 사이의 점선은 규칙 순서(906)가 임의의 수의 규칙들을 포함할 수 있는 것을 표시한다.
앞서 언급된 바와 같이, 규칙들은 토큰화된 입력 데이터와 소프트웨어 카탈로그(804) 사이의 정확한 일치들, 부분 일치들, 접두사 일치들, 접미사 일치들, 편집 거리들, 또는 다른 유사도 함수들에 기초할 수 있다. 다른 유형들의 규칙들이 가능하다.
따라서, 소프트웨어 카탈로그(804)에 100개의 관련 애플리케이션 제목이 있으면, 규칙은 이들 애플리케이션 제목들 각각에 대해 0부터 1까지의 확률을 발생시킬 수 있으며, 확률이 더 높을수록 토큰화된 입력 데이터와 소프트웨어 카탈로그(804) 사이의 일치가 더 양호하다. 예를 들어, 규칙이 정확한 일치에 기초하면, 규칙은 정확한 일치를 발견할 때 1의 확률 및 모든 다른 경우들에 0의 확률을 발생시킬 수 있다. 다른 한편, 규칙이 편집 거리에 기초하면, 규칙은 결정된 편집 거리에 반비례하는 확률을 발생시킬 수 있다.
규칙 순서(906)는 더 큰 정확도 및/또는 더 낮은 계산 요건들을 갖는 규칙들이 우선 적용될 수 있도록 배열될 수 있다. 임의의 규칙이 임계치(예를 들어, 90% 또는 95%) 위의 확률을 발생시키면, 절차는 임의의 추가 규칙들을 적용하는 것을 생략할 수 있다. 또는, 절차는 모든 규칙들을 그들의 출력들에 관계없이 적용할 수 있다.
각각의 가중치는 각각의 규칙의 출력에 적용될 수 있다. 예를 들어, 가중치(920)는 각각의 관련 애플리케이션 제목(914)에 대한 각각의 확률들에 적용될 수 있고, 가중치(922)는 각각의 관련 애플리케이션 제목(916)에 대한 각각의 확률들에 적용될 수 있고, 가중치(924)는 각각의 관련 제공자(918)에 대한 각각의 확률들에 적용될 수 있다. 제3 계층은 라벨링된 데이터세트로 트레이닝되고 MLE를 적용하여 이들 가중치들을 결정할 수 있다.
집계 점수(926)를 계산하는 것은 각각의 관련 애플리케이션 제목에 대해 수행될 수 있다. 이들 집계 점수들은 가중된 확률들의 합, 예를 들어 주어진 애플리케이션 제목에 대한 각각의 확률들에 적용된 가중치(920) + 주어진 애플리케이션 제목에 대한 각각의 확률들에 적용된 가중치(922) 등일 수 있다. 다른 집계 함수들이 사용될 수 있다.
예측된 애플리케이션 제목(928)은 최고 집계 점수를 갖는 애플리케이션 제목일 수 있다. 이 애플리케이션 제목은 설명 데이터(756)와 가장 유사하거나 관련되는 것으로 간주될 수 있다. 일부 경우들에, 사용자는 상단 n 최고 집계 점수들(여기서, n은 3, 5, 10 등임)을 갖는 애플리케이션 제목들의 리스트를 제시받을 수 있고, 사용자는 이 리스트로부터 애플리케이션 제목을 선택할 수 있다.
VII. 예시적인 소프트웨어 분류 동작들
도 10은 예시적인 실시예에 따른 프로세스 또는 방법을 도시하는 흐름도이다. 방법은 본 명세서에 설명된 다중 계층 ML 모델의 런타임 단계와 관련될 수 있다. 방법은 컴퓨팅 디바이스(100)와 같은 컴퓨팅 디바이스, 및/또는 서버 클러스터(200)와 같은 컴퓨팅 디바이스들의 클러스터에 의해 수행될 수 있다. 그러나, 방법은 다른 유형들의 디바이스들 또는 디바이스 서브시스템들에 의해 수행될 수 있다. 예를 들어, 방법은 랩톱 또는 태블릿 디바이스와 같은, 휴대용 컴퓨터에 의해 수행될 수 있다.
도 10의 실시예들은 그 도시된 특징들 중 임의의 하나 이상의 제거에 의해 단순화될 수 있다. 또한, 이들 실시예들은은 이전 도면들 중 임의의 것의 특징들, 양태들, 및/또는 구현들과 조합되거나 본 명세서에 달리 설명될 수 있다. 단계들 또는 블록들의 일부 또는 전부는 도 7b, 도 8, 및 도 9와 관련하여 도시되고 설명된 바와 같이 제1 계층(750), 제2 계층(800), 및/또는 제3 계층(900)과 유사하거나 동일할 수 있다.
블록(1000)은 관리형 네트워크와 관련된 활동 기록을 수신하는 단계를 수반할 수 있으며, 활동 기록은 활동 데이터, 제공자 데이터, 및 설명 데이터를 포함한다.
블록(1002)은 활동 기록이 소프트웨어와 관련되는 것을 예측하기 위해 다중 계층 ML 모델의 제1 계층을 적용하는 단계를 수반할 수 있으며, 제1 계층을 적용하는 단계는 (i) 복수의 베이즈 모델을 사용하여, 활동 기록이 활동 데이터 내의 단어들의 제1 세트, 제공자 데이터 내의 단어들의 제2 세트, 및 설명 데이터 내의 단어들의 제3 세트에 기초하여 소프트웨어와 관련된다는 각각의 가능성들을 결정하는 단계, 및 (ii) 활동 기록이 각각의 가능성들에 기초하여 소프트웨어와 관련된다는 집계 가능성을 예측하는 단계를 포함한다.
블록(1004)은 활동 기록에서 참조되는 소프트웨어 애플리케이션의 제공자 이름을 예측하기 위해 다중 계층 ML 모델의 제2 계층을 적용하는 단계를 수반할 수 있으며, 제2 계층을 적용하는 단계는 (i) 제공자 이름 규칙 순서에 따라, 복수의 제공자 이름 규칙을 단어들의 제2 세트 및 단어들의 제3 세트에 적용하여 복수의 제공자에 대한 각각의 제공자 이름 가능성들을 발생시키는 단계, 및 (ii) 각각의 제공자 이름 가능성들에 기초하여 소프트웨어 애플리케이션의 제공자 이름을 예측하는 단계를 포함한다.
블록(1006)은 소프트웨어 애플리케이션의 애플리케이션 제목을 예측하기 위해 다중 계층 ML 모델의 제3 계층을 적용하는 단계를 수반할 수 있으며, 다중 계층 ML 모델의 제3 계층을 적용하는 단계는 (i) 애플리케이션 제목 규칙 순서에 따라, 복수의 애플리케이션 제목 규칙을 단어들의 제3 세트에 적용하여 제공자 이름과 연관된 하나 이상의 애플리케이션에 대한 각각의 애플리케이션 제목 가능성들을 발생시키는 단계, 및 (ii) 각각의 애플리케이션 제목 가능성들에 기초하여 소프트웨어 애플리케이션의 애플리케이션 제목을 예측하는 단계를 수반한다.
블록(1008)은 데이터베이스에, 활동 기록이 소프트웨어와 관련되는 것을 표시하는 구성 아이템을 저장하는 단계를 수반하며, 구성 아이템은 제공자 이름 및 애플리케이션 제목을 포함하는 속성들을 포함한다.
일부 실시예들에서, 복수의 베이즈 모델 각각은 (i) 활동 트레이닝 데이터, 제공자 트레이닝 데이터, 및 설명 트레이닝 데이터 중 하나 이상을 (ii) 각각의 활동 기록이 소프트웨어와 관련되는지의 표시를 각각 연관시키는 라벨링된 활동 기록들로 트레이닝된다.
일부 실시예들에서, 복수의 베이즈 모델 각각은 트레이닝되고 서로 독립적으로 적용된다.
일부 실시예들에서, 활동 기록이 소프트웨어와 관련된다는 집계 가능성을 예측하는 단계는 로지스틱 회귀 모델을 각각의 가능성들에 적용하는 단계를 포함하며, 로지스틱 회귀 모델은 각각의 가중치들을 각각의 제공자 이름 가능성들에 적용한다.
일부 실시예들에서, 제1 계층을 적용하는 단계는 (i) 활동 데이터, 제공자 데이터, 또는 설명 데이터 중 임의의 것, 및 (ii) 단어들 및 문구들의 미리 결정된 카탈로그에 나타나는 단어들 또는 문구들의 카운트들을 결정하는 단계를 추가로 수반할 수 있으며, 활동 기록이 소프트웨어와 관련된다는 집계 가능성을 예측하는 단계는 또한 단어들 또는 문구들의 카운트들에 기초한다. 일부 실시예들에서, 미리 결정된 카탈로그는 소프트웨어 애플리케이션 제목들 및 소프트웨어 애플리케이션 제목들의 제공자들의 제공자 이름들을 포함한다.
일부 실시예들에서, 미리 결정된 카탈로그는 또한 소프트웨어 애플리케이션 제목들 또는 제공자 이름들과 연관된 URL들을 포함한다.
일부 실시예들에서, 복수의 베이즈 모델 각각은 각각의 임계치와 연관되며, 제1 계층을 적용하는 단계는 활동 기록이 소프트웨어와 관련된다는 각각의 가능성들을 그들의 각각의 임계치들과 비교하는 단계를 추가로 포함한다. 일부 실시예들에서, 제1 계층을 적용하는 단계는 활동 기록이 소프트웨어와 관련된다는 각각의 가능성들 중 적어도 하나와 서로의 미리 결정된 범위 내에 있는 그의 각각의 임계치 사이의 비교에 기초하여 수동 분류를 위한 활동 기록을 태깅하는 단계를 추가로 포함한다.
일부 실시예들에서, 미리 결정된 카탈로그는 복수의 기반 진리 제공자 이름을 포함하며, 복수의 제공자 이름 규칙은 단어들의 제2 세트가 복수의 기반 진리 제공자 이름 중 하나와 정확히 일치할 때 트리거되는 제1 규칙, 단어들의 제2 세트가 공통 접두사를 복수의 기반 진리 제공자 이름 중 하나와 공유할 때 트리거되는 제2 규칙, 단어들의 제2 세트가 복수의 기반 진리 제공자 이름 중 하나 내에 포함될 때 트리거되는 제3 규칙, 또는 단어들의 제2 세트와 복수의 기반 진리 제공자 이름 중 하나 사이의 편집 거리에 기초하여 트리거되는 제4 규칙을 포함한다.
일부 실시예들에서, 미리 결정된 카탈로그는 복수의 기반 진리 애플리케이션 제목을 포함하고, 복수의 애플리케이션 제목 규칙은 단어들의 제3 세트가 복수의 기반 진리 애플리케이션 제목 중 하나와 정확히 일치할 때 트리거되는 제1 규칙, 단어들의 제2 세트가 공통 접두사를 복수의 기반 진리 애플리케이션 제목 중 하나와 공유하는 것에 기초하는 제2 규칙, 단어들의 제3 세트가 복수의 기반 진리 애플리케이션 제목 중 하나 내에 포함될 때 트리거되는 제3 규칙, 또는 단어들의 제3 세트와 복수의 기반 진리 애플리케이션 제목 중 하나 사이의 편집 거리에 기초하여 트리거되는 제4 규칙을 포함한다.
일부 실시예들에서, 복수의 애플리케이션 제목 규칙을 단어들의 제3 세트에 적용하는 단계는 제공자 이름이 정확히 하나의 연관된 애플리케이션 제목을 갖는 것을 결정하는 단계를 포함하고, 소프트웨어 애플리케이션의 애플리케이션 제목을 예측하는 단계는 애플리케이션 제목이 정확히 하나의 연관된 애플리케이션 제목인 것을 예측하는 단계를 포함한다.
일부 실시예들에서, 제공자 이름 규칙 순서는 복수의 제공자 이름 규칙을 계산 복잡성의 오름차순으로 배열한다. 일부 실시예들에서, 애플리케이션 제목 규칙 순서는 복수의 애플리케이션 제목 규칙을 계산 복잡성의 오름차순으로 배열한다.
일부 실시예들에서, 소프트웨어 애플리케이션의 제공자 이름을 예측하는 단계는 각각의 가중치들을 각각의 제공자 이름 가능성들에 적용하는 단계를 포함하며, 각각의 가중치들은 (i) 제공자 트레이닝 데이터 및 설명 트레이닝 데이터를 (ii) 복수의 제공자 이름 규칙의 각각의 제공자 이름 규칙들과 연관시키는 라벨링된 트레이닝 데이터세트로 제2 계층을 트레이닝하는 것에 기초하여 결정된다.
일부 실시예들에서, 소프트웨어 애플리케이션의 애플리케이션 제목을 예측하는 단계는 각각의 가중치들을 각각의 애플리케이션 제목 가능성들에 적용하는 단계를 포함하며, 각각의 가중치들은 (i) 설명 트레이닝 데이터를 (ii) 복수의 애플리케이션 제목 규칙의 각각의 애플리케이션 제목 규칙들과 연관시키는 라벨링된 트레이닝 데이터세트로 제3 계층을 트레이닝하는 것에 기초하여 결정된다.
VIII. 예시적인 소프트웨어 조정 툴들
위에 설명된 ML 기반 소프트웨어 분류 실시예들은 이들 거래들에서 소프트웨어의 제공자(퍼블리셔) 및 애플리케이션 제목(제품)을 식별할 뿐만 아니라, 소프트웨어에 관련되는 거래들을 결정하기 위해 사용될 수 있다. 이러한 결정들 및 식별들은 송장들, 영수증들, 신용 카드 청구서들 등과 같은, 다양한 출처들로부터 이루어질 수 있다.
이들 거래들 각각은 금액(예를 들어, 달러), 기업 내의 코스트 센터, 기업 내의 부서, 및/또는 소프트웨어가 구매되거나 배치된 물리적 위치와 연관될 수 있다. 이 추가적인 정보는 거래(예를 들어, 송장)의 출처로부터 자동으로 결정되거나 거래에 친숙한 사용자에 의해 수동으로 입력될 수 있다. 예를 들어, 거래의 금액 및 그것의 물리적 위치는 송장으로부터 자동으로 결정될 수 있는 한편, 분류를 위해 송장을 시스템으로 입력하거나 스캐닝하는 사용자는 코스트 센터 및 부서를 입력할 수 있다. 각각의 거래는 또한 유형, 예컨대 지불 계정들(예를 들어, 퍼블리셔로부터 송장 작성된 거래) 또는 지출(예를 들어, 기업의 직원의 개인 자금들로부터 구매되었고 따라서 변제될 수 있는 거래)과 연관될 수 있다.
거래들이 (예를 들어, 위의 ML 기반 시스템을 사용하여) 분류되면, 이들 분류들은 데이터베이스 내의 연관된 정보와 조합될 수 있다. 이 데이터의 일부 또는 전부는 GUI를 통해 디스플레이될 수 있다.
본 명세서의 실시예들은 GUI를 다양한 방식들로 표현할 수 있다. 예를 들어, 서버 디바이스는 예를 들어, HTML 및 JAVASCRIPT®의 조합을 사용하여 GUI의 표현을 발생시킬 수 있다. JAVASCRIPT®은 클라이언트측 사이드 실행가능한 코드, 서버측 실행가능한 코드, 또는 둘 다를 포함할 수 있다. 서버 디바이스는 클라이언트 디바이스가 그의 국부적으로 정의된 외관 및 느낌에 따라 스크린 상에 디스플레이하도록 이 표현을 클라이언트 디바이스에 송신하거나 다른 방법으로 제공할 수 있다. 대안적으로, GUI의 표현은 클라이언트 디바이스가 그로부터 그래픽 출력을 직접 발생시키기 위해 사용할 수 있는 중간 형태(예를 들어, JAVA® 바이트-코드)와 같은 다른 형태들을 취할 수 있다. 다른 가능성들이 존재한다.
또한, 버튼들, 메뉴들, 탭들, 슬라이더들, 체크박스들, 토글들 등과 같은, GUI 요소들과의 사용자 상호작용은 그것의 "선택", "활성화", 또는 "구동"으로 지칭될 수 있다. 이들 용어들은 GUI 요소들이 키보드, 포인팅 디바이스, 터치스크린, 또는 다른 메커니즘을 통해 상호작용되는지에 관계없이 사용될 수 있다.
그 점에 대해, 도 11은 GUI(1100)를 도시하며, 이는 분류된 소프트웨어 거래들의 시각적 표현이다. GUI(1100)는 날짜, 설명, 금액, 결정된 퍼블리셔, 결정된 제품, 유형, 및 부서 연관된 각각의 거래에 대한 열들을 포함하는 테이블의 형태이다. 따라서, 열들은 거래들의 별개의 필드들을 표현할 수 있다. 헤더 행(1102)는 제목들을 각각의 열에 제공한다. 도시되는 열들은 단순화를 위해 불완전하고, 더 많은 열들(예를 들어, 코스트 센터 및 위치)은 디스플레이에 이용가능할 수 있다.
엔트리 행들(1104, 1106, 1108, 1110, 1112, 및 1114)은 단일 소프트웨어 거래를 각각 표현한다. 예를 들어, 엔트리 행(1104)은 $46,000의 금액에 대한 "Wordwriter annual subscription"의 구매를 표현하며, 퍼블리셔는 "Wordwriter, Inc"로 식별되었고, 제품은 "Wordwriter"로 식별되었고, 구매는 기불 계정을 통하였고, 구매를 한 부서는 "Publishing"이다. 다른 예에서, 엔트리 행(1112)은 $87.00의 금액에 대한 "SocialNet Premium fee"의 구매를 표현하며, 퍼블리셔는 "SocialNet"로 식별되었고, 제품은 식별되지 않았고, 구매는 지출을 통하였고, 구매를 한 부서는 "HR"이다.
각각의 엔트리 행은 또한 그의 좌측에 대한 체크박스와 연관된다. 엔트리 행의 체크박스가 체크될 때, 액션들은 엔트리를 더 상세히 디스플레이하는 것, 엔트리를 편집하는 것, 또는 엔트리를 삭제하는 것과 같은, 드롭 다운 메뉴(1116)를 통해 엔트리에 수행될 수 있다. 헤더 행(1102)에 대한 체크박스가 체크되면, 모든 엔트리 행들은 각각에 공통 액션들을 수행하기 위해 선택될 수 있다.
컨트롤(1118)은 사용자가 GUI(1100)의 페이지당 디스플레이된 행들을 수를 구성하는 것을 허용한다. 컨트롤(1118)은 또한 사용자가 이들 페이지들 사이를 내비게이션하는 것을 허용한다.
검색 박스(1120)는 사용자가 텍스트 검색 용어를 입력하는 것을 허용한다. 이에 응답하여, 시스템은 GUI(1100)의 테이블을 디스플레이할 수 있지만 적어도 하나의 필드를 갖는 엔트리 행들만이 용어를 포함하거나 일치한다. 예를 들어, 사용자가 검색 박스(1120)에 "채팅"을 입력했으면, GUI(1100)는 이 검색 용어가 이들 엔트리 행들의 설명, 퍼블리셔, 및 제품 열들 내의 텍스트와 일치하는 것으로 인해, 엔트리 행들(1106 및 1108)만을 디스플레이할 수 있다.
중기업 내지 대기업은 대규모 소프트웨어 구매들을 가질 수 있어, 한 달에 수백 또는 수천의 거래에 용이하게 도달한다. 결과로서, 이 소프트웨어의 이용 및 비용을 추적하는 것은 번거롭고 비용이 많이 드는 문제이다.
예를 들어, 충분히 큰 조직에서, 서로 통신하는 상이한 부서들은 동일한 소프트웨어에 대한 전사적 라이센스들을 각각 구매할 수 있다. 따라서, 기업은 이 소프트웨어에 대해 이중 라이센싱되고 중복 라이센스들에 돈을 낭비하고 있다.
다른 시나리오에서, 상이한 부서들은 동일한 기능들을 위한 상이한 소프트웨어 툴들을 이용할 수 있다. 따라서, 3개의 상이한 부서가 3개의 상이한 온라인 채팅 프로그램을 사용하는 것이 가능하다. 이들 3개의 채팅 프로그램이 서로 호환되지 않고 따라서 부서간 채팅 세션들을 용이하게 할 수 없을 가능성이 있을 뿐만 아니라, 기업은 그들 중 2개를 제거하고 모든 3개의 부서가 단 하나의 이러한 프로그램을 사용하게 함으로써 라이센싱 비용들을 감소시킬 수 있다.
또 다른 시나리오에서, 2개의 기업은 합병할 수 있거나, 하나는 다른 것을 인수할 수 있다. 이들 기업들은 다양한 기능들을 위한 라이센싱된 상이한 소프트웨어 솔루션들을 각각 가질 수 있다. 그러나, 이 중복성을 제거하고 그것에 의해 전체 소프트웨어 경비를 감소시키는 것은 기업들이 그들의 라이센싱된 소프트웨어의 정확한 재고들을 갖지 않을 수 있으므로, 몇달 또는 몇년 걸릴 수 있다.
이들 및 다른 문제들을 해결하기 위해, 소프트웨어 자산 관리 툴들이 도입되었다. 소프트웨어 자산 관리 툴은 기업이 그의 구매된 및/또는 배치된 소프트웨어를 추적하는 것을 허용하는 기능들뿐만 아니라, 그에 대한 자격들의 수 및 유형을 포함한다. 기업이 원격 네트워크 관리 플랫폼(320)을 이용할 때, 이러한 툴들은 소프트웨어의 표현들 및 그의 자격들을 그 계산 인스턴스(예를 들어, 계산 인스턴스(322))의 데이터베이스에 저장할 수 있다. 따라서, 웹 기반 GUI를 통해, 기업은 그의 소프트웨어 자산들의 재고를 유지가능할 수 있다.
이 논의를 위해, 특정 소프트웨어 패키지는 소프트웨어의 퍼블리셔, 제품, 버전, 및 에디션(edition)을 포함하는 소프트웨어 모델에 의해 표현될 수 있다. 일부 경우들에, 소프트웨어 모델은 단지 퍼블리셔 및 제품과 같은, 더 많거나 더 적은 정보를 포함할 수 있다. 예를 들어, 엔트리 행(1110)에서 지칭되는 소프트웨어 패키지는 "ABC Software"의 퍼블리셔, "PhotoEditor"의 제품 이름, 3.1의 버전, 및 1.0의 에디션을 가질 수 있다.
또한 이 논의를 위해, 자격은 기업이 구매했던 이들 라이센스들의 유형들뿐만 아니라, 라이센스들의 카운트일 수 있다. 라이센스 유형들은 지리적 기반(예를 들어, 사이트 전체 또는 세계 전체), 디바이스당, 프로세서당, 코어당, 사용자당, 동시 사용자당 등일 수 있다. 예를 들어, 기업은 PhotoEditor의 5개의 디바이스당 설치에 대한 자격들을 구매했을 수 있다. 이 경우에, 기업은 5개 이하의 상이한 컴퓨팅 디바이스 상에 이 소프트웨어 패키지를 설치하도록 허용된다.
또한, 소프트웨어 자산 관리 툴들은 도 5a 및 도 5b의 맥락에 설명된 발견 절차들에 의해 용이하게 될 수 있다. 이들 절차들은 기업 내의 디바이스들 상에 설치된 소프트웨어를 식별가능할 수 있다(즉, 기업은 관리형 네트워크(300)에 의해 표현될 수 있음). 그 다음, 발견된 소프트웨어는 기업이 언더라이센싱되거나, 오버라이센싱되거나, 적절히 라이센싱되는지를 결정하기 위해 소프트웨어 자산 관리 데이터베이스 내의 자격들과 비교될 수 있다
그럼에도 불구하고, 발견 절차들은 모든 설치된 소프트웨어 패키지들을 식별가능하지 않을 수 있다. 예를 들어, 일부 클라이언트 디바이스들(예를 들어, 랩톱들 및 모바일 디바이스들)은 발견이 실행 중인 동안 관리형 네트워크 상에 있지 않을 수 있으며, 이는 설치된 소프트웨어의 언더카운트를 초래할 수 있다. 또한, 관리형 네트워크에 의해 사용되는 일부 소프트웨어 패키지들은 관리형 네트워크 상에 실제로 설치되지 않을 수 있으며; 대신에, 그것은 제3자 및/또는 클라우드 기반 제공자에 의해 동작되는 네트워크 내에 설치될 수 있다.
궁극적으로, 소프트웨어 자산 관리 툴들의 도움으로도, 볼 수 없는 것을 관리할 수 없다. 따라서, 위에 설명되고 도 11에 예시된 소프트웨어 분류 실시예들을 소프트웨어 자산 관리 솔루션으로 통합하는 것은 후자의 효과를 개선할 수 있다.
특히, 거래들에 기초한 소프트웨어 분류는 소프트웨어 자산 관리 툴에 의해 관리되지 않은 소프트웨어를 식별할 수 있다. 이 비관리형 소프트웨어는 기업의 일부 상에 추가적인, 중복적인, 또는 낭비적인 경비를 표현할 수 있다. 또한, 사용자가 코스트 센터, 부서, 또는 위치 기초로 특정 유형들의 추가적인, 중복적인, 또는 낭비적인 경비(예를 들어, 기업 직원들은 기업이 사이트 전체에 이미 라이센스를 부여받은 소프트웨어에 대한 개별 라이센스들을 구매하는 것)를 신속히 식별하는 것을 허용하는 GUI들이 생성될 수 있다. 더욱이, 추가적인 GUI들은 기업 경비가 높거나, 기업이 복수의 상이한 소프트웨어 패키지를 라이센싱하고 있는 소프트웨어의 카테고리들을 사용자들이 식별하는 것을 도울 수 있다.
A. 소프트웨어 경비 검출을 위한 그래픽 사용자 인터페이스들
도 12a는 소프트웨어 경비 검출을 용이하게 하는 GUI(1200)를 도시한다. 특히, GUI(1200)뿐만 아니라, 본 명세서에 설명된 다른 GUI들은 사용자가 관리형 및 비관리형 소프트웨어 둘 다에 대한 소프트웨어 경비를 신속히 결정하고, 이 경비의 출처를 결정하기 위해 드릴 다운하는 것을 허용한다. 이들 GUI들로부터, 사용자는 오버라이센스 소프트웨어 및 중복 소프트웨어 패키지들에 관한 경비를 감소시킬 수 있는 전력들을 식별가능할 수 있다.
이들 도면들에 도시된 수치 양들이 도면당 또는 도면들에 걸쳐 일관될 수 있거나 일관되지 않을 수 있다는 점을 주목한다. 대신에, 이들 도면들 내의 양들은 예시를 위한 것이고 그들 사이의 임의의 관계들은 아래에 설명될 수 있다.
GUI(1200)는 페인들(1202, 1206, 및 1212)을 포함한다. 페인(1202)은 날짜 범위(1204)을 포함하는 제목 바이며, 이는 2018년 4월 1일 내지 2019년 3월 31일이 선택된 범위로 도시된다. 날짜 범위(1204)는 예를 들어, 지난 주, 지난 달, 지난 분기, 작년, 지난 2년, 지난 3년, 사용자 구성 범위 등을 포함하는 범위들을 선택하기 위해 사용자 조정가능할 수 있다. 이러한 범위가 선택되면, GUI(1200)는 이 범위로부터 데이터를 포함하기 위해 업데이트될 수 있다. 예를 들어, 날짜 범위가 2017년 4월 1일에서 2019년 3월 31일로 변경되면, 페인들(1206 및 1212)은 새롭게 지정된 2년 범위로부터 데이터를 반영하기 위해 동적으로 업데이트될 수 있다.
페인(1206)은 슬라이더(1208) 및 메뉴(1210)를 포함한다. 좌측에 위치되어 도시된 슬라이더(1208)는 모든 소프트웨어 또는 비관리형 소프트웨어만이 메뉴(1210) 및/또는 페인(1212)에 제시되는지를 제어한다. 이 기능은 아래의 도 12c에 도시될 것이다.
메뉴(1210)는 경비가 위에 설명된 분류 절차들에 의해 발견된 소프트웨어 패키지들의 확장가능하고 접기가능한 리스트를 포함한다. 메뉴(1210)는 퍼블리셔들의 절단된 리스트, 각각에 대한 총 검출된 경비, 및 각각에 대한 상태를 포함한다. 총 검출된 경비는 제품들의 전부에 걸쳐 그러한 퍼블리셔에 기인하는 모든 경비의 합일 수 있다. 상태는 퍼블리셔의 경비의 임의의 것이 비관리형 소프트웨어에 기인하는지를 표시할 수 있다. 그렇다면, 안에 감탄 부호를 갖는 원은 상태 열에 제시될 수 있다. 특히, 메뉴(1210)에서, 카드보드 이외에 각각의 퍼블리셔는 그 상태 열에 이러한 표시기를 갖는다.
각각의 퍼블리셔는 또한 퍼블리셔의 이름의 좌측에 위치된 각각의 드롭 다운 화살표와 연관될 수 있다. 활성화될 때, 이 화살표는 연관된 퍼블리셔 밑에 서브메뉴를 생성하기 위해 확장될 수 있으며, 서브메뉴는 퍼블리셔에 의해 제공되는 제품들(소프트웨어 패키지들 또는 서비스들)의 리스트를 포함한다. 이 기능은 아래의 도 12b에 도시될 것이다.
메뉴(1210) 내의 퍼블리셔들의 리스트의 상단에는 "모든 퍼블리셔들"에 대한 엔트리가 있다. 이 엔트리에 대한 비용 및 상태 열들은 분류된 소프트웨어 패키지들의 모든 퍼블리셔들에 대한 총 소프트웨어 경비, 및 이 경비의 임의의 것이 비관리형 소프트웨어에 기인하는지를 각각 표시한다.
페인(1212)은 날짜 범위(1204)에 의해 표시된 시간 기간에 걸쳐 소프트웨어 경비의 차트(1214)를 포함한다. 도시되는 실시예는 지불 계정 및 지출들에 기인하는 경비 금액들을 지정하는 스택 바 차트이다. 지불 계정 금액들은 각각의 바에서 지출 금액들 위에 나타난다. 다른 유형들의 차트들 또는 그래프들이 가능할 수 있다. 위의 차트(1214)는 모든 퍼블리셔들에 걸친 경비의 요약이다. 이 경비의 합($33,372,579)은 지불 계정 경비($27,827,654) 및 지출 경비($5,544,925)로 분할된다. 또한, 총 관리되지 않은 경비($8,824,490)가 제시된다.
GUI(1200)는 어느 소프트웨어 패키지들이 소프트웨어 자산 관리 툴에 의해 관리되고 있지 않는지뿐만 아니라, 관리되지 않은 경비 금액을 사용자가 신속히 결정하는 것을 허용한다. 이것은 비관리형 소프트웨어가 관리되고 있지 않는 이유뿐만 아니라, 이들 및 다른 소프트웨어 패키지들에 소비된 금액들이 보증되는지의 추가 조사를 용이하게 한다.
위에 언급된 바와 같이, 도 12b는 활성화된 ABC Software와 연관되는 메뉴(1210) 내의 드롭 다운 화살표를 갖는 GUI(1200)를 도시한다. 응답적으로, 서브메뉴는 ABC Software에 소비된 $3.9 백만이 PhotoEditor에 대해서는 $2.7 백만, Catalyst에 대해서는 $1.1 백만, 및 클라우드 서비스들에 대해서는 $100,000로 분할되는 것을 제시하는 것으로 나타난다. 특히, PhotoEditor 및 Catalyst 소프트웨어는 관리되는 한편, 클라우드 서비스 라인 아이템은 관리되지 않는다. 이것은 하나 이상의 개인 또는 그룹들이 ABC Software와 기업 사이의 임의의 더 넓은(예를 들어, 기업 전체) 라이센서 계약 이외에 ABC Software로부터 클라우드 서비스들을 구매하고/하거나 라이센싱하고 있을 수 있는 것을 표시할 수 있다. 따라서, 이들 구매들의 조사는 클라우드 서비스들이 실제로 기업에 의해 요구되는지 및 그렇다면 그들이 임의의 기존 계역에 의해 커버되는지를 결정하기 위해 이루어질 수 있다.
또한 위에 언급된 바와 같이, 도 12c는 우측에 위치된 슬라이더(1208)를 갖는 GUI(1200)를 도시한다. 따라서, 메뉴(1210) 내의 퍼블리셔들은 적어도 일부 비관리형 소프트웨어를 갖는 것들만을 디스플레이하기 위해 필터링된다. 이것은 사용자들이 이 비관리형 소프트웨어로 임의의 문제들을 해결할 시에 들의 주의를 신속히 집중시키는 것을 허용한다.
이러한 특징들에 더하여, 도 12d는 메뉴(1210)로부터 선택된 클라우드 서비스들을 갖는 GUI(1200)를 도시한다. 예를 들어, 사용자는 이 메뉴 엔트리를 클릭하거나 다른 방법으로 활성화할 수 있고 페인(1212)은 도 12d에 도시된 바와 같이 업데이트될 수 있다. 특히, 페인(1212)의 상단에서의 경비 금액들은 ABC Software로부터의 클라우드 서비스들에만 집중하기 위해 업데이트된다. 그 점에 대해, 그들은 총 $100,000가 날짜 범위(1204)에 의해 표시된 시간 기간 동안 클라우드 서비스들에 소비된 것을 표시한다. 이것의 전부는 수취 계정보다는 오히려 지출들로 인한 것이었고, 이것의 전부는 또한 관리되지 않는다. 차트(1214)는 또한 클라우드 서비스들에 관한 시간에 따른 경비를 나타내기 위해 업데이트될 수 있다. 도 12d의 예는 사용자들이 비관리형 소프트웨어 및 잠재적인 초과 경비를 용이하게 식별하는 것을 허용하기 위해 분류된 소프트웨어 거래들을 표현하는 데이터가 어떻게 디스플레이될 수 있는지를 추가로 증명한다.
도 12e, 도 12f, 및 도 12g는 GUI(1200) 내의 페인(1212)의 확대도를 도시한다. 특히, 서브페인(1220)은 페인(1212) 아래에 나타나는 것으로서 도시된다. 서브페인(1220)은 소프트웨어 거래들, 코스트 센터들, 부서, 및 위치에 대한 선택가능한 탭들을 포함하여, 차트(1214)에 도시된 소프트웨어 경비에 관한 추가적인 상세를 제공한다. 일부 실시예들에서, 이들 탭들 중 정확히 하나만이 한 번에 선택될 수 있고 그렇게 행하는 것은 탭들 아래의 서브페인(1220)의 부분들이 추가 정보를 디스플레이하게 할 수 있다.
도 12e에서, 코스트 센터 탭이 선택된 바와 같이 도시된다. 따라서, 차트(1214)에 도시된 경비는 서브페인(1220) 내의 코스트 센터에 의해 발생된다. 기업들에서, 코스트 센터들은 지출들의 논리적인 그룹화들일 수 있다. 각각의 코스트 센터는 각각의 화살표들 아래에 디스플레이된 코스트 센터들에 속하는 개별 소프트웨어 거래들을 갖는 드롭 다운 화살표에 의해 표현된다. 예를 들어, 2개의 소프트웨어 거래는 제품 UX 코스트 센터를 사용하여 이루어졌다. 날짜, 설명, 금액(비용), 퍼블리셔, 제품, 및 유형은 각각에 대해 제시된다. 특히, 퍼블리셔들 및 제푼들의 전부가 소프트웨어 거래들에 동일할지라도, 설명들은 일부에 대해 상이하다. 이것은 거래 분류자가 소프트웨어의 다양한 설명들을 적절한 퍼블리셔 및 제품에 정확히 할당하기에 충분히 유연할 수 있는 것을 반영한다.
도 12f에서, 부서 탭은 선택된 바와 같이 도시된다. 따라서, 차트(1214)에 도시된 경비는 서브페인(1220) 내의 부서에 의해 발생된다. 기업들에서, 부서들은 그의 직무 설명들에 기초한 개인들의 그룹화들일 수 있다. 각각의 부서는 개별 소프트웨어 거래들이 그 각각의 화살표 아래에 디스플레이된 그러한 부서에 속하는 상태에서 드롭 다운 화살표에 의해 표현된다. 예를 들어, 3개의 소프트웨어 거래는 R&D 코스트 센터에 의해 이루어졌다. 날짜, 설명, 금액, 퍼블리셔, 제품, 및 유형은 각각을 위해 도시된다.
도 12g에서, 위치 탭은 선택된 바와 같이 도시된다. 따라서, 차트(1214)에 도시된 경비는 서브페인(1220) 내의 위치에 의해 발생된다. 기업들은 도시, 국가, 또는 세계 전체에 걸친 다양한 물리적 위치들에 오피스들을 가질 수 있다. 각각의 위치는 그 각각의 화살표 아래에 디스플레이된 위치에 속하는 개별 소프트웨어 거래들을 갖는 드롭 다운 화살표에 의해 표현된다. 예를 들어, 5개의 소프트웨어 거래는 기업의 시카고 오피스에서 이루어졌다. 날짜, 설명, 금액, 퍼블리셔, 제품, 및 유형은 각각에 대해 제시된다.
선택되는 소프트웨어 거래들 탭을 디스플레이하는 GUI는 도면들에 명시적으로 도시되지 않는다. 그러나, 이러한 GUI는 예를 들어, 도 12e, 도 12f, 및 도 12g의 것과 유사하지만, 도 11의 소프트웨어 거래 내용을 포함하는 출력을 묘사할 수 있다.
B. 소프트웨어 중첩 검출을 위한 그래픽 사용자 인터페이스들
소프트웨어 경비가 퍼블리셔 및 제품의 점에서 분류되었으면, 소프트웨어는 카테고리로 추가로 분류될 수 있다. 이들 카테고리들은 미리 정의될 수 있고, 각각의 퍼블리셔/제품 쌍은 하나의 이러한 카테고리와 연관될 수 있다. 예시적인 카테고리들은 관계형 데이터베이스들, HR 관리, CRM, 팀 공동작업, 화상 회의 등을 포함한다.
본 명세서의 실시예들은 이들 카테고리들 내에서 중첩 소프트웨어를 식별하는 것을 용이하게 한다. 예를 들어, 기업은 하나의 이러한 패키지만의 기업 전체 사용이 기업의 요구를 충족하고 돈을 절약할 때, 복수의 팀 공동작업 소프트웨어 패키지를 자신도 모르게 사용하여, 각각에 대한 라이센싱 또는 가입료를 지불할 수 있다. 특히, - 카테고리당 패키지들에 소비된 금액 및 카테고리당 패키지들의 수를 조사함으로써 잠재적으로 통합될 수 있는 중첩 소프트웨어 패키지들을 식별하기 위한 방식들이 있다.
도 13a는 이들 방법들 각각에 대한 차트들을 포함하는 GUI(1300)를 도시한다. 페인(1302)은 차트에서 최고 금액으로부터 최저 금액으로 소프트웨어의 카테고리당 경비를 순위화한다. 수평 바 차트가 페인(1302) 내에 디스플레이되지만, 다른 유형들의 차트들 또는 그래프들이 가능할 수 있다. 예를 들어, $5.7 백만은 관계형 데이터베이스들에 소비되는 한편, $1 백만은 프로젝트 관리에 소비되었다. 따라서, 페인(1302)에서 정보만을 고려하면, 기업에 의해 사용되는 관계형 데이터베이스 소프트웨어 패키지들의 수를 통합하는 것이 프로젝트 관리 소프트웨어 패키지들의 수를 통합하는 것보다 더 유익할 수 있는 것으로 나타날 것이다.
다른 한편, 페인(1304)은 다른 차트에서 최대로부터 최소로 카테고리당 소프트웨어 패키지들의 수를 순위화한다. 수평 바 차트가 페인(1304) 내에 디스플레이되지만, 다른 유형들의 차트들 또는 그래프들이 가능할 수 있다. 특히, 이 페인은 기업이 6개의 상이한 프로젝트 관리 소프트웨어 패키지 및 2개의 상이한 관계형 데이터베이스 소프트웨어 패키지를 구매했거나, 라이센싱했거나, 이들 패키지에 가입했던 것을 제시한다. 결과로서, (i) 기업 내의 대부분 또는 모든 부서들이 더 용이하게 협력하고, 비용이 감소되도록 기업이 프로젝트 관리 소프트웨어 패키지들의 수를 1 또는 2에 이르기까지 통합하는 것은 유익할 수 있다. 그럼에도 불구하고, 또한 기업이 관계형 데이터베이스 패키지들의 수를 2에서 1로 통합하는 것은 유익할 수 있는데 왜냐하면 이것은 상당한 절약들을 표현할 수 있기 때문이다.
이들 차트들 내의 각각의 바, 또는 그것의 라벨들은 활성화될 때, GUI(1300)를 변경하여 연관된 카테고리에 관한 상세한 정보를 디스플레이하는 링크들일 수 있다. 일 예로서, 도 13b는 페인(1304)에서 프로젝트 관리 바를 활성화하는 결과를 도시한다. 차트는 6개의 프로젝트 관리 소프트웨어 패키지 각각에 의해 경비를 나누는 테이블에 의해 대체된다. 특히, 각각의 패키지(BugTracker, Weekday.com, DayPlanner, PeopleMgr, TeamBuilder, ChartWeave)에 대해, 그 위에 경비를 표현하는 거래들이 리스팅된다. 또한, 리스팅된 패키지들 각각의 좌측에 대한 드롭 다운 화살표들은 이들 패키지들에 기인하는 거래들이 도시되는지를 각각 제어한다. 도 13b에서, 모든 거래들이 도시되지만, 사용자가 드롭 다운 화살표들 중 하나 이상을 활성화시키면, 연관된 거래는 은폐될 수 있다.
유사한 거래당 분류는 페인(1302) 내의 바들과 연관된 링크들을 활성화함으로써 디스플레이가능할 수 있다. 추가적으로, 소프트웨어 패키지들을 디스플레이하기 위해 각각 확장가능한, 소프트웨어 카테고리들의 완전한 리스트는 페인들(1302 및 1304) 아래에 나타날 수 있다.
유리하게도, GUI(1300)는 사용자가 잠재적으로 중복인 소프트웨어 패키지들 및 이러한 패키지들을 통합하는 것과 연관된 비용 절약들을 신속히 결정하는 것을 허용한다. 많은 중기업 및 대기업에서, 이들 중복들은 본 명세서의 실시예들 없이 알려져 있지 않거나 발견가능하지 않을 수 있다. 예를 들어, 2개의 대기업이 합병하는 시나리오에서, 이들 기업들은 상이한 소프트웨어 패키지들을 많은 목적들에 각각 사용할 수 있다. 과거에, 2개의 기업 사이에서 모든 중복 소프트웨어 패키지들을 식별하는 데 몇 년이 걸릴 수 있다. 그러나, 본 명세서의 실시예에들에서, 이들 중복들은 대신에 며칠 또는 몇 주 내에 식별될 수 있다.
IX. 예시적인 소프트웨어 중복성 동작들
도 14는 예시적인 실시예에 따른 프로세스 또는 방법을 도시하는 흐름도이다. 방법은 본 명세서에 설명된 다중 계층 ML 모델의 런타임 단계와 관련될 수 있다. 방법은 컴퓨팅 디바이스(100)와 같은 컴퓨팅 디바이스, 및/또는 서버 클러스터(200)와 같은 컴퓨팅 디바이스들의 클러스터에 의해 수행될 수 있다. 그러나, 방법은 다른 유형들의 디바이스들 또는 디바이스 서브시스템들에 의해 수행될 수 있다. 예를 들어, 방법은 랩톱 또는 태블릿 디바이스와 같은, 휴대용 컴퓨터에 의해 수행될 수 있다.
도 14의 실시예들은 그 도시된 특징들 중 임의의 하나 이상의 제거에 의해 단순화될 수 있다. 또한, 이들 실시예들은 이전 도면들 중 임의의 것의 특징들, 양태들, 및/또는 구현들과 조합되거나 본 명세서에 달리 설명될 수 있다.
블록(1400)은 서버 디바이스에 의해 그리고 데이터베이스로부터, (i) 소프트웨어 패키지들 각각과 연관된 퍼블리셔들, 제목들, 및 카테고리들을 포함하는, 소프트웨어 관리 툴을 통해 관리된 복수의 소프트웨어 패키지, 및 (ii) 소프트웨어 활동들 각각과 연관된 설명들 및 금액들을 포함하는 복수의 소프트웨어 활동(예를 들어, 거래들)의 표현들을 획득하는 단계를 수반할 수 있다.
블록(1402)은 서버 디바이스에 의해, 소프트웨어 활동들의 머신 학습 기반 분류들을 획득하는 단계를 수반할 수 있으며, 머신 학습 기반 분류들은 설명들로부터 소프트웨어 활동들의 퍼블리셔들, 제목들, 및 카테고리들을 예측한다.
블록(1404)은 (i) 소프트웨어 관리 툴을 통해 관리되지 않은 비관리형 소프트웨어 패키지들, 및 (ii) 소프트웨어 패키지들의 적어도 일부와 연관된 금액들을 식별하기 위해 서버 디바이스에 의해 복수의 소프트웨어 패키지를 머신 학습 기반 분류들과 비교하는 단계를 수반할 수 있고;
블록(1406)은 서버 디바이스에 의해 그리고 클라이언트 디바이스에, 그래픽 사용자 인터페이스의 표현을 송신하는 단계를 수반할 수 있으며, 그래픽 사용자 인터페이스는 제1 페인 및 제2 페인을 묘사하고, 제1 페인은 퍼블리셔들 각각에 기인하는 소프트웨어 패키지들과 연관된 각각의 총 퍼블리셔 금액들 및 비관리형 소프트웨어 패키지들 중 임의의 것이 퍼블리셔들 각각에 기인하는지와 함께 퍼블리셔들의 확장가능한 리스팅을 포함하고, 제2 페인은 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 도시하는 차트를 포함한다.
일부 실시예들에서, 퍼블리셔들의 확장가능한 리스팅은 그 안의 각각의 특정 퍼블리셔가 확장되어 특정 퍼블리셔에 기인하는 소프트웨어 패키지들, 특정 퍼블리셔에 기인하는 소프트웨어 패키지들과 연관된 각각의 금액들, 및 특정 퍼블리셔에 기인하는 소프트웨어 패키지들 각각이 관리되지 않는지를 디스플레이하는 것을 허용한다.
일부 실시예들에서, 제1 페인은 또한 비관리형 소프트웨어 패키지들 중 적어도 하나로 퍼블리셔들만을 리스팅하도록 활성화될 때 퍼블리셔들의 확장가능한 리스팅이 필터링되게 하는 슬라이더 또는 버튼을 포함한다.
일부 실시예들에서, 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 묘사하는 차트는 월별 금액들을 바 차트 형태로 디스플레이한다.
일부 실시예들에서, 소프트웨어 활동들은 소프트웨어 거래들이고 금액들은 소프트웨어 거래들과 연관된 비용들이다.
일부 실시예들에서, 퍼블리셔들의 확장가능한 리스팅은 그 각각의 특정 퍼블리셔가 선택되는 것을 허용하고, 특정 퍼블리셔의 선택은 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 묘사하는 차트가 특정 퍼블리셔와 연관된 금액들만을 표현하게 한다.
일부 실시예들에서, 제2 페인은 코스트 센터들에 대한 제1 탭, 부서들에 대한 제2 탭, 및 위치들에 대한 제3 탭을 갖는 태빙된 인터페이스를 포함하며, 제1 탭을 활성화하는 단계는 연관된 코스트 센터당 소프트웨어 활동들을 디스플레이하고, 제2 탭을 활성화하는 단계는 연관된 부서당 소프트웨어 활동들을 디스플레이하고, 제3 탭을 활성화하는 단계는 연관된 위치당 소프트웨어 활동들을 디스플레이한다.
일부 실시예들에서, 동작들은 또한 (i) 카테고리들에 대해, 총 카테고리 금액들을 결정하는 단계 - 총 카테고리 금액들은 카테고리들 각각 내의 소프트웨어 패키지들과 연관된 금액들의 합들임 - , (ii) 카테고리들에 대해, 총 패키지 카운트들을 결정하는 단계 - 총 패키지 카운트들은 카테고리들 각각 내의 소프트웨어 패키지들의 수들임 - , 및 (iii) 클라이언트 디바이스에, 제3 페인 및 제4 페인을 묘사하는 그래픽 사용자 인터페이스의 업데이트된 버전의 업데이트된 표현을 송신하는 단계를 수반하며, 제3 페인은 총 카테고리 금액들 및 그들의 연관된 카테고리들의 제1 랭킹을 내림차순으로 시각적으로 묘사하는 제2 차트를 포함하고, 제4 페인은 총 패키지 카운트들 및 그들의 연관된 카테고리들의 제2 랭킹을 내림차순으로 시각적으로 묘사하는 제3 차트를 포함한다.
일부 실시예들에서, 제2 차트에 디스플레이된 총 카테고리 금액들은 연관된 카테고리의 소프트웨어 패키지당 거래들의 제1 리스팅을 추가로 디스플레이하도록 선택가능하고, 제2 차트에 디스플레이된 총 패키지 카운트들은 연관된 카테고리의 소프트웨어 패키지당 거래들의 제2 리스팅을 추가로 디스플레이하도록 선택가능하다.
일부 실시예들에서, 금액들은 지급 계정 거래들 또는 지출 거래들로부터 유도되었는지에 기초하여 개별적으로 표현된다.
X. 결론
본 개시내용은 다양한 양태들의 예시들로서 의도되는, 본 출원에 설명된 특정 실시예들과 관련하여 제한되지 않는다. 관련 기술분야의 통상의 기술자에게 명백한 바와 같이, 많은 수정들 및 변형들이 그 범위로부터 벗어나지 않고 이루어질 수 있다. 본 명세서에 설명된 것들에 더하여, 본 개시내용의 범위 내의 기능적으로 동등한 방법들 및 장치들은 전술한 설명들로부터 관련 기술분야의 통상의 기술자에게 명백할 것이다. 이러한 수정들 및 변형들은 첨부된 청구항들의 범위 내에 속하는 것으로 의도된다.
위의 상세한 설명은 첨부 도면들을 참조하여 개시된 시스템들, 디바이스들 및 방법들의 다양한 특징들 및 동작들을 설명한다. 본 명세서 및 도면들에 설명된 예시적인 실시예들은 제한하려는 것이 아니다. 본 명세서에서 제시된 주제를 벗어나지 않으면서, 다른 실시예들이 이용될 수 있고, 다른 변경들이 이루어질 수 있다. 본 명세서에서 일반적으로 설명되고 도면들에 예시된 바와 같은 본 개시내용의 양태들은 매우 다양하고 상이한 구성들로 배열, 대체, 결합, 분리 및 설계될 수 있음이 쉽게 이해될 것이다.
도면들에서의 그리고 본 명세서에서 논의되는 바와 같은 메시지 흐름 다이어그램들, 시나리오들, 및 흐름도들 중 임의의 것 또는 모두에 대하여, 각각의 단계, 블록, 및/또는 통신이 예시적인 실시예들에 따라 정보의 처리 및/또는 정보의 송신을 나타낼 수 있다. 이러한 예시적인 실시예들의 범위 내에는 대안적인 실시예들이 포함된다. 이러한 대안적인 실시예들에서, 예를 들어, 단계들, 블록들, 송신들, 통신들, 요청들, 응답들, 및/또는 메시지들로서 설명된 동작들은, 수반된 기능에 따라, 실질적으로 동시에 또는 역순을 포함하여, 도시되거나 논의된 것과 상이한 순서로 실행될 수 있다. 게다가, 본 명세서에서 논의된 메시지 흐름 다이어그램들, 시나리오들, 및 흐름도들 중 임의의 것과 함께 더 많거나 더 적은 블록들 및/또는 동작들이 이용될 수 있으며, 이러한 메시지 흐름 다이어그램들, 시나리오들, 및 흐름도들은, 부분적으로 또는 전체적으로, 서로 조합될 수 있다.
정보의 처리를 표현하는 단계 또는 블록은 본 명세서에 설명된 방법 또는 기술의 특정한 논리적 기능들을 수행하도록 구성될 수 있는 회로에 대응할 수 있다. 대안적으로 또는 추가적으로, 정보의 처리를 표현하는 단계 또는 블록은 (관련 데이터를 포함하는) 프로그램 코드의 모듈, 세그먼트 또는 일부분에 대응할 수 있다. 프로그램 코드는 방법 또는 기술에서의 특정한 논리적 동작들 또는 액션들을 구현하기 위해 프로세서에 의해 실행가능한 하나 이상의 명령어를 포함할 수 있다. 프로그램 코드 및/또는 관련 데이터는 RAM, 디스크 드라이브, 솔리드 스테이트 드라이브, 또는 다른 저장 매체를 포함하는 저장 디바이스와 같은 임의의 유형의 컴퓨터 판독가능한 매체 상에 저장될 수 있다.
컴퓨터 판독가능한 매체는 또한 레지스터 메모리 및 프로세서 캐시와 같이 짧은 기간 동안 데이터를 저장하는 컴퓨터 판독가능한 매체와 같은 비일시적 컴퓨터 판독가능한 매체를 포함할 수 있다. 컴퓨터 판독가능한 매체는 더 긴 기간 동안 프로그램 코드 및/또는 데이터를 저장하는 비일시적 컴퓨터 판독가능한 매체를 추가로 포함할 수 있다. 따라서, 컴퓨터 판독가능한 매체는, 예를 들어, ROM, 광학 또는 자기 디스크들, 솔리드 스테이트 드라이브들, CD-ROM(compact-disc read only memory)과 같은 보조 또는 영구 장기 저장소를 포함할 수 있다. 컴퓨터 판독가능한 매체는 또한 임의의 다른 휘발성 또는 비휘발성 저장 시스템들일 수 있다. 컴퓨터 판독가능한 매체는 예를 들어, 컴퓨터 판독가능한 저장 매체, 또는 유형의(tangible) 저장 디바이스로 고려될 수 있다.
더욱이, 하나 이상의 정보 송신을 표현하는 단계 또는 블록은 동일한 물리적 디바이스 내의 소프트웨어 및/또는 하드웨어 모듈들 간의 정보 송신들에 대응할 수 있다. 그러나, 다른 정보 송신들이 상이한 물리적 디바이스들 내의 소프트웨어 모듈들 및/또는 하드웨어 모듈들 사이에 있을 수 있다.
도면들에 보여지는 특정 배열들은 제한적인 것으로 보아서는 안 된다. 다른 실시예들이 주어진 도면에 보여진 각각의 요소를 더 많거나 더 적게 포함할 수 있음을 이해해야 한다. 또한, 도시되는 요소들 중 일부가 조합되거나 생략될 수 있다. 또한, 예시적인 실시예는 도면들에 도시되지 않은 요소들을 포함할 수 있다.
본 명세서에 다양한 양태들 및 실시예들이 개시되었지만, 관련 기술분야의 통상의 기술자에게는 다른 양태들 및 실시예들이 명백할 것이다. 본 명세서에 개시된 다양한 양태들 및 실시예들은 예시를 위한 것이고 제한하도록 의도된 것이 아니며, 그 진정한 범위는 이하의 청구항들에 의해 나타내어진다.

Claims (20)

  1. 시스템으로서,
    (i) 소프트웨어 패키지들 각각과 연관된 퍼블리셔들, 제목들, 및 카테고리들을 포함하는, 소프트웨어 관리 툴을 통해 관리된 복수의 소프트웨어 패키지, 및 (ii) 소프트웨어 활동들 각각과 연관된 설명들 및 금액들을 포함하는 복수의 소프트웨어 활동의 표현들을 포함하는 데이터베이스; 및
    서버 디바이스를 포함하며, 상기 서버 디바이스는,
    상기 소프트웨어 활동들의 머신 학습 기반 분류들을 획득하며, 상기 머신 학습 기반 분류들은 상기 설명들로부터 상기 소프트웨어 활동들의 퍼블리셔들, 제목들, 및 카테고리들을 예측하고,
    (i) 상기 소프트웨어 관리 툴을 통해 관리되지 않는 비관리형 소프트웨어 패키지들, 및 (ii) 상기 소프트웨어 패키지들의 적어도 일부와 연관된 금액들을 식별하기 위해 상기 복수의 소프트웨어 패키지를 상기 머신 학습 기반 분류들과 비교하고,
    클라이언트 디바이스에, 그래픽 사용자 인터페이스의 표현을 송신하도록 구성되며, 상기 그래픽 사용자 인터페이스는 제1 페인 및 제2 페인을 묘사하고, 상기 제1 페인은 상기 퍼블리셔들 각각에 기인하는 소프트웨어 패키지들과 연관된 각각의 총 퍼블리셔 금액들 및 상기 비관리형 소프트웨어 패키지들 중 임의의 것이 상기 퍼블리셔들 각각에 기인하는지와 함께 상기 퍼블리셔들의 확장가능한 리스팅을 포함하고, 상기 제2 페인은 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 묘사하는 차트를 포함하는, 시스템.
  2. 제1항에 있어서, 상기 퍼블리셔들의 확장가능한 리스팅은 그 각각의 특정 퍼블리셔가 확장되어 상기 특정 퍼블리셔에 기인하는 소프트웨어 패키지들, 상기 특정 퍼블리셔에 기인하는 소프트웨어 패키지들과 연관된 각각의 금액들, 및 상기 특정 퍼블리셔에 기인하는 소프트웨어 패키지들 각각이 관리되지 않는지를 디스플레이하는 것을 허용하는, 시스템.
  3. 제1항에 있어서, 상기 제1 페인은 또한 상기 비관리형 소프트웨어 패키지들 중 적어도 하나로 퍼블리셔들만을 리스팅하도록 활성화될 때 상기 퍼블리셔들의 확장가능한 리스팅이 필터링되게 하는 슬라이더 또는 버튼을 포함하는, 시스템.
  4. 제1항에 있어서, 상기 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 묘사하는 차트는 월별 금액들을 바 차트 형태로 디스플레이하는, 시스템.
  5. 제4항에 있어서, 상기 금액들은 지급 계정 거래들 또는 지출 거래들로부터 유도되었는지에 기초하여 개별적으로 표현되는, 시스템.
  6. 제1항에 있어서, 상기 소프트웨어 활동들은 소프트웨어 거래들이고 상기 금액들은 상기 소프트웨어 거래들과 연관된 비용들인, 시스템.
  7. 제1항에 있어서, 상기 퍼블리셔들의 확장가능한 리스팅은 그 각각의 특정 퍼블리셔가 선택되는 것을 허용하고, 상기 특정 퍼블리셔의 선택은 상기 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 묘사하는 차트가 상기 특정 퍼블리셔과 연관된 금액들만을 표현하게 하는, 시스템.
  8. 제1항에 있어서, 상기 제2 페인은 코스트 센터들에 대한 제1 탭, 부서들에 대한 제2 탭, 및 위치들에 대한 제3 탭을 갖는 태빙된 인터페이스를 포함하며, 상기 제1 탭을 활성화하는 것은 연관된 코스트 센터당 상기 소프트웨어 활동들을 디스플레이하고, 상기 제2 탭을 활성화하는 것은 연관된 부서당 상기 소프트웨어 활동들을 디스플레하고, 상기 제3 탭을 활성화하는 것은 연관된 위치당 상기 소프트웨어 활동들을 디스플레이하는, 시스템.
  9. 제1항에 있어서, 상기 서버 디바이스는,
    상기 카테고리들에 대해, 총 카테고리 금액들을 결정하며, 상기 총 카테고리 금액들은 상기 카테고리들 각각 내의 소프트웨어 패키지들와 연관된 금액들의 합들이고;
    상기 카테고리들에 대해, 총 패키지 카운트들을 결정하며, 상기 총 패키지 카운트들은 상기 카테고리들 각각 내의 소프트웨어 패키지들의 수들이고;
    상기 클라이언트 디바이스에, 제3 페인 및 제4 페인을 묘사하는 그래픽 사용자 인터페이스의 업데이트된 버전의 업데이트된 표현을 송신하도록 추가로 구성되며, 상기 제3 페인은 상기 총 카테고리 금액들 및 그들의 연관된 카테고리들의 제1 랭킹을 내림차순으로 시각적으로 묘사하는 제2 차트를 포함하고, 상기 제4 페인은 상기 총 패키지 카운트들 및 그들의 연관된 카테고리들의 제2 랭킹을 내림차순으로 시각적으로 묘사하는 제3 차트를 포함하는, 시스템.
  10. 제9항에 있어서, 상기 제2 차트에 디스플레이된 총 카테고리 금액들은 상기 연관된 카테고리의 소프트웨어 패키지당 거래들의 제1 리스팅을 추가로 디스플레이하도록 선택가능하고, 상기 제2 차트에 디스플레이된 총 패키지 카운트들은 상기 연관된 카테고리의 소프트웨어 패키지당 거래들의 제2 리스팅을 추가로 디스플레이하도록 선택가능한, 시스템.
  11. 컴퓨터에 의해 구현되는 방법으로서,
    서버 디바이스에 의해 그리고 데이터베이스로부터, (i) 소프트웨어 패키지들 각각과 연관된 퍼블리셔들, 제목들, 및 카테고리들을 포함하는, 소프트웨어 관리 툴을 통해 관리된 복수의 소프트웨어 패키지, 및 (ii) 소프트웨어 활동들 각각과 연관된 설명들 및 금액들을 포함하는 복수의 소프트웨어 활동의 표현들을 획득하는 단계;
    상기 서버 디바이스에 의해 상기 소프트웨어 활동들의 머신 학습 기반 분류들을 획득하는 단계 - 상기 머신 학습 기반 분류들은 상기 설명들로부터 상기 소프트웨어 활동들의 퍼블리셔들, 제목들, 및 카테고리들을 예측함 - ;
    (i) 상기 소프트웨어 관리 툴을 통해 관리되지 않는 비관리형 소프트웨어 패키지들, 및 (ii) 상기 소프트웨어 패키지들의 적어도 일부와 연관된 금액들을 식별하기 위해 상기 서버 디바이스에 의해 상기 복수의 소프트웨어 패키지를 상기 머신 학습 기반 분류들과 비교하는 단계; 및
    상기 서버 디바이스에 의해 그리고 클라이언트 디바이스에, 그래픽 사용자 인터페이스의 표현을 송신하는 단계를 포함하며, 상기 그래픽 사용자 인터페이스는 제1 페인 및 제2 페인을 묘사하고, 상기 제1 페인은 상기 퍼블리셔들 각각에 기인하는 소프트웨어 패키지들과 연관된 각각의 총 퍼블리셔 금액들 및 상기 비관리형 소프트웨어 패키지들 중 임의의 것이 상기 퍼블리셔들 각각에 기인하는지와 함께 상기 퍼블리셔들의 확장가능한 리스팅을 포함하고, 상기 제2 페인은 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 묘사하는 차트를 포함하는, 컴퓨터에 의해 구현되는 방법.
  12. 제11항에 있어서, 상기 퍼블리셔들의 확장가능한 리스팅은 그 각각의 특정 퍼블리셔가 확장되어 상기 특정 퍼블리셔에 기인하는 소프트웨어 패키지들, 상기 특정 퍼블리셔에 기인하는 소프트웨어 패키지들과 연관된 각각의 금액들, 및 상기 특정 퍼블리셔에 기인하는 소프트웨어 패키지들 각각이 관리되지 않는지를 디스플레이하는 것을 허용하는, 컴퓨터에 의해 구현되는 방법.
  13. 제11항에 있어서, 상기 제1 페인은 또한 상기 비관리형 소프트웨어 패키지들 중 적어도 하나로 퍼블리셔들만을 리스팅하도록 활성화될 때 상기 퍼블리셔들의 확장가능한 리스팅이 필터링되게 하는 슬라이더 또는 버튼을 포함하는, 컴퓨터에 의해 구현되는 방법.
  14. 제11항에 있어서, 상기 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 묘사하는 차트는 월별 금액들을 바 차트 형태로 디스플레이하는, 컴퓨터에 의해 구현되는 방법.
  15. 제11항에 있어서, 상기 소프트웨어 활동들은 소프트웨어 거래들이고 상기 금액들은 상기 소프트웨어 거래들과 연관된 비용들인, 컴퓨터에 의해 구현되는 방법.
  16. 제11항에 있어서, 상기 퍼블리셔들의 확장가능한 리스팅은 그 각각의 특정 퍼블리셔가 선택되는 것을 허용하고, 상기 특정 퍼블리셔의 선택은 상기 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 묘사하는 차트가 상기 특정 퍼블리셔과 연관된 금액들만을 표현하게 하는, 컴퓨터에 의해 구현되는 방법.
  17. 제11항에 있어서, 상기 제2 페인은 코스트 센터들에 대한 제1 탭, 부서들에 대한 제2 탭, 및 위치들에 대한 제3 탭을 갖는 태빙된 인터페이스를 포함하며, 상기 제1 탭을 활성화하는 단계는 연관된 코스트 센터당 상기 소프트웨어 활동들을 디스플레이하고, 상기 제2 탭을 활성화하는 단계는 연관된 부서당 상기 소프트웨어 활동들을 디스플레하고, 상기 제3 탭을 활성화하는 단계는 연관된 위치당 상기 소프트웨어 활동들을 디스플레이하는, 컴퓨터에 의해 구현되는 방법.
  18. 제11항에 있어서,
    상기 카테고리들에 대해, 총 카테고리 금액들을 결정하는 단계 - 상기 총 카테고리 금액들은 상기 카테고리들 각각 내의 소프트웨어 패키지들와 연관된 금액들의 합들임 - ;
    상기 카테고리들에 대해, 총 패키지 카운트들을 결정하는 단계 - 상기 총 패키지 카운트들은 상기 카테고리들 각각 내의 소프트웨어 패키지들의 수들임 - ;
    상기 클라이언트 디바이스에, 제3 페인 및 제4 페인을 묘사하는 그래픽 사용자 인터페이스의 업데이트된 버전의 업데이트된 표현을 송신하는 단계를 추가로 포함하며, 상기 제3 페인은 상기 총 카테고리 금액들 및 그들의 연관된 카테고리들의 제1 랭킹을 내림차순으로 시각적으로 묘사하는 제2 차트를 포함하고, 상기 제4 페인은 상기 총 패키지 카운트들 및 그들의 연관된 카테고리들의 제2 랭킹을 내림차순으로 시각적으로 묘사하는 제3 차트를 포함하는, 컴퓨터에 의해 구현되는 방법.
  19. 제18항에 있어서, 상기 제2 차트에 디스플레이된 총 카테고리 금액들은 상기 연관된 카테고리의 소프트웨어 패키지당 거래들의 제1 리스팅을 추가로 디스플레이하도록 선택가능하고, 상기 제2 차트에 디스플레이된 총 패키지 카운트들은 상기 연관된 카테고리의 소프트웨어 패키지당 거래들의 제2 리스팅을 추가로 디스플레이하도록 선택가능한, 컴퓨터에 의해 구현되는 방법.
  20. 서버 디바이스에 의한 실행 시에, 상기 서버 디바이스로 하여금 동작들을 수행하게 하는 프로그램 명령어들을 저장하는 비일시적 컴퓨터 판독가능한 매체를 포함하는 제조 물품으로서, 상기 동작들은,
    데이터베이스로부터, (i) 소프트웨어 패키지들 각각과 연관된 퍼블리셔들, 제목들, 및 카테고리들을 포함하는, 소프트웨어 관리 툴을 통해 관리된 복수의 소프트웨어 패키지, 및 (ii) 소프트웨어 활동들 각각과 연관된 설명들 및 금액들을 포함하는 복수의 소프트웨어 활동의 표현들을 획득하는 것;
    상기 소프트웨어 활동들의 머신 학습 기반 분류들을 획득하는 것 - 상기 머신 학습 기반 분류들은 상기 설명들로부터 상기 소프트웨어 활동들의 퍼블리셔들, 제목들, 및 카테고리들을 예측함 - ,
    (i) 상기 소프트웨어 관리 툴을 통해 관리되지 않는 비관리형 소프트웨어 패키지들, 및 (ii) 상기 소프트웨어 패키지들의 적어도 일부와 연관된 금액들을 식별하기 위해 상기 복수의 소프트웨어 패키지를 상기 머신 학습 기반 분류들과 비교하는 것, 및
    클라이언트 디바이스에, 그래픽 사용자 인터페이스의 표현을 송신하는 것을 포함하며, 상기 그래픽 사용자 인터페이스는 제1 페인 및 제2 페인을 묘사하고, 상기 제1 페인은 상기 퍼블리셔들 각각에 기인하는 소프트웨어 패키지들과 연관된 각각의 총 퍼블리셔 금액들 및 상기 비관리형 소프트웨어 패키지들 중 임의의 것이 상기 퍼블리셔들 각각에 기인하는지와 함께 상기 퍼블리셔들의 확장가능한 리스팅을 포함하고, 상기 제2 페인은 미리 결정된 시간 기간의 유닛들을 통해 발생된 금액들을 시각적으로 묘사하는 차트를 포함하는, 제조 물품.
KR1020217039051A 2019-05-02 2020-05-01 관리형 네트워크에 의해 사용되는 소프트웨어의 결정 및 조정 KR102665243B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/402,025 2019-05-02
US16/402,025 US11204903B2 (en) 2019-05-02 2019-05-02 Determination and reconciliation of software used by a managed network
PCT/US2020/031162 WO2020223696A1 (en) 2019-05-02 2020-05-01 Determination and reconciliation of software used by a managed network

Publications (2)

Publication Number Publication Date
KR20220003056A true KR20220003056A (ko) 2022-01-07
KR102665243B1 KR102665243B1 (ko) 2024-05-16

Family

ID=

Also Published As

Publication number Publication date
US11204903B2 (en) 2021-12-21
WO2020223696A1 (en) 2020-11-05
JP7361135B2 (ja) 2023-10-13
US20220050815A1 (en) 2022-02-17
US20200349134A1 (en) 2020-11-05
AU2020266172A1 (en) 2021-11-25
JP2022531370A (ja) 2022-07-06

Similar Documents

Publication Publication Date Title
US11176331B2 (en) Contextual communication and service interface
AU2019232804B2 (en) Decision tables and flow engine for building automated flows within a cloud based development platform
JP7361135B2 (ja) 管理対象ネットワークによって使用されるソフトウェアの決定及び調整
US11115432B2 (en) Multi-application recommendation engine for a remote network management platform
US10958532B2 (en) Machine learning based discovery of software as a service
EP2803214B1 (en) Platform for the delivery of content and services to networked connected computing devices
EP3531360A1 (en) Context-based user assistance and service workspace
US11222290B2 (en) Intelligent capability extraction and assignment
US11392273B2 (en) Software application portfolio discovery and management
Missbach et al. SAP on the Cloud
US11693847B2 (en) Automated identification of hardware and software components relevant to incident reports
US11301503B2 (en) Autonomous content orchestration
Ciaburro et al. Hands-on machine learning on google cloud platform: Implementing smart and efficient analytics using cloud ml engine
Al-Sayed et al. CloudFNF: An ontology structure for functional and non-functional features of cloud services
US20230111047A1 (en) Classification Evaluation and Improvement in Machine Learning Models
Yao et al. Building architectures for data‐intensive science using the ADAGE framework
US20200050896A1 (en) Machine Learning Classification with Model Quality Prediction
Bhagattjee Emergence and taxonomy of big data as a service
KR102665243B1 (ko) 관리형 네트워크에 의해 사용되는 소프트웨어의 결정 및 조정
US11205047B2 (en) Hierarchical search for improved search relevance
Salminen A metadata model for hybrid data products on a multilateral data marketplace
Nacer et al. Identification of Comparison Key Elements and Their Relationships for Cloud Service Selection
Polgar Web Portal Design, Implementation, Integration, and Optimization
Yusuf et al. Open Source Systems and Digital Library Services in Nigeria: A Review
Prevention et al. JAWAHARLAL NEHRU TECHNOLOGICAL UNIVERSITY HYDERABAD

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right