JP2005173645A - プログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体 - Google Patents

プログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体 Download PDF

Info

Publication number
JP2005173645A
JP2005173645A JP2003408096A JP2003408096A JP2005173645A JP 2005173645 A JP2005173645 A JP 2005173645A JP 2003408096 A JP2003408096 A JP 2003408096A JP 2003408096 A JP2003408096 A JP 2003408096A JP 2005173645 A JP2005173645 A JP 2005173645A
Authority
JP
Japan
Prior art keywords
event
events
parallel execution
unit
execution unit
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
JP2003408096A
Other languages
English (en)
Inventor
Toshiyuki Fujikura
俊幸 藤倉
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.)
IBM Japan Ltd
Original Assignee
IBM Japan 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 IBM Japan Ltd filed Critical IBM Japan Ltd
Priority to JP2003408096A priority Critical patent/JP2005173645A/ja
Priority to US11/001,972 priority patent/US7516481B2/en
Publication of JP2005173645A publication Critical patent/JP2005173645A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques

Landscapes

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

Abstract

【課題】開発対象のプログラムが有する並列性を抽出し、適切に並列実行単位に分割するプログラム開発支援装置を提供する。
【解決手段】 情報処理装置においてそれぞれ実行される複数の事象をグループ化して、互いに並列に実行される複数の並列実行単位に分割するプログラム開発支援装置であって、複数の事象のそれぞれを頂点とし、複数の事象のうち2つの事象の間における実行順序の制約を有向枝として表現した有向グラフデータを取得する有向グラフ取得部と、複数の事象のうち少なくとも2つの事象の組であって、当該事象の組に属する一の事象から有向枝を順方向へたどっていくことにより当該事象の組に属する他の事象へ到達可能でない事象の組である反鎖部分集合を、有向グラフデータから抽出する反鎖部分集合抽出部と、反鎖部分集合に属する複数の事象を、互いに異なる並列実行単位に割り当てる並列実行単位割当部とを備える。
【選択図】図1

Description

本発明は、プログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体に関する。特に本発明は、開発対象のプログラムの並列化を支援するプログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体に関する。
近年、プログラム開発の効率化を目的として、プログラムを上位概念化したモデルを用いて開発を進める開発環境が実現されている。このような開発環境においては、例えばCSP(Communicating Sequential Process)理論に基づいてプログラムのモデルを作成する(非特許文献1)。
例えば機器制御を行う組込み用コンピュータプログラム等の、並列実行を行うコンピュータプログラムを開発する場合には、コンピュータプログラム内の各処理を、プロセス、タスク、又はアクティブオブジェクト等の並列実行単位にどのように割り付けるかが重要である。
従来、コンピュータプログラムの作成者は、経験と勘に頼って並列実行単位の割り付けを行っていた。このため、並列化の効率を重視せず、プログラムの分かりやすさを重視して機能毎に並列実行単位に分割するのが一般的であった。
例えば、入力デバイスから入力されたコマンドを解析し、コマンドに対応する処理を行って処理結果を出力するプログラムを作成する場合、入力処理を行うモジュール、コマンドを解析するモジュール、コマンドに対応する処理を行うモジュール、及び、処理結果を出力するモジュールというように、プログラムの機能毎に分割するのが一般的であった。
C.A.R. Hoare、"Communicating Sequential Processes"、Communications of the ACM 21(8)、1978年8月 R.P. Dilworth、"A decomposition theorem for partially ordered sets"、Ann. of Mathematics 51、p.161−166、1950年
開発対象のコンピュータプログラムを、当該プログラムに含まれる並列性以上の並列実行単位に分割した場合、本来不要な同期等をプログラム中で行う必要が生じ、プログラムが複雑化する。一方、当該プログラムに含まれる並列性より並列実行単位の数が少ない場合、本来並列に実行可能な処理が逐次実行されてしまい、プログラムの実行効率が低下してしまう。
そこで本発明は、上記の課題を解決することのできるプログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
本発明の第1の形態によると、情報処理装置においてそれぞれ実行される複数の事象をグループ化して、互いに並列に実行される複数の並列実行単位に分割するプログラム開発支援装置であって、前記複数の事象のそれぞれを頂点とし、前記複数の事象のうち2つの前記事象の間における実行順序の制約を有向枝として表現した有向グラフデータを取得する有向グラフ取得部と、各事象から前記有向枝を順方向へたどっていくことにより他のいずれの前記事象にも到達可能でない関係を有する前記事象の組である反鎖部分集合を、前記有向グラフデータから抽出する反鎖部分集合抽出部と、前記反鎖部分集合に属する複数の事象を、互いに異なる前記並列実行単位に割り当てる並列実行単位割当部とを備えるプログラム開発支援装置、及び、当該プログラム開発支援装置に関するプログラム開発支援方法、プログラム、及び記録媒体を提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
本発明によれば、開発対象のプログラムが有する並列性を抽出し、適切に並列実行単位に分割することができる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施形態に係るプログラム開発支援装置10の構成を示す。プログラム開発支援装置10は、開発対象のプログラムを上位概念化したモデルを用いて開発を進めることを可能とし、プログラム開発を支援する。より具体的にはプログラム開発支援装置10は、プログラムの開発者により入力されたプログラムのモデルに記述された、情報処理装置においてそれぞれ実行される複数の事象をグループ化して、互いに並列に実行される複数の並列実行単位に適切に分割する。そしてプログラム開発支援装置10は、各並列実行単位を実行する実行命令列を生成する。
このような情報処理装置は、例えば工場内に配置された各種のFA機器を制御する制御装置や、乗り物内に設けられた各種の機器を制御する制御装置や、コンピュータの入出力デバイス等の制御を行う組込み用コンピュータ等であってよく、プログラム開発支援装置は、このような情報処理装置がFA機器等の制御や入出力デバイス等の制御を行うためのプログラムの開発を支援する。
プログラム開発支援装置10は、有向グラフ取得部95と、処理DB(データベース)110と、グラフDB120と、事象分割部122と、有向枝置換部125と、選択事象置換部130と、反鎖部分集合抽出部135と、並列実行単位割当部140と、プロセス式生成部145と、初期化処理挿入部150と、状態遷移モデル生成部155と、実行命令列生成部160とを備える。
有向グラフ取得部95は、開発者からプログラムのモデルを入力し、入力されたモデルをグラフ構造のデータに変換する。より具体的には、有向グラフ取得部95は、入力されたモデルから、複数の事象及びこれらの実行順序を示す有向グラフデータを取得する。
有向グラフ取得部95は、ユーザインターフェイス部100と、モデルDB105と、モデル変換部115とを有する。ユーザインターフェイス部100は、開発者との間における入出力処理を行う。より具体的には、ユーザインターフェイス部100は、開発者からプログラムのモデルを入力し、モデルDB105へ格納する。このモデルは、例えばUML(Unified Modeling Language)におけるアクティビティ図やシーケンス図等であってよく、情報処理装置における実行の単位となる命令群又は関数等を含む複数の事象の順序制約や順序仕様を記述したものである。ここで、順序制約とは、プログラムのモデルが構造上有する事象の実行順序であり、順序仕様とは、開発者が指定した処理の実行順序を示す。
また、ユーザインターフェイス部100は、モデルに記述された各事象の処理内容を入力し、事象を識別する識別情報及び当該事象の処理内容を対応付けて処理DB110へ格納する。また、ユーザインターフェイス部100は、複数の事象を複数の並列実行単位に割り当てる方法が2種類以上ある場合に、いずれかの割当方法を開発者に選択させる。
モデル変換部115は、モデルDB105へ格納されたモデルから、複数の事象の順序制約及び順序仕様に基づいて、有向グラフデータを取得する。この有向グラフデータは、プログラムに含まれる複数の事象のそれぞれを頂点とし、複数の事象のうち2つの事象の間における実行順序の制約、すなわち順序制約及び順序仕様に基づく制約、を有向枝として表現したデータ構造である。そして、モデル変換部115は、モデルから取得した有向グラフデータをグラフDB120へ格納する。
事象分割部122は、グラフDB120に格納された有向グラフデータが循環経路を含む場合に、循環経路上の事象を2つの事象に分割する。有向枝置換部125は、事象分割部122による分割前の事象から他の事象へ接続される有向枝を分割後の一方の事象に接続し、分割前の事象に接続される有向枝を、分割後の他方の事象に接続することにより、有向グラフデータ中の循環経路を循環しない経路に置換する。選択事象置換部130は、有向グラフデータが選択的に実行される2以上の事象を含む場合に、これらの事象をまとめて1つの事象に置換する。また、いずれの事象が選択的に実行されたかに応じて異なる事象が実行される場合に、選択的に実行される事象に対応して実行される事象の組をまとめて1つの事象に置換する。これにより、事象間の相互依存を解消し、並列実行単位を適切に抽出可能とする。
反鎖部分集合抽出部135は、グラフDB120に格納され、事象分割部122、有向枝置換部125、及び選択事象置換部130により変換された有向グラフデータから、並列に実行可能な事象の組を抽出する。並列実行単位割当部140は、反鎖部分集合抽出部135により抽出された並列に実行可能な事象の組に属する各事象を、互いに異なる並列実行単位に割り当てる。次に、並列実行単位割当部140は、並列に実行可能な事象の組に属さない各事象を、並列に実行可能な事象の組に属する各事象との間における実行順序の制約に基づいて、いずれかの並列実行単位に割り当てていく。そして、並列実行単位割当部140は、複数の事象を複数の並列実行単位に割り当てる方法が2種類以上ある場合、これらの割り当て方法をユーザインターフェイス部100を介して開発者に表示し、開発者により選択された割当方法にしたがって並列実行単位の割り当てを決定する。
プロセス式生成部145は、複数の並列実行単位のそれぞれについて、当該並列実行単位に割り当てられた各事象の実行順序の関係を示すプロセス式を生成する(S260)。ここでプロセス式生成部145は、このプロセス式として、非特許文献1におけるCSPプロセスを定義するCSPプロセス式を生成してよい。初期化処理挿入部150は、プロセス式に含まれる、実行前に初期化処理を行うべき事象について、当該事象の実行前に初期化処理を行うようにプロセス式に初期化処理を挿入する。
状態遷移モデル生成部155は、複数の並列実行単位のそれぞれについて、当該並列実行単位のプロセス式を初期化処理挿入部150から受け取り、当該並列実行単位の状態遷移モデルを生成する。実行命令列生成部160は、複数の並列実行単位のそれぞれについて、当該並列実行単位のプロセス式及び状態遷移モデルを状態遷移モデル生成部155から受け取り、プロセス式及び状態遷移モデルの少なくとも1つと、処理DB110に格納された各事象の処理内容とに基づいて、当該並列実行単位の実行命令列を生成する。
より具体的には、実行命令列生成部160は、プロセス式及び状態遷移モデルの少なくとも1つに基づいて、並列実行単位の状態毎に実行可能な事象を特定する。そして、実行命令列生成部160は、状態毎に実行可能な事象の識別情報を検索キーとして処理DB110から当該事象の処理内容を検索して、当該状態において当該処理内容を実行する実行命令列を生成する。
図2は、本実施形態に係るプログラム開発支援装置10の動作フローを示す。
まず、ユーザインターフェイス部100は、プログラムのモデルを入力し、モデルDB105に格納する。また、ユーザインターフェイス部100は、当該モデルに含まれる複数の事象のそれぞれの処理内容を入力し、処理DB110に格納する(ステップS200)。次に、モデル変換部115は、モデルDB105へ格納されたモデルから有向グラフデータを取得し、グラフDB120へ格納する(S210)。ここで、循環経路を有しない反順序構造をとり、かつ、選択的に実行される2以上の事象を含まない場合に、この有向グラフデータをハッセ図と呼ぶ。
次に、グラフDB120に格納された有向グラフデータがハッセ図となっていない場合、有向グラフデータを変形して、循環経路を有しない半順序構造をとり、かつ、選択的に実行される2以上の事象を含む拡張ハッセ図に変換する。
すなわち、選択事象置換部130は、グラフDB120に格納された有向グラフデータを探索し、有向グラフデータが有する複数の事象が、選択的に実行される2以上の選択事象と、2以上の選択事象のそれぞれに対応してそれぞれ設けられ、対応する選択事象が実行された場合に実行される2以上の対応事象とを含んでいるか否かを判定する。有向グラフデータが有する複数の事象が、選択的に実行される2以上の選択事象と、2以上の選択事象のそれぞれに対応してそれぞれ設けられ、対応する選択事象が実行された場合に実行される2以上の対応事象とを含んでいる場合、選択事象置換部130は、有向グラフデータにおける2以上の選択事象を1つの事象に置換し、2以上の対応事象を1つの事象に置換する(S220)。より具体的には、選択事象置換部130は、2以上の選択事象を置換すべき1つの事象を有向グラフデータに追加し、いずれかの選択事象を始点又は終点とする有向枝を、置換した事象を始点又は終点とする有向枝となるように有向枝の始点又は終点の事象を識別する情報を書き換える。同様に、選択事象置換部130は、2以上の対応事象を置換すべき1つの事象を有向グラフデータに追加し、いずれかの対応事象を始点又は終点とする有向枝を、置換した事象を始点又は終点とする有向枝となるように有向枝の始点又は終点の事象を識別する情報を書き換える。これにより、選択事象置換部130は、有向グラフデータを、選択的に実行される2以上の事象を含まない構造に変換することができる。
次に、事象分割部122は、有向グラフデータに循環経路が存在する場合に、当該循環経路を循環しない経路に変換するべく循環経路の開始位置の事象を複製して循環経路の終了位置の事象とし、循環経路の終了位置から開始位置へ戻る経路を切断する(S230)。より具体的には、事象分割部122は、複数の事象のうち、情報処理装置において繰り返し実行される事象について、当該事象を第1分割事象及び第2分割事象に分割する。そして、有向枝置換部125は、有向グラフデータにおける当該事象から有向枝を順方向へたどっていくことにより当該事象へ到達する循環経路における、当該事象を始点とする有向枝を第1分割事象を始点とする有向枝に置換し、当該事象を終点とする有向枝を第2分割事象を終点とする有向枝に置換する。これにより、事象分割部122及び有向枝置換部125は、循環経路を、第1分割事象を始点とし第2分割事象に至る循環しない経路に置換することができる。
グラフDB120に格納された有向グラフデータがハッセ図となっていない場合、プログラム開発支援装置10は、上記のS220及びS230に示した手順により、当該有向グラフデータを拡張ハッセ図に変換することができる。
次に、反鎖部分集合抽出部135は、ハッセ図又は拡張ハッセ図を示す有向グラフデータから、並列に実行可能な事象の組を抽出する(S240)。ここで、2つの事象は、一方の事象から有向枝を順方向にたどっていくことにより、直接又は1以上の事象を経由して他方の事象へ到達可能な場合に、この2つの事象の間に実行順序の制約が存在し、並列に実行することができない。このような関係を有する事象の組、すなわち、各事象から有向枝を順方向へたどっていくことにより他のいずれの事象にも到達可能でない関係を有するような事象の組を、反鎖部分集合と呼ぶ。反鎖部分集合抽出部135は、反鎖部分集合を有向グラフデータから抽出することにより、並列に実行可能な事象の組を抽出することができる。
S240の処理において、反鎖部分集合抽出部135は、有向グラフデータから抽出可能な複数の反鎖部分集合のうち当該反鎖部分集合に属する事象の数が最大である反鎖部分集合を、有向グラフデータから抽出する。これにより、反鎖部分集合抽出部135は、開発対象のプログラムが有する並列性を最大限に抽出することができる。
なお、S220の処理において、選択事象置換部130により2以上の選択事象及び2以上の対応事象がそれぞれ1つの事象に置換されている場合、反鎖部分集合抽出部135は、2以上の選択事象及び2以上の対応事象がそれぞれ1つの事象に置換された有向グラフデータから反鎖部分集合を抽出する。同様に、S230の処理において、事象分割部122及び有向枝置換部125により循環経路を有する有向グラフデータが循環経路を有しない有向グラフデータに変換されている場合、反鎖部分集合抽出部135は、循環経路を有しない有向グラフデータから反鎖部分集合を抽出する。
次に、並列実行単位割当部140は、反鎖部分集合に属する複数の事象を、互いに異なる並列実行単位に割り当てる。本実施形態に係る並列実行単位割当部140は、反鎖部分集合に属する複数の事象を、反鎖部分集合に属する事象の数と同数の並列実行単位に割り当てる(S250)。これにより並列実行単位割当部140は、開発対象のプログラムが有する並列性を最大限に活かすことができるように複数の並列実行単位を割り当てることができる。
更に、並列実行単位割当部140は、反鎖部分集合に属する事象のそれぞれについて、当該事象から有向枝を順方向及び逆方向の少なくとも一方へたどっていくことにより順次到達可能な事象を、当該事象と同一の並列実行単位に割り当てる。この際、並列実行単位割当部140は、反鎖部分集合に属する事象から到達可能な事象が他の並列実行単位に割り当てられていないことを条件として当該並列実行単位に割り当てる。これにより並列実行単位割当部140は、反鎖部分集合に属する事象から到達した事象が他の並列実行単位に割り当てられている場合に、当該事象から先に有向枝をたどるのを中止し、当該事象より反鎖部分集合に属する事象により近い事象のみを当該並列実行単位に割り当てる。これにより並列実行単位割当部140は、反鎖部分集合に属する事象に対して実行順序の制約を有する事象を同一の並列実行単位に割り当てることができる。ここで、並列実行単位割当部140は、非特許文献2に記載された最大マッチング検索アルゴリズムを用いて複数の事象を最小鎖分割し、この分割を並列実行単位の分割として用いてもよい。
以上において、並列実行単位割当部140は、事象分割部122により循環経路上の1つの事象から分割された第1分割事象及び第2分割事象を同一の並列実行単位に割り当てる。これにより、同一の処理を行うべき2つの分割事象を同一の並列実行単位に割り当てて、当該並列実行単位により処理させることができる。
次に、プロセス式生成部145は、並列実行単位毎に、当該並列実行単位に割り当てられた各事象間の有向枝により指定される実行順序、及び、他の並列実行単位に割り当てられた事象を始点とし、当該並列実行単位に割り当てられた事象を終点とする有向枝により指定される実行順序に基づいて、当該並列実行単位に割り当てられた各事象の実行順序を示すプロセス式を生成する(S260)。これによりプロセス式生成部145は、ハッセ図又は拡張ハッセ図の各経路をプロセス式として記述する。
次に、初期化処理挿入部150は、実行前に初期化処理を行うべき事象の実行前に当該事象の初期化処理を行うようにプロセス式に初期化処理を挿入する(S270)。より具体的には、初期化処理挿入部150は、当該事象を終点として接続されるいずれかの有向枝の始点に位置する事象の実行後に当該初期化処理を行わせるようにプロセス式を変更する。これにより、初期化処理挿入部150は、プロセス式における、当該一の事象の実行前に実行されるべきいずれか1つの事象と当該一の事象の間に位置する有向枝に対応する部分のみを変更して、当該一の事象の初期化処理を挿入することができる。
次に、状態遷移モデル生成部155は、複数の並列実行単位のそれぞれについて、当該並列実行単位の状態遷移モデルをプロセス式に基づいて生成する(S280)。ここで、並列実行単位の状態遷移モデルは、当該並列実行単位に属する事象、又は、有向枝により当該並列実行単位に属する事象に接続される、当該並列実行単位に属さない事象の各々が実行されたか否かを特定する複数の状態と、当該複数の状態間の遷移条件とを含む。また、状態遷移モデル生成部155は、生成されたプロセス式及び状態遷移モデルに基づいて、プログラムにデッドロック又はライブロックが発生しないかどうかを検証してもよい。
なお、状態遷移モデル生成部155は、少なくとも1つの並列実行単位の全部又は一部について、当該部分の状態遷移モデルをユーザインターフェイス部100を介して開発者から入力し、当該状態遷移モデルを状態遷移モデル生成部155が生成した状態遷移モデルの全部又は一部として組み込んでもよい。
次に、実行命令列生成部160は、複数の並列実行単位のそれぞれについて、当該並列実行単位のプロセス式及び状態遷移モデルに基づいて、当該並列実行単位の実行命令列を生成する(S290)。ここで、並列実行単位の実行命令列は、当該並列実行単位に属する事象に有向枝により接続される、当該並列実行単位に属さない事象の実行結果を入力として、当該並列実行単位に属する事象に対応する処理を情報処理装置に実行させると共に、状態遷移モデルに基づく状態遷移を情報処理装置に行わせる命令列である。
ここで実行命令列生成部160は、実行前に初期化処理を行うべき一の事象については、当該一の事象を終点とするいずれかの有向枝の始点に接続された事象が実行されたことを条件として、当該一の事象の初期化処理を行わせる実効命令列を生成する。
以上に示したプログラム開発支援装置10によれば、開発者により入力されたプログラムのモデルから、当該プログラムに含まれる複数の事象の実行順序関係を示すハッセ図又は拡張ハッセ図を生成し、ハッセ図又は拡張ハッセ図に基づいて複数の事象を複数の並列実行単位に適切に割り当てることができる。そして、プログラム開発支援装置10は、各並列実行単位のプロセス式及び状態遷移モデルを生成し、これらに基づいて各並列実行単位の実行命令列を生成することができる。
図3は、本実施形態に係るプログラム開発支援装置10による開発対象システム290の一例を示す。
開発対象システム290は、供給部300、ハンドA310、ターンテーブル320、検査機330、ハンドB340、パス容器350、及びゴミ容器360を備える。供給部300は、製品を供給する。ハンドA310は、供給部300により供給された製品をターンテーブル320上の「set1」の位置に移動させる。ターンテーブル320は、ターンテーブルの回転部分を回転させて、「set1」の位置に載置された製品を「set2」の位置に移動させる。検査機330は、「set2」の位置に移動された製品を検査する。ハンドB340は、検査機330による検査の結果正常と判定された製品をパス容器350に移動し、異常と判定された製品をゴミ容器360に移動する。
以下、上記の開発対象システム290を制御する情報処理装置のプログラムを開発する場合を例として、プログラム開発支援装置10の動作を示す。
図4は、本実施形態に係る開発対象システム290の各装置の動作記述の一例を示す。供給部300、ハンドA310、ターンテーブル320、検査機330、及びハンドB340の各装置の動作を記述すると、図4に示す動作記述が得られる。
供給部300は、製品を供給(supply)し、供給した製品がハンドA310により取り上げられる(pickup1)と次の製品を供給する。ハンドA310は、供給部300から製品を取り上げて、ターンテーブル320に載置する(set1)。ターンテーブル320は、製品がターンテーブル320に載置されると(set1)、回転し(rotate)、「set2」の位置に製品を移動する。ここで、連続して製品を検査する場合、ターンテーブル320は、検査機330による検査(scan)を終え、製品がハンドB340により取り上げられた(pickup2)後に、回転を行う。
検査機330は、製品が「set2」の位置に移動されると製品を検査し、正常(OK)又は異常(NG)を判定して(decision)、判定結果を出力する。ここで、「set2」の位置に製品が載置されていない場合、判定結果として「None」を出力する。次に、ハンドB340は、判定結果が「OK」又は「NG」の場合に製品を取り上げて、判定結果に応じてパス容器350(pass)又はゴミ容器360(defect)に移動させる。
以上に示した「supply」、「pickup1」、「set1」、「rotate」、「set2」、「scan」、「decision」、「OK」、「NG」、「None」、「pickup2」、「pass」、及び「defect」のそれぞれは、本発明に係る事象の一例である。
ここで、各装置の動作を制御する開発対象のプログラムにおいて、各装置の動作を異なる並列実行単位に割り当てた場合、当該プログラムは、供給部300、ハンドA310、ターンテーブル320、検査機330、及びハンドB340をそれぞれ制御する5つの並列実行単位に分割される。このような並列実行単位の割り当ては、プログラムの機能に基づき分割されており開発者にとって分かりやすいものであるが、プログラムが有する並列性を考慮しておらず効率良く並列化されていない場合も有り得る。
図5は、本実施形態に係る開発対象システム290のモデルから取得した有向グラフデータを示す。モデル変換部115は、プログラムの開発者によりユーザインターフェイス部100を介して入力されたタイミング図やアクティビティ図等のモデルから、有向グラフデータを取得する。より具体的には、モデル変換部115は、モデルに記述された事象間の順序制約及び順序仕様に基づいて、実行順序に依存関係がある事象の対を抽出する。ここで、モデル変換部115は、抽出した事象対をプログラムの開発者に表示して当該事象対を使用するか否かを指定させ、使用すると指定された事象対のみを選択的に抽出してもよい。これにより、モデル変換部115は、開発者が意図しない順序制約が用いられるのを防ぐことができる。
そして、モデル変換部115は、これらの事象対を結合して有向グラフデータを生成する。
図6は、本実施形態に係る開発対象システム290の拡張ハッセ図を示す。図5において、モデルからモデル変換部115が取得する有向グラフデータは、例えば「supply」及び「pickup1」を経由する経路等の循環経路を有し、「OK」、「NG」、及び「None」の選択事象の組や「pass」又は「defect」の対応事象の組を含む。したがって、事象分割部122、有向枝置換部125、及び選択事象置換部130は、この有向グラフデータを変形し、拡張ハッセ図に変換する。
まず、選択事象置換部130は、「OK」、「NG」、及び「None」の3つの選択事象を、1つの事象600k「result」に置換する。また、選択事象置換部130は、これらの選択事象に対応していずれかが実行される「pass」及び「defect」の2つの対応事象を、1つの事象600l「store」に置換する。これにより、選択事象置換部130は、有向グラフデータを、選択的に実行される2以上の事象を含まない構造に変換することができる。
また、事象分割部122は、図5における循環経路上の「supply」を、第1事象600a及び第2事象600bに分割する。そして、図5における「supply」を始点とする有向枝を第1事象600aから「pickup1」への有向枝に置換し、図5における「supply」を終点とする有向枝を「pickup1」から第2事象600bへの有向枝に置換することにより、循環経路を循環しない経路に変更する。同様に、事象分割部122は、「rotate」を第1事象600c及び第2事象600dに、「set1」を第1事象600e及び第2事象600fに、「pickup2」を第1事象600g及び第2事象600hに、「set2」を第1事象600i及び第2事象600jにそれぞれ分割し、対応する有向枝を置換する。
以上の処理により、プログラム開発支援装置10は、グラフDB120に格納された有向グラフデータを拡張ハッセ図に変換することができる。次に、反鎖部分集合抽出部135は、拡張ハッセ図となる変換後の有向グラフデータから、有向グラフの反鎖部分集合のうち集合に属する事象の数が最大となる最大反鎖部分集合650を抽出する。
図7は、本実施形態に係る開発対象システム290の拡張ハッセ図から抽出した並列実行単位700を示す。並列実行単位割当部140は、最大反鎖部分集合650に属する「supply」、「set1」、「pickup2」、及び「scan」を、並列実行単位700a、並列実行単位700b、並列実行単位700c、及び並列実行単位700dにそれぞれ割り当てる。そして、各並列実行単位700について、最大反鎖部分集合650に属する事象から有向枝を順方向及び逆方向の少なくとも一方へたどっていき、到達可能な事象を当該並列実行単位700に割り当てる。例えば並列実行単位割当部140は、最大反鎖部分集合650に属する「supply」から有向枝を逆方向にたどることにより到達する「pickup1」を並列実行単位700aに割り当てる。また、並列実行単位割当部140は、最大反鎖部分集合650に属する「scan」から有向枝を順方向にたどることにより到達する「decision」及び「set2」を並列実行単位700dに割り当てる。
ここで並列実行単位割当部140は、最大反鎖部分集合650に属する事象から到達した事象が他の並列実行単位に割り当てられている場合に、当該事象から先に有向枝をたどるのを中止する。また、循環経路上の1つの事象から分割された事象600a及び事象600b、事象600c及び事象600d、事象600e及び事象600f、事象600g及び事象600h、事象600i及び事象600jをそれぞれ同一の並列実行単位700に割り当てる。
図8は、本実施形態に係る並列実行単位700aの、(a)グラフ構造、(b)プロセス式、(c)状態遷移モデルをそれぞれ示す。並列実行単位700aは、「supply」の実行後に「pickup1」を実行し、「set1」を実行してもよい状態となったことを示す「set1_ready」を出力する処理を繰り返す。プロセス式生成部145は、並列実行単位700aについて、「supply」、「pickup1」、及び「set1_ready」をこの実行順序で実行した後、AO1の処理に戻るプロセス式AO1を生成する。そして、状態遷移モデル生成部155は、プロセス式AO1に基づいて、「supply」、「pickup1」、及び「set1_ready」の各事象が実行されたか否かを特定する状態「0」、「1」、及び「2」と、「supply」が実行されると状態を「0」から「1」へ遷移させ、「pickup1」が実行されると状態を「1」から「2」へ遷移させ、「set1_ready」が実行されると状態を「2」から「0」へ遷移させる遷移条件とを含む状態遷移モデルを生成する。
実行命令列生成部160は、並列実行単位700aについて、プロセス式AO1及び状態遷移モデルを状態遷移モデル生成部155から受け取り、プロセス式、状態遷移モデル、及び、処理DB110に格納された各事象の処理内容に基づいて、当該並列実行単位の実行命令列を生成する。
図9は、本実施形態に係る並列実行単位700bの、(a)グラフ構造、(b)プロセス式、(c)状態遷移モデルをそれぞれ示す。並列実行単位700bは、並列実行単位700aから「set1_ready」を入力すると「set1」を実行する。また、「set1」が実行され、「pickup2_end」、「scan_end」が入力された場合に、「rotate」を実行し、「pickup2_ready」及び「set2_ready」を並列実行単位700c及び並列実行単位700dにそれぞれ出力する。ここで、並列実行単位700bは、「rotate」の実行に先立ち初期化処理を行う必要がある。
プロセス式生成部145は、並列実行単位700bについて、「set1_ready」を入力した後、「set1」、及び「rotate」を実行し、「pickup2_ready」を出力してO2aの処理に戻るプロセス式O2aを生成する。また、「pickup2_end」を入力した後、「rotate」を実行し、「set2_ready」を出力してO2bの処理に戻るプロセス式O2bを生成する。また、「scan_end」を入力した後、「rotate」を実行し、O2cの処理に戻るプロセス式O2cを生成する。そして、プロセス式生成部145は、並列実行単位700b全体のプロセス式AO2を、プロセス式O2a、O2b、及びO2cを並列結合した式とする。
初期化処理挿入部150は、実行前に初期化処理を行うべき「rotate」を終点として接続される有向枝から選択した、「set1」からの有向枝の始点に位置する「set1」の実行後に「rotate」の初期化処理を行わせるように、プロセス式O2aを変更する。より具体的には、「set1」の実行後に「rotate」を実行するプロセス式O2aにおける「rotate」に代えて、初期化処理「init」を実行した後に「rotate」を実行することを示す「{init,rotate}」を挿入する。
状態遷移モデル生成部155は、プロセス式AO2に基づいて、「set1_ready」、「set1」、「pickup2_end」、「scan_end」、「rotate」、「pickup2_ready」、及び「set2_ready」の各事象が実行されたか否かを特定する状態「0」から「11」と、これらの状態の間の遷移条件とを含む状態遷移モデルを生成する。本例において状態遷移モデル生成部155は、一の事象「rotate」に並列に入力される入力事象「pickup2_end」及び「scan_end」のAND条件を入力事象「ex1」に置換することにより、状態数を低減している。
実行命令列生成部160は、並列実行単位700bについて、プロセス式AO2及び状態遷移モデルを状態遷移モデル生成部155から受け取り、プロセス式、状態遷移モデル、及び、処理DB110に格納された各事象の処理内容に基づいて、当該並列実行単位の実行命令列を生成する。
図10は、本実施形態に係る並列実行単位700cの、(a)グラフ構造、(b)プロセス式、(c)状態遷移モデルをそれぞれ示す。並列実行単位700cは、「pickup2_ready」及び「result」の入力後に、「pickup2」を実行し、「store」を実行すると共に「pickup2_end」を出力する処理を繰り返す。ここで、並列実行単位700cは、「pickup2」の実行に先立ち、初期化処理を行う必要がある。
プロセス式生成部145は、並列実行単位700cについて、「pickup2_ready」を入力した後、「pickup2」を実行し、「store」を実行してO3aの処理に戻るプロセス式O3aを生成する。また、「result」を入力した後、「pickup2」を実行し、「pickup2_end」を出力してO3bの処理に戻るプロセス式O3bを生成する。そして、プロセス式生成部145は、並列実行単位700c全体のプロセス式AO3を、プロセス式O3a及びO3bをO並列結合した式とする。
初期化処理挿入部150は、並列実行単位700bの場合と同様にして、「pickup2_ready」の入力後に「pickup2」の初期化処理を行わせるように、プロセス式O3aを変更する。状態遷移モデル生成部155は、プロセス式AO3に基づいて、「pickup2_ready」、「result」、「pickup2」、「store」、及び「pickup2_end」の各事象が実行されたか否かを特定する状態「0」から「5」と、これらの状態の間の遷移条件とを含む状態遷移モデルを生成する。本例において状態遷移モデル生成部155は、一の事象「pickup2」に並列に入力される入力事象「pickup2_ready」及び「result」のAND条件を入力事象「ex1」に置換することにより、状態数を低減している。
実行命令列生成部160は、並列実行単位700bについて、プロセス式AO3及び状態遷移モデルを状態遷移モデル生成部155から受け取り、プロセス式、状態遷移モデル、及び、処理DB110に格納された各事象の処理内容に基づいて、当該並列実行単位の実行命令列を生成する。ここで実行命令列生成部160は、「store」を実行する実行命令列として、入力事象「result」が置換前の選択事象「OK」であった場合に、「OK」に対応する対応事象「pass」を実行し、入力事象「result」が置換前の選択事象「NG」であった場合に、「NG」に対応する対応事象「defect」を実行する実行命令列を生成する。
図11は、本実施形態に係る並列実行単位700dの、(a)グラフ構造、(b)プロセス式、(c)状態遷移モデルをそれぞれ示す。並列実行単位700dは、「set2_ready」の入力後に「scan」を実行し、「scan_end」を出力すると共に「decision」を実行する。そして、「decision」の実行後に「result」を出力する。
プロセス式生成部145は、並列実行単位700dについて、「set2_ready」を入力した後、「scan」及び「decision」をこの順に実行し、「result」を出力してO4aの処理に戻るプロセス式O4aを生成する。また、「scan」を実行した後、「scan_end」を出力してO4bの処理に戻るプロセス式O4bを生成する。そして、プロセス式生成部145は、並列実行単位700d全体のプロセス式AO4を、プロセス式O4a及びO4bを並列結合した式とする。
状態遷移モデル生成部155は、プロセス式AO4に基づいて、「set2_ready」、「scan」、「scan_end」、「decision」、及び「result」の各事象が実行されたか否かを特定する状態「0」から「7」と、これらの状態の間の遷移条件とを含む状態遷移モデルを生成する。
実行命令列生成部160は、並列実行単位700bについて、プロセス式AO4及び状態遷移モデルを状態遷移モデル生成部155から受け取り、プロセス式、状態遷移モデル、及び、処理DB110に格納された各事象の処理内容に基づいて、当該並列実行単位の実行命令列を生成する。
図12は、本実施形態に係るコンピュータ1300のハードウェア構成の一例を示す。本実施形態に係るコンピュータ1300は、ホスト・コントローラ1282により相互に接続されるCPU1200、RAM1220、グラフィック・コントローラ1275、及び表示装置1280を有するCPU周辺部と、入出力コントローラ1284によりホスト・コントローラ1282に接続される通信インターフェイス1230、ハードディスク・ドライブ1240、及びCD−ROMドライブ1260を有する入出力部と、入出力コントローラ1284に接続されるROM1210、フレキシブルディスク・ドライブ1250、及び入出力チップ1270を有するレガシー入出力部とを備える。
ホスト・コントローラ1282は、RAM1220と、高い転送レートでRAM1220をアクセスするCPU1200及びグラフィック・コントローラ1275とを接続する。CPU1200は、ROM1210及びRAM1220に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ1275は、CPU1200等がRAM1220内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置1280上に表示させる。これに代えて、グラフィック・コントローラ1275は、CPU1200等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
入出力コントローラ1284は、ホスト・コントローラ1282と、比較的高速な入出力装置である通信インターフェイス1230、ハードディスク・ドライブ1240、CD−ROMドライブ1260を接続する。通信インターフェイス1230は、ネットワークを介して他の装置と通信する。ハードディスク・ドライブ1240は、コンピュータ1300内のCPU1200が使用するプログラム及びデータを格納する。CD−ROMドライブ1260は、CD−ROM1295からプログラム又はデータを読み取り、RAM1220を介してハードディスク・ドライブ1240に提供する。
また、入出力コントローラ1284には、ROM1210と、フレキシブルディスク・ドライブ1250、及び入出力チップ1270の比較的低速な入出力装置とが接続される。ROM1210は、コンピュータ1300が起動時に実行するブート・プログラムや、コンピュータ1300のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ1250は、フレキシブルディスク1290からプログラム又はデータを読み取り、RAM1220を介してハードディスク・ドライブ1240に提供する。入出力チップ1270は、フレキシブルディスク・ドライブ1250や、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を接続する。
RAM1220を介してハードディスク・ドライブ1240に提供されるプログラムは、フレキシブルディスク1290、CD−ROM1295、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM1220を介してコンピュータ1300内のハードディスク・ドライブ1240にインストールされ、CPU1200において実行される。
コンピュータ1300にインストールされてコンピュータ1300をプログラム開発支援装置10として機能させるプログラムは、ユーザインターフェイスモジュール及びモデル変換モジュールを有する有向グラフ取得モジュールと、事象分割モジュールと、有向枝置換モジュールと、選択事象置換モジュールと、反鎖部分集合抽出モジュールと、並列実行単位割当モジュールと、プロセス式生成モジュールと、初期化処理挿入モジュールと、状態遷移モデル生成モジュールと、実効命令列生成モジュールとを備える。これらのプログラム又はモジュールは、コンピュータ1300を、ユーザインターフェイス部100及びモデル変換部115を有する有向グラフ取得部95と、事象分割部122と、有向枝置換部125と、選択事象置換部130と、反鎖部分集合抽出部135と、並列実行単位割当部140と、プロセス式生成部145と、初期化処理挿入部150と、状態遷移モデル生成部155と、実行命令列生成部160としてそれぞれ機能させる。
以上に示したプログラム又はモジュールは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1290、CD−ROM1295の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ1300に提供してもよい。
以上に示したプログラム開発支援装置10によれば、開発者により入力されたプログラムのモデルから当該プログラムが有する並列性を抽出し、当該プログラムが有する各事象を複数の並列実行単位に適切に割り当てることができる。そして、プログラム開発支援装置10は、各並列実行単位のプロセス式及び状態遷移モデルを生成し、これらに基づいて各並列実行単位の実行命令列を生成することができる。
この結果、例えば工場内に配置された各種のFA機器や、乗り物内に設けられた各種の機器や、コンピュータの入出力デバイス等の制御を行う組込み用コンピュータ上で実行される制御用プログラムをマルチタスク環境で実行させる場合において、当該制御用プログラムの制御対象となる各種の動作の並列性を適切に抽出して並列実行単位を割り当てることができる。これによりプログラム開発支援装置10は、限られた処理能力の組込み用コンピュータを用いてより多くの処理を効率良く行わせることができる制御用プログラムを提供することができる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
以上に説明した実施形態によれば、以下の各項目に示すプログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体が実現される。
(項目1)情報処理装置においてそれぞれ実行される複数の事象をグループ化して、互いに並列に実行される複数の並列実行単位に分割するプログラム開発支援装置であって、前記複数の事象のそれぞれを頂点とし、前記複数の事象のうち2つの前記事象の間における実行順序の制約を有向枝として表現した有向グラフデータを取得する有向グラフ取得部と、各事象から前記有向枝を順方向へたどっていくことにより他のいずれの前記事象にも到達可能でない関係を有する前記事象の組である反鎖部分集合を、前記有向グラフデータから抽出する反鎖部分集合抽出部と、前記反鎖部分集合に属する複数の事象を、互いに異なる前記並列実行単位に割り当てる並列実行単位割当部とを備えるプログラム開発支援装置。
(項目2)前記反鎖部分集合抽出部は、複数の前記反鎖部分集合のうち当該反鎖部分集合に属する前記事象の数が最大である前記反鎖部分集合を、前記有向グラフデータから抽出し、前記並列実行単位割当部は、前記反鎖部分集合に属する複数の事象を、前記反鎖部分集合に属する前記事象の数と同数の前記並列実行単位に割り当てる項目1記載のプログラム開発支援装置。
(項目3)前記並列実行単位割当部は、前記反鎖部分集合に属する事象のそれぞれについて、当該事象、及び、当該事象から前記有向枝を順方向及び逆方向の少なくとも一方へたどっていくことにより順次到達可能な前記事象を、同一の前記並列実行単位に割り当てる項目1記載のプログラム開発支援装置。
(項目4)前記並列実行単位割当部は、前記反鎖部分集合に属する事象のそれぞれについて、当該事象、及び、当該事象から前記有向枝を順方向及び逆方向の少なくとも一方へたどっていくことにより順次到達可能な前記事象を、当該事象から到達可能な前記事象が他の前記並列実行単位に割り当てられていないことを条件として、同一の前記並列実行単位に割り当てる項目3記載のプログラム開発支援装置。
(項目5)前記複数の並列実行単位のそれぞれについて、当該並列実行単位に割り当てられた各事象が終点となる各有向枝に基づいて、当該並列実行単位に割り当てられた各事象の実行順序の関係を示す式であるプロセス式を生成するプロセス式生成部と、当該並列実行単位に属する前記事象、又は、前記有向枝により当該並列実行単位に属する前記事象に接続される、当該並列実行単位に属さない前記事象の各々が実行されたか否かを特定する複数の状態と、当該複数の状態間の遷移条件とを含む、当該並列実行単位の状態遷移モデルを、前記プロセス式に基づいて生成する状態遷移モデル生成部とを備える項目1記載のプログラム開発支援装置。
(項目6)前記複数の並列実行単位のそれぞれについて、当該並列実行単位の前記プロセス式及び前記状態遷移モデルの少なくとも1つに基づいて、当該並列実行単位に属する前記事象に前記有向枝により接続される、当該並列実行単位に属さない前記事象の実行結果を入力として、当該並列実行単位に属する前記事象に対応する処理を前記情報処理装置に実行させると共に、前記状態遷移モデルに基づく状態遷移を前記情報処理装置に行わせる、当該並列実行単位の実行命令列を生成する実行命令列生成部を更に備える項目5記載のプログラム開発支援装置。
(項目7)前記実効命令列生成部は、実行前に初期化処理を行うべき一の前記事象について、当該一の事象を終点とするいずれかの前記有向枝の始点に接続された前記事象が実行されたことを条件として、当該一の事象の初期化処理を行わせる前記実効命令列を生成する項目6記載のプログラム開発支援装置。
(項目8)前記複数の事象のうち、前記情報処理装置において繰り返し実行される前記事象について、当該事象を第1分割事象及び第2分割事象に分割する事象分割部と、前記有向グラフデータにおける当該事象から前記有向枝を順方向へたどっていくことにより当該事象へ到達する循環経路における、当該事象を始点とする前記有向枝を前記第1分割事象を始点とする前記有向枝に置換し、当該事象を終点とする前記有向枝を前記第2分割事象を終点とする前記有向枝に置換する有向枝置換部とを更に備え、前記並列実行単位割当部は、前記第1分割事象及び前記第2分割事象を同一の前記並列実行単位に割り当てる項目1記載のプログラム開発支援装置。
(項目9)前記複数の事象は、選択的に実行される2以上の選択事象と、前記2以上の選択事象のそれぞれに対応してそれぞれ設けられ、対応する前記選択事象が実行された場合に実行される2以上の対応事象とを含み、前記有向グラフデータにおける前記2以上の選択事象を1つの前記事象に置換し、前記2以上の対応事象を1つの前記事象に置換する選択事象置換部を更に備え、前記反鎖部分集合抽出部は、前記選択事象置換部により前記2以上の選択事象及び前記2以上の対応事象がそれぞれ1つの前記事象に置換された前記有向グラフデータから前記反鎖部分集合を抽出する項目1記載のプログラム開発支援装置。
(項目10)コンピュータにより、情報処理装置においてそれぞれ実行される複数の事象をグループ化して、互いに並列に実行される複数の並列実行単位に分割するプログラム開発支援方法であって、前記複数の事象のそれぞれを頂点とし、前記複数の事象のうち2つの前記事象の間における実行順序の制約を有向枝として表現した有向グラフデータを前記コンピュータにより取得する有向グラフ取得段階と、各事象から前記有向枝を順方向へたどっていくことにより他のいずれの前記事象にも到達可能でない関係を有する前記事象の組である反鎖部分集合を、前記有向グラフデータから前記コンピュータにより抽出する反鎖部分集合抽出段階と、前記反鎖部分集合に属する複数の事象を、互いに異なる前記並列実行単位に前記コンピュータにより割り当てる並列実行単位割当段階とを備えるプログラム開発支援方法。
(項目11)コンピュータを、情報処理装置においてそれぞれ実行される複数の事象をグループ化して、互いに並列に実行される複数の並列実行単位に分割するプログラム開発支援装置として機能させるプログラムであって、前記コンピュータを、前記複数の事象のそれぞれを頂点とし、前記複数の事象のうち2つの前記事象の間における実行順序の制約を有向枝として表現した有向グラフデータを取得する有向グラフ取得部と、各事象から前記有向枝を順方向へたどっていくことにより他のいずれの前記事象にも到達可能でない関係を有する前記事象の組である反鎖部分集合を、前記有向グラフデータから抽出する反鎖部分集合抽出部と、前記反鎖部分集合に属する複数の事象を、互いに異なる前記並列実行単位に割り当てる並列実行単位割当部として機能させるプログラム。
(項目12)項目11記載のプログラムを記録した記録媒体。
本発明の実施形態に係るプログラム開発支援装置10の構成を示す。 本発明の実施形態に係るプログラム開発支援装置10の動作フローを示す。 本発明の実施形態に係るプログラム開発支援装置10による開発対象システム290の一例を示す。 本発明の実施形態に係る開発対象システム290の各装置の動作記述の一例を示す。 本発明の実施形態に係る開発対象システム290のモデルから取得した有向グラフデータを示す。 本発明の実施形態に係る開発対象システム290の拡張ハッセ図を示す。 本発明の実施形態に係る開発対象システム290の拡張ハッセ図から抽出した並列実行単位700を示す。 本発明の実施形態に係る並列実行単位700aの、(a)グラフ構造、(b)プロセス式、(c)状態遷移モデルをそれぞれ示す。 本発明の実施形態に係る並列実行単位700bの、(a)グラフ構造、(b)プロセス式、(c)状態遷移モデルをそれぞれ示す。 本発明の実施形態に係る並列実行単位700cの、(a)グラフ構造、(b)プロセス式、(c)状態遷移モデルをそれぞれ示す。 本発明の実施形態に係る並列実行単位700dの、(a)グラフ構造、(b)プロセス式、(c)状態遷移モデルをそれぞれ示す。 本発明の実施形態に係るコンピュータ1300のハードウェア構成の一例を示す。
符号の説明
10 プログラム開発支援装置
95 有向グラフ取得部
100 ユーザインターフェイス部
105 モデルDB
110 処理DB
115 モデル変換部
120 グラフDB
122 事象分割部
125 有向枝置換部
130 選択事象置換部
135 反鎖部分集合抽出部
140 並列実行単位割当部
145 プロセス式生成部
150 初期化処理挿入部
155 状態遷移モデル生成部
160 実行命令列生成部
290 開発対象システム
300 供給部
310 ハンドA
320 ターンテーブル
330 検査機
340 ハンドB
350 パス容器
360 ゴミ容器
600a〜l 事象
650 最大反鎖部分集合
700 並列実行単位
1200 CPU
1210 ROM
1220 RAM
1230 通信インターフェイス
1235 無線通信インターフェイス
1240 ハードディスク・ドライブ
1250 フレキシブルディスク・ドライブ
1260 CD−ROMドライブ
1270 入出力チップ
1275 グラフィック・コントローラ
1280 表示装置
1282 ホスト・コントローラ
1284 入出力コントローラ
1290 フレキシブルディスク
1295 CD−ROM
1300 コンピュータ

Claims (12)

  1. 情報処理装置においてそれぞれ実行される複数の事象をグループ化して、互いに並列に実行される複数の並列実行単位に分割するプログラム開発支援装置であって、
    前記複数の事象のそれぞれを頂点とし、前記複数の事象のうち2つの前記事象の間における実行順序の制約を有向枝として表現した有向グラフデータを取得する有向グラフ取得部と、
    各事象から前記有向枝を順方向へたどっていくことにより他のいずれの前記事象にも到達可能でない関係を有する前記事象の組である反鎖部分集合を、前記有向グラフデータから抽出する反鎖部分集合抽出部と、
    前記反鎖部分集合に属する複数の事象を、互いに異なる前記並列実行単位に割り当てる並列実行単位割当部と
    を備えるプログラム開発支援装置。
  2. 前記反鎖部分集合抽出部は、複数の前記反鎖部分集合のうち当該反鎖部分集合に属する前記事象の数が最大である前記反鎖部分集合を、前記有向グラフデータから抽出し、
    前記並列実行単位割当部は、前記反鎖部分集合に属する複数の事象を、前記反鎖部分集合に属する前記事象の数と同数の前記並列実行単位に割り当てる請求項1記載のプログラム開発支援装置。
  3. 前記並列実行単位割当部は、前記反鎖部分集合に属する事象のそれぞれについて、当該事象、及び、当該事象から前記有向枝を順方向及び逆方向の少なくとも一方へたどっていくことにより順次到達可能な前記事象を、同一の前記並列実行単位に割り当てる請求項1記載のプログラム開発支援装置。
  4. 前記並列実行単位割当部は、前記反鎖部分集合に属する事象のそれぞれについて、当該事象、及び、当該事象から前記有向枝を順方向及び逆方向の少なくとも一方へたどっていくことにより順次到達可能な前記事象を、当該事象から到達可能な前記事象が他の前記並列実行単位に割り当てられていないことを条件として、同一の前記並列実行単位に割り当てる請求項3記載のプログラム開発支援装置。
  5. 前記複数の並列実行単位のそれぞれについて、当該並列実行単位に割り当てられた各事象が終点となる各有向枝に基づいて、当該並列実行単位に割り当てられた各事象の実行順序の関係を示す式であるプロセス式を生成するプロセス式生成部と、
    当該並列実行単位に属する前記事象、又は、前記有向枝により当該並列実行単位に属する前記事象に接続される、当該並列実行単位に属さない前記事象の各々が実行されたか否かを特定する複数の状態と、当該複数の状態間の遷移条件とを含む、当該並列実行単位の状態遷移モデルを、前記プロセス式に基づいて生成する状態遷移モデル生成部と
    を備える請求項1記載のプログラム開発支援装置。
  6. 前記複数の並列実行単位のそれぞれについて、当該並列実行単位の前記プロセス式及び前記状態遷移モデルの少なくとも1つに基づいて、当該並列実行単位に属する前記事象に前記有向枝により接続される、当該並列実行単位に属さない前記事象の実行結果を入力として、当該並列実行単位に属する前記事象に対応する処理を前記情報処理装置に実行させると共に、前記状態遷移モデルに基づく状態遷移を前記情報処理装置に行わせる、当該並列実行単位の実行命令列を生成する実行命令列生成部を更に備える請求項5記載のプログラム開発支援装置。
  7. 前記実効命令列生成部は、実行前に初期化処理を行うべき一の前記事象について、当該一の事象を終点とするいずれかの前記有向枝の始点に接続された前記事象が実行されたことを条件として、当該一の事象の初期化処理を行わせる前記実効命令列を生成する請求項6記載のプログラム開発支援装置。
  8. 前記複数の事象のうち、前記情報処理装置において繰り返し実行される前記事象について、当該事象を第1分割事象及び第2分割事象に分割する事象分割部と、
    前記有向グラフデータにおける当該事象から前記有向枝を順方向へたどっていくことにより当該事象へ到達する循環経路における、当該事象を始点とする前記有向枝を前記第1分割事象を始点とする前記有向枝に置換し、当該事象を終点とする前記有向枝を前記第2分割事象を終点とする前記有向枝に置換する有向枝置換部と
    を更に備え、
    前記並列実行単位割当部は、前記第1分割事象及び前記第2分割事象を同一の前記並列実行単位に割り当てる
    請求項1記載のプログラム開発支援装置。
  9. 前記複数の事象は、選択的に実行される2以上の選択事象と、前記2以上の選択事象のそれぞれに対応してそれぞれ設けられ、対応する前記選択事象が実行された場合に実行される2以上の対応事象とを含み、
    前記有向グラフデータにおける前記2以上の選択事象を1つの前記事象に置換し、前記2以上の対応事象を1つの前記事象に置換する選択事象置換部を更に備え、
    前記反鎖部分集合抽出部は、前記選択事象置換部により前記2以上の選択事象及び前記2以上の対応事象がそれぞれ1つの前記事象に置換された前記有向グラフデータから前記反鎖部分集合を抽出する
    請求項1記載のプログラム開発支援装置。
  10. コンピュータにより、情報処理装置においてそれぞれ実行される複数の事象をグループ化して、互いに並列に実行される複数の並列実行単位に分割するプログラム開発支援方法であって、
    前記複数の事象のそれぞれを頂点とし、前記複数の事象のうち2つの前記事象の間における実行順序の制約を有向枝として表現した有向グラフデータを前記コンピュータにより取得する有向グラフ取得段階と、
    各事象から前記有向枝を順方向へたどっていくことにより他のいずれの前記事象にも到達可能でない関係を有する前記事象の組である反鎖部分集合を、前記有向グラフデータから前記コンピュータにより抽出する反鎖部分集合抽出段階と、
    前記反鎖部分集合に属する複数の事象を、互いに異なる前記並列実行単位に前記コンピュータにより割り当てる並列実行単位割当段階と
    を備えるプログラム開発支援方法。
  11. コンピュータを、情報処理装置においてそれぞれ実行される複数の事象をグループ化して、互いに並列に実行される複数の並列実行単位に分割するプログラム開発支援装置として機能させるプログラムであって、
    前記コンピュータを、
    前記複数の事象のそれぞれを頂点とし、前記複数の事象のうち2つの前記事象の間における実行順序の制約を有向枝として表現した有向グラフデータを取得する有向グラフ取得部と、
    各事象から前記有向枝を順方向へたどっていくことにより他のいずれの前記事象にも到達可能でない関係を有する前記事象の組である反鎖部分集合を、前記有向グラフデータから抽出する反鎖部分集合抽出部と、
    前記反鎖部分集合に属する複数の事象を、互いに異なる前記並列実行単位に割り当てる並列実行単位割当部と
    して機能させるプログラム。
  12. 請求項11記載のプログラムを記録した記録媒体。
JP2003408096A 2003-12-05 2003-12-05 プログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体 Pending JP2005173645A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003408096A JP2005173645A (ja) 2003-12-05 2003-12-05 プログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体
US11/001,972 US7516481B2 (en) 2003-12-05 2004-12-02 Program development supporting apparatus, method, program and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003408096A JP2005173645A (ja) 2003-12-05 2003-12-05 プログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体

Publications (1)

Publication Number Publication Date
JP2005173645A true JP2005173645A (ja) 2005-06-30

Family

ID=34631773

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003408096A Pending JP2005173645A (ja) 2003-12-05 2003-12-05 プログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体

Country Status (2)

Country Link
US (1) US7516481B2 (ja)
JP (1) JP2005173645A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011509458A (ja) * 2008-01-08 2011-03-24 インターナショナル・ビジネス・マシーンズ・コーポレーション サービス指向アーキテクチャ(soa)対応のアプリケーションを検証するための方法、データ処理システム及びコンピュータ・プログラム
US10514908B2 (en) 2017-04-14 2019-12-24 Fujitsu Limited Program analysis device for classifying programs into program groups based on call relationship between programs, program analysis method for classifying programs into program groups based on call relationship between programs, and recording medium storing analysis program for classifying programs into program groups based on a call relationship between programs

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080120614A1 (en) * 2006-11-21 2008-05-22 Brother Kogyo Kabushiki Kaisha Device, Method, and Computer Usable Medium for Installing Programs
US9348884B2 (en) 2008-05-28 2016-05-24 International Business Machines Corporation Methods and apparatus for reuse optimization of a data storage process using an ordered structure
US8566844B2 (en) * 2009-11-03 2013-10-22 Disney Enterprises, Inc. Generalized event and response system (GEARS)
US9733905B1 (en) 2016-03-21 2017-08-15 International Business Machines Corporation Embedded location awareness in UML modeling for mobile and IoT development
CN109799973B (zh) * 2018-12-11 2022-02-11 极道科技(北京)有限公司 一种数据驱动的用户透明的可扩展编程方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5827367U (ja) * 1981-08-12 1983-02-22 トヨタ自動車株式会社 フエライト電極
US4972314A (en) * 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US4755418A (en) * 1985-08-12 1988-07-05 Basf Corporation Nonyellowing cathodic electrocoat
DE3720956A1 (de) * 1987-06-25 1989-01-05 Basf Lacke & Farben Stickstoffbasische gruppen tragendes kunstharz, dessen herstellung und verwendung
DE3902441A1 (de) * 1989-01-27 1990-08-16 Basf Lacke & Farben Hitzehaertbares ueberzugsmittel fuer die kathodische elektrotauchlackierung
US5260135A (en) * 1991-07-26 1993-11-09 Ppg Industries, Inc. Photodegradation-resistant electrodepositable primer compositions
JP3246668B2 (ja) 1991-09-27 2002-01-15 日東精工株式会社 並列処理プログラムコンパイル装置
JPH05113885A (ja) 1991-10-23 1993-05-07 Nitto Seiko Co Ltd 並列処理プログラム開発装置
US5205916A (en) * 1991-12-11 1993-04-27 E. I. Du Pont De Nemours And Company Cathodic electrodeposition coatings containing an antioxidant additive
DE4207653A1 (de) * 1992-03-11 1993-09-16 Basf Lacke & Farben Kunstharze
GB9305263D0 (en) * 1993-03-15 1993-05-05 Univ Westminster Parrallel computation
DE19541230A1 (de) * 1995-11-06 1997-05-07 Basf Lacke & Farben Elektrisch abscheidbares Überzugsmittel
JP3327818B2 (ja) * 1997-08-29 2002-09-24 松下電器産業株式会社 プログラム変換装置及び記録媒体
US6438747B1 (en) * 1999-08-20 2002-08-20 Hewlett-Packard Company Programmatic iteration scheduling for parallel processors
US6398934B1 (en) * 2000-10-19 2002-06-04 E. I. Du Pont De Nemours And Company Concentrate suitable for the preparation of cathodic electrodeposition coating compositions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011509458A (ja) * 2008-01-08 2011-03-24 インターナショナル・ビジネス・マシーンズ・コーポレーション サービス指向アーキテクチャ(soa)対応のアプリケーションを検証するための方法、データ処理システム及びコンピュータ・プログラム
US10514908B2 (en) 2017-04-14 2019-12-24 Fujitsu Limited Program analysis device for classifying programs into program groups based on call relationship between programs, program analysis method for classifying programs into program groups based on call relationship between programs, and recording medium storing analysis program for classifying programs into program groups based on a call relationship between programs

Also Published As

Publication number Publication date
US20050125775A1 (en) 2005-06-09
US7516481B2 (en) 2009-04-07

Similar Documents

Publication Publication Date Title
US11042369B1 (en) Systems and methods for modernizing and optimizing legacy source code
KR101279179B1 (ko) 병렬 프로그램 생성 방법
EP3719633B1 (en) Methods and apparatus to insert buffers in a dataflow graph
US20130139137A1 (en) Systems and Methods for Customizing Optimization/Transformation/ Processing Strategies
JP2002099312A (ja) プログラマブルコントローラおよび制御プログラム開発支援装置
US10295985B2 (en) Program processing apparatus and program
JP2009110299A (ja) プログラムを最適化するコンパイラ
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
CN103493015A (zh) 生成资源高效的计算机程序代码的方法和装置
JP2011128975A (ja) システム、方法、プログラムおよびコード生成装置
JP2013206291A (ja) プログラム、コード生成方法および情報処理装置
US11016745B2 (en) Systems and methods for generating distributed software packages using non-distributed source code
US9553761B2 (en) Dynamic server to server configuration and initialization
JP2005173645A (ja) プログラム開発支援装置、プログラム開発支援方法、プログラム、及び、記録媒体
JP2009169864A (ja) コンパイル方法およびコンパイルプログラム
JP2004259007A (ja) コンパイラ装置、コンパイラプログラム、及び記録媒体
JP2009211424A (ja) 最適化箇所判定装置及び最適化箇所判定システム及びコンピュータプログラム及び最適化箇所判定方法
CN116861359A (zh) 面向深度学习推理任务编译器的算子融合方法和系统
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
JP2014228990A (ja) 制御プログラム作成装置および制御プログラム作成方法
JP2006285582A (ja) プログラムコード生成装置、プログラムコード生成方法、及びコンピュータプログラム
JPWO2017135219A1 (ja) 設計支援装置、設計支援方法、および設計支援プログラム
US11714614B2 (en) Code generation tool for cloud-native high-performance computing
US20230087152A1 (en) Computer-readable recording medium storing program and information processing method
WO2022177663A1 (en) Code generation tool for cloud-native high-performance computing

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070319

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070529

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070613