(57)【要約】【課題】ソースコード中にif文等を用いることなく、所定の分岐条件に基づいてコンピュータの処理を複数に振り分け可能で、メンテナンス負荷の増大を最小限に抑えつつ分岐ロジックの修正に柔軟に対応可能なシステムの実現。【解決手段】分岐条件の配列を構成する各要素の組合せと、実行されるべき処理内容との対応関係を規定する分岐パターンが複数定義された分岐ルールコードと、与えられた分岐条件を分岐ルールコードに適用して処理内容を特定する処理内容決定部12と、特定された処理を実行する処理実行部14とを備えたプログラム実行システム10。分岐ルールコードは、基本分岐ルールコード16と、これを継承する拡張分岐ルールコード18からなる。基本分岐ルールコード16には、条件値の組合せからなる拡張ポイントが設けられており、拡張分岐ルールコード18には、この拡張ポイントを特定するコードと、当該拡張ポイントに継ぎ足される差分の分岐パターンが定義されている。【選択図】図１
2008233943.tif 000002
【特許請求の範囲】
【請求項１】
分岐条件の配列を構成する各要素の組合せと、実行されるべき処理内容との対応関係を規定する分岐パターンが複数定義された分岐ルールコードと、
分岐条件が与えられた場合に、上記分岐ルールコードに従って処理内容を特定する処理内容決定手段と、
特定された処理を実行する処理実行手段とを備えたプログラム実行システムであって、
上記分岐ルールコードが、基本分岐ルールコードと、これを継承する拡張分岐ルールコードからなり、
上記基本分岐ルールコードには、条件値の組合せからなる拡張ポイントが設けられており、
上記拡張分岐ルールコードには、基本分岐ルールコードにおける拡張ポイントを特定するコードと、
当該拡張ポイントに継ぎ足される差分の分岐パターンが定義されていることを特徴とするプログラム実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はプログラム実行システムに係り、特に、if文やswitch文を用いることなく、必要な分岐処理を実行可能なシステムに関する。
【背景技術】
【０００２】
これまで、コンピュータに複雑な分岐処理を実行させるためには、いわゆるif文やelse if文、switch文を用いてソースコードを記述する必要があった。
図７(a)はその一例を示すものであり、以下の分岐処理が規定されている。
(1) 分岐条件であるX, Yの値がそれぞれ1, 20である場合には、processAの処理を特定する。
(2) 分岐条件であるXの値が１で、Yの値が30である場合には、processBの処理を特定する。
(3) 分岐条件であるXの値が１で、Yの値が20または30以外である場合には、processCの処理を特定する。
(4) 分岐条件であるXの値が１以外である場合には、processDの処理を特定する。
【非特許文献１】C#によるプログラム入門／条件分岐  ［平成１９年３月１日検索］  インターネットURL:http://ufcpp.net/studY/csharp/st_branch.html
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のようにif文やif else文等を用いることにより、分岐条件に応じてコンピュータの処理を切り替えることが可能となるが、その一方で分岐条件が上記X, Yのように複数の値の組み合わせで与えられる場合（複合条件）や、分岐の包含関係が繰り返されてネスト構造が深化する場合などには、分岐構造の全体像を把握することが困難となり、プログラムの保守作業の非効率化やプログラムの品質低下の要因となっていた。
【０００４】
また、分岐条件を拡張する必要が生じた場合には、ソースコードをコピー＆ペーストして必要箇所にコードを追加する必要が生じるが、これが保守性の低下を招いていた。
例えば、図７(a)のソースコードで規定された分岐ロジックに対し、分岐条件の要素数をX, Y, Zの３つに増やし、X, Y, Zの値がそれぞれ1, 20, 100の場合にはProcessαの処理が特定され、X, Yが1, 20でZが 100以外の場合にはProcessβの処理が特定されるように修正を施す必要が生じた場合には、図７(b)のようにソースコードを書き直すことになる。この場合、(a)のコードをコピーして変更のない部分を活かすとしても、全体的な書き直しになるためバグが生じ易いといえる。
【０００５】
また、コピー＆ペーストをしたことにより、元のプログラムとは別個独立のプログラムが新たに発生し、保守対象の増加を招くこととなる。この結果、例えば元のプログラムのコードについて修正を加える場合には、これに基づいて派生した全プログラムに関して該当箇所を逐一修正する必要が生じる。
【０００６】
この発明は、コンピュータの分岐処理に纏わる従来の上記問題を解決するために案出されたものであり、ソースコード中にif文やswitch文等の分岐制御文を用ることなく、所定の分岐条件に基づいてコンピュータの処理を複数に振り分け可能であり、またメンテナンス負荷の増大を最小限に抑えつつ分岐ロジックの修正に柔軟に対応可能なシステムを実現することを目的としている。
【課題を解決するための手段】
【０００７】
上記の目的を達成するため、この発明に係るプログラム実行システムは、分岐条件の配列を構成する各要素の組合せと、実行されるべき処理内容との対応関係を規定する分岐パターンが複数定義された分岐ルールコードと、分岐条件が与えられた場合に、上記分岐ルールコードに従って処理内容を特定する処理内容決定手段と、特定された処理を実行する処理実行手段とを備えたプログラム実行システムであって、上記分岐ルールコードが、基本分岐ルールコードと、これを継承する拡張分岐ルールコードからなり、上記基本分岐ルールコードには、条件値の組合せからなる拡張ポイントが設けられており、上記拡張分岐ルールコードには、基本分岐ルールコードにおける拡張ポイントを特定するコードと、当該拡張ポイントに継ぎ足される差分の分岐パターンが定義されていることを特徴としている。
【発明の効果】
【０００８】
この発明に係るプログラム実行システムにあっては、基本分岐ルールコード及び拡張分岐ルールコードに基づいて分岐ロジックの全体像が形成され、処理内容決定部が分岐条件の配列と各分岐パターンとを比較して具体的な処理を振り分ける仕組みを備えているため、従来のようにif文やelse if文、switch文をコーディングすることなく、コンピュータの処理をｎ方向に分岐させることが可能となる。
この結果、基本分岐ルールコード及び拡張分岐ルールコードで規定された分岐パターンの記述に着目することにより、分岐ロジックの全体構造を容易に把握可能となり、プログラムの保守性を著しく向上させることができる。
【０００９】
しかも、子クラスである拡張分岐ルールコードには、親クラスである基本分岐ルールコードとの差分のみが記述されており、プログラム実行時に基本分岐ルールコード上の必要箇所にピンポイントで差分の分岐パターンが接ぎ木される仕組みを備えているため、基本分岐ルールコード自体に一切の変更を加えることなく、その分岐ロジックを修正することができる。
この結果、基本分岐ルールコードに修正を施した場合でも、これを継承する拡張分岐ルールコードを個別に手直しすることなく、当該修正を全拡張分岐ルールコードに反映させることが可能となり、プログラムの一元管理が可能となる。
【発明を実施するための最良の形態】
【００１０】
図１は、この発明に係るプログラム実行システム10の機能構成を示すブロック図であり、処理内容決定部12と、処理実行部14と、基本分岐ルールコード16と、拡張分岐ルールコード18とを備えている。
上記の処理内容決定部12及び処理実行部14は、コンピュータのCPUが、専用のプログラムに従って必要な処理を実行することによって実現される。
また、上記基本分岐ルールコード16及び拡張分岐ルールコード18は、コンピュータのハードディスクに格納されている。
【００１１】
図２は、基本分岐ルールコード16のソースコードの一例を示すものであり、Java（登録商標）言語によって記述されている。
この基本分岐ルールコード16には、大略以下の内容が規定されている。
(1) 分岐条件の配列に基づいて、分岐の木構造（DecisionTree）を生成する。
(2) 分岐条件値の組合せを、拡張ポイントとして保持する。
(3) 分岐条件は、X, Yの２つの値の組合せよりなる。
(4) 分岐条件X, Yの値がそれぞれ1, 20のとき、ProcessAの処理を特定するオブジェクト（分岐パターン）が木構造に追加される。
(5) 分岐条件X, Yの値がそれぞれ1, 30のとき、ProcessBの処理を特定するオブジェクト（分岐パターン）が木構造に追加される。
(6) 分岐条件配列X, Yの中、Xの値が1で、Yの値が20または30以外のとき、ProcessCの処理を特定するオブジェクト（分岐パターン）が木構造に追加される。
(7) 分岐条件配列X, Yの中、Xの値が1でないときは、Yの値を問わずProcessDの処理を特定するオブジェクト（分岐パターン）が木構造に追加される。
【００１２】
図３は、この基本分岐ルールコード16に記述された各分岐パターンから導かれる分岐ロジックを木構造で図示したものであり、Xの値が１か否かで２方向に分岐する第１の分岐部と、Yの値が20か、30か、それら以外かで３方向に分岐する第２の分岐部とが、基本分岐ルールコード16に設定されていることを示している。
【００１３】
図４は、拡張分岐ルールコード18のソースコードの一例を示すものであり、Java（登録商標）言語によって大略以下の内容が記述されている。
(1) 基本分岐ルールを継承して分岐ルールの木構造を生成する。
(2) 分岐条件は、X, Y, Zの３つの値の組合せよりなる。
(3) Zの値が100のとき、Processαの処理を特定するオブジェクト（分岐パターン）が木構造に追加される。
(4) Zの値が100以外のとき、Processβの処理を特定するオブジェクト（分岐パターン）が木構造に追加される。
(5) 上記(3)(4) のオブジェクトは、基本分岐ルールコード16中のX＝1, Y＝20の状態の拡張ポイントに接ぎ木（setSubTree）される。
【００１４】
図５は、この拡張分岐ルールコード18に規定された分岐ロジックを木構造で図示したものであり、基本分岐ルールコード16の木構造を元にしつつも、X＝1, Y＝20の状態を備えた拡張ポイントに、processAの代わりに、Zの値が100か否かによって処理を振り分ける第３の分岐部が追加されている。
【００１５】
以下、図６のフローチャートに従い、このシステム10の処理手順を説明する。
まず事前に、拡張分岐ルールコード18、基本分岐ルールコード16がメモリにロードされると共に、処理内容決定部12及び処理実行部14の領域がメモリ上に確保される（Ｓ10〜Ｓ14）。このＳ10〜Ｓ14の処理が一旦実行された後は、その状態がメモリ上にキャッシュされるため、以下の処理が繰り返される度に再実行される必要はない。
【００１６】
つぎに、処理内容決定部12、拡張分岐ルールコード18、基本分岐ルールコード16がメモリから取り出される（Ｓ16、Ｓ18）。
つぎに、キーボード等の入力装置を介して分岐条件X, Y, Zが入力されると（Ｓ20）、「Object[]」の領域がメモリ上に確保され、上記の条件値が代入される（Ｓ22）。
つぎに処理内容決定部12は、Object[]に格納された条件値を、基本分岐ルールコード16及び拡張分岐ルールコード18に基づいて形成される分岐ロジックに当てはめ、実行すべき処理プログラムを特定する（Ｓ24）。
【００１７】
ここで例えば、「1, 20, 100」が分岐条件として与えられると、処理内容決定部12はProcessαを処理内容として特定する。この際、上記Object[]内においては、X, Y, Zそれぞれの配列における順序が保持されているため、処理内容決定部12は「1, 20, 100」を「X=1, Y=20, Z=100」と正しく認識することができる。
以上の結果、処理実行部14がメモリから取り出され（Ｓ26）、Processαに対応した処理を実行する（Ｓ28）。
【００１８】
また、分岐条件として「1, 20, 5」が与えられた場合、処理内容決定部12はProcessβを処理内容として特定し、処理実行部14によってProcessβに対応した処理が実行される。
あるいは、分岐条件として「5, 10, 100」が与えられた場合、処理内容決定部12はProcessDを処理内容として特定し、処理実行部14によってProcessDに対応した処理が実行される。
【００１９】
上記のように、このプログラム実行システム10によれば、基本分岐ルールコード16及び拡張分岐ルールコード18に基づいて分岐ロジックの全体構造が形成され、処理内容決定部12が分岐条件値の配列を分岐ロジックに含まれる各分岐パターンに当てはめて具体的な処理を特定する仕組みを備えているため、従来のようにif文やelse if文、switch文をコーディングすることなく、コンピュータの処理をｎ方向に分岐させることが可能となる。
この結果、基本分岐ルールコード16及び拡張分岐ルールコード18における分岐パターンの記述に着目することにより、分岐ロジックの全体構造を容易に把握可能となり、プログラムの保守性を著しく向上させることができる。
【００２０】
しかも、子クラスである拡張分岐ルールコード18には、親クラスである基本分岐ルールコード16との差分のみが記述されており、プログラム実行時に基本分岐ルールコード16上の必要箇所にピンポイントで差分の分岐パターンが接ぎ木される仕組みを備えているため、基本分岐ルールコード16自体に一切の変更を加えることなく、その分岐ロジックを修正することができる。
この結果、基本分岐ルールコード16に修正を施した場合でも、これを継承する拡張分岐ルールコード18を個別に手直しすることなく、当該修正を全拡張分岐ルールコード18に反映させることが可能となり、プログラムの一元管理が可能となる。
【００２１】
従来はif文を使って分岐処理を記述していたため、オブジェクト指向言語の継承機能を利用しても特定の分岐点を部分的に修正することはできず、メソッド（関数）単位でコピー＆ペーストを介して再利用するほかなかった。
この結果、プログラムコードの実体が増殖し、修正対象が拡大する結果、保守管理が困難化していた。
【００２２】
これに対し、このシステム10の場合には、各オブジェクトに含まれる要素の組合せを特定することによって基本分岐ルールコード16上の拡張ポイントを指定でき、また分岐パターンがオブジェクトで構成されており、拡張分岐ルールコード18においてオブジェクト単位で差し替え分を指定可能であるため、カット＆ペーストを用いることなく、差分のみを拡張分岐ルールコード18において更新可能となっている。
【図面の簡単な説明】
【００２３】
【図１】この発明に係るプログラム実行システムの機能構成を示すブロック図である。
【図２】基本分岐ルールコードの一例を示す説明図である。
【図３】基本分岐ルールコードの分岐ロジックを木構造で表現した図である。
【図４】拡張分岐ルールコードの一例を示す説明図である。
【図５】拡張分岐ルールコードの分岐ロジックを木構造で表現した図である。
【図６】このシステムの処理手順を示すフローチャートである。
【図７】従来のソースコードの一例を示す説明図である。
【符号の説明】
【００２４】
10 プログラム実行システム
12 処理内容決定部
14 処理実行部
16 基本分岐ルールコード
18 拡張分岐ルールコード
【図１】
2008233943.tif 000003
【図２】
2008233943.tif 000004
【図３】
2008233943.tif 000005
【図４】
2008233943.tif 000006
【図５】
2008233943.tif 000007
【図６】
2008233943.tif 000008
【図７】
2008233943.tif 000009