(57)【要約】【課題】  プログラム作成支援装置の仕様記述者により記述された要求仕様の完全性を向上させる。【解決手段】  プログラム作成支援装置では、プログラムにおける各機能の要求仕様をプログラム作成支援装置の仕様記述者に自然言語で記述させる際に、その要求仕様の記述内容として、文章記述（Ｓ１０１〜Ｓ１０５およびＣ１０１〜Ｃ１０５）に加えて、役割分担コラム（Ｙ１０１〜Ｙ１１３およびＭ１０１〜Ｍ１１３）とデータコラム（Ｄ１０１〜Ｄ１０８およびＰ１０１〜Ｐ１１０およびＲ１０１〜１１０）とタイミングコラム（Ｔ１０１〜Ｔ１０３およびＥ１０１〜Ｅ１０３およびＸ１０１〜Ｘ１１３）を設けることで、曖昧さを排除する。【選択図】図３
2009064319.tif 000002
【特許請求の範囲】
【請求項１】
プログラムにおける各機能の実現方法を支援装置の使用者に自然言語で記述させることで、前記プログラムの作成を支援するプログラム作成支援装置であって、
前記実現方法の記述内容として、前記各機能において制御対象となる制御対象物、前記制御対象物による作動の内容、前記制御対象物が作動する際の状況、及び、前記制御対象物が作動するタイミングを、前記使用者に記述させるための内容記述手段を備えたこと
を特徴とするプログラム作成支援装置。
【請求項２】
前記内容記述手段にて前記使用者により記述される記述内容に対して詳細化した記述内容を、前記使用者に記述させるための詳細化手段と、
前記内容記述手段にて前記使用者により記述される記述内容を、前記詳細化手段にて再利用可能部品として抽出する部品化手段と
を備えたことを特徴とする請求項１に記載のプログラム作成支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの作成を支援するためのプログラム作成支援装置に関する。
【背景技術】
【０００２】
プログラム作成支援装置としては、プログラムにおける各機能の要求仕様を使用者（仕様記述者）が自然言語で記述するようにされたものが知られている（例えば、特許文献１参照）。そして、プログラムの作成者は、仕様記述者により記述された要求仕様に基づいて、プログラムを作成する。
【特許文献１】特開２０００−１３７６０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、仕様記述者によりプログラム作成支援装置に記述される要求仕様では、その記述内容として、「誰が」「何をどうする」といった程度を設計者が自然言語で記述するだけなので、この記述内容には設計者の個人差や曖昧さが含まれてしまう。
【０００４】
このため、同一のプログラムを作成する場合であったとしても、仕様記述者によっていろいろな表現で要求仕様が記述されてしまうので、プログラム作成支援装置の使用者（仕様記述者）とプログラムの作成者とが異なる場合には、仕様記述者者により記述された要求仕様がプログラム作成者に対して十分に伝わりにくくなってしまうことがあった。
【０００５】
本発明は、上記点に鑑み、プログラム作成支援装置の使用者により記述された要求仕様の完全性を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するためになされた請求項１に記載の発明は、プログラムにおける各機能の実現方法を支援装置の使用者に自然言語で記述させることで、プログラムの作成を支援するプログラム作成支援装置であって、実現方法の記述内容として、各機能において制御対象となる制御対象物、制御対象物による作動の内容、制御対象物が作動する際の状況、及び、制御対象物が作動するタイミングを、使用者に記述させるための内容記述手段を備えたことを特徴とする。
【０００７】
このような請求項１に記載の発明によれば、使用者（設計者）は、実現方法を記述する際に、「いつ」（タイミング）、「どこで」（状況）、「誰が」（制御対象物）、「何をどうする」（作動の内容）、といった複数の記述内容を自然言語に補足する形で記述することとなる。
【０００８】
このため、実現方法を記述する際に、従来技術に比べて明確な内容を記述することとなるので、仕様記述者により記述された要求仕様が作成者に対して伝わりやすくなる。したがって、仕様記述者により記述された要求仕様の完全性を向上させることができる。
【０００９】
また、請求項２に記載の発明は、内容記述手段にて仕様記述者により記述される記述内容に対して詳細化した記述内容を、仕様記述者に記述させるための詳細化手段と、内容記述手段にて使用者により記述される記述内容を、詳細化手段にて再利用可能な部品として抽出する部品化手段とを備えたことを特徴とする。
【００１０】
これによれば、内容記述手段にて記述される記述内容（すなわち、上位層の記述内容）を、詳細化手段にて記述される記述内容（すなわち、下位層の具体的実現手段）で記述することができるので、プログラムを作成する際に、詳細化された末端の記述内容に基づいて、全てのプログラムを作成（表現）することができる。
【００１１】
このため、プログラムの作成者としては、中間層の記述内容を気にせずに、詳細化された末端の記述内容に基づくプログラムだけを作成すればよいので、部品点数を低減することができる。
【００１２】
つまり、上位層（又は中位層）の記述内容には、仕様作成者の考え方に依存する部分が多く、仕様作成者が異なれば亜種（似て非なるもの）の表現が増え、中間層を部品化すると部品点数が多くなってしまう。これに対して、請求項２に記載の発明では、詳細化された末端の記述内容に基づくプログラムだけを作成すればよいので、部品点数を低減することができる。
【００１３】
また、請求項２に記載の発明では、詳細化された末端の記述内容に基づいてプログラムが作成されるので、この作成されたプログラムは粒度も小さく内容も単純明解であるため、他のプログラムが作成される際に再利用（使い回し）されやすくなる。
【発明を実施するための最良の形態】
【００１４】
以下に本発明の実施形態を図面と共に説明する。
１．端末装置及び組込み機器（例：自動販売機）の概略構成
図１は、本発明のプログラム作成支援装置が適用された端末装置１０、及び自動販売機２０の構成を表すブロック図である。
【００１５】
１．１．端末装置１０
端末装置１０は、各種情報を表示するための液晶ディスプレイにて構成された表示部１１、情報を記憶する記憶媒体としてのハードディスクドライブ（ＨＤＤ）１２、使用者が操作するためのキーボードやマウス等にて構成された操作部１３、及び、端末装置１０全体を統括制御する制御部１４等を有して構成されている。
【００１６】
端末装置１０には、プログラムにおける各機能の実現方法を使用者に自然言語で記述させることで、プログラムの作成を支援するプログラム作成支援ソフトが組み込まれている。なお、プログラム作成支援ソフトの説明については後述する。
【００１７】
１．２．自動販売機２０
対象となる組込み機器は何であってもよく、後述の実施例では自動販売機を例に挙げる。自動販売機２０は、金銭やカード等を投入口に入れ、商品を選択すると商品が自動的に出てくるものであり、その機能を実現するハードウェアと、制御部６０等を有して構成されている。なお、後述の実施例では自販機の構成を金銭管理機構、商品管理機構、商品ディスプレー等に役割分担しているが、それは本発明による分析＆設計結果であって、実際のハードウェア構成が同じである必要はない。
【００１８】
なお、本実施形態では、端末装置１０の仕様記述者が作成した上記要求仕様に基づきプログラムの作成者（以下、プログラマという。）により作成されたプログラムが、組込み機器（自動販売機）２０に組み込まれている。また、以下の説明では、自動販売機２０のことを、「自販機２０」という。
【００１９】
制御部６０は、自販機２０全体を統括制御するためのものであり、ＣＰＵ、ＲＡＭ、ＲＯＭ等にて構成されている。
２．プログラム作成支援ソフト
端末装置１０の使用者（仕様記述者）が上記プログラム作成支援ソフトを実行した際に表示部１１に表示される表示画面について、図２〜図７を用いて説明する。
【００２０】
２．１．ユースケース図記述画面１００
図２は、自販機２０に関するユースケース図を仕様記述者が記述するためのユースケース図記述画面１００の説明図であり、このユースケース図記述画面１００は、プログラム作成支援ソフトが実行されると、表示部１１に表示される。
【００２１】
なお、ユースケース図とは、システム（本実施形態では、自販機２０）に対して、どのようなアクター（システムの外部にあってシステムに作用するもの、本実施例では、購入者及び販売者）が存在するのかを記述したり、それぞれのアクターがどのような作用をしそれに対してシステムがどう応答をするのかを記述するために用いられるものである。
【００２２】
そして、このユースケース図記述画面１００では、システム（自販機２０）とシステムの外部とを区分するためのシステム境界Ｂ１と、システムの名称Ｎ１と、システムの外部にあってシステムに影響を与えるアクターＡ１，Ａ２と、アクターＡ１，Ａ２に対するシステムの応答を示すユースケースＵ１〜Ｕ３とが設計者により記述できるようにされている。
【００２３】
２．２．シナリオ記述画面１１０
図３は、各ユースケースＵ１〜Ｕ３を設計者がシナリオ表記するためのシナリオ記述画面１１０の説明図であり、このシナリオ記述画面１１０は、ユースケース図記述画面１００にてユースケースＵ１〜Ｕ３が記述された際に、各ユースケースＵ１〜Ｕ３のいずれかを表示＆編集することが出来る。
【００２４】
なお、図３は、ユースケースＵ１（「商品を購入する」）のシナリオを表示したシナリオ記述画面１１０で表示した例であり、ユースケースＵ２，Ｕ３のシナリオについても、同様に表示＆編集されるので、説明は省略する。また、このことは、後述する図４〜図７についても同様である。
【００２５】
シナリオ記述画面１１０は、その記述内容として、対象となるユースケース（Ｕ１）の実現方法を文章記述（Ｓ１０１〜Ｓ１０５およびＣ１０１〜Ｃ１０５）と役割分担コラム（Ｙ１０１〜Ｙ１１３およびＭ１０１〜Ｍ１１３）とデータコラム（Ｄ１０１〜Ｄ１０８およびＰ１０１〜Ｐ１１０およびＲ１０１〜１１０）とタイミングコラム（Ｔ１０１〜Ｔ１０３およびＥ１０１〜Ｅ１０３およびＸ１０１〜Ｘ１１３）を設けて、設計者に記述させるためのものである。
【００２６】
シナリオ記述画面１１０の文書記述部では、各シーンＳ１０１〜Ｓ１０５におけるアクターとシステムとの振る舞いを明記するためのト書きＣ１０１〜Ｃ１０５が、設計者により記述できるようにされている。
【００２７】
また、図３に示すＤ１０１〜Ｄ１０８は、ユースケースＵ１を実現するシナリオにおいて必要とされるデータであり、このデータＤ１０１〜Ｄ１０８も、上述した記述内容と同様に、設計者により記述される。
【００２８】
また、図３に示す「□」印は、この印が付されたシナリオ行が、この印が付されたデータを更新することを表す公開Ｐ１０１〜Ｐ１０９である。例えば、シナリオ行Ｌ１０２では、役割Ｙ１０２（「金銭管理機構」）が、データＤ１０２（「投入金額」）を更新することを示している。
【００２９】
また、図３に示す「●」印は、この印が付されたシナリオ行が、この印が付されたデータを参照することを表す参照Ｒ１０１〜Ｒ１１０である。例えば、シナリオ行Ｌ１０２では、役割Ｙ１０２（「金銭管理機構」）が、データＤ１０１（「金銭」）を参照することを示している。
【００３０】
また、図３に示す「▼」印は、トリガＥ１０１〜Ｅ１０３であり、例えばシナリオ行Ｌ１０１が実行されることで、タイミングＴ１０１が発生することを示している。また。実行Ｘ１０１〜１０９（図３に示す「○」印）が付されたシナリオ行を実行させることを表し、例えばタイミングＴ１０１でシナリオ行Ｌ１０２、Ｌ１０３、Ｌ１０４が実行されることを示している。
【００３１】
なお、公開Ｐ１０１〜Ｐ１０９、参照Ｒ１０１〜Ｒ１１０、及び、トリガＥ１０１〜Ｅ１０３も、上述した記述内容と同様に、仕様記述者により記述される。
図４は、ユースケース（Ｕ１）のシナリオにて記述された役割Ｙ１０１〜Ｙ１１３の責務Ｍ１０１〜Ｍ１１３を仕様記述者がさらに詳細化してシナリオ表記した例の説明図であり、各役割Ｙ１０１〜Ｙ１１３の責務Ｍ１０１〜Ｍ１１３についても同様に表示される。
【００３２】
つまり、第２シナリオ記述画面１２０は、第１シナリオ記述画面にて記述される役割Ｙ１０１〜Ｙ１１３及び責務Ｍ１０１〜Ｍ１１３に対して詳細化した記述内容を、設計者にシナリオ表記させるためのものである。なお、図４では、役割Ｙ１０２「金銭管理機構」の責務Ｍ１０２「金銭を受け取る」をシナリオ表記したものを例に挙げている。
【００３３】
２．３．役割階層ツリー１３０
図５は、システム（自販機２０）を実現するための各役割Ｙ１０１〜１０９が、詳細化によって役割Ｙ２０１〜Ｙ２０６さらにその下位層の役割というように階層的に記述される役割階層ツリー１３０の説明図であり、この役割階層ツリー１３０は、第１シナリオ記述画面１１０及び第２シナリオ記述画面１２０およびさらにその下位層のシナリオが記述される度に、その記述内容に基づいて生成される。
【００３４】
図６は、上記プログラム作成支援ソフトの実行中に、表示部１１に表示された「フレームワーク作成」ボタン（図示省略）が選択されたときに装置内部で行われるフラット化を説明したものである。
【００３５】
フラット化は、図３で説明したユースケース（Ｕ１）の記述内容の中の役割Ｙ１０２「金銭管理機構」の責務Ｍ１０２「金銭を受け取る」を図４で説明したシナリオ記述で置換し、他の役割Ｙ１０３〜Ｙ１１３の責務Ｍ１０２〜Ｍ１１３についても同様の置換を行い、さらにその記述内容をその下位層のシナリオ記述内容で繰り返し置換されたものである。
【００３６】
つまり、フラット化を行うことで、上位及び中位の階層のシナリオ記述内容が、末端の役割のみによる記述内容に置換されたユースケース（Ｕ１）のシナリオが生成される。
図７は、フラット化の後の部品化されたフレームワークＦ５０１とコンポーネント（Ｃ５０１〜Ｃ５０５）の概念を示している。コンポーネントは実処理を担う部品であり、フレームワークはその関係（コンポーネントがどう協調すれば良いか）を表す部品である。
【００３７】
上記プログラム作成支援ソフトの実行中に、表示部１１に表示された「コンポーネント定義」ボタン（図示省略）を選択することにより任意の末端の役割（Ｃ５０１〜Ｃ５０５）を部品として定義することが出来る。なお、既存の部品でフレームワークＦ５０１上の役割が満たせるなら、新たに部品定義する必要がないことは言うまでもない。
【００３８】
なお、本実施形態では、設計者が操作部１３を操作することにより、ユースケース図記述画面１００、シナリオ記述画面１１０，１２０、役割階層ツリー１３０のうち何れかに切り換えて、表示部１１に表示することができるようにされている。
【００３９】
３．プログラムの設計手順
以下、プログラムの設計から組み込みまでの手順について、図８を用いて説明する。なお、図８は、プログラムの設計から組み込みまでの手順を説明する説明図である。
【００４０】
本実施形態では、例えば、図８に示す手順に沿って自販機２０用のプログラムが生成される。
３．１．ユースケース図の記述
図８に示すように、まずＳ１１１０では、設計者が端末装置１０のプログラム作成支援ソフトを利用して、上述した図２に示すユースケース図記述画面１００にてユースケース図を記述する、といった作業が行われる。
【００４１】
具体的に説明すると、Ｓ１１１０では、図２に示すように、システムの名称Ｎ１、アクターＡ１，Ａ２、ユースケースＵ１〜Ｕ３等が、設計者により記述される。
また、ユースケース図記述画面１００にて記述された内容は、端末装置１０に記憶され、この記憶内容は、第１，第２シナリオ記述画面１１０，１２０等の記述内容が設計者により記述される際に反映される。
【００４２】
３．２．シナリオの記述
続いて、図８に示すＳ１１２０では、ユースケース図記述画面１００に記述された各ユースケースＵ１〜Ｕ３についてのシナリオが、設計者により記述される。なお、以下の説明では、ユースケースＵ１（「商品を購入する」）のシナリオについて説明する。
【００４３】
具体的に説明すると、設計者は、ユースケース図記述画面１００にてユースケース図を記述した後（Ｓ１１１０）、図３に示す第１シナリオ記述画面１１０を開く。そして、設計者は、まず「状況（どこで）」に相当するシーンＳ１０１〜Ｓ１０５を記述する。
【００４４】
これにより、第１シナリオ記述画面１１０には、設計者がどんな観点について考慮しているのかが明記されることとなる。例えば、図３に示すように、シーンＳ１０１の観点でみれば、「通常時」、「品切れ時」、「釣銭切れ時」以外にも、「故障時」や「停電時」等も考慮しなければならないかもしれないことに気付きやすくなる。
【００４５】
そして、設計者は、シーンＳ１０１〜Ｓ１０５におけるアクターとシステムの振る舞いを、ト書きＣ１０１〜Ｃ１０５で記述する。例えば、図３に示すように、ト書きＣ１０１では、通常時で十分な金銭を持っている購入者が、購入を開始した場合の振る舞いが記述されていることを表している。
【００４６】
３．３．役割分担の記述
続いて、図８に示すＳ１１３０では、ト書きＣ１０１〜Ｃ１０５の各行（シナリオ行Ｌ１０１〜Ｌ１１３）に対して、「誰が」「どうする」といった役割分担が、仕様記述者により記述される。
【００４７】
具体的に説明すると、設計者は、図３に示すように、「誰が」に相当する役割Ｙ１０１〜Ｙ１１３、及び、「どうする」に相当する責務Ｍ１０１〜Ｍ１１３をシナリオ記述画面１１０に記述する。
【００４８】
３．４．データの記述
続いて、図８に示すＳ１１４０では、各役割Ｙ１０１〜Ｙ１１３にて公開又は参照すべきデータＤ１０１〜Ｄ１０８が、仕様記述者により記述される。つまり、設計者は、図３に示すように、データＤ１０１〜Ｄ１０８、公開Ｐ１０１〜１１０、及び、参照Ｒ１０１〜Ｒ１１０をシナリオ記述画面１１０に記述する。
【００４９】
これにより、各役割Ｙ１０１〜Ｙ１１３間において、「何を」に相当するデータＤ１０１〜Ｄ１０８のやりとり（流れ）が明確となる。
具体的に説明すると、仕様記述者は、まずデータＤ１０１〜Ｄ１０８及び参照Ｒ１０１〜Ｒ１１０を記述することにより、各シナリオ行Ｌ１０１〜Ｌ１１３毎に、参照したいデータＤ１０１〜Ｄ１０８を列挙する。この際、公開元（データの提供元）は考慮しなくて良い。
【００５０】
例えば、図３に示すように、シナリオ行Ｌ３０２では、「金銭管理機構」（役割Ｙ１０２）が「金銭を受け取る」（責務Ｍ１０２）際には、外部から「金銭」（データＤ１０１）を参照することを表している。また、シナリオ行Ｌ３０３においては、「商品管理機構」（役割Ｙ１０３）が「購入可能商品を判別する」（責務Ｍ１０３）際には、外部から「投入可能金額」（データＤ１０２）を参照することを表している。
【００５１】
そして、仕様記述者は、全ての必要なデータＤ１０１〜Ｄ１０８が明確になった後で、公開Ｐ１０１〜１１０を記述することにより、データＤ１０１〜Ｄ１０８の公開元を決定する。ここで、データＤ１０１〜Ｄ１０８は、公開元に所有されるものとし、設計者は、同類のデータＤ１０１〜Ｄ１０８の重複を整理し、公開元を１つの役割Ｙ１０１〜Ｙ１１３に絞る。こうすることでオブジェクト指向で言うところのカプセル化が実現される。
【００５２】
例えば、図３に示す第１シナリオ記述画面１１０では、「投入金額」（データＤ１０２）が「金銭管理機構」（役割Ｙ１０２）に所有されて公開されることを表しており（公開Ｐ１０２）、「購入可能商品」（データＤ１０３）は「商品管理機構」（役割Ｙ１０３）が所有して、公開（Ｐ１０３）していることを表している。
【００５３】
３．５．タイミングの記述
続いて、図８に示すＳ１１５０では、各役割Ｙ１０１〜Ｙ１１３が、「いつ」責務Ｍ１０１〜Ｍ１１３を果たせばよいのかが、設計者により記述される。具体的に説明すると、設計者は、図３に示すように、タイミングＴ１０１〜Ｔ１０３、トリガＥ１０１〜Ｅ１０３、及び、実行Ｘ１０１〜Ｘ１０９を第１シナリオ記述画面１１０に記述する。
【００５４】
つまり、Ｓ１１５０では、各シナリオ行Ｌ１０１〜Ｌ１１３毎に、その責務Ｍ１０１〜Ｍ１１３が実行されるべきタイミングとそのトリガ元を指定することにより、呼び出し元に影響されず、システム（自販機２０）がタイミング的にどう振る舞うかが明確に記述される。
【００５５】
例えば、図３に示す第１シナリオ記述画面１１０では、シナリオ行Ｌ１０１において購入者が金銭を投入すると、これが「金銭投入」（タイミングＴ１０１）のトリガＥ１０１となり、続けて、シナリオ行Ｌ１０２において、「金銭管理機構」（役割Ｙ１０２）が「金銭を受け取る」（責務Ｍ１０２）を実行することを表している（実行Ｘ１０１）。また、このタイミングＴ１０１では、シナリオ行Ｌ１０２に加えて、シナリオ行Ｌ１０３，Ｌ１０４も実行される（実行Ｘ１０２，Ｘ１０３）。
【００５６】
また、シナリオ行Ｌ１０１〜Ｌ１０４が実行された後、購入者が商品を選んでいる間は、システム（自販機２０）は何もせず、シナリオ行Ｌ１０５において、「購入者」（役割Ｙ１０５）が「商品ボタンを押す」（責務Ｍ１０５）と、これが「商品選択」（タイミングＴ１０２）のトリガとなる（トリガＥ１０２）。
【００５７】
そして、このタイミングＴ１０２では、シナリオ行Ｌ１０５において、「商品ディスプレイ」（役割Ｙ１０６）が「商品選択受理を表示する」（責務Ｍ１０６）ことが実行される（実行Ｘ１０４）。
【００５８】
ここで、商品ボタンは、購入可能な商品のボタンのみが有効であるので、シナリオ行Ｌ１０７，Ｌ１０８は、「商品選択」（タイミングＴ１０２）ではなく、「購入完了」（タイミングＴ１０３）で実行される（Ｘ１０５，Ｘ１０６）。
【００５９】
３．６．階層化
続いて、図８に示すＳ１１６０では、十分に詳細化されているかを判断し、十分な詳細化が完了するまでシナリオ記述を繰り返す。
【００６０】
具体的に説明すると、仕様記述者は、各役割Ｙ１０１〜Ｙ１１３をサブシステム責務Ｍ１０１〜Ｍ１１３を、サブシステムのユースケースとして見立て、各役割Ｙ１０１の責務Ｍ１０１〜Ｍ１１３をシナリオ記述画面１１０で開き、上述したＳ１１２０〜Ｓ１１５０と同様の作業を行う。
【００６１】
例えば、図３に示すように、「金銭管理機構」（役割Ｙ１０２，Ｙ１０８，Ｙ１１０）は、３つの責務Ｍ１０２，Ｍ１０８，Ｍ１１１を有しており、３つの責務Ｍ１０２，Ｍ１０８，Ｍ１１１の各々に対して、上述したＳ１１２０〜Ｓ１１５０と同様の作業を行う。
【００６２】
つまり、図４では、サブシステム「金銭管理機構」のユースケース「金銭を受け取る」において、新たな役割Ｙ２０１〜Ｙ２０６が仕様記述者により記述され、その後、これら各役割Ｙ２０１〜Ｙ２０６が持つ責務Ｍ２０１〜Ｍ２０６についても、Ｓ１１２０〜Ｓ１１５０と同様の作業が繰り返し行われることで、次第に責務の内容は単純になり、役割分担しなくても達成できる粒度になる。そして、役割分担しなくても達成できる程度になったところを末端とし、階層化の作業が終了する。
【００６３】
なお、図４は、責務Ｍ１０２を実現するシナリオであるが、責務Ｍ１０３を実現するシナリオ、及び、責務Ｍ１０４を実現するシナリオも同様に記述される。このことは、他の役割の責務についても同様である。
【００６４】
そして、階層化の作業の結果として、端末装置１０によって上述した役割階層ツリー１３０（図５参照）が生成される。
本実施例では、図５を見てもわかるように、システムＳ３０１（「自動販売機」）は、ユースケースＵ３０１（「商品を購入する」）を有しており、そのユースケースＵ３０１を実現するために、サブシステムＳ３０１（「金銭管理機構」）、サブシステムＳ３０２（「商品管理機構」）、サブシステムＳ３０３（「商品ディスプレイ」）を有している。
【００６５】
さらに、サブシステムＳ３０２は、ユースケースＵ３０２（「金銭を受け取る」）、ユースケースＵ３０３（「代金を差し引く」）、ユースケースＵ３０４（「返金する」）、ユースケースＵ３０５（「釣銭切れを表示する」）を有しており、これらユースケースＵ３０２〜Ｕ３０５を実現するために、サブシステムＳ３０５（「金銭判別部」）、サブシステムＳ３０６（「投入金額計算部」）、サブシステムＳ３０７（「投入金額表示部」）、サブシステムＳ３０８（「金銭保管部」）、サブシステムＳ３０９（「釣銭切れランプ」）を有している。
【００６６】
また更に、サブシステムＳ３０５は、ユースケースＵ３１２（「金銭の種類を判別する」）、ユースケースＵ３１３（「リセットする」）、ユースケースＵ３１４（「投入金額を返却する」）を有しており、これらのユースケースＵ３１２〜Ｕ３１３は十分単純と考えてよいので、サブシステムＳ３０５を末端の役割に詳細化できる（役割Ｓ３１０〜Ｓ３１６の下位層も同様であるので、省略する）。
【００６７】
３．７．フラット化
上位層のシナリオを、下位層のシナリオで置換する、といった作業が自動で行われる。
３．８．再利用部品の抽出
続いて、図８に示すＳ１１８０では、仕様記述者が上記「コンポーネント定義」ボタンを選択することにより、末端の役割に相当する部分（コンポーネント）が、また、上記「フレームワーク定義」ボタンを選択することにより、任意のユースケースを末端の役割の関係として表されたもの（フレームワーク）が、再利用部品として抽出される。
【００６８】
本発明によるプログラム作成支援装置では、前述のように部品点数を増やさないためにフラット化を行い、任意のユースケースを末端の役割だけによるシナリオに置換している。図６ではフラット化の一例を示している。例えば、図３には、ルートレベル（上位階層）のユースケース「商品を購入する」のシナリオが記述されている。ここで、役割Ｙ１０２（「金銭管理機構」）の責務Ｍ１０２（「金銭を受け取る」）は、図４にシナリオで表現されるので、端末装置１０は、図３に示すシナリオ行Ｌ１０２を、図４に示すシナリオ行Ｌ２０１〜Ｌ２０６で置換する。図示は省略しているが、端末装置１０は、上記と同様に、図３の役割Ｙ１０１〜Ｙ１１３の責務Ｍ１０１〜１１３を、その下位層のシナリオに置換する。さらにこれを末端に行き着くまで繰り返す。
【００６９】
これにより、自販機２０のシナリオは、例えば図６に示すように、末端の役割とその責務によって表現される。
図６をさらに整理して、末端の役割とその関係に区分けしたものを図７に示す。
【００７０】
例えば、図６においてシナリオ行Ｌ４０１，Ｌ４０４，Ｌ４０５では、末端の役割「金銭判別部」の振る舞いについて表されているので、シナリオ行Ｌ４０１，Ｌ４０４，Ｌ４０５の責務Ｍ４０１，Ｍ４０４，Ｍ４０５を、操作メソッドとして、またシナリオ行Ｌ４０１にはデータＤ４０２が公開されるので（公開Ｒ４０２）、このデータＤ４０２を属性データとしてまとめたものが図７に示すコンポーネントＣ５０１となる。
【００７１】
また、他の末端の役割についても、上記と同様にコンポーネントＣ５０２〜Ｃ５０５（図７参照）としてまとめられる。
最後に、部品間の関係だけを表したものが残り、この部分がフレームワークＦ５０１（図７参照）となる。
【００７２】
また、コンポーネントＣ５０１は、図７に示すように、「金銭の種類を判別する」という責務（操作メソッド）Ｍ５０１を実行する際に、データＤ５０１（「金銭」）を参照する必要があるが（参照Ｒ５０１）、このデータＤ５０１は、フレームワークＦ５０１が提供するので、コンポーネントＣ５０１がデータＤ５０１を意識する必要はない。
【００７３】
同様に、責務（操作メソッド）Ｍ５０１の結果として、公開データＰ５０１が生成されるが、これがどこで使われるかもフレームワークＦ５０１が提供するので、コンポーネントＣ５０１が意識する必要はない。
【００７４】
すなわち、フレームワークＦ５０１は、やりたいことを表す部品であり、コンポーネントＣ５０１〜Ｃ５０５は、どうやるかを表す部品と定義され、コンポーネントＣ５０１〜Ｃ５０５の独立性が高く保たれる。
【００７５】
なお、この時点でのコンポーネントＣ５０１〜Ｃ５０３は、インターフェースが定義されるだけなので、プログラマは、処理ロジックを作成する必要があるが、これらコンポーネントＣ５０１〜Ｃ５０３は、シナリオによって細分化されているので、スキルの高いプログラマでなくてもプログラムを作成でき、またコンポーネントの独立性が高いので、分業も容易である。
【００７６】
以上説明したように、Ｓ１１８０では、独立性の高い再利用部品が、シナリオ記述から機械的に抽出される。なお、末端の役割が担える既存のコンポーネントが存在する場合はそのコンポーネントを再利用すれば良く、前述のコンポーネント定義を行う必要がないことは言うまでもない。
【００７７】
３．９．アプリケーションの組み立て、及び、実装
続いて、図８に示すＳ１１９０では、プログラム作成支援ソフトで作成されたフレームワークとコンポーネントを使って、システム開発者がアプリケーション（プログラム）を組み立て、続くＳ１２００にて、そのアプリケーションをシステム開発者がシステム（自販機２０）の制御部６０に組み込んで、図８に示す作業が終了する。
【００７８】
４．本実施形態に係る端末装置の特徴
本実施形態では、端末装置１０の使用者（仕様記述者）は、システム（自販機２０）のシナリオを記述する際に、「いつ」（タイミング）、「どこで」（状況）、「誰が」（制御対象物）、「何をどうする」（作動の内容）、といった複数の情報を追加することでを自然言語による記述の弱点をカバーすることとなる。
【００７９】
このため、仕様記述者がシステム（自販機２０）の要求仕様を記述する際に、従来技術に比べて記述内容を明確に記述することとなるので、仕様記述者により記述された要求仕様がソフトウェア開発者（プログラマ）に対して伝わりやすくなる。したがって、仕様記述者により記述された要求仕様の完全性を向上させることができる。
【００８０】
また、本実施形態では、図３に示すように、状況（シーンＳ１０１〜Ｓ１０５）を明確にして、システムの振る舞い（ト書きＣ１０１〜Ｃ１０５）を記述することで、仕様記述者の視点が理解しやすく、第３者による仕様の漏れ、矛盾の発見を容易にすることができる。
【００８１】
また、本実施形態によれば、いかなる要求仕様も役割分担の階層構造で表現することが出来る、また、プログラムを作成する際には、末端の役割とそれらの関係を表す２種類の部品で構成することが出来る。
【００８２】
このため、亜種が発生し易い中間層の役割を部品化する必要がないので、部品点数を低減することができる。
また、本実施形態では、末端の役割のみを作成すれば良く、末端の役割は単純明快なレベルに詳細化されていて、なおかつ、フレームワークを介してしか関係しないため独立性が高く、再利用（使い回し）し易くなる。
【００８３】
（その他の実施形態）
上記実施形態では、端末装置１０の使用者（設計者）が作成する実現方法に基づき作成されるプログラムとして、自販機２０用のプログラムを例に挙げて説明したが、本発明はこれに限定されるものではなく、端末装置１０では、例えば車両のエンジンを制御するプログラムの要求仕様の作成を支援するようにしてもよいし、あるいはエアコンを制御するプログラムの要求仕様の作成を支援するようにしてもよい。
【００８４】
また、本発明は、特許請求の範囲に記載された発明の趣旨に合致するものであればよく、上述の実施形態に限定されるものではない。
【図面の簡単な説明】
【００８５】
【図１】本発明のプログラム作成支援装置が適用された端末装置、及び対象となる組込み機器の構成を表すブロック図である。
【図２】本実施形態のユースケース図作成画面を説明する説明図である。
【図３】同実施形態のシナリオ記述画面を説明する説明図である。
【図４】同実施形態で別の階層を示したシナリオ記述画面を説明する説明図である。
【図５】同実施形態の役割階層ツリーを説明する説明図である。
【図６】同実施形態のフラット化を説明する説明図である。
【図７】同実施形態の再利用部品の概念を説明する説明図である。
【図８】同実施形態のプログラムの設計から組み込みまでの手順を説明する説明図である。
【符号の説明】
【００８６】
１０…端末装置、１１…表示部、１２…ＨＤＤ、１３…操作部、２０…自動販売機、６０…制御部、１００…ユースケース図記述画面、１１０…第１シナリオ記述画面、１３０…役割階層ツリー、１４０…フラット化概念図、１５０…再利用部品概念図、Ａ１，Ａ２…アクター、Ｂ１…システム境界、Ｃ１０１〜Ｃ１０５，Ｃ２０１〜Ｃ２０４…ト書き、Ｃ５０１〜Ｃ５０５…コンポーネント、Ｄ１０１〜Ｄ１０８，Ｄ２０１〜Ｄ２０３，Ｄ４０１〜Ｄ４０５，Ｄ５０１〜Ｄ５０５…データ、Ｅ１０１〜Ｅ１０３，Ｅ２０１〜Ｅ２０３，Ｅ４０１〜Ｅ４０２，Ｅ５０１〜Ｅ５０２…トリガ、Ｆ５０１…フレームワーク、Ｌ１０１〜Ｌ１１３，Ｌ２０１〜Ｌ２０６，Ｌ４０１〜Ｌ４１０…シナリオ行、Ｍ１０１〜Ｍ１１３，Ｍ２０１〜Ｍ２０６，Ｍ４０１〜Ｍ４１０，Ｍ５０１〜Ｍ５１０…責務、Ｎ１…名称、Ｐ１０１〜Ｐ１１０，Ｐ２０１〜Ｐ２０２，Ｐ４０１〜Ｐ４０３，Ｐ５０１〜Ｐ５０３…公開、Ｒ１０１〜Ｒ１１０，Ｒ２０１〜Ｒ２０５，Ｒ４０１〜Ｒ４０５，Ｒ５０１〜Ｒ５０５…参照、Ｓ１０１〜Ｓ１０３，Ｓ２０１…シーン、Ｓ３０１〜Ｓ３１６…サブシステム、Ｔ１０１〜Ｔ１０３，Ｔ２０１〜Ｔ２０３，Ｔ４０１〜Ｔ４０７，Ｔ５０１〜Ｔ５０７…タイミング、Ｕ１〜Ｕ３，Ｕ３０１〜Ｕ３２１…ユースケース、Ｘ１０１〜Ｘ１０９，Ｘ２０１〜Ｘ２０５，Ｘ４０１〜Ｘ４１０，Ｘ５０１〜Ｘ５１０…実行、Ｙ１０１〜Ｙ１１３，Ｙ２０１〜Ｙ２０６，Ｙ４０１〜Ｙ４１０…役割。
【図１】
2009064319.tif 000003
【図２】
2009064319.tif 000004
【図３】
2009064319.tif 000005
【図４】
2009064319.tif 000006
【図５】
2009064319.tif 000007
【図６】
2009064319.tif 000008
【図７】
2009064319.tif 000009
【図８】
2009064319.tif 000010