JP6937589B2 - License management device, license management method, and program - Google Patents
License management device, license management method, and program Download PDFInfo
- Publication number
- JP6937589B2 JP6937589B2 JP2017033559A JP2017033559A JP6937589B2 JP 6937589 B2 JP6937589 B2 JP 6937589B2 JP 2017033559 A JP2017033559 A JP 2017033559A JP 2017033559 A JP2017033559 A JP 2017033559A JP 6937589 B2 JP6937589 B2 JP 6937589B2
- Authority
- JP
- Japan
- Prior art keywords
- license
- source code
- unit
- dependency
- software
- 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
Links
- 238000007726 management method Methods 0.000 title claims description 43
- 238000011835 investigation Methods 0.000 claims description 48
- 230000000644 propagated effect Effects 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 5
- 230000003068 static effect Effects 0.000 claims description 3
- 238000011161 development Methods 0.000 description 14
- 238000000034 method Methods 0.000 description 14
- 238000003745 diagnosis Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
本発明は、ライセンス管理装置、ライセンス管理方法、及びプログラムに関する。 The present invention relates to a license management device, a license management method, and a program.
近年、オープン・ソース・ソフトウェア(OSS)を利用したソフトウェアの開発が盛んとなっている。OSSの中には、OSSを利用した場合に、一定の条件を課すライセンスを伴うものが多い。従って、OSSを利用する場合、そのライセンスの調査や管理に多大な工数が必要となる。特許文献1は、この多大な工数を減らすため、OSSのライセンスをチェックするシステムを開示している。具体的には、特許文献1に開示されたシステムは、ユーザがOSSをインターネットからダウンロードした際、そのOSSのライセンスをチェックする。そして、ユーザがそのOSSを用いて作成したソフトウェアをビルドする際、そのシステムは、そのソフトウェアが、そのOSSのライセンスに違反していないかを判定し、その結果を出力する。
In recent years, software development using open source software (OSS) has become active. Many OSSs come with a license that imposes certain conditions when using OSS. Therefore, when OSS is used, a great deal of man-hours are required to investigate and manage the license.
OSSの中には、そのライセンスが、そのOSSを直接的に用いたソフトウェアだけでなく、そのOSSを間接的に用いたソフトウェアに伝播するものがある。例えば、OSSのライセンスの1つであるGPL(GNU General Public License)では、GPLを有するプログラムAを用いたプログラムBだけでなく、プログラムBを用いたプログラムCにも、GPLの影響が及ぶ。特許文献1に開示されたシステムでは、ユーザによるOSSの改変や、そのOSSへのリンクがそのOSSのライセンスに違反しているか否かを判定できるが、そのOSSを間接的に用いたソフトウェアについては、そのOSSのライセンスに違反しているか否かを判定することは、困難である。
In some OSSs, the license propagates not only to software that directly uses the OSS, but also to software that indirectly uses the OSS. For example, under the GPL (GNU General Public License), which is one of the OSS licenses, the GPL affects not only the program B using the program A having the GPL but also the program C using the program B. In the system disclosed in
本発明は、上記実情に鑑みてなされたものであり、ソフトウェアを構成する複数のプログラムのソースコードのライセンスを漏れなく管理することが可能なライセンス管理装置、ライセンス管理方法、及びプログラムを提供することを目的とする。 The present invention has been made in view of the above circumstances, and provides a license management device, a license management method, and a program capable of managing licenses of source codes of a plurality of programs constituting software without omission. With the goal.
上記目的を達成するため、本発明のライセンス管理装置は、
ソフトウェアをビルドする際のログであるビルド情報に基づいて、前記ソフトウェアを構成する複数のプログラムのソースコード間の依存関係を判別する依存関係判別部と、
ライセンスの種類毎に、当該ライセンスを特定するためのライセンス特定情報と、当該ライセンスを有するソースコードに依存する他のソースコードにも当該ライセンスが伝播するか否かを示す伝播フラグと、を記憶するライセンス情報記憶部と、
前記ライセンス情報記憶部に記憶されているライセンス特定情報を参照して前記複数のプログラムのソースコードそれぞれが有するライセンスを判別するとともに、判別したライセンスの前記伝播フラグが伝播することを示している場合には、前記依存関係判別部による判別結果に基づいて、当該ライセンスを有するソースコードに依存する他のソースコードを特定し、該他のソースコードに対しても当該ライセンスを有すると判別するライセンス調査部と、
前記ライセンス調査部による判別結果を出力する結果出力部と、
を備える。
In order to achieve the above object, the license management device of the present invention
A dependency determination unit that determines the dependency between the source codes of a plurality of programs constituting the software based on the build information that is a log when building the software.
For each type of license, the license identification information for identifying the license and the propagation flag indicating whether or not the license is propagated to other source code depending on the source code having the license are stored. License information storage and
When the license possessed by each of the source codes of the plurality of programs is determined by referring to the license identification information stored in the license information storage unit, and the propagation flag of the determined license is shown to be propagated. is on the basis of the dependency determination unit according to the determination result, to identify other source code that depends on the source code with the license, the license check unit for determining that also has the license to said other source code When,
A result output unit that outputs the determination result by the license investigation unit, and
To be equipped.
本発明によれば、ソフトウェアを構成する複数のプログラムのソースコードのライセンスを漏れなく管理することができる。 According to the present invention, it is possible to manage the licenses of the source codes of a plurality of programs constituting the software without omission.
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付す。 Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings. The same or corresponding parts in the figure are designated by the same reference numerals.
本発明の実施形態に係るライセンス管理システム1の構成例を図1に示す。ライセンス管理システム1は、利用者端末100と、開発環境サーバ200と、ライセンス管理装置300と、を備える。利用者端末100と開発環境サーバ200とライセンス管理装置300とは、インターネット400を介して、互いに通信可能に接続されている。
FIG. 1 shows a configuration example of the
利用者端末100は、ユーザによって操作されるパーソナルコンピュータ、タブレット端末等である。ユーザは、利用者端末100を操作して、ソフトウェアのビルドの指示、ライセンス診断の指示等を行う。
The
開発環境サーバ200は、利用者端末100又はライセンス管理装置300からの指示に基づいてソフトウェアのビルドを実行するサーバである。なお、ソフトウェアのビルドとは、ソフトウェアを構成する複数のプログラムのソースコードを正規の手順でコンパイル及びリンクして実行可能なソフトウェア生成物に変換することをいう。開発環境サーバ200には、ビルドを行うために必要なコンパイラ、リンケージエディタ、スクリプト、ビルドコマンド等が予めインストールされている。
The
ライセンス管理装置300は、ソフトウェアのライセンスを管理する。具体的には、ライセンス管理装置300は、診断対象のソフトウェアを構成する複数のプログラムのソースコード各々のライセンスをチェックし、その結果を出力する。
The
ランセンス管理装置300の構成を図2に示す。ライセンス管理装置300は、制御部310と、記憶部320と、通信部330と、入力部340と、出力部350と、を備える。これらの各部は、バス360により接続されている。
The configuration of the
制御部310は、例えば、CPU(Central Processing Unit)、CPUが実行するプログラムを格納するROM(Read Only Memory)、CPUが生成したデータを一時的に格納するRAM(Random Access Memory)等を備え、ライセンス管理装置300全体の制御を行う。
The
記憶部320は、ハードディスクドライブや、フラッシュメモリ、SSD(Solid State Drive)のような書き込み可能な記憶装置を備える。記憶部320は、ライセンス情報テーブル321と、調査結果格納テーブル322と、を記憶する。 The storage unit 320 includes a hard disk drive, a flash memory, and a writable storage device such as an SSD (Solid State Drive). The storage unit 320 stores the license information table 321 and the search result storage table 322.
ライセンス情報テーブル321は、ライセンス情報記憶部に対応し、ライセンスの種類毎に、ライセンスに関する各種の情報が登録されるテーブルである。 The license information table 321 corresponds to the license information storage unit, and is a table in which various information related to the license is registered for each type of license.
図3に、ライセンス情報テーブル321に格納される情報の一例を示す。図3に示すライセンス情報テーブル321には、ライセンスの種類毎に、ライセンス特定情報と、ライセンス種別と、伝播フラグと、公開フラグと、バージョンと、URI(Uniform Resource Identifier)と、を表す情報が対応付けて格納されている。ライセンス情報テーブル321に格納される各種データは、定期的にインターネット400を介して収集され、最新のものに更新される。 FIG. 3 shows an example of the information stored in the license information table 321. The license information table 321 shown in FIG. 3 corresponds to information representing license identification information, license type, propagation flag, publication flag, version, and URI (Uniform Resource Identifier) for each type of license. It is stored with it. Various data stored in the license information table 321 are periodically collected via the Internet 400 and updated to the latest ones.
なお、ライセンス特定情報は、ライセンスを特定するための情報である。ライセンス特定情報は、例えば、そのライセンスを有するプログラムのソースコード中に一般的に記述されるキーワードである。
ライセンス種別は、ライセンスの種類を表す。具体的なライセンスの種類は、例えば、GPL、BSD(Berkeley Software Distribution License)等である。
伝播フラグは、あるソースコードに付与されているライセンスが、そのソースコードに依存する他のソースコードにも伝播(ライセンス伝播)するか否かを示すフラグである。伝播フラグ「1」は、ライセンス伝播することを示す。伝播フラグ「0」は、ライセンス伝播しないことを示す。
公開フラグは、そのソースコードの公開が義務づけられているか否かを示すフラグである。公開フラグ「1」は、ソースコードの公開が義務づけられていることを示す。公開フラグ「0」は、ソースコードの公開が義務づけられていないことを示す。
URIは、そのライセンスがインターネット400のウェブ上で公開されている場合のそのウェブページのアドレスである。
The license identification information is information for specifying the license. The license identification information is, for example, a keyword generally described in the source code of the program having the license.
The license type represents the type of license. Specific license types are, for example, GPL, BSD (Berkeley Software Distribution License), and the like.
The propagation flag is a flag indicating whether or not a license granted to a certain source code is propagated (license propagation) to other source codes that depend on the source code. The propagation flag "1" indicates that the license is propagated. The propagation flag "0" indicates that the license is not propagated.
The public flag is a flag indicating whether or not the source code is obliged to be published. The public flag "1" indicates that the source code is obliged to be published. The public flag "0" indicates that the source code is not obliged to be published.
The URI is the address of the web page if the license is published on the web of Internet 400.
ここで、GPLは、あるOSSを利用したソフトウェア全体に対して、そのソースコードを公開する必要がある。すなわち、GPLは、そのOSSのライセンスの影響が伝播するライセンスである。例えば、あるOSSが、GPLを有する場合、そのOSSを改変することにより作成されたプログラム、そのOSSへのリンクを含むプログラム等も、GPLを有することとなる。従って、それらのプログラムも、そのソースコードを公開することが義務づけられる。そのため、ライセンス情報テーブル321において、GPLの伝播フラグは「1」、公開フラグは「1」に設定されている。 Here, the GPL needs to publish its source code to the entire software using a certain OSS. That is, the GPL is a license that propagates the influence of the OSS license. For example, when a certain OSS has the GPL, a program created by modifying the OSS, a program including a link to the OSS, and the like also have the GPL. Therefore, those programs are also obliged to publish their source code. Therefore, in the license information table 321, the GPL propagation flag is set to "1" and the public flag is set to "1".
これに対し、BSDライセンスは、BSDライセンスを有するOSSの利用、再配布にあたり、予め定められている条件を満たせばよく、制限が少ないライセンスである。また、BSDライセンスを有するOSSを改変したプログラムは、そのソースコードを非公開にすることができる。そのため、図3に示すライセンス情報テーブル321において、BSDライセンスの伝播フラグは「0」、公開フラグは「0」に設定されている。 On the other hand, the BSD license is a license with few restrictions as long as it satisfies predetermined conditions when using and redistributing the OSS having the BSD license. In addition, the OSS modified program having the BSD license can keep its source code private. Therefore, in the license information table 321 shown in FIG. 3, the propagation flag of the BSD license is set to "0" and the public flag is set to "0".
図2に戻り、調査結果格納テーブル322には、ソフトウェアを構成する各プログラムのソースコードのライセンスを調査した結果を示す情報が格納される。具体的には、図4に示すように、調査結果格納テーブル322には、ソースコード毎に、ソースコードのファイル名と、ソースコードに課せられているライセンスの種別と、伝播元ファイル名と、を示す情報が格納される。伝播元ファイル名は、そのソースコードがライセンス伝播の影響を受ける場合、そのソースコードに影響を与える原因であるソースコードのファイル名である。 Returning to FIG. 2, the search result storage table 322 stores information indicating the result of checking the license of the source code of each program constituting the software. Specifically, as shown in FIG. 4, in the survey result storage table 322, the file name of the source code, the type of license imposed on the source code, the propagation source file name, and the file name of the source code are displayed for each source code. Information indicating that is stored. The source file name is the file name of the source code that affects the source code when the source code is affected by license propagation.
図2に戻り、通信部330は、インターネット400を介して、利用者端末100及び開発環境サーバ200と、無線または有線による通信を行うためのインターフェースである。
Returning to FIG. 2, the
入力部340は、ボタン、タッチパネル、キーボード等の入力装置を備える。入力部340は、ユーザからの操作入力を受け付け、受け付けた操作入力に対応する操作入力信号を制御部310に出力する。
The
出力部350は、CRT(Cathode Ray Tube)、液晶ディスプレイ等の表示装置を備える。出力部350は、制御部310から供給される文字、画像等のデータを表示する。
The
次に、ライセンス管理装置300の制御部310の機能について説明する。図5は、制御部310の機能構成の一例を示す概略ブロック図である。制御部310は、機能的な構成として、プログラム取得部311と、依存関係判別部312と、ライセンス調査部313と、結果出力部314と、アーカイブ作成部315と、を備える。
Next, the function of the
プログラム取得部311は、開発環境サーバ200から、ライセンス診断の対象とするソフトウェアを構成する複数のプログラムのソースコードと、このソフトウェアをビルドした際のビルド情報とを取得する。
The
依存関係判別部312は、プログラム取得部311により取得されたビルド情報に基づいて、プログラム取得部311により取得された複数のプログラム間の依存関係を判別する。プログラム間の依存関係は、例えば、あるプログラムが、他のプログラムをリンク(利用、参照等)するという形式で利用している関係である。リンクには、動的リンクや静的リンクが含まれる。
The
図6は、依存関係判別部312により判別されたソースコード間の依存関係の一例を模式的に表す図である。この依存関係は、プログラム取得部311により取得された複数のプログラムのソースコードそれぞれを表すノードと、依存関係があるプログラムを表すノード間を結ぶ矢印線と、から構成される木構造で表される。矢印線の始点に接続するノードのソースコードは、この矢印線の終点に接続するノードのソースコードに依存していることを示す。例えば、図6から、ソースコード「aa.c」は、2つのソースコード「bb.c」、「dd.c」に依存していることが分かる。さらに、ソースコード「bb.c」は、ソースコード「cc.h」に依存していることが分かる。そのため、ソースコード「aa.c」は、間接的にソースコード「cc.h」にも依存していることが分かる。
FIG. 6 is a diagram schematically showing an example of the dependency relationship between the source codes determined by the dependency
なお、以下の説明では、直接及び間接的に他のソースコードに依存する回数が多いソースコードほど、依存関係が上位のソースコードであると定義する。例えば、図6の例では、どのソースコードにも依存していないソースコード「cc.h」、「dd.c」、「ff.c」、「hh.c」、「ii.c」、「jj.c」は、依存関係が最下位のソースコードとなる。また、ソースコード「main.c」は、依存関係が最上位のソースコードとなる。 In the following description, it is defined that the source code having a higher number of times of directly and indirectly depending on other source code has a higher dependency relationship. For example, in the example of FIG. 6, the source codes "cc.h", "dd.c", "ff.c", "hh.c", "ii.c", and " "JJ.c" is the source code with the lowest dependency. In addition, the source code "main.c" is the source code with the highest dependency.
図5に戻り、ライセンス調査部313は、ライセンス情報テーブル321に記憶されているライセンス情報及び依存関係判別部312によって判別されたソースコード間の依存関係に基づいて、調査対象とするプログラムのソースコード各々のライセンスを判別し、判別結果を調査結果格納テーブル322に登録する。
Returning to FIG. 5, the
具体的には、まず、ライセンス調査部313は、調査対象とする複数のプログラムのソースコードのうち、ライセンス情報テーブル321に記憶されたライセンス特定情報を含むソースコードを特定してそのライセンスの種類を判別する。そして、ライセンス調査部313は、判別結果を調査結果格納テーブル322に登録する。
Specifically, first, the
例えば、ライセンス情報テーブル321に図3に示すような情報が記憶されており、調査対象とする複数のプログラムのソースコードの中から、ライセンス特定情報「GNU General Public License」が記述されているソースコードを特定した場合、ライセンス調査部313は、当該ソースコードのライセンスは「GPL」であると判別する。そして、ライセンス調査部313は、特定したソースコードのファイル名と判別したライセンス種別とを対応付けたエントリを調査結果格納テーブル322に登録する。なお、ここで登録されるエントリの伝播元ファイル名は「無し」とする。
For example, the information shown in FIG. 3 is stored in the license information table 321, and the source code in which the license specific information "GNU General Public License" is described from the source codes of a plurality of programs to be investigated. When the above is specified, the
続いて、ライセンス調査部313は、ライセンス情報テーブル321を参照して、判別したソースコードのライセンスの伝播フラグが「1」であるか否かを判別する。伝播フラグが「1」である場合、ライセンス調査部313は、依存関係判別部312が判別した依存関係に基づいて、このソースコードに直接又は間接的に依存する他のソースコードを全て特定する。そして、ライセンス調査部313は、特定した他のソースコードに対しても、同様のライセンス種別を有すると判別し、判別結果を調査結果格納テーブル322に登録する。
Subsequently, the
例えば、ソースコード間に図6に示すような依存関係が有り、ソースコード「ii.c」のライセンスが「GPL」であると判別された場合を考える。図3より、「GPL」は他のソースコードに伝播するため、ライセンス調査部313は、このソースコード「ii.c」に依存するソースコード「gg.c」も、ライセンス種別が「GPL」であると判別する。さらに、ライセンス調査部313は、このソースコード「gg.c」に依存する「ee.c」も、ライセンス種別が「GPL」であると判別する。さらに、ライセンス調査部313は、このソースコード「ee.c」に依存する「main.c」も、ライセンス種別が「GPL」であると判別する。よって、最終的にライセンス調査部313は、ソースコード「ii.c」に直接又は間接的に依存するソースコードとして「gg.c」、「ee.c」、「main.c」の3つのソースコードを判別する。そして、ライセンス調査部313は、ファイル名「gg.c」、ライセンス種別「GPL」、伝播元ファイル名「ii.c」としたエントリと、ファイル名「ee.c」、ライセンス種別「GPL」、伝播元ファイル名「ii.c」としたエントリと、ファイル名「main.c」、ライセンス種別「GPL」、伝播元ファイル名「ii.c」としたエントリと、を調査結果格納テーブル322に登録する。
For example, consider a case where there is a dependency relationship between the source codes as shown in FIG. 6, and the license of the source code "ii.c" is determined to be "GPL". From FIG. 3, since "GPL" is propagated to other source codes, the
図5に戻り、結果出力部314は、ライセンス調査部313による調査結果として、調査結果格納テーブル322に格納されたデータを出力部350から出力させる。
Returning to FIG. 5, the
アーカイブ作成部315は、調査結果格納テーブル322を参照して、ライセンスを調査したソースコードの中から公開が義務づけられているソースコードを特定し、特定したソースコードを、コンポーネント毎にまとめたアーカイブファイルを作成する(アーカイブする)。なお、コンポーネントとは、機能毎のまとまりを意味し、予めどのソースコードがどのコンポーネントに属するかが定義されている。なお、コンポーネントの単位をライブラリの単位と一致させてもよい。また、アーカイブ作成部315は、コンポーネント毎ではなく、特定した全てのソースコードを1つにまとめたアーカイブファイルを作成してもよく、アーカイブファイルを作成する単位は種々のものが採用可能である。
The
次に、本実施形態に係るライセンス管理装置300の制御部310が実施するライセンス診断処理の動作について、図7のフローチャートを用いて説明する。
Next, the operation of the license diagnosis process performed by the
ライセンス診断処理は、ユーザからの操作により入力部340を介してライセンス診断処理の実行開始を表す旨の指示情報を受け取った場合、若しくは、インターネット400を介して利用者端末100からライセンス診断処理の実行開始を示す指示情報を通信部330が受信した場合に開始される。なお、この指示情報には、調査対象とするソフトウェアを特定する情報と、このソフトウェアを構成する複数のプログラムのソースコードのうち、実際にライセンスを調査するソースコードを指定するための調査対象指定情報とが含まれている。調査対象指定情報は、ライブラリ、ヘッダファイル、スクリプトファイルのようにソースコードの種類を指定するものでもよいし、ファイル名でライセンス調査対象のソースコードを直接指定するものでもよい。
In the license diagnosis process, when an instruction information indicating the start of execution of the license diagnosis process is received via the
まず、ライセンス調査部313は、調査結果格納テーブル322に格納されているデータ(前回の調査結果)が有ればこのデータを消去する(ステップS101)。
First, the
続いて、プログラム取得部311は、開発環境サーバ200から、ライセンスの管理対象であるソフトウェアを構成する複数のプログラムのソースコードと、当該ソフトウェアのビルド情報とを取得する(ステップS102)。
Subsequently, the
次に、依存関係判別部312は、取得したビルド情報に基づいて、取得した複数のプログラム間の依存関係を判別する(ステップS103)。
Next, the
続いて、ライセンス調査部313は、判別した依存関係を参照して、調査対象指定情報で指定されているソースコードとこのソースコードが直接又は間接的に依存するソースコードとを、調査対象モジュールとして特定する(ステップS104)。
Subsequently, the
例えば、ステップS103で図6に示すようなソースコード間の依存関係が判別され、調査対象指定情報としてソースコード「ee.c」が指定されている場合を考える。この場合、ライセンス調査部313は、調査対象モジュールとして、このソースコード「ee.c」と、このソースコード「ee.c」が直接又は間接的に依存するソースコード「ff.c」、「gg.c」、「hh.c」、「ii.c」、「jj.c」とを特定する。
For example, consider a case where the dependency between the source codes as shown in FIG. 6 is determined in step S103 and the source code "ee.c" is specified as the investigation target designation information. In this case, the
図7に戻り、続いて、ライセンス調査部313は、判別した調査対象モジュールに含まれる未選択のソースコードの中から、ステップS103で判別した依存関係が最下位のソースコードを1つ選択する(ステップS105)。
Returning to FIG. 7, the
そして、ライセンス調査部313は、ライセンス情報テーブル321のライセンス特定情報をキーワードに選択したソースコードを検索することにより、当該ソースコードのライセンスの有無及び、ライセンスを有する場合はその種類を判別し、判別結果を調査結果格納テーブル322に登録する(ステップS106)。
Then, the
続いて、ライセンス調査部313は、ライセンス情報テーブル321の伝播フラグを参照して、ステップS106で判別したソースコードのライセンスが、このソースコードを利用する他のソースコードにも伝播するか否かを判別する(ステップS107)。伝播しないと判別した場合(ステップS107;No)、ステップS109に処理は移る。
Subsequently, the
一方、ソースコードのライセンスが伝播すると判別した場合(ステップS107;Yes)、ライセンス調査部313は、ステップS103で判別した依存関係に基づいて、そのソースコードが直接又は間接的に依存する他のソースコードを判別する。そして、ライセンス調査部313は、判別した他のソースコードに対しても、ステップS106で判別したものと同じライセンスを有すると判別し、判別結果を調査結果格納テーブル322に登録する(ステップS108)。
On the other hand, when it is determined that the license of the source code is propagated (step S107; Yes), the
続いて、ライセンス調査部313は、調査対象モジュールに含まれる全てのソースコードをステップS105で選択したか否かを判別する(ステップS109)。未選択のソースコードがある場合(ステップS109;No)、ステップS105に処理は戻る。
Subsequently, the
全てのソースコードを選択した場合(ステップS109;Yes)、結果出力部314は、ライセンスの調査結果を出力する。具体的には、結果出力部314は、調査結果格納テーブル322に格納されているデータを出力部に出力(表示)させる(ステップS110)。なお、利用者端末100からの指示によってライセンス診断処理が開始された場合は、結果出力部314は、調査結果格納テーブル322に格納されているデータをこの利用者端末100に送信して、利用者端末100の図示せぬ表示部に調査結果を出力させてもよい。
When all the source codes are selected (step S109; Yes), the
続いて、アーカイブ作成部315は、ライセンスを調査したソースコードのうち、公開が義務づけられているソースコードを特定する。例えば、ライセンス調査部313は、調査結果格納テーブル322を参照して、ライセンス情報テーブル321の公開フラグが「1」であるライセンス(例えばGPL)を有するソースコードを特定すればよい。そして、ライセンス調査部313は、特定した公開が義務づけられているソースコードをコンポーネント毎にまとめたアーカイブファイルを作成する(アーカイブする)(ステップS111)。以上でライセンス診断処理は終了する。
Subsequently, the
以上説明したように、本実施形態のライセンス管理装置300は、ソフトウェアをビルドする際のログであるビルド情報に基づいて、ライセンス管理対象であるソフトウェアを構成する複数のプログラムのソースコード間の依存関係を判別する。そして、ライセンス管理装置300は、ライセンス特定情報を用いて予め定めたライセンスを有するソースコードを判別する。そして、判別したライセンスが伝播する場合、ライセンス管理装置300は、判別した依存関係に基づいて、このソースコードに依存する他のソースコードを特定し、特定した他のソースコードに対しても同じライセンスを有すると判別する。従って、ライセンス管理装置300は、ライセンス伝播も考慮して、プログラムのソースコードのライセンスを調査することができ、ライセンスを漏れなく管理することができる。
As described above, the
以上、本発明の実施形態について説明したが、本発明は本実施形態によって限定されるものではない。 Although the embodiments of the present invention have been described above, the present invention is not limited to the present embodiments.
例えば、上記実施形態では、調査対象モジュールに含まれるソースコードのライセンスを調査したが、ソフトウェアを構成する全てのプログラムのソースコードを対象に、ライセンスを調査してもよい。 For example, in the above embodiment, the license of the source code included in the module to be investigated is investigated, but the license may be investigated for the source code of all the programs constituting the software.
例えば、ビルドを実行するビルドコマンドとは別に、ビルドコマンドをラッパーしたラッパーコマンドを開発環境サーバ200に用意しておく。このラッパーコマンドは、通常のビルドとは異なり、ソフトウェア生成物を生成せずにビルドのログ(ビルド情報)の出力を目的とした擬似ビルドを実行するためのコマンドである。そして、ライセンス管理装置300は、このラッパーコマンドを用いて擬似ビルドが実行された際のログ情報を開発環境サーバ200から取得し、取得したログ情報を用いてソースコード間の依存関係の判別(図7のステップS103)をしてもよい。擬似ビルドでは、ソフトウェア生成部が生成されずに通常のビルドよりも短時間でビルド情報が出力されるため、ライセンス診断処理の実行速度を向上させることが可能となる。なお、擬似ビルド時に出力されるビルド情報を通常のビルド時で出力されるビルド情報よりも詳細な内容で出力させたり、ソースコード間の依存関係の判別が容易になる形式でビルド情報を出力させたりしてもよい。
For example, in addition to the build command that executes the build, a wrapper command that wraps the build command is prepared in the
例えば、ライセンス管理装置300は、開発環境サーバ200からビルド情報を取得したが、ライセンス管理装置300にビルド又は擬似ビルドを実行できる環境を構築し、ライセンス管理装置300でビルド又は擬似ビルドを実行してビルド情報を取得してもよい。
For example, the
また、ライセンス診断処理の各ステップを複数の装置で分担して実行してもよい。例えば、依存関係の判別までのステップ(ステップS101〜S103)を利用者端末100又は開発環境サーバ200で実行して結果をライセンス管理装置300に送信し、以降のステップS104〜S111をライセンス管理装置300が実行してもよい。
Further, each step of the license diagnosis process may be shared and executed by a plurality of devices. For example, the steps up to the determination of the dependency (steps S101 to S103) are executed by the
また、上記実施形態では、ライセンス管理装置300の依存関係判別部312が、ビルド情報を用いてソースコード間の依存関係を判別したが、他の情報を用いて依存関係を判別してもよい。例えば、依存関係判別部312は、ビルドによって生成されるソフトウェア生成物を開発環境サーバ200から取得し、ソフトウェア生成物の内容を解析してソースコード間の依存関係を判別してもよい。また、依存関係判別部312は、依存関係のうち静的リンクはビルド情報を用いて判別し、動的リンクはソフトウェア生成物を用いて判別してもよい。
Further, in the above embodiment, the
また、上記実施形態では、ライセンス診断処理において、調査対象モジュールに含まれる未選択のソースコードから、依存関係が下位のものを順に選択してライセンスを判別したが(図7のステップS105、S106)、ソースコードをどのような順で選択するかは任意であり、例えば、調査対象モジュールに含まれる未選択のソースコードから、ランダムに1つを選択してもよい。 Further, in the above embodiment, in the license diagnosis process, the licenses are determined by sequentially selecting the unselected source codes included in the investigation target module with lower dependencies (steps S105 and S106 in FIG. 7). , The order in which the source code is selected is arbitrary. For example, one may be randomly selected from the unselected source codes included in the module to be investigated.
例えば、上記実施形態では、結果出力部314は、ライセンスの調査結果として、調査結果格納テーブル322に格納されているデータを出力したが(図7のステップS110)、これ以外のデータを出力してもよい。例えば、結果出力部314は、ライセンスを調査したソースコードのうち、公開が義務づけられているラインセンスを有するものや、非推奨のライセンスを有するものが有る場合に、ソフトウェア全体にライセンスに関する問題があるとして、警告メッセージを出力部350に出力してもよい。
For example, in the above embodiment, the
また、例えば、結果出力部314は、判別したライセンスの条文をインターネット400を介して取得し、付加情報としてライセンス結果とともに出力させてもよい。また、結果出力部314は、予め定めた形式(PDF形式、HTML形式、XML形式等)で取得したライセンスの条文を1つにまとめたファイルを出力させてもよい。
Further, for example, the
また、上記実施形態では、ライセンス管理装置300と利用者端末100と開発環境サーバ200とが、別々の機器により実現されている例が記載されているが、各装置の上述した機能が、1つのパーソナルコンピュータ、サーバ等の機器によって実現されてもよい。
Further, in the above embodiment, an example in which the
例えば、本実施形態に係るライセンス管理装置300の動作を規定する動作プログラムを既存のパーソナルコンピュータや情報端末機器等に適用することで、当該パーソナルコンピュータ等を本発明に係るライセンス管理装置300として機能させることも可能である。
For example, by applying an operation program that defines the operation of the
また、このようなプログラムの配布方法は任意であり、例えば、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネット400などの通信ネットワークを介して配布してもよい。
The distribution method of such a program is arbitrary, and for example, a computer-readable CD-ROM (Compact Disk Read-Only Memory), DVD (Digital Versatile Disk), MO (Magneto Optical Disk), memory card, etc. can be read. It may be stored in a recording medium and distributed, or may be distributed via a communication network such as the
1 ライセンス管理システム、100 利用者端末、200 開発環境サーバ、300 ライセンス管理装置、400 インターネット、310 制御部、320 記憶部、321 ライセンス情報テーブル、322 調査結果格納テーブル、330 通信部、340 入力部、350 出力部、360 バス、311 プログラム取得部、312 依存関係判別部、313 ライセンス調査部、314 結果出力部、315 アーカイブ作成部 1 License management system, 100 user terminals, 200 development environment server, 300 license management device, 400 Internet, 310 control unit, 320 storage unit, 321 license information table, 322 survey result storage table, 330 communication unit, 340 input unit, 350 output unit, 360 bus, 311 program acquisition unit, 312 dependency determination unit, 313 license investigation unit, 314 result output unit, 315 archive creation unit
Claims (7)
ライセンスの種類毎に、当該ライセンスを特定するためのライセンス特定情報と、当該ライセンスを有するソースコードに依存する他のソースコードにも当該ライセンスが伝播するか否かを示す伝播フラグと、を記憶するライセンス情報記憶部と、
前記ライセンス情報記憶部に記憶されているライセンス特定情報を参照して前記複数のプログラムのソースコードそれぞれが有するライセンスを判別するとともに、判別したライセンスの前記伝播フラグが伝播することを示している場合には、前記依存関係判別部による判別結果に基づいて、当該ライセンスを有するソースコードに依存する他のソースコードを特定し、該他のソースコードに対しても当該ライセンスを有すると判別するライセンス調査部と、
前記ライセンス調査部による判別結果を出力する結果出力部と、
を備えるライセンス管理装置。 A dependency determination unit that determines the dependency between the source codes of a plurality of programs constituting the software based on the build information that is a log when building the software.
For each type of license, the license identification information for identifying the license and the propagation flag indicating whether or not the license is propagated to other source code depending on the source code having the license are stored. License information storage and
When the license possessed by each of the source codes of the plurality of programs is determined by referring to the license identification information stored in the license information storage unit, and the propagation flag of the determined license is shown to be propagated. is on the basis of the dependency determination unit according to the determination result, to identify other source code that depends on the source code with the license, the license check unit for determining that also has the license to said other source code When,
A result output unit that outputs the determination result by the license investigation unit, and
License management device.
前記ビルド情報に基づいて、前記複数のプログラムのソースコード間の静的な依存関係を判別し、 Based on the build information, the static dependency between the source code of the plurality of programs is determined.
前記ソフトウェアをビルドすることによって生成されるソフトウェア生成物に基づいて、前記複数のプログラムのソースコード間の動的な依存関係を判別する、 Determining the dynamic dependencies between the source code of the plurality of programs based on the software products generated by building the software.
請求項1に記載のライセンス管理装置。 The license management device according to claim 1.
請求項1又は2に記載のライセンス管理装置。 The build information is a log when a pseudo build, which is a build that does not generate software products, is executed.
The license management device according to claim 1 or 2.
請求項1から3の何れか1項に記載のライセンス管理装置。 When the predetermined license is a license that obliges the disclosure of the source code, an archive creation unit for creating an archive of the source code having the predetermined license determined by the license investigation unit is further provided.
The license management device according to any one of claims 1 to 3.
請求項1から4の何れか1項に記載のライセンス管理装置。 The result output unit outputs a list of license texts determined by the license investigation unit.
The license management device according to any one of claims 1 to 4.
ソフトウェアをビルドする際のログであるビルド情報に基づいて、前記ソフトウェアを構成する複数のプログラムのソースコード間の依存関係を判別する依存関係判別ステップと、
ライセンスの種類毎に、当該ライセンスを特定するためのライセンス特定情報と、当該ライセンスを有するソースコードに依存する他のソースコードにも当該ライセンスが伝播するか否かを示す伝播フラグと、を記憶するライセンス情報記憶ステップと、
前記ライセンス特定情報を参照して前記複数のプログラムのソースコードそれぞれが有するライセンスを判別するとともに、判別したライセンスの前記伝播フラグが伝播することを示している場合には、前記依存関係判別ステップでの判別結果に基づいて、当該ライセンスを有するソースコードに依存する他のソースコードを特定し、該他のソースコードに対しても当該ライセンスを有すると判別するライセンス調査ステップと、
を実行するライセンス管理方法。 The computer
A dependency determination step for determining the dependency between the source codes of a plurality of programs constituting the software based on the build information which is a log when the software is built, and a dependency determination step.
For each type of license, the license identification information for identifying the license and the propagation flag indicating whether or not the license is propagated to other source code depending on the source code having the license are stored. License information storage step and
When the license possessed by each of the source codes of the plurality of programs is determined by referring to the license identification information and the propagation flag of the determined license is indicated to be propagated, the dependency determination step is performed. based on the determination result, to identify other source code that depends on the source code with the license, and the license investigation step of determining to have the license against said other source code,
License management method to execute.
ソフトウェアをビルドする際のログであるビルド情報に基づいて、前記ソフトウェアを構成する複数のプログラムのソースコード間の依存関係を判別する依存関係判別部、
ライセンスの種類毎に、当該ライセンスを特定するためのライセンス特定情報と、当該ライセンスを有するソースコードに依存する他のソースコードにも当該ライセンスが伝播するか否かを示す伝播フラグと、を記憶するライセンス情報記憶部、
前記ライセンス情報記憶部に記憶されているライセンス特定情報を参照して前記複数のプログラムのソースコードそれぞれが有するライセンスを判別するとともに、判別したライセンスの前記伝播フラグが伝播することを示している場合には、前記依存関係判別部による判別結果に基づいて、当該ライセンスを有するソースコードに依存する他のソースコードを特定し、該他のソースコードに対しても当該ライセンスを有すると判別するライセンス調査部、
として機能させるプログラム。 Computer,
Dependency determination unit that determines the dependency between the source codes of a plurality of programs that make up the software based on the build information that is the log when building the software.
For each type of license, the license identification information for identifying the license and the propagation flag indicating whether or not the license is propagated to other source code depending on the source code having the license are stored. License information storage,
When the license possessed by each of the source codes of the plurality of programs is determined by referring to the license identification information stored in the license information storage unit, and the propagation flag of the determined license is shown to be propagated. is on the basis of the dependency determination unit according to the determination result, to identify other source code that depends on the source code with the license, the license check unit for determining that also has the license to said other source code ,
A program that functions as.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017033559A JP6937589B2 (en) | 2017-02-24 | 2017-02-24 | License management device, license management method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017033559A JP6937589B2 (en) | 2017-02-24 | 2017-02-24 | License management device, license management method, and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018139054A JP2018139054A (en) | 2018-09-06 |
JP6937589B2 true JP6937589B2 (en) | 2021-09-22 |
Family
ID=63451391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017033559A Active JP6937589B2 (en) | 2017-02-24 | 2017-02-24 | License management device, license management method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6937589B2 (en) |
-
2017
- 2017-02-24 JP JP2017033559A patent/JP6937589B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2018139054A (en) | 2018-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11868231B2 (en) | System and method for evaluating code by a hybrid of local and cloud-based computers | |
US10019256B2 (en) | Systems and methods for incremental software development | |
US9367305B1 (en) | Automatic container definition | |
US9342273B1 (en) | Automatic communications graphing for a source application | |
US11625528B2 (en) | System, method and computer program product to generate a web application using reusable themes | |
US20180081982A1 (en) | Managing a display of results of a keyword search on a web page by modifying attributes of a dom tree structure | |
JP7507564B2 (en) | Automatically finding the location of translated text in localized applications | |
US20160380915A1 (en) | Rules-Based Workflow Messaging | |
CN111158674A (en) | Component management method, system, device and storage medium | |
US9965256B2 (en) | Method and system for evaluating computational algorithms described in printed publications | |
CN107608672B (en) | UI module manager, UI module management method and system | |
CN105159686A (en) | Website page development method and apparatus | |
US20220206934A1 (en) | Test apparatus, test method and program | |
Griffiths et al. | React Cookbook | |
JP6937589B2 (en) | License management device, license management method, and program | |
JP6045707B2 (en) | License management apparatus, license management method, and program | |
JP5758311B2 (en) | Test code generation device, test code generation method, test code generation program | |
JP6717140B2 (en) | Analysis program, analysis method, and analysis device | |
JP7168532B2 (en) | Information processing system, information processing method, development device, and program for development device | |
JP5500968B2 (en) | Information processing apparatus, information processing method, and information processing program | |
Serrão | SMART: Static and Dynamic Analysis to Reverse Engineer Android Applications | |
US11960560B1 (en) | Methods for analyzing recurring accessibility issues with dynamic web site behavior and devices thereof | |
JP2019179383A (en) | Api processing method, terminal, and api processing program | |
JP2011113298A (en) | Shared source code analysis system, program, and recording medium | |
JP2023055358A (en) | Simulation method for microcomputer control program and simulation system therefor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20191216 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200930 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201020 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20201216 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210205 |
|
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: 20210803 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210831 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6937589 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |