JP4493269B2 - プログラム編集装置及びプログラム - Google Patents
プログラム編集装置及びプログラム Download PDFInfo
- Publication number
- JP4493269B2 JP4493269B2 JP2002380356A JP2002380356A JP4493269B2 JP 4493269 B2 JP4493269 B2 JP 4493269B2 JP 2002380356 A JP2002380356 A JP 2002380356A JP 2002380356 A JP2002380356 A JP 2002380356A JP 4493269 B2 JP4493269 B2 JP 4493269B2
- Authority
- JP
- Japan
- Prior art keywords
- file
- division
- jsp
- program
- divided
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータを用いてプログラムの編集を支援する技術に関し、特にプログラムの自動分割を実現する方法に関する。
【0002】
【従来の技術】
インターネット等で利用されるWWW(World Wide Web:以下、ウェブと称す)技術が使用される環境では、ウェブサーバ(以下、単にサーバと称す)からウェブクライアント(以下、単にクライアントと称す)へHTMLファイル(ウェブページ)を送信することにより、ウェブページの機能として種々のサービスを提供することができる。今日では、個々のユーザにきめ細かく対応する等の目的から、クライアントからのアクセス条件(ユーザの別や時間的な条件等)に応じて、サーバにおいてウェブページを動的に生成することが行われている。
【0003】
このウェブページを動的に生成する機構として、Java(米国サン・マイクロシステムズ社の商標)の実行環境で利用されるJSP(Java Server Pages)や、米国マイクロソフト社のIIS(Internet Information Service)で利用されるASP(Active Server Pages)等がある。これらは、テキストデータ、サーバ側のスクリプト、ロジックをカプセル化したオブジェクトへのアクセスを混在させて記述可能であり、かつサーバ側の実行プログラムに変換されるアプリケーションロジックである。そして、サーバにおいて、クライアントの要求に応じてスクリプトを実行し、当該スクリプト部分を実行結果で置き換えてクライアントに返すといった処理を実現する。
【0004】
ところで、上記のアプリケーションロジックを分割することで、ウェブページを動的に生成する機構を効率的に利用することができる。以下、具体的に説明する。
サーバにおいて動的に生成されるウェブページ中には、変更の頻度が高い部分と変更の頻度が低い部分とが存在する。そのため、生成されたウェブページをキャッシュすると、変更の頻度が高い部分に合わせて、キャッシュしたウェブページが無効化されるため、キャッシュの効果が低くなってしまう。これに対し、ウェブページの部分ごとにおける変更の頻度に合わせてアプリケーションロジックを分割し、分割された個々のアプリケーションロジックにて生成されるウェブページの断片(フラグメント)を別々にキャッシュすることが考えられる。これにより、頻繁に変更される部分があっても、その部分の断片のみを更新すれば対応できることとなる。したがって、ウェブページ全体のキャッシュを無効化する必要がなく、キャッシュの効率化を図ることが可能になる。
また、ウェブページの生成作業を複数のサーバ上で行い、負荷分散により実行性能を向上させる機能を持ったサーバでは、アプリケーションロジックを適切に分割して実行することにより、負荷を軽減し効率的に作業を行うことができる。さらに、アプリケーションロジック中から共用可能な部分を抽出し、他のアプリケーションロジックにおいても使用可能とすることにより、アプリケーションロジックの開発を効率よく行うことができる。
【0005】
上記のような効果を得るべく、アプリケーションロジックを分割する場合、従来は、アプリケーションロジックの開発者等が手作業にて分割していた。また、このアプリケーションロジックを分割する作業に利用可能な既存の技術が存在する。プログラムスライシング(例えば、非特許文献1参照)、ウェブアプリケーションスライシング(例えば、非特許文献2参照)、メソッド抽出(例えば、非特許文献3参照)等である。
【0006】
【非特許文献1】
Mark Weiser "Program Slicing" IEEE Trans. Software Engineering, July 1984 p.352-357.
【非特許文献2】
F. Ricca and P. Tonella "Web Application Slicing" In Proceedings of IEEE International Conference on Software Maintanance 2001.
【非特許文献3】
K. Maruyama "Automated Method-Extraction Refactoring by Using Block-Based Slicing" In Proceedings of the 2001 symposium on Software reusability.
【0007】
【発明が解決しようとする課題】
上記のように、JSPやASP等のウェブページを動的に生成するためのアプリケーションロジックを分割することにより、ウェブページの生成機構を効率的に利用することが可能となる。しかしながら、従来は、このアプリケーションロジックの分割作業をアプリケーションロジックの開発者等の手作業にて行っており、多大な手間を要していた。
【0008】
アプリケーションロジックを分割する作業に利用可能な既存のツールは存在するが、いずれも、人手を介入せずに、アプリケーションロジックを機械的な作業のみで分割するには不十分である。
例えば、プログラム中のデータ依存と制御依存に基づいて、プログラム中の所定の文に対して影響を与える文を検出し、機械的にプログラムスライス(部分プログラム)を作成する、プログラムスライシングと呼ばれる技術がある。この技術は、プログラム中のデータ依存と制御依存を解析し、依存が存在する文の集合をプログラムスライスとして求めるものであり、プログラムをデバッグしたり運用したりする際に非常に有効である。
しかしながら、プログラムスライシングによって作成されたプログラムスライスは、それのみを正しく実行することが可能であるが、プログラムスライスを切り取った後の残された部分を正確に実行することは考慮していない。したがって、上述したJSP等のアプリケーションロジックの分割にプログラムスライシングを適用した場合、元のウェブページから所定の断片を切り取った後の残りの断片がそのままでは実行できないものである可能性があるため、人手を介してチェックし修正する必要がある。
【0009】
また、ウェブアプリケーションにおけるテキストデータ及びサーバ側のスクリプトを含む複数のページ間の依存を解析し、所定の部分に関連するスクリプトを抽出する、ウェブアプリケーションスライシングと呼ばれる技術がある。これは、プログラムスライシングをウェブアプリケーションに応用したものである。
この場合も、プログラムスライシングと同様、分割したウェブアプリケーションを独立に実行し、その結果をマージすることを想定した技術ではない。そのため、JSP等のアプリケーションロジックを、正しく実行できる形で自動的に分割することはできず、人手による修正を必要とする。
【0010】
また、プログラム中の所定の部分をメソッドとして抽出し、再利用性を向上させる、メソッド抽出と呼ばれる技術がある。
しかしながら、通常のプログラムのメソッド呼び出しでは、任意のデータ型の引数を渡すこと、及び任意のデータ型の返り値を返すことが可能である。したがって、抽出して切り取られる部分と残される部分との間にデータ依存が存在しても良い。これに対し、JSP等のアプリケーションロジックを分割する場合、任意のデータ型の引数を渡すことができないため、このメソッド抽出をそのまま適用することはできない。対応策として、一度文字列に変換し、その変換された引数を受ける側で元のデータに逆変換する手法が考えられるが、これは大きな実行オーバーヘッドを伴うため、現実的ではない。
【0011】
そこで本発明は、サーバにおいてウェブページを動的に生成する機構を実現するアプリケーションロジックを、自動的にかつ適切に分割する手法を提供することを目的とする。
【0012】
【課題を解決するための手段】
上記の目的を達成する本発明は、処理対象であるプログラムファイルを編集する、次のように構成されたプログラム編集装置として実現される。すなわち、このプログラム編集装置は、テキストデータ及びサーバ側のスクリプト及びロジックをカプセル化したオブジェクトへのアクセスを混在させて記述可能であり、かつサーバ側の実行プログラムに変換されるアプリケーションロジックのプログラムファイルを処理対象として格納したファイル格納部と、処理対象のプログラムファイルから分割しようとする部分を指定する分割対象指示の入力を受け付けるユーザインターフェイス制御部と、分割対象指示にて指定された部分と共に分割される随伴分割部分を決定する解析部と、分割対象指示にて指定された部分と随伴分割部分とを元のプログラムファイルから分割する分割実行部とを備えたことを特徴とする。解析部の解析により随伴分割部分を決定し、分割対象指示にて指定された部分と共に分割することにより、処理対象のプログラムファイルと分割後のプログラムファイルとが同じ動作をすることが保証される。
【0013】
この解析部は、分割の方法として、分割前のプログラムファイルから分割によって作成される新たなプログラムファイルにコピーする部分と、当該分割前のプログラムファイルから切り取って当該新たなプログラムファイルに移動する部分とを区別する。より詳細には、プログラムファイルの所定の部分に関して、分割によって作成される新たなプログラムファイルにコピーされても分割後の各プログラムファイルによる全体的な処理の動作において副作用を持たず、かつこの所定の部分のみを元のプログラムファイルから切り取ることによって当該所定の部分以外の部分を切り取る必要が生じる場合、すなわち切り取って新たなプログラムファイルへ移動しても無意味である場合に、この所定の部分を新たなプログラムファイルにコピーする。このように、コピーできるところはコピーして分割することによって、分割後のプログラムファイルの正常な動作を保証し、かつ移動による分割部分を最小限とすることができる。
【0014】
さらに詳細には、この解析部は、プログラムファイルの実行環境に関わらず、アプリケーションロジックの機能的な特徴に基づいて、ロジックをカプセル化したオブジェクトへのアクセスに関するデータ依存を解析する。また、この解析において、プログラムファイルの実行環境から得られるデータに関する依存関係を持つ複数の部分を分割可能と判断する。
【0015】
また、本発明による他のプログラム編集装置は、処理対象のJSP(Java Server Pages)ファイルを表示する表示手段と、この表示手段にて表示されたJSPファイルに対して、分割しようとする所定の部分を指定してなされる分割対象指示を受け付ける受け付け手段と、処理対象のJSPファイルに対してなされた分割対象指示に基づき、この分割対象指示にて指定された部分と共に分割すべき部分を決定する分割対象決定手段と、この分割対象決定手段にて決定された分割すべき部分を識別可能な状態で表示手段に表示させる表示制御手段とを備えることを特徴とする。
【0016】
また上記の目的を達成する他の本発明は、コンピュータを用いて処理対象であるプログラムファイルを分割する、次のようなプログラム編集方法としても実現される。すなわち、このプログラム編集方法は、テキストデータ及びサーバ側のスクリプト及びロジックをカプセル化したオブジェクトへのアクセスを混在させて記述可能であり、かつサーバ側の実行プログラムに変換されるアプリケーションロジックのプログラムファイルを格納した所定の記憶装置から処理対象のプログラムファイルを読み出すステップと、読み出された処理対象のプログラムファイルから分割しようとする部分を指定する分割対象指示の入力を受け付けるステップと、分割対象指示にて指定された部分と共に分割される随伴分割部分を決定するステップと、分割対象指示にて指定された部分と随伴分割部分とを元のプログラムファイルから分割するステップとを含む。
【0017】
さらに本発明は、コンピュータを制御して上述したプログラム編集方法として機能させるプログラム、またはコンピュータに上記のプログラム編集方法における各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリその他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
【0018】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
本発明は、インターネット等のネットワーク上で機能するウェブベースのサーバにおいて、ウェブページを動的に生成する機構を実現するアプリケーションロジック一般に対して、当該アプリケーションロジックを自動分割するために適用できるものであるが、本実施の形態ではJSPにて実現する場合を例として具体的に説明する。
【0019】
図1は、本実施の形態によるデータ処理方法を実現するコンピュータ装置の構成例を示す図である。
図1に示すコンピュータ装置は、プログラム制御により種々のデータ処理を行うCPU100と、CPU100の処理を制御するプログラム及びCPU100にて処理されるデータを格納するメインメモリ200と、各種のコマンドやデータを入力するための入力デバイス300と、CPU100による処理結果を表示出力する表示装置400とを備える。
【0020】
図2は、図1に示したコンピュータ装置にて本実施の形態によるJSP(アプリケーションロジック)の分割処理を行うデータ処理システムの機能構成を示す図である。
図2を参照すると、本実施の形態によるデータ処理システムは、ユーザによる命令の入力を受け付けるためのユーザインターフェイス制御部10と、ユーザインターフェイス制御部10を介して受け付けた分割対象指示に基づき、JSPのファイルの分割を実行するJSP解析部20及び分割実行部30と、処理対象であるJSPのファイルを格納するファイル格納部40と、システム全体の動作を制御する制御部50とを備える。
【0021】
上記構成において、ユーザインターフェイス制御部10、分割実行部30、JSP解析部20及び制御部50は、例えば図1に示したコンピュータ装置におけるプログラム制御されたCPU100にて実現される仮想的なソフトウェアブロックである。CPU100を制御するプログラムは、磁気ディスクや光ディスク、半導体メモリ等の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供される。図1に示す構成では、このプログラムがメインメモリ200に読み込まれて、CPU100を制御する。また、ファイル格納部40は、メインメモリ200にて実現される。なお、メインメモリ200に格納される上記のプログラム及びJSPファイルは、必要に応じて、適宜磁気ディスクその他の外部記録装置に退避されることは言うまでもない。
【0022】
本実施の形態におけるユーザインターフェイス制御部10は、処理対象であるJSPファイルを表示装置400に表示させ、ユーザがキーボードやマウス等の入力デバイス300を用いて入力したJSPファイルに関する分割対象指示及び分割実行命令を受け付けてJSP解析部20に渡す受け付け手段としての機能を持つ。また、JSP解析部20の解析により決定される分割予定箇所を明示したJSPファイルや分割実行部30による処理を経て分割されたJSPファイルを表示装置400に表示させる表示制御手段としての機能を持つ。分割対象指示は、JSPファイルに記述された操作のうち、ユーザが分割したいと考える操作(JSPファイルの部分)を指定することによって行う。この操作については、後で具体例を挙げて説明する。
【0023】
JSP解析部20は、処理対象のJSPファイルにおける依存関係の解析を行う。そして、ユーザインターフェイス制御部10を介して入力された分割対象指示に応じて、当該分割対象指示にかかる操作と一緒に分割すべき操作(JSPファイルの部分、随伴分割部分)を決定する分割対象決定手段としての機能を持つ。ここで、JSP解析部20による解析は、JSPの仕様、すなわち、テキストファイルの内部にスクリプトで処理を記述したこの種のアプリケーションロジックの機能的な特徴を利用して行われる。JSP解析部20による処理の詳細については後述する。
【0024】
分割実行部30は、ユーザインターフェイス制御部10を介して入力された分割実行命令に基づき、JSP解析部20の解析結果にしたがって、処理対象のJSPファイルの分割を実行する。JSPファイルの分割は、元のJSPファイルから切り取った部分を他の新たなJSPファイルとして保存し、元の(切り取られた残りの)JSPファイルから<jsp:include …/>で当該新たなJSPファイルを取り込むことにより行われる。元のJSPファイルが実行されると、<jsp:include …/>タグで指定されたJSPファイルが呼び出され、異なるサーブレットとして実行される。その実行結果は、元のJSPファイルへ返され、元のJSPの実行結果とマージされて、1つのウェブページとなる。
【0025】
ファイル格納部40は、本実施の形態による分割処理の対象であるJSPファイル、及び本実施の形態により分割されたJSPファイルを格納する。実際には、サーバがウェブページの自動生成を行うために用いるJSPファイルを格納した当該サーバの記憶手段と同一としても良い。この場合、当該記憶手段に格納されたJSPファイルの中から、適宜、分割処理の対象として選択されたJSPファイルが読み出されて分割され、戻されることとなる。
【0026】
制御部50は、上記の各機能による動作を制御し、ファイル格納部40におけるJSPファイルの入出力を管理する。例えば、ファイル格納部40からJSPファイルを読み出して各処理のためにユーザインターフェイス制御部10や分割実行部30に渡したり、分割実行部30にて分割されたJSPファイルをファイル格納部40に格納したりする。制御部50の機能は、本実施の形態のデータ処理システムを実現するコンピュータ装置に搭載されたオペレーティングシステム(UNIXや米国マイクロソフト社のウィンドウズ等)の機能として提供することができる。
【0027】
次に、本実施の形態によるJSPファイルの分割処理について、詳細に説明する。
JSPファイルを分割する場合、分割後のJSPファイルの総和において分割前のJSPファイルと同じ動作をすることが保証される必要がある。したがって、分割された当該操作を含む動作が正常に行われて分割前の動作と同じ動作を構成するために、ユーザの分割対象指示により指定されたJSPファイルの操作に加えて、当該操作が依存する他の操作や当該操作に依存する他の操作を分割しなければならない。
【0028】
JSPファイルは、実行時にサーブレットプログラムに変換されるため、そのプログラムにおけるデータ依存と制御依存とを壊さないように分割すれば、分割前と同じ動作をするように分割することが可能である。そこで、JSPファイルから得られるサーブレットプログラム中のデータ依存と制御依存とを解析し、これらが存在する部分を分割不可能と判断してJSPファイルの分割を行うことにより、分割前後でプログラムが同じ動作をすることを保証できると考えられる。しかし、サーブレットプログラム中のデータ依存と制御依存とを解析するためには、サーブレットプログラムを実行するランタイムエンジン(サーブレットエンジン)の仕様等も考慮しなければならず、多大な手間を要するので現実的ではない。
【0029】
また、単純にデータ依存と制御依存が存在する箇所を分割不可能と判断すると、次に挙げる2つの理由により、JSPの仕様に基づきJSPファイルとしては分割可能な箇所でありながら、分割不可能と判断してしまう場合がある。
【0030】
1.分割後も同様に利用可能な変数を考慮しない。
JSPファイルから変換されたサーブレットプログラムを分割することを考えた場合、分割後も分割前と同様に利用可能な変数が存在する。変数が、サーバ側の実行環境から得られるデータである場合である。例えば、あるサーブレットプログラムにおいて、ウェブページのテキストデータの出力先として使用されるI/Oのための変数は、分割されたサーブレットプログラムから同様に利用可能である。
図3は、ウェブページのテキストデータを出力するサーブレットプログラムの部分の例を示す図である。
図3に示すプログラムにおいて、データ依存を壊さないように文10を分割しようとすると、変数outに関するデータ依存のために、文5、6、10が分割不可能と判断されてしまう。しかし、変数outは、分割した全てのサーブレットプログラムから利用可能であり、実際にこれらの文を分割しても問題はない。
【0031】
2.Java Beansのスコープと分割後の実行条件を考慮しない。
JSPファイル中でデータの保存を行う際、Java Beansと呼ばれるJSPの機能を実現するオブジェクト(プログラム部品)が頻繁に利用される。Java Beansは、次に具体的に示すように、JSPファイル中で次のタグ言語を用いることにより操作可能である。
・jsp:useBeanタグ:Java Beansを名前を付けて宣言。もし、このJava Beansのオブジェクトが存在しない場合は作成する。Java Beansは、Javaのクラスとして定義される。
・jsp:setPropertyタグ:Java Beansオブジェクトへ値を定義する。実際には、オブジェクトのsetterメソッド(setプロパティ名)が呼び出される。
・jsp:getPropertyタグ:Java Beansオブジェクトから値を取り出す。実際には、オブジェクトのgetterメソッド(getプロパティ名)が呼び出される。
【0032】
jsp:useBeanタグでJava Beansを宣言する際、生存期間を表すスコープを明示的に指定することができる。Java Beansに与えることが可能な4種類のスコープを示す。
(1)アプリケーション(Application)スコープ:1つのサーブレットコンテナ(1つの仮想マシン(Java Virtual Machine)上で稼動しているサーブレットコンテナ)で生存する。
(2)セッション(Session)スコープ:1つのセッションで生存する。
(3)リクエスト(Request)スコープ:1つのリクエストで生存する。
(4)ページ(Page)スコープ:1つのJSP中で生存する。
【0033】
Java Beansにおけるデータの保存とデータの取得との関係は、変数の定義と使用との関係と同様であり、JSPファイル中にはJava Beansに関するデータ依存関係、すなわち、ロジックをカプセル化したオブジェクトへのアクセスに関するデータ依存関係が存在する。また、Java Beansへデータの保存、取得を行う前には、必ずJava Beansを宣言して、もし必要ならそのオブジェクトを作成する必要がある。
データ依存を壊さないようにJSPファイルを分割しようとする場合、このようなJava Beansに関するデータ依存があると、分割不可能と判断される。しかし、Java Beansに与えられるスコープと分割後の実行条件を考慮すれば、Java Beansに関するデータ依存関係があっても分割可能である場合がある。例えば、アプリケーションスコープのJava Beansの場合、分割後のJSPファイルが1つのサーブレットコンテナ上で実行されているならば、分割されたJSPファイルの全てに渡ってJava Beansが生存しているため、分割しても正常に動作可能である。
【0034】
本実施の形態では、これらに対応するため、分割実行部30によるJSPファイルの分割処理に先だって、JSP解析部20により処理対象のJSPファイルのJava Beansに関する依存関係を個別に解析する。そして、この解析結果に基づき、コピー可能な操作をコピーによって分割する。この解析により、分割対象指示に応じて元のJSPファイルから分割すべき箇所を適切に判断し自動的に分割することが可能となり、かつ分割後の各JSPファイルが正常に動作することが保証される。また、コピー可能な操作をコピーによって分割することにより、分割によって新たに生成されるJSPファイルに移動する部分を最小限にすることができる。
また、JSP解析部20による解析は、ランタイムエンジンに関わらず、JSPを含むこの種のアプリケーションロジックの機能的な特徴を利用して行う。すなわち、Java Beansに関する依存関係やスコープの種類に基づいて解析を行うことにより、多大なオーバーヘッドを生じさせないようにする。
【0035】
JSP解析部20の処理を具体的に説明する。
1.サーバ側の実行環境から得られるデータに関する依存の除去。
すなわち、分割後のJSPファイルから同様に利用可能な変数に関する依存を除去する。
図4は、分割後も各JSPファイルから共通して参照可能な変数(オブジェクト)の一覧を示す図表である。
図4に示した各変数(_jspxFactory、pageContext、session、application、config、out)、あるいはそのクラス(javax.servlet.jsp.JspFactory、javax.servlet.jsp.PageContext、javax.servlet.http.HttpSession、javax.servlet.ServletContext、javax.servlet.ServletConfig、javax.servlet.jsp.JspWriter)は、サーブレットコンテナから得ることが可能であり、そのメソッドは副作用(分割後に動作をしないあるいは正常でない動作をする等の作用)を持たない。そのため、JSPファイルにおいて、これらの変数に関してデータ依存がある箇所を分割しても、分割前と同じ動作をすることが保証される。したがって、JSP解析部20は、処理対象のJSPファイルから生成されたサーブレットプログラム中に、図4に示した変数に関するデータ依存が存在しても、当該依存関係を無視して分割可能と判断し、この判断結果を後述の解析処理に反映させる。図4に示すテーブルは、例えば図1に示したメインメモリ200に保持され、分割実行部30に参照される。
なお、このような情報は、サーブレットコンテナのソースプログラムを詳細に解析することにより得られる。しかし、上記のようにテーブルを作成しておき、機械的に判断を行うことによって、そのような解析に要する手間を省き、効率良く処理を行うことができる。
【0036】
2.ロジックをカプセル化したオブジェクトへのアクセスに関するデータ依存の解析。
JSP解析部20は、ロジックをカプセル化したオブジェクトへのアクセスに関するデータ依存、すなわちJava Beansに関するデータ依存を解析し、分割可否を個別的に判断する。そして、分割後のJSPファイルの総体が分割前のJSPファイルと同一の動作を正常に行うように、JSPファイルにおける分割対象を定義する。以下、この動作を、図5乃至図8のフローチャートを参照して詳細に説明する。なお、以下の説明において、元のJSPファイルとは分割前のJSPファイル及び分割対象指示に基づいて所定の操作を切り取られた後の残りのJSPファイルを指し、分割先のJSPファイルとは元のJSPファイルから切り取った新たなJSPファイルを指すものとする。また、JSPファイル中の操作を分割する動作のうち、元のJSPファイルから所定の操作を複製して分割先のJSPファイルに含める動作を、操作をコピーすると言い、元のJSPファイルから所定の操作を切り取って分割先のJSPファイルに含める動作を、操作を移動すると言う。
【0037】
図5は、JSP解析部20による解析処理の全体的な流れを説明するフローチャートである。
図5に示すように、JSP解析部20は、まず制御部50を介して処理対象のJSPファイルを読み込み、ユーザインターフェイス制御部10を介して入力された分割対象指示に基づき、元のJSPファイルから分割しようとする操作の集合[SEL]を取得する(ステップ501)。そして、集合[SEL]の中で、元のJSPファイルから分割先のJSPファイルへコピー可能な操作を選択し、これを集合[SEL]から削除する(ステップ502)。ここで、コピー可能な操作とは、次の2つである。
・Java Beansの宣言
・ページスコープのJava Beansへの値の定義
これらの操作は、分割先のJSPファイルにコピーしても分割後の各JSPファイルによる全体的な処理の動作において副作用を持たず、かつこれらの部分に依存する部分を一緒に切り取られなければ、分割後の全体の動作に影響を与えないため、以下の解析における対象から除外する。コピーすると決定した部分に関係する(依存する)部分が切り取られない場合、コピーされた部分は副作用を起こさない(全体の実行に影響を与えない)ため、コピーしても無意味であるためである。もし、ここで除外された操作が、分割先のJSPファイルに切り取られる部分に必要である場合、後の解析によりコピーする部分として判断されるため、分割後の動作は正しく保証される。
次に、JSP解析部20は、集合[SEL]に含まれる操作に対して順次、これらの操作と一緒に分割すべき操作を探索する分割操作解析を行う(ステップ503、504、505)。
【0038】
図6は、図5のステップ505に示した分割操作解析の詳細動作を説明するフローチャートである。
図6に示すように、JSP解析部20は、まず、元のJSPファイルから分割先のJSPファイルへ移動する操作の集合[MOVE]と、元のJSPファイルから分割先のJSPファイルへコピーする操作の集合[COPY]とを定義する(ステップ601)。そして、集合[SEL]の中からJava Beansへの操作Sを1つずつ選択し、集合[MOVE]に入れる(ステップ602)。
次に、JSP解析部20は、元のJSPファイルに記述されている操作のうちで、操作Sが依存する他の操作であって、かつ集合[SEL]、[MOVE]、[COPY]のいずれにも含まれない操作Dを抽出し、これを集めた集合[DEP]を定義し(ステップ603)、この集合[DEP]に含まれる各操作に関して後ろ向き依存解析を行う(ステップ604)。
さらに、JSP解析部20は、元のJSPファイルに記述されている操作のうちで、操作Sに依存する他の操作であって、かつ集合[SEL]、[MOVE]、[COPY]のいずれにも含まれない操作D’を抽出し、これを集めた集合[DEP’]を定義し(ステップ605)、この集合[DEP’]に含まれる各操作に関して前向き依存解析を行う(ステップ606)。
【0039】
図7は、図6のステップ604に示した後ろ向き依存解析の詳細動作を説明するフローチャートである。
図7に示すように、集合[DEP]の中から操作Dを1つずつ順次選択し、次の判断及び処理を実行する(ステップ701、702)。
JSP解析部20は、選択された操作Dに関して、まず、操作Dの実行結果がJSPファイルの分割後も操作Sに伝播するか否かを判断する(ステップ703)。所定の操作の実行結果がJSPファイルの分割後に他の操作に伝播する条件は、次の2つである。
・操作対象のJava BeansのスコープがApplication、Session、Requestである。
・分割後のJSPが同一のサーブレットエンジンで実行される。
【0040】
着目する操作Dの実行結果がJSPファイルの分割後に操作Sに伝播するならば、当該操作Dを操作Sと一緒に分割する必要はないので、ステップ701に戻り、未処理の次の操作Dに着目する。
一方、着目する操作Dの実行結果がJSPファイルの分割後に操作Sに伝播しない場合、次にJSP解析部20は、操作Dに依存し、かつ集合[SEL]もしくは集合[MOVE]に含まれない操作が存在するか否かを判断する(ステップ704)。そのような操作が、存在しなければ、操作Dは操作Sのみに必要な操作であるため、当該操作Dを操作Sと一緒に移動する操作と決定する。移動することが決定した操作Dに対しては、改めて分割操作解析(図6参照)を適用する(ステップ705)。
【0041】
これに対し、操作Dに依存し、かつ集合[SEL]もしくは集合[MOVE]に含まれない操作が存在する場合、次にJSP解析部20は、操作Dがコピー可能か否かを判定する(ステップ706)。コピー可能である場合、操作Dをコピーする操作と決定して集合[COPY]に入れ(ステップ707)、当該操作Dが依存する他の操作を新たに操作Dとして集合[DEP]に入れ(ステップ708)、後ろ向き依存解析を再帰的に適用する(ステップ709)。
着目する操作Dがコピー不可能である場合、JSP解析部20は、当該操作Dを操作Sと一緒に移動する操作と決定し、当該操作Dに対して分割操作解析(図6参照)を適用する(ステップ705)。
【0042】
以上の処理が、集合[DEP]中の全ての操作(ステップ708により追加された操作を含む)に対して行われたならば、後ろ向き依存解析を終了する(ステップ701)。
なお、コピーする操作に対して後ろ向き依存解析を適用すると、コピーする操作に依存する操作は全てコピーする操作となる。これは、コピー可能な操作の特徴(副作用を持たず、それのみを移動しても無意味)から明らかである。例えば、Java Beansの宣言には依存する操作が存在しない。そして、Java Beansへの定義の操作が依存する操作は、Java Beansの宣言のみであるため、分割先のJSPファイルへコピー可能である。
【0043】
図8は、図6のステップ604に示した前向き依存解析の詳細動作を説明するフローチャートである。
図8に示すように、集合[DEP’]の中から操作D’を1つずつ順次選択し、次の判断及び処理を実行する(ステップ801、802)。
JSP解析部20は、選択された操作D’に関して、まず、操作Sの実行結果がJSPファイルの分割後も操作D’に伝播するか否かを判断する(ステップ803)。操作Sの実行結果が操作D’に伝播するならば、当該操作D’を操作Sと一緒に分割する必要はないので、当該操作D’に関して移動もコピーも行わずステップ801に戻り、未処理の次の操作D’に着目する。
【0044】
一方、着目する操作D’に関して、操作Sの実行結果がJSPファイルの分割後に操作D’に伝播しない場合、次にJSP解析部20は、操作D’が集合[SEL]、[MOVE]のいずれにも含まれない所定の操作に依存する、もしくは操作D’に依存する他の操作が存在するかを判断する(ステップ804)。操作D’が依存する全ての操作が分割先のJSPファイルに移動されることが決定されており、かつ操作D’に依存する他の操作が存在しない場合は、当該操作D’を操作Sと一緒に移動する操作と決定する。そして、この操作D’を集合[MOVE]に入れる(ステップ805)。
【0045】
着目する操作D’が、集合[SEL]、[MOVE]のいずれにも含まれない所定の操作に依存するか、または当該操作D’に依存する他の操作が存在する場合、次にJSP解析部20は、操作D’がコピー可能か否かを判定する(ステップ806)。コピー可能である場合、操作D’をコピーする操作と決定して集合[COPY]に入れ(ステップ807)、当該操作D’が依存する他の操作を新たに操作D’として集合[DEP]に入れ(ステップ808)、後ろ向き依存解析(図7参照)を適用する(ステップ809)。
着目する操作D’がコピー不可能である場合、JSP解析部20は、当該操作D’を操作Sと一緒に移動する操作と決定し、当該操作D’に対して分割操作解析(図6参照)を適用する(ステップ810)。
以上の処理が、集合[DEP]中の全ての操作(ステップ708により追加された操作を含む)に対して行われたならば、後ろ向き依存解析を終了する(ステップ801)。
【0046】
次に、JSPファイルとこれにより生成されるウェブページの具体例を挙げて、本実施の形態の作用を説明する。
図9はJSPファイルの一例を示す図、図10は図9のJSPファイルから生成されるウェブページの例を示す図である。また、図11及び図12は、図9のJSPファイルに対して分割しようとする操作を指定した場合に、一緒に分割される操作を示す図である。
図11において、JSPファイルの記述のうち、実線で囲まれた操作1101は、ユーザにより分割するべく選択された(分割対象指示にかかる)部分である。ユーザは、ユーザインターフェイス制御部10の制御によって表示装置400に表示された当該JSPファイルに対し、マウス等の入力デバイス300を使用して操作1101の部分を指定することにより分割対象指示を行う。
【0047】
この選択された操作1101は、破線で囲まれた操作1102と一点鎖線で囲まれた操作1103とに依存している。したがって、本実施の形態におけるJSP解析部20の解析処理の結果、操作1102、1103は、操作1101、1102を分割するのに伴って、一緒に分割すると判断される。このうち、操作1102(Java Beansの宣言、ページスコープのJava Beansへの値の定義)は、当該JSPファイルにおける他の部分にも依存し、かつコピー可能であるため、分割先のJSPファイルにコピーされる部分である。一方、操作1103は、操作1101と共に分割先のJSPファイルに移動される部分である。
ユーザインターフェイス制御部10は、JSP解析部20の判断結果に基づいて、操作1101と一緒に分割される操作1102、1103を視覚的に識別できるように表示することができる。例えば、コピーされる操作1102の表示色を赤色とし、移動される操作1103の表示色を青色とする等である。このようにすれば、ユーザは、実際に分割を実行する前に、JSPファイルのどの部分がどのように分割するかを予め認識することができる。この後、ユーザがキーボード等の入力デバイス300を使用して分割実行命令を入力することにより、分割実行部30が実際にJSPファイルの分割を行う。
【0048】
図12において、実線で囲まれた操作1201は、ユーザにより分割するべく選択された(分割対象指示にかかる)部分である。また、破線で囲まれた操作1202は、図11における操作1102と同様に、操作1201と共に分割され、分割先のJSPファイルにコピーされる部分である。一点鎖線で囲まれた操作1203は、図11における操作1103と同様に、操作1201と共に分割先のJSPファイルに移動される部分である。ここで、操作1202は、図11に示した操作1102と同一の部分であるが、操作1203と図11に示した操作1103の両方に依存しているため、コピーすると判断されている。
【0049】
図13は、図12のようになされた分割対象指示に基づいて実際にJSPファイルの分割を行った様子を示す図である。
元のJSPファイル(図9に示したJSPファイル)main.jspは、分割された残りの部分(図13(A))と、分割先のJSPファイルsplit1.jsp(図13(B))とに分割される。図13(A)に示すJSPファイルmain.jspには、JSPファイルsplit1.jspを呼び出す操作<jsp:include src="split1.jsp"/>が挿入されている。したがって、JSPファイルmain.jspを実行すれば、その実行の中でJSPファイルsplit1.jspも実行され、図10に示したウェブページと同一のウェブページが得られる。
一方、JSPファイルsplit1.jspも独立して実行可能なJSPファイルとなっている。図14は、JSPファイルsplit1.jspを単独で実行した場合に生成されるウェブページの例を示す図である。
【0050】
さて、図9に示したJSPファイルを図13に示したように分割した後、さらにJSPファイルmain.jspに対し、図11に示したと同様の分割対象指示を行った場合を考える。
図15は、この場合のJSPファイルの表示例を示す図である。
図15において、実線で囲まれた操作1501は、ユーザにより分割するべく選択された(分割対象指示にかかる)部分であり、図11における操作1101と同一である。一点鎖線で囲まれた操作1502、1503は、操作1501の分割に伴って分割される部分であり、図11における操作1102、1103に対応している。ただし、操作1502は、操作1102と異なり、分割先のJSPファイルにコピーされるのではなく、移動される部分となっている。これは、図11の時点では、図12を参照して説明したように、操作1102(=操作1202)が操作1203の部分にも依存していたためにコピーされる部分と判断されたのに対し、図15の時点では、図12の操作1203の部分がJSPファイルsplit1.jspに移動してしまい、JSPファイルmain.jspは存在しないので、操作1501と共に移動可能であるためである。
【0051】
以上のように、本実施の形態では、JSPファイルにおける依存関係やスコープを個別的に解析し、コピー可能な部分をコピーにて分割することにより、分割前後で同一の動作をすることを保証し、かつ分割によって新たに生成されるJSPファイルに移動する部分を最小限にすることができる。これにより、JSPファイルを自動的にかつ適切に分割することが可能となる。
また、本実施の形態によるJSPファイルの解析は、ランタイムエンジンに関わらず、JSPの機能的な特徴に基づいて行われるため、大きなオーバーヘッドが発生することもない。
さらに、上記の実施の形態では、サーバにおけるウェブページの自動生成機構をJSPで実現する場合を例として説明したが、ASP、その他の同種のアプリケーションロジックも、同種の機能的特徴を備えることから、同様の解析及び判断を行い、ファイルを自動的かつ適切に分割できることは言うまでもない。
【0052】
【発明の効果】
以上説明したように、本発明によれば、サーバにおいてウェブページを動的に生成する機構を実現するアプリケーションロジックを、自動的にかつ適切に分割することが可能となり、かかる処理における作業効率を大幅に向上させることができる。
【図面の簡単な説明】
【図1】 本実施の形態によるデータ処理方法を実現するコンピュータ装置の構成例を示す図である。
【図2】 本実施の形態によるJSPの分割処理を行うデータ処理システムの機能構成を示す図である。
【図3】 ウェブページのテキストデータを出力するサーブレットプログラムの部分の例を示す図である。
【図4】 本実施の形態において用いられる分割後も各JSPファイルから共通して参照可能な変数の一覧を示す図表である。
【図5】 本実施の形態におけるJSP解析部による解析処理の全体的な流れを説明するフローチャートである。
【図6】 図5に示した分割操作解析の詳細動作を説明するフローチャートである。
【図7】 図6に示した後ろ向き依存解析の詳細動作を説明するフローチャートである。
【図8】 図6に示した前向き依存解析の詳細動作を説明するフローチャートである。
【図9】 JSPファイルの一例を示す図である。
【図10】 図9のJSPファイルから生成されるウェブページの例を示す図である。
【図11】 図9のJSPファイルに対して分割対象指示を行った場合におけるJSPファイルを示す図である。
【図12】 図9のJSPファイルに対して他の分割対象指示を行った場合におけるJSPファイルを示す図である。
【図13】 図12のようになされた分割対象指示に基づいて実際にJSPファイルの分割を行った様子を示す図である。
【図14】 JSPファイルsplit1.jspを単独で実行した場合に生成されるウェブページの例を示す図である。
【図15】 図13のJSPファイルmain.jspに対し、さらに分割対象指示を行った場合におけるJSPファイルを示す図である。
【符号の説明】
10…ユーザインターフェイス制御部、20…JSP解析部、30…分割実行部、40…ファイル格納部、50…制御部、100…CPU、200…メインメモリ、300…入力デバイス、400…表示装置
Claims (8)
- 処理対象であるウェブアプリケーションプログラムファイルを編集するプログラム編集装置において、
ウェブサーバにおいて当該ウェブサーバで実行される実行プログラムに変換されるコードを含むプログラムファイルを処理対象として格納したファイル格納部と、
処理対象の前記プログラムファイルから分割しようとする部分を指定する分割対象指示の入力を受け付けるユーザインターフェイス制御部と、
前記処理対象のプログラムファイルから前記分割対象指示にて指定された部分と共に分割される随伴分割部分として、分割前のプログラムファイルから分割によって作成される新たなプログラムファイルにコピーする部分と、当該分割前のプログラムファイルから切り取って当該新たなプログラムファイルに移動する部分とを決定する解析部と、
前記分割対象指示にて指定された部分と前記解析部にて決定された前記随伴分割部分とを元の前記プログラムファイルから分割する分割実行部とを備え、
前記解析部は、前記プログラムファイルの所定の部分に関して、当該所定の部分が分割によって作成される新たなプログラムファイルにコピーされ、かつ当該所定の部分のみを元のプログラムファイルから分割するときに当該所定の部分と一緒に他の特定の部分を分割する必要が生じ、当該特定の部分を当該元のプログラムファイルから切り取らなくても、分割後の各プログラムファイルによる全体的な処理の結果と分割前のプログラムファイルによる処理結果が同一となる場合に、当該所定の部分を当該新たなプログラムファイルにコピーすることを特徴とするプログラム編集装置。 - 前記解析部は、前記分割される随伴分割部分を決定する場合に、前記プログラムファイルの実行環境から得られるデータに関する依存関係を持つ複数の部分を分割可能と判断することを特徴とする請求項1に記載のプログラム編集装置。
- 処理対象のプログラムファイルが、ウェブサーバにおいて実行されるJava(米国サン・マイクロシステムズ社の商標)コードをHTML(HyperText Markup Language)文中に埋め込んだファイルであるJSP(Java Server Pages)ファイルであることを特徴とする請求項1に記載のプログラム編集装置。
- ウェブサーバにおいて実行されるJava(米国サン・マイクロシステムズ社の商標)コードをHTML(HyperText Markup Language)文中に埋め込んだファイルである処理対象のJSP(Java Server Pages)ファイルを表示する表示手段と、
前記表示手段にて表示されたJSPファイルに対して、分割しようとする所定の部分を指定してなされる分割対象指示を受け付ける受け付け手段と、
前記処理対象のJSPファイルに対してなされた前記分割対象指示に基づき、当該分割対象指示にて指定された部分と共に分割すべき部分を決定する分割対象決定手段と、
前記分割対象決定手段にて決定された分割すべき部分を識別可能な状態で前記表示手段に表示させる表示制御手段とを備え、
前記分割対象決定手段は、前記JSPファイルの所定の部分に関して、当該所定の部分が分割によって作成される新たなJSPファイルにコピーされ、かつ当該所定の部分のみを元のJSPファイルから分割するときに当該所定の部分と一緒に他の特定の部分を分割する必要が生じ、当該特定の部分を当該元のJSPファイルから切り取らなくても、分割後の各プログラムファイルによる全体的な処理の結果と分割前のプログラムファイルによる処理結果が同一となる場合に、当該所定の部分を当該新たなJSPファイルにコピーすることを特徴とするプログラム編集装置。 - 前記分割対象決定手段による決定に基づいてJSPファイルの分割を実行する分割実行手段をさらに備え、
前記受け付け手段は、前記分割実行手段に分割処理の実行を指示する実行命令の入力を受け付け、
前記表示制御手段は、前記分割実行手段による分割処理の実行結果を前記表示手段に表示させることを特徴とする請求項4に記載のプログラム編集装置。 - コンピュータに、
ウェブサーバにおいて当該ウェブサーバで実行される実行プログラムに変換されるコードを含むウェブアプリケーションプログラムファイルを処理対象として取得し、当該プログラムファイルから分割しようとする部分を指定する分割対象指示の入力を受け付けるユーザインターフェイス制御機能と、
前記処理対象のプログラムファイルから前記分割対象指示にて指定された部分と共に分割される随伴分割部分として、分割前のプログラムファイルから分割によって作成される新たなプログラムファイルにコピーする部分と、当該分割前のプログラムファイルから切り取って当該新たなプログラムファイルに移動する部分とを決定する解析機能と、
前記分割対象指示にて指定された部分と前記解析機能において決定された前記随伴分割部分とを元の前記プログラムファイルから分割する分割実行機能とを実現させ、
前記解析機能として、前記プログラムファイルの所定の部分に関して、当該所定の部分が分割によって作成される新たなプログラムファイルにコピーされ、かつ当該所定の部分のみを元のプログラムファイルから分割するときに当該所定の部分と一緒に他の特定の部分を分割する必要が生じ、当該特定の部分を当該元のプログラムファイルから切り取らなくても、分割後の各プログラムファイルによる全体的な処理の結果と分割前のプログラムファイルによる処理結果が同一となる場合に、当該所定の部分を当該新たなプログラムファイルにコピーする処理を前記コンピュータに実行させることを特徴とするプログラム。 - コンピュータを制御して、所定のデータ処理機能を実現させるプログラムであって、
ウェブサーバにおいて実行されるJava(米国サン・マイクロシステムズ社の商標)コードをHTML(HyperText Markup Language)文中に埋め込んだファイルである処理対象のJSP(Java Server Pages)ファイルに対して、分割しようとする所定の部分を指定してなされる分割対象指示を受け付ける受け付け手段と、
前記処理対象のJSPファイルに対してなされた前記分割対象指示に基づき、当該分割対象指示にて指定された部分と共に分割すべき部分を決定する分割対象決定手段と、
所定の表示装置に処理対象のJSPファイルを表示させると共に、前記分割対象指示にて指定された部分と共に分割すべき部分を視覚的に識別可能な状態で表示させる表示制御手段として、前記コンピュータを機能させ、
前記分割対象決定手段の機能として、前記JSPファイルの所定の部分に関して、当該所定の部分が分割によって作成される新たなJSPファイルにコピーされ、かつ当該所定の部分のみを元のJSPファイルから分割するときに当該所定の部分と一緒に他の特定の部分を分割する必要が生じ、当該特定の部分を当該元のJSPファイルから切り取らなくても、分割後の各プログラムファイルによる全体的な処理の結果と分割前のプログラムファイルによる処理結果が同一となる場合に、当該所定の部分を当該新たなJSPファイルにコピーする処理を前記コンピュータに実行させることを特徴とするプログラム。 - 前記コンピュータを、前記分割対象決定手段による決定に基づいてJSPファイルの分割を実行する分割実行手段としてさらに機能させ、
前記受け付け手段の機能として、前記分割実行手段に分割処理の実行を指示する実行命令の入力を受け付ける処理を前記コンピュータに実行させ、
前記表示制御手段の機能として、前記分割実行手段による分割処理の実行結果を表示手段に表示させる処理を前記コンピュータに実行させることを特徴とする請求項7に記載のプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002380356A JP4493269B2 (ja) | 2002-12-27 | 2002-12-27 | プログラム編集装置及びプログラム |
US10/739,818 US7712079B2 (en) | 2002-12-27 | 2003-12-18 | Program editing apparatus, program editing method, and program for splitting a program file |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002380356A JP4493269B2 (ja) | 2002-12-27 | 2002-12-27 | プログラム編集装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004213220A JP2004213220A (ja) | 2004-07-29 |
JP4493269B2 true JP4493269B2 (ja) | 2010-06-30 |
Family
ID=32816606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002380356A Expired - Fee Related JP4493269B2 (ja) | 2002-12-27 | 2002-12-27 | プログラム編集装置及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7712079B2 (ja) |
JP (1) | JP4493269B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4709481B2 (ja) * | 2003-07-31 | 2011-06-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | サーバ、情報処理方法およびプログラム |
US7457671B2 (en) * | 2004-09-30 | 2008-11-25 | Rockwell Automation Technologies, Inc. | Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution |
JP4988226B2 (ja) * | 2006-03-06 | 2012-08-01 | キヤノンソフトウェア株式会社 | プログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体 |
US9003396B2 (en) * | 2006-06-19 | 2015-04-07 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | File manager integration of uninstallation feature |
US20090093901A1 (en) * | 2007-10-03 | 2009-04-09 | International Business Machines Corporation | Method and apparatus for using design specifications and measurements on manufactured products in conceptual design models |
US7499971B1 (en) | 2008-03-24 | 2009-03-03 | International Business Machines Corporation | Alternate java server page (JSP) processing for better response time |
JP4747209B2 (ja) | 2009-04-17 | 2011-08-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 高速ウェブサーバ |
US9195810B2 (en) * | 2010-12-28 | 2015-11-24 | Microsoft Technology Licensing, Llc | Identifying factorable code |
US8756566B2 (en) | 2011-11-02 | 2014-06-17 | International Business Machines Corporation | Parallel development of a software system |
CN110399161B (zh) * | 2019-06-14 | 2023-08-18 | 五八有限公司 | 一种映射关系的生成方法、调用方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5161216A (en) * | 1989-03-08 | 1992-11-03 | Wisconsin Alumni Research Foundation | Interprocedural slicing of computer programs using dependence graphs |
JPH0736680A (ja) | 1993-07-23 | 1995-02-07 | Omron Corp | 並列化プログラム開発支援装置 |
US6179491B1 (en) * | 1997-02-05 | 2001-01-30 | International Business Machines Corporation | Method and apparatus for slicing class hierarchies |
JP3166699B2 (ja) | 1998-02-19 | 2001-05-14 | 日本電気株式会社 | オブジェクト指向プログラム設計支援装置、方法および記録媒体 |
US7620946B2 (en) * | 2003-05-05 | 2009-11-17 | Jeffry Thomas Russell | Program slicing for codesign of embedded systems |
-
2002
- 2002-12-27 JP JP2002380356A patent/JP4493269B2/ja not_active Expired - Fee Related
-
2003
- 2003-12-18 US US10/739,818 patent/US7712079B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2004213220A (ja) | 2004-07-29 |
US7712079B2 (en) | 2010-05-04 |
US20050086631A1 (en) | 2005-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6922827B2 (en) | Iterative software development environment with prioritized build rules | |
US7971201B2 (en) | Multiple operating device version software generating system and multiple operating device version software generation support program and method | |
JP5167589B2 (ja) | アプリケーションサーバ装置および仮想マシンプログラム | |
US20010013043A1 (en) | System and method for determining browser package and version compatibility of a web document | |
US20030033448A1 (en) | Optimized delivery of web application code | |
US20090007131A1 (en) | Automating the Life Cycle of a Distributed Computing Application | |
US20100281463A1 (en) | XML based scripting framework, and methods of providing automated interactions with remote systems | |
US20120005667A1 (en) | Integrated exchange of development tool console data | |
JP2001344105A (ja) | Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体 | |
US20100250650A1 (en) | Server-side translation for custom application support in client-side scripts | |
JP2004086878A (ja) | クライアント‐サーバ環境においてポータブル操作を最適化するための方法、装置およびプログラム製品 | |
JP4493269B2 (ja) | プログラム編集装置及びプログラム | |
US7509335B2 (en) | System and method for extensible Java Server Page resource management | |
US6549952B1 (en) | Passing environment variables from an hypertext protocol server application programming interface | |
US6339839B1 (en) | Enabling multiple code generators in a translator-based embedded scripting system | |
US9830307B1 (en) | Ahead of time compilation of content pages | |
WO2020209227A1 (ja) | 解析装置、解析方法、及びプログラム | |
US11349908B2 (en) | Generating templates for deployment of system services | |
JP4702835B2 (ja) | Webサービスカスタマイズシステム | |
CN115315696A (zh) | 网站的自动创建和部署 | |
JP2004362343A (ja) | ソースコード変換装置、ソースコード変換方法、およびプログラム | |
JP2006236375A (ja) | Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラム | |
US12001324B2 (en) | Operation pattern generation apparatus, operation pattern generation method and program | |
JP2010026695A (ja) | ビジネスプロセス実行方法、ビジネスプロセス実行装置及びビジネスプロセス実行プログラム | |
CN110704055B (zh) | 接口前置的优化方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060525 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060620 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060920 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20061128 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070222 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20070402 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20070706 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100304 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20100401 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100406 |
|
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: 20130416 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |