JP2006185324A - アプリケーション・プログラムの開発支援方法、プログラム、情報処理装置 - Google Patents

アプリケーション・プログラムの開発支援方法、プログラム、情報処理装置 Download PDF

Info

Publication number
JP2006185324A
JP2006185324A JP2004380298A JP2004380298A JP2006185324A JP 2006185324 A JP2006185324 A JP 2006185324A JP 2004380298 A JP2004380298 A JP 2004380298A JP 2004380298 A JP2004380298 A JP 2004380298A JP 2006185324 A JP2006185324 A JP 2006185324A
Authority
JP
Japan
Prior art keywords
processing apparatus
information processing
inconsistency
data flow
application program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004380298A
Other languages
English (en)
Other versions
JP2006185324A5 (ja
JP4183192B2 (ja
Inventor
Hideki Tai
秀樹 田井
Mari Abe
麻理 安部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2004380298A priority Critical patent/JP4183192B2/ja
Priority to US11/318,718 priority patent/US7886276B2/en
Publication of JP2006185324A publication Critical patent/JP2006185324A/ja
Publication of JP2006185324A5 publication Critical patent/JP2006185324A5/ja
Application granted granted Critical
Publication of JP4183192B2 publication Critical patent/JP4183192B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】アプリケーション・プログラムの画面遷移の設計において、実装前にサーバオブジェクトに対する不整合を効果的に検出する。
【解決手段】アプリケーション・プログラムの制御フローグラフを作成し(S400)、制御フローグラフに基づいて、前記アプリケーション・プログラムで発生するデータフロー問題の解を算出し(S500)、算出した解に基づいて、前記アプリケーション・プログラムの不整合を検出し(S600)、検出した不整合に関する情報と修正内容を表示する(S700)。
【選択図】図2

Description

本発明は、アプリケーション・プログラムの開発を支援する方法、情報処理装置、プログラムに関する。さらに具体的には、アプリケーション・プログラムの画面遷移の設計について、整合性を検出する方法、情報処理装置、プログラムに関する。
従来より、アプリケーション・プログラムの開発を支援する方法が知られている。特に、Webアプリケーションでは、サーバサイドJava(登録商標)の技術を用いたシステムが普及してきており、特に、サーブレットを利用したシステム開発が主流になりつつある。サーブレットとは、クライアント(Webブラウザ)から送信されるリクエストをサーバ上で処理し結果を返送するサーバサイドのアプリケーション・プログラムである。
一般的なサーブレットを利用したシステムにおいては、Webブラウザから送信したリクエストに応じてサーブレットが起動され、そのサーブレットでデータベースへのアクセスを行う、または、そのアクセス結果を受けてデータ加工などの処理を行う。また、Webブラウザからのリクエストの内容に応じて分岐して処理したり、他のサーブレットを呼び出すなどを行い、結果をWebブラウザに返送する。
サーブレットに代わって、JSP(Java Server Pages)を利用する場合もある。JSPとはJava言語を用いて実現される、画面に表示するページであり、例えば、HTML(HyperText Markup Language)ファイル中にJava言語のコードを記述して、動的にページを生成することができる技術であり、サーブレットとJSPとを組み合わせて利用することもできる。
これらのサーブレットやJSPは、主にサーバに格納されるアプリケーション・オブジェクト(以下「サーバ・オブジェクト」)(例えば、Bean)を介して、データをやり取りする。これらのWebアプリケーション・プログラムについては、複雑な画面遷移(複数のページの遷移関係)や、プログラムが要求するサーバ・オブジェクトの依存性を考慮しなければならず、開発者は、誤りを発生しやすい。
このようなサーブレットやJSPを用いて、Webアプリケーションの開発を支援する方法としては、サーブレット、JSP、Beanをコンポーネント化して、これらの間の対応を明確にし、これらのコードを自動生成する方法が知られている(例えば、特許文献1)。この方法によれば、各コンポーネント間の対応が明確になり、対応するコードも自動作成されることにより、開発者を支援する。
特開2001−344105号公報
しかしながら、特許文献1の方法は、このWebアプリケーションを実際に動作させた場合の、エラーを検出することはできない。すなわち、この方法では、Webアプリケーションを設計し、作成することについては、開発者を支援するが、実際に、このWebアプリケーションを動作させた場合に発生するエラーを事前に開発者に認識させることはできない。
すなわち、Webアプリケーションの内部設計に不整合を残したまま実装を進めると、実装が終わった各コンポーネントを組み合わせた時点で原因の見つけ難いバグが発生してしまい、内部設計から見直す必要が生じる。一般に、Webアプリケーションの開発は、内部設計を行った後に各コンポーネントの実装を多数の開発者が分担して行うことも多い。内部設計には、画面遷移や各画面(JSP)、サーバーロジック(Servlet等)などの各コンポーネントの設計情報が含まれ、コンポーネントごとに開発が分担され、各コンポーネント間の不整合を見落としやすい。したがって、実装前に内部設計に不整合がないことを充分に確認しなければならないが、そのためには複雑な画面遷移やデータ依存を考慮しなければならず、不整合を検出するのは容易ではない。
そこで、本発明の目的は、アプリケーション・プログラムの実装前に、このアプリケーション・プログラムの不整合を効果的に検出する方法、情報処理装置、プログラムを提供することである。
本発明によれば、アプリケーション・プログラムの画面遷移の設計について、整合性を検出する方法において、アプリケーション・プログラムの制御フローグラフを作成する制御フローグラフ作成段階と、制御フローグラフに基づいて、前記アプリケーション・プログラムで発生する複数のデータフロー問題の解を算出するデータフロー解析段階と、算出した解に基づいて、前記アプリケーション・プログラムの不整合を検出する不整合検出段階と、検出した不整合に関する情報を表示する表示段階と、を備えることを特徴とする方法を提供する。
本発明では、アプリケーション・プログラムの画面遷移を制御フローグラフ、サーバ・オブジェクトを変数として捉え、アプリケーションの振る舞いの解析を幾つかのデータフロー問題に対応付ける。その上で、各データフロー問題の解を利用して、アプリケーション・プログラムのサーバ・オブジェクトへのアクセスに関する内部設計の妥当性検査とその結果のユーザへの提示方法を提案する。また、アプリケーションの動作を把握するために有用な情報提供の手段および方法を提案する。
したがって、アプリケーション・プログラムの実装前に、このアプリケーション・プログラムの不整合を効果的に検出することができる。すなわち、結果として、アプリケーション・プログラム開発における性質の悪いバグ、原因の発見や修正が難しいバグの発生頻度を低下させることが可能になり、その結果開発コストを低減することが可能となる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、又実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本発明の実施形態に係る情報処理装置10の機能ブロック図を示す。情報処理装置10は、情報処理を行う装置であり、コンピュータであってよい。また、情報処理装置10が、本発明のプログラムが実行されることで、本発明の効果を実現してもよい。情報処理装置10は、情報を演算する制御部300と、アプリケーションやサーバ・オブジェクトが記憶される記憶部500と、演算結果を表示する出力部200とから構成され、ユーザからの入力を受け付ける入力部100を備えていてもよい。
情報処理装置10は、Webアプリケーションの内部設計に相当するモデル情報を編集する機能を提供し、各内部設計コンポーネントに対応する成果物(JSPやJavaクラス等)のエディタとも連動するものとする。
制御部300は、情報処理装置10にて動作するアプリケーションやサーバ・オブジェクト等の演算、制御を行う中央処理装置であり、CPU(Central Processing Unit)であってよい。制御部10は、制御フローグラフ作成部310と、データフロー解析部320と、不整合検出部330とから構成される。
制御フローグラフ作成部310は、Webアプリケーションの画面遷移情報、内部設計情報、ソースコードに基づいて、制御フローグラフを作成する。データフロー解析部320は、この制御フローグラフに基づいて、Webアプリケーションで発生する複数のデータフロー問題の解を算出する。不整合検出部330は、この算出した解に基づいて、Webアプリケーションの不整合を検出する。修正部340は、検出した不整合に対して、この不整合を解消する修正内容を提示し、修正内容の選択について、ユーザからの入力を受ける。これとは異なる態様として、修正部340は、修正部340が表示した修正内容とは異なる修正内容を、ユーザが入力することを受け付けてもよい。
記憶部500は、情報処理装置10のOS、ミドルウェア、アプリケーション、サーバ・オブジェクト、サーバ・オブジェクトの参照等を記憶する。すなわち、記憶部500は、情報処理装置10で取り扱うプログラムやデータ等を記憶する。例えば、記憶部500は、コンピュータのメモリやハードディスク等であってよい。
出力部200は、情報処理装置10の演算結果を表示する。出力部200は、例えば、Webアプリケーションの不整合を検出した結果を表示する。出力部200は、例えば、CRTディスプレイや液晶ディスプレイ等であってよい。
入力部100は、ユーザからの入力を受けつけて、制御部300に入力された情報を伝える。入力部100は、Webアプリケーションの不整合を検出した後に、この不整合を修正するためにユーザからの入力を受け付ける。入力部100は、例えば、キーボード、マウス等の入力装置であってよい。
本発明によるWebアプリケーションの設計情報の不整合検出の手順について、図2に基づいて説明する。最初に、Webアプリケーションの設計情報を情報処理装置10に入力するため、入力部10を介して、内部設計、画面遷移情報などを元にモデル情報を入力する(S300)。モデル情報とは、このツールで保持するWebアプリケーションの内部設計情報で、編集の対象となる情報である。編集の対象となる情報とは、例えば、ページ、アクション、アクション・リザルトである。ここで、アクションとは、ブラウザもしくは他のアクションからの要求によってサーバ側で実行されるロジックの単位を指し、アクション・リザルトは、アクションの実行結果を表すコードもしくは文字列を指す。ユーザがモデルを直接に入力しない場合でも、Webアプリケーションのソースコードから当該Webアプリケーションを逆解析させる(S200)。これにより、制御フローグラフのノードとなる情報と、これらのノード間の関連(画面の遷移やサーバ・オブジェクトの参照の関係等)に関する情報とを抽出する。
次に、抽出したノード等の情報から制御フローグラフを作成する(S400)。図3にて、制御フローグラフ30の一例を示した。制御フローグラフ30は、データフロー解析技術を適用するための有向グラフの一種である。データフロー解析技術([文献1]Aho A. V., Sethi R., and Ullman J.D.: Compilers. Principles, Techniques and Tools. Addison-Wesley. 1986.[文献2] Hanz Zima and Barbara Chapman: Supercompilers for parallel and vector computers. Addison-Wesley 1990.)は、有効グラフとして表されたプログラムのコード等のモデルに対して、多種のデータフロー問題を解くための一般的な方法である。
データフロー解析技術において代表的なデータフロー問題として、以下が挙げられる。
1.到達する定義の問題(Reaching Definition)
2.使える式の問題(Available Expression)
3.生きている変数の問題(Live Variable)
これらの各データフロー問題については、本発明のデータフロー問題を用いて、具体的に後述する。
次に、制御フローグラフ30を用いて、データフロー問題の解を算出するデータフロー解析(S500)を行う。データフロー解析では、サーバ・オブジェクトがどのように定義されているか、存在するサーバ・オブジェクトはWebアプリケーションにとって有効なオブジェクトであるか、といったデータフロー問題を算出する。
これらのデータフロー問題の解に基づいて、不整合を検出する(S600)。Webアプリケーションの不整合とは、例えば、存在しないサーバ・オブジェクトが参照されていること、サーバ・オブジェクトが無駄に生成されていること、サーバ・オブジェクトが無駄に存在して放置されていること等である。不整合を検出した場合には、この不整合の情報と、この不整合を解消するための修正内容とを提示する(S700)。この後に、ユーザからの修正があった場合(S800)には、修正の実行を行う(S900)。
次に、制御フローグラフ30について、図3を用いて詳細に説明する。上述のように、最初に、Webアプリケーションの内部設計や画面遷移情報、もしくはWebアプリケーションのソースコード等から、図3に示すような制御フローグラフ30を構築する。制御フローグラフ30には、3つのページ(Page)のノード(logonPage, menuPage, errorPage)と、2つのアクション(Action)のノード(doLogon, doLogoff)、及び各アクションのノードから繋がっている3つのアクション・リザルト(ActionResult)のノード(OK, NG, DONE)が含まれる。
制御フローグラフ30を例として説明する。制御フローグラフ30は、ユーザがWebアプリケーションを用いて、ログインする際の処理を表す。最初にWebアプリケーションは、ログインするページ(logonPage)を表示するページのノード31から始まる。この表示に対して、ユーザからのログインを受け付けて、ログインが可能であるか不可能であるかを判断する(dologon)アクションのノード32に到達する。このアクションのページからさらに、ログインがOKであるか、NGであるかのアクション・リザルトのノード(33、34)に分岐する。ログオンがOKである場合には、さらに次のページ(menu)を表示するノード(37)に到達し、次に、ログオフするアクションのノード37に到達する。このログオフするアクションが行われた場合には、アクション・リザルト(Done)のノード38に到達し、再度、ログオンするページのノード31に戻る。
これらの3種類のノードのうち3つのノード(menuPage, OK, DONE)には、データフロー情報α40、41、42がそれぞれ一つずつ付加されている。α40、41、42は、画面遷移がノードを通過する時にどのようなサーバ・オブジェクトへのアクセスが発生するのかを表している。
ここでサーバ・オブジェクトは、名前(name)とスコープ(scope)の対により識別されるサーバ内のオブジェクトである、さらに具体的には、ServletAPIで定義されるServletRequestオブジェクト(requestスコープ)、HttpSessionオブジェクト(sessionスコープ)、ServletContextオブジェクト(applicationスコープ)に格納されるオブジェクトをサーバ・オブジェクトとする。
制御フローグラフ作成部310で作成される制御フローグラフ30は以下のような特徴を持つ。
1)ノードはPage, Action, ActionResultの3種類である。
PageはJSP等ページ生成コンポーネント、Actionはサーバロジック、ActionResultはサーバロジックの実行結果(成功 or 失敗など)に応じたページフローの選択肢を表す。また、ActionResultにはActionからのみつながる。
2)ActionResultノードは、redirectか否かを示す情報(真偽値)を持つ。
redirectが真であるActionResultノードでは、scopeがREQUESTであるサーバ・オブジェクトの定義は消滅する。
3)サーバ・オブジェクト(bean)を<name, scope, classname>の三つ組みで表現する。ただし、scope={REQUEST,SESSION,APPLICATION}とする。各値は、ServletAPIで定義されるものと同じ意味を持つ。サーバ・オブジェクトはnameとscopeの組で識別される。
4)サーバ・オブジェクトに対する操作αを、(op, bean)の組で表現する。各ノードには0個以上のαを付加することができる。ただし、op={CREATE,READ,UPDATE,DELETE, MAY_CREATE,MAY_READ,MAY_UPDATE,MAY_DELETE}とする。それぞれ、次のような意味を持つ。
* CREATE: beanの作成
* READ: beanの参照(読み込み)
* UPDATE: beanの更新
* DELETE: beanの削除
* MAY_*: 「かもしれない」(何も作用しない)
このように定義された制御フローグラフ30に対して、データフロー問題の解を算出する。
データフロー問題は、例えば、プログラム中のある地点における変数Aの参照に対して、どの地点の変数Aへの代入文によって代入された値を参照する可能性があるかといった問題や、これとは逆に、プログラム中の変数Aへの代入文で代入された値が、どの地点において参照される可能性があるかといった問題などである。特に、単調データフローシステム(MDS)は、データフロー問題を解くための一般化されたシステムである。本発明では、MDSをWebアプリケーションの各コンポーネントにおける、サーバ・オブジェクトを介したデータフローの解析に適用する。
以下のアルゴリズムは、上述の文献2から引用したMDSに対する一般繰返しアルゴリズムである。
Figure 2006185324
このアルゴリズムによって、各ノードnに関するデータフロー情報INF(n)を求めることができる。束INF(n)∈Lはノードnに関するデータフロー情報を指し、関数fn:L→Lはノードnを通る時のデータフロー情報の変換(伝播)を表し、L上のmeet演算^は、データフロー情報の合成を表す。図4に、関数f及びmeet演算^の概念図を示す。実際にデータフロー問題を解くためには、各問題に応じて、束Lすなわちデータフロー情報と、L上のmeet演算^の定義、関数fの定義、先行ノードを定義する関数predの定義を行う必要がある。
上述の制御フローグラフ30を用いて、データフロー問題を解くことについて説明する。上述のデータフロー解析技術において代表的なデータフロー問題を応用して、次のデータフロー問題について検討する。
1)RD (Reaching Definition): 到達するサーバ・オブジェクト定義の問題
2)AB (Available Bean): 使えるサーバ・オブジェクトの問題
3)LB (Live Bean): 生きているサーバ・オブジェクトの問題
これらのデータフロー問題は、MDSをWebアプリケーションの各コンポーネントのサーバ・オブジェクトを介したデータフローの解析に適用することにより求められる。上記ABとLBはサーバ・オブジェクト(bean)の集合として求められ、RDはサーバ・オブジェクトの定義点(つまりoperationがCREATEもしくはUPDATEである)αの集合として求められる。これらの解は、制御フローグラフ30のノード毎に求められる。以下、ノードnに関するデータフロー問題の解を、RD[n],AB[n],LB[n]と表記する。RD[n]はノードnにおいて存在する可能性のあるサーバ・オブジェクトがどのノードで定義されたものであるかを教えるものである。AB[n]は、ノードnにおいて「必ず」存在するサーバ・オブジェクトを教えるものである。LB[n]は、ノードnにおいてそれ以降参照(READ,UPDATE,もしくはDELETE)される可能性があるサーバ・オブジェクトを教えるものである。
このようにデータフロー問題の解、RD[n],AB[n],LB[n]を得て、この解を利用して、以下のようなサーバ・オブジェクトのアクセスに関する不整合を検出する。
1) 存在しないサーバ・オブジェクトへの参照があることによる不整合
2) サーバ・オブジェクトの型違いがあることによる不整合
3) 冗長なサーバ・オブジェクトの生成があることによる不整合
4) 不要なサーバ・オブジェクトの放置されていることによる不整合
以下、各不整合について説明する。
1)存在しないサーバ・オブジェクトへの参照があることによる不整合
この不整合は、Webアプリケーション(Servlet)やページ(JSP)が、あるサーバ・オブジェクトの存在を前提に記述されているのにも関わらず、そのサーバ・オブジェクトが作られずにそのWebアプリケーション(Servlet)やページJSPに到達してしまうような経路がある場合に発生する。このような経路が存在する画面遷移は実行時エラーを引き起こすため、間違った画面遷移であると言える。この問題は、制御フローグラフの各ノードnおいて、そこでREADアクセスすると宣言されているサーバ・オブジェクトがAB[n]に含まれていない場合に、不整合として検出すればよい。以下に、不整合検出部330が、この不整合を検出するアルゴリズムの一例を示す。
Figure 2006185324
2)サーバ・オブジェクトの型違いがあることによる不整合
この不整合は、Webアプリケーション(Servlet)やページ(JSP)が期待している型とは違う型のサーバ・オブジェクトが格納されている場合で、Webアプリケーション(Servlet)やページ(JSP)の実行時にClassCastExceptionという形で表面化する。この問題は、制御フローグラフの各ノードnにおいて、そこでサーバ・オブジェクトに関するものについて、このclassnameがαのclassnameと異なる場合に、不整合として検出すればよい。以下に、不整合検出部330が、この不整合を検出するアルゴリズムの一例を示す。
Figure 2006185324
3)冗長なサーバ・オブジェクトの生成
この不整合は、一度も参照されないサーバ・オブジェクトの生成があることの不整合である。このような不整合は、Webアプリケーションにとって致命的な問題ではないが、パフォーマンス上の不利益をもたらすため、内部設計から排除すべき間違いである。この問題は、制御フローグラフの各ノードnにおいて、そこでCREATEもしくはUPDATEでアクセスすると宣言されているサーバ・オブジェクトα.beanに関して、α.beanがLB[n]に含まれていない場合に、不整合として検出すればよい。以下に、不整合検出部330が、この不整合を検出するアルゴリズムの一例を示す。
Figure 2006185324
4)不要なサーバ・オブジェクトの放置されていることによる不整合
この不整合は、どこからも参照される可能性の無いサーバ・オブジェクトが消されずに残っている場合である。このような不整合は、Webアプリケーションにとって、致命的な問題ではないが、パフォーマンス上の不利益をもたらすため、内部設計から排除すべき間違いである。この問題は、制御フローグラフの各ノードnにおいて、AB[n]に含まれるがLB[n]には含まれないサーバ・オブジェクトの中で、nでDELETEされないものがあった場合に、不整合として検出すればよい。以下に、不整合検出部330が、この不整合を検出するアルゴリズムの一例を示す。
Figure 2006185324
不整合検出手段330が、不整合を検出することを、具体的に図5を用いて説明する。図5の制御フローグラフ50に対して、ノードn3のRD, ABは次のように求まる。
Figure 2006185324
ここで、ノードn3において、αに関する整合性チェックを行うには、不整合検出手段330は、αが参照(READ)しているサーバ・オブジェクト(この例では”userInfo”)がAB(n3)に含まれているかどうかを調べる。一方、αの参照がMAY_READの場合には、不整合検出手段330は、RD(n3)に”userInfo”を定義(CREATE,UPDATE,MAY_CREATE,orMAY_UPDATE)しているエントリがあるかどうかを調べる。この例ではα(READ)に対して、AB(n3)が空であるため、不整合検出手段330は、αはエラーとして、不整合が発生していると判断する。
不整合を検出した場合に、これを表示する実施例について、図6に基づいて説明する。Webアプリケーション・モデル表示ビュー60は、情報処理装置10の出力部200に表示される画面イメージである。Webアプリケーション・モデル表示ビュー60は、各コンポーネントと、各コンポーネント間の関係とがアイコンと矢印で示されている。図6の中で、Webブラウザの画面の四角のアイコンはページ(JSP)51、53を表し、歯車はアクション(サーバロジック)52、54を表し、コーヒー豆のアイコンはサーバ・オブジェクト58を表している。ページ(JSP)やアクションのアイコンの間の接続線は、Webアプリケーションにおける画面遷移を表し、ページ(JSP)及びアクションのアイコンと、サーバ・オブジェクトのアイコンの間の接続線は、サーバ・オブジェクトの参照を表す。
不整合を検出した場合の表示の一例として、Webアプリケーション・モデル表示ビュー60は、画面遷移エディタ61と問題リストビュー62の二つから構成される。不整合であることを検出した場合には、問題リストビュー62にエラー(赤色背景の”×”)もしくはワーニング(黄色背景の”!”)として表示される。同時に、画面遷移エディタ61上にも、不整合であるコンポーネントを強調する表示が行われてもよい。また、問題リストビュー62に表示された具体的な問題66、67のいずれかを選択した際には、その問題の原因を画面遷移エディタ61にも表示してもよい。
図7は、上述の「存在しないサーバ・オブジェクトへの参照があることによる不整合」が検出された場合の画面遷移エディタ61での表示例である。図に示されるように、エラー70に対して、この不整合の内容を示す説明71が画面遷移エディタ61に示されてもよい。さらに、この不整合を発生させる該当パス72が、強調表示されてもよい。
図8は、「サーバ・オブジェクトの型違いがあることによる不整合」が検出された場合の画面遷移エディタ61での表示例である。図に示されるように、エラー81に対して、この不整合の内容を示す説明82が画面遷移エディタ61に示されてもよい。さらに、この不整合を発生させるアクション80が、強調表示されてもよい。
図9は、「冗長なサーバ・オブジェクトの生成があることによる不整合」が検出された場合の画面遷移エディタ61での表示例である。図に示されるように、ワーニング90に対して、この不整合の内容を示す説明91が画面遷移エディタ61に示されてもよい。
図10は、「不要なサーバ・オブジェクトの放置されていることによる不整合」が検出された場合の画面遷移エディタ61での表示例である。図に示されるように、ワーニング101に対して、この不整合の内容を示す説明102が画面遷移エディタ61に示されてもよい。
ここで、エラー70、81という表示は、Webアプリケーションのバグの原因となると判断されるため、エラーを表すアイコン(赤い矩形に白の×)で不整合を表している。また、ワーニング90、101とは、必ずしもバグとは判断されないが、修正すべきであるため、警告を表すアイコン(黄色い三角形に!マーク)で不整合を表している。
図11を用いて、画面遷移情報を整理してユーザに提示し、不整合を検出し、修正内容を表示し、受け付ける実施例について説明する。画面イメージ110は、コンポーネントを列挙したアウトラインビュー111と、画面遷移エディタ112と、問題リストビュー113と、ソースコードエディタ114とから構成される。ソースコードディタ114は、エラー115に関連したアクション112についてのソースコードを表示し、このソースコードのユーザからの入力を受けつけ、編集を可能にする。画面遷移エディタ112には、画面遷移情報がグラフィカルに表示される、各コンポーネントの選択、移動、各コンポーネント間の接続なども、ユーザからの入力を可能としている。問題リストビュー113には、本発明の手法で検出された問題を含め、コンパイルエラーなど全ての問題が表示される。
例えば、不整合検出ボタン116をクリックすることにより、不整合検出機能を実行すると、現在編集中の画面遷移情報(モデル)に対してデータフロー解析を行い、不整合の検出を開始する。その結果検出された不整合は、画面遷移エディタ112上の対応するアイコンの上にエラーアイコン115として表示されるとともに、問題リストビュー113にもエラーとして表示される。図11の例では、”menu.jsp”で参照しているサーバ・オブジェクト”user”が必ずしも存在しない場合があることが不整合として検出されている。
図12に示すように、エラーアイコン115上で右クリックすると、修正部340はユーザに修正候補120を提示してもよい。ここでは、修正内容580を選択したとする。その場合、”doSomething”アクションのソースコードに該当する修正コード131が挿入される(図13参照)。挿入されるコードの断片は、サーバ・オブジェクト”user”を新たに生成するものである。また、同時に画面遷移エディタ112上でも修正に対応するモデル情報の変更が行われ、”doSomething”が”user”を作成(Create)113するというアクション・リザルトが表示される。この修正により、画面遷移情報の不整合が無くなり、問題リストビュー113からも不整合を示すエントリが無くなる。
以下では、MDSをWebアプリケーションの各コンポーネントのサーバ・オブジェクトを介したデータフローの解析に適用する方法を述べる。上述のように、実際にデータフロー問題を解くためには、各問題に応じて、束Lすなわちデータフロー情報と、L上のmeet演算^の定義、関数fの定義、先行ノードを定義する関数predの定義を行う必要がある。
すなわち、上述のように、3つのデータフロー問題(RD,AB,LB)を解くためには、データフロー情報集合L、L上のミート演算^、伝達関数fn(X)、有向グラフ上の先行ノード決定関数pred(n)を、例えば、それぞれ以下のように定義し、表1に示した、一般繰り返しアルゴリズムを用いることにより、データフロー問題の解が求まる。
Figure 2006185324
Figure 2006185324
Figure 2006185324
ただし、BEANSは制御フローグラフに現れる全てのサーバ・オブジェクトbeanの集合、BEANSPECS制御フローグラフに現れる全てのサーバ・オブジェクトへのアクセス宣言αの集合である。PSはべき集合である。
定義中に現れる各種関数は以下のように定義する。
Figure 2006185324
beanの集合の上の演算∪と∩及び、αの集合の上の演算∪と∩は、次のように定義する。
Figure 2006185324
Figure 2006185324
上記定義中に現れる関数union, intersectionは、次のようなアルゴリズムで算出されるものとする。
Figure 2006185324
なおクラスOpは、
op={CREATE,READ,UPDATE,DELETE,MAY_CREATE,MAY_READ,MAY_UPDATE,MAY_DELETE}のPower Setを表すためのクラスとして下記のように定義する。
Figure 2006185324
クラスInfoは、αを表すオブジェクトのクラスとして下記のように定義する。
Class Info {
Op op;
ObjInfo bean;
List list;
}
クラスObjInfoは、サーバ・オブジェクトに関する情報を表すクラスとして、下記のように定義する。
Figure 2006185324
情報処理装置10に提供され実行されるプログラムは、機能構成として、デバイスドライバ、処理内容の読み出しモジュール、実行モジュール、及びOS処理モジュールを備えてもよい。また、情報処理装置10に提供されるプログラムは、フレキシブルディスク、CD−ROM,またはICメモリーカード等のプログラム記録媒体に格納されて利用者によって提供される。プログラムは、プログラム記録媒体に読み出され、情報処理装置10においてインストールされ実行される。
以上、本発明を、実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更または改良を加えることができる。そのよう変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
本発明の情報処理装置の構成を示したブロック図である。 本発明の作用を示すフローチャート図である。 本発明の実施例である制御フローグラフを示す図である。 フローグラフと単調データフローシステムを示す図である。 本発明の実施例である制御フローグラフを示す図である。 本発明の実施例であるWebアプリケーション・モデル表示ビューを示す図である。 不整合を検出した場合の表示例を示す図である。 不整合を検出した場合の表示例を示す図である。 不整合を検出した場合の表示例を示す図である。 不整合を検出した場合の表示例を示す図である。 ユーザに画面遷移を表示し、修正内容を提示する表示例を示す図である。 修正内容の提示例である。 修正した後の画面イメージを示す図である。
符号の説明
10 情報処理装置
100 入力部
200 出力部
300 制御部
310 制御フローグラフ作成部
320 データフロー解析部
330 不整合検出部
340 修正部
500 記憶部

Claims (26)

  1. アプリケーション・プログラムの画面遷移の設計について、整合性を検出する情報処理装置であって、
    前記アプリケーション・プログラムの制御フローグラフを作成する制御フローグラフ作成部と、
    前記制御フローグラフに基づいて、前記アプリケーション・プログラムで発生するデータフロー問題の解を算出するデータフロー解析部と、
    前記算出した解に基づいて、前記アプリケーション・プログラムの不整合を検出する不整合検出部と、
    前記検出した不整合に関する情報を表示する出力部と、
    を備えることを特徴とする情報処理装置。
  2. 請求項1に記載の情報処理装置であって、
    前記不整合検出部は、前記アプリケーション・プログラムのサーバ・オブジェクトに対する不整合を検出する情報処理装置。
  3. 請求項1に記載の情報処理装置であって、
    前記不整合に関する情報に基づいて、この不整合を修正する情報を提示する修正部を備えることを特徴とする情報処理装置。
  4. 請求項3に記載の情報処理装置であって、
    前記修正部は、ユーザからの修正に関する入力を受けつけ、この入力された修正内容に応答して、前記不整合を修正することを特徴とする情報処理装置。
  5. 請求項2に記載の情報処理装置であって、
    前記不整合検出部は、存在しないサーバ・オブジェクトへの参照を検出する情報処理装置。
  6. 請求項2に記載の情報処理装置であって、
    前記不整合検出部は、サーバ・オブジェクトの種類が異なることを検出する情報処理装置。
  7. 請求項2に記載の情報処理装置であって、
    前記不整合検出部は、余分なサーバ・オブジェクトの生成があることを検出する情報処理装置。
  8. 請求項2に記載の情報処理装置であって、
    前記不整合検出部は、どこからも参照されないサーバ・オブジェクトが存在することを検出する情報処理装置。
  9. 請求項1に記載の情報処理装置であって、
    前記制御フローグラフ作成部は、前記画面遷移の画面の情報となるページのノードと、次の画面に遷移するかを選択させるアクションのノードと、このアクションの結果となるアクション・リザルトのノードと、から構成される制御フローグラフを形成することを特徴とする情報処理装置。
  10. 請求項1に記載の情報処理装置であって、
    前記データフロー解析部は、前記データフロー問題として、到達する定義の問題の解を算出する情報処理装置。
  11. 請求項1に記載の情報処理装置であって、
    前記データフロー解析部は、前記データフロー問題として、使用可能なサーバ・オブジェクトを算出する情報処理装置。
  12. 請求項1に記載の情報処理装置であって、
    前記データフロー解析部は、前記データフロー問題として、参照される可能性があるサーバ・オブジェクトを算出する情報処理装置。
  13. アプリケーション・プログラムの画面遷移の設計について、整合性を検出する方法であって、
    前記アプリケーション・プログラムの制御フローグラフを作成する制御フローグラフ作成段階と、
    前記制御フローグラフに基づいて、前記アプリケーション・プログラムで発生するデータフロー問題の解を算出するデータフロー解析段階と、
    前記算出した解に基づいて、前記アプリケーション・プログラムの不整合を検出する不整合検出段階と、
    検出した不整合に関する情報を表示する表示段階と、
    を備えることを特徴とする方法。
  14. 請求項13に記載の方法であって、
    前記不整合検出段階では、前記アプリケーション・プログラムのサーバ・オブジェクトに対する不整合を検出する方法。
  15. 請求項13に記載の方法であって、
    前記不整合に関する情報に基づいて、この不整合を修正する情報を提示する修正段階を備えることを特徴とする方法。
  16. 請求項15に記載の方法であって、
    前記修正段階は、ユーザからの修正に関する入力を受けつけ、この入力された修正内容に応答して、前記不整合を修正することを特徴とする方法。
  17. 請求項14に記載の方法であって、
    前記不整合検出段階では、存在しないサーバ・オブジェクトへの参照を検出する方法。
  18. 請求項14に記載の方法であって、
    前記不整合検出段階では、サーバ・オブジェクトの種類が異なることを検出する方法。
  19. 請求項14に記載の方法であって、
    前記不整合検出段階では、余分なサーバ・オブジェクトの生成があることを検出する方法。
  20. 請求項14に記載の方法であって、
    前記不整合検出段階では、どこからも参照されないサーバ・オブジェクトが存在することを検出する方法。
  21. 請求項13に記載の方法であって、
    前記制御フローグラフ作成段階では、前記画面遷移の画面の情報となるページのノードと、次の画面に遷移するかを選択させるアクションのノードと、このアクションの結果となるアクション・リザルトのノードと、から構成される制御フローグラフを形成することを特徴とする方法。
  22. 請求項13に記載の方法であって、
    前記データフロー解析段階では、前記データフロー問題として、到達する定義の問題の解を算出する方法。
  23. 請求項13に記載の方法であって、
    前記データフロー解析段階では、前記データフロー問題として、使用可能なサーバ・オブジェクトを算出する方法。
  24. 請求項13に記載の方法であって、
    前記データフロー解析段階では、前記データフロー問題として、参照される可能性があるサーバ・オブジェクトを算出する方法。
  25. アプリケーション・プログラムの画面遷移の設計について、整合性を検出するコンピュータ・プログラムであって、
    前記アプリケーション・プログラムの制御フローグラフを作成する制御フローグラフ作成機能と、
    前記制御フローグラフに基づいて、前記アプリケーション・プログラムで発生するデータフロー問題の解を算出するデータフロー解析機能と、
    前記算出した解に基づいて、前記アプリケーション・プログラムの不整合を検出する不整合検出機能と、
    検出した不整合に関する情報を表示する表示機能と、
    を備えることを特徴とするコンピュータ・プログラム。
  26. 請求項25に記載のコンピュータ・プログラムであって、
    前記不整合検出機能では、前記アプリケーション・プログラムのサーバ・オブジェクトに対する不整合を検出するコンピュータ・プログラム。
JP2004380298A 2004-12-28 2004-12-28 アプリケーション・プログラムの開発支援方法、プログラム、情報処理装置 Expired - Fee Related JP4183192B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004380298A JP4183192B2 (ja) 2004-12-28 2004-12-28 アプリケーション・プログラムの開発支援方法、プログラム、情報処理装置
US11/318,718 US7886276B2 (en) 2004-12-28 2005-12-27 Application program development assisting method, program, and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004380298A JP4183192B2 (ja) 2004-12-28 2004-12-28 アプリケーション・プログラムの開発支援方法、プログラム、情報処理装置

Publications (3)

Publication Number Publication Date
JP2006185324A true JP2006185324A (ja) 2006-07-13
JP2006185324A5 JP2006185324A5 (ja) 2008-01-31
JP4183192B2 JP4183192B2 (ja) 2008-11-19

Family

ID=36738378

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004380298A Expired - Fee Related JP4183192B2 (ja) 2004-12-28 2004-12-28 アプリケーション・プログラムの開発支援方法、プログラム、情報処理装置

Country Status (2)

Country Link
US (1) US7886276B2 (ja)
JP (1) JP4183192B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009362A (ja) * 2007-06-28 2009-01-15 Hitachi Information Systems Ltd プログラムの変数管理システム
WO2011151931A1 (ja) * 2010-06-02 2011-12-08 株式会社日立製作所 アプリケーションの解析方法、解析システム及び記録媒体
JP2013534331A (ja) * 2010-06-30 2013-09-02 サーモ エレクトロン サイエンティフィック インストルメンツ リミテッド ライアビリティ カンパニー 分析計測のためのインテリジェントな多機能マクロ言語

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220236967A1 (en) * 2000-01-27 2022-07-28 Aidin NASIRISHARGH Virtual keyboard for writing programming codes in electronic device
US9336015B2 (en) * 2005-09-27 2016-05-10 Oracle International Corporation System and method for action output/page input mismatch detection and resolution
US20070083853A1 (en) * 2005-09-27 2007-04-12 Bea Systems, Inc. System and method for declarative validation rule editor
US8078954B2 (en) * 2005-09-27 2011-12-13 Oracle International Corporation System and method for page flow editor
US8499293B1 (en) * 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
EP2092424B1 (en) * 2006-10-19 2015-12-30 Checkmarx Ltd. Locating security vulnerabilities in source code
US8904341B2 (en) * 2007-04-30 2014-12-02 Hewlett-Packard Development Company, L.P. Deriving grounded model of business process suitable for automatic deployment
US8607197B2 (en) * 2007-08-28 2013-12-10 International Business Machines Corporation Displaying HTTP session entry and exit points
CN101946261A (zh) * 2007-12-20 2011-01-12 惠普开发有限公司 基于计算机的业务过程的自动化模型产生
US20110004564A1 (en) * 2007-12-20 2011-01-06 Jerome Rolia Model Based Deployment Of Computer Based Business Process On Dedicated Hardware
US20110004565A1 (en) * 2007-12-20 2011-01-06 Bryan Stephenson Modelling Computer Based Business Process For Customisation And Delivery
US8200578B2 (en) * 2008-07-09 2012-06-12 Hill Matthew D Methods and systems for account management and virtual agent design and implementation
US8312419B2 (en) * 2008-10-30 2012-11-13 Hewlett-Packard Development Company, L.P. Automated lifecycle management of a computer implemented service
US8645923B1 (en) * 2008-10-31 2014-02-04 Symantec Corporation Enforcing expected control flow in program execution
US8239824B2 (en) * 2009-05-18 2012-08-07 National Instruments Corporation Developing a graphical data flow program with multiple models of computation in a web browser
US8468512B2 (en) * 2009-10-30 2013-06-18 International Business Machines Corporation Abstracting benefit rules from computer code
US8627286B2 (en) * 2010-03-26 2014-01-07 Oracle International Corporation Fully declarative build system for build optimization
US9104795B2 (en) * 2011-06-28 2015-08-11 International Business Machines Corporation Integrating compiler warnings into a debug session
CN102306098A (zh) * 2011-08-18 2012-01-04 电子科技大学 一种隐式污点传播系统及其方案
US20130179863A1 (en) * 2012-01-11 2013-07-11 Microsoft Corporation Bug variant detection using program analysis and pattern identification
US20130219311A1 (en) * 2012-02-20 2013-08-22 International Business Machines Corporation Displaying association information of multiple graphic objects in a graphical user interface
US11397520B2 (en) 2013-08-01 2022-07-26 Yogesh Chunilal Rathod Application program interface or page processing method and device
WO2015015251A1 (en) 2013-08-01 2015-02-05 Yogesh Chunilal Rathod Presenting plurality types of interfaces and functions for conducting various activities
IL259201B (en) 2017-05-10 2021-12-01 Checkmarx Ltd Using the same query language for static and dynamic application security testing tools
WO2020230241A1 (ja) * 2019-05-13 2020-11-19 日本電信電話株式会社 テスト装置、テスト方法及びプログラム
IL285079B1 (en) 2020-07-28 2024-03-01 Checkmarx Ltd Discovery of exploitable paths in application software that uses third-party libraries

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869380A (ja) * 1994-08-29 1996-03-12 Fujitsu Ltd ソースプログラムチェック装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6745383B1 (en) * 1999-12-29 2004-06-01 Veritas Operating Corporation Early warning mechanism for enhancing enterprise availability
JP2001344105A (ja) 2000-03-31 2001-12-14 Hitachi Software Eng Co Ltd Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体
JP2001344205A (ja) 2000-05-31 2001-12-14 Nippon Telegr & Teleph Corp <Ntt> サービス提供システムおよびサービス提供方法ならびに記録媒体
US6829758B1 (en) * 2000-07-14 2004-12-07 Nokia Internet Communications, Inc. Interface markup language and method for making application code
JP2003015870A (ja) 2001-06-28 2003-01-17 Hitachi Software Eng Co Ltd Webアプリケーション開発方法および開発支援装置
US7426717B1 (en) * 2001-11-27 2008-09-16 Adobe Systems Incorporated System and method for debugging files in a runtime environment
US7418734B2 (en) * 2003-04-18 2008-08-26 Ounce Labs, Inc. Method and system for detecting privilege escalation vulnerabilities in source code
US20050015752A1 (en) * 2003-07-15 2005-01-20 International Business Machines Corporation Static analysis based error reduction for software applications
US7526755B2 (en) * 2003-10-08 2009-04-28 Microsoft Corporation Plug-in pre- and postconditions for static program analysis
US7975306B2 (en) * 2004-06-04 2011-07-05 Hewlett-Packard Development Company, L.P. Apparatus and method for monitoring secure software
US7617486B2 (en) * 2004-10-19 2009-11-10 Ebay, Inc. Method and system to automate software testing using sniffer side and browser side recording and a toolbar interface
US7991755B2 (en) * 2004-12-17 2011-08-02 International Business Machines Corporation Dynamically ranking nodes and labels in a hyperlinked database

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869380A (ja) * 1994-08-29 1996-03-12 Fujitsu Ltd ソースプログラムチェック装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHIEN-HUNG LIU: "Data flow analysis and testing of Java Server Pages", PROCEEDINGS OF THE 28TH ANNUAL INTERNATIONAL COMPUTER SOFTWARE AND APPLICATIONS CONFERENCE, 2004., vol. 2, JPN7008000593, 28 September 2004 (2004-09-28), pages 114 - 119, XP010730305, ISSN: 0000968164, DOI: 10.1109/CMPSAC.2004.1342689 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009362A (ja) * 2007-06-28 2009-01-15 Hitachi Information Systems Ltd プログラムの変数管理システム
WO2011151931A1 (ja) * 2010-06-02 2011-12-08 株式会社日立製作所 アプリケーションの解析方法、解析システム及び記録媒体
US8898649B2 (en) 2010-06-02 2014-11-25 Hitachi, Ltd. Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
JP2013534331A (ja) * 2010-06-30 2013-09-02 サーモ エレクトロン サイエンティフィック インストルメンツ リミテッド ライアビリティ カンパニー 分析計測のためのインテリジェントな多機能マクロ言語

Also Published As

Publication number Publication date
US7886276B2 (en) 2011-02-08
US20090183141A1 (en) 2009-07-16
JP4183192B2 (ja) 2008-11-19

Similar Documents

Publication Publication Date Title
JP4183192B2 (ja) アプリケーション・プログラムの開発支援方法、プログラム、情報処理装置
US8201143B2 (en) Dynamic mating of a modified user interface with pre-modified user interface code library
US8359576B2 (en) Using symbolic execution to check global temporal requirements in an application
KR101645052B1 (ko) 디버깅 파이프라인
US7607066B2 (en) Auto suggestion of coding error correction
US8443342B2 (en) Static analysis using interactive and integration tools
US8261233B2 (en) System and method for synchronized workflow management
US8640104B2 (en) Computer method and apparatus for debugging in a dynamic computer language
US8533684B2 (en) Source identification of compliance errors in a web page with custom widgets
US9535821B1 (en) Displaying violated coding rules in source code
US20060190771A1 (en) System and method for model based generation of application programming interface test code
US8533666B2 (en) Interactive design environments to visually model, debug and execute resource oriented programs
US8661416B2 (en) Method and apparatus for defining and instrumenting reusable Java server page code snippets for website testing and production
US8533692B2 (en) Dynamic software enhancement parameters
US9122762B2 (en) Method and system to maintain a web page
US20060136863A1 (en) Applying coding standards in graphical programming environments
JP4023803B2 (ja) ウェブアプリケーション開発支援装置、データ処理方法及びプログラム
WO2006102123A2 (en) Apparatus for analysing and organizing artifacts in a software application
US20190272157A1 (en) System and method for embedding domain-specific language code within a visualization of cloud-based computing infrastructure
US20110055744A1 (en) Visual Linking of Elements to Model Attributes
US8171452B2 (en) Dynamic software enhancement
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
CN112527382B (zh) 部署流水线引擎系统的方法、持续集成的方法及装置
Swearngin et al. Genie: Input Retargeting on the Web through Command Reverse Engineering
Singh Ajax asynchronous database refresh

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071210

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071210

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20071221

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080229

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080711

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: 20080826

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: 20080827

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080829

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110912

Year of fee payment: 3

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: 20120912

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees