JP3683586B2 - 訓練可能ユーザ・インターフェース変換装置 - Google Patents
訓練可能ユーザ・インターフェース変換装置 Download PDFInfo
- Publication number
- JP3683586B2 JP3683586B2 JP52718395A JP52718395A JP3683586B2 JP 3683586 B2 JP3683586 B2 JP 3683586B2 JP 52718395 A JP52718395 A JP 52718395A JP 52718395 A JP52718395 A JP 52718395A JP 3683586 B2 JP3683586 B2 JP 3683586B2
- Authority
- JP
- Japan
- Prior art keywords
- prompts
- displays
- computer
- host
- client
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Digital Computer Display Output (AREA)
- Computer And Data Communications (AREA)
- Electrically Operated Instructional Devices (AREA)
- User Interface Of Digital Computer (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Compositions Of Oxide Ceramics (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Description
本発明は、対象とするコンピュータから新たなコンピュータへの、ソフトウエア・アプリケーション・ユーザ・インターフェースの統合および変換を、基礎となるアプリケーションを変更せずに行うことに関するものである。
ソフトウエア開発者、システム・インテグレータ、付加価値販売者、およびエンドユーザは、最先端のハンドヘルド・コンピュータや携帯用データ収集端末を利用することを欲している。しかしながら、これらの新しい装置を既存のソフトウエアシステムに組み込むことは、第一に、アプリケーションを実行するコンピュータ・システムはユーザ・インターフェースに最小限の機能性を備えていなければならないため、困難であることが立証されている。例えば、在庫管理システム(inventory system)のユーザ・インターフェースは、24行x80文字を表示することができる画面を必要とする場合がある。しかしながら、携帯用端末は4行x40文字を与えるに過ぎないので、このアプリケーションを直接実行することはできない。ハンドヘルドまたは携帯用端末は、典型的に、必要とされる最小限の機能性を備えていないので、これらは現在のアプリケーションのほとんどを実行することができない。
この問題に対するこれまで解決案は、古いアプリケーションの書き換え、携帯用端末の制約に合った新しいアプリケーションの購入、またはフィールド、プロンプト、および応答を対象のコンピュータ表示装置上の各位置から、携帯用装置上のより使い易い位置に「割り当てる(map)」、個別のマッピング・プログラムの書き込みを含んでいた。古いアプリケーションの書き換えは時間がかかり、費用もかかり、既存のシステムにバグを侵入させる危険性もある。新たなアプリケーションの購入には、多大な費用および危険が伴う。
個別マッピング・プログラムは高価であり、作成に時間がかかり、更に、アプリケーション・プログラムの変更によって、個別マッピング・プログラムにも変更が必要となる可能性があるので、アプリケーションの保守費用が増大することになる。加えて、個別マッピング・プログラムは、同期の問題(synchronization problem)を生じる可能性がある。同期を取る必要性は、タイプ入力を継続して進めている操作者には見えないエラー・メッセージの衝撃について考えれば明白となろう。したがって、個別マッピング・プログラムは、この問題に対する満足のいく解決案とはなっていない。
本発明は、既存のアプリケーションと新たなコンピュータ・システムとの間で、インテリジェントな訓練可能インターフェースとして作用することによって、この問題を解決するものである。その結果、本発明は、既存のコンピュータ・ソフトウエアを、元々はそのために設計されたのではないハードウエアを用いて使用できるようにする。具体的には、本発明は、既存のプログラムとのインターフェースを行い、当該既存のプログラムの表示画面からのデータを処理し、これらのデータを異なる態様および/またはフォーマットでユーザに提示する手段を提供する。同様に、ユーザからのデータを受け入れ、必要であればそのデータをフォーマットし直し、フォーマットし直したデータを既存のアプリケーションに提示する。
本発明の目的の1つは、既存のソフトウエア・アプリケーションのユーザ・インターフェースを変換(translate or convert)し、新たなコンピュータ・システム上で動作できるようにするシステムを提供することである。加えて、本発明の目的は、単純な方式を用いて既存のソフトウエア・アプリケーションのユーザ・インターフェースを変換するように教育または訓練を行うシステムを提供することである。本発明の更に別の目的は、携帯用装置の動作を既存のソフトウエア・アプリケーションのそれに同期させる、同期機構を提供することである。本発明の付加的な目的は、アプリケーション・エラーに対する堅固なエラー処理を提供することである。
発明の概要
本発明によって、必要なレベルのユーザ・インターフェース機能性を備えていないシステム上で、既存のアプリケーション・ソフトウエアを利用することが可能となる。
本発明は、既存のソフトウエア・アプリケーションのユーザ・インターフェースを変換する、訓練可能な装置を開示する。前記装置は、ホスト・コンピュータおよびクライアント・コンピュータ双方と通信するように構成されたコンピュータを含む。前記装置はホスト・コンピュータの入出力ストリームを傍受し、アプリケーションのユーザ・インターフェースをクライアントのユーザ・インターフェースに変換し、クライアント・コンピュータ上で使用できるようにする。前記コンピュータは、更に、アプリケーションのユーザ・インターフェースによって搬送されるタスクの繰り返しや冗長な情報を隠すことによって、ユーザのアプリケーションとの相互作用を簡略化するように構成されている。前記コンピュータは、更に、ホスト・アプリケーションを単一のユーザ・インターフェースに一本化するように構成されている。
前記装置を作成しかつ訓練する方法も開示する。前記装置は、ユーザのアプリケーションとの相互作用を監視することによって訓練される。監視プロセスは、アプリケーションのユーザ・インターフェースを変換するために、前記装置が利用するパス履歴(path history)を作成する。
【図面の簡単な説明】
第1図は、ハンドヘルドまたは携帯用端末を利用する従来技術のコンピュータ・システムのブロック図である。
第2図は、携帯用端末とアプリケーションが対象とする端末との間の機能的な差を示す図である。
第3図は、携帯用端末にインターフェースするために本発明を利用するコンピュータ・システムのブロック図である。
第4図は、教育プロセスの間に作成された仮想ユーザ・パスのブロック図である。
第A図ないし第KK図は、本発明の一実施例の画面を印刷したものである。
好適実施例の詳細な説明
第1図は、携帯用端末を用いる従来技術のコンピュータ・システムである。コンピュータ・システム10は、携帯用端末16に特定して設計されたアプリケーション12を実行する。このアプリケーション12は、携帯用端末16を通じてユーザ14と相互作用を行う。アプリケーション12は、赤外線、無線周波数、または直線配線のような通信媒体18を通じて、携帯用端末16と通信を行う。携帯用端末16は、ユーザ14に、特定の情報を要求するプロンプトを表示する。ユーザ14はこれらの要求に応答して、携帯用端末16に回答を入力する。
アプリケーション・プログラムが携帯用端末で動作するように設計されていない場合、ユーザはアプリケーションと対話することができない。例えば、第2図を参照して、アプリケーションが機能キーを含むフル・サイズ・キーボード21を有する端末20を必要とし、このキーボードが携帯用端末22上で使用可能なキーボード23とは異なる場合がある。また、アプリケーションは、画面サイズが携帯用端末22上の画面25よりも大きい端末24も必要とする場合もある。いずれの状況においても、アプリケーションは、システムにある形の変化を加えることなくては、携帯用端末上で実行することはできない。
第3図は、本発明を利用したコンピュータ・システムを示す。コンピュータ・システム30は、携帯用端末と共に用いるように設計されたのではないアプリケーション32を実行する。本発明34は、アプリケーション32と携帯用端末36との間に挿入される。アプリケーション32は、通信媒体33を通じて本発明34と通信を行い、一方、本発明34は通信媒体38を通じて携帯用端末36と通信を行う。ここでも、携帯用端末36は、ユーザ39に、特定の情報を要求するプロンプトを表示するが、これらのプロンプトは本発明が発生するのであって、基礎となるアプリケーション32ではない。ユーザ39は、これらのプロンプトに応答して、携帯用端末36に回答を入力するが、これらの回答も本発明34によって捕獲され、必ずしも直接アプリケーション32に渡されるのではない。
本発明は、基礎となるアプリケーション・プログラムと同一のコンピュータ・システム上に存在することができ、あるいは別個のコンピュータ・システム内に存在し、ネットワークを通じて当該アプリケーション・プログラムと通信することもできる。いずれの状況においても、本発明は、I/Oストリームを傍受し、ユーザ・インターフェースを変換して、携帯用端末上で使用できるようにする。また、本発明は、既存のプログラムのそれと同一のコンピュータ・システムを通じたアクセスであっても、既存のプログラムまたはプログラム群へのアクセスを簡略化するために用いることもできる。
既存のアプリケーションと携帯用端末との間でインターフェースおよび変換を行うために、本発明は仮想ユーザ(VU:virtual user)を作成する。VUは、既存のアプリケーションには実際のユーザとして見える。VUを訓練して、丁度実際のユーザが行うように、既存のアプリケーションを処理させて、携帯用端末と互換性のあるフォーマットで、実際のユーザにデータを提示する。
アプリケーションを処理している間の人間のユーザの相互作用を監視することによって、最終システムにおける使用に先だって、VUを作成する。バックグラウンドでは、本発明は「パス・ファイル(path file)」を作成し、VUは、これを用いて、自動的にアプリケーション内の特定のタスクを通じて移動する(navigate)。パス・ファイルは、訓練プロセスの間に作成された一連の自動発生された「ステップ」から成り、VUは後にこれらを線形または分岐シーケンスで実行することによって、アプリケーション中を移動する。アプリケーションにおけるあらゆるカーソルの停止は、VUによって再検討され、少なくとも1つのステップ、恐らく一連のステップが、この停止と関連付けられる。
本発明は、VUの作成を容易にする3つの特徴を備えている。第1に、本発明は、メニュー先導型インターフェース(menu driven interface)を利用し、VUを作成するプロセスを容易にすることによって、プロセスを、「オフ・ライン」ではなく、対話式(interactive)にしている。ユーザは、古典的な意味でプログラムする必要はなく、単にアプリケーションと対話すればよい。
第2に、VUは、基礎となるアプリケーション上では使用できない機能を作成し利用することができる。本発明は単に予め定義されているステップ集合に従うだけなので、人が入力可能なあらゆるキーストロークの組み合わせは、VUも行うことができる。これによって、VUを訓練または教育して、アプリケーション全体にわたる移動、異なるアプリケーションへの出入り、更に異なるホストへのアクセスおよび退出さえも可能となる。例えば、あるアプリケーションが2つのメニュー選択肢を有するとする。第1のメニューは手持ちの項目の量を掲示し、第2のメニューは項目の位置を掲示するものとする。アプリケーションに直接アクセスする典型的なユーザは、第1のメニュー選択肢に入って量を得て、第1メニュー選択肢から出て、第2メニュー選択肢に入って位置を得ることによって、双方の情報を得る。VUは、これと同じステップを行うように訓練可能であるが、双方の情報を有する1つの画面をユーザに提示することもできる。したがって、本発明は、特定のアプリケーションを「書かれているように直接」実行するのではこれまで得られなかった新しい機能を、ユーザに作成することができる。
第3に、本発明はストリーム監視を設け、これによって、VUはそれ自体をアプリケーションと同期させることができる。VUは、ホストにいずれのキーストロークを返送する前でも、あらゆるアプリケーションのカーソル停止と同期を取らなければならない。ストリーム監視を用いることによって、VUは現在のカーソル位置を認識し、それによってどのアプリケーションの画面をそれが「見ている」のかを判断することができる。
仮想ユーザの作成および訓練
アプリケーションのユーザ・インターフェースを変換するためには、VUを作成し教育しなければならない。
以下に示すのは、教育プロセスの間本発明のメニュー・バーの選択肢ファイル(FILE)、変数(VARS)、ホスト(HOST)、クライアント(CLIENT)およびその他(MISC)からアクセス可能な全コマンドのリストである。
ファイル・メニュー
Save path File: 作成したステップをパス・ファイルにセーブするが、終了しない。
Save & Exit: パス・ファイルをセーブし、終了する。
Quit: セーブせずに終了する。
Save Window: 後に印刷するために、あらゆる画面の画像をセーブすることができる。
変数メニュー
Declare Variable: 作成したパス・ファイル内で使用する変数を宣言する。
Set Variable: 既に宣言済みの変数を初期値に初期化する。
Branch on Variable: ここで定義し、ファイルされたto match"と変数が等しいときに、プログラムが分岐するパス名(path name)を定義する。注意:"No. "はパス内のステップ#を選択する。
ホスト・メニュー(初回)
Control Local (PTY): ホスト・アプリケーションへの接続方法を、VUが実行しているのと同一コンピュータへの疑似端末(pseudo terminal)アクセスとして定義する。
Connect Local (Pipe): ホスト・アプリケーションへの接続方法は、VUが実行しているのと同一コンピュータへのパイプ(pipe)を介してであることを定義する。
Connect via TELNET: ホスト・アプリケーションへの接続方法は、テルネット(telnet)を介してであることを定義し、この場合、アプリケーションはVUとは異なるコンピュータ上で実行している。
Connect via Serial: ホスト・アプリケーションへの接続方法は、VUが実行しているコンピュータ上の直列ポートを介してであることを定義する。
ホスト・メニュー
Send to Host: いずれのキーストロークの組み合わせもホストに送る。
Wait for Host: VUとホスト・アプリケーションとが、所与の時刻において所与のアプリケーションの正確に同一文字にあることを確実にする同期ステップ。
Save Host Screen Data: ホスト画面の特定のウインドウ(window)をセーブする。毎回画面の同一ライン上に現われるエラー・メッセージをセーブするためにしばしば用いられる。
Bypass Virtual User: 相互作用訓練を停止し、ホスト・アプリケーションへ直接データを入力させる。
クライアント・メニュー
Clear Screen: 画面をクリアするためのコマンド・シーケンスを送る。
Sound Tone: ベル・トーンを鳴らすためのコマンド・シーケンスを送る。
Move Cursor: クライアントの画面のx、y座標へカーソルを動かすコマンド・シーケンスを送る。
Send Cursor: 表示のために、クライアントに文字列を送る。
Get Replay: クライアントからの回答を要求する(スキャナまたはキーボード入力)。
MISCメニュー
Start New Path: 現ステップをパスの始点として定義する。以下の接続ステートメント(connect statement)を用いるときに、接続点(connect point)として用いられる。
End Path: パスの終点を定義する。
Connect (Loop): 上述の"Start New Path"選択肢を用いて指定したパス・レベルに、プログラム・フローの方向を変える。
Exec Procedure: プログラム制御を予め定義されている手順に渡すことを可能にする。端末モード(Terminal Mode)、ログオン(Logon)等に手順が使用可能である。
上で定義したメニュー・バーからの種々の選択肢を選択することによって、VUを訓練するアプリケーションにアクセスすることができる。アプリケーションにアクセスした後、VUを対話式に訓練し、アプリケーションにおけるプロンプトに適切に反応させるようにすることができる。
重要な概念はアプリケーション・プログラム・フロー(application program flow)である。アプリケーション・プログラム・フローは、特定のアプリケーションの使用のために従わなければならない、一連のデータ入力プロンプトである。これらのプロンプトは、メニュー選択、データおよび時刻入力、およびアプリケーションを処理するために必要な他の入力を含む。本発明は、誰がどのようにアプリケーションと対話したか(例えば、仮想ユーザ)を予め定義し、憶えておく方法を提供する。
いずれかのアプリケーションを使用する人にとっての第1ステップは、アプリケーションとどのように相互作用するかについての訓練を受けることである。VUは、しかしながら、繰り返しのキーストローク・シーケンス、アクセス時刻およびデータ情報を憶えておき、どのようにそれを行うかを決して忘れないように訓練することができる。VUは、アプリケーションが行うカーソル停止(cursor stop)にどのように反応するかについての訓練を受けなければならない。カーソル停止/プロンプトにどのように反応するかについて訓練を受けた後、VUはアプリケーション内の同一機能をそれ自体で処理できるようになる。
データ入力を容易にするために、VUには、クライアント・データ入力のためのプロンプトに対する訓練を行わなければならない。クライアントは、操作者がデータを入力する端末(RFハンドヘルド、通常の端末等)である。VUは、アプリケーション内でプログラミングの変更を全く行う必要なく、当該アプリケーションの処理を簡略化する。VUは、大多数のアプリケーションのカーソル停止/プロンプトを自動化し、手持ちの特定のタスクに対して要求された情報のみをクライアントに渡すことによって、これを行う。アプリケーション中の各カーソル停止において、クライアントにデータを催促するか、あるいはメニュー・バーが許す他の機能のいずれかを行う選択肢がある。この選択肢によって、VUは所与のアプリケーションのカーソル停止に対するその応答を変更することができる。このように、本発明は、ステップの実行において確実に分岐が行えるようにする。
以下に示すのは、典型的な仮想ユーザ訓練セッションの基本ステップのリストである。
1)ホスト接続/ログオン/アプリケーション・アクセス
2)クライアント・メニュー
3)ホスト・アプリケーション・アクセス
4)アクセス・メニュー間の自動移動
5)クライアント・データ入力の催促
6)クライアント・データに基づく分岐およびエラー命令
7)再びクライアント・タスクを開始するための繰り返し、またはクライアント・メニューへの帰還。
実行しようとしているいずれかの機能に対して、これらの部分を繰り返すことにより、簡略化されたユーザ入力画面を携帯用端末操作者のために作成することができる。VUは単に人と同じように、アプリケーション中を66MHz(コンピュータのクロック速度)で移動するだけなので、人が折好く実行できることを期待できないタスクを行うように、それを訓練することができる。この簡単な概念によって、あるアプリケーション(いくつかの異なるアプリケーションでもよい)のいくつかのメニュー選択肢からの機能を纏めて、元のアプリケーションにも存在し得ない、単一の操作者画面を作成することができるようになる。
これらのステップ各々の詳細は、以下の訓練セッションの例を通じてより明確となろう。以下の例で引用する図は、3つの重要な領域を示していることに注意されたい。各図は、本発明の訓練画面を表わす。図の上部には、第A−a図に示すように、上述の機能メニューにアクセスするために用いるメニュー・バーがある。図の真ん中にあるのは"Client"と標記されたモデル・クライアント・ウインドウであり、第A−a図に示すように、クライアント・コンピュータ・システム上の画面の大きさおよび形状を反映する。この画面は、スペック・ファイルにおいて定義される。スペック・ファイル(spec file)の一例が、補足資料Bとして含まれている。最後に、"HOST"と標記された"Host Window Shade(ホスト・ウインドウ・シェード)"が必要に応じてポップアップ(pop up)され、ホストが送ったメッセージおよびプロンプトを示す。これは、第I−c図に示されている。CLIENT、HOSTおよび本発明のメニューは、教育プロセスの間のシステム状態を示す。教育プロセスが終了したとき、完成したVUは訓練された通りに動作する。
仮想ユーザ訓練/教育セッションの例
以下に述べるのは、VUの作成を例示するために、実際のユーザによって実行される簡単なアプリケーション例である。以下の説明において、[]はプルダウン・メニューを用いて選択すべき選択肢を表わすか、あるいは押圧する実際のキーを表わすために用いられる。例えば、Select [Start New Path]は、プルダウン・メニューの中の選択肢"Start New Path"を強調することを意味し、press [end]は、エンド・キーを押圧することを意味する。
ステップ0:(第A−a図から第A−d図)
Misc.メニューにアクセスし、[Start New Path]を選択する。開始しようとしているパス(path)の名称を定義しなければならない。これは、ループ処理および分岐制御には重要である。パス名は、分岐およびループ・アクセスのためのパス内の地点を指定する。この例では、name [main_menu]が選択されているが、これがメイン・メニューを表示する地点であるからである。
ステップ1:(第B−a図から第B−b図)
クライアント・メニューにアクセスし、[Move Cursor]を選択する。これは、クライアント・ウインドウの中のカーソル位置を設定する。デフォルト設定である行:1および列:1が選択されている。クライアント・ウインドウ内のカーソルは、x,y位置即ち1,1に結果として移動する。
ステップ2:(第C−a図から第C−b図)
クライアント・メニューにアクセスし、[Clear Screen]を選択する。その結果、クライアント画面はクリアされる。
ステップ3:(第D−a図から第D−h図)
クライアント・メニューにアクセスし、[Send Message]を選択する。サブメニューが表示される。タイプ・サブメニューにアクセスし、[Text]を選択し、クライアント画面上に表示されるメッセージを入力する。この例では、[Do you want to run the program y/n(このプログラムを実行したいですか。 はい/いいえ)]というメッセージを入力する。この時点で、文章[Do you want to run the program y/n]が、クライアント画面上に納まるように適切な長さのラインに分割されて、クライアント画面上に表示される。こうして、システムはクライアントからの回答を受ける用意が完了する。
ステップ4:(第E−a図から第E−c図)
変数メニューにアクセスし、[Declare Variable]を選択する。クライアントからのステップ3における質問に対する応答を記憶することによって、変数を宣言することができる。変数名[answer]を入力する。
ステップ5:(第F−a図から第F−b図)
クライアント・メニューにアクセスし、[Get Reply]を選択する。[answer][tab][1]とタイプし、"answer"を変数として入力する。クライアントからの応答を記憶し、最大長を1文字に等しく設定する。尚、編集上の間違いに対して通常期待されるように、[backspace]がここで機能することを注記しておく。
ステップ6:(第G図)
定義する必要のある選択肢が2つある。第1に"y"即ち肯定の応答であり、通常、典型的な訓練手順であれば、アプリケーションを処理するために必要とされる「通常の」パスを通過することになる。この場合、通常とは"y"を意味するので、"y"で応答する。後にこの例において、"n"に対する訓練を入力することができる。
ステップ7:(第H−a図から第H−c図)
変数にアクセスし、[Branch on Variable]を選択する。[answer][tab][y][tab][start_rw][tab]とタイプする。これは以下の動作を定義する。変数"answer"が値"y"に等しい場合、"start_rw"と命名されたパスに進む。次のメニューで[d]を選択し、パス名を宣言する。このとき"n"の動作も定義してよい。[n][tab][exit][tab][d]と入力する。これによって、"answer"が"n"のときパス"exit"が実行されることになる。
ここで、"start_rw"と命名されたパスが作成される。
ホスト接続/ログオン/アプリケーションへのアクセス:この訓練例では、同一のホスト上でアプリケーションと本発明の双方を実行する。したがってアプリケーションのことを、異なる即ち遠隔ホスト(remote host)に対して、ローカル・ホスト(local host)上での実行と呼ぶ。以下の命令は、ローカル・ホスト上のみで疑似端末(PTY)を通じてアプリケーションへアクセスする場合に適用される。本発明を実行するために、ローカル・ホストをログオンしなければならない。したがって、この接続方法を用いれば、アプリケーションにアクセスする前に、ホストにログオンする必要はない。他の接続方法については、適用可能な項を参照されたい。
パス名: start_rw
ステップ0:(第I−a図から第I−c図)
ホスト・メニュー選択肢にアクセスする。一旦メニュー・バーに「入った」なら、移動のためには矢印キーを使用すればよい。ホストのウインドウ・シェード(window shade)を「プルダウン(pull down)」するには、下向きの矢印を使用する。[Connect Local (PTY)]を強調し、[enter]を押圧することによって、この選択肢を選択する。すると、コマンドの催促を受ける(:Command)。通常用いているキーを入力して、アプリケーションにアクセスする。実世界では[go-rw]とタイプすると、"Argument:"を残すことができる。空白を一列に並べ、[end]を押圧することによって、このステップを完了する。[end]を押圧すると、仮想ユーザが、ホストへのコマンド・ライン入力として、操作者のキーストロークを送ってくることに気が付くであろう。この時点で、端末(中間)ウインドウ内の実世界アプリケーションの第1画面を見ることになる。
[Exec Procedure]を使用する代替案
ステップ0:
Miscメニューにアクセスし、[Exec Procedure]を選択する。[go_rw][end]とタイプする。
アクセス・メニュー中の自動化された移動:この時点で、仮想ユーザに、どのようにアプリケーション中を移動するかについて訓練させる準備が整っている。おわかりのように、カーソル停止(cursor stop)において実行される第1ステップは、「ホストを待つ(Wait for Host)」ステップである。この処理は、仮想ユーザおよびホスト・アプリケーションが互いに同期していることを確認するためのものである。ホストに情報を送ろうとすると、まず「ホストを待つ」を実行するように要求される。クライアント入力を催促する順序は、完全に操作者次第である。この指導は基本的指針に従うものである。
パス名:nav_menus
ステップ0:(第J−a図から第J−c図)
Miscメニューにアクセスし、[Start New Path][enter]を選択する。[nav_menus][end]とタイプする。注意:[nav_menus]は1名称として選択された。何故なら、このパスは所望のトランザクションにアクセスするために必要なメニュー中を移動するからである。この名称には下線(underscore)が必要であり、空間は許されない。
ステップ1:(第K−a図から第K−c図)
ホスト・メニューにアクセスし、[Wait for Host]を選択する。[enter]を押圧し、下向き矢印を使用して[automatic]を選択し、[enter][enter]を押圧する。この時点で、文字列"o continue, or ESC to exi"がホスト画面の底部に現われるための自動ホスト同期が確認されている。
ステップ2:(第L−a図から第L−c図)
ホスト・メニューにアクセスし、[Send to Host]を選択する。サブメニューにおいて、[Special Char(s)]を選択する。[enter]を押圧すると、ウインドウ内に<cr>が見え、[.][enter]を押圧する。必要な場合には[tab]キーを用いて編集を行う。[end]を押圧してこのステップを活性化する。アプリケーションがVUのキャリッジ・リターンに対して次の画面で応答するのを見て、ここで頭文字を入力しなければならない。
ステップ3:(第M図)
ステップ#2におけるシーケンスを用いることによって、1組の頭文字を容易に「ハードコード化(hardcode)」することができる。あるいは、クライアントに「ユーザの頭文字」を催促することもできる。クライアントにユーザの頭文字を催促するために、以下のように処理を進める。クライアント・メニューにアクセスし、下向き矢印を用いて[Clear Screen]を選択する。この時点でクライアント画面は空白になり、古いプロンプト"Real World (y/n)?"が端末ウインドウの背後に隠されるので、全く変化を見ることができない場合がある。
パス名:item_transfer
ステップ0:(第N−a図から第N−c図)
Miscメニューにアクセスし、[Start New Path]を選択する。パスの名称として、[item_transfer]とタイプする。このパスは、クライアントに情報を催促し、項目転送トランザクションを完了する。プログラムは、最後のパス"access"を新たなパス"item_transfer"に連結する選択肢を操作者に与える。[n]を押圧して、"link to New Path"を選択する。
ステップ1:(第O図)
先のステップにおけるように、画面をクリアする。クライアント・メニューにアクセスし、[Clear Screen]を選択する。ここで、クライアント画面は空白となっているはずである。
ステップ2:(第P図)
上述のように、クライアント・メニューにアクセスし、[Move Cursor]を選択する。行1および列1を選択する。この時点で、カーソルは、クライアント画面上のx,y位置1,1において点滅するはずである。
ステップ3:(第Q−a図から第Q−b図)
クライアント・メニューにアクセスし、[Send Message]を選択する。サブメニュー内で[Text]を選択する。この時点で、クライアント画面上に表示すべきメッセージを入力する。[item:]を入力する。プロンプト"item:"がここでクライアント画面上に現われる。
ステップ4:(第R図)
先と同様、変数メニューにアクセスし、[Declare Variabale]を選択する。この時点で、クライアントの応答を項目プロンプトに記憶するための変数が宣言される。名称[item]を変数の名称として入力する。
ステップ5:(第S−a図から第S−b図)
クライアント・メニューにアクセスし、[Get Reply]を選択する。この時点で、クライアントからの回答が入力され、変数"item"に記憶される。[item][tab][10]と入力し、クライアントの応答に対する変数としての"item"を入力し、最大長10文字が許される。メニュー・バーは、"Waiting for Client Input at Client or here(クライアントまたはここにおいて、クライアント入力を待つ)"と置き換えられる。有効な項目名をここで入力する。
パス名: Update_host
ステップ0:(第T図)
Micsメニューにアクセスし、[Start New Path]を選択する。この一連のステップに対する新たなパス名として、[update_host]とタイプする。このパスは、"item_transfer"パスの下で受信した応答を用いて、ホストを更新する。
ステップ1:(第U図)
先と同様、クライアント・メニューにアクセスし、[Clear Screen]を選択して、この時点での画面をクリアする。
ステップ2:(第V図)
先と同様、クライアント・メニューにアクセスし、[Move Cursor]を選択する。行1および列1を新たな位置として選択する。クライアント・ウインドウ内のカーソルは、この時点で、x,y位置1,1に配置されるはずである。
ステップ3:(第W図)
先と同様、クライアント・メニューにアクセスし、[Send Message]を選択する。サブメニューにおいて[Text]を選択する。ここで、クライアント画面上に表示すべきメッセージを入力する。[Processing Data(処理データ)]を入力する。ここで、クライアント画面上に、プロンプト"Processing Data"が表示される。
ステップ4:(第X−a図から第X−b図)
ホスト・メニューにアクセスし、[Wait for Host]を選択する。[automatic]を選択する。これにより、この時点で、ホストとクライアントとを自動的に同期させることになる。"item_error"の"None of the above"パスにおいて、エラー処理が設けられること、および、100x.1秒=10秒に、タイム・アウトを設定することを注記しておく。したがって、エラー状態では、応答がないまま10秒経過すると、item_errorが実行される。
ステップ5:(第Y−a図から第Y−b図)
ホスト・メニューにアクセスし、[Send to Host]を選択する。ここで、変数"item"がホストに送られる。サブメニューから[Variable]を選択し、ホストに送る変数として、[item]とタイプする。サブメニューから[Special Char(s)]を選択し、[cr]を入力する。これによって、キャリッジ・リターンがホストに渡される。
パス名:item_error
ステップ0:(第Z−a図から第Z−b図)
データが入力され、それによってアプリケーションがそのエラー処理ルーチンに入ったので、カーソルはもはや第2のプロンプト"warehouse"近くにあるその通常の「次の入力(next entry)」位置にはない。代わりに、メッセージ"Press Enter or F8(EnterまたはF8を押圧する)"と共に、画面の右下側角に位置している。画面の左側角には、エラー・メッセージ"Item not on file(項目はファイル上にない)"が表示されていることを注記しておく。"update_host"のステップ4は、"non of the aboave"条件が真である場合に使用するパスとして定義された、"item_error"という名称のエラー処理サブルーチンを有していた。したがって、エラー状態を処理するために、制御は"item_error"に渡されている。ホストにアクセスし、[Wait for Host]を選択する。これで、自動ホスト同期の確認が行われたことになる。
ステップ1:(第AA図)
先と同様、変数メニューにアクセスし、[Declare Variable]を選択する。この変数は、ホスト画面上で現在"error window(エラー・ウインドウ)"内にあるホスト・データを記憶する。[item_error]とタイプし、変数"item_error"を定義し、これを次のステップで使用する。
ステップ2:(第BB図)
ホスト・ウインドウ・シェードを選択し、"save host data(ホスト・データをセーブする)"を選択する。ステップ1で宣言した変数を入力し、矢印キーを用いて、画面上のエラー・メッセージを覆うように「ウインドウ」を移動する。シフト「+」または「−」キーを用いて、"Save Host Screen Data"ボックス内の角括弧によって定義されている「ウインドウ」のサイズの拡大または縮小を行う。
ステップ3:(第CC図)
先と同様、クライアント・メニューにアクセスし、[Clear Screen]を選択する。これで、クライアント・スクリーンはクリアされるはずである。
ステップ4:(第DD図)
先と同様、クライアント・メニューにアクセスし、[Move Cursor]を選択する。行を1に、そして列を1に設定する。クライアント画面において、カーソルはx,y位置1,1に移動するはずである。
ステップ5:(第EE図)
クライアント・メニューから[Sound Tone]を選択する。クライアントにトーンが発せられ、ユーザにエラーを通知する。
ステップ6:(第FF図)
先と同様、クライアント・メニューにアクセスし、[Send Message]を選択する。サブメニューから[Variable]を選択する。"item_error"を変数名として入力し、[Special Char(s)]を選択し、キャリッジ・リターンおよびライン・フィードを定義し、テキストの次の行がエラー・メッセージを上書きしないようにする。[Text]を選択し、クライアント画面上で表示したいメッセージを入力する。[Special Char(s)]を選択し、キャリッジ・リターン、ライン・フィードおよび表示すべきメッセージの最後の部分を入力する。この例では、"<cr><lf> Press ENTER to <cr><lf> continue:"という内容である。
ステップ7:(第GG図)
上述のステップにおいて示したように、新たな変数"answer"を宣言し、継続するためにクライアントからENTERキーを得る。
ステップ8:(第HH図)
以前のステップにおいて示したように、クライアントの回答を得る。
ステップ9:(第II図)
プロンプトに対するクライアントの応答を待つ。
ステップ10:(第JJ図)
クライアントから入力されたばかりの"answer"を送る前に、ホストを待つ。
ステップ11:(第KK−a図から第KK−b図)
この時点では、ホストは項目入力プロンプトに戻っている。Miscメニューにアクセスし、[Loop]を選択し、このエラー・パスをitem_transferの先頭に接続し、再度クライアントに項目番号を催促する。
あらゆるエラー状態もこの技術を用いることによって処理可能であることを注記しておく。"Wait for Host"ダイアログ・ボックスの"Possible Response"領域のいずれかを用いることも、同等に正しい。したがって、5つの付加的な「既知の」応答を宣言し、上述と同様に「訓練」することができる。全ての条件で用いる1つのエラー応答についてのみ、VUを訓練したい場合、"none of the above"選択肢が最適である。
第4図は、上述の例において記載した種々のパスの相互接続を示す。上述のように訓練されたVUは、この時点では、前記アプリケーション例と携帯用端末との間のインターフェースとして使用できるよう準備が整っている。
パス・ファイル・プリミティブ(Path File Primitives)
パス・ファイルは、VUの教育プロセスの間に捕獲した一連のステップおよびコマンドを指定する。補足資料Aは、先に例示したVUの例に対するパス・ファイルを含む。以下のプリミティブは、ホスト・プログラムの挙動および人の操作者との相互作用を記録するために用いられる。
Sendact: 端末パス・ファイル
$cl_connect: クライアントの接続を確保する。
$cl_clear: クライアントの画面をクリアする。
$cl_tone: クライアント上でベル・トーンを鳴らす。
$cl_move: クライアントのカーソルを位置付ける。
$cl_send: クライアントにデータを送る。
$cl_get: クライアントからデータを得る。
$cl_discon: クライアントとの接続を切断する。
$host_send: ホスト・アプリケーションにデータを送る。
$host_connect: ホスト・アプリケーションへの接続を確保する。
$host_discon: ホスト・アプリケーションとの接続を切断する。
$host_save: エミュレーション領域からのデータを記憶する。
$host_sync: ホストの動作を監視し、挙動データベースと比較する。
$declare: 記憶変数を宣言する。
$param: システム・パラメータとして変更する。
$set: 変数の値を変える。
$pipe: クライアントとホスト・アプリケーションとの間で透明な接続を確保する。
$new_path: 新たな一連の動作を開始する。
$loop: 制御を移転する。
$done: パスを終了する。
$vbranch: 変数値に応じた条件付き分岐を行う。
$exec: プログラム手順を実行する。
スペック・ファイル・プリミティブ(Spec File Primitive)
スペック・ファイルは、VUによって使用するためのシステム依存情報を捕獲する。補足資料Bは、先に例示したVUの一例に対するスペック・ファイルを含む。「プログラム・レベル」インターフェースでは、以下のプリミティブに対応している。
nop: 動作なし
mark: プログラム位置にラベルを付ける。
label: プログラム位置にラベルを付ける。
begin: プログラム構造を起動する。
end: プログラム構造を終了する。
write: ホストまたはクライアントにデータを出力する。
display: クライアントにデータを出力する。
send: ホストにデータを出力する。
file_write: ディスク・ファイルにデータを出力する。
get: クライアントからのデータを入力する。
read: データを入力する。
find: エミュレータ画面上にデータを配置する。
if: 条件付き実行。
else: 条件付き実行。
endif: 条件付き実行。
declare: 記憶変数を宣言する。
param: システム構成を設定する。
set: 変数の値を設定する。
eof: スペック・ファイルを終了する。
connect: クライアントまたはホストへの接続を確保する。
disconnect: 接続を切断する。
monitor: ホストまたはクライアントからのデータを監視し、予測したデータと比較する。
pipe: ホストまたはクライアントとモニタとの間でデータを転送する。
configure: エミュレーション、クライアントI/O、またはホストI/O構成を設定する。
sleep: 遅らせる。
capture: 訓練モードを入力する。
include: サブファイルからコマンドを挿入する。
declare_action: パスファイルを処理し記憶する。
run_action: パスファイルを実行する。
file_open: ディスク・ファイルを開く。
file_close: ディスク・ファイルを閉じる。
spawn: システム・コマンドをサブプロセスとして実行する。
goto: フロー制御
loop: フロー制御
break: フロー制御
exit: フロー制御
gosub: フロー制御
return: フロー制御
next: フロー制御
then: フロー制御
上述の例によって開示したように、既存のプログラムの処理は、実際のユーザではなく、仮想ユーザ・プログラムが行う。したがって、以下の機能に対応する。
1.実際のユーザから得たデータのシーケンスおよびフォーマットは、元のプログラムによって要求されたものとは異なっていてもよい。
2.ユーザ・データを他のデータ源からのデータと組み合わせて、既存のアプリケーションに提示することができる。
3.単一ホスト上または多数のホスト・コンピュータからであっても、所与のアプリケーションまたは多数のアプリケーションの多数の機能からのデータを組み合わせ、ユーザに提示することができる。また、ユーザの対話があってもなくても、あるホスト・アプリケーションから他のアプリケーションにデータを渡すことができる。これによって、新たなアプリケーション・プログラムを書くことなく、新しく、より複雑な機能の生成が可能となる。
4.対話式リアル・タイム、メニュー先導方式で、仮想ユーザの訓練を行う。本発明は、目標ホスト・アプリケーションの実際の挙動を監視し、この挙動の詳細を記憶して、将来参考にする。ホストのプログラム挙動の多くの面が記録され、それには、実際のデータ・ストリームのキー要素や、エミュレートされた画面表示の内容が含まれる。この挙動データベースは、VUモデュールによって使用され、連続的にホスト・プログラムを処理する(エラー状態の検出および解釈を含む)と共に、人の操作者に提示するためのデータ源として使用され、および/またはアプリケーション内の異なるデータ入力画面および/または異なるホスト・アプリケーションに渡される。
5.VUモデュールは、ホスト・プログラムによる予測しなかった動作を検出し、それらを例外状態として操作者に報告し、および/またはその挙動および必要な応答を学習する。
本発明はANSI Cプログラミング言語で実施した。本発明は、486クラスのワークステーション上で動作する、SCO Unixオペレーティング・システム(Stanta Crus, CA)の下で実行する。クライアントの携帯用端末は、ANSIまたはVT100端末エミュレータを実行可能であれば、いかなる装置でもよい。このような装置には、Janus J2010 Handheld(Everett, WA)がある。
本発明は、その精神または本質的な特性から逸脱することなく、他の特定形態においても具現化が可能であることは、当業者には認められよう。したがって、ここに開示した実施例は、いかなる意味においても、例示的なのであって制限的ではないと解釈されるものとする。
ソフトウエア開発者、システム・インテグレータ、付加価値販売者、およびエンドユーザは、最先端のハンドヘルド・コンピュータや携帯用データ収集端末を利用することを欲している。しかしながら、これらの新しい装置を既存のソフトウエアシステムに組み込むことは、第一に、アプリケーションを実行するコンピュータ・システムはユーザ・インターフェースに最小限の機能性を備えていなければならないため、困難であることが立証されている。例えば、在庫管理システム(inventory system)のユーザ・インターフェースは、24行x80文字を表示することができる画面を必要とする場合がある。しかしながら、携帯用端末は4行x40文字を与えるに過ぎないので、このアプリケーションを直接実行することはできない。ハンドヘルドまたは携帯用端末は、典型的に、必要とされる最小限の機能性を備えていないので、これらは現在のアプリケーションのほとんどを実行することができない。
この問題に対するこれまで解決案は、古いアプリケーションの書き換え、携帯用端末の制約に合った新しいアプリケーションの購入、またはフィールド、プロンプト、および応答を対象のコンピュータ表示装置上の各位置から、携帯用装置上のより使い易い位置に「割り当てる(map)」、個別のマッピング・プログラムの書き込みを含んでいた。古いアプリケーションの書き換えは時間がかかり、費用もかかり、既存のシステムにバグを侵入させる危険性もある。新たなアプリケーションの購入には、多大な費用および危険が伴う。
個別マッピング・プログラムは高価であり、作成に時間がかかり、更に、アプリケーション・プログラムの変更によって、個別マッピング・プログラムにも変更が必要となる可能性があるので、アプリケーションの保守費用が増大することになる。加えて、個別マッピング・プログラムは、同期の問題(synchronization problem)を生じる可能性がある。同期を取る必要性は、タイプ入力を継続して進めている操作者には見えないエラー・メッセージの衝撃について考えれば明白となろう。したがって、個別マッピング・プログラムは、この問題に対する満足のいく解決案とはなっていない。
本発明は、既存のアプリケーションと新たなコンピュータ・システムとの間で、インテリジェントな訓練可能インターフェースとして作用することによって、この問題を解決するものである。その結果、本発明は、既存のコンピュータ・ソフトウエアを、元々はそのために設計されたのではないハードウエアを用いて使用できるようにする。具体的には、本発明は、既存のプログラムとのインターフェースを行い、当該既存のプログラムの表示画面からのデータを処理し、これらのデータを異なる態様および/またはフォーマットでユーザに提示する手段を提供する。同様に、ユーザからのデータを受け入れ、必要であればそのデータをフォーマットし直し、フォーマットし直したデータを既存のアプリケーションに提示する。
本発明の目的の1つは、既存のソフトウエア・アプリケーションのユーザ・インターフェースを変換(translate or convert)し、新たなコンピュータ・システム上で動作できるようにするシステムを提供することである。加えて、本発明の目的は、単純な方式を用いて既存のソフトウエア・アプリケーションのユーザ・インターフェースを変換するように教育または訓練を行うシステムを提供することである。本発明の更に別の目的は、携帯用装置の動作を既存のソフトウエア・アプリケーションのそれに同期させる、同期機構を提供することである。本発明の付加的な目的は、アプリケーション・エラーに対する堅固なエラー処理を提供することである。
発明の概要
本発明によって、必要なレベルのユーザ・インターフェース機能性を備えていないシステム上で、既存のアプリケーション・ソフトウエアを利用することが可能となる。
本発明は、既存のソフトウエア・アプリケーションのユーザ・インターフェースを変換する、訓練可能な装置を開示する。前記装置は、ホスト・コンピュータおよびクライアント・コンピュータ双方と通信するように構成されたコンピュータを含む。前記装置はホスト・コンピュータの入出力ストリームを傍受し、アプリケーションのユーザ・インターフェースをクライアントのユーザ・インターフェースに変換し、クライアント・コンピュータ上で使用できるようにする。前記コンピュータは、更に、アプリケーションのユーザ・インターフェースによって搬送されるタスクの繰り返しや冗長な情報を隠すことによって、ユーザのアプリケーションとの相互作用を簡略化するように構成されている。前記コンピュータは、更に、ホスト・アプリケーションを単一のユーザ・インターフェースに一本化するように構成されている。
前記装置を作成しかつ訓練する方法も開示する。前記装置は、ユーザのアプリケーションとの相互作用を監視することによって訓練される。監視プロセスは、アプリケーションのユーザ・インターフェースを変換するために、前記装置が利用するパス履歴(path history)を作成する。
【図面の簡単な説明】
第1図は、ハンドヘルドまたは携帯用端末を利用する従来技術のコンピュータ・システムのブロック図である。
第2図は、携帯用端末とアプリケーションが対象とする端末との間の機能的な差を示す図である。
第3図は、携帯用端末にインターフェースするために本発明を利用するコンピュータ・システムのブロック図である。
第4図は、教育プロセスの間に作成された仮想ユーザ・パスのブロック図である。
第A図ないし第KK図は、本発明の一実施例の画面を印刷したものである。
好適実施例の詳細な説明
第1図は、携帯用端末を用いる従来技術のコンピュータ・システムである。コンピュータ・システム10は、携帯用端末16に特定して設計されたアプリケーション12を実行する。このアプリケーション12は、携帯用端末16を通じてユーザ14と相互作用を行う。アプリケーション12は、赤外線、無線周波数、または直線配線のような通信媒体18を通じて、携帯用端末16と通信を行う。携帯用端末16は、ユーザ14に、特定の情報を要求するプロンプトを表示する。ユーザ14はこれらの要求に応答して、携帯用端末16に回答を入力する。
アプリケーション・プログラムが携帯用端末で動作するように設計されていない場合、ユーザはアプリケーションと対話することができない。例えば、第2図を参照して、アプリケーションが機能キーを含むフル・サイズ・キーボード21を有する端末20を必要とし、このキーボードが携帯用端末22上で使用可能なキーボード23とは異なる場合がある。また、アプリケーションは、画面サイズが携帯用端末22上の画面25よりも大きい端末24も必要とする場合もある。いずれの状況においても、アプリケーションは、システムにある形の変化を加えることなくては、携帯用端末上で実行することはできない。
第3図は、本発明を利用したコンピュータ・システムを示す。コンピュータ・システム30は、携帯用端末と共に用いるように設計されたのではないアプリケーション32を実行する。本発明34は、アプリケーション32と携帯用端末36との間に挿入される。アプリケーション32は、通信媒体33を通じて本発明34と通信を行い、一方、本発明34は通信媒体38を通じて携帯用端末36と通信を行う。ここでも、携帯用端末36は、ユーザ39に、特定の情報を要求するプロンプトを表示するが、これらのプロンプトは本発明が発生するのであって、基礎となるアプリケーション32ではない。ユーザ39は、これらのプロンプトに応答して、携帯用端末36に回答を入力するが、これらの回答も本発明34によって捕獲され、必ずしも直接アプリケーション32に渡されるのではない。
本発明は、基礎となるアプリケーション・プログラムと同一のコンピュータ・システム上に存在することができ、あるいは別個のコンピュータ・システム内に存在し、ネットワークを通じて当該アプリケーション・プログラムと通信することもできる。いずれの状況においても、本発明は、I/Oストリームを傍受し、ユーザ・インターフェースを変換して、携帯用端末上で使用できるようにする。また、本発明は、既存のプログラムのそれと同一のコンピュータ・システムを通じたアクセスであっても、既存のプログラムまたはプログラム群へのアクセスを簡略化するために用いることもできる。
既存のアプリケーションと携帯用端末との間でインターフェースおよび変換を行うために、本発明は仮想ユーザ(VU:virtual user)を作成する。VUは、既存のアプリケーションには実際のユーザとして見える。VUを訓練して、丁度実際のユーザが行うように、既存のアプリケーションを処理させて、携帯用端末と互換性のあるフォーマットで、実際のユーザにデータを提示する。
アプリケーションを処理している間の人間のユーザの相互作用を監視することによって、最終システムにおける使用に先だって、VUを作成する。バックグラウンドでは、本発明は「パス・ファイル(path file)」を作成し、VUは、これを用いて、自動的にアプリケーション内の特定のタスクを通じて移動する(navigate)。パス・ファイルは、訓練プロセスの間に作成された一連の自動発生された「ステップ」から成り、VUは後にこれらを線形または分岐シーケンスで実行することによって、アプリケーション中を移動する。アプリケーションにおけるあらゆるカーソルの停止は、VUによって再検討され、少なくとも1つのステップ、恐らく一連のステップが、この停止と関連付けられる。
本発明は、VUの作成を容易にする3つの特徴を備えている。第1に、本発明は、メニュー先導型インターフェース(menu driven interface)を利用し、VUを作成するプロセスを容易にすることによって、プロセスを、「オフ・ライン」ではなく、対話式(interactive)にしている。ユーザは、古典的な意味でプログラムする必要はなく、単にアプリケーションと対話すればよい。
第2に、VUは、基礎となるアプリケーション上では使用できない機能を作成し利用することができる。本発明は単に予め定義されているステップ集合に従うだけなので、人が入力可能なあらゆるキーストロークの組み合わせは、VUも行うことができる。これによって、VUを訓練または教育して、アプリケーション全体にわたる移動、異なるアプリケーションへの出入り、更に異なるホストへのアクセスおよび退出さえも可能となる。例えば、あるアプリケーションが2つのメニュー選択肢を有するとする。第1のメニューは手持ちの項目の量を掲示し、第2のメニューは項目の位置を掲示するものとする。アプリケーションに直接アクセスする典型的なユーザは、第1のメニュー選択肢に入って量を得て、第1メニュー選択肢から出て、第2メニュー選択肢に入って位置を得ることによって、双方の情報を得る。VUは、これと同じステップを行うように訓練可能であるが、双方の情報を有する1つの画面をユーザに提示することもできる。したがって、本発明は、特定のアプリケーションを「書かれているように直接」実行するのではこれまで得られなかった新しい機能を、ユーザに作成することができる。
第3に、本発明はストリーム監視を設け、これによって、VUはそれ自体をアプリケーションと同期させることができる。VUは、ホストにいずれのキーストロークを返送する前でも、あらゆるアプリケーションのカーソル停止と同期を取らなければならない。ストリーム監視を用いることによって、VUは現在のカーソル位置を認識し、それによってどのアプリケーションの画面をそれが「見ている」のかを判断することができる。
仮想ユーザの作成および訓練
アプリケーションのユーザ・インターフェースを変換するためには、VUを作成し教育しなければならない。
以下に示すのは、教育プロセスの間本発明のメニュー・バーの選択肢ファイル(FILE)、変数(VARS)、ホスト(HOST)、クライアント(CLIENT)およびその他(MISC)からアクセス可能な全コマンドのリストである。
ファイル・メニュー
Save path File: 作成したステップをパス・ファイルにセーブするが、終了しない。
Save & Exit: パス・ファイルをセーブし、終了する。
Quit: セーブせずに終了する。
Save Window: 後に印刷するために、あらゆる画面の画像をセーブすることができる。
変数メニュー
Declare Variable: 作成したパス・ファイル内で使用する変数を宣言する。
Set Variable: 既に宣言済みの変数を初期値に初期化する。
Branch on Variable: ここで定義し、ファイルされたto match"と変数が等しいときに、プログラムが分岐するパス名(path name)を定義する。注意:"No. "はパス内のステップ#を選択する。
ホスト・メニュー(初回)
Control Local (PTY): ホスト・アプリケーションへの接続方法を、VUが実行しているのと同一コンピュータへの疑似端末(pseudo terminal)アクセスとして定義する。
Connect Local (Pipe): ホスト・アプリケーションへの接続方法は、VUが実行しているのと同一コンピュータへのパイプ(pipe)を介してであることを定義する。
Connect via TELNET: ホスト・アプリケーションへの接続方法は、テルネット(telnet)を介してであることを定義し、この場合、アプリケーションはVUとは異なるコンピュータ上で実行している。
Connect via Serial: ホスト・アプリケーションへの接続方法は、VUが実行しているコンピュータ上の直列ポートを介してであることを定義する。
ホスト・メニュー
Send to Host: いずれのキーストロークの組み合わせもホストに送る。
Wait for Host: VUとホスト・アプリケーションとが、所与の時刻において所与のアプリケーションの正確に同一文字にあることを確実にする同期ステップ。
Save Host Screen Data: ホスト画面の特定のウインドウ(window)をセーブする。毎回画面の同一ライン上に現われるエラー・メッセージをセーブするためにしばしば用いられる。
Bypass Virtual User: 相互作用訓練を停止し、ホスト・アプリケーションへ直接データを入力させる。
クライアント・メニュー
Clear Screen: 画面をクリアするためのコマンド・シーケンスを送る。
Sound Tone: ベル・トーンを鳴らすためのコマンド・シーケンスを送る。
Move Cursor: クライアントの画面のx、y座標へカーソルを動かすコマンド・シーケンスを送る。
Send Cursor: 表示のために、クライアントに文字列を送る。
Get Replay: クライアントからの回答を要求する(スキャナまたはキーボード入力)。
MISCメニュー
Start New Path: 現ステップをパスの始点として定義する。以下の接続ステートメント(connect statement)を用いるときに、接続点(connect point)として用いられる。
End Path: パスの終点を定義する。
Connect (Loop): 上述の"Start New Path"選択肢を用いて指定したパス・レベルに、プログラム・フローの方向を変える。
Exec Procedure: プログラム制御を予め定義されている手順に渡すことを可能にする。端末モード(Terminal Mode)、ログオン(Logon)等に手順が使用可能である。
上で定義したメニュー・バーからの種々の選択肢を選択することによって、VUを訓練するアプリケーションにアクセスすることができる。アプリケーションにアクセスした後、VUを対話式に訓練し、アプリケーションにおけるプロンプトに適切に反応させるようにすることができる。
重要な概念はアプリケーション・プログラム・フロー(application program flow)である。アプリケーション・プログラム・フローは、特定のアプリケーションの使用のために従わなければならない、一連のデータ入力プロンプトである。これらのプロンプトは、メニュー選択、データおよび時刻入力、およびアプリケーションを処理するために必要な他の入力を含む。本発明は、誰がどのようにアプリケーションと対話したか(例えば、仮想ユーザ)を予め定義し、憶えておく方法を提供する。
いずれかのアプリケーションを使用する人にとっての第1ステップは、アプリケーションとどのように相互作用するかについての訓練を受けることである。VUは、しかしながら、繰り返しのキーストローク・シーケンス、アクセス時刻およびデータ情報を憶えておき、どのようにそれを行うかを決して忘れないように訓練することができる。VUは、アプリケーションが行うカーソル停止(cursor stop)にどのように反応するかについての訓練を受けなければならない。カーソル停止/プロンプトにどのように反応するかについて訓練を受けた後、VUはアプリケーション内の同一機能をそれ自体で処理できるようになる。
データ入力を容易にするために、VUには、クライアント・データ入力のためのプロンプトに対する訓練を行わなければならない。クライアントは、操作者がデータを入力する端末(RFハンドヘルド、通常の端末等)である。VUは、アプリケーション内でプログラミングの変更を全く行う必要なく、当該アプリケーションの処理を簡略化する。VUは、大多数のアプリケーションのカーソル停止/プロンプトを自動化し、手持ちの特定のタスクに対して要求された情報のみをクライアントに渡すことによって、これを行う。アプリケーション中の各カーソル停止において、クライアントにデータを催促するか、あるいはメニュー・バーが許す他の機能のいずれかを行う選択肢がある。この選択肢によって、VUは所与のアプリケーションのカーソル停止に対するその応答を変更することができる。このように、本発明は、ステップの実行において確実に分岐が行えるようにする。
以下に示すのは、典型的な仮想ユーザ訓練セッションの基本ステップのリストである。
1)ホスト接続/ログオン/アプリケーション・アクセス
2)クライアント・メニュー
3)ホスト・アプリケーション・アクセス
4)アクセス・メニュー間の自動移動
5)クライアント・データ入力の催促
6)クライアント・データに基づく分岐およびエラー命令
7)再びクライアント・タスクを開始するための繰り返し、またはクライアント・メニューへの帰還。
実行しようとしているいずれかの機能に対して、これらの部分を繰り返すことにより、簡略化されたユーザ入力画面を携帯用端末操作者のために作成することができる。VUは単に人と同じように、アプリケーション中を66MHz(コンピュータのクロック速度)で移動するだけなので、人が折好く実行できることを期待できないタスクを行うように、それを訓練することができる。この簡単な概念によって、あるアプリケーション(いくつかの異なるアプリケーションでもよい)のいくつかのメニュー選択肢からの機能を纏めて、元のアプリケーションにも存在し得ない、単一の操作者画面を作成することができるようになる。
これらのステップ各々の詳細は、以下の訓練セッションの例を通じてより明確となろう。以下の例で引用する図は、3つの重要な領域を示していることに注意されたい。各図は、本発明の訓練画面を表わす。図の上部には、第A−a図に示すように、上述の機能メニューにアクセスするために用いるメニュー・バーがある。図の真ん中にあるのは"Client"と標記されたモデル・クライアント・ウインドウであり、第A−a図に示すように、クライアント・コンピュータ・システム上の画面の大きさおよび形状を反映する。この画面は、スペック・ファイルにおいて定義される。スペック・ファイル(spec file)の一例が、補足資料Bとして含まれている。最後に、"HOST"と標記された"Host Window Shade(ホスト・ウインドウ・シェード)"が必要に応じてポップアップ(pop up)され、ホストが送ったメッセージおよびプロンプトを示す。これは、第I−c図に示されている。CLIENT、HOSTおよび本発明のメニューは、教育プロセスの間のシステム状態を示す。教育プロセスが終了したとき、完成したVUは訓練された通りに動作する。
仮想ユーザ訓練/教育セッションの例
以下に述べるのは、VUの作成を例示するために、実際のユーザによって実行される簡単なアプリケーション例である。以下の説明において、[]はプルダウン・メニューを用いて選択すべき選択肢を表わすか、あるいは押圧する実際のキーを表わすために用いられる。例えば、Select [Start New Path]は、プルダウン・メニューの中の選択肢"Start New Path"を強調することを意味し、press [end]は、エンド・キーを押圧することを意味する。
ステップ0:(第A−a図から第A−d図)
Misc.メニューにアクセスし、[Start New Path]を選択する。開始しようとしているパス(path)の名称を定義しなければならない。これは、ループ処理および分岐制御には重要である。パス名は、分岐およびループ・アクセスのためのパス内の地点を指定する。この例では、name [main_menu]が選択されているが、これがメイン・メニューを表示する地点であるからである。
ステップ1:(第B−a図から第B−b図)
クライアント・メニューにアクセスし、[Move Cursor]を選択する。これは、クライアント・ウインドウの中のカーソル位置を設定する。デフォルト設定である行:1および列:1が選択されている。クライアント・ウインドウ内のカーソルは、x,y位置即ち1,1に結果として移動する。
ステップ2:(第C−a図から第C−b図)
クライアント・メニューにアクセスし、[Clear Screen]を選択する。その結果、クライアント画面はクリアされる。
ステップ3:(第D−a図から第D−h図)
クライアント・メニューにアクセスし、[Send Message]を選択する。サブメニューが表示される。タイプ・サブメニューにアクセスし、[Text]を選択し、クライアント画面上に表示されるメッセージを入力する。この例では、[Do you want to run the program y/n(このプログラムを実行したいですか。 はい/いいえ)]というメッセージを入力する。この時点で、文章[Do you want to run the program y/n]が、クライアント画面上に納まるように適切な長さのラインに分割されて、クライアント画面上に表示される。こうして、システムはクライアントからの回答を受ける用意が完了する。
ステップ4:(第E−a図から第E−c図)
変数メニューにアクセスし、[Declare Variable]を選択する。クライアントからのステップ3における質問に対する応答を記憶することによって、変数を宣言することができる。変数名[answer]を入力する。
ステップ5:(第F−a図から第F−b図)
クライアント・メニューにアクセスし、[Get Reply]を選択する。[answer][tab][1]とタイプし、"answer"を変数として入力する。クライアントからの応答を記憶し、最大長を1文字に等しく設定する。尚、編集上の間違いに対して通常期待されるように、[backspace]がここで機能することを注記しておく。
ステップ6:(第G図)
定義する必要のある選択肢が2つある。第1に"y"即ち肯定の応答であり、通常、典型的な訓練手順であれば、アプリケーションを処理するために必要とされる「通常の」パスを通過することになる。この場合、通常とは"y"を意味するので、"y"で応答する。後にこの例において、"n"に対する訓練を入力することができる。
ステップ7:(第H−a図から第H−c図)
変数にアクセスし、[Branch on Variable]を選択する。[answer][tab][y][tab][start_rw][tab]とタイプする。これは以下の動作を定義する。変数"answer"が値"y"に等しい場合、"start_rw"と命名されたパスに進む。次のメニューで[d]を選択し、パス名を宣言する。このとき"n"の動作も定義してよい。[n][tab][exit][tab][d]と入力する。これによって、"answer"が"n"のときパス"exit"が実行されることになる。
ここで、"start_rw"と命名されたパスが作成される。
ホスト接続/ログオン/アプリケーションへのアクセス:この訓練例では、同一のホスト上でアプリケーションと本発明の双方を実行する。したがってアプリケーションのことを、異なる即ち遠隔ホスト(remote host)に対して、ローカル・ホスト(local host)上での実行と呼ぶ。以下の命令は、ローカル・ホスト上のみで疑似端末(PTY)を通じてアプリケーションへアクセスする場合に適用される。本発明を実行するために、ローカル・ホストをログオンしなければならない。したがって、この接続方法を用いれば、アプリケーションにアクセスする前に、ホストにログオンする必要はない。他の接続方法については、適用可能な項を参照されたい。
パス名: start_rw
ステップ0:(第I−a図から第I−c図)
ホスト・メニュー選択肢にアクセスする。一旦メニュー・バーに「入った」なら、移動のためには矢印キーを使用すればよい。ホストのウインドウ・シェード(window shade)を「プルダウン(pull down)」するには、下向きの矢印を使用する。[Connect Local (PTY)]を強調し、[enter]を押圧することによって、この選択肢を選択する。すると、コマンドの催促を受ける(:Command)。通常用いているキーを入力して、アプリケーションにアクセスする。実世界では[go-rw]とタイプすると、"Argument:"を残すことができる。空白を一列に並べ、[end]を押圧することによって、このステップを完了する。[end]を押圧すると、仮想ユーザが、ホストへのコマンド・ライン入力として、操作者のキーストロークを送ってくることに気が付くであろう。この時点で、端末(中間)ウインドウ内の実世界アプリケーションの第1画面を見ることになる。
[Exec Procedure]を使用する代替案
ステップ0:
Miscメニューにアクセスし、[Exec Procedure]を選択する。[go_rw][end]とタイプする。
アクセス・メニュー中の自動化された移動:この時点で、仮想ユーザに、どのようにアプリケーション中を移動するかについて訓練させる準備が整っている。おわかりのように、カーソル停止(cursor stop)において実行される第1ステップは、「ホストを待つ(Wait for Host)」ステップである。この処理は、仮想ユーザおよびホスト・アプリケーションが互いに同期していることを確認するためのものである。ホストに情報を送ろうとすると、まず「ホストを待つ」を実行するように要求される。クライアント入力を催促する順序は、完全に操作者次第である。この指導は基本的指針に従うものである。
パス名:nav_menus
ステップ0:(第J−a図から第J−c図)
Miscメニューにアクセスし、[Start New Path][enter]を選択する。[nav_menus][end]とタイプする。注意:[nav_menus]は1名称として選択された。何故なら、このパスは所望のトランザクションにアクセスするために必要なメニュー中を移動するからである。この名称には下線(underscore)が必要であり、空間は許されない。
ステップ1:(第K−a図から第K−c図)
ホスト・メニューにアクセスし、[Wait for Host]を選択する。[enter]を押圧し、下向き矢印を使用して[automatic]を選択し、[enter][enter]を押圧する。この時点で、文字列"o continue, or ESC to exi"がホスト画面の底部に現われるための自動ホスト同期が確認されている。
ステップ2:(第L−a図から第L−c図)
ホスト・メニューにアクセスし、[Send to Host]を選択する。サブメニューにおいて、[Special Char(s)]を選択する。[enter]を押圧すると、ウインドウ内に<cr>が見え、[.][enter]を押圧する。必要な場合には[tab]キーを用いて編集を行う。[end]を押圧してこのステップを活性化する。アプリケーションがVUのキャリッジ・リターンに対して次の画面で応答するのを見て、ここで頭文字を入力しなければならない。
ステップ3:(第M図)
ステップ#2におけるシーケンスを用いることによって、1組の頭文字を容易に「ハードコード化(hardcode)」することができる。あるいは、クライアントに「ユーザの頭文字」を催促することもできる。クライアントにユーザの頭文字を催促するために、以下のように処理を進める。クライアント・メニューにアクセスし、下向き矢印を用いて[Clear Screen]を選択する。この時点でクライアント画面は空白になり、古いプロンプト"Real World (y/n)?"が端末ウインドウの背後に隠されるので、全く変化を見ることができない場合がある。
パス名:item_transfer
ステップ0:(第N−a図から第N−c図)
Miscメニューにアクセスし、[Start New Path]を選択する。パスの名称として、[item_transfer]とタイプする。このパスは、クライアントに情報を催促し、項目転送トランザクションを完了する。プログラムは、最後のパス"access"を新たなパス"item_transfer"に連結する選択肢を操作者に与える。[n]を押圧して、"link to New Path"を選択する。
ステップ1:(第O図)
先のステップにおけるように、画面をクリアする。クライアント・メニューにアクセスし、[Clear Screen]を選択する。ここで、クライアント画面は空白となっているはずである。
ステップ2:(第P図)
上述のように、クライアント・メニューにアクセスし、[Move Cursor]を選択する。行1および列1を選択する。この時点で、カーソルは、クライアント画面上のx,y位置1,1において点滅するはずである。
ステップ3:(第Q−a図から第Q−b図)
クライアント・メニューにアクセスし、[Send Message]を選択する。サブメニュー内で[Text]を選択する。この時点で、クライアント画面上に表示すべきメッセージを入力する。[item:]を入力する。プロンプト"item:"がここでクライアント画面上に現われる。
ステップ4:(第R図)
先と同様、変数メニューにアクセスし、[Declare Variabale]を選択する。この時点で、クライアントの応答を項目プロンプトに記憶するための変数が宣言される。名称[item]を変数の名称として入力する。
ステップ5:(第S−a図から第S−b図)
クライアント・メニューにアクセスし、[Get Reply]を選択する。この時点で、クライアントからの回答が入力され、変数"item"に記憶される。[item][tab][10]と入力し、クライアントの応答に対する変数としての"item"を入力し、最大長10文字が許される。メニュー・バーは、"Waiting for Client Input at Client or here(クライアントまたはここにおいて、クライアント入力を待つ)"と置き換えられる。有効な項目名をここで入力する。
パス名: Update_host
ステップ0:(第T図)
Micsメニューにアクセスし、[Start New Path]を選択する。この一連のステップに対する新たなパス名として、[update_host]とタイプする。このパスは、"item_transfer"パスの下で受信した応答を用いて、ホストを更新する。
ステップ1:(第U図)
先と同様、クライアント・メニューにアクセスし、[Clear Screen]を選択して、この時点での画面をクリアする。
ステップ2:(第V図)
先と同様、クライアント・メニューにアクセスし、[Move Cursor]を選択する。行1および列1を新たな位置として選択する。クライアント・ウインドウ内のカーソルは、この時点で、x,y位置1,1に配置されるはずである。
ステップ3:(第W図)
先と同様、クライアント・メニューにアクセスし、[Send Message]を選択する。サブメニューにおいて[Text]を選択する。ここで、クライアント画面上に表示すべきメッセージを入力する。[Processing Data(処理データ)]を入力する。ここで、クライアント画面上に、プロンプト"Processing Data"が表示される。
ステップ4:(第X−a図から第X−b図)
ホスト・メニューにアクセスし、[Wait for Host]を選択する。[automatic]を選択する。これにより、この時点で、ホストとクライアントとを自動的に同期させることになる。"item_error"の"None of the above"パスにおいて、エラー処理が設けられること、および、100x.1秒=10秒に、タイム・アウトを設定することを注記しておく。したがって、エラー状態では、応答がないまま10秒経過すると、item_errorが実行される。
ステップ5:(第Y−a図から第Y−b図)
ホスト・メニューにアクセスし、[Send to Host]を選択する。ここで、変数"item"がホストに送られる。サブメニューから[Variable]を選択し、ホストに送る変数として、[item]とタイプする。サブメニューから[Special Char(s)]を選択し、[cr]を入力する。これによって、キャリッジ・リターンがホストに渡される。
パス名:item_error
ステップ0:(第Z−a図から第Z−b図)
データが入力され、それによってアプリケーションがそのエラー処理ルーチンに入ったので、カーソルはもはや第2のプロンプト"warehouse"近くにあるその通常の「次の入力(next entry)」位置にはない。代わりに、メッセージ"Press Enter or F8(EnterまたはF8を押圧する)"と共に、画面の右下側角に位置している。画面の左側角には、エラー・メッセージ"Item not on file(項目はファイル上にない)"が表示されていることを注記しておく。"update_host"のステップ4は、"non of the aboave"条件が真である場合に使用するパスとして定義された、"item_error"という名称のエラー処理サブルーチンを有していた。したがって、エラー状態を処理するために、制御は"item_error"に渡されている。ホストにアクセスし、[Wait for Host]を選択する。これで、自動ホスト同期の確認が行われたことになる。
ステップ1:(第AA図)
先と同様、変数メニューにアクセスし、[Declare Variable]を選択する。この変数は、ホスト画面上で現在"error window(エラー・ウインドウ)"内にあるホスト・データを記憶する。[item_error]とタイプし、変数"item_error"を定義し、これを次のステップで使用する。
ステップ2:(第BB図)
ホスト・ウインドウ・シェードを選択し、"save host data(ホスト・データをセーブする)"を選択する。ステップ1で宣言した変数を入力し、矢印キーを用いて、画面上のエラー・メッセージを覆うように「ウインドウ」を移動する。シフト「+」または「−」キーを用いて、"Save Host Screen Data"ボックス内の角括弧によって定義されている「ウインドウ」のサイズの拡大または縮小を行う。
ステップ3:(第CC図)
先と同様、クライアント・メニューにアクセスし、[Clear Screen]を選択する。これで、クライアント・スクリーンはクリアされるはずである。
ステップ4:(第DD図)
先と同様、クライアント・メニューにアクセスし、[Move Cursor]を選択する。行を1に、そして列を1に設定する。クライアント画面において、カーソルはx,y位置1,1に移動するはずである。
ステップ5:(第EE図)
クライアント・メニューから[Sound Tone]を選択する。クライアントにトーンが発せられ、ユーザにエラーを通知する。
ステップ6:(第FF図)
先と同様、クライアント・メニューにアクセスし、[Send Message]を選択する。サブメニューから[Variable]を選択する。"item_error"を変数名として入力し、[Special Char(s)]を選択し、キャリッジ・リターンおよびライン・フィードを定義し、テキストの次の行がエラー・メッセージを上書きしないようにする。[Text]を選択し、クライアント画面上で表示したいメッセージを入力する。[Special Char(s)]を選択し、キャリッジ・リターン、ライン・フィードおよび表示すべきメッセージの最後の部分を入力する。この例では、"<cr><lf> Press ENTER to <cr><lf> continue:"という内容である。
ステップ7:(第GG図)
上述のステップにおいて示したように、新たな変数"answer"を宣言し、継続するためにクライアントからENTERキーを得る。
ステップ8:(第HH図)
以前のステップにおいて示したように、クライアントの回答を得る。
ステップ9:(第II図)
プロンプトに対するクライアントの応答を待つ。
ステップ10:(第JJ図)
クライアントから入力されたばかりの"answer"を送る前に、ホストを待つ。
ステップ11:(第KK−a図から第KK−b図)
この時点では、ホストは項目入力プロンプトに戻っている。Miscメニューにアクセスし、[Loop]を選択し、このエラー・パスをitem_transferの先頭に接続し、再度クライアントに項目番号を催促する。
あらゆるエラー状態もこの技術を用いることによって処理可能であることを注記しておく。"Wait for Host"ダイアログ・ボックスの"Possible Response"領域のいずれかを用いることも、同等に正しい。したがって、5つの付加的な「既知の」応答を宣言し、上述と同様に「訓練」することができる。全ての条件で用いる1つのエラー応答についてのみ、VUを訓練したい場合、"none of the above"選択肢が最適である。
第4図は、上述の例において記載した種々のパスの相互接続を示す。上述のように訓練されたVUは、この時点では、前記アプリケーション例と携帯用端末との間のインターフェースとして使用できるよう準備が整っている。
パス・ファイル・プリミティブ(Path File Primitives)
パス・ファイルは、VUの教育プロセスの間に捕獲した一連のステップおよびコマンドを指定する。補足資料Aは、先に例示したVUの例に対するパス・ファイルを含む。以下のプリミティブは、ホスト・プログラムの挙動および人の操作者との相互作用を記録するために用いられる。
Sendact: 端末パス・ファイル
$cl_connect: クライアントの接続を確保する。
$cl_clear: クライアントの画面をクリアする。
$cl_tone: クライアント上でベル・トーンを鳴らす。
$cl_move: クライアントのカーソルを位置付ける。
$cl_send: クライアントにデータを送る。
$cl_get: クライアントからデータを得る。
$cl_discon: クライアントとの接続を切断する。
$host_send: ホスト・アプリケーションにデータを送る。
$host_connect: ホスト・アプリケーションへの接続を確保する。
$host_discon: ホスト・アプリケーションとの接続を切断する。
$host_save: エミュレーション領域からのデータを記憶する。
$host_sync: ホストの動作を監視し、挙動データベースと比較する。
$declare: 記憶変数を宣言する。
$param: システム・パラメータとして変更する。
$set: 変数の値を変える。
$pipe: クライアントとホスト・アプリケーションとの間で透明な接続を確保する。
$new_path: 新たな一連の動作を開始する。
$loop: 制御を移転する。
$done: パスを終了する。
$vbranch: 変数値に応じた条件付き分岐を行う。
$exec: プログラム手順を実行する。
スペック・ファイル・プリミティブ(Spec File Primitive)
スペック・ファイルは、VUによって使用するためのシステム依存情報を捕獲する。補足資料Bは、先に例示したVUの一例に対するスペック・ファイルを含む。「プログラム・レベル」インターフェースでは、以下のプリミティブに対応している。
nop: 動作なし
mark: プログラム位置にラベルを付ける。
label: プログラム位置にラベルを付ける。
begin: プログラム構造を起動する。
end: プログラム構造を終了する。
write: ホストまたはクライアントにデータを出力する。
display: クライアントにデータを出力する。
send: ホストにデータを出力する。
file_write: ディスク・ファイルにデータを出力する。
get: クライアントからのデータを入力する。
read: データを入力する。
find: エミュレータ画面上にデータを配置する。
if: 条件付き実行。
else: 条件付き実行。
endif: 条件付き実行。
declare: 記憶変数を宣言する。
param: システム構成を設定する。
set: 変数の値を設定する。
eof: スペック・ファイルを終了する。
connect: クライアントまたはホストへの接続を確保する。
disconnect: 接続を切断する。
monitor: ホストまたはクライアントからのデータを監視し、予測したデータと比較する。
pipe: ホストまたはクライアントとモニタとの間でデータを転送する。
configure: エミュレーション、クライアントI/O、またはホストI/O構成を設定する。
sleep: 遅らせる。
capture: 訓練モードを入力する。
include: サブファイルからコマンドを挿入する。
declare_action: パスファイルを処理し記憶する。
run_action: パスファイルを実行する。
file_open: ディスク・ファイルを開く。
file_close: ディスク・ファイルを閉じる。
spawn: システム・コマンドをサブプロセスとして実行する。
goto: フロー制御
loop: フロー制御
break: フロー制御
exit: フロー制御
gosub: フロー制御
return: フロー制御
next: フロー制御
then: フロー制御
上述の例によって開示したように、既存のプログラムの処理は、実際のユーザではなく、仮想ユーザ・プログラムが行う。したがって、以下の機能に対応する。
1.実際のユーザから得たデータのシーケンスおよびフォーマットは、元のプログラムによって要求されたものとは異なっていてもよい。
2.ユーザ・データを他のデータ源からのデータと組み合わせて、既存のアプリケーションに提示することができる。
3.単一ホスト上または多数のホスト・コンピュータからであっても、所与のアプリケーションまたは多数のアプリケーションの多数の機能からのデータを組み合わせ、ユーザに提示することができる。また、ユーザの対話があってもなくても、あるホスト・アプリケーションから他のアプリケーションにデータを渡すことができる。これによって、新たなアプリケーション・プログラムを書くことなく、新しく、より複雑な機能の生成が可能となる。
4.対話式リアル・タイム、メニュー先導方式で、仮想ユーザの訓練を行う。本発明は、目標ホスト・アプリケーションの実際の挙動を監視し、この挙動の詳細を記憶して、将来参考にする。ホストのプログラム挙動の多くの面が記録され、それには、実際のデータ・ストリームのキー要素や、エミュレートされた画面表示の内容が含まれる。この挙動データベースは、VUモデュールによって使用され、連続的にホスト・プログラムを処理する(エラー状態の検出および解釈を含む)と共に、人の操作者に提示するためのデータ源として使用され、および/またはアプリケーション内の異なるデータ入力画面および/または異なるホスト・アプリケーションに渡される。
5.VUモデュールは、ホスト・プログラムによる予測しなかった動作を検出し、それらを例外状態として操作者に報告し、および/またはその挙動および必要な応答を学習する。
本発明はANSI Cプログラミング言語で実施した。本発明は、486クラスのワークステーション上で動作する、SCO Unixオペレーティング・システム(Stanta Crus, CA)の下で実行する。クライアントの携帯用端末は、ANSIまたはVT100端末エミュレータを実行可能であれば、いかなる装置でもよい。このような装置には、Janus J2010 Handheld(Everett, WA)がある。
本発明は、その精神または本質的な特性から逸脱することなく、他の特定形態においても具現化が可能であることは、当業者には認められよう。したがって、ここに開示した実施例は、いかなる意味においても、例示的なのであって制限的ではないと解釈されるものとする。
Claims (7)
- ホスト・コンピュータ上で実行される既存のアプリケーションからの第1ユーザ・インターフェースを、クライアント・コンピュータ上で実行される第2ユーザ・インターフェースに変換し、ユーザ・インターフェースが、入力のための1組のプロンプトと出力のための1組の表示から成る、システムであって、
前記ホスト・コンピュータと通信する訓練用コンピュータであって、前記ホスト・コンピュータ上で実行される前記既存のアプリケーション・プログラムの前記第1ユーザ・インターフェースを、該訓練用コンピュータを通じて、同時に処理する第1ユーザが発生する第1組のプロンプトおよび表示を対話的に監視しかつ捕獲するように構成され、前記第1組のプロンプトおよび表示を、前記クライアント・コンピュータ上の前記第2ユーザ・インターフェースを通じて提示するために、前記第1ユーザによって選択された第2組のプロンプトおよび表示に変換するように構成され、更に、前記第1組のプロンプトおよび表示を、前記第2組のプロンプトおよび表示と関連付けて記憶するように構成された、前記訓練用コンピュータと、
前記ホスト・コンピュータおよび前記クライアント・コンピュータと通信する変換用コンピュータであって、前記第1組のプロンプトおよび表示のために、前記既存のアプリケーションの第1ユーザ・インターフェースを監視するように構成され、更に、前記クライアント・コンピュータ上の前記第2ユーザ・インターフェース上で、前記第1組のプロンプトおよび表示と関連付けられた前記第2組のプロンプトおよび表示を表示するように構成された、前記変換用コンピュータと、
を具備し、
これによって、前記クライアント・コンピュータを操作する前記第2ユーザが、前記変換用コンピュータを通じて、前記第2組のプロンプトおよび表示を通じて、前記ホスト・コンピュータ上で実行される前記既存のアプリケーションと相互作用させてなるシステム。 - 請求項1記載の装置において、前記訓練用コンピュータおよび前記ホスト・コンピュータは、前記ホスト・コンピュータおよび前記訓練用コンピュータとして動作するように構成された単一のコンピュータである装置。
- 請求項1記載の装置において、前記第1ユーザ・インターフェースは、第1の情報量を表示可能な第1情報表示装置を含み、前記第2インターフェースは、第2の情報量を表示可能な第2情報表示装置を含み、前記第1の情報量は前記第2の情報量とは等しくない装置。
- 請求項1記載の装置において、前記既存のアプリケーションは、少なくとも2つの別個のコンピュータ・プログラムを含み、前記少なくとも2つの別個のコンピュータ・プログラムは同時に実行される装置。
- 請求項1または4記載の装置において、前記第1組のプロンプトおよび表示の前記第2組のプロンプトおよび表示への前記変換は、前記第1組のプロンプトおよび表示の一部を、前記第2組のプロンプトおよび表示として捕獲することを含む装置。
- 請求項1または4記載の装置において、前記第1組のプロンプトおよび表示の前記第2組のプロンプトおよび表示への前記変換は、前記第1組のプロンプトおよび表示の一部を捕獲し、前記第2組のプロンプトおよび表示を一連の予め定義されている組のプロンプトおよび表示の1つとして定義することを含み、前記一連の予め定義されているプロンプトおよび表示の前記1つは、前記第1組のプロンプトおよび表示に基づいて選択される装置。
- 請求項1または4記載の装置において、前記第1組のプロンプトおよび表示の前記第2組のプロンプトおよび表示への前記変換は、前記第1組のプロンプトおよび表示の一部を捕獲し、前記第2組のプロンプトおよび表示を一連の予め定義されている組のプロンプトおよび表示の1つとして定義することを含み、前記一連の予め定義されているプロンプトおよび表示の前記1つは、前記クライアント・コンピュータ上で相互作用する前記第2ユーザに基づいて選択される装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/229,935 US5627977A (en) | 1994-04-19 | 1994-04-19 | Trainable user interface translator |
US08/229,935 | 1994-04-19 | ||
PCT/US1995/005009 WO1995028673A1 (en) | 1994-04-19 | 1995-04-18 | Trainable user interface translator |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10501639A JPH10501639A (ja) | 1998-02-10 |
JP3683586B2 true JP3683586B2 (ja) | 2005-08-17 |
Family
ID=22863284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52718395A Expired - Fee Related JP3683586B2 (ja) | 1994-04-19 | 1995-04-18 | 訓練可能ユーザ・インターフェース変換装置 |
Country Status (9)
Country | Link |
---|---|
US (2) | US5627977A (ja) |
EP (1) | EP0756726B1 (ja) |
JP (1) | JP3683586B2 (ja) |
CN (1) | CN1150488A (ja) |
AT (1) | ATE213074T1 (ja) |
AU (1) | AU2427195A (ja) |
CA (1) | CA2188139A1 (ja) |
DE (1) | DE69525336T2 (ja) |
WO (1) | WO1995028673A1 (ja) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1074137A (ja) * | 1996-08-30 | 1998-03-17 | Hitachi Ltd | グラフィックユーザーインターフェース変更システム |
US6084584A (en) * | 1996-10-01 | 2000-07-04 | Diamond Multimedia Systems, Inc. | Computer system supporting portable interactive graphics display tablet and communications systems |
US6166734A (en) * | 1996-10-01 | 2000-12-26 | Diamond Multimedia Systems, Inc. | Portable interactive graphics display tablet and communications system |
US6052120A (en) * | 1996-10-01 | 2000-04-18 | Diamond Multimedia Systems, Inc. | Method of operating a portable interactive graphics display tablet and communications systems |
US5798759A (en) * | 1996-12-31 | 1998-08-25 | International Business Machines Corporation | Method and apparatus for mobile device screen reformatting |
US6429402B1 (en) | 1997-01-24 | 2002-08-06 | The Regents Of The University Of California | Controlled laser production of elongated articles from particulates |
US5913072A (en) * | 1997-04-08 | 1999-06-15 | Wieringa; Fred | Image processing system in which image processing programs stored in a personal computer are selectively executed through user interface of a scanner |
US6677960B1 (en) * | 1997-05-07 | 2004-01-13 | Unisys Corporation | User assistance for heterogeneous data processing systems |
US6834388B1 (en) | 1998-03-13 | 2004-12-21 | Iconics, Inc. | Process control |
US6356287B1 (en) * | 1998-03-20 | 2002-03-12 | Nuvomedia, Inc. | Citation selection and routing feature for hand-held content display device |
US6331867B1 (en) * | 1998-03-20 | 2001-12-18 | Nuvomedia, Inc. | Electronic book with automated look-up of terms of within reference titles |
US6154214A (en) * | 1998-03-20 | 2000-11-28 | Nuvomedia, Inc. | Display orientation features for hand-held content display device |
US6181344B1 (en) * | 1998-03-20 | 2001-01-30 | Nuvomedia, Inc. | Drag-and-release method for configuring user-definable function key of hand-held computing device |
US6925595B1 (en) | 1998-08-05 | 2005-08-02 | Spyglass, Inc. | Method and system for content conversion of hypertext data using data mining |
US6504554B1 (en) * | 1998-09-01 | 2003-01-07 | Microsoft Corporation | Dynamic conversion of object-oriented programs to tag-based procedural code |
US6278449B1 (en) * | 1998-09-03 | 2001-08-21 | Sony Corporation | Apparatus and method for designating information to be retrieved over a computer network |
US6215498B1 (en) | 1998-09-10 | 2001-04-10 | Lionhearth Technologies, Inc. | Virtual command post |
EP1121626B1 (en) | 1998-10-16 | 2004-03-17 | Iconics, Inc. | Process control |
US7017116B2 (en) * | 1999-01-06 | 2006-03-21 | Iconics, Inc. | Graphical human-machine interface on a portable device |
EP1069500A1 (en) * | 1999-07-12 | 2001-01-17 | International Business Machines Corporation | Downloadable user-interface |
US6836780B1 (en) * | 1999-09-01 | 2004-12-28 | Jacada, Ltd. | Method and system for accessing data in legacy applications |
US6545690B1 (en) * | 1999-09-29 | 2003-04-08 | Lucent Technologies Inc. | Liaison interface |
JP3501038B2 (ja) * | 1999-10-06 | 2004-02-23 | 日本電気株式会社 | 携帯端末システム、これに用いる携帯端末 |
US6895558B1 (en) * | 2000-02-11 | 2005-05-17 | Microsoft Corporation | Multi-access mode electronic personal assistant |
US7054819B1 (en) * | 2000-02-11 | 2006-05-30 | Microsoft Corporation | Voice print access to computer resources |
US6842861B1 (en) * | 2000-03-24 | 2005-01-11 | Networks Associates Technology, Inc. | Method and system for detecting viruses on handheld computers |
US20040073617A1 (en) | 2000-06-19 | 2004-04-15 | Milliken Walter Clark | Hash-based systems and methods for detecting and preventing transmission of unwanted e-mail |
WO2002063470A1 (en) * | 2001-02-07 | 2002-08-15 | Orchid Systems, Inc. | System for and method of learning and automatically correcting business logic errors |
US20020107970A1 (en) * | 2001-02-07 | 2002-08-08 | David Wiegand | Method of and apparatus for remotely preparing a targeted procedures model for transforming a data stream |
US20020128802A1 (en) * | 2001-03-08 | 2002-09-12 | Lewis Rompala | System for and method of remotely validating a rule set |
US6965928B1 (en) * | 2001-03-09 | 2005-11-15 | Networks Associates Technology, Inc. | System and method for remote maintenance of handheld computers |
EP1368769A2 (de) * | 2001-03-14 | 2003-12-10 | AAA Edv Vertriebs AG | Datenverarbeitungsvorrichtung zur bereitstellung eines in gestalt einer graphikdatei vorliegenden warenkataloges |
WO2002077876A2 (en) * | 2001-03-23 | 2002-10-03 | Orchid Systems, Inc. | System for and method of automatically updating data in a host system based upon third party data |
US20020138570A1 (en) * | 2001-03-23 | 2002-09-26 | Neil Hickey | System for and method of automatically migrating data among multiple legacy applications and accessible storage formats |
US20020163536A1 (en) * | 2001-05-01 | 2002-11-07 | Orchid Systems, Inc. | System for and method of providing a new client interface to an existing application |
US8001490B2 (en) * | 2001-07-10 | 2011-08-16 | Nvidia International, Inc. | System, method and computer program product for a content publisher for wireless devices |
US20030048296A1 (en) * | 2001-09-12 | 2003-03-13 | Paul Cullen | Method & apparatus for enhancing the graphical user interface presented by an application |
US7249261B2 (en) * | 2001-10-16 | 2007-07-24 | Activcard Ireland Limited | Method for securely supporting password change |
US7421427B2 (en) * | 2001-10-22 | 2008-09-02 | Attachmate Corporation | Method and apparatus for allowing host application data to be accessed via standard database access techniques |
US7444320B1 (en) * | 2002-04-22 | 2008-10-28 | Cisco Technology, Inc. | System and method for configuring multiple ISCSI devices |
US20040249849A1 (en) * | 2003-06-05 | 2004-12-09 | Michael Mordkovich | Conversion system |
US7673245B2 (en) * | 2003-10-15 | 2010-03-02 | Sap Aktiengesellschaft | Converting user interface panels |
WO2005048537A1 (en) * | 2003-11-13 | 2005-05-26 | Koninklijke Philips Electronics, N.V. | Consistent user interface front end for remote user interfaces |
US20110157196A1 (en) * | 2005-08-16 | 2011-06-30 | Exent Technologies, Ltd. | Remote gaming features |
US7844442B2 (en) * | 2005-08-16 | 2010-11-30 | Exent Technologies, Ltd. | System and method for providing a remote user interface for an application executing on a computing device |
US20080134077A1 (en) * | 2006-12-05 | 2008-06-05 | Sap Ag | Chameleon graphic user interface |
US20110113368A1 (en) * | 2009-11-06 | 2011-05-12 | Santiago Carvajal | Audio/Visual Device Graphical User Interface |
CN102582357B (zh) * | 2012-02-01 | 2014-03-19 | 长春轨道客车股份有限公司 | 一种经济型镟修车轮 |
USD738900S1 (en) * | 2014-03-19 | 2015-09-15 | Wargaming.Net Llp | Display screen with animated graphical user interface |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5349678A (en) * | 1991-08-21 | 1994-09-20 | Norand Corporation | Versatile RF data capture system |
CA2020357A1 (en) * | 1989-06-07 | 1990-12-08 | Steven E. Koenck | Hand-held data capture system with interchangeable modules |
JPH0778782B2 (ja) * | 1989-07-19 | 1995-08-23 | インターナショナル・ビジネス・マシーンズ・コーポレーシヨン | 対話型コンピュータ・システムならびにその使用環境適合化装置および方法 |
US5241625A (en) * | 1990-11-27 | 1993-08-31 | Farallon Computing, Inc. | Screen image sharing among heterogeneous computers |
-
1994
- 1994-04-19 US US08/229,935 patent/US5627977A/en not_active Expired - Fee Related
-
1995
- 1995-04-18 CA CA002188139A patent/CA2188139A1/en not_active Abandoned
- 1995-04-18 AT AT95918286T patent/ATE213074T1/de active
- 1995-04-18 CN CN95193161A patent/CN1150488A/zh active Pending
- 1995-04-18 DE DE69525336T patent/DE69525336T2/de not_active Expired - Fee Related
- 1995-04-18 AU AU24271/95A patent/AU2427195A/en not_active Abandoned
- 1995-04-18 WO PCT/US1995/005009 patent/WO1995028673A1/en active IP Right Grant
- 1995-04-18 JP JP52718395A patent/JP3683586B2/ja not_active Expired - Fee Related
- 1995-04-18 EP EP95918286A patent/EP0756726B1/en not_active Expired - Lifetime
-
1997
- 1997-05-05 US US08/851,309 patent/US5889516A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10501639A (ja) | 1998-02-10 |
EP0756726B1 (en) | 2002-02-06 |
US5889516A (en) | 1999-03-30 |
WO1995028673A1 (en) | 1995-10-26 |
AU2427195A (en) | 1995-11-10 |
US5627977A (en) | 1997-05-06 |
ATE213074T1 (de) | 2002-02-15 |
CA2188139A1 (en) | 1995-10-26 |
CN1150488A (zh) | 1997-05-21 |
DE69525336T2 (de) | 2002-11-14 |
EP0756726A1 (en) | 1997-02-05 |
DE69525336D1 (de) | 2002-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3683586B2 (ja) | 訓練可能ユーザ・インターフェース変換装置 | |
WO1995028673A9 (en) | Trainable user interface translator | |
US7047498B2 (en) | System and method for dynamic assistance in software applications using behavior and host application models | |
US5228137A (en) | Method for controlling execution of host computer application programs through a second computer by establishing relevant parameters having variable time of occurrence and context | |
Alpert et al. | Deploying intelligent tutors on the web: An architecture and an example | |
US5553223A (en) | Method and system of selectively transmitting display formats and data between a host computer and an intelligent terminal | |
US5606702A (en) | Method for specifying user interfaces and programming system running a multiple user interface computer | |
US6928464B2 (en) | Systems and methods for unified remote control access | |
EP0564779A2 (en) | Data processing system, method and program for constructing HOST access tables for integration of telephony data with data processing systems | |
US6308042B1 (en) | Computer based training system | |
KR100502023B1 (ko) | 계산기 네트워크용 단말장치 및 조작이력 기록방법 | |
US20040268225A1 (en) | Method and system for controlling navigation of a graphical user interface | |
US5734871A (en) | Method for and apparatus for controlling the execution of host computer application programs through a second computer | |
JPH0962601A (ja) | 計算機ネットワークのシミュレータ装置 | |
US20050022159A1 (en) | System and method for creating a performance tool and a performance tool yield | |
CN101316201A (zh) | 多终端模式的脚本装置及数据处理方法和自动化测试系统 | |
US20030048296A1 (en) | Method & apparatus for enhancing the graphical user interface presented by an application | |
EP0578634A1 (en) | METHOD FOR DETERMINING THE USER INTERFACE AND PROGRAMMING SYSTEM FOR A MULTIPLE USER INTERFACE CALCULATION. | |
WO1997049018A1 (en) | Multi-tasking process control system and method | |
CA1267229A (en) | Reconfigurable automatic tasking system | |
CN117215661A (zh) | 一种事件处理的方法、装置以及存储介质 | |
EP0352908A2 (en) | Computing system and method used to provide instruction to a user for a plurality of computer applications | |
KR20000024496A (ko) | 캐릭터 육성을 이용한 네트워크 기반의 광고시스템 | |
US20060247911A1 (en) | Systems and methods for learning and mimicking the communications of intelligent electronic devices | |
Sharples | Human-computer interaction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20050426 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050526 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |