JP2008287642A - ソフトウェアの入出力情報及び保持情報の検証システム - Google Patents

ソフトウェアの入出力情報及び保持情報の検証システム Download PDF

Info

Publication number
JP2008287642A
JP2008287642A JP2007134015A JP2007134015A JP2008287642A JP 2008287642 A JP2008287642 A JP 2008287642A JP 2007134015 A JP2007134015 A JP 2007134015A JP 2007134015 A JP2007134015 A JP 2007134015A JP 2008287642 A JP2008287642 A JP 2008287642A
Authority
JP
Japan
Prior art keywords
information
input
component
processing
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007134015A
Other languages
English (en)
Inventor
Tetsuo Tsukurida
哲雄 造田
Kentaro Matsumae
健太郎 松前
Naoto Yuki
直人 結城
Satoru Takano
悟 高野
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.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
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 Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2007134015A priority Critical patent/JP2008287642A/ja
Publication of JP2008287642A publication Critical patent/JP2008287642A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 1つ以上の業務処理を行うコンポーネントで入力情報や出力情報や保持情報の過不足を容易に検証すること。
【解決手段】 開発されたソフトウェアのソースコード及び画面遷移情報を記憶手段から取得し、取得したソースコードからエンドユーザが入力すべき入力情報を解析すると共に、前記画面遷移情報から画面遷移を解析し、さらに前記入力情報に対して業務処理を行う複数のコンポーネントが入出力する入出力情報及び内部記憶手段の保持情報を画面遷移に従って解析する第1の手段と、前記第1の手段による解析結果の情報に基づき、各コンポーネントの処理タイミングにおいて各コンポーネントが必要とする入出力情報及び内部の保持情報に過不足がないかどうかを画面遷移に従って検証し、その検証結果を出力する第2の手段とを備える。
【選択図】 図1

Description

本発明は、ソフトウェア開発において、開発したソフトウェアを使用するエンドユーザが入力する情報、当該ソフトウェアの処理結果である出力情報と、ソフトウェアがシステム的に保持する保持情報について、業務処理を行う1つ以上のコンポーネントの入力情報や出力情報の連携を加味した上で、過不足があるかどうかを検証するシステムに関する。
ソフトウェア開発を行う企業は、開発費用を抑えるために、日本国内の企業に限らず、人件費の安価な外国企業へ開発を委託すること(オフショア開発)も一般的に行っている。当然のことながら、外国企業には、日本国内で開発するソフトウェアの一部分を切り出して委託する。
外国企業に委託するソフトウェアは、開発が容易である、ソフトウェアの他の部分と情報連携が少ないユーティリティ的、または単機能な部分も委託発注するが、委託する量が増えるにつれて、利用時に当該ソフトウェアを使用するエンドユーザがおり、エンドユーザがソフトウェアに対して情報を入力する、というソフトウェアも発注することある。
後者のソフトウェアは、エンドユーザが入力した情報をもとに、処理を行って出力結果とする。また、このソフトウェアは、エンドユーザの入力作業の省略を目的としたり、ソフトウェアの内部的な処理で必要な情報を保持情報とすることも多い。
例えば、クライアント/サーバ形式のシステムでは、この保持情報をサーバで保持する作り方がある。ソフトウェアが正常に動作するためには、これらの情報が業務処理を行うプログラムに達する前に用意されていることや、業務処理時に正しく取得できる状態になっている必要があり、それらを検証する作業が必要である。そのための技術として、例えば特許文献1のような方法が提案されている。
特開2006−185324号公報
しかしながら、特許文献1に開示された方法にあっては、ソフトウェアがサーバで処理に使用する情報の検証はできるが、エンドユーザ(クライアント)からの入力と関連性については考えられていない。そのため、サーバにある情報検証には有効であるが、ソフトウェアとしての正常に動作するための情報を管理するという点では不十分である。このため、顧客要求に応じた業務処理を実現するための必須な条件の一つである、業務処理で使用する情報の入力や出力について過不足の無いソフトウェアを提供することができないという問題がある。
加えて、一般的なソフトウェア開発では、品質向上、生産性向上、可読性向上、後のエンハンス時の開発効率向上などのために、設計やコーディングには、各コンポーネントの役割や、名前の付け方などの開発ルールを定めて行う。
開発ルールに従い、顧客要求に応じた業務処理を実現するプログラムを開発者が行うということは、フレームワークを適用する/しないに関わらず、重要なことである。
そのとき、同様のソフトウェアの開発するたびにルールを定めることは無駄なことや、開発ルールを習得する時間がかかるため、既存のフレームワークを適用して、そのフレームワークの設計方針やコーディング、名前付けルールなどに従うという開発ルールを作成することもある。
また一般的に、大規模システムでは、当該システムの一部分を開発ルールとともに他社へ委託開発を発注する。そして、納品物であるソフトウェアの検収を行うのは発注者の責務である。検収内容としてはソフトウェアが正常に動作することはもちろんであるが、ソースコードが開発ルールに従って記述されていることも確認する必要がある。
また一般的に、ソフトウェア開発では、仕様を作成する人間と、ソフトウェアを作成する人間とが異なることが多い。先に説明したオフショア開発もその一例である。また、開発の最中に仕様の変更が行われることもよくある。そのため、発注者は、委託先が納品したソフトウェアが、顧客が要求する仕様通りに動作することを確認しなければならない。
しかしながら、委託開発、とりわけ、オフショア開発は、言語の違いや文化の違い、遠距離等のコミュニケーションの失敗要因が多く、仕様変更の内容が伝わらず、納品物としてのソフトウェアが、顧客が要求する仕様通りに動作しないという問題が発生し易い開発形態であるという問題がある。
そこで、納品物としてのソフトウェアが、顧客が要求する仕様通りに動作するかを検証する(テストする)方法の一つとして、ソフトウェアを動作させる方法がある。
しかし、この方法では、テストのための準備として、ハードウェアやソフトウェアの手配、ソフトウェアのインストールや設定などの工数や、テストのマシンや、最終的なテストをするために、発注企業の担当者が使用する開発マシンなどの準備費用や、さらには、ハードウェアやそれらマシンにインストールするソフトウェアをレンタル会社等から借りるときは、リース代金などの費用がテストをする期間中ずっと必要である。
また、テストを行い正常動作しないときは、プログラムの修正をして、またテストを行うということを繰り返す必要がある。テスト時の確認は顧客の仕様を基にするため、何度も顧客の仕様との比較する作業をしていることになり、多くの時間と費用が必要なことは明白である。
本発明は以上のような事情に鑑みなされたものであり、その目的は、開発ルールに従って開発されたソフトウェアを対象に、業務処理をするためのエンドユーザの入力情報、処理結果である出力情報、サーバなどで保持する保持情報を調べ、複数の業務処理の連携を加味した上で、1つ以上の業務処理を行うコンポーネントで入力情報や出力情報や保持情報の過不足を容易に検証することを可能にする入出力情報及び保持情報の検証システムを提供することにある。
上記課題を解決するため、本発明に係る検証システムは、開発されたソフトウェアで使用する入力情報、出力情報及び内部の保持情報の過不足を検証する入出力情報及び保持情報の検証システムであって、
開発されたソフトウェアのソースコード及び画面遷移情報を記憶手段から取得し、取得したソースコードからエンドユーザが入力すべき入力情報を解析すると共に、前記画面遷移情報から画面遷移を解析し、さらに前記入力情報に対して業務処理を行う複数のコンポーネントが入出力する入出力情報及び内部記憶手段の保持情報を画面遷移に従って解析する第1の手段と、前記第1の手段による解析結果の情報に基づき、各コンポーネントの処理タイミングにおいて各コンポーネントが必要とする入出力情報及び内部の保持情報に過不足がないかどうかを画面遷移に従って検証し、その検証結果を出力する第2の手段とを備えることを特徴とする。
また、前記第1の手段は、ソースコード中に記述されている入力情報の取得元や取得方法により、各コンポーネントが入力する情報が、エンドユーザによって入力される情報であるか、内部記憶手段の保持情報であるかを解析することを特徴とする。
また、前記第1の手段は、ソースコード中に記述されている各コンポーネントの出力情報の設定先や設定方法により、各コンポーネントの出力情報が内部記憶手段の保持情報になるか否かを解析することを特徴とする。
本発明によれば、エンドユーザが入力する入力情報と、業務処理の結果である出力情報と、業務処理に使用するがエンドユーザに入力を求めない保持情報が過不足なく、正確なタイミングに実装されているかどうかを検証し易くできる。
また、ソフトウェアが動作する根本を成すソースコードを直接入力にしていることで、実際のソフトウェアの挙動を、実際に動作させることなく確認することができる。そのため、プログラム的な間違い、また仕様的な間違いを早期に見つけることができ、ソフトウェアの品質が向上する。
また、何度も同じ確認作業をするという検証作業にかかる工数を削減することができるため、生産性の向上を期待できる。
また、仕様の変更やエンハンス時に使用することで、ソフトウェア全体での情報がどのように利用されるのか、業務的な処理を容易に把握することができ、ソフトウェア解析をする工数を削減することができる。
また、納入されたソフトウェアが仮に顧客要求通りに動作するとしても、そのソースコードが開発ルールに従っていないときは、本発明は情報を取得しないので、開発ルール違反を速やかに見つけることができ、納品物のソースコード品質を維持することもできる。
まず、本発明が解決したい事柄を具体例で説明した後、本発明の具体的な実施の形態を図面を参照して説明する。
まず、図1を用いて、本発明が対象とするソフトウェアの構成の説明をする。
本発明が対象とするソフトウェア101は、エンドユーザ102が操作する部分(例えば、クライアント)103と、処理を行う部分(例えば、サーバ)104がある。上記の役割が分かれていれば、同一のソフトウェアになっていてもよいし、ネットワークを介するような構成でもよい。
例えば、エンドユーザ102は、クライアント103を構成するログイン画面105に対して、ユーザIDやパスワード106の情報を入力する。すると、処理を行う部分104は認証処理部分107で具体的な処理を行う。この例では、ログイン画面105が、エンドユーザ102が操作する部分(クライアント)であり、認証処理部分107が処理を行う部分(サーバ)である。
次に、図1のソフトウェア101の動作を説明し、本発明が解決する事柄を説明する。
まず、当該ソフトウェア101には、ログイン画面105、検索条件入力画面108、検索結果表示画面109がある。
第1に、エンドユーザ102は、ログイン画面105で、ユーザIDとパスワード106の情報を入力する。
すると、ソフトウェアの処理としては、ユーザIDとパスワード106を入力として、認証処理部分107が認証処理を行う。また、認証結果110を他の処理でも使用することを想定して、例えば、複数の業務処理で共通に使用する情報を保持する領域111に保存する。その後、ソフトウェア101は、検索条件入力画面108を表示する。
第2に、エンドユーザ102は、検索条件入力画面108に対して検索条件112を入力する。
すると、ソフトウェア101は、検索処理部分113で検索処理を行う。このとき、認証されているエンドユーザであれば、検索を行うという仕様と想定すると、検証条件ともに、先の認証結果を使用する必要がある。検索処理が終了したならば、処理の結果として検索結果114を検索結果出力画面109に表示する動作を行う。
上記のようなソフトウェア101では、サーバの処理(図1では、認証処理部分107や検索処理部分113には、(1)クライアントから送られてくる情報(図1では、ユーザID)を必要なときに取得するプログラムがなされていることや、(2)サーバに保持されている情報(図1では、例えば認証結果110)を必要なときに取得するプログラムが正確に書かれていることや、(3)処理結果をクライアントに返す処理(図1では、例えば検索結果114)が必要なだけ正確にプログラムされていることや、(4)サーバで保持しておく情報(図1では、認証結果110)が、必要なときに正確にサーバに保持するようにプログラムされている必要があることは明白である。
また、複数の画面を使用するソフトウェアのときは、複数の業務処理で使用する情報は、その情報を使用するタイミングで正確に取得する必要があるため、処理の流れ(図1では、ログイン処理→検索条件入力→検索結果表示)も十分加味しなければならない。
本発明は、このサーバで行われる処理で上記(1)、(2)、(3)、(4)と、処理の流れと同様の意味を持つ画面遷移にも着目して、入力情報と出力情報と業務処理がプログラムとして過不足なく実装されていることを、容易に確認するための手段を提供することである。
以下、本発明の一実施の形態で情報の検証システムを図面に基づき説明する。
図2は、本発明の実施の形態を示すシステム構成図である。
本発明に係る入出力情報及び保持情報の検証システム201は、ソース情報取得手段202、遷移情報取得手段203、検証処理実行手段204、結果表示手段205から構成されている。
さらに、当該ソフトウェアを構成するソースコードと当該ソフトウェアの画面遷移情報の定義を格納する開発対象格納手段206を備え、ソースファイル207と遷移情報208を保存する。
また、本発明の処理に必要な情報を保持するため、開発対象格納手段206に保存されているソースファイル207と遷移情報208を解析した結果を保持する領域として、エンドユーザ入力情報テーブル209と、業務処理情報テーブル210と、遷移情報テーブル211を備える。
ソース情報取得手段202は、当該ソフトウェアを構成するソースコードを入力として、解析し、本発明に必要なエンドユーザ情報テーブル209と、業務処理情報テーブル210を生成する役割を持つ。
遷移情報取得手段203は、当該ソフトウェアの画面遷移情報を入力として、解析し、本発明に必要な遷移情報テーブル211を生成する役割を持つ。
検証処理実行手段204は、上記ソース情報取得手段202が生成したエンドユーザ情報テーブル209と、業務処理情報テーブル210と、上記遷移情報取得手段203が生成した遷移情報テーブル211を入力として、業務処理で使用する入力情報や業務処理の結果である出力情報、また保持情報が、プログラム中で適切なタイミングで取得されたり設定されたりしているかの検証を行い、検証結果を生成する役割を持つ。
結果表示手段205は、上記検証処理実行手段204による検証結果212を表示する役割を持つ。
なお、図2に示す検証システム201は、CPU、メモリ、キーボードなどの入力装置、ディスプレイ等の出力装置、ハードディスクで構成される外部記憶装置などで構成されるコンピュータシステムを用いて実現されるものである。ソース情報取得手段202、遷移情報取得手段203、検証処理実行手段204、結果表示手段205は、メモリに格納されたプログラムによって実現されるものである。
以下、この構成の情報の検証システムが行う処理について説明する。
図3は、本発明が対象とするソフトウェアの一例を示す図である。本説明では、JavaでWebシステムを開発の例とする。
本実施形態では、開発ルールを決めるフレームワークとして、Strutsを適用する。Strutsとは、Java(登録商標)でWebシステム開発の際、サーバのソフトウェアを作成ためのデファクトスタンダードなフレームワークである。
Webシステムは、クライアント301とサーバ302に分けられる。
クライアント301には、エンドユーザが情報を入力したり、処理結果を確認したりするソフトウェアを配置する。
Webシステムでは、クライアント301には通常ブラウザと呼ばれるソフトウェアを使用する。ブラウザは、HTML(HyperText Markup Language)というタグ形式の言語を解釈し表示するソフトウェアである。
また、HTMLには、サーバに情報を送信する仕様がある。HTMLのタグの場合、formというタグが、サーバに情報を送る領域の印となる。ブラウザは、formというタグの中の規格で決められた幾つかのタグの規約で決められた属性の値を情報としてサーバに送信する。
ブラウザは、HTTP(HyperText Transfer Protocol)という規格に基づきサーバと情報通信を行う。
以下、Strutsの場合のサーバでの動作の説明をする。
サーバでは、RequestProcessor303が、通信窓口の役割を持つ。RequestProcessor303は、Strutsフレームワークの決まりに従い、業務コンポーネントを制御する役割を持つコンポーネントである。以下、その処理の説明である。
RequestProcessor303は、業務コンポーネントの制御として、クライアント301から送られてきた情報を、ActionForm304というコンポーネントに保持する。ActionFormコンポーネント304は、クライアント301とサーバのアプリケーション間での情報をやり取りする役割を持つコンポーネントである。
加えて、クライアント301が送った情報以外に、サーバで保持する機能があり、一般的にWebシステムでは、それをSession305というコンポーネントに保存する。
その次に、RequestProcessor303は、業務コンポーネントの制御の一環として、Action306というコンポーネントの業務処理を実行するための処理を呼び出し、サーバ302の処理を行う。なお、Actionコンポーネント306で業務処理を行う処理は、Strutsフレームワークの決まりでexecuteと決まっており、RequestProcessor303はexecuteを実行するという処理を行う。
Action306は、クライアント301から送られてきた情報と、Session305の情報を使用して、業務を行う。この業務処理の詳細はプログラマが実装する。業務処理は、Action306に多く記述してもよいし、再利用や部品化を使用してJavaBeansテクノロジーで作成されたコンポーネントを使用してよい。図3は、JavaBeans307というコンポーネントを使用する例である。
また、一般的にエンタープライズシステムは、情報を永続的に保存したり、取得したりする必要があるためDB308とやり取りを行う。図3では、DB308から取得した情報を使用して、JavaBeans307が業務処理をしている。この業務処理は顧客要求によって千差万別である。
Action306は、上記に示すような挙動で業務処理を行い、終了するとActionFormコンポーネント304や、Sessionコンポーネント305に情報を保持する処理を行う。
上記の処理が終了すると、Actionコンポーネント306の処理シーケンスは終了し、制御がRequestProcessor303に戻る。
RequestProcessor303は、業務処理結果を、クライアント301に返すために、HTMLに変換する処理を行う。そのために、JSP(JavaServer Pages)309を使用する。JSP309は、動的にHTMLを生成するためのテクノロジーである。JSP309は、ActionForm304やSession305などの情報を使って、HTMLを生成する。
RequestProcessor303は、JSP309の処理が終了したら、生成されたHTML310をクライアント301に送り出し、サーバ302での処理を終了する。
クライアント301は、サーバ302の処理結果であるHTML310を受け取り、ブラウザがHTML310を解釈して表示する。
この一連の処理は、2つの画面があり、クライアント(1つ目の画面)からサーバ302へ処理要求を送り、サーバ302が業務的な処理を行い、クライアントに2つ目の画面を表示するという、Webシステムの説明である。
Webシステムは、今説明した処理を繰り返し行って、顧客要求を満足する業務処理を実現している。
ここで、HTMLの説明をする。
図4は、本発明で必要な部分を抜粋したHTMLの例である。
HTMLのファイル名称として、index.html401がある。通常、HTML形式のファイルは拡張子として、html、htmのどちらかが使われる。
HTMLの内容はタグで機能を指定することができる。ブラウザはタグを認識して、レイアウトを生成したり、情報をサーバに送信したりする。
サーバに情報を送信する機能を指定するタグは、<form ..(略)..>402である。ブラウザは、<form ..(略)..>で始まり</form>403の間のある、HTML仕様で定められたタグの情報をサーバに送信する。
例えば、エンドユーザに検索条件の入力を求めるタグとして、<input type=“text” name=”condition” value=””/>404がサーバに送られる情報である。また、エンドユーザがブラウザに、情報をサーバに送る命令を出すためのタグは、<input type=”submit” value=”検索実行”/>405である。
また、HTMLファイル中に複数のformを記述できるため、<form..(略)..>には、名前を付けるための属性がある。それが、name=”indexForm”406の部分である。
同様に、情報をサーバに送ることができるタグにも名前をつけることができ、図4の場合は、属性名name407で、属性値が”condition”408である。また、情報をサーバに送ることができるタグは、送るための情報を設定する属性もあり、図4の場合は、value409がその属性名であり、”で囲まれた部分410がサーバに送られる情報である。
図5は、本実施形態の検証システムの処理の概要を表すフローチャートである。
本実施形態の検証システムでは、検索条件入力→検索結果一覧表示→詳細表示と画面遷移を行うWebシステムを対象として詳細説明を行う。
ソース情報取得手段202は、システムを起動したとき、開発対象格納手段206からソースファイル207を取得する(ステップ501)。
ソースファイル207としては、エンドユーザが情報を入力するためのHTMLや、業務処理を行うコンポーネントや、業務処理を行うコンポーネントが使用するJavaBeansコンポーネントなどがある。
ソース情報取得手段202は、HTMLを解析してエンドユーザが入力すべき情報を取得する。
図6は、ソース情報取得手段が、HTMLから情報を取得する処理のフローである。
まず、対象となるHTMLの一覧を取得する(ステップ601)。
ステップ601の一覧から解析していないHTMLを選出してファイルを取得する。(ステップ602)。すべて解析が済んでいるときは、図6の処理を終了する。
すべてのファイルの解析が終っていないときは、ステップ603へ進む。
以下、図4のindex.htm1401を処理対象例として説明を行う。
HTMLのファイルの最後まで解析したかどうかを調べる。最後まで読んでいたらステップ602に戻る(ステップ603 Y)。そうでないときはステップ604へ進む。
HTMLの内容を順番に読み込んで、<form>を見つけるまで読み込む(ステップ604 Y)。
本例では、<form name=”inexForm” action=”result.html”>を見つけることができる。
<form>が見つからないときは、ステップ602へ戻る(ステップ604 N)。
HTMLでは、複数の<form>を記述できるため、<form>をみつけたときには、formタグのname属性を識別子として取得する(ステップ605)。本例では、indexFormを取得する。
<form>を見つけたときは、その中にあるサーバへ情報を送信するタグを探す(ステップ606)。サーバに情報を送信することができるタグとして、<input>や<select>などがHTML仕様で定義されおり、このステップではそれらのタグを探す処理を行う。本例では、<input type=”text” name=”condition” value=””/>を見つける。
サーバに情報を送信するタグを見つけたら、サーバで情報を取得するために使用する文字列を取得する(ステップ607)。HTTPの仕様では、情報を取得する文字列と値をペアで送信する。HTMLのサーバに情報を送信するタグの記述では、name属性の値にその文字列を記述する。本例では、<input type=”text” name=”condition” value=””/>を見つけているから、そのname属性値は、conditionであるので、取得する文字列は、conditionである。
ステップ605からステップ607の処理を</form>のタグを見つけるまで続ける(ステップ608)。
</form>を見つけた後、HTMLファイルの終了でないなら、ステップ603へ戻り処理を進める。
図7は、図6のソース情報取得機能で生成されるエンドユーザ入力情報テーブル209の一例である。
エンドユーザ入力情報テーブル701のForm名702は、<form>タグのname属性に定義された文字列である。本例では、indexForm703となる。入力項目704は、エンドユーザが画面で入力することができ、ブラウザの機能によりサーバに送信される情報である。本例では、condition705である。
HTMLをすべて解析したら、図5に戻りステップ502へ進む。
処理の説明の前に、図8を使って業務処理を行うコンポーネントの一例の説明を行う。
図8に示すListAction801は検索条件を使い、検索結果の一覧を取得する業務コンポーネントの例であり、ListAction801という名称である。
クライアントでエンドユーザが入力した検索条件は、前述の通り、対応するActionFormコンポーネントに保存される。本例では、indexForm802が該当する。
次に、Strutsフレームワークのルールでは、クライアントから送られた情報を、getXxx()という形式で取得する。ここで、Xxxはクライアントからサーバに対して送られた文字列の先頭の英大文字が使用される。本例では、検索条件をサーバが取得ときは、conditionという文字列を使用する。そのため、getCondition()803という処理で、クライアントが送り出した情報を、サーバでは取得する。
また図8の例の場合、取得した情報を、condition804という変数名に入れる処理を記述している。
次は、sessionコンポーネントを取得する行である。JavaのWebシステムの場合、request.getSession(false);805の処理で取得する。
行805で取得したsessionコンポーネントから情報を取得するのは、getAttribute(キーワード);806である。図8の場合、取得した情報を変数名username807に入れる処理を記述している。
次の行は、業務処理を行うためのコンポーネントの一つとして、JavaBeansテクノロジーも用いて、別途作成されたSearchコンポーネントを使用する例808である。このコンポーネントは、検索条件を受け取り、検索結果を返すためにDBに直接アクセスする機能を持つとする。これらの処理は、Searchコンポーネントを使用するための変数search809を介して行う。
次の行810は、検索結果をした処理結果を取得して、ブラウザに表示するために設定する処理である。業務処理結果は、JavaBeansの決まりに従い、searchを介してgetXxx()で取得する。検索結果と検索結果の状態を取得できるとする。
取得した結果をJSPで取得するために、requestコンポーネントに設定する処理である。requestコンポーネントへ情報を設定するのは、setAttribute(“キーワード”,情報);である。本例は、result811というキーワードで、検索結果であるsearch.getResult()812を設定している例である。また、検索結果の状態も同様にSTATUS_CODE813というキーワードに、search.getResult()814で検索結果の状態を取得して、requestコンポーネントに設定している。
検索条件を詳細表示画面でも使用することがあるとするならば、Session領域に設定することで、エンドユーザが改めて入力をする必要なく、Webシステムで使用できるようになる。
行815は、sessionコンポーネントに情報を設定する処理である。sessionコンポーネントへ情報を設定するのは、setAttribute(“キーワード”,情報);である。本例は、condition816と言うキーワードで、検索条件であるcondition817を設定している例である。
行818は、Actionコンポーネントの処理結果の後に表示する画面をRequestProcessor に返却する処理である。
上記の説明からわかるように、Strutsフレームワークのルールに従うと、(1)ActionFormコンポーネントから取得すると、エンドユーザが入力した情報だとわかる。また、(2)sessionから取得していると、エンドユーザが入力した情報ではないが、業務処理で使用する情報だとわかる。また、(3)requestやsessionに設定している情報は、業務処理の結果であることがわかる。そのうちsessionに設定している情報は、エンドユーザによる入力なしでもサーバで使用できる情報である。本例では、上記のルールを基に、業務コンポーネントのソースコードを解析する。
図9は、業務処理を行うコンポーネントのソースコードを解析する処理を示すフローチャートである。
まず、業務処理を行うコンポーネントの一覧を取得する(ステップ901)。
本例では、Strutsを適用したソフトウェア開発であるので、本発明を説明するために必要な一例として、慣例に従ったXxxAction(Xxxは任意の文字列)というルールで名づけられたコンポーネントが業務処理を行うものとする。既に述べているように業務処理を行うコンポーネントは、JavaBeansでもよいため、予め業務処理を行うコンポーネントの一覧を定義しておき、定義に従って解析対象を取得してもよく、XxxActionでない他のルールでもよい。
次に、業務処理を行うコンポーネントの一覧に基づき、全ての業務処理コンポーネントを解析をしたかどうかを判定する(ステップ902)。全ての業務処理コンポーネントを解析していたら終了する(ステップ902 Y)。
解析すべき業務処理コンポーネントがあれば(ステップ902 N)、その業務コンポーネントの名前を取得する(ステップ903)。本例では、ListActionとなる。
次に、業務処理を実行する処理の解析を行う(ステップ904)。詳細をステップ905以降で説明する。
ステップ905では、ファイルの解析が終了したかどうかを判断する。ファイルの終了まで解析処理が済んでいたら、ステップ904へ戻る。そうでないときは、ステップ906へ進む。
Strutsフレームワークでは、executeメソッドが、業務処理を記述する箇所と決められているため、executeメソッドが見つかるまで読み込む(ステップ905、ステップ906、ステップ907)。
続いてexecuteメソッドが終了するまで、内容を解析するために1行読み込む(ステップ908)。
本例の場合、1行読み込むと、IndexForm indexForm = (IndexForm) form;となる。
ステップ908で取得した行が、エンドユーザが入力した情報を保持するコンポーネント用なのか(ステップ909)、エンドユーザの入力情報を取得している処理か(ステップ910)、ソフトウェアが保持していた情報を取得している処理か(ステップ911)、業務処理の結果を設定している処理か(ステップ912)、入力情報を保持するコンポーネントに関わる処理か(ステップ913)なのかを判定する。
本例では、ステップ908で取得した行は、エンドユーザが入力した情報を保持するコンポーネントであり、indexFormがエンドユーザの情報を保持する(ステップ909 Y)であるので、エンドユーザが入力した入力情報のコンポーネントに関わる処理を行う。
ここで、入力情報を保持するコンポーネントは、ActionFormを継承しているため、ソースコードを全て読み込んで判断していくこともできるが、本例では、簡単のため、Strutsを適用したときの慣例的な命名規則に従い、XxxForm(Xxxは任意文字列)を入力情報を保持するコンポーネントであると判断する。
よって、この行の場合、本例では、indexForm802を取得して保持する(ステップ915)。
次に、executeメソッドの終了かどうかを判定する(ステップ914)。executeメソッドの終了でないときは、ステップ908へ戻り次の1行を取得する(ステップ914 N)。
executeメソッドの終了のときはステップ905へ戻る(ステップ914 Y)。
本例の現時点では、executeメソッドの終了ではないため、次の1行、String condition = indexForm.getCondition();を取得する。
上記の説明のように、本例では、同様にして、解析を進めていく。以下、発明に関わる行を読み込んだときの処理について説明する。
ステップ916では、エンドユーザが入力した情報を保持するコンポーネントから情報を取得している処理を解析してから、業務処理で使用する情報を取得する。既に述べているルールに従うと、String condition = indexForm.getCondition();は、エンドユーザの入力情報から情報を取得していることがわかるので、エンドユーザが入力した情報として保持する。
本例では、取得した値を表す変数のconditionを入力情報として取得する。
ステップ917では、保持情報コンポーネントから情報を取得している処理から、業務処理で使用する情報を取得する。HttpSession session = request.getSession(false);は、サーバに保存している情報を取得するsessionコンポーネントを取得する処理である。そして、String username = session.getAttribute(“USER_NAME”);は、sessionコンポーネントから情報を取得する処理である。本例では、取得した値を表す変数usernameを取得する。
次に取得する行は、Search search = new Search();である。この行は、業務コンポーネントを用意する処理であるが、本発明においては、重要な意味を持たないため、情報の取得はしない。
次に取得する行は、search.do(username, condition);である。この行は、実際に業務処理を行うコンポーネントを使用している行であるが、本発明においては、情報の取得はしない。
ステップ918では、業務処理結果の中で、出力情報を設定する処理を解析し、出力情報を取得する。request.setAttribute("results", search.getResults());である。Strutsフレームワークでは、requestは、サーバで保持しない処理結果を保持するコンポーネントであるというルールがあるため、この行は、処理結果を設定している行であることがわかる。よって、本例では、保持先であるrequestと処理結果を表すresultsを取得する。
ステップ919では、業務処理の中で、保持情報に保持する出力情報を設定する処理から、出力としての保持情報を取得する。session.setAttribute("condition", condition);である。先に述べたように、sessionはサーバで再び使用する情報を保持するコンポーネントであり、そのコンポーネントに設定している処理であるので、業務処理結果を設定していることがわかる。本例では、保存先である、sessionと処理結果を表す変数conditionを取得する。
次に取得する行は、return "LIST";である。Strutsフレームワークのルールに従い、業務処理結果の後に表示する画面を指示する処理である。本発明においては、その他の処理として情報の取得はしない。
次の行は「}」であり,executeメソッドの終了であるので、ステップ905に戻る。
これらの説明した通りに、当該すべてのファイルに対して処理を行う。
図10は、図9のソース情報取得手段202の処理の結果、生成されるソース情報の一例であり、業務処理コンポーネントを解析した結果のエンドユーザが入力する情報と、業務処理で使用する情報と、業務処理の結果の情報とを一覧するための業務処理情報テーブル(図2の210)の記憶情報例である。
業務コンポーネント名1001は、業務処理を行うコンポーネントの情報である。本例の場合、ListAction1002である。
業務処理で使用する情報1003は、ListActionの中で業務処理を行う情報であり、取得元1004は、その取得元である。本例では、業務処理で使用する情報condition1005は、indexForm1006から取得することがわかる。また、username1007は、session1008から取得することがわかる。
業務処理結果1009は、業務処理の結果の情報であり、設定先1010が、業務処理の結果を設定するコンポーネントを表す。本例では、results1011は、request1012に設定することがわかり、condition1013は、session1014コンポーネントへ保存することがわかる。
図10では、本発明の説明に必要な最小限にしているが、業務コンポーネント(本例では、Search)など別情報を持たせてもよい。また本例では、「-」1015は情報を持たないことを意味する特別な値とする。
ソース情報取得手段202の処理が終了すると、ステップ502に進む。ステップ502の遷移情報を取する処理の詳細を図11に例示する遷移情報と図12の遷移情報取得処理のフローチャートを参照して説明する。
図11は、開発対象格納手段206に保存されている遷移情報208の一例である。
遷移情報は、画面の流れを定義した設計情報である。
表示画面名1101は、サーバでの処理結果表示される画面を定義する列である。
検索条件入力1102が画面名である。本例の場合、簡単のため、上から順番に遷移するものとする。よって、図11から、検索条件入力→検索結果一覧表示→詳細表示と遷移を行うことがわかる。
業務処理コンポーネント名1103は、サーバでの処理を行うためのコンポーネントを定義する列である。本例では、検索条件入力を表示するためのサーバの処理をIndexAction1104であることを表している。
図11の例に加えて、処理の順序を定義する列や、Webシステムの画面遷移を幾つかに分割してそれぞれにIDを割り当てたときのIDなど、付加的情報を設けてもよいが、本発明を的確に説明するためには不要であるので省略する。
遷移情報取得手段203は、まず、図11に保存されている遷移情報を取得する(ステップ1201)。
次に、図11の表示画面名1101から表示する画面名を取得する(ステップ1202)。本例では、“検索条件入力”を取得する。
情報を取得していない(ステップ1202 N)とき、業務処理コンポーネント名1103を取得する(ステッ12033)。本例では、まずIndexAction1104を取得する。すべての情報を取得したら(ステップ1202 Y)、遷移情報取得手段203の処理を終了する。

図12の処理の結果の一例が図13である。
業務コンポーネント名1301は、業務処理を実行するコンポーネントを表す列である。本例では、業務処理を行うコンポーネントは、IndexAction1302、ListAction1303、DetailAction1304であることがわかる。
図11と同様に簡単のため、上から順番に遷移するものとする。IndexAction → ListAction → DetailActionの順序で実行されることがわかる。
ステップ502が終了すると、ステップ503へ進む。ステップ503は、これまでに取得した情報を使って業務処理で使用する情報に過不足があるかどうかを検証する処理である。
ステップ503の詳細を図14のフローチャートを使って説明する。
まず、これまでの処理で作成したエンドユーザ入力情報テーブル209、業務処理情報テーブル210、遷移情報テーブル211を読み込む(ステップ1401)。
図13の遷移情報テーブルから、Webシステムが最初に処理をする業務処理コンポーネントを取得する(ステップ1402)。本例では、テーブルでの記載順序と遷移の順序が対応しているため、遷移情報テーブルの業務処理コンポーネント名の先頭のIndexActionとなる。
次に、図10に例示した業務処理情報テーブルから、ステップ1402で取得した業務処理コンポーネントに対応する入力情報と取得元と業務処理結果と設定先を取得する(ステップ1403)。本例では、IndexAction、―、―、―、―を取得する。
次に、業務処理で使用する情報があるかどうかを検証する(ステップ1404)。本例でのIndexActionでは、情報がないため(ステップ1404 N)、ステップ1405へ進む。
次に、業務処理結果があるかどうかを検証する(ステップ1405 N)。本例でのIndexActionでは、情報がないため、ステップ1402へ戻り、次の行に対して処理をする。
次の行を読み込んだとき、本例では、ListAction、condition、indexForm、―、―を取得する。
次に、業務処理で使用する情報があるかどうかを検証する(ステップ1404 Y)。本例でListActionでは、conditionがあるのでステップ1406へ進む。
次に、業務処理で使用する情報と取得元を取得する(ステップ1406)。本例では、conditionとindexFormを取得する。
次に、取得元が、エンドユーザの入力なのか、サーバで保持している情報なのかを判断する(ステップ1407)。本例では、既に説明しているようにXxxFormはエンドユーザの情報を保持しているコンポーネントであるので、文字列で判断することができる。本例では、indexFormであるのでエンドユーザが入力した情報だとわかる。
次に、エンドユーザ入力情報テーブル209のForm名と入力項目をペアで検索する(ステップ1408)。本例では、ステップ1406で取得したindexFormとconditionが、エンドユーザ入力情報にあることがわかる。本例の現時点では、エンドユーザ入力情報が存在するので、例えば、内部的にフラグを「○」にする(ステップ1409)。
次に、ステップ142に戻って次の行を読み込むと、本例では、ListAction、username、session、―、―となる。説明した処理を行うと、取得元がエンドユーザ入力情報ではないので、ステップ1410へ進む。
ステップ1410は、使用される前にsessionコンポーネントに情報を設定されているかどうかを検証する。一般的にsessionコンポーネントの情報を業務処理の入力にしても良い条件は、当該業務コンポーネントより前の業務処理の結果としてのsessionコンポーネントに設定されていることである。本例では、業務処理情報テーブル210の業務処理コンポーネントを上から実行するので、業務コンポーネント名が、ListActionになるまで、業務処理結果と設定先をペアで検証する。
本例では、まずIndexActionの行の業務処理結果と設定先を取得する。すると、―、―であるので、usernameがないため、次の行を取得する。
次に、業務処理の実行前に設定されていない例の説明をする。
次の行を取得すると、業務コンポーネント名が、ListActionであるので終了する。
usernameは、ListActionの処理より前に業務処理の結果として用意されなかったことが分かる。そこで、例えば本例では内部的にフラグを「△」とする(ステップ1411)。
次に、業務処理の実行前に設定されているときの例の説明をする。
既に説明している処理を行い、DetailActionの2行目を読み込むと、DetailAction、condition、session、STATUS_CODE、requestである。
業務処理で使用する情報のconditionの取得元はsessionであるので、業務処理結果と設定先を検索する。本例では、ListActionの6行目まで処理を進めると、condition、sessionであるので、DetailActionの処理の前に業務処理の結果としてsessionコンポーネントに設定されていることが分かる。そこで本例では、例えば、内部的にフラグを「○」として、ステップ1402に戻って次の行を読み込む。
次の行を読み込むと、ListAction、usercode、indexForm、―、―となる。これまでの処理を行い、既に説明したように、usercodeとindexFormとをペアで検索する。本例では、検索した結果、このペアは存在しないので、例えば、内部的に「×」とする(ステップ1412)。
次に、ステップ1402に戻って、次の行を読み込むと、ListAction、―、―、result、requestとなる。これまでの処理と同様に、ステップ1405まで行うと、業務処理結果がある(ステップ1405 Y)ため、ステップ1413へ進む。本例では、resultを取得して、ステップ1402へ戻る。
上記の処理によりすべて検証を終わったら、ステップ504に進む。
図15は、図14の処理結果を格納した過不足検証保持テーブルの例である。このテーブルに保持される情報は、これまでの処理で作成された情報からいつでも作ることができるので、本発明では、内部的に保持することとする。
業務コンポーネント1501は、業務コンポーネントの情報を保持する。
入力情報1502は、当該の業務処理コンポーネントが使用する情報である。
出力情報1503は、業務処理コンポーネントの結果の情報である。
検証結果1504は、本発明により入力情報の検証を行った結果である。
本例で説明すると、condition1505の検証結果は、「○」1506であるので、エンドユーザが情報を入力して、ListAction1507で情報を取得することができ、業務処理に使用できることが分かる。
また、username1508の検証結果は、「△」1509であるので、ListActionでは、サーバに保存している情報を取得するようにプログラムに記述されているにも関わらず、ListActionの業務処理の開始時にはsessionコンポーネントに設定されていないため、業務処理が正常に行われない可能性が高いことが分かる。
Usercode1510の検証結果は、「×」1511であるので、ListActionでは、エンドユーザが入力した情報をListActionが取得して業務処理に使用する仕様であっても、実際のプログラムでは、取得できないことがわかる。
ステップ504の詳細について図16を使って説明する。
図16は、開発者に対し、情報の過不足検証結果を表示する処理のフローチャートである。
まず、図15に例示した情報の過不足検証結果保持テーブルの全ての行を処理したかどうか調べる(ステップ1601)。最初は、すべて検証していない(ステップ1601 N)ので、ステップ1602へ進む。
ステップ1602では、図15に例示した検証結果保持テーブルから1行取得する。本例では、まず、IndexAction、‐、‐、‐の行を取得する。
次に、直前まで、同じ業務コンポーネントの情報に対して処理をしていたかどうかを検証する(ステップ1603)。本例では、現段階では、まだ処理している業務処理コンポーネントはないため、ステップ1604へ進む。
ステップ1604では、検証結果として開発者に表示する情報があるかどうかを調べる。本例では、この段階では表示する情報はない(ステップ1604 N)ため、ステップ1605へ進む。
次に、入力情報と検証結果があるかどうかを調べる(ステップ1605)。本例のIndexActionの行では、入力情報と検証情報はない(ステップ1605 N)ため、ステップ1606へ進む。
ステップ1606では、出力情報を取得する。本例のIndexActionの行では、出力情報はない(ステップ1606 N)ため、ステップ1601へ戻る。
ステップ1601へ戻ると、まだ検証保持テーブルには、処理をしていない行があるため、ステップ1602進む。
次に、1行読み込んだListAction、condition、○、‐に対して処理をする。
まず、ステップ1603で業務処理コンポーネントを調べると、直前まで処理をしていた業務処理コンポーネントと違う(ステップ1603 Y)ため、ステップ1604へ進む。ステップ1604では、先に検証を行った行IndexAction、‐、‐、‐の情報があるので、ステップ1607へ進み、IndexActionの行の情報を表示する。この段階で、先に取得した行(IndexAction、‐、‐、‐)への処理が終了する。
IndexActionの行の情報を表示した後、ステップ1605へ進み、ListActionの行の処理を進める。
まず、ステップ1605で入力情報と検証結果を調べると、conditionと「○」があるため、ステップ1608へ進む。
ステップ1608では、検証結果の値を調べて、「○」のときは、ステップ1609へ進む。
ステップ1609では、表示時に行を同じにするために、すでに表示済みの入力情報、検証結果の表示位置調査を行う。本例では、IndexActionが処理済であるが、この行は、入力情報、出力情報がともに存在しない。そのため、ListActionの最上位置にcondition、○を仮に位置付けて、ステップ1606へ進む。
次に、ステップ1606では、出力情報があるかどうかを調べる。ListAction、condition、○、‐には出力情報がないため、ステップ1601へ戻る。
ステップ1601へ戻り、次の行を取得すると、ListAction、username、△、‐を取得する。その後、既に説明したように、ステップ1603へ進み、直前に処理をしていた業務処理コンポーネントと同じ業務処理コンポーネントかどうかを調べる。本例では、ListActionで同じ(ステップ1603 Y)であるので、ステップ1605へ進む。
ステップ1605では、既に説明したように入力情報と検証結果を取得する。本例では、usernameと「△」を取得する。入力情報と検証結果があるので、ステップ1608へ進む。
ステップ1608では検証結果が「○」かどうかを判断するが、本実施例は「△」であるので、ステップ1608ではNoとなり、ステップ1610へ進む。
ステップ1610では、入力情報の表示位置の仮特定を行う。既に述べているように、検証結果が「△」の場合、保持情報から情報を取得して業務処理コンポーネントが使用するプログラムがかかれているが、情報の過不足検証の結果、保持情報から取得できないことを表す。そのため、表示位置として、他の行と関連することはない。本例では、上方から順次表示するもとのとして表示位置を決定する。
表示位置を特定したら、ステップ1606へ進み、出力情報を取得する。本例のこの段階でのListAction行は、出力情報はない(ステップ1606 N)ため、ステップ1601へ戻り、次の行を取得する。
ステップ1601へ戻り、次の行を取得すると、ListAction、usercode、×、‐となる。ステップ1610まで、これまでと同じ処理を行う。ステップ1610により検証結果が「×」の処理を行う。既に述べているように、検証結果が「×」の場合、エンドユーザ入力情報を保存するコンポーネントから情報を取得して業務処理コンポーネントはするプログラムがかかれているが、情報の過不足検証の結果、取得できないことを表す。そのため、表示位置として、他の行と関連することはない。本例では、上方から順次表示するもとのとして表示位置を決定する。
表示位置を特定したら、ステップ1606へ進み、出力情報を取得する。本例のこの段階でのListAction行は、出力情報はない(ステップ1606 N)ため、ステップ1601へ戻り、次の行を取得する。
次の行は、ListAction、-、-、resultである。ステップ1606まで同様の処理を行う。本例のこの段階では、resultという出力情報があるため(ステップ1606 Y)、ステップステップ1611へ進む。
ステップ1611では、同じ業務処理コンポーネントで、入力情報と出力情報の表示位置を合わせる処理を行う。
まず、ステップ1611では、図15の過不足検証結果の保持テーブルを検索し、業務コンポーネントの入力情報になっているかどうか調べる。本例のこの段階のresultは、LitActionの入力情報ではない(ステップ1611 N)ため、出力情報の最上位に仮決めとして配置する(ステップ1612)。
次に、ステップ1601へ戻って次の行に対して処理を行う。ここで、次に取得する行は、ListAction、-、-、STATUS_CODEであるが、ListAction、-、-、resultと同じため、説明は省略して次の行を取得したところから説明をする。
次にListAction、-、-、conditonの行に対する処理の説明を行う。これまでの処理と同様にして、ステップ1611まで進む。ステップ1611の処理により、conditionが、ListActionの入力情報になっていることが、図15の過不足検証結果の保持テーブルを、業務コンポーネントと入力情報のペアで検索することでわかる(ステップ1611 Y)ので、ステップ1613へ進み、ステップ1610またはステップ1609で設定された表示位置と同じ行に配置する。このとき、その箇所にすでに出力情報があるときは、既にある行より下の行を、下方向に移動させて、行挿入を行う。
繰り返しになるが、同様の処理をして、DetailAction、condition、○、-の行の入力情報は、condition、○が、ListActionの入力情報にあるため、DetailActionの入力情報の位置として同じ位置に仮決めする(ステップ1609)。
図15の過不足検証結果の保持テーブルのすべての行に対し処理をしたならば、処理を終了する。
図17は、過不足検証結果のテーブルの情報を表示した例を示すものである。本例では、業務処理コンポーネントが実行される順序で左から右へ横に表示する。
1701の領域に業務処理コンポーネントを表示する。入力情報1702には、当該業務処理コンポーネントが業務処理を行うために必要な情報を表示する。検証結果1703には本発明の検証結果を表示する。出力情報1704には、当該業務処理コンポーネントが業務処理をした結果である出力情報を表示する。
例えば、図17では、ListActionという業務処理コンポーネントは、入力情報としてcondition1705があり、その検証結果が「○」1706であるので、情報は業務処理で取得するようにプログラムされていることがわかる。また本例では、ListActionの業務処理の結果としての出力結果にcondition1707があることがわかる。図16の処理により保持情報は、1708の領域に表示され、入力情報は1709の領域に表示され、出力情報は1710の領域に表示される。
本発明が検証対象とするソフトウェアの構成を例示する図である。 本発明に係る入出力情報及び保持情報の検証システムの実施の形態を示すシステム構成図である。 本発明が検証対象とするソフトウェアの構成例を示す図である。 本発明で使用するHTMLファイルの例を示す図である。 図2のシステムにおける処理の概要を示すフローチャートである。 検証対象のソフトウェアのソースファイルを解析してユーザが入力すべき情報を取得するソース情報取得処理を示すフローチャートである。 図6のソース情報取得処理で生成されるエンドユーザ入力情報テーブルの例を示す図である。 業務処理を行うコンポーネントの例を示す図である。 業務処理を行うコンポーネントの解析処理を示すフローチャートである。 図9の解析処理により生成される業務処理情報テーブルの例を示す図である。 検証対象ソフトウェアにおける画面遷移情報の例を示す図である。 画面遷移情報の取得処理を示すフローチャートである。 図12の画面遷移情報の取得処理で生成される遷移情報テーブルの例を示す図である。 図5のステップ503の検証処理の詳細を示すフローチャートである。 図14の検証処理によって生成される過不足検証保持テーブルの例を示す図である。 図5のステップ504の検証結果表示処理の詳細を示すフローチャートである。 図16の処理により表示画面に表示される検証結果情報の例を示す図である。
符号の説明
201 検証システム
202 ソース情報取得手段
203 遷移情報取得手段
204 検証処理実行手段
205 結果表示手段
206 開発対象格納手段
207 ソースファイル
208 遷移情報
209 エンドユーザ入力情報テーブル
210 業務処理情報テーブル
211 遷移情報テーブル

Claims (3)

  1. 開発されたソフトウェアで使用する入力情報、出力情報及び内部の保持情報の過不足を検証する入出力情報及び保持情報の検証システムであって、
    開発されたソフトウェアのソースコード及び画面遷移情報を記憶手段から取得し、取得したソースコードからエンドユーザが入力すべき入力情報を解析すると共に、前記画面遷移情報から画面遷移を解析し、さらに前記入力情報に対して業務処理を行う複数のコンポーネントが入出力する入出力情報及び内部記憶手段の保持情報を画面遷移に従って解析する第1の手段と、
    前記第1の手段による解析結果の情報に基づき、各コンポーネントの処理タイミングにおいて各コンポーネントが必要とする入出力情報及び内部の保持情報に過不足がないかどうかを画面遷移に従って検証し、その検証結果を出力する第2の手段と
    を備えることを特徴とするソフトウェアの入出力情報及び保持情報の検証システム。
  2. 前記第1の手段は、ソースコード中に記述されている入力情報の取得元や取得方法により、各コンポーネントが入力する情報が、エンドユーザによって入力される情報であるか、内部記憶手段の保持情報であるかを解析することを特徴とする請求項1に記載のソフトウェアの入出力情報及び保持情報の検証システム。
  3. 前記第1の手段は、ソースコード中に記述されている各コンポーネントの出力情報の設定先や設定方法により、各コンポーネントの出力情報が内部記憶手段の保持情報になるか否かを解析することを特徴とする請求項1または2に記載のソフトウェアの入出力情報及び保持情報の検証システム。
JP2007134015A 2007-05-21 2007-05-21 ソフトウェアの入出力情報及び保持情報の検証システム Pending JP2008287642A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007134015A JP2008287642A (ja) 2007-05-21 2007-05-21 ソフトウェアの入出力情報及び保持情報の検証システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007134015A JP2008287642A (ja) 2007-05-21 2007-05-21 ソフトウェアの入出力情報及び保持情報の検証システム

Publications (1)

Publication Number Publication Date
JP2008287642A true JP2008287642A (ja) 2008-11-27

Family

ID=40147284

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007134015A Pending JP2008287642A (ja) 2007-05-21 2007-05-21 ソフトウェアの入出力情報及び保持情報の検証システム

Country Status (1)

Country Link
JP (1) JP2008287642A (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05181655A (ja) * 1991-12-27 1993-07-23 Nissan Motor Co Ltd 仕様表示装置
JP2002014846A (ja) * 2000-06-28 2002-01-18 Ntt Comware Corp ジョブ検査装置、ジョブ検査方法、及びジョブ検査プログラムを記録した記録媒体
JP2004272303A (ja) * 2003-03-04 2004-09-30 Hitachi Software Eng Co Ltd アクセス処理手段開発支援装置及びアクセス処理プログラム
JP2005339268A (ja) * 2004-05-27 2005-12-08 Nomura Research Institute Ltd 整合性チェックプログラム及び方法
JP2006260498A (ja) * 2005-03-15 2006-09-28 Inos:Kk Html全自動プログラム解析動作方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05181655A (ja) * 1991-12-27 1993-07-23 Nissan Motor Co Ltd 仕様表示装置
JP2002014846A (ja) * 2000-06-28 2002-01-18 Ntt Comware Corp ジョブ検査装置、ジョブ検査方法、及びジョブ検査プログラムを記録した記録媒体
JP2004272303A (ja) * 2003-03-04 2004-09-30 Hitachi Software Eng Co Ltd アクセス処理手段開発支援装置及びアクセス処理プログラム
JP2005339268A (ja) * 2004-05-27 2005-12-08 Nomura Research Institute Ltd 整合性チェックプログラム及び方法
JP2006260498A (ja) * 2005-03-15 2006-09-28 Inos:Kk Html全自動プログラム解析動作方法

Similar Documents

Publication Publication Date Title
US7877732B2 (en) Efficient stress testing of a service oriented architecture based application
US11449348B2 (en) Pre/post deployment customization
US20050229043A1 (en) System and method for software testing
US11775262B2 (en) Multi-technology visual integrated data management and analytics development and deployment environment
US20030115572A1 (en) System, method and computer program product for application development using a visual paradigm to combine existing data and applications
US20100281467A1 (en) Method and apparatus for automatic software testing
US8661416B2 (en) Method and apparatus for defining and instrumenting reusable Java server page code snippets for website testing and production
US20070073724A1 (en) System and method for automatic or semi-automatic software integration
US11615018B2 (en) Automation testing tool framework
CN112540924A (zh) 接口自动化测试方法、装置、设备及存储介质
CN113704110A (zh) 用户界面的自动化测试方法及装置
CN116719735A (zh) 一种测试用例生成方法及装置
US7882205B2 (en) Device setting apparatus, device setting method, information acquiring apparatus, information acquiring method, storage medium, and program
US10545729B2 (en) Computer program interface
US20190286453A1 (en) System construction assisting apparatus, method, and program
JP2005128658A (ja) 業務/生産プロセス構築・実行支援装置、業務/生産プロセス支援方法、プログラム
US11216347B1 (en) Automatically locating resources using alternative locator expressions during heterogeneous component-based testing in a portable automation framework
JP6436704B2 (ja) テスト実行装置、テスト実行方法およびコンピュータプログラム
JP2008287642A (ja) ソフトウェアの入出力情報及び保持情報の検証システム
JP4630572B2 (ja) 整合性チェックプログラム及び整合性チェック装置
JP2015148925A (ja) プログラム生成装置および方法
JP6353759B2 (ja) テスト実行装置、テスト実行方法およびコンピュータプログラム
JP5097070B2 (ja) プロパティファイル読み込みシステムと方法およびプログラム
Kubala Progressive web app with Angular 2 and ASP. NET
JP2007304778A (ja) プログラムのテスト方法、プログラム、テスト装置、及びアプリケーション開発システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120222

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120618