JP7361135B2 - 管理対象ネットワークによって使用されるソフトウェアの決定及び調整 - Google Patents

管理対象ネットワークによって使用されるソフトウェアの決定及び調整 Download PDF

Info

Publication number
JP7361135B2
JP7361135B2 JP2021564923A JP2021564923A JP7361135B2 JP 7361135 B2 JP7361135 B2 JP 7361135B2 JP 2021564923 A JP2021564923 A JP 2021564923A JP 2021564923 A JP2021564923 A JP 2021564923A JP 7361135 B2 JP7361135 B2 JP 7361135B2
Authority
JP
Japan
Prior art keywords
software
packages
software packages
publisher
transactions
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2021564923A
Other languages
English (en)
Other versions
JP2022531370A (ja
Inventor
ギャヴィン トーマス ピーターキン
ブライアン エリック ガイスラー
パトリック リチャード ロウンズ
ピーター ジョン ベル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ServiceNow Inc
Original Assignee
ServiceNow Inc
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 ServiceNow Inc filed Critical ServiceNow Inc
Publication of JP2022531370A publication Critical patent/JP2022531370A/ja
Application granted granted Critical
Publication of JP7361135B2 publication Critical patent/JP7361135B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • 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
    • 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
    • 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
    • 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
    • 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/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • 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/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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Resources & Organizations (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Strategic Management (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)

Description

中規模及び大規模企業は、その企業のネットワーク全体に多数のソフトウェアパッケージを展開しており、サードパーティ又はクラウドベースのプロバイダを介してアクセスできる他のソフトウェアパッケージを使用することがある。場合によっては、これらのパッケージの数百又は数千個が、様々なタイプのコンピューティングデバイスにインストールされていることがある。多くの場合、企業内の情報技術(IT)の専門家は、展開又は使用されているソフトウェアパッケージの全体像を把握しておらず、これらのパッケージが適切にライセンスされているか、機能が重複しているかについてあまり把握できていない。その結果、企業は、自社のソフトウェア資産を把握して最適化しようと多大な労力を費やすことがあるが、それでもこの目標には達していない。
ソフトウェアの使用、ライセンス、及び/又はサブスクリプションをアクティブに管理するために、企業は、ソフトウェア資産管理ツールを利用することがある。これらのツールは、企業のネットワーク上のコンピューティングデバイスをプローブすることによって、展開されているソフトウェアを自動的に検索する発見機能と、このソフトウェアの資格(例えば、企業によって購入又は取得されたライセンスの単位)を記憶するライセンスマネージャとを含む、又は使用することがある。更なる調整ツールは、ソフトウェアパッケージが過少にライセンスされている(したがって、企業を法的責任のリスクにさらす)又は過剰にライセンスされている(したがって、企業が不要なライセンスに対して費用を浪費するリスクにさらしている)状況を識別するために、発見されたソフトウェアを資格と比較することがある。
しかし、特にコンピューティングデバイスが定期的にネットワークに参加及び離脱する場合(例えば、ラップトップやモバイルデバイス)、又は対象のソフトウェアが企業にインストールされておらず、クラウドで(例えば、リモートのサードパーティネットワーク上で)ホストされているアプリケーションとしてアクセスされるとき、自動検出ツールは、インストールされている全てのソフトウェアパッケージを検出することができないことがある。したがって、自動発見手順は、少なくともいくつかのタイプのソフトウェアを発見する機能に関して、範囲及び精度の制限があり得る。
本実施形態は、ソフトウェアパッケージのライセンス取得に関する文書を解析して、ネットワーク上に展開されている若しくは展開されることがある、又はクラウドベースの提供元によってホストされている若しくはホストされることがあるソフトウェアを決定することができる技法を述べる。機械学習を使用して、ソフトウェアパッケージの発行元(例えばベンダ)の名前及び製品(アプリケーションタイトル)を、ジャーナルエントリ、取引の説明、請求書、明細書、マニフェスト、又は他の支出記録(例えば、領収書又はクレジットカードの明細書)から決定することができる。これにより、通常であれば簡単には発見できないことがあるソフトウェアパッケージ及びその資格を発見できるようになる。
このようにして識別されたソフトウェアパッケージは、ソフトウェア資産管理ツールを介してアクティブに管理されているものと比較される。グラフィカルユーザインターフェース(GUI)は、管理されていないパッケージ、パッケージに費やされた金額、パッケージが取得された方法(例えば、請求書又は個別の購入による)、及び/又はこれらのパッケージが購入若しくは展開されたコストセンタ、部署、若しくは場所を示すことがある。更なる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つのプロセッサ、並びにメモリ及びプログラム命令を含むことがある。プログラム命令は、メモリに記憶されていることがあり、少なくとも1つのプロセッサによって実行されるとき、コンピューティングシステムに、第1及び/又は第2の例示的実施形態による動作を実行させる。
第5の例示的実施形態では、システムは、第1及び/又は第2の例示的実施形態の動作のそれぞれを実行するための様々な手段を含むことがある。
上記及び他の実施形態、態様、利点、及び代替形態は、添付の図面を適宜参照して以下の詳細な説明を読むことによって当業者に明らかになるであろう。更に、本明細書に提供されたこの概要並びに他の説明及び図は、単に例として実施形態を示すことを意図しており、したがって、多くの変形が可能である。例えば、構造要素及び処理ステップは、請求項に係る実施形態の範囲内に留まりながら、再配置、結合、分散、若しくは除去され、又は他の方法で変更され得る。
例示的実施形態によるコンピューティング装置の概略図である。 例示的実施形態によるサーバ装置クラスタの概略図である。 例示的実施形態によるリモートネットワーク管理アーキテクチャを示す図である。 例示的実施形態によるリモートネットワーク管理アーキテクチャを含む通信環境を示す図である。 例示的実施形態によるリモートネットワーク管理アーキテクチャを含む別の通信環境を示す図である。 例示的実施形態によるフローチャートである。 例示的実施形態によるソフトウェアカタログを示す図である。 例示的実施形態による、1組のラベル付きの活動記録を示す図である。 例示的実施形態による、多層機械学習モデルの第1の層の訓練フェーズを示す図である。 例示的実施形態による、多層機械学習モデルの第1の層の実行時フェーズを示す図である。 例示的実施形態による、多層機械学習モデルの第2の層の実行時フェーズを示す図である。 例示的実施形態による、多層機械学習モデルの第3の層の実行時フェーズを示す図である。 例示的実施形態によるフローチャートである。 例示的実施形態による、ソフトウェア取引をリストするグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、ソフトウェア調整を容易にするためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、ソフトウェア調整を容易にするためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、ソフトウェア調整を容易にするためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、ソフトウェア調整を容易にするためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、ソフトウェア調整を容易にするためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、ソフトウェア調整を容易にするためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、ソフトウェア調整を容易にするためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、ソフトウェア冗長決定を容易にするためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、ソフトウェア冗長決定を容易にするためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるフローチャートである。
例示的な方法、装置、及びシステムが本明細書で説明される。「例」及び「例示的」という言葉は、本明細書では「実施例、例、又は例示として機能すること」を意味するように使用されると理解されるべきである。本明細書で「例」又は「例示的」であると説明される任意の実施形態又は特徴は、そのように明言されない限り、他の実施形態又は特徴よりも好ましい又は有利であると必ずしも解釈される必要はない。したがって、本明細書で示される主題の範囲から逸脱することなく、他の実施形態が使用されてよく、他の変更がなされてよい。
したがって、本明細書に記載の例示的実施形態は、限定するように意図されていない。本開示の態様は、本明細書に一般的に記載され図示されるように、様々な異なる形態で配置、置換、結合、分離、設計され得ることは容易に理解されるであろう。例えば、「クライアント」構成要素と「サーバ」構成要素への特徴の分離は、多くの方法で生じ得る。
更に、文脈が別段に示唆しない限り、各図に示される特徴は互いに組み合わされて使用されてよい。したがって、図面は、一般に、全ての図示された特徴が各実施形態に必要であるとは限らないことを理解した上で、1つ又は複数の全体的な実施形態の構成要素の態様とみなされるべきである。
更に、本明細書又は特許請求の範囲における要素、ブロック又は、ステップの列挙は、明瞭性の目的のためである。したがって、このような列挙は、これらの要素、ブロック、又はステップが特定の配列に固定される又は特定の順序で実行されることを必要とする又は示唆すると解釈されるべきではない。
I.序論
大企業は、相互に関連する多くの業務を含む複雑な実体である。これらの業務の中には、人事(HR)、サプライチェーン、情報技術(IT)、及び財務などのように企業に横断的に見られるものもある。しかしながら、それぞれの企業は、本質的な機能を提供し及び/又は競争優位性を創出する、それ独自の業務も有する。
広く実施される業務をサポートするために、企業は一般的に、顧客関係管理(CRM)及び人的資本管理(HCM)パッケージのような既製のソフトウェアアプリケーションを使用する。しかしながら、企業は、自身の独自の要件を満たすためにカスタムソフトウェアアプリケーションを必要とすることもある。大企業は、多くの場合、数十から数百のこうしたカスタムソフトウェアアプリケーションを有する。それにもかかわらず、本明細書の実施形態によって提供される利点は、大企業に限定されず、任意の規模の企業又は他の任意のタイプの組織に適用され得る。
多くのそのようなソフトウェアアプリケーションは、企業内の個々の部門によって開発される。これらは、簡単なスプレッドシートからカスタムメイドのソフトウェアツール及びデータベースまで様々である。しかし、サイロ化されたカスタムソフトウェアアプリケーションの急増には多くの欠点がある。それは、企業の業務を運営し成長させ、革新し、規制要件を満たすための企業の能力に対して悪影響を及ぼす。企業は、そのサブシステムとデータを統合する単一のシステムがないために、その業務を統合し合理化し強化することが困難になる可能性がある。
カスタムアプリケーションを効率的に作成するために、企業は、不必要な開発の複雑さを排除するリモートホストされたアプリケーションプラットフォームの恩恵を受けるであろう。そのようなプラットフォームの目標は、時間を消費する反復的なアプリケーション開発タスクを減らして、ソフトウェアエンジニア及び他の役割の個人が独自の高価値の機能の開発に集中できるようにすることである。
この目標を達成するために、サービスとしてのアプリケーションプラットフォーム(aPaaS)の概念が導入されて、企業全体にわたるワークフローがインテリジェントに自動化される。aPaaSシステムは企業からリモートでホストされるが、安全な接続を介して企業内のデータ、アプリケーション、及びサービスにアクセスすることができる。そのようなaPaaSシステムは、いくつかの有利な能力及び特徴を有することができる。これらの利点及び特徴は、IT、HR、CRM、顧客サービス、アプリケーション開発、及びセキュリティに関する企業の業務及びワークフローを改善する可能性がある。
aPaaSシステムは、モデル・ビュー・コントローラ(MVC)アプリケーションの開発及び実行をサポートすることができる。MVCアプリケーションは、情報の表現をその情報がユーザに提示される方法から分離するために、それらの機能を3つの相互接続部分(モデル、ビュー、及びコントローラ)に分割し、それにより、効率的なコード再利用及び並列開発を可能にする。これらのアプリケーションはウェブベースとすることができ、作成、読取り、更新、削除(CRUD)能力を提供することができる。これにより、新しいアプリケーションを共通のアプリケーションインフラストラクチャ上に構築することが可能になる。
aPaaSシステムは、グラフィカルユーザインターフェース(GUI)開発用のウィジェットの標準化されたセットなど、標準化されたアプリケーション構成要素をサポートすることができる。このようにして、aPaaSシステムを使用して構築されたアプリケーションは共通のルックアンドフィールを有する。他のソフトウェア構成要素及びモジュールも標準化されることがある。場合によっては、このルックアンドフィールは、企業のカスタムロゴ及び/又は配色を用いてブランド化又はスキン化され得る。
aPaaSシステムは、メタデータを使用してアプリケーションの挙動を設定する能力をサポートすることができる。これにより、アプリケーションの挙動を特定のニーズに合うように迅速に適応させることができる。そのような手法により、開発時間が短縮し、柔軟性が向上する。更に、aPaaSシステムは、メタデータの作成及び管理を容易にするGUIツールをサポートし、それによりメタデータ内のエラーを減らすことができる。
aPaaSシステムは、アプリケーション間の明確に定義されたインターフェースをサポートしているため、ソフトウェア開発者は望ましくないアプリケーション間の依存関係を回避することができる。したがって、aPaaSシステムは、永続的状態情報及び他のデータが記憶されるサービス層を実装することができる。
aPaaSシステムは、統合機能の豊富なセットをサポートしているため、システム上のアプリケーションがレガシアプリケーション及びサードパーティアプリケーションと対話することができる。例えば、aPaaSシステムは、レガシーのHR、IT、及び会計システムと統合するカスタムの従業員オンボーディングシステムをサポートすることができる。
aPaaSシステムは、エンタプライズレベルのセキュリティをサポートすることができる。また、aPaaSシステムはリモートでホストされ得るので、企業内のシステム、又は企業外でホストされるサードパーティのネットワーク及びサービスと対話するときに、セキュリティ手順も利用すべきである。例えば、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)、ネットワークプロセッサ、及び/又はプロセッサ動作を実行する集積回路若しくはコントローラの形態など、任意のタイプのコンピュータ処理要素のうちの1つ又は複数とすることができる。場合によっては、プロセッサ102は、1つ又は複数のシングルコアプロセッサであってよい。他の場合、プロセッサ102は、複数の独立した処理ユニットを有する1つ又は複数のマルチコアプロセッサであってよい。また、プロセッサ102は、実行されている命令及び関連データを一時的に記憶するためのレジスタメモリ、並びに最近使用された命令及びデータを一時的に記憶するためのキャッシュメモリを含むことができる。
メモリ104は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、及び不揮発性メモリ(例えば、フラッシュメモリ、ハードディスクドライブ、ソリッドステートドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、及び/又はテープストレージ)を含むがこれらに限定されない、任意の形態のコンピュータ使用可能メモリであってよい。したがって、メモリ104は主記憶装置と長期記憶装置の両方を表す。他のタイプのメモリは生物学的メモリを含み得る。
メモリ104は、プログラム命令及び/又はプログラム命令が動作し得るデータを記憶することができる。例として、メモリ104は、これらのプログラム命令を非一時的コンピュータ可読媒体に記憶することができ、したがって、これらの命令は、本明細書又は添付の図面で開示される任意の方法、プロセス、又は動作を行うためにプロセッサ102によって実行可能である。
図1に示されるように、メモリ104は、ファームウェア104A、カーネル104B、及び/又はアプリケーション104Cを含むことができる。ファームウェア104Aは、コンピューティング装置100の一部又は全部をブート又は他の様式で起動するために使用されるプログラムコードであり得る。カーネル104Bは、メモリ管理、プロセスのスケジューリング及び管理、入出力、並びに通信のためのモジュールを含む、オペレーティングシステムであり得る。カーネル104Bは、オペレーティングシステムがコンピューティング装置100のハードウェアモジュール(例えば、メモリユニット、ネットワーキングインターフェース、ポート、及びバス)と通信することを可能にする、デバイスドライバを含むこともできる。アプリケーション104Cは、ウェブブラウザ又は電子メールクライアント、並びにこれらのプログラムによって使用される任意のソフトウェアライブラリなどの、1つ又は複数のユーザ空間ソフトウェアプログラムであり得る。メモリ104は、これら並びに他のプログラム及びアプリケーションによって使用されるデータを記憶することもできる。
ネットワークインターフェース106は、イーサネット(例えば、ファストイーサネット、ギガビットイーサネット)などの1つ又は複数の有線インターフェースの形態をとることができる。ネットワークインターフェース106は、同軸ケーブル若しくは電力線などの1つ若しくは複数の非イーサネット媒体を介する通信、又は同期光ネットワーク(SONET)又はデジタル加入者線(DSL)技術などの広域媒体を介する通信をサポートすることもできる。ネットワークインターフェース106は更に、IEEE802.11(Wifi)、BLUETOOTH(登録商標)、全地球測位システム(GPS)、又は広域無線インターフェースなどの1つ又は複数の無線インターフェースの形態をとることもできる。しかしながら、他の形態の物理層インターフェース及び他のタイプの標準又は独自仕様の通信プロトコルがネットワークインターフェース106を介して使用されてもよい。更に、ネットワークインターフェース106は複数の物理インターフェースを含むこともできる。例えば、コンピューティング装置100のいくつかの実施形態は、イーサネット、BLUETOOTH(登録商標)、及びWifiインターフェースを含むことができる。
入出力ユニット108は、コンピューティング装置100とユーザ及び周辺装置の対話を容易にすることができる。入出力ユニット108は、キーボード、マウス、タッチスクリーンなどの1つ又は複数のタイプの入力装置を含むことができる。同様に、入出力ユニット108は、スクリーン、モニタ、プリンタ、及び/又は1つ若しくは複数の発光ダイオード(LED)などの1つ又は複数のタイプの出力装置を含むことができる。追加的又は代替的に、コンピューティング装置100は、例えば、ユニバーサルシリアルバス(USB)又は高精細マルチメディアインターフェース(HDMI)ポートインターフェースを使用して、他の装置と通信することができる。
いくつかの実施形態では、コンピューティング装置100のような1つ又は複数のコンピューティング装置が展開されてaPaaSアーキテクチャをサポートすることができる。これらのコンピューティング装置の正確な物理的位置、接続性、及び構成は、クライアント装置にとって不明であってよく、及び/又は重要でなくてもよい。したがって、コンピューティング装置は、様々なリモートデータセンタの場所に収容され得る「クラウドベース」装置と呼ばれることがある。
図2は、例示的実施形態によるクラウドベースのサーバクラスタ200を示す。図2では、コンピューティング装置(例えば、コンピューティング装置100)の動作は、サーバ装置202、データストレージ204、及びルータ206の間で分散されることができ、それらの全ては、ローカルクラスタネットワーク208によって接続することができる。サーバクラスタ200内のサーバ装置202、データストレージ204、及びルータ206の数は、サーバクラスタ200に割り当てられたコンピューティングタスク及び/又はアプリケーションに依存し得る。
例えば、サーバ装置202は、コンピューティング装置100の様々なコンピューティングタスクを実行するように構成され得る。したがって、コンピューティングタスクは、1つ又は複数のサーバ装置202の間で分散することができる。これらのコンピューティングタスクを並列に実行できる限り、タスクのそのような分散により、これらのタスクを完了して結果を返すまでの合計時間を短縮することができる。簡単にするために、サーバクラスタ200と個々のサーバ装置202の両方が「サーバ装置」と呼ばれることがある。この命名は、1つ又は複数の別個のサーバ装置、データストレージ装置、及びクラスタルータがサーバ装置動作に関与し得ることを示唆すると理解されるべきである。
データストレージ204は、ハードディスクドライブ及び/又はソリッドステートドライブのグループに対する読取り及び書込みアクセスを管理するように構成されたドライブアレイコントローラを含むデータストレージアレイであり得る。また、ドライブアレイコントローラは、単独で又はサーバ装置202と共に、データストレージ204に記憶されたデータのバックアップ又は冗長コピーを管理して、1つ又は複数のサーバ装置202がデータストレージ204のユニットにアクセスするのを妨げるドライブの障害又は他のタイプの障害からの保護をするように構成され得る。ドライブ以外の他のタイプのメモリが使用されてもよい。
ルータ206は、サーバクラスタ200のための内部及び外部通信を提供するように構成されたネットワーク機器を含むことができる。例えば、ルータ206は、(i)ローカルクラスタネットワーク208を介するサーバ装置202とデータストレージ204との間のネットワーク通信、及び/又は(ii)ネットワーク212への通信リンク210を介するサーバクラスタ200と他の装置との間のネットワーク通信を提供するように構成された、1つ又は複数のパケット交換及び/又はルーティング装置(スイッチ及び/又はゲートウェイを含む)を含むことができる。
更に、ルータ206の構成は、サーバ装置202及びデータストレージ204のデータ通信要件、ローカルクラスタネットワーク208のレイテンシ及びスループット、通信リンク210のレイテンシ、スループット、及びコスト、並びに/又は、コスト、速度、耐故障性、回復力、効率、及び/若しくはシステムアーキテクチャの他の設計目標に寄与し得る他のファクタに、少なくとも部分的に基づくことができる。
可能な例として、データストレージ204は、構造化照会言語(SQL)データベースなどの任意の形態のデータベースを含むことができる。テーブル、アレイ、リスト、ツリー、及びタプルを含むがこれらに限定されない様々なタイプのデータ構造により、そのようなデータベースに情報を格納することができる。更に、データストレージ204における任意のデータベースは、モノリシックであってよく、又は複数の物理装置にわたって分散されてもよい。
サーバ装置202は、データストレージ204との間でデータを送受信するように構成され得る。この送信及び取得はそれぞれ、SQLクエリ又は他のタイプのデータベースクエリの形態、及びそのようなクエリの出力の形態をとることができる。追加のテキスト、画像、ビデオ、及び/又はオーディオも含まれてよい。更に、サーバ装置202は、受信したデータをウェブページ表現へ編成することができる。そのような表現は、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、又は他の何らかの標準化された若しくは独自仕様のフォーマットなど、マークアップ言語の形態をとることができる。更に、サーバ装置202は、限定されないが、Perl、Python、PHPハイパーテキストプリプロセッサ(PHP)、アクティブサーバページ(ASP)、JavaScriptなど、様々なタイプのコンピュータ化スクリプト言語を実行する能力を有することができる。これらの言語で書かれたコンピュータプログラムコードは、クライアント装置へのウェブページの提供、並びにウェブページとクライアント装置の対話を容易にすることができる。
III.例示的リモートネットワーク管理アーキテクチャ
図3は、例示的実施形態によるリモートネットワーク管理アーキテクチャを示す。このアーキテクチャは、インターネット350を介して全て接続された3つの主な構成要素である、管理対象ネットワーク300、リモートネットワーク管理プラットフォーム320、及びサードパーティネットワーク340を含む。
管理対象ネットワーク300は、例えば、コンピューティング及び通信タスク、並びにデータの記憶のために実体によって使用される企業ネットワークであり得る。したがって、管理対象ネットワーク300は、クライアント装置302、サーバ装置304、ルータ306、仮想マシン308、ファイアウォール310、及び/又はプロキシサーバ312を含むことができる。クライアント装置302はコンピューティング装置100によって具現化されてよく、サーバ装置304はコンピューティング装置100又はサーバクラスタ200によって具現化されてよく、ルータ306は任意のタイプのルータ、スイッチ、又はゲートウェイであってよい。
仮想マシン308は、コンピューティング装置100又はサーバクラスタ200のうちの1つ又は複数によって具現化され得る。一般に、仮想マシンは、コンピューティングシステムのエミュレーションであり、物理的コンピュータの機能(例えば、プロセッサ、メモリ、及び通信リソース)を模倣する。サーバクラスタ200などの1つの物理的コンピューティングシステムは、最大数千個の個別仮想マシンをサポートすることができる。いくつかの実施形態では、仮想マシン308は、個別仮想マシンに対する物理的コンピューティングリソースの割り当て、並びにパフォーマンス及びエラーの報告を容易にする、集中型サーバ装置又はアプリケーションによって管理され得る。企業は、必要に応じて、効率的にコンピューティングリソースを割り当てるために仮想マシンをしばしば使用する。仮想化コンピューティングシステムのプロバイダには、VMWARE(登録商標)及びMICROSOFT(登録商標)が含まれる。
ファイアウォール310は、管理対象ネットワーク300から開始される許可された通信を可能にしながら、管理対象ネットワーク300をその中の装置、アプリケーション、及びサービスにアクセスする不正な試みから保護する、1つ又は複数の専用ルータ又はサーバ装置であり得る。ファイアウォール310はまた、侵入検出、ウェブフィルタリング、ウイルススキャン、アプリケーション層ゲートウェイ、及び他のアプリケーション又はサービスを提供することができる。図3に示されていないいくつかの実施形態では、管理対象ネットワーク300は、リモートネットワーク管理プラットフォーム320と通信するために用いる1つ又は複数の仮想プライベートネットワーク(VPN)ゲートウェイを含むことができる(下記参照)。
管理対象ネットワーク300は、1つ又は複数のプロキシサーバ312を含むこともできる。プロキシサーバ312の一実施形態は、管理対象ネットワーク300、リモートネットワーク管理プラットフォーム320、及びサードパーティネットワーク340の間のデータの通信及び移動を容易にするサーバ装置とすることができる。特に、プロキシサーバ312は、リモートネットワーク管理プラットフォーム320の1つ又は複数の計算インスタンスとの安全な通信セッションを確立し維持することが可能であり得る。そのようなセッションによって、リモートネットワーク管理プラットフォーム320は、管理対象ネットワーク300及びその構成要素のアーキテクチャ及び構成の態様を発見し管理することが可能であり得る。場合によっては、プロキシサーバ312の助けを借りて、リモートネットワーク管理プラットフォーム320は、管理対象ネットワーク300によって使用されるサードパーティネットワーク340の態様を発見し管理することも可能であり得る。
ファイアウォール310などのファイアウォールは、通常、インターネット350を介して着信する全ての通信セッションに関して、そのようなセッションがファイアウォールの背後から(即ち、管理対象ネットワーク300上の装置から)最終的に開始されたか、又はファイアウォールがそのセッションをサポートするように明示的に構成されていない限り、それら全ての通信セッションを拒否する。プロキシサーバ312をファイアウォール310の背後に(例えば、管理対象ネットワーク300内に、ファイアウォール310によって保護されるように)配置することによって、プロキシサーバ312は、ファイアウォール310を介してこれらの通信セッションを開始することが可能であり得る。したがって、ファイアウォール310はリモートネットワーク管理プラットフォーム320からの着信セッションをサポートするために特に構成される必要がなく、それにより、管理対象ネットワーク300に対する潜在的なセキュリティリスクを回避し得る。
場合によっては、管理対象ネットワーク300は、数個の装置と少数のネットワークとから構成されることがある。他の展開では、管理対象ネットワーク300は複数の物理的場所にまたがり、数百のネットワーク及び数十万の装置を含むことができる。したがって、図3に示されるアーキテクチャは桁違いに拡大又は縮小することが可能である。
更に、管理対象ネットワーク300のサイズ、アーキテクチャ、及び接続性に応じて、様々な数のプロキシサーバ312がその中に展開され得る。例えば、プロキシサーバ312のそれぞれが、管理対象ネットワーク300の一部分に関してリモートネットワーク管理プラットフォーム320との通信を担当することができる。代替的又は追加的に、負荷分散、冗長性、及び/又は高可用性を目的として、2つ以上のプロキシサーバのセットが管理対象ネットワーク300のそのような一部分に割り当てられてもよい。
リモートネットワーク管理プラットフォーム320は、aPaaSサービスをユーザに特に管理対象ネットワーク300のオペレータに提供するホストされた環境である。これらのサービスは、例えば、ウェブベースのポータルの形態をとることができる。したがって、ユーザは、例えば、クライアント装置302から、又は潜在的に管理対象ネットワーク300の外部のクライアント装置から、リモートネットワーク管理プラットフォーム320に安全にアクセスすることができる。ウェブベースのポータルを介して、ユーザは、アプリケーションを設計、テスト、及び展開し、レポートを生成し、分析を表示し、並びに他のタスクを実行することができる。
図3に示されるように、リモートネットワーク管理プラットフォーム320は、4つの計算インスタンス322、324、326、及び328を含む。これらのインスタンスのそれぞれは、特定の顧客に利用可能な一組のウェブポータル、サービス、及びアプリケーション(例えば、完全に機能するaPaaSシステム)を提供する1つ又は複数のサーバ装置及び/又は1つ又は複数のデータベースを表すことができる。場合によっては、単一の顧客が複数の計算インスタンスを使用してもよい。例えば、管理対象ネットワーク300は、リモートネットワーク管理プラットフォーム320の企業顧客であってよく、計算インスタンス322、324、及び326を使用してもよい。複数のインスタンスを1人の顧客に提供する理由は、顧客が独立してそのアプリケーション及びサービスを開発、テスト、及び展開したいと希望することがあるからである。したがって、計算インスタンス322は、管理対象ネットワーク300に関連するアプリケーション開発に専用とされてよく、計算インスタンス324は、これらのアプリケーションのテストに専用とされてよく、計算インスタンス326は、テストされるアプリケーション及びサービスのライブ運用に専用とされてよい。計算インスタンスは、ホストインスタンス、リモートインスタンス、顧客インスタンス、又は他の何らかの名称で呼ばれてもよい。計算インスタンス上に展開された任意のアプリケーションは、計算インスタンス内のデータベースへのアクセスが、その中の特定の要素(例えば、1つ又は複数の特定のデータベーステーブル又は1つ又は複数のデータベーステーブルを有する特定の行)に限定され得るという点で、スコープ指定されたアプリケーションであり得る。
明瞭にするために、本明細書の開示では、物理的なハードウェア、ソフトウェア、及びそれらの配置を「計算インスタンス」と呼ぶ。ユーザがそれによって提供されるグラフィカルユーザインターフェースを口語的に「インスタンス」と呼び得ることに留意されたい。しかし、本明細書において特に定義されない限り、「計算インスタンス」は、リモートネットワーク管理プラットフォーム320内に配置されたコンピューティングシステムである。
リモートネットワーク管理プラットフォーム320のマルチインスタンスアーキテクチャは従来のマルチテナントアーキテクチャとは対照的であり、マルチインスタンスアーキテクチャはいくつかの利点を有する。マルチテナントアーキテクチャでは、異なる顧客(例えば企業)からのデータが、単一のデータベースに一緒にされる。これらの顧客のデータは互いに分離されているが、その分離は単一のデータベースを動作させるソフトウェアによって実施される。結果として、このシステムでのセキュリティ違反は全ての顧客のデータに影響を及ぼし、特に政府、医療、及び/又は金融規制の対象となる実体にとって追加のリスクを発生させる可能性がある。更に、1人の顧客に影響を及ぼす任意のデータベース動作が、そのデータベースを共有する全ての顧客に影響を及ぼす可能性がある。したがって、ハードウェア又はソフトウェアのエラーによる機能停止がある場合、この機能停止は全てのそのような顧客に影響を与える。同様に、データベースが1人の顧客のニーズに合わせてアップグレードされる場合、アップグレードプロセス中に全ての顧客に利用できなくなる。しばしば、そのようなメンテナンス期間は、共有されるデータベースのサイズが原因で長くなる。
対照的に、マルチインスタンスアーキテクチャは、各顧客に対し、専用のコンピューティングインスタンスにおいてその独自のデータベースを提供する。これにより、顧客データの混合を防ぎ、各インスタンスを独立して管理することが可能になる。例えば、ある顧客のインスタンスがエラー又はアップグレードによる機能停止を経験しても、他の計算インスタンスは影響されない。データベースには1人の顧客のデータしか含まないので、メンテナンスのダウン時間は限定される。更に、マルチインスタンスアーキテクチャのより単純な設計は、各顧客データベース及びインスタンスの冗長コピーが地理的に多様な方法で展開されることを可能にする。これにより、障害が検出されたとき又はメンテナンスが実行されているときに顧客のインスタンスのライブバージョンを移動できるような、高可用性を促進する。
いくつかの実施形態では、リモートネットワーク管理プラットフォーム320は、このプラットフォームを動作させるエンティティによって制御される1つ又は複数の中央インスタンスを含むことができる。計算インスタンスと同様に、中央インスタンスは、いくつかの数の物理的又は仮想的なサーバ及びデータベース装置を含むことができる。そのような中央インスタンスは、少なくともいくつかの計算インスタンスの間で共有できるデータのためのリポジトリとして機能することができる。例えば、計算インスタンス上で発生し得る共通のセキュリティ脅威の定義、計算インスタンス上で一般的に発見されるソフトウェアパッケージ、及び/又は計算インスタンスに展開され得るアプリケーションのためのアプリケーションストアが、中央インスタンス内に存在することができる。計算インスタンスは、このデータを得るために、明確に定義されたインターフェースを介して中央インスタンスと通信することができる。
複数の計算インスタンスを効率的な方法でサポートするために、リモートネットワーク管理プラットフォーム320は、単一のハードウェアプラットフォーム上に複数のこれらのインスタンスを実装することができる。例えば、aPaaSシステムがサーバクラスタ200などのサーバクラスタ上に実装された場合、それは様々な量の計算、記憶、及び通信リソースをインスタンス専用とする仮想マシンを動作させることができる。しかし、サーバクラスタ200の完全な仮想化は必要ではない場合もあり、他のメカニズムがインスタンスを分離するために使用されてもよい。いくつかの例では、各インスタンスは、サーバクラスタ200上に、専用アカウント及び1つ又は複数の専用データベースを有することができる。代替的に、計算インスタンス322は複数の物理装置にまたがることがある。
場合によっては、リモートネットワーク管理プラットフォーム320の単一のサーバクラスタが、複数の独立した企業をサポートすることができる。更に、後述するように、リモートネットワーク管理プラットフォーム320は、負荷分散、冗長性、及び/又は高可用性を促進するために、地理的に様々なデータセンタに展開された複数のサーバクラスタを含むことができる。
サードパーティネットワーク340は、アウトソーシングされた計算、データ記憶、通信、及びサービスホスティング動作のために使用できるリモートサーバ装置(例えば、サーバクラスタ200などの複数のサーバクラスタ)であり得る。これらのサーバは仮想化されてもよい(即ち、サーバは仮想マシンであってもよい)。サードパーティネットワーク340の例には、AMAZON WEB SERVICES(登録商標)及びMICROSOFT(登録商標)Azureが含まれ得る。リモートネットワーク管理プラットフォーム320と同様に、サードパーティネットワーク340をサポートする複数のサーバクラスタは、負荷分散、冗長性、及び/又は高可用性を目的として、地理的に様々な場所に展開され得る。
管理対象ネットワーク300は、サードパーティネットワーク340の1つ又は複数を使用して、アプリケーション及びサービスをそのクライアント及び顧客に展開することができる。例えば、管理対象ネットワーク300がオンライン音楽ストリーミングサービスを提供する場合、サードパーティネットワーク340が、音楽ファイルを記憶し、ウェブインターフェース及びストリーミング機能を提供することができる。このように、管理対象ネットワーク300の企業は、これらの動作のためにそれ自体のサーバを構築し維持する必要がない。
リモートネットワーク管理プラットフォーム320は、サードパーティネットワーク340と統合してその中の仮想マシン及び管理対象サービスを管理対象ネットワーク300に公開するモジュールを含むことができる。そのモジュールは、ユーザが、仮想リソースを要求し、サードパーティネットワーク340についての柔軟なレポートを提供することを可能にすることができる。この機能を確立するために、管理対象ネットワーク300からのユーザは、まずサードパーティネットワーク340とのアカウントを確立し、関連リソースのセットを要求し得る。次いで、ユーザは、アカウント情報をリモートネットワーク管理プラットフォーム320の適切なモジュールに入力することができる。これらのモジュールは、次いで、アカウント内の管理可能なリソースを自動的に発見し、更に、使用、パフォーマンス、及び課金に関する報告を提供することもできる。
インターネット350は、グローバルインターネットの一部を表し得る。しかしながら、インターネット350は、代替的に、プライベートワイドエリア又はローカルエリアパケット交換ネットワークのような異なるタイプのネットワークを表すこともある。
図4は更に、管理対象ネットワーク300と計算インスタンス322との間の通信環境を示し、追加の特徴及び代替的実施形態を導入する。図4では、計算インスタンス322は、データセンタ400A及び400Bにまたがって複製されている。これらのデータセンタは、互いに地理的に離れており、場合によっては異なる都市又は異なる国にあってよい。各データセンタは、管理対象ネットワーク300及びリモートユーザとの通信を容易にするサポート機器を含む。
データセンタ400Aにおいて、外部装置との間のネットワークトラフィックは、VPNゲートウェイ402A又はファイアウォール404Aのいずれかを通って流れる。VPNゲートウェイ402Aは、インターネットプロトコルセキュリティ(IPSEC)又はトランスポート層セキュリティ(TLS)などのセキュリティプロトコルを介して、管理対象ネットワーク300のVPNゲートウェイ412とピア接続され得る。ファイアウォール404Aは、ユーザ414及びリモートユーザ416のような許可されたユーザからのアクセスを可能にし、許可されていないユーザへのアクセスを拒否するように構成され得る。ファイアウォール404Aを介して、これらのユーザは、計算インスタンス322に、場合によっては他の計算インスタンスにアクセスすることができる。ロードバランサ406Aは、計算インスタンス322をホストする1つ又は複数の物理又は仮想サーバ装置の間でトラフィックを分散させるために使用され得る。ロードバランサ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がパッシブである。したがって、データセンタ400B内の計算インスタンス322のバージョンがほぼリアルタイムで更新されている一方で、データセンタ400Aは管理対象ネットワーク300との間の全てのトラフィックを処理している。両方のデータセンタがアクティブであるような他の構成もサポートされ得る。
データセンタ400Aが何らかの様式で失敗し又はユーザに利用できなくなった場合、データセンタ400Bがアクティブなデータセンタとして引き継ぐことができる。例えば、計算インスタンス322のドメイン名をデータセンタ400Aの1つ又は複数のインターネットプロトコル(IP)アドレスと関連付けるドメインネームシステム(DNS)サーバが、そのドメイン名をデータセンタ400Bの1つ又は複数のIPアドレスと再関連付けすることができる。この再関連付けが完了した後(1秒未満又は数秒かかることがある)、ユーザはデータセンタ400Bを介して計算インスタンス322にアクセスすることができる。
図4は、管理対象ネットワーク300の可能な構成も示す。上述のように、プロキシサーバ312及びユーザ414は、ファイアウォール310を介して計算インスタンス322にアクセスすることができる。プロキシサーバ312はまた、構成項目410にアクセスすることができる。図4では、構成項目410は、クライアント装置302、サーバ装置304、ルータ306、仮想マシン308、それらの上で実行される任意のアプリケーション又はサービス、並びに、装置、アプリケーション、及びサービスの間の関係のうちのいずれか又は全てを指すことができる。したがって、「構成項目」という用語は、任意の物理装置若しくは仮想装置、又はリモートで発見可能な若しくは計算インスタンス322により管理される任意のアプリケーション若しくはサービス、又は発見された装置、アプリケーション、及びサービスの間の関係の省略表現であり得る。構成項目は、計算インスタンス322の構成管理データベース(CMDB)内で表現することができる。
上述のように、VPNゲートウェイ412は、VPNゲートウェイ402Aに専用VPNを提供することができる。そのようなVPNは、管理対象ネットワーク300と計算インスタンス322との間にかなりの量のトラフィックがある場合、さもなければ、セキュリティポリシーがこれらのサイト間のVPNの使用を推奨又は要求する場合に、有用であり得る。いくつかの実施形態では、VPNを介して直接通信する管理対象ネットワーク300及び/又は計算インスタンス322における任意の装置に、パブリックIPアドレスが割り当てられる。管理対象ネットワーク300及び/又は計算インスタンス322内の他の装置には、プライベートIPアドレス(例えば、それぞれサブネット10.0.0.0/8及び192.168.0.0/16と略して表現される10.0.0.0~10.255.255.255又は192.168.0.0~192.168.255.255の範囲から選択されるIPアドレス)が割り当てられ得る。
IV.例示的な装置、アプリケーション、及びサービス発見
リモートネットワーク管理プラットフォーム320が管理対象ネットワーク300の装置、アプリケーション、及びサービスを管理するために、まず、リモートネットワーク管理プラットフォーム320は、管理対象ネットワーク300内にどんな装置が存在するか、これらの装置の構成及び動作状態、それらの装置により提供されるアプリケーション及びサービス、並びに発見された装置、アプリケーション、及びサービスの間の関係を決定することができる。上述のように、各装置、アプリケーション、サービス、及び関係は、構成項目と呼ばれ得る。管理対象ネットワーク300内の構成項目を定義するプロセスは、発見と呼ばれ、プロキシサーバ312によって少なくとも部分的に容易にされ得る。
本明細書の実施形態の目的では、「アプリケーション」は、1つ又は複数のプロセス、スレッド、プログラム、クライアントモジュール、サーバモジュール、又は装置若しくは装置のグループ上で実行される他の任意のソフトウェアを指すことができる。「サービス」とは、互いに関連して動作する1つ又は複数の装置上で実行される複数のアプリケーションによって提供される高レベルの能力を指すことがある。例えば、高レベルのウェブサービスは、複数のウェブアプリケーションサーバスレッドを含むことができ、これらのスレッドは、1つの装置上で実行され、別の装置上で実行されるデータベースアプリケーションの情報にアクセスする。
図5Aは、構成項目がどのように発見されることが可能か、及び、発見された構成項目に関係する情報がどのように記憶されるかについての論理的な表現を示す。簡単にするため、リモートネットワーク管理プラットフォーム320、サードパーティネットワーク340、及びインターネット350は図示されていない。
図5Aにおいて、CMDB500及びタスクリスト502は計算インスタンス322内で記憶される。計算インスタンス322は、プロキシサーバ312に発見コマンドを送信することができる。応答として、プロキシサーバ312は、管理対象ネットワーク300内の様々な装置、アプリケーション、及びサービスに対してプローブを送信することができる。これらの装置、アプリケーション、及びサービスは、プロキシサーバ312に応答を送信することができ、次いでプロキシサーバ312は、発見された構成項目に関する情報を記憶するためにCMDB500に提供することができる。CMDB500に記憶された構成項目は、管理対象ネットワーク300の環境を表す。
タスクリスト502は、プロキシサーバ312が計算インスタンス322に代わって行うアクティビティのリストを表す。発見が行われると、タスクリスト502が設定される。プロキシサーバ312は、繰り返しタスクリスト502を照会し、リスト内の次のタスクを取得し、タスクリスト502が空になるか又は別の停止条件に達するまでこのタスクを実行する。
発見を容易にするために、プロキシサーバ312は、プロキシサーバ312を介して到達できる管理対象ネットワーク300内の1つ又は複数のサブネットに関する情報で構成されることが可能である。例えば、プロキシサーバ312は、サブネットとしてIPアドレス範囲192.168.0/24を与えられてよい。次いで、計算インスタンス322は、この情報をCMDB500に記憶し、これらの各アドレスにおける装置の発見のためにタスクリスト502にタスクを配置することができる。
図5Aはまた、構成項目504、506、508、510、及び512として、管理対象ネットワーク300内の装置、アプリケーション、及びサービスを示す。上述のように、これらの構成項目は、セットの物理及び/又は仮想装置(例えば、クライアント装置、サーバ装置、ルータ、又は仮想マシン)、それらの上で実行されるアプリケーション(例えば、ウェブサーバ、電子メールサーバ、データベース、又はストレージアレイ)、それらの間の関係、並びに複数の個別構成項目を含むサービスを表す。
タスクリスト502にタスクを配置することがトリガーとなって又は別様にプロキシサーバ312に発見を開始させる。代替的又は追加的に、発見は手動でトリガーされてもよく、トリガーイベントに基づいて自動的にトリガーされてもよい(例えば、1日1回の特定の時間に自動的に発見が開始してもよい)。
一般に、発見は、スキャン、分類、識別、及び探査という4つの論理フェーズで進行することができる。発見の各フェーズは、プロキシサーバ312により管理対象ネットワーク300内の1つ又は複数の装置に送信される様々なタイプのプローブメッセージを含む。これらのプローブに対する応答は、プロキシサーバ312によって受信され処理され、それらの表示はCMDB500に送信され得る。したがって、各フェーズの結果、より多くの構成項目が発見されてCMDB500に記憶され得る。
スキャンフェーズでは、プロキシサーバ312は、オープン伝送制御プロトコル(TCP)及び/又はユーザデータグラムプロトコル(UDP)ポートについて、IPアドレス内の指定された範囲の各IPアドレスをプローブして、装置の一般的なタイプを決定することができる。IPアドレスにおけるそのようなオープンポートの存在は、特定のアプリケーションがそのIPアドレスを割り当てられた装置上で動作していることを示すことができ、それにより、その装置によって使用されるオペレーティングシステムを識別することができる。例えば、TCPポート135が開いている場合、装置はWINDOWS(登録商標)オペレーティングシステムを実行している可能性が高い。同様に、TCPポート22が開いている場合、装置はLINUX(登録商標)などのUNIX(登録商標)オペレーティングシステムを実行している可能性が高い。UDPポート161が開いている場合、装置は簡易ネットワーク管理プロトコル(SNMP)を介して更に識別されることが可能であり得る。他の可能性もある。特定のIPアドレスにおける装置とそのオープンポートの存在がいったん発見されると、これらの構成項目はCMDB500に保存される。
分類フェーズでは、プロキシサーバ312は更に、発見された各装置をプローブして、そのオペレーティングシステムのバージョンを決定することができる。特定の装置に使用されるプローブは、その装置に関してスキャンフェーズ中に収集された情報に基づく。例えば、TCPポート22が開いている装置が見つかった場合、UNIX(登録商標)固有のプローブのセットが使用され得る。同様に、TCPポート135が開いている装置が見つかった場合、WINDOWS(登録商標)固有のプローブのセットが使用され得る。いずれの場合も、プロキシサーバ312が実行するためにタスクの適切なセットをタスクリスト502に配置することができる。これらのタスクは、特定の装置からの情報に対してプロキシサーバ312がログオン又は他のアクセスをする結果をもたらすことができる。例えば、TCPポート22が開いている場合、プロキシサーバ312は、特定の装置に対するセキュアシェル(SSH)接続を開始し、その上のオペレーティングシステムに関する情報をファイルシステム内の特定の場所から得るように指示されることが可能である。この情報に基づいて、オペレーティングシステムを決定することができる。例として、TCPポート22が開いているUNIX(登録商標)装置は、AIX(登録商標)、HPUX、LINUX(登録商標)、MACOS(登録商標)、又はSOLARIS(登録商標)として分類することができる。この分類情報は、CMDB500内に1つ又は複数の構成項目として記憶することができる。
識別フェーズでは、プロキシサーバ312は、分類された装置に関する特定の詳細を決定することができる。このフェーズ中に使用されるプローブは、分類フェーズ中に特定の装置に関して収集された情報に基づくことができる。例えば、装置がLINUX(登録商標)として分類された場合、LINUX(登録商標)固有のプローブのセットが使用され得る。同様に、装置がWINDOWS(登録商標)2012として分類された場合、WINDOWS(登録商標)2012固有のプローブのセットが使用され得る。分類フェーズの場合と同様に、プロキシサーバ312が実行するためにタスクの適切なセットをタスクリスト502に配置することができる。これらのタスクの結果、プロキシサーバ312は、特定の装置から、基本入出力システム(BIOS)情報、シリアル番号、ネットワークインターフェース情報、これらのネットワークインターフェースに割り当てられたメディアアクセス制御アドレス、その特定の装置により使用されているIPアドレスなどの情報を読み取ることができる。この識別情報は、CMDB500内に1つ又は複数の構成項目として記憶することができる。
探査フェーズでは、プロキシサーバ312は、分類された装置の動作状態に関して更なる詳細を決定することができる。このフェーズ中に使用されるプローブは、分類フェーズ及び/又は識別フェーズ中に特定の装置に関して収集された情報に基づくことができる。ここでも、プロキシサーバ312が実行するためにタスクの適切なセットをタスクリスト502に配置することができる。これらのタスクの結果、プロキシサーバ312が、特定の装置から、プロセッサ情報、メモリ情報、実行中のプロセス(アプリケーション)のリストなどの追加の情報を読み取ることができる。やはり、発見された情報は、CMDB500内に1つ又は複数の構成項目として記憶することができる。
ルータなどのネットワーク装置上で発見を実行するのにSNMPを利用することができる。発見は、実行中のプロセス又は他のアプリケーション関連情報のリストを決定することに代えて又は加えて、ルータに認識された追加サブネット、及びルータのネットワークインターフェースの動作状態(例えば、アクティブ、非アクティブ、キューの長さ、廃棄されたパケットの数など)を決定してもよい。追加のサブネットのIPアドレスは、更なる発見手順の候補になり得る。したがって、発見は反復的又は再帰的に進行することがある。
発見が完了すると、各発見された装置、アプリケーション、及びサービスのスナップショット表現がCMDB500で利用可能である。例えば、管理対象ネットワーク300内のクライアント装置、サーバ装置、及びルータについての、オペレーティングシステムバージョン、ハードウェア構成、及びネットワーク構成の詳細、並びにそれらの上で実行されているアプリケーションが、発見の後に記憶され得る。この収集された情報は、装置のハードウェア構成及び動作状態並びに複数の装置及びアプリケーションにわたるサービスの特性をユーザが見ることを可能にするために、様々な方法でユーザに提示され得る。
更に、CMDB500は、構成項目間の依存関係及び関係性についてのエントリを含むことができる。より具体的には、特定のサーバ装置上で実行されているアプリケーション、並びにこのアプリケーションに依存するサービスが、CMDB500内でそのように表されることが可能である。例えば、データベースアプリケーションがサーバ装置上で実行されており、このデータベースアプリケーションが新入社員オンボーディングサービス及び給与計算サービスによって使用されていると想定する。したがって、そのサーバ装置がメンテナンスのために運用から外された場合、従業員オンボーディングサービス及び給与計算サービスが影響を受けることは明白である。同様に、構成項目間の依存関係及び関係性は、特定のルータが故障したときに影響を受けるサービスを表現することも可能であり得る。
一般に、構成項目間の依存関係及び関係性は、ウェブベースのインターフェース上に表示され、階層的な様式で表すことができる。したがって、そのような依存関係及び関係性の追加、変更、又は削除は、このインターフェースを介して達成することができる。
更に、管理対象ネットワーク300のユーザは、複数の発見された装置にわたって特定の協調アクティビティが行われることを可能にするワークフローを開発することができる。例えば、ITワークフローは、ユーザが全ての発見されたLINUX(登録商標)装置に対して共通の管理者パスワードを1回の操作で変更することを可能にし得る。
上述した方法で発見を行うために、プロキシサーバ312、CMDB500、及び/又は1つ若しくは複数の資格証明ストアが、発見される1つ又は複数の装置の資格証明を用いて構成され得る。資格証明は、装置にアクセスするために必要とされる任意のタイプの情報を含むことができる。これらは、ユーザID/パスワードの対、証明書などを含むことができる。いくつかの実施形態では、これらの資格証明は、CMDB500の暗号化されたフィールドに記憶することができる。プロキシサーバ312は資格証明の復号鍵を含むことができ、したがって、プロキシサーバ312はこれらの資格証明を使用して、発見される装置にログオン又は他のアクセスをすることができる。
発見プロセスは、図5Bにフローチャートとして示されている。ブロック520で、計算インスタンス内のタスクリストに、例えば、IPアドレスの範囲が設定される。ブロック522では、スキャンフェーズが行われる。それにより、プロキシサーバは、これらのIPアドレスを使用して装置のIPアドレスをプローブして、これらの装置で実行されているオペレーティングシステムを決定しようとする。ブロック524では、分類フェーズが行われる。プロキシサーバは、発見された装置のオペレーティングシステムのバージョンを決定しようとする。ブロック526では、識別フェーズが行われる。プロキシサーバは、発見された装置のハードウェア構成及び/又はソフトウェア構成を決定しようとする。ブロック528では、探査フェーズが行われる。プロキシサーバは、発見された装置上で実行されている動作状態及びアプリケーションを決定しようとする。ブロック530では、発見された装置及びアプリケーションを表す構成項目の更なる編集が行われ得る。この編集は、本質的に自動及び/又は手動とすることができる。
図5Bに表されるブロックは例示を目的としている。発見は、より多い又はより少ないフェーズを有し得る高度に構成可能な手順とすることができ、各フェーズの動作は異なってもよい。場合によっては、1つ又は複数のフェーズがカスタマイズされてもよく、又は他のやり方で上記の例示的な説明から逸脱してもよい。
V.活動記録からのソフトウェア取引の発見
アプリケーション及びサービスの購入又はライセンス取得を含む取引は、活動記録に記録されることがある。これらの活動記録は、例えば、領収書、ライセンス契約、又は経費報告書の表現からのデータを含むことがある。本明細書での実施形態に従って活動記録を解析することによって、ソフトウェアに関係付けられた取引を発見して分類することができる。
特に、本明細書で述べる自動システムは、活動記録を、ソフトウェアに関係付けられているもの又はソフトウェアに関係付けられないもののいずれかとして分類する。ソフトウェアに関係付けられるものとして分類された活動記録は、ソフトウェアの提供元(例えば、ソフトウェアを製造若しくは配布するソフトウェア会社、又はソフトウェアサービスを提供するサービス提供元)を決定するために更に解析することができる。提供元が決定された場合、活動記録を更に解析して、ソフトウェアのアプリケーションタイトルを決定することができる。本明細書での実施形態は、有利には、これらの解析のそれぞれを実施するためにマルチレベル機械学習(ML)モデルを利用し、従来の方法よりも高い精度で解析を行うことが可能であり得る。
A.ソフトウェアカタログ
多層MLモデルは、ソフトウェアカタログ及び/又はカタログから導出されたソフトウェアカタログ語彙にアクセスすることができる。図6Aは、例示的実施形態によるソフトウェアカタログ600を示す。ソフトウェアカタログ600は、複数のエントリを含むことができ、各エントリは、特定のソフトウェアタイトル及び/又はバージョンに関係することができる。即ち、各エントリは、提供元、アプリケーションタイトル、及び/又はバージョンを含むことができる。例えば、ソフトウェアカタログ600のエントリは、複数のアプリケーションタイトル及びそれらの対応する提供元を含むことができる。場合によっては、ソフトウェアカタログは、提供元及び/又はそれらのアプリケーションタイトルのURL(ユニフォームリソースロケータ)又はドメイン名を含むことがある。例えば、「MCアプリケーションタイトル1」に関する図6Aのエントリ602は、提供元MICROCORPに関連付けることができる。
いくつかの実施形態では、ソフトウェアカタログ600は、例えば、1000エントリ、10000エントリ、100000エントリ、又はそれよりも多くのエントリを含むことができる。ソフトウェアカタログ600の各エントリは、ソフトウェア製品及び関連サービスの過去、現在、又は更には将来のプレリリースバージョンに関係することもある。いくつかの実施形態では、ソフトウェアカタログ600は、ファイル及び/又はデータベースとして実装することができる。
図6Aに示されるように、ソフトウェアカタログ600は、暗黙的又は明示的なツリー構造を有することができる。例えば、各提供元604は、木の枝を表すことができ、各製品又はアプリケーションタイトル606は、枝の葉を表すことができる。ソフトウェアカタログ600は、自動(例えばリモートサーバから更新を検索することができる)又は手動で維持(例えば更新及び調整)することができる。
アプリケーションタイトルが更新又は改訂されたとき、古いバージョンのアプリケーションタイトルがソフトウェアカタログ600に残ることがある。提供元の買収又は合併の場合、対応するアプリケーションタイトルを新たな提供元に移行することができる。しかし、ツリー履歴は保持され(例えばツリー構造は通常は切り捨てられない)、したがって、特にレガシー製品に関係するより古いアプリケーションの分類を補助するために依然として使用することができる。
いくつかの実施形態では、ソフトウェアカタログ600を構文解析して、ソフトウェアカタログ語彙を形成することができる。例えば、ソフトウェアカタログ600は、「bag-of-words」モデルと共に使用するために構文解析することができる。即ち、ソフトウェアカタログ600にある個々の単語を、単語数(例えば、その単語がソフトウェアカタログ600に現れる回数)及び/又は単語頻度(例えば、その単語がソフトウェアカタログ600に現れる頻度)によって識別することができる。したがって、bag-of-wordsモデルは、それぞれが単語数及び/又は単語頻度を有する一意の単語からなる順序のない文書によって表されるソフトウェアカタログ語彙を提供することができる。場合によっては、構文解析プロセスは、大文字使用、スペース、特殊文字、及び/又は他のフォーマット情報を無視することがある。
bag-of-wordsモデルによれば、「MCアプリケーションタイトル1」は、{MICROCORP,アプリケーション,タイトル,1}と表すことができる。そのようなシナリオでは、短縮形「MC」を「MICROCORP」に展開することができる。各エントリから複数の一意の単語を提供するための他のテキスト正規化プロセスも可能である。単語数及び/又は単語頻度は、単語がソフトウェアカタログ600に現れる回数に基づいて、各一意の単語に関連付けることができる。ソフトウェアカタログ語彙を表すための他の方法も可能であることを理解されたい。
追加として又は代替として、ソフトウェアカタログ語彙は、空間情報をソフトウェアカタログの構文解析された単語に関連付けるn-gramモデルとして記憶することができる。例えば、バイグラム(bigram)モデルは、ソフトウェアカタログ600のテキストを2単語単位に構文解析し、それらを記憶すると共に、個々の単語及びそれらの個別の単語数/頻度を記憶することができる。一例として、エントリ「MCアプリケーションタイトル1」の場合、バイグラムモデルは、{MICROCORPアプリケーション,アプリケーションタイトル,タイトル1}などの2単語単位と、bag-of-words表現と同様の1単語単位を含むことができる。他のn-gramモデル(例えば、nが3、4、又はそれよりも大きい)も可能である。更に、依存関係の構文解析及び/又は構成要素の構文解析などの他の構文解析モデルも可能である。
B.訓練データセット/ラベル付きのデータ
訓練データセットを使用して、多層MLモデルの1つ又は複数の層を訓練することができる。訓練データセットは、ラベル付けされている複数の実際の及び/又は仮定の活動記録を含むことができる。いくつかの実施形態では、各活動記録は、少なくとも4つのフィールド、即ち(i)活動データ、(ii)提供元データ、(iii)説明データ、及び(iv)1つ又は複数のラベルを含むことができる。
所与の活動記録の活動データフィールドは、経費タイプ又は取引タイプに関する情報を含むことができる。例えば、活動データフィールドは、「ソフトウェア」、「交通」、「個人」、「その他」などを含むことができる。場合によっては、活動データフィールドに手動で入力する(例えば、手動でキー入力する)こともできる。したがって、活動データフィールドは様々なエントリを含むことができる。
所与の活動記録の提供元データフィールドは、あり得るベンダ名に関する情報を含むことができる。いくつかの例では、提供元データフィールドは、「MICROCORP」、「SOFTWARE SYSTEMS」、「SFTWR SYS」などのテキスト情報を含むことができる。提供元データフィールドにも様々なエントリが可能である。
所与の活動記録の説明データフィールドは、取引の簡単な説明を含むことができる。一例として、説明データフィールドは、「オフィス生産性ツール」、「MICROCORP用のフォント購入」、又は「MICROCORPオフィスへの輸送」などのテキストエントリを含むことができる。他の例も可能である。
ラベルフィールドは、活動記録が(i)ソフトウェア、(ii)特定の提供元(例えば、ソフトウェア発行元又は会社)、並びに/又は(iii)特定のアプリケーションタイトル及び/又はそのバージョンに関係するかどうかに関して「グラウンドトゥルース」を示す1つ又は複数のラベルを含むことができる。一例として、ラベルフィールドは、「ソフトウェア」、「MICROCORP」、「MCアプリケーションタイトル1」などを含むことができる。
図6Bは、例示的実施形態による、1組のラベル付きの活動記録610を示す。各活動記録は、識別子(ID)612、経費勘定フィールド620、提供元名フィールド630、説明フィールド640、並びに1つ又は複数のラベルフィールド650、660、及び/又は670を含むことができる。活動記録610の他のタイプ及び/又はフォーマットも可能である。
識別子612は、取引番号、経費報告書識別子、又は日付、時刻、発行者名など別のタイプの一意の識別子を含むことができる。経費勘定フィールド620は、取引のタイプ(例えば、交通、ソフトウェア、コンピュータ、駐車場、走行距離など)に関する情報を含むことができる。いくつかの実施形態では、経費勘定フィールド620は、他のタイプの活動データを含むこともできる。提供元名フィールド630は、取引の当事者(例えば払受人)に関する情報を含むことができる。いくつかの実施形態では、提供元名フィールド630は、販売者又は請負業者を含むことができる。説明フィールド640は、取引又は活動記録に関する詳細を示す情報を含むことができる。例えば、説明フィールド640は、取引又は活動記録の目的を簡単に説明するいくつかの単語を含むことができる。
例示的実施形態では、ラベル付きの活動記録610は、多層MLモデルの1つ又は複数の層を訓練するために使用することができるラベル付きのデータセットの例示的なエントリを表すことができる。そのようなシナリオでは、実際のソフトウェアフィールド650、実際の提供元フィールド660、及び実際のアプリケーションタイトルフィールド670は、所与の取引又は活動記録に関する「グラウンドトゥルース」を示すラベル付きのデータを含むことができる。これらのグラウンドトゥルース値は、手動で入力することも、自動的に決定することもできる。
図6Bに示されるように、活動記録#1は、経費勘定フィールド620に「サブスクリプションソフトウェアライセンス」、提供元名フィールド630に「MICROCORP RENEWALS」、説明フィールド640に「MCアプリケーションタイトル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の層は、教師ありスタッキングアンサンブルモデルを利用して、ソフトウェアに関係する取引を識別する。第1の層は、(i)活動データ、(ii)提供元データ、及び(iii)説明データと呼ばれる3つのテキストフィールドを入力として受け入れる。実際には、活動データフィールドは、経費勘定フィールド620からのコンテンツを与えられることがあり、提供元データフィールドは、提供元名フィールド630からのコンテンツを与えられることがあり、説明データフィールドは、説明フィールド640からのコンテンツを与えられることがある。したがって、入力は、ラベルのない経費報告書、又は何らかの他のタイプのラベルのない取引又は活動記録からのものであり得る。最初のステップは、この入力がソフトウェアに関係しているかどうかを決定することであり得る。
活動データ、提供元データ、説明データのそれぞれからの構文解析データが、それぞれのML分類器(例えば、単語の埋込み又は単純ベイズ分類器)に入力され、これらは、ラベル付きの訓練データセット(例えば、ラベル付きの活動記録610)で訓練されていることがある。上述したように、ラベル付きの訓練データセットは、ソフトウェアに関係付けられているもの又はソフトウェアに関係付けられていないものとしてラベル付けされた実際の又は仮定の活動記録を含む。一例として、このフィールドに「交通」、「食事」、又は「会議用ポスター」などの単語又は単語の短いシーケンスが現れると、この取引がソフトウェアに関係付けられていない可能性が大幅に高まるので、活動データが重要であるとみなされることがある。それぞれのML分類器は、それらの訓練に基づいて、ソフトウェア取引又は非ソフトウェア取引のいずれかに対応する単語及び/又は単語シーケンスを独立して学習することができる。即ち、それぞれのML分類器は各々、それぞれのテキストフィールド内の単語及び/又は語句がソフトウェアに関係している尤度性を出力することができる。
本明細書で述べるように、単語埋込みベースの分類器は、ニューラルネットワークを使用して、単語及び/又は段落(例えば、ソースドキュメント内で互いに隣接又は近接する単語のグループ)に関する記述子を決定することができる。これらの記述子は、単語及び/又は段落を、単語及び/又は段落の意味論的意味を表すn次元空間(例えば単語ベクトル又は段落ベクトル)にマッピングすることができる。
本明細書で述べるように、単純ベイズ分類器は、ベイズの定理を適用する1つ又は複数のタイプの確率的分類器であり得る。更に、単純ベイズ分類器は、複数の特徴の間に依存関係がないことを前提としている。いくつかの実施形態では、単純ベイズ分類器は、それらの閉じた形態により、他の分類器タイプ及び/又はニューラルネットワーク実装と比較して、改良された速度及び計算効率を提供することができる。しかし、他のタイプのML分類器も可能である。
これらのテキストベースの分類モデルに加えて、活動記録のフィールドに現れる単語及び/又はn-gramをソフトウェアカタログ(例えばソフトウェアカタログ600)の用語と比較して、それらの共通部分を見つけることができる。活動記録テキストとソフトウェアカタログとの両方に現れる単語及び/又はn-gramの数は、特定の活動記録がソフトウェアに関係していることの潜在的な更なる指標として使用される。例えば、活動記録及びソフトウェアカタログに「MICROCORP」という単語が多く現れることは、活動記録がソフトウェアに関係付けられていることを示していることがある。
次いで、3つの別個の尤度(ML分類器ごとに1つずつ)それぞれ、及び単語数が、各予測の確実性と共に、各フィールドの相対的な重要性を考慮した2次分類モデルに(例えば、ロジスティック回帰を使用して)集約される。即ち、3つの離散尤度及び単語数は、それぞれロジスティック回帰での特徴として扱われる。
ここで述べるように、ロジスティック回帰は、正則化項を含むL2ロジスティック回帰でよい。正則化項は、高い係数値又は重みに「ペナルティを課す」ように適用することができる。そのような正則化項は、当て嵌め、予測精度、及び/又は多層MLモデルの他の側面を改善する助けとなり得る。例示的実施形態では、L2ロジスティック回帰の出力は、所与の活動記録がソフトウェアであるか否かの予測を、尤度又は不確実性の値と共に含むことができる。代替として、ロジスティック回帰をベイズ最適分類器によって置き換える、又はベイズ最適分類器と共に使用することもできる。本明細書で述べるように、ベイズ最適分類器は、仮説空間内の複数の仮説を収集するアンサンブル分類器を含む。例えば、ベイズの最適分類器をスタッキング分類モデルで使用して、複数の離散分類器を合成することができる。
この第1の層のプロセスの結果は、任意の所与の活動がソフトウェアに関係する確率を予測するモデルである。即ち、第1の層のプロセスがソフトウェア決定閾値(例えば50%)以上の尤度を返す場合、活動記録は、多層MLモデルの第2の層によって解析されることがある。第1の層のプロセスが、活動記録がソフトウェアに関係する低い尤度(例えば、ソフトウェア決定閾値未満の尤度)を返す場合、次の層に移動せずに所与の活動記録を破棄しても安全であるとみなすことができる。一般に、多層MLモデルは、コンピューティングリソースを節約し、活動記録のスループットを向上させるために、任意の層でこれらの「ドロップアウト」を許可する。
いくつかの実施形態では、ソフトウェアであり得る活動記録(例えば、ソフトウェアである尤度が20~50%以内)は、正当なソフトウェア関連の活動記録を偽陰性として破棄することを回避するために、手動分類のためにタグ付けすることができる。他の実施形態では、ソフトウェアに関係付けられていないものとしての活動記録の誤った分類を回避するために、ソフトウェア決定閾値を非常に低く設定することができる(例えば20%以下の尤度)。
D.MLモデルの第2の層-提供元分類
所与の活動記録がソフトウェアとして分類されると、多層MLモデルは、活動記録が特定の提供元に関係しているかどうかを予測することができる。考えられるソフトウェア提供元の数が多いため、及びそれら全てに関するデータの取得には難しさが伴うため、完全に教師ありのマルチカテゴリモデルは実行可能でないことがある。代わりに、本開示では、多層MLモデルの第2の層は、順序付けられた規則集合を集約して適用する。
提供元データフィールド及び説明データフィールドは、空白文字及び他のあり得る区切り文字(コンマ、タブ、キャリッジリターンなど)でテキストを分割することによってトークン化される。次いで、トークン化された単語を、単一の単語トークンのベクトルと、様々なn-gramの単語の組合せとに編成することができる。いくつかの実施形態では、n-gram単語トークンは、複数の単語からなる名前を有する提供元に対応する助けとなり得る。
次いで、順序付けられた規則集合が、単一及びn-gram単語トークンのベクトルに適用される。即ち、各規則は、ベクトルとソフトウェアカタログ及び/又はソフトウェアカタログ語彙とを取得し、比較を行って、特定のベクトルがソフトウェアカタログ内の項目にどの程度類似しているかを示す(非)類似性スコアを返す。
例示的な規則は、活動記録の提供元フィールドに対して特定の正規化操作を行い、カタログ項目の提供元名に対して別の特定の正規化操作を行うことができる。そのような規則は、提供元名が活動記録の提供元フィールドの最初に現れるかどうかを判断することができる。そうである場合、規則は一致の標示(例えば「1」又は「真」のブール値)を返し、そうでない場合、規則は不一致の標示(例えば「0」又は「偽」のブール値)を返す。別の規則は、提供元名が活動記録の提供元フィールドに完全一致するかどうかを判断することができる。更に別の規則は、提供元名が活動記録の提供元フィールドに含まれているかどうかを判断することができる。更に別の規則は、提供元データフィールドと提供元名との間の編集距離を計算し、全体の単語長を調整しながら、最短のそのような距離を選択することができる。追加の規則は、単語ベクトル(word2vec)単語埋込みを使用し、活動記録とソフトウェアカタログでの単語間の最小コサイン距離を得るなど、より洗練された技法を利用することもできる。他の規則も可能であり得る。
ごく一般的に、規則(類似性関数とも呼ぶ)は、活動記録からデータを受け取り、ソフトウェアカタログ内の提供元との(非)類似性の程度を示す数又は値を返す任意の関数でよい。規則は、提供元から独立していることがある。規則は、共線的でないという仮定に従うことがある。
訓練フェーズ中、ロジスティック回帰をラベル付きのデータセットに当て嵌めて、各規則がどの程度よく機能し、それらの予測を最良に集約する方法を決定することができる。訓練されると、モデルの第2の層は、活動記録からデータを受け取り、第1の規則を実行して、得られた確率をチェックする。確率が特定の提供元に関する閾値を超える場合、システムは、特定の提供元の予測で終了する。そうでない場合、一致が発見される、又は全ての規則が実行されるまで、第2の規則がチェックされ、第3の規則がチェックされ、以下同様である。これらの規則の順序は、それぞれの予想される計算時間及び/又は予想される精度に基づいて構成することができる。例えば、予想される計算時間がより短い、及び/又は予想される精度がより高い規則は、規則の順序内でより早期に配置されることがある。いくつかの実施形態は、できるだけ長い用語に一致することを最初に試みる規則を適用し、その後、より短いテキスト文字列に一致する規則に移ることがある。
いくつかの実施形態では、規則は、各規則の重要性を示すそれぞれの重み(例えば0~1の間の値)に関連付けられることがある。より正確な結果を生成することが期待される規則は、より高い重みが与えられることがある。第2の層は、ラベル付きのデータセットを使用して訓練され、最尤推定器(MLE)を適用してこれらの重みを決定することができる。
E.MLモデルの第3の層-アプリケーションタイトル分類
活動記録が所与の提供元に関連付けられると、識別された提供元に関連付けられたアプリケーションタイトルのみを含むように、ソフトウェアカタログ内のアプリケーションタイトルの検索スペースを縮小することができる。即ち、提供元が識別されたとき、ソフトウェアカタログ及び/又は対応するソフトウェアカタログ語彙の範囲を、識別された提供元に関係するエントリに限定することができる。
第3の層は、第2の層と同様に機能する。したがって、第3の層は、活動記録の説明フィールドと、ソフトウェアカタログの説明フィールドとをトークン化し、順序付けられた規則集合をこのデータに適用する。規則は、上で第2の層に使用されたものと同様でよく、各規則は、訓練によって決定されたそれぞれの重みに関連付けられることもある。これらの規則の順序は、それぞれの予想される計算時間及び/又は予想される精度に基づいて構成することができる。更に、第3の層はまた、所与の提供元が1つのアプリケーションタイトルしか有さない状況を考慮に入れ、所与の提供元が予測されるときはいつでもそのタイトルを返すことができる。
活動記録が完全に分類されると、活動記録からのデータを、構成項目としてCMDBに記憶することができる。例えば、提供元名、アプリケーションタイトル、バージョン、価格、契約条件などが、構成項目の属性であり得る。
いくつかの実施形態では、発行元及び/又は製品分類は、n-gram(nは範囲)のTF-IDF(term frequency-inverse document frequency:用語頻度-逆文書頻度)ベクトルのコサイン類似性を使用することができ、これらのベクトルは、カタログ及び取引に独立して適合されて、それらの一意のトークン頻度分布を反映する。単語ベクトル又は段落ベクトルも類似性に使用することができる。「規則」又は類似性を計算することができる多くの取り得る次元(例えば、取引からの「ベンダ名」及び発行元の「名前」、又は特定の発行元に属する全てのあり得る製品からの「説明」及び「名前」など)があるので、比較的小さなラベル付きのデータセットを使用して、様々な類似性手法の有効性に関する有用な情報を導出し、最尤推定器によってそれら全てを最良に集約する方法を学習することができる。これは、ロジスティック回帰又はソフトマックス回帰を依然として含むことがある。
TF-IDFコサイン類似性の実装は、本質的に、単語の重みに関する事前確率として機能するTF-IDFとのパラメータ共有の形式になる。最終的に、このパラメータの結びつきは、適切な正則化によって弱めることができ、新たにラベル付けされた取引から新たなトークンをピックアップし、TF-IDFの「事前確率(prior)」を調整することによってクラス特有の分布を学習する柔軟性を有する。
F.実験モデルの結果
実行時の実験中、本明細書で述べる多層MLモデルは、ラベルのない活動記録から提供元とアプリケーションタイトルとの両方を分類する際に94~98%を超える精度を実現した。これらの結果は、例示的な活動記録の90%しか正しく分類されない手動ラベリングと同等である又はそれを上回っている。
いくつかの実施形態では、モデルを利用して、新たなデータ(ラベルのない活動記録)にタグを付けることができる。そのようなシナリオでは、信頼性の低い予測が行われるとき、そのような活動記録は、ソフトウェアカタログにまだ含まれていないソフトウェア製品を含むことがある。したがって、本実施形態は、ソフトウェアカタログ及び/又はソフトウェアカタログ語彙を更新する方法を知らせる助けとなり得る。
VI.例示的な多層MLモデル
図7A、7B、8、及び9は、例示的実施形態による、多層MLモデルの3つの層をより詳細に示す。即ち、図7Aは、第1の層の訓練を示し、図7Bは、第1の層の動作を示し、図8は、第2の層の動作を示し、図9は、第3の層の動作を示す。第2の層及び第3の層の訓練は任意選択であり、本明細書の本文で述べる。
上述したように、多層MLモデルの少なくとも1つの層は、ラベル付きの1組の活動記録に基づいて、訓練フェーズ中に訓練することができる。そのようなシナリオでは、各活動記録は、限定はしないが、活動データと、提供元データと、説明データと、活動記録がソフトウェア、提供元名、及びアプリケーションタイトルに関係付けられているかどうかのグラウンドトゥルース値を示す1つ又は複数のラベルとを含むことができる。ラベル付きの活動記録610は、この訓練データの例を提供する。
多層MLモデルの側面は、様々な方法で訓練することができる。例えば、いくつかの実施形態では、構成素モデルの1つ又は複数のパラメータは、MLE及び/又は最大事後確率(MAP)推定を使用して推定及び調整することができる。構成素モデルのパラメータを訓練する他の方法には、様々な推定方法の中でもとりわけ、最大間隔推定、最大エントロピー推定、最小距離推定、及び/又はモーメント法が含まれる。
いくつかの実施形態では、各モデルは、同じ訓練データセットを利用することができる。他の例では、各モデルに、それ独自の一意の訓練データセットを提供することができる。更に、いくつかの訓練データエントリは、1つ又は複数の試験フェーズ中に使用するために取っておくことができ、試験フェーズは、最初の訓練フェーズの後に、及び/又はいくつかの訓練フェーズの間に行うことができる。
図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から説明訓練データ702を入力として受け取り、ソフトウェア分類器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-gramに基づいて、特定の活動記録がソフトウェアに関係するかどうかの予測を含むことがある。グラウンドトゥルースラベルは、特定の活動記録が実際にソフトウェアに関係しているかどうかを示すことがある。
ML訓練プロセス728は、ロジスティック回帰730に関する重みを生成し、ここで、ロジスティック回帰は、ソフトウェア分類器714、ソフトウェア分類器716、ソフトウェア分類器718からの出力、及び単語数手順(詳細は図7Bを参照)に適用される。ML訓練708、ML訓練710、ML訓練712、及びML訓練728はそれぞれ、互いに独立して行われることがあることに留意されたい。
図7Bは、動作750でのMLモデルの第1の層を示す。活動データ752、提供元データ754、及び説明データ756は、新たな活動記録からのものであり得る(ここで「新たな」という用語は、第1の層が訓練された後に活動記録が生成された、又は活動記録が第1の層の訓練に使用されていないことがあることを意味する)。
このデータは、ソフトウェア分類器714、ソフトウェア分類器716、及びソフトウェア分類器718それぞれに提供され、これらはそれぞれ、上の論述に従って訓練されていることがある。これらの分類器は、それぞれ出力758、出力760、及び出力762を生成する。これらの出力は、活動記録がソフトウェアに関係付けられているかどうかの予測でよく、例えば数値形式又はブール型を取ることがある。また、上で論じたように、(i)活動データ752、提供元データ754、及び説明データ756のうちの1つ又は複数と、(ii)ソフトウェアカタログとの間の単語数類似性770を決定することができる。一般に、ソフトウェア分類器714、ソフトウェア分類器716、ソフトウェア分類器718、及び単語数類似性770は、活動データ752、提供元データ754、及び説明データ756がソフトウェア取引と一貫性があるかどうかを予測する類似性関数であるとみなすことができる。
これらの出力は、それぞれ重み764、766、768、及び772によって変更される。したがって、重み764を出力758に適用することができ、重み766を出力760に適用することができ、重み768を出力762に適用することができ、重み772を単語数類似性770に適用することができる。これらの重みは、例えばML訓練728中に決定されていることがある。
変更された出力はロジスティック回帰774に提供され、ロジスティック回帰774は、集約した「ソフトウェア又は非ソフトウェア」分類776を生成する。ロジスティック回帰774は、例えばL2ロジスティック回帰であり得る。
ロジスティック回帰774が活動記録をソフトウェアに関係付けられるものとして分類した場合、プロセスは、MLモデルの第2の層に進む。ロジスティック回帰774が活動記録をソフトウェアに関係付けられていないものとして分類した場合、活動記録に関する分類手順は終了することがある。
図8は、動作800で多層MLモデルの第2の層を示す。第2の層は、提供元データ754及び説明データ756を入力として取る。いくつかの実施形態では、これは、動作750において第1の層への入力として使用されるのと同じデータでよい。場合によっては、説明データ756が省略されることがあり、提供元データ754のみが使用される。
トークン化802は、提供元データ754及び説明データ756を入力として取り、入力内の単語及び/又はn-gramに関連付けられた1つ又は複数のトークンからなるトークン化された出力を生成することができる。提供元データ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は、動作900時の第3の層を示す。第3の層900は、予測された提供元828及び説明データ756を入力として取る。いくつかの実施形態では、説明データ756は、動作750において第1の層への入力として使用されるのと同じデータでよい。
トークン化902は、説明データ756を入力として取り、入力内の単語及び/又はn-gramに関連付けられた1つ又は複数のトークンからなるトークン化された出力を生成することができる。説明データ756に対して他の処理、調整、又は編集が行われることもある。ここでも、ソフトウェアカタログ804は、すでにトークン化(及び/又は処理、調整、又は編集)されており、トークン化902の出力と比較することができる状態にあると仮定される。
提供元はすでに予測されているので、ソフトウェアカタログ804からのデータのサブセットをこの層で使用することができる。特に、予測された提供元からのアプリケーションタイトルのみを考慮に入れることができる。したがって、いくつかの実施形態では、第3の層は、予測された提供元828に関連付けられたアプリケーションを予測する、又はアプリケーションタイトルをまったく予測しない。更に、予測された提供元828が1つのアプリケーションタイトルのみに関連付けられている場合、このアプリケーションタイトルがデフォルトで選択されることがあり、したがって以下で論じられる規則のいずれかの適用を回避する。
しかし、予測された提供元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を生成することがある。一方、規則が編集距離に基づいている場合、決定された編集距離に反比例する確率を生成することがある。
規則命令806は、より高い精度及び/又はより低い計算要件を有する規則を最初に適用することができるように構成することができる。任意の規則が閾値(例えば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の実施形態は、そこに示されている特徴の任意の1つ又は複数を削除することによって単純化することもできる。更に、これらの実施形態は、前の図のいずれかにおける又は本明細書で述べる特徴、態様、及び/又は実装形態と組み合わせることができる。ステップ又はブロックのいくつか又は全ては、図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の単語セットに適用して、提供元名に関連付けられた1つ又は複数のアプリケーションに関するそれぞれのアプリケーションタイトル尤度を生成することと、(ii)それぞれのアプリケーションタイトル尤度に基づいてソフトウェアアプリケーションのアプリケーションタイトルを予測することとを含む。
ブロック1008は、活動記録がソフトウェアに関係していることを示す構成項目をデータベースに記憶することを含み、構成項目は、提供元名及びアプリケーションタイトルを含む属性を含む。
いくつかの実施形態では、複数のベイズモデルはそれぞれ、ラベル付きの活動記録で訓練され、各活動記録は、(i)活動訓練データ、提供元訓練データ、及び説明訓練データの1つ又は複数を、(ii)それぞれの活動記録がソフトウェアに関係付けられるかどうかの標示と関連付ける。
いくつかの実施形態では、複数のベイズモデルがそれぞれ、互いに独立して訓練されて適用される。
いくつかの実施形態では、活動記録がソフトウェアに関係している総尤度を予測することは、ロジスティック回帰モデルをそれぞれの尤度に適用することを含み、ロジスティック回帰モデルは、それぞれの重みをそれぞれの提供元名尤度に適用する。
いくつかの実施形態では、第1の層を適用することは、(i)活動データ、提供元データ、又は説明データのいずれかと、(ii)単語及び語句の所定のカタログとに現れる単語又は語句の数を決定することを更に含むことがあり、活動記録がソフトウェアに関係する総尤度を予測することも、単語や語句の数に基づく。いくつかの実施形態では、所定のカタログは、ソフトウェアアプリケーションタイトル、及びソフトウェアアプリケーションタイトルの提供元の提供元名を含む。
いくつかの実施形態では、所定のカタログは、ソフトウェアアプリケーションタイトル又は提供元名に関連付けられたURLも含む。
いくつかの実施形態では、複数のベイズモデルは各々、それぞれの閾値に関連付けられ、第1の層を適用することは、活動記録がソフトウェアに関係しているそれぞれの尤度をそれらのそれぞれの閾値と比較することを更に含む。いくつかの実施形態では、第1の層を適用することは、活動記録がソフトウェアに関係しているそれぞれの尤度の少なくとも1つと、そのそれぞれの閾値との間の比較が互いに所定の範囲内にあることに基づいて、手動分類のために活動記録にタグを付けることを更に含む。
いくつかの実施形態では、所定のカタログは、複数のグラウンドトゥルース提供元名を含み、複数の提供元名規則は、以下のものを含む。第2の単語セットが複数のグラウンドトゥルース提供元名の1つと完全一致するときにトリガーされる第1の規則、第2の単語セットが複数のグラウンドトゥルース提供元名の1つと共通のプレフィックスを共有するときにトリガーされる第2の規則、第2の単語セットが複数のグラウンドトゥルース提供元名の1つに含まれるときにトリガーされる第3の規則、又は第2の単語セットと複数のグラウンドトゥルース提供元名の1つとの間の編集距離に基づいてトリガーされる第4の規則。
いくつかの実施形態では、所定のカタログは、複数のグラウンドトゥルースアプリケーションタイトルを含み、複数のアプリケーションタイトル規則は、以下のものを含む。第3の単語セットが複数のグラウンドトゥルースアプリケーションタイトルの1つと完全一致するときにトリガーされる第1の規則、第2の単語セットが複数のグラウンドトゥルースアプリケーションタイトルの1つと共通のプレフィックスを共有するときにトリガーされる第2の規則、第3の単語セットが複数のグラウンドトゥルースアプリケーションタイトルの1つに含まれるときにトリガーされる第3の規則、又は第3の単語セットと複数のグラウンドトゥルースアプリケーションタイトルの1つとの間の編集距離の場合、トリガーされる第4の規則。
いくつかの実施形態では、複数のアプリケーションタイトル規則を第3の単語セットに適用することは、提供元名が正確に1つの関連付けられたアプリケーションタイトルを有することを決定することを含み、ソフトウェアアプリケーションのアプリケーションタイトルを予測することは、アプリケーションタイトルを、正確に1つの関連付けられたアプリケーションタイトルであると予測することを含む。
いくつかの実施形態では、提供元名規則命令は、計算の複雑さの昇順で複数の提供元名規則を配置する。いくつかの実施形態では、アプリケーションタイトル規則命令は、計算の複雑さの昇順で複数のアプリケーションタイトル規則を配置する。
いくつかの実施形態では、ソフトウェアアプリケーションの提供元名を予測することは、それぞれの重みをそれぞれの提供元名尤度に適用することを含み、それぞれの重みは、(i)提供元訓練データ及び説明訓練データを、(ii)複数の提供元名規則のうちのそれぞれの提供元名規則に関連付けるラベル付きの訓練データセットで第2の層を訓練することに基づいて決定される。
いくつかの実施形態では、ソフトウェアアプリケーションのアプリケーションタイトルを予測することは、それぞれの重みをそれぞれのアプリケーションタイトル尤度に適用することを含み、それぞれの重みは、(i)説明訓練データを、(ii)複数のアプリケーションタイトル規則のうちのそれぞれのアプリケーションタイトル規則に関連付けるラベル付きの訓練データセットで第3の層を訓練することに基づいて決定される。
VIII.例示的なソフトウェア調整ツール
上述したMLベースのソフトウェア分類の実施形態を使用して、ソフトウェアに関係付けられる取引を決定し、これらの取引におけるソフトウェアの提供元(発行元)及びアプリケーションタイトル(製品)を識別することができる。そのような決定及び識別は、請求書、領収書、クレジットカード請求書などの様々な情報源から行うことができる。
これらの取引はそれぞれ、金額(例えばドル単位)、企業内のコストセンタ、企業内の部署、及び/又はソフトウェアが購入又は展開された物理的な場所に関連付けられていることがある。この追加情報は、取引の情報源(請求書など)から自動的に決定される、又は取引に精通しているユーザによって手動で入力されることがある。例えば、取引の金額とその物理的な場所は、請求書から自動的に決定できることがあり、コストセンタ及び部署は、分類のためのシステムに請求書を入力又はスキャンするユーザが入力することがある。各取引は、買掛金(例えば、発行元から請求された取引)又は経費(例えば、企業の従業員の個人資金から購入され、したがって払い戻される取引)などのタイプに関連付けることもできる。
取引が分類されると(例えば上記のMLベースのシステムを使用して)、これらの分類をデータベース内の関連情報と組み合わせることができる。このデータの一部又は全ては、GUIを介して表示することができる。
本明細書での実施形態は、様々な形でGUIを表すことができる。例えば、サーバデバイスは、例えばHTMLとJAVASCRIPT(登録商標)との組合せを使用してGUIの表現を生成することがある。JAVASCRIPT(登録商標)は、クライアント側の実行可能コード、サーバ側の実行可能コード、又はそれら両方を含むことがある。サーバデバイスは、この表現をクライアントデバイスに送信する、又は他の形で提供することができ、クライアントデバイスは、そのローカルに定義されたルックアンドフィールに従ってこの表現を画面上に表示する。代替として、GUIの表現は、グラフィック出力を直接生成するためにクライアントデバイスが使用することができる中間形式(例えば、JAVA(登録商標)バイトコード)など他の形式を取ることができる。他の可能性もある。
更に、ボタン、メニュー、タブ、スライダ、チェックボックス、トグルなどのGUI要素を用いたユーザ対話は、それらの「選択」、「アクティブ化」、又は「作動」と呼ばれることがある。これらの用語は、キーボード、ポインティングデバイス、タッチスクリーン、又は別のメカニズムのどれを介してGUI要素が対話されているかに関係なく使用することができる。
ここで、図11は、分類されたソフトウェア取引の視覚的表現であるGUI1100を示す。GUI1100は、各取引に関連付けられた日付、説明、金額、決定された発行元、決定された製品、タイプ、及び部署に関する列を含むテーブルの形式である。したがって、列は、取引の個別のフィールドを表すことがある。ヘッダ行1102は、各列に関するタイトルを提供する。図示されている列は、わかりやすくするために完全なものではなく、より多くの列(例えばコストセンタ及び場所)を表示するために利用可能であり得る。
エントリ行1104、1106、1108、1110、1112、及び1114はそれぞれ、単一のソフトウェア取引を表す。例えば、エントリ行1104は、46000ドルの金額での「Wordwriter年間サブスクリプション」の購入を表し、ここで、発行元は「Wordwriter,Inc」として識別され、製品は「Wordwriter」として識別され、購入は買掛金によるものであり、購入を行った部署は「出版」である。別の例では、エントリ行1112は、87.00ドルの額での「SocialNetプレミアム料金」の購入を表し、ここで、発行元は「SocialNet」として識別され、製品は識別されておらず、購入は経費によるものであり、購入した部署は「人事」である。
各エントリ行は、その左側のチェックボックスにも関連付けられている。エントリ行のチェックボックスがチェックされているとき、ドロップダウンメニュー1116によって、エントリのより詳細な表示、エントリの編集、又はエントリの削除などのアクションをエントリに対して実行することができる。ヘッダ行1102のチェックボックスがチェックされた場合、全てのエントリ行が、それぞれに対して共通のアクションを実行するために選択されることがある。
コントロール1118は、ユーザが、GUI1100のページごとに表示される行数を構成することができる。コントロール1118は、ユーザがこれらのページ間をナビゲートすることも可能にする。
検索ボックス1120は、ユーザがテキスト検索用語を入力できるようにする。それに応じて、システムは、GUI1100のテーブルを表示することができるが、その用語を含む又は一致する少なくとも1つのフィールドを有するエントリ行のみを表示する。例えば、ユーザが検索ボックス1120に「チャット」と入力した場合、GUI1100は、エントリ行1106及び1108のみを表示することができる。この検索用語が、これらのエントリ行の説明、発行元、及び製品の列内のテキストに一致するからである。
中規模から大規模の企業は、大規模なソフトウェア購入を行うことがあり、月に数百又は数千の取引に容易に達することがある。その結果、このソフトウェアの利用及びコストを追跡することは、煩雑であり費用のかかる問題である。
例えば、十分に大きい組織では、連絡し合わない異なる部署がそれぞれ、同じソフトウェアについて企業全体にわたるライセンスを購入することがある。したがって、企業は、このソフトウェアについて二重でライセンスを取得しており、重複したライセンスに費用を浪費している。
別のシナリオでは、異なる部署が、同じ機能のために異なるソフトウェアツールを使用することがある。したがって、3つの異なる部署が3つの異なるオンラインチャットプログラムを使用する可能性がある。これらの3つのチャットプログラムは互いに互換性がなく、したがって部署間のチャットセッションを促進できない可能性が高いだけでなく、企業は、それらのうちの2つをなくし、3つの部署全てにそのようなプログラムを1つだけ使用させることによって、ライセンスコストを削減することが可能になり得る。
更に別のシナリオでは、2つの企業が合併する、又は一方が他方を買収することがある。これらの企業はそれぞれ、様々な機能に関して異なるソフトウェアソリューションのライセンスを取得していることがある。しかし、企業はライセンスが取得されているソフトウェアの正確なインベントリを有していないことがあるので、この冗長性をなくし、それにより全体的なソフトウェア支出を削減するには、数か月又は数年かかることがある。
これら及び他の問題に対処するために、ソフトウェア資産管理ツールが導入されている。ソフトウェア資産管理ツールは、購入及び/又は展開されたソフトウェア、並びにその資格の数及びタイプを企業が追跡できるようにする機能を含む。企業がリモートネットワーク管理プラットフォーム320を利用するとき、そのようなツールは、ソフトウェア及びその資格の表現を、内部の計算インスタンス(例えば計算インスタンス322)のデータベースに記憶することができる。したがって、WebベースのGUIによって、企業は、そのソフトウェア資産のインベントリを維持することができることがある。
この論述の目的で、特定のソフトウェアパッケージは、ソフトウェアの発行元、製品、バージョン、及びエディションを含むソフトウェアモデルによって表されることがある。場合によっては、ソフトウェアモデルは、発行元及び製品のみなど、より多数又はより少数の情報を含むことがある。例えば、エントリ行1110で参照されるソフトウェアパッケージは、発行元「ABC Software」、製品名「PhotoEditor」、バージョン3.1、及びエディション1.0を有することがある。
また、この論述の目的で、資格は、企業が購入しているライセンスの数及びこれらのライセンスのタイプであり得る。ライセンスタイプは、地理的ベース(例えばサイト全体又はワールドワイド)、デバイスごと、プロセッサごと、コアごと、ユーザごと、同時ユーザごとなどでよい。例えば、企業がPhotoEditorのデバイス当たり5回のインストールに関する資格を購入していることがある。この場合、企業は、このソフトウェアパッケージを5つ以下の異なるコンピューティングデバイスにインストールすることを許可されている。
更に、ソフトウェア資産管理ツールは、図5A及び図5Bの文脈で述べる発見手順によって促進することができる。これらの手順は、企業内のデバイスにインストールされているソフトウェアを識別することが可能であり得る(即ち、企業は管理対象ネットワーク300によって表されることがある)。次いで、発見されたソフトウェアをソフトウェア資産管理データベースでの資格と比較して、企業のライセンスが過少であるか、ライセンスが過剰であるか、又は適切にライセンスされているかを判断することができる。
それにもかかわらず、発見手順は、インストールされている全てのソフトウェアパッケージを識別することができないことがある。例えば、いくつかのクライアントデバイス(例えばラップトップ及びモバイルデバイス)は、発見の実行中に管理対象ネットワーク上にないことがあり、インストールされているソフトウェアが過少に数えられる可能性がある。更に、管理対象ネットワークによって使用されるいくつかのソフトウェアパッケージは、実際には管理対象ネットワークにインストールされていないことがある。代わりに、サードパーティ及び/又はクラウドベースの提供元が運営するネットワークにインストールされることがある。
結局のところ、ソフトウェア資産管理ツールを使用しても、見えないものを管理することはできない。したがって、上述して図11に例示したソフトウェア分類の実施形態をソフトウェア資産管理ソリューションに組み込むことにより、ソフトウェア資産管理ソリューションの有効性を改良することができる。
特に、取引に基づくソフトウェア分類は、ソフトウェア資産管理ツールによって管理されていないソフトウェアを識別することがある。この管理されていないソフトウェアは、企業側の追加の、冗長な、又は無駄な支出となり得る。更に、GUIを作成することができ、これは、ユーザが、コストセンタ、部署、又は場所ベースで、特定のタイプの追加の、冗長な、又は無駄な支出(例えば、企業がすでにサイト全体でライセンス取得しているソフトウェアに関する個人的なライセンスを企業の従業員が購入する)を迅速に識別できるようにする。更に、追加のGUIは、企業の支出が多いソフトウェア、又は企業が複数の異なるソフトウェアパッケージのライセンスを取得しているソフトウェアのカテゴリをユーザが識別する助けとなり得る。
A.ソフトウェア支出検出のためのグラフィカルユーザインターフェース
図12Aは、ソフトウェア支出の検出を容易にするGUI1200を示す。特に、GUI1200、及び本明細書で述べる他のGUIは、ユーザが、管理されたソフトウェアと管理されていないソフトウェアとの両方に関するソフトウェア支出を迅速に決定し、この支出の源を決定するために掘り下げることを可能にする。これらのGUIから、ユーザは、過剰にライセンスされたソフトウェア及び冗長なソフトウェアパッケージへの支出を削減できる戦略を識別できることがある。
これらの図に示されている額は、図ごとに又は複数の図にわたって一貫していることも一貫していないこともあることに留意されたい。これらの図中の額は説明のためのものであり、それらの間の関係については以下で述べることがある。
GUI1200は、ペイン1202、1206、及び1212を含む。ペイン1202は、日付範囲1204を含むタイトルバーであり、日付範囲1204は、2018年4月1日~2019年3月31日の範囲が選択されて示されている。日付範囲1204は、例えば、過去1週間、過去1か月、前四半期、過去1年、過去2年、過去3年、ユーザ設定範囲などを含む範囲を選択するようにユーザ調整可能であり得る。そのような範囲が選択されると、GUI1200は、この範囲からのデータを含むように更新されることがある。例えば、日付範囲が2017年4月1日~2019年3月31日に変更された場合、ペイン1206及び1212は、新たに指定された2年範囲からのデータを反映するように動的に更新することができる。
ペイン1206は、スライダ1208及びメニュー1210を含む。左側に位置決めされて示されているスライダ1208は、メニュー1210及び/又はペイン1212に全てのソフトウェアが示されるか、又は管理されていないソフトウェアのみが示されるかを制御する。この機能は、以下で図12Cに示される。
メニュー1210は、上述した分類手順によって支出が見つかったソフトウェアパッケージの展開可能及び折畳み可能なリストを含む。メニュー1210は、発行元、それぞれについて検出された合計の支出、及びそれぞれについての状態の畳んだリストを含む。検出された合計の支出は、その発行元に帰属するその全ての製品にわたる全ての支出の和であり得る。状態は、発行元の支出の任意のものが管理されていないソフトウェアに帰属するかどうかを示すことがある。その場合、感嘆符を丸で囲んだ記号が状態列に示されることがある。特に、メニュー1210では、Cardbord以外の各発行元は、その状態列にそのようなインジケータを有する。
各発行元は、発行元の名前の左側に配置されたそれぞれのドロップダウン矢印に関連付けることもできる。アクティブにされると、この矢印が展開され、関連する発行元の下にサブメニューを作成し、サブメニューは、発行元によって提供されている製品(ソフトウェアパッケージ又はサービス)のリストを含む。この機能は、以下で図12Bに示される。
メニュー1210の発行元リストの一番上は、「全ての発行元」に関するエントリである。このエントリに関するコスト及び状態の列は、分類されたソフトウェアパッケージの全ての発行元に関する合計のソフトウェア支出、及びこの支出の任意のものが管理されていないソフトウェアに帰属するかどうかをそれぞれ示す。
ペイン1212は、日付範囲1204によって示される期間にわたるソフトウェア支出のチャート1214を含む。図示されている実施形態は、買掛金及び費用に帰属する支出額を指定する積み上げ棒グラフである。買掛金は、各バーの経費額の上方に現れる。他のタイプのチャート又はグラフも可能であり得る。上記のチャート1214は、全ての発行元にわたる支出の要約である。この支出の和(33,372,579ドル)は、買掛金支出(27,827,654ドル)と経費支出(5,544,925ドル)とに分けられる。また、管理されていない支出の合計(8,824,490ドル)も示されている。
GUI1200は、ソフトウェア資産管理ツールによって管理されていないソフトウェアパッケージ、及び管理されていない支出額をユーザが迅速に決定できるようにする。これにより、管理されていないソフトウェアが管理されていない理由、並びにこれら及び他のソフトウェアパッケージに費やされた金額が正当であるかどうかを更に調査することが容易になる。
上述したように、図12Bは、ABC Softwareに関連付けられたメニュー1210のドロップダウン矢印がアクティブにされているGUI1200を示す。それに応じて、ABC Softwareに費やされた390万ドルがPhotoEditorに関する270万ドル、Catalystに関する110万ドル、クラウドサービスに関する10万ドルに分けられることを示すサブメニューが現れる。特に、PhotoEditor及びCatalystソフトウェアは管理されているが、クラウドサービスのラインアイテムは管理されていない。これは、1人若しくは複数の個人又は1つ若しくは複数のグループがABC Softwareと企業との間のより広範な(例えば企業全体の)ライセンス契約の外でABC Softwareからクラウドサービスを購入及び/又はライセンス取得している可能性があることを示すことがある。したがって、これらの購入について調査を行って、クラウドサービスが実際に企業に必要かどうか、必要な場合には既存の契約でカバーされているかどうかを判断することができる。
また上述したように、図12Cは、スライダ1208が右側に配置されたGUI1200を示す。したがって、メニュー1210の発行元は、少なくともいくつかの管理されていないソフトウェアを有する発行元のみを表示するようにフィルタされる。これにより、ユーザが、この管理されていないソフトウェアの問題の対処に迅速に注意を向けることができる。
これらの機能に加えて、図12Dは、メニュー1210からクラウドサービスが選択されたGUI1200を示す。例えば、ユーザは、このメニューエントリをクリックする、又は他の方法でアクティブにすることができ、ペイン1212は、図12Dに示されるように更新されることがある。特に、ペイン1212の上部にある支出額は、ABC Softwareからのクラウドサービス製品のみに焦点を当てるように更新されている。ここで、日付範囲1204によって示される期間中に合計100,000ドルがクラウドサービスに費やされたことを示す。これらは全て売掛金ではなく経費によるものであり、これらも全て管理されていない。チャート1214は、クラウドサービスへの経時的な支出を示すように更新されることもある。図12Dの例は、管理されていないソフトウェア及びあり得る余剰の支出をユーザが簡単に識別できるようにするために、分類されたソフトウェア取引を表すデータを表示することができる方法を更に示す。
図12E、12F、及び12Gは、GUI1200でのペイン1212の拡大図を示す。特に、サブペイン1220は、ペイン1212の下に現れるように示されている。サブペイン1220は、チャート1214に示されるソフトウェア支出に関する追加の詳細を提供し、ソフトウェア取引、コストセンタ、部署、及び場所のための選択可能なタブを含む。いくつかの実施形態では、これらのタブの正確に1つを一度に選択することができ、そうすることにより、タブの下のサブペイン1220の部分に更なる情報を表示させることができる。
図12Eでは、コストセンタタブが選択されて示されている。したがって、チャート1214に示されている支出は、サブペイン1220のコストセンタによって分けられている。企業では、コストセンタが、支出の論理的なグループとなり得る。各コストセンタはドロップダウン矢印によって表され、コストセンタに属する個々のソフトウェア取引がそれぞれの矢印の下に表示される。例えば、Product UXコストセンタを使用して2つのソフトウェア取引が行われた。それぞれについて、日付、説明、金額(コスト)、発行元、製品、及びタイプが示される。特に、それらのソフトウェア取引について発行元及び製品は全て同じであるが、説明が異なるものもある。これは、取引分類器が、ソフトウェアの様々な説明を適切な発行元及び製品に正しく割り当てるのに十分な柔軟性を有することがあることを反映している。
図12Fでは、部署タブが選択されて示されている。したがって、チャート1214に示されている支出は、サブペイン1220での部署に分けられている。企業では、部署は、職務記述書に基づいた個人のグループであり得る。各部署はドロップダウン矢印で表され、その部署に属する個々のソフトウェア取引がそのそれぞれの矢印の下に表示される。例えば、3つのソフトウェア取引が、R&Dコストセンタによって行われた。それぞれについて、日付、説明、金額、発行元、製品、及びタイプが示される。
図12Gには、場所タブが選択されて示されている。したがって、チャート1214に示されている支出は、サブペイン1220の場所によって分けられている。企業は、都市、国、又は世界中の様々な物理的な場所にオフィスを構えることがある。各場所はドロップダウン矢印で表され、その場所に属する個々のソフトウェア取引がそのそれぞれの矢印の下に表示される。例えば、5つのソフトウェア取引が、企業のシカゴオフィスで行われた。それぞれについて、日付、説明、金額、発行元、製品、及びタイプが示される。
選択されているソフトウェア取引タブを表示するGUIは、図には明示的に示されていない。しかし、そのようなGUIは、図12E、12F、及び12Gの出力と同様の出力を示すことがあるが、例えば図11のソフトウェア取引コンテンツを含む。
B.ソフトウェア重複検出のためのグラフィカルユーザインターフェース
ソフトウェア支出が発行元及び製品の観点から分類されると、ソフトウェアは更にカテゴリに分類されることがある。これらのカテゴリは事前定義されることがあり、各発行元/製品の対は、1つのそのようなカテゴリに関連付けられることがある。例示的なカテゴリは、リレーショナルデータベース、人事管理、CRM、チームコラボレーション、ビデオ会議などを含む。
本明細書での実施形態は、これらのカテゴリ内で重複するソフトウェアを識別することを容易にする。例えば、企業全体でパッケージを1つだけ使用することで企業のニーズが満たされてコストを節約できるとき、企業は、知らずに複数のチームコラボレーションソフトウェアパッケージを使用し、それぞれにライセンス料又はサブスクリプション料を支払っていることがある。特に、カテゴリごとのパッケージに費やされた金額と、カテゴリごとのパッケージの数を検査することによって、統合することができる重複するソフトウェアパッケージを識別する方法がある。
図13Aは、これらの方法それぞれに関するチャートを含むGUI1300を示す。ペイン1302は、チャート内で、ソフトウェアのカテゴリごとの支出を最高額から最低額の順にランク付けする。水平棒グラフがペイン1302に表示されているが、他のタイプのチャート又はグラフも可能であり得る。例えば、570万ドルがリレーショナルデータベースに費やされ、100万ドルがプロジェクト管理に費やされた。したがって、単にペイン1302の情報を考慮すると、企業によって使用されるリレーショナルデータベースソフトウェアパッケージの数を統合する方が、プロジェクト管理ソフトウェアパッケージの数を統合するよりも有益であるように思われる。
一方、ペイン1304は、別のチャートで、カテゴリごとのソフトウェアパッケージの数を最大から最小にランク付けする。水平棒グラフがペイン1304に表示されているが、他のタイプのチャート又はグラフも可能であり得る。特に、このペインは、企業が6つの異なるプロジェクト管理ソフトウェアパッケージ及び2つの異なるリレーショナルデータベースソフトウェアパッケージを購入、ライセンス取得、又はサブスクライブしていることを示す。その結果、企業が、プロジェクト管理ソフトウェアパッケージの数を統合して減らして1つ又は2つにすることが有益であり得て、(i)企業内のほとんど又は全ての部署がより簡単にコラボレーションでき、コストが削減される。それにもかかわらず、企業がリレーショナルデータベースパッケージの数を2つから1つに統合することも、大幅な節約になり得るので有益であり得る。
これらのチャートの各バー、又はそのラベルは、アクティブにされると、関連するカテゴリに関する詳細情報を表示するようにGUI1300を変更するリンクであり得る。一例として、図13Bは、ペイン1304でプロジェクト管理バーをアクティブにした結果を示す。チャートは、6つのプロジェクト管理ソフトウェアパッケージそれぞれによって支出を分けるテーブルに置き換えられている。特に、各パッケージ(BugTracker、Weekday.com、DayPlanner、PeopleMgr、TeamBuilder、ChartWeave)について、そのパッケージに関する支出を表す取引がリストされている。更に、リストされている各パッケージの左側にあるドロップダウン矢印は、これらのパッケージに帰属する取引が示されるかどうかをそれぞれ制御する。図13Bには、全ての取引が示されているが、ユーザがドロップダウン矢印の1つ又は複数をアクティブにする場合、関連する取引を非表示にすることができる。
取引ごとの同様の内訳は、ペイン1302のバーに関連付けられたリンクをアクティブにすることで表示可能であり得る。更に、ソフトウェアカテゴリ(そのカテゴリ内のソフトウェアパッケージを表示するためにそれぞれ展開可能である)の完全なリストが、ペイン1302及び1304の下に現れることがある。
有利には、GUI1300は、冗長であり得るソフトウェアパッケージと、そのようなパッケージの統合に関連するコスト削減をユーザが迅速に決定できるようにする。多くの中規模及び大規模な企業では、これらの冗長性は、本明細書での実施形態なしでは分からない、又は発見できない可能性がある。例えば、2つの大企業が合併するシナリオでは、これらの企業はそれぞれ、多くの目的で異なるソフトウェアパッケージを使用していることがある。以前は、2つの企業間での全ての冗長なソフトウェアパッケージを識別するのに何年もかかることがあった。しかし、本明細書での実施形態では、これらの冗長性は、数日又は数週間で識別することができる。
IX.例示的なソフトウェア冗長性動作
図14は、例示的実施形態によるプロセス又は方法を示すフローチャートである。この方法は、本明細書で述べる多層MLモデルの実行時フェーズに関係することがある。この方法は、コンピューティングデバイス100などのコンピューティングデバイス、及び/又はサーバクラスタ200などのコンピューティングデバイスのクラスタによって行うことができる。しかし、この方法は、他のタイプのデバイス又はデバイスサブシステムによって行うこともできる。例えば、この方法は、ラップトップ又はタブレットデバイスなどのポータブルコンピュータによって行うことができる。
図14の実施形態は、そこに示されている特徴の任意の1つ又は複数を削除することによって単純化することもできる。更に、これらの実施形態は、前の図のいずれかにおける又は本明細書で述べる特徴、態様、及び/又は実装形態と組み合わせることができる。
ブロック1400は、サーバデバイスによって、及びデータベースから、(i)ソフトウェアパッケージそれぞれに関連付けられた発行元、タイトル、及びカテゴリを含む、ソフトウェア管理ツールによって管理される複数のソフトウェアパッケージと、(ii)ソフトウェア活動それぞれに関連付けられた説明及び金額を含む複数のソフトウェア活動(例えば取引)との表現を取得することを含むことがある。
ブロック1402は、サーバデバイスによって、ソフトウェア活動の機械学習ベースの分類を取得することを含むことがあり、機械学習ベースの分類は、説明からソフトウェア活動の発行元、タイトル、及びカテゴリを予測する。
ブロック1404は、サーバデバイスによって、(i)ソフトウェア管理ツールによって管理されていない非管理ソフトウェアパッケージ、及び(ii)ソフトウェアパッケージの少なくともいくつかに関連付けられた金額を識別するために、複数のソフトウェアパッケージを機械学習ベースの分類と比較することを含むことがある。
ブロック1406は、サーバデバイスによって、クライアントデバイスに、グラフィカルユーザインターフェースの表現を送信することを含むことがあり、グラフィカルユーザインターフェースは、第1のペイン及び第2のペインを示し、第1のペインは、各発行元に帰属するソフトウェアパッケージに関連付けられたそれぞれの発行元合計金額と、非管理ソフトウェアパッケージの任意のものが各発行元に帰属するかどうかとを含む、発行元の展開可能なリストを含み、第2のペインは、所定の期間の単位にわたって発生した金額を視覚的に示すチャートを含む。
いくつかの実施形態では、発行元の展開可能なリストにより、そのリスト中の各特定の発行元を展開して、その特定の発行元に帰属するソフトウェアパッケージ、その特定の発行元に帰属するソフトウェアパッケージに関連付けられたそれぞれの金額、及びその特定の発行元に帰属する各ソフトウェアパッケージが管理されていないかどうかを表示する。
いくつかの実施形態では、第1のペインはスライダ又はボタンも含み、スライダ又はボタンは、アクティブにされると、発行元の展開可能なリストをフィルタリングして、非管理ソフトウェアパッケージのうちの少なくとも1つを有する発行元のみをリストする。
いくつかの実施形態では、所定の期間の単位にわたって生じた金額を視覚的に示すチャートは、棒グラフ形式で月ごとの金額を表示する。
いくつかの実施形態では、ソフトウェア活動は、ソフトウェア取引であり、金額は、ソフトウェア取引に関連付けられたコストである。
いくつかの実施形態では、発行元の展開可能なリストにより、そのリスト中の特定の発行元をそれぞれ選択することができ、特定の発行元を選択すると、所定の期間の単位にわたって生じた金額を視覚的に示すチャートが、特定の発行元に関連付けられた金額のみを表す。
いくつかの実施形態では、第2のペインは、コストセンタに関する第1のタブ、部署に関する第2のタブ、及び場所に関する第3のタブを備えたタブ付きインターフェースを含み、第1のタブをアクティブにすると、関連するコストセンタごとのソフトウェア活動が表示され、第2のタブをアクティブにすると、関連する部署ごとのソフトウェア活動が表示され、第3のタブをアクティブにすると、関連する場所ごとのソフトウェア活動が表示される。
いくつかの実施形態では、動作は、以下のことも含む。(i)カテゴリについて、合計のカテゴリ金額を決定する。ここで、合計のカテゴリ金額は、各カテゴリでのソフトウェアパッケージに関連付けられた金額の和である。(ii)カテゴリについて、合計のパッケージ数を決定する。ここで、合計のパッケージ数は、各カテゴリでのソフトウェアパッケージの数である。(iii)クライアントデバイスに、第3のペイン及び第4のペインを示すグラフィカルユーザインターフェースの更新されたバージョンの更新された表現を送信する。ここで、第3のペインは、合計のカテゴリ金額及びそれらの関連するカテゴリの第1のランキングを降順で視覚的に示す第2のチャートを含み、第4のペインは、合計のパッケージ数及びそれらの関連するカテゴリの第2のランキングを降順で視覚的に示す第3のチャートを含む。
いくつかの実施形態では、第2のチャートに表示される合計のカテゴリ金額は、関連するカテゴリのソフトウェアパッケージごとの取引の第1のリストを更に表示するために選択可能であり、第2のチャートに表示される合計のパッケージ数は、関連するカテゴリのソフトウェアパッケージごとの取引の第2のリストを更に表示するために選択可能である。
いくつかの実施形態では、金額は、買掛金取引又は経費取引のどちらから導出されたかに基づいて個別に表される。
X.結語
本開示は、本出願に記載された特定の実施形態の観点から限定されるものではなく、種々の態様の例示として意図されている。多くの変更及び変形は、当業者に明らかであるように、その範囲から逸脱することなく行うことができる。本明細書に説明されているものに加えて、開示の範囲内で機能的に等価な方法及び装置は、上記の説明から当業者には明らかであろう。そのような変更及び変形は、添付の特許請求の範囲内に含まれることを意図されている。
上記の詳細な説明は、添付の図面を参照して、開示されているシステム、装置、及び方法の種々の特徴及び動作について説明したものである。本明細書に説明された及び図面における例示的実施形態は、限定するように意図されていない。本明細書で示される主題の範囲から逸脱することなく、他の実施形態が使用されてよく、他の変更がなされてよい。本開示の態様は、本明細書に一般的に記載され図示されるように、様々な異なる形態で配置、置換、結合、分離、設計され得ることは容易に理解されるであろう。
図面における及び本明細書で説明されているメッセージフロー図、シナリオ、及びフローチャートのいずれか又は全てに関して、各ステップ、ブロック、及び/又は通信は、例示的実施形態に従って情報の処理及び/又は情報の送信を表すことができる。代替実施形態は、これらの例示的実施形態の範囲内に含まれる。これらの代替実施形態において、例えば、ステップ、ブロック、送信、通信、要求、応答、及び/又はメッセージとして説明される動作は、関連する機能に応じて、実質的に同時又は逆の順序を含めて、図示又は説明されるものと異なる順序で実行され得る。更に、本明細書で説明されたメッセージフロー図、シナリオ、及びフローチャートのいずれかと共に、より多い又はより少ないブロック及び/又は動作が使用されてよく、これらのメッセージフロー図、シナリオ、及びフローチャートは、部分的又は全体で相互に組み合わされ得る。
情報の処理を表すステップ又はブロックは、本明細書に記載の方法又は技術の特定の論理機能を実行するように構成できる回路に対応することができる。代替的又は追加的に、情報の処理を表すステップ又はブロックは、モジュール、セグメント、又はプログラムコードの一部(関連データを含む)に対応することができる。プログラムコードは、方法又は技術における特定の論理操作又はアクションを実装するためにプロセッサによって実行可能である1つ又は複数の命令を含むことができる。プログラムコード及び/又は関連データは、RAM、ディスクドライブ、ソリッドステートドライブ、又は他の記憶媒体を含む記憶装置など、任意のタイプのコンピュータ可読媒体に記憶され得る。
ンピュータ可読媒体は更に、プログラムコード及び/又はデータをより長期間記憶する非一時的コンピュータ可読媒体が含まれ得る。したがって、コンピュータ可読媒体には、例えば、ROM、光又は磁気ディスク、ソリッドステートドライブ、コンパクトディスク読取り専用メモリ(CD-ROM)のような、二次又は永続的な長期記憶装置が含まれ得る。コンピュータ可読媒体はまた、他の任意の揮発性又は不揮発性の記憶システムとすることもできる。コンピュータ可読媒体は、例えば、コンピュータ可読記憶媒体又は有形記憶装置であるとみなされ得る。
更に、1つ又は複数の情報伝送を表すステップ又はブロックは、同じ物理装置内のソフトウェア及び/又はハードウェアモジュール間の情報伝送に対応することができる。しかしながら、他の情報伝送は、異なる物理装置におけるソフトウェアモジュール及び/又はハードウェアモジュール間にあり得る。
図面に示された特定の配置は、限定するものとみなされるべきではない。他の実施形態は、所与の図に示される各要素についてより多い又はより少ない要素を含み得ると理解されるべきである。更に、例示された要素のいくつかは、結合又は省略され得る。更に、例示的実施形態は、図面に示されていない要素を含むことができる。
様々な態様及び実施形態が本明細書に開示されているが、他の態様及び実施形態は当業者には明らかであろう。本明細書に開示された様々な態様及び実施形態は例示を目的としており、限定するものではなく、真の範囲は添付の特許請求の範囲によって示される。

Claims (40)

  1. (i)ソフトウェアパッケージそれぞれに関連付けられた発行元、タイトル、及びカテゴリを含む、ソフトウェア管理ツールによって管理される複数のソフトウェアパッケージと、(ii)ソフトウェア取引それぞれに関連付けられた説明及び金額を含む複数のソフトウェア取引との表現を含むデータベースと、
    サーバデバイスとを含むシステムであって、前記サーバデバイスが、
    前記ソフトウェア取引の機械学習ベースの分類を取得することであって、前記機械学習ベースの分類が、前記説明から前記ソフトウェア取引の前記発行元、タイトル、及びカテゴリを予測する、取得することと、
    (i)前記ソフトウェア管理ツールによって管理されていない非管理ソフトウェアパッケージ、及び(ii)前記ソフトウェアパッケージの少なくともいくつかに関連付けられた金額を識別するために、前記複数のソフトウェアパッケージを前記機械学習ベースの分類と比較することと、
    クライアントデバイスに、グラフィカルユーザインターフェースの表現を送信することであって、前記グラフィカルユーザインターフェースが、第1のペイン及び第2のペインを示し、前記第1のペインが、前記発行元それぞれに帰属する前記ソフトウェアパッケージに関連付けられたそれぞれの発行元合計金額と、前記非管理ソフトウェアパッケージの任意のものが前記発行元それぞれに帰属するかどうかとを含む、前記発行元の展開可能なリストを含み、前記第2のペインが、所定の期間の単位にわたって発生した前記金額を視覚的に示すチャートを含む、送信することとを行うように構成された、システム。
  2. 前記発行元の前記展開可能なリストにより、前記リスト中の各特定の発行元を展開して、前記特定の発行元に帰属する前記ソフトウェアパッケージ、前記特定の発行元に帰属する前記ソフトウェアパッケージに関連付けられたそれぞれの金額、及び前記特定の発行元に帰属する前記ソフトウェアパッケージそれぞれが管理されていないかどうかを表示する、請求項1に記載のシステム。
  3. 前記第1のペインがスライダ又はボタンも含み、前記スライダ又はボタンが、アクティブにされると、前記発行元の前記展開可能なリストをフィルタリングして、前記非管理ソフトウェアパッケージのうちの少なくとも1つを有する発行元のみをリストする、請求項1に記載のシステム。
  4. 前記所定の期間の単位にわたって生じた前記金額を視覚的に示す前記チャートが、棒グラフ形式で月ごとの前記金額を表示する、請求項1に記載のシステム。
  5. 前記金額が、買掛金取引又は経費取引のどちらから導出されたかに基づいて個別に表される、請求項4に記載のシステム。
  6. 前記金額が、前記ソフトウェア取引に関連付けられたコストである、請求項1に記載のシステム。
  7. 前記発行元の前記展開可能なリストにより、前記リスト中の特定の発行元をそれぞれ選択することができ、前記特定の発行元を選択すると、前記所定の期間の単位にわたって生じた前記金額を視覚的に示す前記チャートが、前記特定の発行元に関連付けられた金額のみを表す、請求項1に記載のシステム。
  8. 前記第2のペインが、コストセンタに関する第1のタブ、部署に関する第2のタブ、及び場所に関する第3のタブを備えたタブ付きインターフェースを含み、前記第1のタブをアクティブにすると、関連するコストセンタごとの前記ソフトウェア取引が表示され、前記第2のタブをアクティブにすると、関連する部署ごとの前記ソフトウェア取引が表示され、前記第3のタブをアクティブにすると、関連する場所ごとの前記ソフトウェア取引が表示される、請求項1に記載のシステム。
  9. 前記サーバデバイスが、
    前記カテゴリについて、合計のカテゴリ金額を決定することであって、前記合計のカテゴリ金額が、前記カテゴリそれぞれでの前記ソフトウェアパッケージに関連付けられた前記金額の和である、決定することと、
    前記カテゴリについて、合計のパッケージ数を決定することであって、前記合計のパッケージ数が、前記カテゴリそれぞれでの前記ソフトウェアパッケージの数である、決定することと、
    前記クライアントデバイスに、第3のペイン及び第4のペインを示す前記グラフィカルユーザインターフェースの更新されたバージョンの更新された表現を送信することであって、前記第3のペインが、前記合計のカテゴリ金額及びそれらの関連するカテゴリの第1のランキングを降順で視覚的に示す第2のチャートを含み、前記第4のペインが、前記合計のパッケージ数及びそれらの関連するカテゴリの第2のランキングを降順で視覚的に示す第3のチャートを含む、送信することとを行うように更に構成された、請求項1に記載のシステム。
  10. 前記第2のチャートに表示される前記合計のカテゴリ金額が、前記関連するカテゴリのソフトウェアパッケージごとの取引の第1のリストを更に表示するために選択可能であり、前記第2のチャートに表示される合計のパッケージ数が、前記関連するカテゴリのソフトウェアパッケージごとの取引の第2のリストを更に表示するために選択可能である、請求項9に記載のシステム。
  11. サーバデバイスによって、及びデータベースから、(i)ソフトウェアパッケージそれぞれに関連付けられた発行元、タイトル、及びカテゴリを含む、ソフトウェア管理ツールによって管理される複数のソフトウェアパッケージと、(ii)ソフトウェア取引それぞれに関連付けられた説明及び金額を含む複数のソフトウェア取引との表現を取得することと、
    前記サーバデバイスによって、前記ソフトウェア取引の機械学習ベースの分類を取得することであって、前記機械学習ベースの分類が、前記説明から前記ソフトウェア取引の発行元、タイトル、及びカテゴリを予測する、取得することと、
    前記サーバデバイスによって、(i)前記ソフトウェア管理ツールによって管理されていない非管理ソフトウェアパッケージ、及び(ii)前記ソフトウェアパッケージの少なくともいくつかに関連付けられた金額を識別するために、前記複数のソフトウェアパッケージを前記機械学習ベースの分類と比較することと、
    前記サーバデバイスによって、クライアントデバイスに、グラフィカルユーザインターフェースの表現を送信することであって、前記グラフィカルユーザインターフェースが、第1のペイン及び第2のペインを示し、前記第1のペインが、前記発行元それぞれに帰属する前記ソフトウェアパッケージに関連付けられたそれぞれの発行元合計金額と、前記非管理ソフトウェアパッケージの任意のものが前記発行元それぞれに帰属するかどうかとを含む、前記発行元の展開可能なリストを含み、前記第2のペインが、所定の期間の単位にわたって発生した前記金額を視覚的に示すチャートを含む、送信することとを含むコンピュータ実装方法。
  12. 前記発行元の前記展開可能なリストにより、前記リスト中の各特定の発行元を展開して、前記特定の発行元に帰属する前記ソフトウェアパッケージ、前記特定の発行元に帰属する前記ソフトウェアパッケージに関連付けられたそれぞれの金額、及び前記特定の発行元に帰属する前記ソフトウェアパッケージそれぞれが管理されていないかどうかを表示する、請求項11に記載のコンピュータ実装方法。
  13. 前記第1のペインがスライダ又はボタンも含み、前記スライダ又はボタンが、アクティブにされると、前記発行元の前記展開可能なリストをフィルタリングして、前記非管理ソフトウェアパッケージのうちの少なくとも1つを有する発行元のみをリストする、請求項11に記載のコンピュータ実装方法。
  14. 前記所定の期間の単位にわたって生じた前記金額を視覚的に示す前記チャートが、棒グラフ形式で月ごとの前記金額を表示する、請求項11に記載のコンピュータ実装方法。
  15. 前記金額が、前記ソフトウェア取引に関連付けられたコストである、請求項11に記載のコンピュータ実装方法。
  16. 前記発行元の前記展開可能なリストにより、前記リスト中の特定の発行元をそれぞれ選択することができ、前記特定の発行元を選択すると、前記所定の期間の単位にわたって生じた前記金額を視覚的に示す前記チャートが、前記特定の発行元に関連付けられた金額のみを表す、請求項11に記載のコンピュータ実装方法。
  17. 前記第2のペインが、コストセンタに関する第1のタブ、部署に関する第2のタブ、及び場所に関する第3のタブを備えたタブ付きインターフェースを含み、前記第1のタブをアクティブにすると、関連するコストセンタごとの前記ソフトウェア取引が表示され、前記第2のタブをアクティブにすると、関連する部署ごとの前記ソフトウェア取引が表示され、前記第3のタブをアクティブにすると、関連する場所ごとの前記ソフトウェア取引が表示される、請求項11に記載のコンピュータ実装方法。
  18. 前記カテゴリについて、合計のカテゴリ金額を決定することであって、前記合計のカテゴリ金額が、前記カテゴリそれぞれでの前記ソフトウェアパッケージに関連付けられた前記金額の和である、決定することと、
    前記カテゴリについて、合計のパッケージ数を決定することであって、前記合計のパッケージ数が、前記カテゴリそれぞれでの前記ソフトウェアパッケージの数である、決定することと、
    前記クライアントデバイスに、第3のペイン及び第4のペインを示す前記グラフィカルユーザインターフェースの更新されたバージョンの更新された表現を送信することであって、前記第3のペインが、前記合計のカテゴリ金額及びそれらの関連するカテゴリの第1のランキングを降順で視覚的に示す第2のチャートを含み、前記第4のペインが、前記合計のパッケージ数及びそれらの関連するカテゴリの第2のランキングを降順で視覚的に示す第3のチャートを含む、送信することとを更に含む、請求項11に記載のコンピュータ実装方法。
  19. 前記第2のチャートに表示される前記合計のカテゴリ金額が、前記関連するカテゴリのソフトウェアパッケージごとの取引の第1のリストを更に表示するために選択可能であり、前記第2のチャートに表示される合計のパッケージ数が、前記関連するカテゴリのソフトウェアパッケージごとの取引の第2のリストを更に表示するために選択可能である、請求項18に記載のコンピュータ実装方法。
  20. プログラム命令が記憶されている非一時的なコンピュータ可読媒体を含むサーバデバイスであって、前記プログラム命令が、サーバデバイスによって実行されるとき、前記サーバデバイスに、
    データベースから、(i)ソフトウェアパッケージそれぞれに関連付けられた発行元、タイトル、及びカテゴリを含む、ソフトウェア管理ツールによって管理される複数のソフトウェアパッケージと、(ii)ソフトウェア取引それぞれに関連付けられた説明及び金額を含む複数のソフトウェア取引との表現を取得することと、
    前記ソフトウェア取引の機械学習ベースの分類を取得することであって、前記機械学習ベースの分類が、前記説明から前記ソフトウェア取引の前記発行元、タイトル、及びカテゴリを予測する、取得することと、
    (i)前記ソフトウェア管理ツールによって管理されていない非管理ソフトウェアパッケージ、及び(ii)前記ソフトウェアパッケージの少なくともいくつかに関連付けられた金額を識別するために、前記複数のソフトウェアパッケージを前記機械学習ベースの分類と比較することと、
    クライアントデバイスに、グラフィカルユーザインターフェースの表現を送信することであって、前記グラフィカルユーザインターフェースが、第1のペイン及び第2のペインを示し、前記第1のペインが、前記発行元それぞれに帰属する前記ソフトウェアパッケージに関連付けられたそれぞれの発行元合計金額と、前記非管理ソフトウェアパッケージの任意のものが前記発行元それぞれに帰属するかどうかとを含む、前記発行元の展開可能なリストを含み、前記第2のペインが、所定の期間の単位にわたって発生した前記金額を視覚的に示すチャートを含む、送信することとを含む動作を実行させる、サーバデバイス。
  21. プロセッサと、
    前記プロセッサによってアクセス可能なメモリとを含むシステムであって、前記メモリが命令を記憶し、前記命令が、前記プロセッサによって実行されるときに、前記プロセッサに、
    管理対象ネットワークに関連付けられた1つ又は複数のソフトウェア取引の記録を受信することと、
    機械学習モデルを介して、前記1つ又は複数のソフトウェア取引の記録が1つ又は複数のソフトウェアパッケージに関連付けられていることを決定することと、
    前記機械学習モデルを介して、前記1つ又は複数のソフトウェア取引の記録に基づいて前記1つ又は複数のソフトウェアパッケージのそれぞれの特徴を決定することであって、前記それぞれの特徴が、前記1つ又は複数のソフトウェアパッケージに関連付けられたそれぞれの発行元を含む、決定することと、
    前記1つ又は複数のソフトウェアパッケージの前記それぞれの特徴に基づいて、前記1つ又は複数のソフトウェアパッケージが前記管理対象ネットワークに関連付けられたソフトウェア管理ツールによって現在管理されていないことを決定することと、
    ディスプレイデバイスに、グラフィカルユーザインターフェースの表現を送信することであって、前記グラフィカルユーザインターフェースが、前記1つ又は複数のソフトウェアパッケージに関連付けられた前記それぞれの発行元のリストを含むウィンドウを含む、送信することとを含む動作を実施させる、システム。
  22. 前記1つ又は複数のソフトウェア取引の記録が、前記1つ又は複数のソフトウェアパッケージに関連付けられたソフトウェア取引の1つ又は複数の標示を含む、請求項21に記載のシステム。
  23. 前記それぞれの特徴が、前記1つ又は複数のソフトウェアパッケージに関連付けられた前記それぞれの発行元及びそれぞれのタイトルを含む、請求項21に記載のシステム。
  24. 前記動作が、
    前記グラフィカルユーザインターフェースを介して、前記それぞれの発行元のうちの特定の発行元の選択を示すユーザ入力を受信することと、
    前記ディスプレイデバイスに、更新されたグラフィカルユーザインターフェースの表現を送信することであって、前記更新されたグラフィカルユーザインターフェースが、前記特定の発行元に関連付けられた前記1つ又は複数のソフトウェアパッケージの前記それぞれのタイトルのリストを含む前記ウィンドウを含む、送信することとを含む、請求項23に記載のシステム。
  25. 前記それぞれの特徴が、前記1つ又は複数のソフトウェアパッケージがインストールされている1つ又は複数の追加のデバイスを含む、請求項21に記載のシステム。
  26. 前記動作が、データベースで、前記1つ又は複数のソフトウェアパッケージに関連付けられた1つ又は複数の構成項目を記憶することを含む、請求項21に記載のシステム。
  27. 前記機械学習モデルが、前記管理対象ネットワークに関連付けられた1つ又は複数の追加のソフトウェア取引の記録に関連付けられたデータセットに基づいて訓練される、請求項21に記載のシステム。
  28. 前記ウィンドウが、前記1つ又は複数のソフトウェアパッケージに関連付けられた前記それぞれの発行元と、前記ソフトウェア管理ツールによって管理される1つ又は複数の追加のソフトウェアパッケージに関連付けられた1つ又は複数の追加の発行元との前記リストを含む、請求項21に記載のシステム。
  29. サーバデバイスによって、管理対象ネットワークに関連付けられた1つ又は複数のソフトウェア取引の記録を受信することと、
    前記サーバデバイスによって、機械学習モデルを介して、前記1つ又は複数のソフトウェア取引の記録が1つ又は複数のソフトウェアパッケージに関連付けられていることを決定することと、
    前記サーバデバイスによって、前記機械学習モデルを介して、前記1つ又は複数のソフトウェア取引の記録に基づいて前記1つ又は複数のソフトウェアパッケージのそれぞれの特徴を決定することであって、前記それぞれの特徴が、前記1つ又は複数のソフトウェアパッケージに関連付けられたそれぞれの発行元を含む、決定することと、
    前記サーバデバイスによって、前記1つ又は複数のソフトウェアパッケージの前記それぞれの特徴に基づいて、前記1つ又は複数のソフトウェアパッケージが前記管理対象ネットワークに関連付けられたソフトウェア管理ツールによって現在管理されていないことを決定することと、
    前記サーバデバイスによって、ディスプレイデバイスに、グラフィカルユーザインターフェースの表現を送信することであって、前記グラフィカルユーザインターフェースが、前記1つ又は複数のソフトウェアパッケージに関連付けられた前記それぞれの発行元と、前記ソフトウェア管理ツールによって管理される1つ又は複数の追加のソフトウェアパッケージに関連付けられた1つ又は複数の追加の発行元とのリストを含むウィンドウを含む、送信することとを含む方法。
  30. 前記1つ又は複数のソフトウェア取引の記録が、前記1つ又は複数のソフトウェアパッケージに関連付けられたソフトウェア取引の1つ又は複数の標示を含む、請求項29に記載の方法。
  31. 前記サーバデバイスによって、前記グラフィカルユーザインターフェースを介して、前記それぞれの発行元のうちの特定の発行元の選択を示すユーザ入力を受信することと、
    前記サーバデバイスによって、前記ディスプレイデバイスに、更新されたグラフィカルユーザインターフェースの表現を送信することであって、前記更新されたグラフィカルユーザインターフェースが、前記特定の発行元に関連付けられた前記1つ又は複数のソフトウェアパッケージのそれぞれのタイトルのリストを含む前記ウィンドウを含む、送信することとを含む、請求項29に記載の方法。
  32. 前記それぞれの特徴が、前記1つ又は複数のソフトウェアパッケージがインストールされている1つ又は複数の追加のデバイスを含む、請求項29に記載の方法。
  33. 前記サーバデバイスによって、データベースで、前記1つ又は複数のソフトウェアパッケージに関連付けられた1つ又は複数の構成項目を記憶することを含む、請求項29に記載の方法。
  34. 前記機械学習モデルが、前記管理対象ネットワークに関連付けられた1つ又は複数の追加のソフトウェア取引の記録に関連付けられたデータセットに基づいて訓練される、請求項29に記載の方法。
  35. 命令を含む非一時的なコンピュータ可読媒体であって、前記命令が、1つ又は複数のプロセッサによって実行されるときに、前記1つ又は複数のプロセッサに、
    管理対象ネットワークに関連付けられた1つ又は複数のソフトウェア取引の記録を受信することと、
    機械学習モデルを介して、前記1つ又は複数のソフトウェア取引の記録が1つ又は複数のソフトウェアパッケージに関連付けられていることを決定することと、
    前記機械学習モデルを介して、前記1つ又は複数のソフトウェア取引の記録に基づいて前記1つ又は複数のソフトウェアパッケージのそれぞれの特徴を決定することであって、前記それぞれの特徴が、前記1つ又は複数のソフトウェアパッケージに関連付けられたそれぞれの発行元と、前記1つ又は複数のソフトウェアパッケージがインストールされている1つ又は複数のデバイスとを含む、決定することと、
    前記1つ又は複数のソフトウェアパッケージの前記それぞれの特徴に基づいて、前記1つ又は複数のソフトウェアパッケージが前記管理対象ネットワークに関連付けられたソフトウェア管理ツールによって現在管理されていないことを決定することと、
    ディスプレイデバイスに、グラフィカルユーザインターフェースの表現を送信することであって、前記グラフィカルユーザインターフェースが、前記1つ又は複数のソフトウェアパッケージに関連付けられた前記それぞれの発行元のリストを含むウィンドウを含む、送信することとを含む動作を行わせる、非一時的なコンピュータ可読媒体。
  36. 前記1つ又は複数のソフトウェア取引の記録が、前記1つ又は複数のソフトウェアパッケージに関連付けられたソフトウェア取引の1つ又は複数の標示を含む、請求項35に記載の非一時的なコンピュータ可読媒体。
  37. 前記それぞれの特徴が、前記1つ又は複数のソフトウェアパッケージに関連付けられた前記それぞれの発行元及びそれぞれのタイトルを含む、請求項35に記載の非一時的なコンピュータ可読媒体。
  38. 前記動作が、
    前記グラフィカルユーザインターフェースを介して、前記それぞれの発行元のうちの特定の発行元の選択を示すユーザ入力を受信することと、
    前記ディスプレイデバイスに、更新されたグラフィカルユーザインターフェースの表現を送信することであって、前記更新されたグラフィカルユーザインターフェースが、前記特定の発行元に関連付けられた前記1つ又は複数のソフトウェアパッケージの前記それぞれのタイトルのリストを含む前記ウィンドウを含む、送信することとを含む、請求項37に記載の非一時的なコンピュータ可読媒体。
  39. 前記動作が、データベースで、前記1つ又は複数のソフトウェアパッケージに関連付けられた1つ又は複数の構成項目を記憶することを含む、請求項35に記載の非一時的なコンピュータ可読媒体。
  40. 前記機械学習モデルが、前記管理対象ネットワークに関連付けられた1つ又は複数の追加のソフトウェア取引の記録に関連付けられたデータセットに基づいて訓練される、請求項35に記載の非一時的なコンピュータ可読媒体。
JP2021564923A 2019-05-02 2020-05-01 管理対象ネットワークによって使用されるソフトウェアの決定及び調整 Active JP7361135B2 (ja)

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
JP2022531370A JP2022531370A (ja) 2022-07-06
JP7361135B2 true JP7361135B2 (ja) 2023-10-13

Family

ID=70918987

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021564923A Active JP7361135B2 (ja) 2019-05-02 2020-05-01 管理対象ネットワークによって使用されるソフトウェアの決定及び調整

Country Status (5)

Country Link
US (2) US11204903B2 (ja)
JP (1) JP7361135B2 (ja)
KR (1) KR102665243B1 (ja)
AU (1) AU2020266172A1 (ja)
WO (1) WO2020223696A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838715B1 (en) * 2019-05-03 2020-11-17 Servicenow, Inc. Efficient automatic population of downgrade rights of licensed software
US11562439B2 (en) * 2019-07-24 2023-01-24 International Business Machines Corporation Multi-way optimal reconciliation and recommendation
US11068254B1 (en) 2020-06-10 2021-07-20 Cigna Intellectual Property, Inc. Systems and methods for generating and managing domain-based technology architecture
US20220366340A1 (en) * 2021-05-13 2022-11-17 Microsoft Technology Licensing, Llc Smart rollout recommendation system
US11880672B2 (en) * 2021-08-31 2024-01-23 Dell Products L.P. Dynamically consolidating applicable updates into an update recommendation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001222424A (ja) 2000-02-08 2001-08-17 Fujitsu Ltd ソフトウェアライセンス管理装置,ソフトウェアライセンス管理方法およびソフトウェアライセンス管理用プログラム記録媒体
JP2004118584A (ja) 2002-09-26 2004-04-15 Ricoh Co Ltd ライセンス管理サーバ、方法及びプログラム
US20140059535A1 (en) 2012-08-21 2014-02-27 International Business Machines Corporation Software Inventory Using a Machine Learning Algorithm
US20180322599A1 (en) 2017-05-04 2018-11-08 Servicenow, Inc. Automated software license reclamation

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6321229B1 (en) 1999-02-26 2001-11-20 Hewlett-Packard Company Method and apparatus for using an information model to organize an information repository into a hierarchy of information
US6829604B1 (en) 1999-10-19 2004-12-07 Eclipsys Corporation Rules analyzer system and method for evaluating and ranking exact and probabilistic search rules in an enterprise database
US20010042032A1 (en) 2000-05-11 2001-11-15 Crawshaw Geoffrey K. System for capturing, processing, tracking and reporting time and expense data
WO2002005154A2 (en) 2000-07-10 2002-01-17 It Masters Technologies S.A. System and method of enterprise systems and business impact management
US6609122B1 (en) 2000-08-01 2003-08-19 Bmc Software, Inc. Navigation of view relationships in database system
US6816898B1 (en) 2000-08-16 2004-11-09 Proactivenet, Inc. Interfacing external metrics into a performance management system
US6895586B1 (en) 2000-08-30 2005-05-17 Bmc Software Enterprise management system and method which includes a common enterprise-wide namespace and prototype-based hierarchical inheritance
US7027411B1 (en) 2000-10-31 2006-04-11 Hewlett-Packard Development Company, L.P. Method and system for identifying and processing changes to a network topology
US6944630B2 (en) 2000-11-22 2005-09-13 Bmc Software Database management system and method which monitors activity levels and determines appropriate schedule times
US7028301B2 (en) 2000-12-08 2006-04-11 Bmc Software, Inc. System and method for automatic workload characterization
US7170864B2 (en) 2001-03-08 2007-01-30 Bmc Software, Inc. System and method for WAP server management using a single console
US7506047B2 (en) 2001-03-30 2009-03-17 Bmc Software, Inc. Synthetic transaction monitor with replay capability
US7350209B2 (en) 2001-06-29 2008-03-25 Bmc Software System and method for application performance management
US7149734B2 (en) 2001-07-06 2006-12-12 Logic Library, Inc. Managing reusable software assets
US7089245B1 (en) 2001-08-31 2006-08-08 Bmc Software, Inc. Service desk data transfer interface
US6799189B2 (en) 2001-11-15 2004-09-28 Bmc Software, Inc. System and method for creating a series of online snapshots for recovery purposes
WO2003075117A2 (en) 2002-03-01 2003-09-12 Bmc Software, Inc. System and method for assessing and indicating the health of components
US7131037B1 (en) 2002-06-05 2006-10-31 Proactivenet, Inc. Method and system to correlate a specific alarm to one or more events to identify a possible cause of the alarm
US7020706B2 (en) 2002-06-17 2006-03-28 Bmc Software, Inc. Method and system for automatically updating multiple servers
US7194728B1 (en) 2002-11-18 2007-03-20 Bmc Software, Inc. System and method for packaging updates
US7062683B2 (en) 2003-04-22 2006-06-13 Bmc Software, Inc. Two-phase root cause analysis
US7945860B2 (en) 2003-05-14 2011-05-17 Hewlett-Packard Development Company, L.P. Systems and methods for managing conversations between information technology resources
US7925981B2 (en) 2003-05-14 2011-04-12 Hewlett-Packard Development Company, L.P. Systems and methods for managing web services via a framework of interfaces
US7882213B2 (en) 2003-06-03 2011-02-01 Bmc Software, Inc. Network management system to monitor managed elements
US7689628B2 (en) 2005-05-19 2010-03-30 Atul Garg Monitoring several distributed resource elements as a resource pool
US8224683B2 (en) 2003-07-08 2012-07-17 Hewlett-Packard Development Company, L.P. Information technology service request level of service monitor
US7133884B1 (en) 2003-11-26 2006-11-07 Bmc Software, Inc. Unobtrusive point-in-time consistent copies
US7392300B2 (en) 2004-01-08 2008-06-24 Hewlett-Packard Development Company, L.P. Method and system for modelling a communications network
WO2005078606A2 (en) 2004-02-11 2005-08-25 Storage Technology Corporation Clustered hierarchical file services
US20060111874A1 (en) * 2004-09-30 2006-05-25 Blazant, Inx. Method and system for filtering, organizing and presenting selected information technology information as a function of business dimensions
US7933927B2 (en) 2004-11-17 2011-04-26 Bmc Software, Inc. Method and apparatus for building index of source data
US9137115B2 (en) 2004-12-06 2015-09-15 Bmc Software, Inc. System and method for resource reconciliation in an enterprise management system
WO2006069359A2 (en) 2004-12-21 2006-06-29 Bmc Software, Inc. System and method for business service management and modeling
US7716353B2 (en) 2005-12-21 2010-05-11 Bmc Software, Inc. Web services availability cache
US7610512B2 (en) 2006-01-06 2009-10-27 Hewlett-Packard Development Company, L.P. System and method for automated and assisted resolution of it incidents
US8887133B2 (en) 2006-04-28 2014-11-11 Bmc Software, Inc. Bi-directional communication between change management tool and implementation tools
US8555287B2 (en) 2006-08-31 2013-10-08 Bmc Software, Inc. Automated capacity provisioning method using historical performance data
US7685167B2 (en) 2007-01-30 2010-03-23 Bmc Software, Inc. Configuration management database reference instance
US8051164B2 (en) 2007-12-14 2011-11-01 Bmc Software, Inc. Impact propagation in a directed acyclic graph having restricted views
US8266096B2 (en) 2008-10-24 2012-09-11 Bmc Software, Inc. Vendor portfolio management in support of vendor relationship management analysis, planning and evaluation
US8380749B2 (en) 2009-01-14 2013-02-19 Bmc Software, Inc. MDR federation facility for CMDBf
US8554750B2 (en) 2009-01-15 2013-10-08 Bmc Software, Inc. Normalization engine to manage configuration management database integrity
US8646093B2 (en) 2009-03-31 2014-02-04 Bmc Software, Inc. Method and system for configuration management database software license compliance
US10402544B2 (en) * 2009-11-30 2019-09-03 Red Hat, Inc. Generating a software license knowledge base for verifying software license compliance in cloud computing environments
US8743121B2 (en) 2009-12-23 2014-06-03 Bmc Software, Inc. Smart impact views
US9805322B2 (en) 2010-06-24 2017-10-31 Bmc Software, Inc. Application blueprint and deployment model for dynamic business service management (BSM)
US9122536B2 (en) 2009-12-30 2015-09-01 Bmc Software, Inc. Automating application provisioning for heterogeneous datacenter environments
US8832652B2 (en) 2010-03-26 2014-09-09 Bmc Software, Inc. Method for customizing software applications
US8457928B2 (en) 2010-03-26 2013-06-04 Bmc Software, Inc. Automatic determination of dynamic threshold for accurate detection of abnormalities
US9467344B2 (en) 2010-03-26 2016-10-11 Bmc Software, Inc. Mechanism to display graphical IT infrastructure using configurable smart navigation
US8478569B2 (en) 2010-03-26 2013-07-02 Bmc Software, Inc. Auto adjustment of baseline on configuration change
US8712979B2 (en) 2010-03-26 2014-04-29 Bmc Software, Inc. Statistical identification of instances during reconciliation process
US8380645B2 (en) 2010-05-27 2013-02-19 Bmc Software, Inc. Method and system to enable inferencing for natural language queries of configuration management databases
US8674992B2 (en) 2010-06-24 2014-03-18 Bmc Software, Inc. Spotlight graphs
US8402127B2 (en) 2010-06-28 2013-03-19 Bmc Software, Inc. System and method for offering virtual private clouds within a public cloud environment
US20120054166A1 (en) * 2010-08-31 2012-03-01 Leo Jeremias System for displaying search engine results with images
US8818994B2 (en) 2011-06-27 2014-08-26 Bmc Software, Inc. Mobile service context
US8745040B2 (en) 2011-06-27 2014-06-03 Bmc Software, Inc. Service context
US9015188B2 (en) 2011-09-28 2015-04-21 Bmc Software, Inc. Methods and apparatus for monitoring execution of a database query program
US8812539B2 (en) 2012-03-31 2014-08-19 Bmc Software, Inc. Unique attribute constraints for versioned database objects
US8626769B1 (en) * 2012-04-20 2014-01-07 Intuit Inc. Community contributed rules in online accounting systems
US9122552B2 (en) 2012-06-29 2015-09-01 Bmc Software, Inc. Hybrid cloud infrastructures
US9645833B2 (en) 2012-12-31 2017-05-09 Bmc Software, Inc. Additive independent object modification
US9317327B2 (en) 2013-02-28 2016-04-19 Bmc Software, Inc. Computing infrastructure planning
US9158799B2 (en) 2013-03-14 2015-10-13 Bmc Software, Inc. Storing and retrieving context sensitive data in a management system
US9613070B2 (en) 2013-03-15 2017-04-04 Bmc Software, Inc. Multi-entity normalization
US9098322B2 (en) 2013-03-15 2015-08-04 Bmc Software, Inc. Managing a server template
US9654473B2 (en) 2013-06-28 2017-05-16 Bmc Software, Inc. Authentication proxy agent
KR20150053513A (ko) 2013-11-08 2015-05-18 한국전자통신연구원 클라우드 서비스 브로커 장치 및 이를 이용한 클라우드 서비스 제공 방법
US20150332414A1 (en) * 2014-05-13 2015-11-19 Mastercard International Incorporated System and method for predicting items purchased based on transaction data
US9659051B2 (en) 2014-12-22 2017-05-23 Bladelogic Inc. Enforcing referential integrity for object data documents
US9535737B2 (en) 2015-01-30 2017-01-03 Bladelogic, Inc. Dynamic virtual port provisioning
US9930025B2 (en) * 2015-03-23 2018-03-27 Duo Security, Inc. System and method for automatic service discovery and protection
US10162982B2 (en) 2015-12-10 2018-12-25 Sap Se End user control of personal data in the cloud
US20180052713A1 (en) * 2016-08-19 2018-02-22 Flexera Software Llc Method and Apparatus for Optimizing System Resource Availability by Heuristically Transforming Raw Purchase Data into License Inventory
JP7074451B2 (ja) * 2017-10-24 2022-05-24 Nttテクノクロス株式会社 管理装置、管理方法及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001222424A (ja) 2000-02-08 2001-08-17 Fujitsu Ltd ソフトウェアライセンス管理装置,ソフトウェアライセンス管理方法およびソフトウェアライセンス管理用プログラム記録媒体
JP2004118584A (ja) 2002-09-26 2004-04-15 Ricoh Co Ltd ライセンス管理サーバ、方法及びプログラム
US20140059535A1 (en) 2012-08-21 2014-02-27 International Business Machines Corporation Software Inventory Using a Machine Learning Algorithm
US20180322599A1 (en) 2017-05-04 2018-11-08 Servicenow, Inc. Automated software license reclamation

Also Published As

Publication number Publication date
US20200349134A1 (en) 2020-11-05
US20220050815A1 (en) 2022-02-17
JP2022531370A (ja) 2022-07-06
US11204903B2 (en) 2021-12-21
AU2020266172A1 (en) 2021-11-25
KR20220003056A (ko) 2022-01-07
KR102665243B1 (ko) 2024-05-16
WO2020223696A1 (en) 2020-11-05

Similar Documents

Publication Publication Date Title
US11176331B2 (en) Contextual communication and service interface
JP7361135B2 (ja) 管理対象ネットワークによって使用されるソフトウェアの決定及び調整
US11706243B2 (en) Multi-application recommendation engine for a remote network management platform
US11054972B2 (en) Context-based user assistance and service workspace
US10958532B2 (en) Machine learning based discovery of software as a service
US20200092178A1 (en) Decision tables and flow engine for building automated flows within a cloud based development platform
US10223329B2 (en) Policy based data collection, processing, and negotiation for analytics
US11222290B2 (en) Intelligent capability extraction and assignment
US10255364B2 (en) Analyzing a query and provisioning data to analytics
Missbach et al. SAP on the Cloud
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
US11061949B2 (en) User interface for contextual search
EP3624027A1 (en) Decision tables and flow engine for building automated flows within a cloud based development platform
Muppala et al. Amazon SageMaker Best Practices: Proven tips and tricks to build successful machine learning solutions on Amazon SageMaker
US10169382B2 (en) Keyword identification for an enterprise resource planning manager
Dinh et al. Data Process Approach by Traditional and Cloud Services Methodologies
US11205047B2 (en) Hierarchical search for improved search relevance
Carpenter SQL Server 2008 Administration: Real-World Skills for MCITP Certification and Beyond (Exams 70-432 and 70-450)
Lisdorf et al. Cloud Technology
Polgar Web Portal Design, Implementation, Integration, and Optimization

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211224

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230804

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230912

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231002

R150 Certificate of patent or registration of utility model

Ref document number: 7361135

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150