JP2008217292A - ソフトウェア部品テンプレート管理システム - Google Patents
ソフトウェア部品テンプレート管理システム Download PDFInfo
- Publication number
- JP2008217292A JP2008217292A JP2007052294A JP2007052294A JP2008217292A JP 2008217292 A JP2008217292 A JP 2008217292A JP 2007052294 A JP2007052294 A JP 2007052294A JP 2007052294 A JP2007052294 A JP 2007052294A JP 2008217292 A JP2008217292 A JP 2008217292A
- Authority
- JP
- Japan
- Prior art keywords
- component
- template
- source code
- software component
- variable item
- 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.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【解決手段】 ソフトウェア部品のテンプレートを保持するサーバと、ソフトウェア部品の登録、取得を指示するクライアント端末とから構成し、サーバでは、クライアント端末から送信されたソフトウェア部品のソースコードをテンプレート化してリポジトリに保存するとともに、テンプレート中の各可変項目にIDを付与して管理し、また、クライアント端末からの要求に応じて、リポジトリ内のテンプレートとユーザが入力したカスタマイズ情報とから、目的のソフトウェア部品のソースコードを生成してユーザに提供する。
【選択図】 図1
Description
ソフトウェア部品のソースコードを再利用するプロジェクトの多くでは、プロジェクトごとの規約に合うようにソフトウェア部品のソースコードのカスタマイズを行った上で再利用する。例えば、ソースコード中で宣言するパッケージ、クラス、関数、属性などの各項目の名称については、プロジェクトごとに定められた命名規約に従って変更が入る項目である。しかし、これらの変更を開発者自身が手作業で行うのは手間がかかる上、ミスが混入しやすく非効率である。
ソフトウェア部品のソースコードを、テンプレートとカスタマイズ情報をもとに生成する手段に関連する公知技術文献としては、下記の特許文献がある。
しかし、ソースコードを編集してテンプレート化する作業は人手で行うと手間がかかる。ソフトウェアを開発するプロジェクトでは、ソースコードは作成しても、それを編集してテンプレート化する作業まではコスト低減等のため実施しないことが多く、これがテンプレートの蓄積を阻害する要因となることもある。
また、ソフトウェア部品同士を組み合わせて利用する際、一方が他方で定義された項目を参照したり継承したりといった依存関係があると、一方をカスタマイズした際には、他方もそれに合わせたカスタマイズを行って整合性を維持しなければならないという問題がある。自動生成されたソースコード同士を組み合わせる際にも前記の整合性の問題が発生し得るが、自動生成の元であるテンプレートを作成する段階で、依存関係のあるソフトウェア部品同士のテンプレートの整合性を保持しておけば、自動生成後のソースコード間では整合性の問題の発生を防ぐことができる。
前記サーバが、
前記クライアント端末より送信されたソフトウェア部品のソースコードの構文木を生成した後、当該構文木中に出現する可変項目を抽出し、当該可変項目を一意に識別するための可変項目IDに置き換えたテンプレートを生成し、前記記憶手段内に登録する部品登録手段と、前記記憶手段内に登録済みのテンプレートからソフトウェア部品のソースコードを生成してクライアント端末に送信する部品取得手段とを備えることを特徴とする。
また、前記部品登録手段は、登録対象のソフトウェア部品のテンプレートについて依存関係がある既存のテンプレートとの比較により可変項目IDを既存テンプレートの可変項目IDに整合するように補正する手段を備えることを特徴とする。
また、前記部品取得手段は、クライアント端末より送信されたカスタマイズ情報を、登録済みのテンプレートの可変項目に埋め込むことによってソースコードを生成するソースコード生成手段を備えることを特徴とする。
(1)ソフトウェア部品のソースコード中の可変項目を自動的に抽出してテンプレート化するため、可変項目の抽出の漏れがなくなるとともに、ソフトウェア部品提供者の負担を軽減できる。
(2)本システムから取得したソフトウェア部品のソースコードは、ソフトウェア部品間の整合性を維持するため、開発者による修正を経なくてもそのまま正常にコンパイル・実行を行える。
図1は、本発明の実施の形態の一例を示すシステム構成図である。
本実施形態のソフトウェア部品テンプレート管理システムは、ソフトウェア部品のテンプレートを保持するサーバ101と、ユーザが要求を出す複数のクライアント端末102とからなり、サーバ101とクライアント端末102の間はネットワークで接続されている。
サーバ101は、リポジトリ103、部品登録手段104、部品取得手段105を備えている。
部品登録手段104は、ソフトウェア部品をテンプレート化して登録するための手段として、ソースコード解析手段106、テンプレート生成手段107、可変項目ID発行手段108とを備えている。
前記部品取得手段105は、ユーザから要求されたソフトウェア部品を提供するための手段として、ソースコード生成手段109を備えている。
また前記リポジトリ103は、登録済みのソフトウェア部品のテンプレート110と、登録済みのソフトウェア部品を管理する部品管理表111、ソフトウェア部品間の依存関係を管理する部品依存関係管理表112、テンプレート110内に出現する可変項目を管理する可変項目管理表113を格納している。
部品ID201は、各部品を一意に特定するために割り振られるキーである。
部品名称202は、部品の登録時にユーザが入力する部品の名称である。
部品機能説明203は、部品の登録時にユーザが入力する、部品の機能についての説明文である。
例えば、部品ID=P000001の部品には、部品名称として「文字列コンバータ」が登録され、その部品機能説明として「変換ルールに従い・・・・・必要があります」といた機能説明文が登録される。
部品管理表111は、本システムに部品が1件登録されるたびに、当該部品に関する1行が追加される。
この部品依存関係管理表112には、部品ID301と依存部品ID302が登録される。
部品ID301と依存部品ID302は、いずれも部品管理表111上に記録されている部品ID201を指し、部品ID301で示される部品が、依存部品ID302で示される部品に依存していることを表す。即ち、依存部品IDは、親となる部品のIDである。例えば、部品ID=P0004のように、親となる部品が複数存在する場合には、これらの親部品のIDが全て依存部品IDとして登録される。
この部品依存関係管理表112は、本システムにユーザが部品を登録する際に依存部品情報の指定を行った場合にのみ、行が追加される。
この可変項目管理表113には、可変項目ID401、デフォルト値402、項目種別403、上位項目404、発行日時405が登録される。
可変項目ID401は、テンプレート110中の可変項目を一意に特定するためのキーであり、テンプレート中に埋め込んだ際に他の語句との識別を容易にするため、常に先頭と末尾に「$」を付加するものとする。
デフォルト値402は、当該可変項目に埋め込まれるカスタマイズ情報のデフォルト値である。ユーザが本システムにソフトウェア部品を登録する際に送信したソースコードにおいて、可変項目に元々割り当てられていた値がソースコード解析手段106によって取得され、これがデフォルト値402として登録されるものとする。
項目種別403は、当該可変項目の種別を示す。
上位項目404は、ソースコード解析手段106によるソースコード解析の結果、当該可変項目が他の可変項目に属していると判明した場合に、その上位可変項目の可変項目IDを示す。
発行日時405は、当該可変項目の発行日時を示す。
まず、クライアント端末102がサーバ101の部品登録手段104にアクセスすると、部品登録手段104は、部品登録画面をクライアント端末102に表示する(ステップ501)。
クライアント端末102のユーザは、表示された部品登録画面にて、登録部品情報および依存部品情報を入力し、部品登録手段104に送信する(ステップ502)。
部品登録手段104は、ステップ502で入力された情報の中に依存部品情報が含まれるか否かによって以後の処理を分岐する。
ステップ502で依存部品情報が入力されず登録部品情報のみが入力された場合、ソースコード解析手段106が、受信した登録部品のソースコードの解析を実行し、登録部品の構文木を生成する(ステップ503)。
なお、この構文木を生成する技術は、コンパイラ等において従来から使用されている周知技術であるので、その詳細な説明は省略する。
可変項目ID発行手段108は、ステップ503の構文木の解析結果を受け取り、解析結果中のパッケージ名、クラス名、メソッド名、フィールド名、変数名を可変項目とし、各可変項目を一意に識別できる可変項目IDを発行する(ステップ504)。そしてステップ511に進む。
可変項目ID発行手段108は、ステップ505の解析結果を受け取り、解析結果中のパッケージ名、クラス名、メソッド名、フィールド名、変数名を可変項目とし、各可変項目を一意に識別できる仮の可変項目IDを発行する(ステップ506)。
次に、テンプレート生成手段107は、依存部品ソースコードとステップ506で発行された仮可変項目ID一覧を受け取り、登録対象部品のソースコード中の各可変項目を仮可変項目IDで置換した仮テンプレートを生成する(ステップ507)。
さらに可変項目ID発行手段108は、ステップ508で作成した可変項目ID対応表における既存可変項目IDの競合を解消し、仮可変項目IDと既存可変項目IDが1対1の関係になるようにする(ステップ509)。
ステップ509における既存可変項目IDの競合解消に伴い、既存可変項目IDの一部が変更となった場合、部品登録手段104は、リポジトリ103に格納されている既存テンプレートおよび可変項目管理表113の更新を行い、既存可変項目IDの変更を反映する。(ステップ510)
そしてステップ511に進む。
そして部品登録手段104は、ステップ511で生成したテンプレートをリポジトリ103に格納する(ステップ512)。さらに部品登録手段104は、ステップ502でユーザが入力した部品名称、部品機能説明を部品管理表111に登録し、ステップ502でユーザが入力した依存部品情報をもとに部品依存関係管理表112にデータを登録し、ステップ503またはステップ505におけるソースコード解析結果と、ステップ504またはステップ509で作成された可変項目ID一覧をもとに可変項目管理表113にデータを登録する(ステップ513)。
最後に、部品登録手段104は、登録完了通知をクライアント端末102に返却する(ステップ514)。
そこで、ステップ509の競合解消処理により、発行日時が最も古い可変項目IDに統一する処理を行う。これにより、親部分と子部品の可変項目IDは1対1の関係に整合される。
まず、図6の可変項目ID対応表において既存部品の可変項目IDが2つ以上指定されている箇所について、可変項目管理表113を参照して発行日時を取得し、発行日時が最も古い可変項目IDを特定する(ステップ701,702)。
次に、更新対象の可変項目IDの全てについて、発行日時が最も古い可変項目IDに置き換え、可変項目管理表113を更新する(ステップ703〜705)。
次に、発行日時が最も古い可変項目IDを除く全ての可変項目IDを削除し、可変項目ID対応表を更新する(ステップ706〜708)。
クライアント端末102がソフトウェア部品を取得すべくサーバ101の部品取得手段105にアクセスすると、部品取得手段105は、部品管理表111および部品依存関係管理表112からデータを取得して部品一覧画面を作成し、クライアント端末102上に表示する(ステップ801)。
ユーザは、クライアント端末102に表示された部品一覧画面にて、取得したい部品を全て選択する(ステップ802)。
ユーザは、カスタマイズ情報入力画面にて、各可変項目に対応するカスタマイズ値を入力する(ステップ804)。
部品取得手段105は、ステップ802で選択された全ての部品について、リポジトリ103から該当するテンプレート110を取得し、ステップ804で入力されたカスタマイズ値をテンプレート110内の可変項目に埋め込むことによってソースコードを生成する(ステップ805)。
最後に部品取得手段105は、ステップ805で生成したソースコードをクライアント端末102に送信する(ステップ806)。
部品登録画面は、登録部品情報901の入力欄、依存部品情報902の入力欄、部品登録実行ボタン903によって構成される。
登録部品情報901は、登録部品の部品名称904、部品機能説明905、登録部品のソースコードファイルパス906から成り、いずれも入力必須とする。
依存部品情報902は、登録しようとしているソフトウェア部品が本システムに既に登録済みのいくつかのソフトウェア部品に依存している場合のみ入力必須とし、依存部品の部品ID907、依存部品のソースコードファイルパス908から成る。
登録部品ソースコードファイルパス906と依存部品ソースコードファイルパス908については、予め当該部品のソースコードファイルをクライアント端末102のローカルディスク等に格納しておき、そのファイルのパスを指定するものとする。
ユーザが登録実行ボタン903を押すと、ユーザが入力した登録部品情報901、依存部品情報902、登録部品ソースコードファイルパス906で指定したファイル本体、および依存部品ソースコードファイルパス908で指定したファイル本体が、部品登録手段104に送信される。
部品ID1001、部品名称1002、部品機能説明1003は、部品管理表111から取得したデータを表示する。
依存部品1004は、当該部品が依存している他部品の部品IDを部品依存関係管理表112から取得して表示する。
取得チェック欄1005には、ユーザが、取得したい部品にチェックをつけるためのチェックボックスを表示する。なお、ユーザがチェックをつけた部品が他の部品に依存している場合は、依存部品のチェックボックスにも自動でチェックが入り、依存部品を強制的に同時取得させる仕組みとする。
ユーザがカスタマイズ情報入力ボタン1006を押すと、カスタマイズ情報入力画面へ遷移する。
カスタマイズ情報1101の入力欄では、部品一覧画面にてチェックした部品のテンプレート内に出現する全ての可変項目について、ユーザがカスタマイズ値を指定することが出来る。
カスタマイズ情報1101の入力欄は、可変項目管理表113からデータを取得して、上位項目404のデータをもとに各項目を階層的に表示するとともに、テキストボックス内に各項目のデフォルト値402を表示し、テキストボックスの上に項目種別403を表示する。
ユーザは、テキストボックス内の値を編集することによって、各項目のカスタマイズ値を入力できる。
ユーザが部品登録実行ボタン1102を押すと、カスタマイズ情報1101が部品取得手段105に送信される。
登録部品ソースコード1201は、部品を登録しようとするユーザが、部品登録画面を通じて送信するソースコードの例である。
テンプレート1202は、テンプレート生成手段107によってソースコード1201が編集され、可変項目が可変項目ID401によって置き換えられて生成されたテンプレートの例である。
生成ソースコード1203は、ソースコード生成手段109によって、テンプレート1202をもとに生成されるソースコードの例であり、テンプレート1202中の可変項目IDが、ユーザによって入力されたカスタマイズ情報で置き換えられたものである。
102 クライアント端末
103 リポジトリ
104 部品登録手段
105 部品取得手段
106 ソースコード解析手段
107 テンプレート生成手段
108 可変項目ID発行手段
109 ソースコード生成手段
110 テンプレート
Claims (3)
- テストが完了したソフトウェア部品をテンプレートの形態で記憶手段内に保持するサーバと、ユーザが前記サーバに対してソフトウェア部品の登録、取得を指示するクライアント端末とから成るソフトウェア部品テンプレート管理システムであって、
前記サーバが、
前記クライアント端末より送信されたソフトウェア部品のソースコードの構文木を生成した後、当該構文木中に出現する可変項目を抽出し、当該可変項目を一意に識別するための可変項目IDに置き換えたテンプレートを生成し、前記記憶手段内に登録する部品登録手段と、
前記記憶手段内に登録済みのテンプレートからソフトウェア部品のソースコードを生成してクライアント端末に送信する部品取得手段とを備えることを特徴とするソフトウェア部品テンプレート管理システム。 - 前記部品登録手段は、登録対象のソフトウェア部品のテンプレートについて依存関係がある既存のテンプレートとの比較により可変項目IDを既存テンプレートの可変項目IDに整合するように補正する手段を備えることを特徴とする請求項1に記載のソフトウェア部品テンプレート管理システム。
- 前記部品取得手段は、クライアント端末より送信されたカスタマイズ情報を、登録済みのテンプレートの可変項目に埋め込むことによってソースコードを生成するソースコード生成手段を備えることを特徴とする請求項1または2に記載のソフトウェア部品テンプレート管理システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007052294A JP4963070B2 (ja) | 2007-03-02 | 2007-03-02 | ソフトウェア部品テンプレート管理システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007052294A JP4963070B2 (ja) | 2007-03-02 | 2007-03-02 | ソフトウェア部品テンプレート管理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008217292A true JP2008217292A (ja) | 2008-09-18 |
JP4963070B2 JP4963070B2 (ja) | 2012-06-27 |
Family
ID=39837277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007052294A Expired - Fee Related JP4963070B2 (ja) | 2007-03-02 | 2007-03-02 | ソフトウェア部品テンプレート管理システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4963070B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010267090A (ja) * | 2009-05-14 | 2010-11-25 | Canon Inc | 情報処理装置、情報処理装置の制御方法、及びプログラム |
JPWO2010134123A1 (ja) * | 2009-05-18 | 2012-11-08 | 株式会社Nst | 試験支援装置および試験支援方法 |
JP2013114575A (ja) * | 2011-11-30 | 2013-06-10 | Nec Corp | 情報処理装置、情報処理方法及び情報処理プログラム |
JP2021039393A (ja) * | 2019-08-30 | 2021-03-11 | 株式会社日立製作所 | パッケージ化支援システムおよびパッケージ化支援方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03144730A (ja) * | 1989-10-30 | 1991-06-20 | Shimadzu Corp | プログラム部品の再利用支援装置 |
JPH0981377A (ja) * | 1995-09-12 | 1997-03-28 | Fuji Electric Co Ltd | 再利用プログラムの仕様書の自動生成装置 |
JPH09134282A (ja) * | 1995-11-08 | 1997-05-20 | Hitachi Ltd | プログラム作成方法 |
JPH09160765A (ja) * | 1995-12-08 | 1997-06-20 | Hitachi Ltd | ソフトウェア部品作成方法 |
JP2003280900A (ja) * | 2002-03-25 | 2003-10-02 | Duo Systems:Kk | 知識再利用システム |
JP2005234959A (ja) * | 2004-02-20 | 2005-09-02 | Nec Corp | テンプレート作成装置、プログラム、および方法 |
JP2006268292A (ja) * | 2005-03-23 | 2006-10-05 | Nec Corp | テンプレート編集装置およびテンプレート編集用プログラム |
-
2007
- 2007-03-02 JP JP2007052294A patent/JP4963070B2/ja not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03144730A (ja) * | 1989-10-30 | 1991-06-20 | Shimadzu Corp | プログラム部品の再利用支援装置 |
JPH0981377A (ja) * | 1995-09-12 | 1997-03-28 | Fuji Electric Co Ltd | 再利用プログラムの仕様書の自動生成装置 |
JPH09134282A (ja) * | 1995-11-08 | 1997-05-20 | Hitachi Ltd | プログラム作成方法 |
JPH09160765A (ja) * | 1995-12-08 | 1997-06-20 | Hitachi Ltd | ソフトウェア部品作成方法 |
JP2003280900A (ja) * | 2002-03-25 | 2003-10-02 | Duo Systems:Kk | 知識再利用システム |
JP2005234959A (ja) * | 2004-02-20 | 2005-09-02 | Nec Corp | テンプレート作成装置、プログラム、および方法 |
JP2006268292A (ja) * | 2005-03-23 | 2006-10-05 | Nec Corp | テンプレート編集装置およびテンプレート編集用プログラム |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010267090A (ja) * | 2009-05-14 | 2010-11-25 | Canon Inc | 情報処理装置、情報処理装置の制御方法、及びプログラム |
JPWO2010134123A1 (ja) * | 2009-05-18 | 2012-11-08 | 株式会社Nst | 試験支援装置および試験支援方法 |
JP2013114575A (ja) * | 2011-11-30 | 2013-06-10 | Nec Corp | 情報処理装置、情報処理方法及び情報処理プログラム |
JP2021039393A (ja) * | 2019-08-30 | 2021-03-11 | 株式会社日立製作所 | パッケージ化支援システムおよびパッケージ化支援方法 |
JP7231518B2 (ja) | 2019-08-30 | 2023-03-01 | 株式会社日立製作所 | パッケージ化支援システムおよびパッケージ化支援方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4963070B2 (ja) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2010212391B2 (en) | Integration environment generator | |
CN110968325B (zh) | 一种小程序转换方法及装置 | |
US6847981B2 (en) | System and method for generating EJB components from reusable business logics in servlet program | |
US8005878B2 (en) | Providing processing instructions for updating schema | |
US8954840B2 (en) | Annotation processing of computer files | |
CN111158674B (zh) | 组件管理方法、系统、设备及存储介质 | |
US20130227519A1 (en) | Methods and systems for parsing data objects | |
WO2020015191A1 (zh) | 业务规则的发布管理方法、电子装置及可读存储介质 | |
KR102171436B1 (ko) | Api 통합관리를 위한 클라우드 기반의 api 메타데이터 관리방법 및 시스템 | |
JP6479184B2 (ja) | コンピュータ実行可能なモデルリバースエンジニアリング方法及び装置 | |
US8548963B2 (en) | Context sensitive media and information | |
JP4963070B2 (ja) | ソフトウェア部品テンプレート管理システム | |
JP2008225898A (ja) | 変換装置、変換プログラム及び変換方法 | |
US7721279B1 (en) | Packaging information integration applications | |
JP2009301084A (ja) | 情報処理装置および情報処理方法 | |
Le Zou et al. | On synchronizing with web service evolution | |
JP2008090707A (ja) | ソフトウェアメタデータ解析装置およびその方法 | |
JP2006236375A (ja) | Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラム | |
CN117785274B (zh) | 一种基于gitlab和微服务架构的拆版本方法 | |
US20040046793A1 (en) | Program generation method | |
CN116028138B (zh) | 应用发布方法及装置 | |
Danjou | Serious Python: black-belt advice on deployment, scalability, testing, and more | |
Strittmatter et al. | Supplementary material for the evaluation of the layered reference architecture for metamodels to tailor quality modeling and analysis | |
JP2012150740A (ja) | プログラム生成装置及び方法 | |
Humm et al. | Model-driven development–hot spots in business information systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090716 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111124 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111130 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120130 |
|
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: 20120321 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120321 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150406 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |