JP4023803B2 - Web application development support apparatus, data processing method, and program - Google Patents
Web application development support apparatus, data processing method, and program Download PDFInfo
- Publication number
- JP4023803B2 JP4023803B2 JP2003156042A JP2003156042A JP4023803B2 JP 4023803 B2 JP4023803 B2 JP 4023803B2 JP 2003156042 A JP2003156042 A JP 2003156042A JP 2003156042 A JP2003156042 A JP 2003156042A JP 4023803 B2 JP4023803 B2 JP 4023803B2
- Authority
- JP
- Japan
- Prior art keywords
- component
- information
- component call
- call
- jsp
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3604—Analysis of software for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、ウェブアプリケーション等に用いられるJSPのコンポーネント呼び出しとコンポーネントとの整合性を検証する方法及びシステムに関する。
【0002】
【従来の技術】
インターネット等のネットワークを介してサービスを提供するウェブアプリケーションで用いられる技術に、ウェブサーバにおいてスクリプト言語(サーバサイドスクリプト言語)を用いて動的にウェブページを生成し、クライアントに送信する技術がある。JSP(JavaServer Pages:米国サン・マイクロシステムズ社の商標)は、この種のサーバサイドスクリプト言語のひとつであり、Java(米国サン・マイクロシステムズ社の商標)言語を利用してこの機能を実現する(例えば、特許文献1、非特許文献1参照)。具体的には、JSPでは、HTML(HyperText Markup Language)ファイルの中にスクリプト(Javaプログラム)で処理を記述しておき、クライアントの要求に応じてスクリプトを実行し、処理結果のみをクライアントに送信する。
【0003】
したがって、JSPによる動的なコンテンツを含むウェブページ(以下、JSPページ)のファイルには、当該動的コンテンツを表現する言語に関して、JSPによる記述部分やHTMLによる記述部分など、多くの言語が同時に存在している。HTMLの記述は、ウェブページをブラウザに表示した際のレイアウトや制御を実現する。一方、JSPの記述は、所定の処理を記述したスクリプトであり、実行時にサーブレットとして動作する。そして、当該スクリプトの設計に沿ってアクセス可能な他のコンポーネントに対して必要な操作を行い、この操作の結果をレスポンスとしてブラウザに送信する。
【0004】
ここで、コンポーネントとは、オブジェクトを意味しており、JSPに関連するコンポーネントとは、Javaビーンやメッセージリソース、JSPページが依存する他のJSPページやウェブページなどを指す。
図25は、JSPページに関連する主要なコンポーネント群を示す図である。
【0005】
【特許文献1】
特開2002?366514号公報
【非特許文献1】
“JavaServer PagesTM DYNAMICALLY GENERATED WEB CONTENT”、[online]、[平成15年5月21日検索]、インターネット<URL: HYPERLINK "http://www.cs.hut.fi/~ctl/3dm/" http://java.sun.com/j2ee/ja/jsp/>
【0006】
【発明が解決しようとする課題】
上記のように、ウェブアプリケーション等に用いられるJSPは、実行時、所定のコンポーネントに対してアクセスして必要な操作を行う。しかし、実際のウェブアプリケーション開発における結合テストや稼動テストでは、JSPの記述内容に関する仕様が開発前に予め定められていないために、JSPページのコンポーネント呼び出し部分と他の開発者によって開発されたコンポーネントとの間で不整合が発生する場合が多い。
そこで従来、ウェブアプリケーション開発時には、開発者の手作業によってJSPページの記述の整合性を確認したり、実際にアプリケーションサーバー上での結合テストを行って不整合を1つ1つ検出したりすることが行われている。
【0007】
しかし、ウェブアプリケーション内に膨大な数のコンポーネント呼び出し記述が存在する場合、JSPページのコンポーネント呼び出しとコンポーネントとの間の不整合を完全に検出することは容易ではない。
かかる不整合を完全に除去できないと、ウェブアプリケーション稼動後にも、当該ウェブアプリケーション内に潜在していた不整合のために、システムに障害が発生することも起こりうる。そして、障害が発生すれば、開発全体では余分なコストが発生することになる。
【0008】
また、Javaスクリプトレットのプログラムロジックや、JSPタグライブラリのように利用者が自由に作成したタグ記述表現を許していることが、JSPページとコンポーネント間の整合性を解析し自動的に検証することを困難にしていた。
【0009】
そこで本発明は、上記の問題に鑑み、JSPページとその関連するコンポーネントとの間の整合・不整合を解析し、自動的に検証する方法およびツールを提供することを目的とする。
また本発明は、上記の目的に加えて、JSPページとその関連するコンポーネントとの間の不整合を自動的に検証することにより、JSPページの開発作業を支援し、JSPページの品質向上および開発コストの削減に寄与することを目的とする。
【0010】
【課題を解決するための手段】
上記の目的を達成する本発明は、次のように構成されたウェブアプリケーション開発支援装置として実現される。このウェブアプリケーション開発支援装置は、動的にコンテンツが生成されるウェブページにおけるコンポーネント呼び出しの実行を監視し、このコンポーネント呼び出しに関する情報を抽出するモニタと、このモニタにより抽出されたコンポーネント呼び出しに関する情報に基づいて、このコンポーネント呼び出しとその対象であるコンポーネントとの整合性を検証する整合性検証部とを備えることを特徴とする。
【0011】
ここで、さらに好ましくは、このモニタは、所定のコンポーネント呼び出しが実際に実行されるかどうかが実行時まで決まらない場合に、コンポーネント呼び出しの実行の有無に関わらずに、コンポーネント呼び出しに関する情報を抽出する。また、整合性検証部は、ウェブページごとに予め設定されたコンポーネント呼び出しに関する情報をまとめた仕様情報とモニタにて抽出された情報とを照合することにより、コンポーネント呼び出しとコンポーネントとの整合性を検証する。
【0012】
さらに、このウェブアプリケーション開発支援装置は、整合性検証部による検証結果に基づいて仕様情報を更新する仕様更新部や、コンポーネント呼び出しの記述に用いられるライブラリに関する情報を解析してコンポーネント呼び出しに対応するモニタを生成するモニタ生成部を、さらに備える構成とすることができる。
【0013】
また本発明は、次のように構成されたコンポーネント呼び出し監視装置としても実現することができる。すなわち、このコンポーネント呼び出し監視装置は、動的にコンテンツが生成されるウェブページに対するHTTPリクエストを発行するリクエスト制御部と、このウェブページにおけるコンテンツを生成するためのコンポーネント呼び出しの実行を監視し、このコンポーネント呼び出しに関する情報を抽出するモニタとを備えることを特徴とする。そしてさらに、このコンポーネント呼び出し監視装置は、コンポーネント呼び出しの記述に用いられるライブラリに関する情報を解析してコンポーネント呼び出しに対応するモニタを生成するモニタ生成部をさらに備える構成とすることができる。
【0014】
ここで、さらに好ましくは、モニタ生成部は、ライブラリに関する情報の解析結果に基づき、所定の記憶手段に格納されているライブラリの定義ファイルを、コンポーネント呼び出しの実行に際して当該コンポーネント呼び出しに関する情報を抽出する機能を含んだライブラリ定義ファイルに置き換えることにより、モニタを自装置に実装させる。
【0015】
また、上記の目的を達成する他の本発明は、コンピュータを用いた次のようなデータ処理方法として実現される。このデータ処理方法は、動的にコンテンツが生成されるウェブページにおける当該コンテンツを生成するためのコンポーネント呼び出しに関して、このコンポーネント呼び出しの記述に用いられるライブラリに関する情報を解析する第1のステップと、第1のステップによる解析結果に基づき、所定の記憶手段に格納されているライブラリの定義ファイルを、コンポーネント呼び出しの実行に際して当該コンポーネント呼び出しに関する情報を抽出する機能を含んだライブラリ定義ファイルに置き換える第2のステップと、第2のステップにより置き換えられたライブラリ定義ファイルを用いてコンポーネント呼び出しを実行し、実行されたコンポーネント呼び出しに関する情報を抽出する第3のステップとを含むことを特徴とする。
【0016】
また、このデータ処理方法は、ウェブページごとに予め設定されて所定の記憶手段に格納されたコンポーネント呼び出しに関する情報をまとめた仕様情報と、第3のステップで抽出された情報とを照合することにより、コンポーネント呼び出しとその対象であるコンポーネントとの整合性を検証する第4のステップを含むことができる。さらに、第4のステップによる検証結果に基づいて、所定の記憶手段に格納されている仕様情報を更新する第5のステップを含むことも可能である。
【0017】
さらにまた、本発明は、コンピュータを制御して上述したウェブアプリケーション開発支援装置やコンポーネント呼び出し監視装置として機能させるプログラム、あるいはコンピュータに上記データ処理方法の各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
【0018】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
本発明は、開発されたJSPページの検証方法として、検証対象とするJSPページをテスト実行させることによって正しく開発されているかどうかを動的に検証する方法を用いる。JSP記述表現に関しては、JSPタグライブラリ記述による表現を検証の対象とする。JSPタグライブラリは、JSPページの記述にはタグベースの記述を行う。
【0019】
本実施の形態では、開発対象のJSPページに関して、検証のための仕様にあたるコンポーネント呼び出し情報を定義する。
図1は、本実施の形態で定義されるコンポーネント呼び出し情報の構成を示す図である。
図1(A)に示すように、コンポーネント呼び出し情報は、呼び出す対象であるコンポーネントに関する、コンポーネント名、コンポーネント種別、コンポーネントの属性、スコープの各情報からなる。コンポーネント名は、JSPタグ記述の属性を用いてコンポーネント呼び出しを行う際の名前である。コンポーネント種別は、呼び出すコンポーネントの種類であり、JSPビーン、メッセージリソース、他のJSPページなどである。コンポーネントの属性は、コンポーネントが入れ子の時など、コンポーネント呼び出しに属性が必要な時に用いられる情報である。スコープは、セッションスコープや、リクエストスコープなどを指定するときに用いる情報である。
【0020】
本実施の形態では、JSPページにおけるJSPタグ記述に対して、図1(A)に示したようなコンポーネント呼び出し情報テーブルを生成して当該コンポーネント呼び出し情報を管理する。例えば、
<bean:message key="title.welcome"/>
というJSPタグ記述に対しては、図1(B)のようなコンポーネント呼び出し情報テーブルが生成される。また、
<bean:write name="user" property="username" scope="session" filter="true"/>
というJSPタグ記述に対しては、図1(C)のようなコンポーネント呼び出し情報テーブルが生成される。
【0021】
ところで、1つのJSPページにはJSPタグ記述が複数存在し得る。したがって、上記のコンポーネント呼び出し情報は、JSPページ単位でまとめて管理される。JSPページごとのコンポーネント呼び出し情報テーブルの集合をJSPページ仕様記述と呼ぶ。
図2は、JSP仕様記述の例を示す図である。
図示のように、JSPページの各コンポーネント呼び出し情報に対しては、当該JSPページでの記述が必須かどうかを示す「必然性」の情報(必須であればtrue、必須でなければfalse)を持つ。
【0022】
本実施の形態は、上記のように定義されたコンポーネント呼び出し情報を用いて、JSPページの記述と呼び出し先のコンポーネントとの整合性を検証する。上述したJSP仕様記述は、本実施の形態による検証の実行前に、予め作成しておく。なお、コンポーネント呼び出し情報およびJSP仕様記述は、JSPページとその関連するコンポーネントとの間の整合性を検証するのに有効な情報を一定の様式で含んでいれば良く、必ずしも図1、2に示した構成に限定するものではない。
【0023】
図3は、本実施の形態によるウェブアプリケーション開発支援装置を実現するコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図3に示すコンピュータ装置は、演算手段であるCPU(Central Processing Unit:中央処理装置)101と、M/B(マザーボード)チップセット102及びCPUバスを介してCPU101に接続されたメインメモリ103と、同じくM/Bチップセット102及びAGP(Accelerated Graphics Port)を介してCPU101に接続されたビデオカード104と、PCI(Peripheral Component Interconnect)バスを介してM/Bチップセット102に接続されたハードディスク105、ネットワークインターフェイス106と、さらにこのPCIバスからブリッジ回路107及びISA(Industry Standard Architecture)バスなどの低速なバスを介してM/Bチップセット102に接続されたフロッピーディスクドライブ108及びキーボード/マウス109とを備える。
なお、図3は本実施の形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード104を設ける代わりに、ビデオメモリのみを搭載し、CPU101にてイメージデータを処理する構成としても良いし、外部記憶装置として、ATA(AT Attachment)やSCSI(Small Computer System Interface)などのインターフェイスを介してCD−R(Compact Disc Recordable)やDVD−RAM(Digital Versatile Disc Random Access Memory)のドライブを設けても良い。
【0024】
図4は、本実施の形態によるウェブアプリケーション開発支援装置の機能構成を示す図である。
図4を参照すると、本実施の形態のウェブアプリケーション開発支援装置は、HTTP(HyperText Transfer Protocol)リクエストを行ってJSPページをテスト実行させるためのリクエスト制御部10と、実行されたJSPページによるコンポーネントの呼び出しを監視するモニタ20と、モニタ20による監視結果に基づいてJSPページの記述と呼び出し先のコンポーネントとの整合性を検証する整合性検証部30と、検証対象であるJSPページのJSP仕様記述を格納したJSP仕様記述格納部40と、モニタ20を生成するモニタ生成部50とを備える。
【0025】
図4に示すリクエスト制御部10、モニタ20、整合性検証部30及びモニタ生成部50は、例えば図3のプログラム制御されたCPU101にて実現される機能ブロックである。CPU101を制御してこれらの機能を実現するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。また、JSP仕様記述格納部40は、例えば図3のメインメモリ103やハードディスク105にて実現される。本実施の形態では、検証対象であるJSPページをテスト実行するためのJSP単体テスト用ウェブアプリケーションを用意し、リクエスト制御部10からのHTTPリクエストに応じてJSPページを実行する。そして図4に示すように、上記構成要素のうち、モニタ20及び整合性検証部30は、検証対象であるJSPページをテスト実行するためのJSP単体テスト用ウェブアプリケーションの機能として実現される。
【0026】
本実施の形態では、JSPタグライブラリ記述による表現を検証対象としている。JSPタグライブラリは、ライブラリとして公開されているものも存在するが、利用者によって自由に開発することも可能である。そのため、全てのJSPタグライブラリへの呼び出しを抽出するためには、未対応のJSPタグライブラリに対してコンポーネント呼び出しを監視することができるモニタ20を生成することが必要である。本実施の形態では、モニタ生成部50を用意して、JSPの検証に先立って、必要なモニタ20を自動生成する。
【0027】
図5は、モニタ生成部50の機能を説明する図、図6、7は、モニタ生成部50の動作を説明するフローチャートである。
図5を参照すると、モニタ生成部50は、所定の記憶手段(例えば図3のメインメモリ103やハードディスク105)からタグライブラリ定義ファイル及びタグハンドラクラスのソースコードというJSPタグライブラリ関連リソースを入力し、呼び出し対象であるコンポーネント及び入力パラメータの解析を行う。そして、モニタ20を実装したタグライブラリ定義ファイル及び関連するコンポーネントを操作する入力パラメータの抽出機能を持ったタグハンドラクラスのソースコードというモニタ20に関連したリソースを出力する。すなわち、JSPページにおけるコンポーネント呼び出しの記述に用いられているJSPタグライブラリ関連リソースを、コンポーネント呼び出しの実行に際して当該コンポーネント呼び出しに関する情報を抽出するモニタ20の機能を含んだJSPタグライブラリ関連リソースに置き換える。
【0028】
図6を参照して、コンポーネント呼び出しの種別判断と関連する属性とを求めるための、モニタ生成部50によるタグライブラリの解析処理を説明する。
図6に示すように、モニタ生成部50は、まずモニタ20による監視を行おうとするタグライブラリを含めたウェブアプリケーションパスを指定する(ステップ601)。そして、指定されたウェブアプリケーションパスからWEB−INF/web.xmlファイルを入力し(ステップ602)、全てのタグライブラリ定義ファイルのパスを読み込んでリストを作成する(ステップ603)。図8(A)に、作成されるパスのリストの例を示す。
【0029】
次に、モニタ生成部50は、所定のタグライブラリ定義ファイルを入力し(ステップ604)、入力したタグライブラリ定義ファイル中の所定のタグハンドラ定義を読み込む(ステップ605)。読み取ったタグハンドラ定義の例を図8(B)に示す。
次に、モニタ生成部50は、当該タグハンドラクラスのソースファイルを、ステップ604で入力したタグライブラリ定義ファイルから読み込む(ステップ606)。そして、コンポーネント呼び出しの種別判断と関連する属性の解析処理を行う(ステップ607)。この処理については図7を参照して後述する。
【0030】
ステップ607の解析処理の後、モニタ生成部50は、当該処理の結果に基づいて、モニタ機能を実装したタグハンドラクラスのソースファイルを生成する(ステップ608)。以上のステップ605〜608の処理は、ステップ604で入力されたタグライブラリ定義ファイルに含まれる全てのタグハンドラ定義に対して実行される(ループ2)。
【0031】
次にモニタ生成部50は、全てのタグハンドラ定義に対して上記の処理がなされたタグライブラリ定義ファイルに基づき、モニタ機能タグライブラリを呼び出すタグライブラリ定義ファイルを生成する(ステップ609)。以上のステップ604〜609の処理は、ステップ603で作成されたリストに含まれる全てのタグライブラリ定義ファイルに対して実行される(ループ1)。
【0032】
次に図7を参照して、ステップ607におけるJSPのタグハンドラクラスのソースコード解析について説明する。この解析処理では、タグライブラリ定義ファイルから取得した属性に基づき、どの属性がコンポーネント呼び出しに関連しているかを解析する。
モニタ生成部50は、まず、解析対象のタグハンドラにおける全ての属性を取得する(ステップ701)。図8(B)に示した例では、属性{filter, ignore, name, property, scope}が取得される。
【0033】
次に、モニタ生成部50は、ステップ701で取得した全ての属性に対するローカル変数名を取得する(ステップ702)。このローカル変数名は、通常は属性名と同じである。ローカル変数名と属性名とが一致していない場合は、getterメソッドから推測することができる。
次にモニタ生成部50は、取得したローカル変数名に基づいて、public int doStartTag()メソッドを検索し(ステップ703)、さらにpublic int doEndTag()メソッドを検索する(ステップ704)。
【0034】
JSPでは通常、PageContextオブジェクトのメソッドとして、getAttribute(name、pageContext.APPLICATION_SCOPE)メソッド、pageContext.findAttribute(name)メソッドを呼び出すことによって、各種スコープに存在するコンポーネント操作が行われる。そこで、次にモニタ生成部50は、これらのメソッド呼び出しを探索する。そして、これらのメソッド呼び出しが存在しない場合、当該タグハンドラクラスは、モニタ機能を実装したタグハンドラクラスの生成対象とせず、解析処理を終了する(ステップ705、709)。
【0035】
一方、getAttribute(name、pageContext.APPLICATION_SCOPE)メソッド、pageContext.findAttribute(name)メソッドのメソッド呼び出しがタグハンドラに存在する場合は、次にモニタ生成部50は、データフロー解析におけるUSE―DEFチェーンアルゴリズムを用い、属性を表す変数の定義参照関係により、メソッドの引数であるname変数部分にはタグハンドラのどの属性に当たる変数が引数に用いられているかを解析する(ステップ705、706)。所定の属性が導き出せれば、例えばJSPタグ記述の当該属性の値を用いて、コンポーネントにアクセスする可能性が発見できる。
【0036】
次に、モニタ生成部50は、コンポーネント種別を判断する(ステップ707)。コンポーネント種別の判断は、上記のメソッドの返り値であるオブジェクトが、どの型を持っているかで判断される。返り値のオブジェクトの型とコンポーネント種別との対応は、コンポーネント種別判断テーブルで表される。
図9は、コンポーネント種別判断テーブルの構成例を示す図である。
図9に示すコンポーネント種別判断テーブルでは、getAttribute()/findAttribute()の返り値の型と、コンポーネント種別、属性変数の場所、及びTldファイルで定義された属性名とが対応付けられている。図示の例では、例えば、メソッドの返り値の型がメッセージリソースの型であった場合、コンポーネントは、メッセージコンポーネントと判断される。具体的な例を挙げると、次の記述の場合、コンポーネント種別はJSPビーンと判断される。
Object object = pageContext.findAttribute(name);
また、次の記述の場合、コンポーネント種別はメッセージリソースと判断される。
MessageResources resource =
(MessageResources)pageContext.getAttribute(bundle, pageContext.APPLICATION_SCOPE);
String messageValue = resource.getMessage(key);
なお、コンポーネント種別判断テーブルにて示される、オブジェクトの型とコンポーネント種別との対応は、対象とするJSPタグライブラリによって決まる。そこで、この対応関係は、解析処理の実行に先立って与えられる必要がある。
【0037】
また、タグハンドラ中に、コンポーネント呼び出しが実際に行われるかが解析不能な分岐ロジックが存在している場合がある。この場合は、当該タグハンドラを実行してみなければコンポーネントが実際に呼ばれるかどうかは判断できない。そこで、コンポーネント呼び出し部分の直後にコンポーネント呼び出し情報を抽出させるロジックを追加しておく。これにより、タグハンドラの実行時に、呼ばれたコンポーネント呼び出し情報を伝えることができる。
図10は、タグハンドラにおける分岐ロジックのコードにコンポーネント呼び出し情報のロジックを追加した例を示す図である。
【0038】
以上の解析の後、モニタ生成部50は、この解析で得られた属性名と、コンポーネント種別に基づいて、モニタ機能を実装したタグハンドラを生成する(ステップ708)。そして、上述したように、この解析結果であるタグハンドラからクラスのソースファイルが生成され、モニタ機能タグライブラリを呼び出すタグライブラリ定義ファイルが生成される(図6、ステップ608、609参照)。
図11は、モニタ機能を実装したタグハンドラクラスのソースコードの例を示す図、図12は、モニタ機能タグライブラリを呼び出すタグライブラリ定義ファイルの例を示す図である。
【0039】
図13は、通常のタグハンドラ呼び出しとモニタ20の呼び出しとの違いをタグライブラリ定義ファイルの関係で説明する図である。
図13の例において、JSPページ中の宣言しているタグライブラリを呼び出すURLの
<bean:write name="username" …/>
という記述から、web.xml(ウェブアプリケーション)中で記述しているURLとタグライブラリ定義ファイルとのマッピングを行うと、通常の呼び出しの場合は、タグリブの記述から
/WEB-INF/struts-bean.tld
によって「struts-bean.tld」が呼ばれ、タグライブラリ定義ファイル中で記述されているタグハンドラ定義から、「WriteTag」が呼び出される。
これに対し、モニタ機能が実装された後では、web.xml中で記述しているURLとタグライブラリ定義ファイルとのマッピングを行うと、タグリブの記述から
/WEB-INF/monitor.tld
によって「monitor.tld」が呼ばれ、タグライブラリ定義ファイル中で記述されているタグハンドラ定義から、「MonitorWriteTag」が呼び出されることとなる。
以上のように、JSPページの記述は一切変更することなく、ウェブアプリケーションの動作環境(タグライブラリ定義ファイル及びweb.xml)を変更することによって、モニタ20の機能が呼ばれることとなる。
【0040】
ところで、モニタ生成部50は、モニタ20を生成するために、タグハンドラから受け取った属性とコンポーネント呼び出しとを関連付けるが、上述した通常の解析ではコンポーネント呼び出し自体が確実に実行されるかどうかを保証できない場合がある。そのようなケースを以下にまとめる。
【0041】
1.コンポーネント呼び出し種別の出現が、分岐ロジックによって決定されるとき。
タグハンドラクラスは、Javaのロジックとして多様な条件で分岐ロジックを記述可能である。例えば、日付や時間によってコンポーネントを呼び出したり、ビジネスロジックを伴うオブジェクトの振る舞いによってコンポーネントを呼び出したりすることができる。また、Strutsというフレームワークのタグライブラリには、セッションスコープにコンポーネントが存在していなければ、メッセージリソースとしてコンポーネントを取り出すというロジックがある。このロジックでは、セッションスコープのコンポーネントを取る場合と、メッセージリソースからコンポーネントを取る場合とでは、取得されるコンポーネント種別が変わる。
このようなロジックの判断には、分岐ロジックを実施できるリソースがテスト環境によって個々に用意されているテストアプリケーション上で、動作させる必要がある。
【0042】
2.PageContextオブジェクトに対する操作が検出できなかったタグハンドラが使用されるとき。
タグハンドラにおいて、属性値がPageContextオブジェクトの操作に使用されていない場合や、PageContextオブジェクトの記述が解析できない場合がある。そのようなタグハンドラは、コンポーネント呼び出しを行わない場合が多いが、ネストしているタグハンドラのコンポーネント呼び出しに影響を受ける場合がある。例えば、Strutsのタグライブラリでは、logicタグハンドラがあり、logicを用いるJSPタグ記述の属性の値によって、ネストしているタグハンドラの呼び出しを行わないことがある。
【0043】
上記2つのケースでは、JSP仕様記述のコンポーネント呼び出し情報に対する「必然性」がtrueの場合であっても、当該JSPページの実行の際に必ず呼び出されるかは静的な解析で保障できるものではない。したがって、当該JSPページを動的に実行させてコンポーネント呼び出しを行わせる必要がある。
【0044】
以上説明したモニタ生成部50の機能により、図4に示したように、JSP単体テスト用ウェブアプリケーションに、必要なモニタ20が実装される。上述したように、モニタ生成部50によるモニタ20の生成は、JSPページの検証に先立って行われる。JSPページの検証自体は、リクエスト制御部10、生成されたモニタ20及び整合性検証部30にて実行される。また、JSPページを検証するには、予め検証対象であるJSPページに関して図2に示したJSP仕様記述を作成し、JSP仕様記述格納部40に格納しておく。
【0045】
リクエスト制御部10は、JSPページを実行するためのURL(Uniform Resource Locators)リストを取得し、componentInvoke=trueというパラメータを付加して、JSP単体テスト用ウェブアプリケーションに送信する。URLリストは、テストしようとするJSPページ群のURLを集めたものであり、JSPページ(ウェブアプリケーション)の開発者によって予め用意される。また、JSPページの集合を編集可能なツールを用いて検証対象のJSPページ群を選択させてURLリストを自動生成することもできる。
【0046】
図14は、リクエスト制御部10の動作を説明するフローチャートである。
図14を参照すると、リクエスト制御部10は、上記のようにして用意されたURLリストを読み込んで(ステップ1401)、当該URLリスト中の所定のURLに対してHTTPリクエストを送信する(ステップ1402)。このとき、このHTTPリクエストには、componentInvoke=trueというパラメータが付加される。このHTTPリクエストに対する応答であるHTTPレスポンスを受信すると、リクエスト制御部10は、当該HTTPレスポンスにおいてJSPコンパイルエラーか否かを調べる(ステップ1403、1404)。JSPコンパイルエラーが発生しなかった場合は、当該URLに対する処理が終了する。
【0047】
一方、このURLリストを用いたHTTPリクエストの結果、JSPコンパイルエラーが発生し、HTTPレスポンスとしてエラー結果が返ってきた場合、リクエスト制御部10は、componentInvoke=falseというパラメータを付加して再度HTTPリクエストを送信する(ステップ1405)。JSPコンパイルエラーは、JSPタグ記述とコンポーネントとの関連に不整合が発生している可能性が高い。そこで、再度の送信によって、コンポーネント呼び出しは実行せず呼び出し部分にダミーの結果を与えるダミー実行を、JSP単体テスト用アプリケーションに行わせ、HTTPレスポンスを受信する(ステップ1406)。ダミー実行については後述する。
以上のステップ1402〜1406は、ステップ1401で読み込まれたURLリストの全てのURLに対して実行される(ループ)。
【0048】
JSP単体テスト用ウェブアプリケーションには、開発者が開発したJSPページとテストで実行可能なコンポーネントが用意されており、タグライブラリ定義ファイルとプログラムロジックによって、リクエスト制御部10から発行されたHTTPリクエストに対応したJSPページをHTTPサーブレット経由で呼び出すことができる。また、モニタ生成部50によって生成されたモニタ20と、JSPページとコンポーネントとの整合性の検証を行う整合性検証部30とが実装されている。また、図13に示したように、JSPページのJSPタグ記述において、JSPタグハンドラ呼び出しがモニタ20への呼び出しに置き換えられている。
【0049】
モニタ20は、JSPページのテスト実行に伴って呼び出され、当該JSPによるコンポーネント呼び出しを監視する。
図15は、モニタ20の動作を説明するフローチャートである。
図15を参照すると、モニタ20は、まずHTTPリクエストの対象であるJSPページ中のコンポーネント呼び出し情報を抽出する(ステップ1501)。そして、整合性検証部30を呼び出し、ステップ1501で抽出されたコンポーネント呼び出し情報を、HTTPリクエスト名から取得できるJSPページ名と共に、整合性検証部30に渡す(ステップ1502)。
【0050】
次に、モニタ20は、リクエスト制御部10からのHTTPリクエストにおけるパラメータcomponentInvokeを参照し(ステップ1503)、その値がtrueの時は、本来のJSPタグ記述におけるJSPタグハンドラ(モニタ20への呼び出しに置き換えられる前のJSPタグハンドラ)に対して、実際にコンポーネント呼び出しを実行させる(ステップ1504)。そして、当該コンポーネント呼び出しにおけるコンポーネント呼び出し情報を整合性検証部30へ送る。また、コンポーネント呼び出しの結果を、後述のように、JSPページへ返す。
【0051】
一方、パラメータcomponentInvokeの値がfalseの時は、モニタ20は、コンポーネント呼び出しを行わずにダミー実行を行い、ダミーの結果をコンポーネント呼び出しの結果としてJSPページへ返す(ステップ1505)。この場合、JSPタグ記述部分における実際の処理結果としては、“dummy”という文字列が返される。また、実際にタグハンドラを実行しなければ判断できない分岐処理がコンポーネント呼び出しに関わっている場合は、モニタ生成部50にてコンポーネント呼び出し部分の直後に追加されたロジックにより、全てのコンポーネントに関して呼び出し情報のみが抽出され、整合性検証部30へ送られる。
【0052】
図16は、コンポーネント呼び出しに対するモニタ20の動作を説明する図である。この図の例では、コンポーネントA、Bが呼び出されるものとする。
図16において、JSPページの実行に伴ってモニタ20が実装されたクラス(以下、モニタ実装クラス)が呼び出されると、componentInvokeの値がtrueの場合は、モニタ実装クラスからタグハンドラクラスへ親クラスのdoStart()メソッド呼び出しが返される。そして、タグハンドラクラスの実行時におけるメソッド呼び出しの動作により、対応するコンポーネントA、Bが呼び出される。一方、componentInvokeの値がfalseの場合は、コンポーネントA、Bの呼び出しは行われず、コンポーネント呼び出し情報のみが抽出され、モニタ実装クラスからタグハンドラクラスへはメソッド呼び出しの代わりに“dummy”という文字列が返される。
【0053】
整合性検証部30は、上述したモニタ20によって得られたコンポーネント呼び出し情報に基づいて、当該コンポーネント呼び出しとコンポーネントとの整合性を検証する。
図17は、整合性検証部30の構成を示す図である。
図17を参照すると、整合性検証部30は、コンポーネント呼び出し情報を検証する呼び出し情報検証部31と、JSPページにおけるコンポーネント呼び出しの検証結果を所定の記述形式で作成する結果記述作成部32と、結果記述作成部32にて作成された検証結果のログを出力する検証結果ログ出力部33と、必要に応じてJSPページ仕様記述を更新する仕様更新部34とを備える。
【0054】
呼び出し情報検証部31は、モニタ20により抽出されたコンポーネント呼び出し情報を入力し、JSP仕様記述格納部40に格納されている当該JSPページの仕様記述を参照し比較して、整合性を検証する。
図18、19は、呼び出し情報検証部31による処理の流れを説明するフローチャートである。
図18に示すように、呼び出し情報検証部31は、テスト実行されたJSPページからモニタ20により抽出されたJSPページ名とコンポーネント呼び出し情報とを取得すると(ステップ1801)、まず、JSP仕様記述格納部40を調べ、取得したJSP名に対応するJSP仕様記述が存在するかどうかを調べる(ステップ1802)。対応するJSP仕様記述が存在しない場合は、当該JSPページにおけるコンポーネント呼び出しとその呼び出し対象であるコンポーネントとが不整合であるため、呼び出し情報検証部31は、不整合という検証結果を結果記述作成部32に通知する(ステップ1803)。
【0055】
取得したJSP名に対応するJSP仕様記述がJSP仕様記述格納部40に格納されていた場合、呼び出し情報検証部31は、次に、JSP仕様記述格納部40から、当該JSP仕様記述に登録されているコンポーネント呼び出し情報のリスト(コンポーネント名)を取得する(図19、ステップ1804)。そして、モニタ20により抽出されたコンポーネント呼び出し情報のコンポーネント名が当該リスト中に存在するかどうかを調べる(ステップ1805)。同一のコンポーネント名が存在しない場合、当該JSPページにおけるコンポーネント呼び出しとその呼び出し対象であるコンポーネントとが不整合であるため、呼び出し情報検証部31は、不整合という検証結果を結果記述作成部32に通知する(ステップ1803)。
【0056】
JSP仕様記述のコンポーネント呼び出し情報に、モニタ20により抽出されたコンポーネント呼び出し情報と同一のコンポーネント名のものが存在した場合、次に呼び出し情報検証部31は、JSP仕様記述格納部40から、当該JSP仕様記述における当該コンポーネント呼び出し情報を取得する(ステップ1806)。そして、取得したコンポーネント呼び出し情報とモニタ20により抽出されたコンポーネント呼び出し情報とに関して、コンポーネント種別が同一かどうか(ステップ1807)、コンポーネントの属性が記述されている場合はその属性値が同一かどうか(ステップ1808、1809)、スコープの情報が記述されている場合はそのスコープが同一かどうか(ステップ1810、1811)を、それぞれ調べる。コンポーネント種別、属性値、スコープのいずれかが異なっている場合、当該JSPページにおけるコンポーネント呼び出しとその呼び出し対象であるコンポーネントとが不整合であるため、呼び出し情報検証部31は、不整合という検証結果を結果記述作成部32に通知する(ステップ1803)。
【0057】
一方、コンポーネント種別、属性またはスコープ情報が記述されている場合の属性値またはスコープがいずれも同一である場合、呼び出し情報検証部31は、当該コンポーネント呼び出しを後述する記述漏れ抽出用のリストに登録する(ステップ1812)。そして、整合という検証結果を結果記述作成部32に通知する(ステップ1813)。
【0058】
また、呼び出し情報検証部31は、モニタ20においてJSPページ単位でコンポーネント呼び出し抽出が終了した際に、記述漏れのエラー項目をチェックする。
図20は、呼び出し情報検証部31による記述漏れのエラー項目の検出処理の流れを説明するフローチャートである。
図20を参照すると、呼び出し情報検証部31は、まず、JSP仕様記述格納部40からJSP仕様記述を読み込み、図19のステップ1812で作成された記述漏れ抽出用リストを読み込む(ステップ2001、2002)。そして、検証対象である(すなわちリストに対応する)JSPページのJSP仕様記述における各コンポーネント呼び出し情報に順次着目し(ステップ2003)、当該コンポーネント呼び出し情報に対応する検証結果が記述漏れ抽出用リストに存在するかどうかを調べる(ステップ2004)。
【0059】
このステップ2003、2004の処理を、検証対象であるJSPページのJSP仕様記述における全てのコンポーネント呼び出し情報に対して行う(ループ)。そして、1つでも記述漏れ抽出用リストに存在しないコンポーネント呼び出し情報があったならば、その時点で、当該検証対象であるJSPページに記述漏れのエラーがあったことを結果記述作成部32に通知して処理を終了する(ステップ2005)。
【0060】
結果記述作成部32は、呼び出し情報検証部31の検証結果に基づいて呼び出し結果記述を作成する。呼び出し結果記述は、JSPページ単位で検証の結果得られたコンポーネント呼び出し情報をまとめたものであり、整合・不整合の別と不整合の理由(JSPページが存在しない、属性が不明など)、記述漏れ等の情報が含まれる。図21は、呼び出し結果記述の例を示す図である。図21に示す例では、呼び出し結果記述には、モニタ20にて抽出されたコンポーネント呼び出し情報と、呼び出し情報検証部31による検証結果とが記述されている。また、この検証結果に対する識別番号が付される。
【0061】
検証結果ログ出力部33は、結果記述作成部32により作成された呼び出し結果記述に基づいて検証結果のログ情報を出力し、例えば所定のディスプレイ装置に当該ログ情報を表示して、JSPページ(ウェブアプリケーション)の開発者に通知する。図22は、検証結果のログ情報の表示出力例を示す図である。図22において、右端のチェックボックスは、後述する仕様更新処理において、どのJSPページ(JSPファイル)を更新するかを指定するために用いられる。
【0062】
開発者は、出力された検証結果を確認し、不整合箇所に関して、当該検証結果に基づいてJSPページのJSPタグ記述を修正することができる。さらに本実施の形態では、検証結果により得られた不整合箇所を正しいJSPタグ記述としてJSPページ仕様記述に反映させることができる。この場合、開発者は、不整合であるJSPページの検証結果の識別番号と必然性の情報(trueまたはfalse)を指定して、仕様更新部34にJSP仕様記述の更新をリクエストする。
【0063】
仕様更新部34は、上記の更新リクエストを受け付け、当該リクエストの対象であるJSPページのJSP仕様記述を更新する。
図23は、仕様更新部34の動作を説明するフローチャートである。
図23を参照すると、仕様更新部34は、更新リクエストを受け付けると(ステップ2301)、当該更新リクエストに含まれる識別番号に基づいて、更新すべきコンポーネント呼び出し情報を特定する(ステップ2302)。そして、JSP仕様記述格納部40から対応するJSPページのJSP仕様記述を読み出す(ステップ2303)。
【0064】
次に、仕様更新部34は、更新リクエストの内容に応じて、JSP仕様記述における所望の項目の記述を削除もしくは追加する(ステップ2304、2305、2306)。そして、記述内容が変更されたJSP仕様記述をJSP仕様記述格納部40に格納する(ステップ2307)。
以上のようにして、モニタ20により抽出されたコンポーネント呼び出し情報の内容が、対応するJSPページのJSP仕様記述に反映されることとなる。
【0065】
次に、以上のように構成された本実施の形態のウェブアプリケーション開発支援装置によるJSPページの検証処理を説明する。
図24は、本実施の形態のウェブアプリケーション開発支援装置によるJSPページの検証処理の全体的な流れを説明するフローチャートである。
図24に示すように、まず、予め用意されたURLを用いて、リクエスト制御部10によりHTTPリクエストが発行される(ステップ2401)。このHTTPリクエストは、JSP単体テスト用ウェブアプリケーションにおいて、タグライブラリ定義ファイル及びプログラムロジックによって処理され、HTTPリクエストに対応したJSPページが呼び出される(ステップ2402)。そして、このJSPページにより動的に生成されたコンテンツが、HTTPレスポンスとしてリクエスト制御部10に返される。
【0066】
一方、JSPページが呼び出された際、モニタ20により、当該JSPページのタグ記述に基づいて、タグハンドラにより実行されるコンポーネント呼び出しに関するコンポーネント呼び出し情報が抽出される(ステップ2403)。そして、抽出されたコンポーネント呼び出し情報が、整合性検証部30により、予め設定されてJSP仕様記述格納部40に格納されているJSP仕様記述と照合されることにより、当該コンポーネント呼び出しとその対象であるコンポーネントとの整合性が検証される(ステップ2404)。
【0067】
JSPページ(ウェブアプリケーション)の開発者は、この検証結果を参照し、対応措置として、検証対象であったJSPページの不整合箇所を修正するか、JSP仕様記述の方を更新するかを選択できる。JSP仕様記述を更新する場合は、更新リクエストの入力を条件として、整合性検証部30の仕様更新部34により、JSP仕様記述の記述内容がモニタ20にて抽出されたコンポーネント呼び出し情報の内容に更新される(ステップ2405、2406)。
【0068】
【発明の効果】
以上説明したように、本発明によれば、JSPページとその関連するコンポーネントとの間の整合・不整合を解析し、自動的に検証することが可能となる。
また本発明によれば、JSPページとその関連するコンポーネントとの間の整合・不整合の検証を行うことにより、JSPページの開発作業を支援し、JSPページの品質向上および開発コストの削減に寄与することができる。
【図面の簡単な説明】
【図1】 本実施の形態で定義されるコンポーネント呼び出し情報の構成を示す図である。
【図2】 本実施の形態で用いられるJSP仕様記述の例を示す図である。
【図3】 本実施の形態によるウェブアプリケーション開発支援装置を実現するコンピュータ装置のハードウェア構成の例を模式的に示した図である。
【図4】 本実施の形態によるウェブアプリケーション開発支援装置の機能構成を示す図である。
【図5】 本実施の形態におけるモニタ生成部の機能を説明する図である。
【図6】 本実施の形態におけるモニタ生成部の動作を説明するフローチャートである。
【図7】 本実施の形態におけるモニタ生成部の動作を説明するフローチャートであり、コンポーネント呼び出しの種別判断と関連する属性とを求めるためのタグライブラリの解析処理を説明するフローチャートである。
【図8】 図7の処理において用いられる情報を示す図であり、図8(A)はタグライブラリ定義ファイルのパスのリストを示す図、図8(B)はタグハンドラの定義を示す図である。
【図9】 本実施の形態で用いられるコンポーネント種別判断テーブルの構成例を示す図である。
【図10】 タグハンドラにおける分岐ロジックのコードにコンポーネント呼び出し情報のロジックを追加した例を示す図である。
【図11】 モニタ機能を実装したタグハンドラクラスのソースコードの例を示す図である。
【図12】 モニタ機能タグライブラリを呼び出すタグライブラリ定義ファイルの例を示す図である。
【図13】 通常のタグハンドラ呼び出しとモニタの呼び出しとの違いをタグライブラリ定義ファイルの関係で説明する図である。
【図14】 本実施の形態におけるリクエスト制御部の動作を説明するフローチャートである。
【図15】 本実施の形態におけるモニタの動作を説明するフローチャートである。
【図16】 コンポーネント呼び出しに対するモニタの動作を説明する図である。
【図17】 本実施の形態における整合性検証部の構成を示す図である。
【図18】 本実施の形態における呼び出し情報検証部による処理の流れを説明するフローチャートである。
【図19】 本実施の形態における呼び出し情報検証部による処理の流れを説明するフローチャートである。
【図20】 本実施の形態における呼び出し情報検証部による記述漏れのエラー項目の検出処理の流れを説明するフローチャートである。
【図21】 呼び出し情報検証部の結果記述作成部により生成される呼び出し結果記述の例を示す図である。
【図22】 呼び出し情報検証部の検証結果ログ出力部による検証結果のログ情報の表示出力例を示す図である。
【図23】 本実施の形態における仕様更新部の動作を説明するフローチャートである。
【図24】 本実施の形態のウェブアプリケーション開発支援装置によるJSPページの検証処理の全体的な流れを説明するフローチャートである。
【図25】 JSPページに関連する主要なコンポーネント群を示す図である。
【符号の説明】
10…リクエスト制御部、20…モニタ、30…整合性検証部、31…呼び出し情報検証部、32…結果記述作成部、33…検証結果ログ出力部、34…仕様更新部、40…JSP仕様記述格納部、50…モニタ生成部、101…CPU、103…メインメモリ、105…ハードディスク[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a method and system for verifying consistency between a component call of a JSP used for a web application or the like and a component.
[0002]
[Prior art]
As a technique used in a web application that provides a service via a network such as the Internet, there is a technique in which a web server dynamically generates a web page using a script language (server-side script language) and transmits it to a client. JSP (JavaServer Pages: trademark of Sun Microsystems, Inc.) is one of these types of server-side script languages, and this function is realized by using Java (trademark of Sun Microsystems, Inc.) ( For example, see
[0003]
Therefore, a web page file (hereinafter referred to as a JSP page) containing dynamic content by JSP has many languages at the same time, such as a description portion by JSP and a description portion by HTML, regarding the language expressing the dynamic content. is doing. The HTML description realizes layout and control when a web page is displayed on a browser. On the other hand, the description of JSP is a script describing a predetermined process, and operates as a servlet at the time of execution. Then, necessary operations are performed on other components accessible according to the design of the script, and the result of this operation is transmitted to the browser as a response.
[0004]
Here, a component means an object, and a component related to JSP indicates a Java bean, a message resource, another JSP page or a web page on which a JSP page depends.
FIG. 25 is a diagram showing a main component group related to the JSP page.
[0005]
[Patent Document 1]
JP 2002-366514 A
[Non-Patent Document 1]
“JavaServer Pages TM DYNAMICALLY GENERATED WEB CONTENT ", [online], [Search May 21, 2003], Internet <URL: HYPERLINK" http://www.cs.hut.fi/~ctl/3dm/ "http: // java .sun.com / j2ee / ja / jsp / >
[0006]
[Problems to be solved by the invention]
As described above, a JSP used for a web application or the like accesses a predetermined component and performs a necessary operation at the time of execution. However, in the integration test and the operation test in the actual web application development, since the specification regarding the description contents of the JSP is not predetermined before the development, the component calling part of the JSP page and the component developed by other developers Inconsistency often occurs between the two.
Therefore, conventionally, when developing a web application, the consistency of the description of the JSP page must be confirmed manually by the developer, or an inconsistency can be detected one by one by actually performing an integration test on the application server. Has been done.
[0007]
However, when there are a large number of component call descriptions in the web application, it is not easy to completely detect inconsistencies between the component call of the JSP page and the component.
If such inconsistencies cannot be removed completely, a system may fail even after the web application is running due to inconsistencies that exist in the web application. And if a failure occurs, the entire development will incur extra costs.
[0008]
In addition, it is possible to analyze the consistency between JSP pages and components and automatically verify that tag script expressions freely created by users such as the program logic of Java scriptlets and JSP tag libraries are allowed. Made it difficult.
[0009]
In view of the above problems, an object of the present invention is to provide a method and tool for analyzing and automatically verifying consistency / inconsistency between a JSP page and its related components.
In addition to the above object, the present invention supports JSP page development work by automatically verifying inconsistencies between a JSP page and its related components, and improves and improves the quality of the JSP page. The purpose is to contribute to cost reduction.
[0010]
[Means for Solving the Problems]
The present invention that achieves the above object is realized as a web application development support device configured as follows. This web application development support apparatus monitors the execution of a component call on a web page on which content is dynamically generated, extracts information about the component call, and based on the information about the component call extracted by the monitor And a consistency verification unit that verifies the consistency between the component call and the target component.
[0011]
More preferably, the monitor extracts information related to the component call regardless of whether or not the component call is executed when it is not determined until execution whether or not the predetermined component call is actually executed. . In addition, the consistency verification unit verifies the consistency between the component call and the component by collating the specification information that summarizes information related to the component call preset for each web page with the information extracted by the monitor. To do.
[0012]
Further, this web application development support device analyzes a specification update unit that updates the specification information based on the verification result by the consistency verification unit and a library corresponding to the component call by analyzing information about the library used for the description of the component call. The monitor generation unit for generating the information can be further provided.
[0013]
The present invention can also be realized as a component call monitoring device configured as follows. That is, the component call monitoring device monitors the execution of a request control unit that issues an HTTP request for a web page on which content is dynamically generated, and the component call for generating content on the web page. And a monitor for extracting information related to the call. In addition, the component call monitoring device can further include a monitor generation unit that analyzes information related to the library used for description of the component call and generates a monitor corresponding to the component call.
[0014]
Here, more preferably, the monitor generation unit extracts a library definition file stored in a predetermined storage unit based on an analysis result of information on the library, and extracts information on the component call when executing the component call. By replacing it with a library definition file that includes
[0015]
Another aspect of the present invention that achieves the above object is realized as the following data processing method using a computer. The data processing method includes a first step of analyzing information related to a library used for description of a component call with respect to a component call for generating the content in a web page on which content is dynamically generated, A second step of replacing the library definition file stored in the predetermined storage means with a library definition file including a function of extracting information related to the component call when executing the component call based on the analysis result of the step And a third step of executing a component call using the library definition file replaced by the second step and extracting information on the executed component call.
[0016]
In addition, this data processing method is performed by collating specification information that is pre-set for each web page and storing information related to component invocation stored in a predetermined storage unit with the information extracted in the third step. A fourth step of verifying the consistency between the component call and the target component can be included. Furthermore, it is possible to include a fifth step of updating the specification information stored in the predetermined storage means based on the verification result in the fourth step.
[0017]
Furthermore, the present invention is also realized as a program that controls a computer to function as the above-described web application development support device or component call monitoring device, or a program that causes a computer to execute processing corresponding to each step of the data processing method. Is done. This program can be provided by being stored and distributed in a magnetic disk, an optical disk, a semiconductor memory, or other recording media, or distributed via a network.
[0018]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, the present invention will be described in detail based on embodiments shown in the accompanying drawings.
The present invention uses a method for dynamically verifying whether a developed JSP page is correctly developed by causing a JSP page to be verified to be test-executed. Regarding the JSP description expression, the expression based on the JSP tag library description is to be verified. The JSP tag library performs tag-based description for the description of the JSP page.
[0019]
In this embodiment, component call information corresponding to the specification for verification is defined for the JSP page to be developed.
FIG. 1 is a diagram showing a configuration of component call information defined in the present embodiment.
As shown in FIG. 1A, the component call information includes component name, component type, component attribute, and scope information regarding the component to be called. The component name is a name used when a component is called using the attribute of the JSP tag description. The component type is the type of the component to be called, such as a JSP bean, a message resource, or another JSP page. The component attribute is information used when an attribute is required for component invocation such as when the component is nested. The scope is information used to specify a session scope, a request scope, and the like.
[0020]
In the present embodiment, a component call information table as shown in FIG. 1A is generated for the JSP tag description in the JSP page, and the component call information is managed. For example,
<bean: message key = "title.welcome"/>
For the JSP tag description, a component call information table as shown in FIG. 1B is generated. Also,
<bean: write name = "user" property = "username" scope = "session" filter = "true"/>
For the JSP tag description, a component call information table as shown in FIG. 1C is generated.
[0021]
Incidentally, a plurality of JSP tag descriptions can exist in one JSP page. Therefore, the above component call information is managed collectively for each JSP page. A set of component call information tables for each JSP page is called a JSP page specification description.
FIG. 2 is a diagram illustrating an example of a JSP specification description.
As shown in the figure, each component call information of a JSP page has “inevitability” information indicating whether the description in the JSP page is essential (true if necessary, false if not essential).
[0022]
In this embodiment, the consistency between the description of the JSP page and the called component is verified using the component call information defined as described above. The above-mentioned JSP specification description is created in advance before executing verification according to the present embodiment. The component call information and the JSP specification description only need to include information effective for verifying the consistency between the JSP page and the related component in a certain format, and are not necessarily shown in FIGS. It is not limited to the configuration.
[0023]
FIG. 3 is a diagram schematically illustrating an example of a hardware configuration of a computer device that realizes the web application development support device according to the present embodiment.
The computer apparatus shown in FIG. 3 includes a CPU (Central Processing Unit) 101 which is a calculation means, a
Note that FIG. 3 merely illustrates the hardware configuration of the computer apparatus that implements the present embodiment, and various other configurations can be employed as long as the present embodiment is applicable. For example, instead of providing the
[0024]
FIG. 4 is a diagram showing a functional configuration of the web application development support apparatus according to the present embodiment.
Referring to FIG. 4, the web application development support apparatus according to the present embodiment performs an HTTP (HyperText Transfer Protocol) request to perform a test execution of a JSP page, and a component of the executed JSP page. A
[0025]
The
[0026]
In the present embodiment, the expression based on the JSP tag library description is to be verified. Some JSP tag libraries are disclosed as libraries, but can be freely developed by users. Therefore, in order to extract calls to all JSP tag libraries, it is necessary to generate a
[0027]
FIG. 5 is a diagram illustrating the function of the
Referring to FIG. 5, the
[0028]
With reference to FIG. 6, a tag library analysis process by the
As shown in FIG. 6, the
[0029]
Next, the
Next, the
[0030]
After the analysis process in step 607, the
[0031]
Next, the
[0032]
Next, the source code analysis of the JSP tag handler class in step 607 will be described with reference to FIG. In this analysis processing, which attribute is related to the component call is analyzed based on the attribute acquired from the tag library definition file.
The
[0033]
Next, the
Next, the
[0034]
In JSP, component operations existing in various scopes are normally performed by calling a getAttribute (name, pageContext.APPLICATION_SCOPE) method and a pageContext.findAttribute (name) method as methods of the PageContext object. Therefore, the
[0035]
On the other hand, when the method call of the getAttribute (name, pageContext.APPLICATION_SCOPE) method and the pageContext.findAttribute (name) method exists in the tag handler, the
[0036]
Next, the
FIG. 9 is a diagram illustrating a configuration example of the component type determination table.
In the component type determination table shown in FIG. 9, the return value type of getAttribute () / findAttribute () is associated with the component type, the location of the attribute variable, and the attribute name defined in the Tld file. In the illustrated example, for example, when the return value type of the method is a message resource type, the component is determined to be a message component. As a specific example, in the case of the following description, the component type is determined to be a JSP bean.
Object object = pageContext.findAttribute (name);
In the case of the following description, the component type is determined to be a message resource.
MessageResources resource =
(MessageResources) pageContext.getAttribute (bundle, pageContext.APPLICATION_SCOPE);
String messageValue = resource.getMessage (key);
The correspondence between the object type and the component type shown in the component type determination table is determined by the target JSP tag library. Therefore, this correspondence needs to be given prior to the execution of the analysis process.
[0037]
Also, there may be branch logic in the tag handler that cannot be analyzed as to whether the component call is actually performed. In this case, it is impossible to determine whether or not the component is actually called unless the tag handler is executed. Therefore, a logic for extracting the component call information is added immediately after the component call part. Thus, the called component call information can be transmitted when the tag handler is executed.
FIG. 10 is a diagram illustrating an example in which the logic of component call information is added to the code of the branch logic in the tag handler.
[0038]
After the above analysis, the
FIG. 11 is a diagram illustrating an example of a source code of a tag handler class that implements a monitor function, and FIG. 12 is a diagram illustrating an example of a tag library definition file that calls a monitor function tag library.
[0039]
FIG. 13 is a diagram for explaining the difference between a normal tag handler call and a
In the example of FIG. 13, the URL for calling the tag library declared in the JSP page
<bean: write name = "username"… />
From the description, web. When mapping the URL described in xml (web application) and the tag library definition file, in the case of a normal call, from the description of the tag rib
/WEB-INF/struts-bean.tld
Calls “struts-bean.tld” and “WriteTag” is called from the tag handler definition described in the tag library definition file.
On the other hand, after the monitor function is implemented, web. When mapping the URL described in xml to the tag library definition file,
/WEB-INF/monitor.tld
“Monitor.tld” is called, and “MonitorWriteTag” is called from the tag handler definition described in the tag library definition file.
As described above, the function of the
[0040]
Incidentally, the
[0041]
1. When the appearance of a component call type is determined by branch logic.
The tag handler class can describe branch logic under various conditions as Java logic. For example, a component can be called by date or time, or a component can be called by the behavior of an object with business logic. Further, the tag library of the framework called Struts has a logic of extracting a component as a message resource if the component does not exist in the session scope. In this logic, the component type to be acquired changes depending on whether the component is a session scope or the message resource.
In order to determine such logic, it is necessary to operate on a test application in which resources capable of executing branch logic are individually prepared by the test environment.
[0042]
2. When a tag handler that cannot detect an operation on the PageContext object is used.
In the tag handler, the attribute value may not be used for the operation of the PageContext object, or the description of the PageContext object may not be analyzed. Such tag handlers often do not make component calls, but may be affected by component calls of nested tag handlers. For example, the Struts tag library has a logic tag handler, and a nested tag handler may not be called depending on the value of an attribute of a JSP tag description using logic.
[0043]
In the above two cases, even if the “necessity” for the component call information in the JSP specification description is true, it cannot be guaranteed by static analysis that the call is always made when the JSP page is executed. Therefore, it is necessary to dynamically execute the JSP page to make a component call.
[0044]
With the function of the
[0045]
The
[0046]
FIG. 14 is a flowchart for explaining the operation of the
Referring to FIG. 14, the
[0047]
On the other hand, if a JSP compilation error occurs as a result of the HTTP request using this URL list and an error result is returned as an HTTP response, the
The above steps 1402 to 1406 are executed for all URLs in the URL list read in step 1401 (loop).
[0048]
The JSP unit test web application has a JSP page developed by the developer and components that can be executed by the test. The tag library definition file and the program logic correspond to the HTTP request issued from the
[0049]
The
FIG. 15 is a flowchart for explaining the operation of the
Referring to FIG. 15, the
[0050]
Next, the
[0051]
On the other hand, when the value of the parameter componentInvoke is “false”, the
[0052]
FIG. 16 is a diagram for explaining the operation of the
In FIG. 16, when the class in which the
[0053]
The
FIG. 17 is a diagram illustrating a configuration of the
Referring to FIG. 17, the
[0054]
The call
18 and 19 are flowcharts illustrating the flow of processing by the call
As shown in FIG. 18, when the call
[0055]
When the JSP specification description corresponding to the acquired JSP name is stored in the JSP specification
[0056]
When the component call information in the JSP specification description has the same component name as the component call information extracted by the
[0057]
On the other hand, if the attribute value or scope when the component type, attribute, or scope information is described is the same, the call
[0058]
In addition, the call
FIG. 20 is a flowchart for explaining the flow of processing for detecting a description omission error item by the call
Referring to FIG. 20, the call
[0059]
The processes in steps 2003 and 2004 are performed on all component call information in the JSP specification description of the JSP page to be verified (loop). If there is at least one component call information that does not exist in the description omission extraction list, the result
[0060]
The result
[0061]
The verification result
[0062]
The developer can confirm the output verification result, and can correct the JSP tag description of the JSP page based on the verification result regarding the inconsistent portion. Furthermore, in this embodiment, the inconsistent part obtained from the verification result can be reflected in the JSP page specification description as a correct JSP tag description. In this case, the developer specifies the identification number of the verification result of the JSP page that is inconsistent and the information on the necessity (true or false), and requests the
[0063]
The
FIG. 23 is a flowchart for explaining the operation of the
Referring to FIG. 23, upon receiving the update request (step 2301), the
[0064]
Next, the
As described above, the contents of the component call information extracted by the
[0065]
Next, a JSP page verification process by the web application development support apparatus of the present embodiment configured as described above will be described.
FIG. 24 is a flowchart for explaining the overall flow of JSP page verification processing by the web application development support apparatus of this embodiment.
As shown in FIG. 24, first, an HTTP request is issued by the
[0066]
On the other hand, when the JSP page is called, the
[0067]
The developer of the JSP page (web application) can refer to the verification result and select whether to correct the mismatched portion of the JSP page that is the verification target or to update the JSP specification description as a countermeasure. . When updating the JSP specification description, the
[0068]
【The invention's effect】
As described above, according to the present invention, it is possible to analyze and automatically verify consistency / inconsistency between a JSP page and its related components.
In addition, according to the present invention, by verifying consistency / inconsistency between a JSP page and its related components, the JSP page development work is supported, contributing to improvement in the quality of the JSP page and reduction in development cost. can do.
[Brief description of the drawings]
FIG. 1 is a diagram showing a configuration of component call information defined in the present embodiment.
FIG. 2 is a diagram showing an example of a JSP specification description used in the present embodiment.
FIG. 3 is a diagram schematically illustrating an example of a hardware configuration of a computer device that realizes a web application development support device according to the present embodiment;
FIG. 4 is a diagram showing a functional configuration of a web application development support apparatus according to the present embodiment.
FIG. 5 is a diagram for explaining functions of a monitor generation unit according to the present embodiment.
FIG. 6 is a flowchart illustrating an operation of a monitor generation unit according to the present embodiment.
FIG. 7 is a flowchart for explaining the operation of the monitor generation unit in the present embodiment, and is a flowchart for explaining tag library analysis processing for obtaining a component call type determination and related attributes.
8 is a diagram showing information used in the processing of FIG. 7. FIG. 8A is a diagram showing a list of tag library definition file paths, and FIG. 8B is a diagram showing tag handler definitions. is there.
FIG. 9 is a diagram showing a configuration example of a component type determination table used in the present embodiment.
FIG. 10 is a diagram illustrating an example in which component call information logic is added to a branch logic code in a tag handler.
FIG. 11 is a diagram illustrating an example of a source code of a tag handler class that implements a monitor function.
FIG. 12 is a diagram showing an example of a tag library definition file for calling a monitor function tag library.
FIG. 13 is a diagram for explaining a difference between a normal tag handler call and a monitor call in relation to a tag library definition file.
FIG. 14 is a flowchart illustrating an operation of a request control unit in the present embodiment.
FIG. 15 is a flowchart illustrating the operation of the monitor in the present embodiment.
FIG. 16 is a diagram for explaining an operation of a monitor for a component call.
FIG. 17 is a diagram showing a configuration of a consistency verification unit in the present embodiment.
FIG. 18 is a flowchart illustrating a process flow by a call information verification unit according to the present embodiment.
FIG. 19 is a flowchart illustrating a processing flow by a call information verification unit according to the present embodiment.
FIG. 20 is a flowchart for explaining a flow of processing for detecting a description omission error item by a call information verification unit according to the present embodiment;
FIG. 21 is a diagram illustrating an example of a call result description generated by a result description creation unit of a call information verification unit;
FIG. 22 is a diagram illustrating a display output example of verification result log information by a verification result log output unit of a call information verification unit;
FIG. 23 is a flowchart for explaining the operation of the specification updating unit in the present embodiment.
FIG. 24 is a flowchart for explaining the overall flow of JSP page verification processing by the web application development support apparatus of the embodiment;
FIG. 25 is a diagram showing a main component group related to a JSP page.
[Explanation of symbols]
DESCRIPTION OF
Claims (6)
前記ウェブページごとに予め設定された前記コンポーネント呼び出しに関する情報をまとめた仕様情報を所定の記憶手段から読み出し、当該仕様情報と前記モニタにより抽出された前記コンポーネント呼び出しに関する情報とを照合することにより、当該コンポーネント呼び出しと当該コンポーネント呼び出しの対象であるコンポーネントとの整合性を検証し、検証結果を所定の出力装置により出力する、プログラム制御されたCPUにて実現される整合性検証部と、
出力された前記検証結果に応じてユーザが所定の入力装置を用いて入力した、前記仕様情報のうち特定の前記コンポーネント呼び出しに関する情報を更新するための更新リクエストを受け付け、前記記憶手段に格納された前記仕様情報における当該更新リクエストにおいて指定されたコンポーネント呼び出しに関する情報の内容を、対応する前記モニタにより抽出された前記情報の内容に更新する、プログラム制御されたCPUにて実現される仕様更新部と
を備えることを特徴とするウェブアプリケーション開発支援装置。A component that extracts information related to the component call when a component call for generating the content is executed on a web page where the content is dynamically generated , and whether or not the component call is actually executed is not determined until runtime A monitor implemented by a program-controlled CPU that extracts information regarding the component call as dummy data is called instead of the component to be called when the component call is not executed with respect to the call ;
By reading out the specification information that summarizes the information related to the component call preset for each web page from a predetermined storage unit, the specification information and the information related to the component call extracted by the monitor are collated, A consistency verification unit realized by a program-controlled CPU that verifies the consistency between the component call and the component that is the target of the component call, and outputs a verification result by a predetermined output device ;
An update request for updating information related to a specific component call out of the specification information input by a user using a predetermined input device according to the output verification result is received and stored in the storage unit A specification update unit realized by a program-controlled CPU that updates the content of information related to the component call specified in the update request in the specification information to the content of the information extracted by the corresponding monitor; A web application development support device comprising:
前記コンピュータが、前記ウェブページごとに予め設定された前記コンポーネント呼び出しに関する情報をまとめた仕様情報を所定の記憶手段から読み出し、当該仕様情報と抽出された前記コンポーネント呼び出しに関する情報とを照合することにより、当該コンポーネント呼び出しと当該コンポーネント呼び出しの対象であるコンポーネントとの整合性を検証し、検証結果を所定の出力装置により出力するステップと、
前記コンピュータが、出力された前記検証結果に応じてユーザが所定の入力装置を用いて入力した、前記仕様情報のうち特定の前記コンポーネント呼び出しに関する情報を更新するための更新リクエストを受け付け、前記記憶手段に格納された前記仕様情報における当該更新リクエストにおいて指定されたコンポーネント呼び出しに関する情報の内容を、抽出された前記情報のうちの対応する情報の内容に更新するステップと
を含むことを特徴とするデータ処理方法。When a component call for generating the content in a web page on which content is dynamically generated is executed, the computer extracts information about the component call and whether it is actually executed or not until execution time. For the component call that is not determined, extracting the information about the component call as dummy data is called instead of the component to be called when the component call is not executed ;
The computer reads specification information that summarizes information related to the component call preset for each web page from a predetermined storage unit, and collates the specification information with the extracted information related to the component call. Verifying the consistency between the component call and the component that is the target of the component call, and outputting a verification result by a predetermined output device ;
The computer receives an update request for updating information related to a specific component call out of the specification information input by a user using a predetermined input device in accordance with the output verification result, and the storage unit Updating the content of the information related to the component invocation specified in the update request in the specification information stored in the specification information to the content of the corresponding information in the extracted information. Method.
動的にコンテンツが生成されるウェブページにおける当該コンテンツを生成するためのコンポーネント呼び出しが実行された場合に当該コンポーネント呼び出しに関する情報を抽出し、かつ実際に実行されるかどうかが実行時まで決まらないコンポーネント呼び出しに関して、当該コンポーネント呼び出しが実行されなかった場合に呼び出し対象のコンポーネントに代えてダミーデータが呼び出されたものとして前記コンポーネント呼び出しに関する情報を抽出する処理と、
前記コンピュータが、前記ウェブページごとに予め設定された前記コンポーネント呼び出しに関する情報をまとめた仕様情報を所定の記憶手段から読み出し、当該仕様情報と抽出された前記コンポーネント呼び出しに関する情報とを照合することにより、当該コンポーネント呼び出しと当該コンポーネント呼び出しの対象であるコンポーネントとの整合性を検証し、検証結果を所定の出力装置により出力する処理と、
前記コンピュータが、出力された前記検証結果に応じてユーザが所定の入力装置を用いて入力した、前記仕様情報のうち特定の前記コンポーネント呼び出しに関する情報を更新するための更新リクエストを受け付け、前記記憶手段に格納された前記仕様情報における当該更新リクエストにおいて指定されたコンポーネント呼び出しに関する情報の内容を、抽出された前記情報のうちの対応する情報の内容に更新する処理と
を実行させることを特徴とするプログラム。On the computer,
A component that extracts information related to the component call when a component call for generating the content is executed on a web page where the content is dynamically generated , and whether or not the component call is actually executed is not determined until runtime Regarding the call, when the component call is not executed , a process of extracting information about the component call as dummy data is called instead of the component to be called ; and
The computer reads specification information that summarizes information related to the component call preset for each web page from a predetermined storage unit, and collates the specification information with the extracted information related to the component call. Processing for verifying the consistency between the component call and the component that is the target of the component call, and outputting a verification result by a predetermined output device ;
The computer receives an update request for updating information related to a specific component call out of the specification information input by a user using a predetermined input device in accordance with the output verification result, and the storage unit A program for executing processing for updating the content of the information related to the component call specified in the update request in the specification information stored in the specification information to the content of the corresponding information in the extracted information .
動的にコンテンツが生成されるウェブページにおける当該コンテンツを生成するためのコンポーネント呼び出しを実行する手段と、
コンポーネント呼び出しが実行された場合に当該コンポーネント呼び出しに関する情報を抽出し、かつ実際に実行されるかどうかが実行時まで決まらないコンポーネント呼び出しに関して、当該コンポーネント呼び出しが実行されなかった場合に呼び出し対象のコンポーネントに代えてダミーデータが呼び出されたものとして前記コンポーネント呼び出しに関する情報を抽出する手段と、
前記ウェブページごとに予め設定された前記コンポーネント呼び出しに関する情報をまとめた仕様情報を所定の記憶手段から読み出し、当該仕様情報と抽出された前記コンポーネント呼び出しに関する情報とを照合することにより、当該コンポーネント呼び出しと当該コンポーネント呼び出しの対象であるコンポーネントとの整合性を検証し、検証結果を所定の出力装置により出力する手段と、
出力された前記検証結果に応じてユーザが所定の入力装置を用いて入力した、前記仕様情報のうち特定の前記コンポーネント呼び出しに関する情報を更新するための更新リクエストを受け付け、前記記憶手段に格納された前記仕様情報における当該更新リクエストにおいて指定されたコンポーネント呼び出しに関する情報の内容を、抽出された前記情報のうちの対応する情報の内容に更新する手段として、
機能させることを特徴とするプログラム。Computer
Means for executing a component call to generate the content in a web page on which the content is dynamically generated;
When a component call is executed, information related to the component call is extracted, and regarding a component call whose execution is not determined until execution time, if the component call is not executed, Instead , means for extracting information about the component invocation as dummy data has been invoked ,
By reading out the specification information that summarizes the information related to the component call set in advance for each web page from a predetermined storage unit, by comparing the specification information with the extracted information related to the component call, Means for verifying consistency with the component that is the target of the component call, and outputting a verification result by a predetermined output device ;
An update request for updating information related to a specific component call out of the specification information input by a user using a predetermined input device according to the output verification result is received and stored in the storage unit As means for updating the content of the information related to the component call specified in the update request in the specification information to the content of the corresponding information in the extracted information,
A program characterized by functioning.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003156042A JP4023803B2 (en) | 2003-05-30 | 2003-05-30 | Web application development support apparatus, data processing method, and program |
US10/850,147 US20040268312A1 (en) | 2003-05-30 | 2004-05-20 | Application development support, component invocation monitoring, and data processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003156042A JP4023803B2 (en) | 2003-05-30 | 2003-05-30 | Web application development support apparatus, data processing method, and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004362000A JP2004362000A (en) | 2004-12-24 |
JP4023803B2 true JP4023803B2 (en) | 2007-12-19 |
Family
ID=33534552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003156042A Expired - Fee Related JP4023803B2 (en) | 2003-05-30 | 2003-05-30 | Web application development support apparatus, data processing method, and program |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040268312A1 (en) |
JP (1) | JP4023803B2 (en) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2874440B1 (en) * | 2004-08-17 | 2008-04-25 | Oberthur Card Syst Sa | METHOD AND DEVICE FOR PROCESSING DATA |
US7634721B1 (en) * | 2004-08-23 | 2009-12-15 | Sun Microsystems Inc. | Composite component architecture using javaserver pages (JSP) tags |
US7849459B2 (en) * | 2004-11-04 | 2010-12-07 | International Business Machines Corporation | Deploying java applications in resource constrained environments |
JP4489634B2 (en) * | 2005-05-12 | 2010-06-23 | 日本電信電話株式会社 | Web server system using Java servlet |
US20070089052A1 (en) * | 2005-10-13 | 2007-04-19 | Karle Christopher J | Systems, methods, and media for enforcing accessible content development |
US7735060B2 (en) * | 2006-06-29 | 2010-06-08 | Augusta Systems, Inc. | Method and system for rapidly developing and deploying sensor-enabled software applications |
US8015547B2 (en) * | 2006-06-29 | 2011-09-06 | Augusta Systems, Inc. | Reconfigurable, hierarchical component-based architecture and framework and methods for rapidly developing sensor device-enabling software applications |
US20080005721A1 (en) * | 2006-06-29 | 2008-01-03 | Augusta Systems, Inc. | Method and System for Rapidly Developing Sensor-Enabled Software Applications |
US8095923B2 (en) * | 2006-06-29 | 2012-01-10 | Augusta Systems, Inc. | System and method for deploying and managing intelligent nodes in a distributed network |
JP4940791B2 (en) * | 2006-07-04 | 2012-05-30 | 富士通株式会社 | Test support program, test support apparatus, and test support method |
JP4899971B2 (en) * | 2007-03-27 | 2012-03-21 | 富士通株式会社 | Test specification creation program, test specification creation device, and test specification creation method |
US7822853B2 (en) * | 2008-09-30 | 2010-10-26 | Microsoft Corporation | Stabilization of distributed systems |
US9058429B2 (en) * | 2009-11-06 | 2015-06-16 | Toby Biddle | Usability testing tool |
JP5669433B2 (en) | 2010-05-06 | 2015-02-12 | キヤノン株式会社 | Component coupling device and component coupling method |
US9361131B1 (en) * | 2011-06-24 | 2016-06-07 | Amazon Technologies, Inc. | Network resource access via a mobile shell |
US9104795B2 (en) * | 2011-06-28 | 2015-08-11 | International Business Machines Corporation | Integrating compiler warnings into a debug session |
US9384020B2 (en) * | 2013-01-18 | 2016-07-05 | Unisys Corporation | Domain scripting language framework for service and system integration |
US9229694B2 (en) | 2013-03-15 | 2016-01-05 | Gamesys Ltd. | Systems and methods for facilitating application development utilizing plugins |
US10936477B2 (en) * | 2018-01-31 | 2021-03-02 | Salesforce.Com, Inc. | End-to-end user interface component testing |
US11055417B2 (en) * | 2018-04-17 | 2021-07-06 | Oracle International Corporation | High granularity application and data security in cloud environments |
CN111124553B (en) * | 2019-12-06 | 2024-04-26 | 北京小米移动软件有限公司 | Program execution method, device, terminal and storage medium |
CN111240962B (en) * | 2019-12-31 | 2023-09-05 | 中移(杭州)信息技术有限公司 | Test method, test device, computer equipment and computer storage medium |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6620204B1 (en) * | 1997-11-25 | 2003-09-16 | International Business Machines Corporation | Automated HTML test page and test data generation for javascript objects |
CA2255023C (en) * | 1998-11-30 | 2004-04-13 | Siu Chung Yuen | A method and system for monitoring the execution of hybrid source code |
US6604209B1 (en) * | 2000-09-29 | 2003-08-05 | Sun Microsystems, Inc. | Distributed component testing in an enterprise computer system |
US7047522B1 (en) * | 2001-04-30 | 2006-05-16 | General Electric Capital Corporation | Method and system for verifying a computer program |
US6826716B2 (en) * | 2001-09-26 | 2004-11-30 | International Business Machines Corporation | Test programs for enterprise web applications |
US6792460B2 (en) * | 2002-10-02 | 2004-09-14 | Mercury Interactive Corporation | System and methods for monitoring application server performance |
US7650592B2 (en) * | 2003-03-01 | 2010-01-19 | Bea Systems, Inc. | Systems and methods for multi-view debugging environment |
-
2003
- 2003-05-30 JP JP2003156042A patent/JP4023803B2/en not_active Expired - Fee Related
-
2004
- 2004-05-20 US US10/850,147 patent/US20040268312A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20040268312A1 (en) | 2004-12-30 |
JP2004362000A (en) | 2004-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4023803B2 (en) | Web application development support apparatus, data processing method, and program | |
US8813039B2 (en) | Method and system for software defect reporting | |
US7877681B2 (en) | Automatic context management for web applications with client side code execution | |
US20080126931A1 (en) | System and method for recording and reproducing user operation | |
US7451391B1 (en) | Method for web page rules compliance testing | |
US8621613B1 (en) | Detecting malware in content items | |
JP2011505605A (en) | Web document set automatic editing system and method | |
JP2003256202A (en) | Consistency check support program, consistency check support method, and consistency check support device | |
US20100138477A1 (en) | Crunching Dynamically Generated Script Files | |
US20160124795A1 (en) | Evaluation method and apparatus | |
US7519956B2 (en) | Method for generating document components and managing same | |
JP4282312B2 (en) | Web server, Web server having Java servlet function, and computer program | |
KR100692172B1 (en) | Universal string analyzer and method thereof | |
WO2014132145A1 (en) | Web service black box testing | |
US12001324B2 (en) | Operation pattern generation apparatus, operation pattern generation method and program | |
US11604662B2 (en) | System and method for accelerating modernization of user interfaces in a computing environment | |
JP2010267266A (en) | Test support device and test support method | |
JP4048736B2 (en) | Failure analysis support method and apparatus | |
CN113419738A (en) | Interface document generation method and device and interface management equipment | |
JP2006268118A (en) | Application environment checking device and method and program thereof | |
JP4681673B1 (en) | Operation verification apparatus, operation verification method, and operation verification program | |
JP2021015481A (en) | Information processing program, information processing method, and information processing device | |
CN112860543A (en) | Method and electronic equipment for detecting page operation | |
CN115391178A (en) | Method and device for carrying out App automatic test based on shared online document | |
CN114090428A (en) | Information processing method, information processing device, computer-readable storage medium and computer equipment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070206 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070501 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070529 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070828 |
|
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: 20070925 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20070926 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071001 |
|
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: 20101012 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |