(57)【要約】関係取得手段（１）は設計対象システムに要求される機能の実現に必要な複数のシーケンスと、該シーケンスがメッセージを授受するオブジェクトとの関係を取得する。グループ化手段（２）は同一のオブジェクトに対してメッセージを授受するシーケンスをグループ化して該オブジェクトに対応するグループを構成する。同一のシーケンスが異なるグループに重複して属したときは、該シーケンスがメッセーを授受するオブジェクトに対してメッセージを授受する他のシーケンスと該シーケンスとの間での該オブジェクトに関する実行順序の関係に基づいて重複解消手段（３）が該重複を解消する。出力手段（４）は重複が解消されたものを含むグループを機能ブロックに対応付け、該機能ブロックに対応するグループに属するシーケンスを出力する。
2003096183.tif 000002
【特許請求の範囲】
【請求項１】
設計対象システムに要求される機能が複数の機能ブロックの組み合わせによって構成されるように該機能を該機能ブロックへと分割するシステムであって、
前記機能を実現させるためには実行することが必要とされる複数のシーケンスと、該シーケンスがメッセージの授受を行なうオブジェクトとの関係を取得する関係取得手段と、
同一のオブジェクトに対してメッセージの授受を行なう前記シーケンスをグループ化して該オブジェクトに対応するグループを構成するグループ化手段と
前記グループ化によって同一のシーケンスが異なるグループに重複して属したときに、該シーケンスがメッセージの授受を行なうオブジェクトに対してメッセージの授受を行なう他のシーケンスと該シーケンスとの間での該オブジェクトに関する実行順序の関係に基づいて該シーケンスについての該重複を解消する重複解消手段と、
前記機能ブロックに前記グループを対応付け、該機能ブロックで実行させるシーケンスとして、該機能ブロックに対応するグループに属するシーケンスを出力する出力手段と、
を有することを特徴とする機能ブロック分割システム。
【請求項２】
設計対象システムに要求される機能が複数の機能ブロックの組み合わせによって構成されるように該機能を該機能ブロックへと分割する方法であって、
前記機能を実現させるためには実行することが必要とされる複数のシーケンスと、該シーケンスがメッセージの授受を行なうオブジェクトとの関係を取得し、
同一のオブジェクトに対してメッセージの授受を行なう前記シーケンスをグループ化して該オブジェクトに対応するグループを構成し、
前記グループ化によって同一のシーケンスが異なるグループに重複して属したときに、該シーケンスがメッセージの授受を行なうオブジェクトに対してメッセージの授受を行なう他のシーケンスと該シーケンスとの間での該オブジェクトに関する実行順序の関係に基づいて該シーケンスについての該重複を解消し、
前記機能ブロックに前記グループを対応付け、該機能ブロックで実行させるシーケンスとして、該機能ブロックに対応するグループに属するシーケンスを出力する、
ことを特徴とする機能ブロック分割方法。
【請求項３】
設計対象システムに要求される機能が複数の機能ブロックの組み合わせによって構成されるように該機能を該機能ブロックへと分割する処理をコンピュータに行なわせるためのプログラムであって、
前記機能を実現させるためには実行することが必要とされる複数のシーケンスと、該シーケンスがメッセージの授受を行なうオブジェクトとの関係を取得する関係取得処理と、
同一のオブジェクトに対してメッセージの授受を行なう前記シーケンスをグループ化して該オブジェクトに対応するグループを構成するグループ化処理と、
前記グループ化処理によって同一のシーケンスが異なるグループに重複して属したときに、該シーケンスがメッセージの授受を行なうオブジェクトに対してメッセージの授受を行なう他のシーケンスと該シーケンスとの間での該オブジェクトに関する実行順序の関係に基づいて該シーケンスについての該重複を解消する重複解消処理と、
前記機能ブロックに前記グループを対応付け、該機能ブロックで実行させるシーケンスとして、該機能ブロックに対応するグループに属するシーケンスを出力する出力処理と、
をコンピュータに行なわせるためのプログラム。
【請求項４】
前記グループ化処理は、前記複数のシーケンスの全てがメッセージの授受を行なうオブジェクトを前記グループ化の基準から除外して前記グループを構成する処理をコンピュータに行なわせることを特徴とする請求の範囲第３項に記載のプログラム。
【請求項５】
前記グループ化処理は、前記複数のシーケンスのうちの１つのみがメッセージの授受を行なうオブジェクトを前記グループ化の基準から除外して前記グループを構成する処理をコンピュータに行なわせることを特徴とする請求の範囲第３項に記載のプログラム。
【請求項６】
前記グループ化処理は、前記複数のシーケンスのうちのいずれによるメッセージの授受によってもデータの書き込みが行なわれないオブジェクトを前記グループ化の基準から除外して前記グループを構成する処理をコンピュータに行なわせることを特徴とする請求の範囲第３項に記載のプログラム。
【請求項７】
前記グループ化処理によって構成されたグループに属する各シーケンスの実行順序を該グループが対応しているオブジェクトに関する実行順序の関係に基づいて決定する実行順序決定処理を更にコンピュータに行なわせ、
前記出力処理は、前記機能ブロックに対応するグループに属するシーケンスと共に、該シーケンスの該グループにおける前記実行順序を示す情報を併せて出力する処理をコンピュータに行なわせる、
ことを特徴とする請求の範囲第３項に記載のプログラム。
【請求項８】
前記関係取得処理は、前記機能の内容が表されるユースケースを実現するために行なう動作内容が記述されたシナリオから得られる情報に基づいて前記関係を取得する処理をコンピュータに行なわせることを特徴とする請求の範囲第３項に記載のプログラム。
【請求項９】
前記グループ化処理によって構成されたグループに該グループとは異なる他のグループにも重複して属しているシーケンスが複数属しているときに、複数の該シーケンスを１つのシーケンスへと統合して該グループに属するようにするシーケンス統合処理を更にコンピュータに行なわせ、
前記重複解消処理は、前記シーケンス統合処理によって統合されたものを含む前記シーケンスを対象として前記重複を解消する処理をコンピュータに行なわせる、
ことを特徴とする請求の範囲第３項に記載のプログラム。
【請求項１０】
前記機能を実現させるためには実行することが必要とされる複数のシーケンスの各々について、該シーケンスの前記設計対象システムにおける実行に要する実行時間を示す情報を取得するシーケンス実行時間取得処理と、
前記出力処理によって前記機能ブロックで実行されるものとして出力されるシーケンスの各々についての前記実行時間の合計を算出することによって、前記機能ブロックとして実行されるシーケンスの前記設計対象システムにおける実行に要する実行時間を取得する機能ブロック実行時間取得処理と、
を更にコンピュータに行なわせることを特徴とする請求の範囲第３項に記載のプログラム。
【請求項１１】
前記機能を実現させるためには実行することが必要とされる複数のシーケンスの各々について、該シーケンスの前記設計対象システムにおける実行のために費やされるメモリ量を示す情報を取得するシーケンス消費メモリ量取得処理と、
前記出力処理によって前記機能ブロックで実行されるものとして出力されるシーケンスの各々についての前記メモリ量の合計を算出することによって、前記機能ブロックとして実行されるシーケンスの前記設計対象システムにおける実行のために費やされるメモリ量を取得する機能ブロック消費メモリ量取得処理と、
を更にコンピュータに行なわせることを特徴とする請求の範囲第３項に記載のプログラム。
【発明の詳細な説明】
技術分野
本発明は、システム設計を支援する技術に関し、特に、設計対象のシステムを複数の機能ブロックに分割して機能ブロック毎に設計を行なうときに好適に用いられる技術に関する。
背景技術
システム設計、例えば入力データに何らかの加工を施して出力する組み込み装置におけるシステム設計を、ソフトウェア設計技法として広く知られているオブジェクト指向設計に沿って行なう場合を考える。この場合、設計対象であるシステムの要求仕様を充足させるために必要な機能の抽出がまず行なわれ、続いてその抽出された個々の機能を実現するための手続きがシーケンスとして表される。シーケンスは設計対象のシステムを構成する要素とその構成要素間で授受されるデータとの関係を示すものであり、そのシーケンスが時系列に表現されたものがシーケンス図である。
設計されたシステムにおいてシーケンスの実行が並行して行なわれるときには、その実行されるシーケンスの組み合わせによって構成要素とのデータの授受がスムーズに行なわれる場合と、シーケンス間で同一の構成要素に対するデータの授受が同時刻に競合してしまいデータの授受がスムーズに行なうことのできない場合とが発生し得る。この後者の場合が発生する可能性があるときには、この競合状態を回避するための手段をシステムに用意する必要がある。
ここで図１について説明する。同図は従来行なわれていた競合回避の手続きを説明する図である。
同図にはオブジェクトａ１００１とオブジェクトｂ１００２とに係る（１）ｎｅｗ、（２）ｃｈｅｃｋ、（３）ａｄｄＴａｉｌなる順序の３つのメッセージが示されている。各メッセージについて説明すると、ｎｅｗは「オブジェクトａ１００１がオブジェクトｂ１００２を作成する」というシーケンス、ｃｈｅｃｋは「オブジェクトａ１００１がオブジェクトｂ１００２にアクセスできることを確認する」というシーケンス、そしてａｄｄＴａｉｌは「オブジェクトａ１００１がオブジェクトｂ１００２のデータの末尾に他のデータを付加させる」というシーケンスを各々実行する。
ここで、ｃｈｅｃｋシーケンスが実行されると、まず、Ｓ２００１においてオブジェクトｂ１００２がアクセス可能であるか否かを判定する処理が行なわれる。この判定処理は、不図示の他のオブジェクトからオブジェクトｂ１００２に対するアクセスが行なわれていない状態にある場合に限り判定結果がＹｅｓとなり、Ｓ２００２においてオブジェクトａ１００１からオブジェクトｂ１００２へのアクセスが行なわれる。一方、Ｓ２００１の判定処理の結果がＮｏであるときにはこのＳ２００１の判定処理が繰り返し行なわれ、その繰り返しが継続している限りオブジェクトａ１００１からオブジェクトｂ１００２へのアクセスは行なわれない。
従来の手法によって設計されたシステムには、このようなＳ２００１及びＳ２００２の処理を行なう競合回避の手段を、前述した競合状態が発生する可能性のある全てのシーケンスについて用意しておく必要があった。
システム設計において、設計対象のシステムと要求仕様の似ている既に設計済みのシステムをベースにし、設計対象のシステムに特有の機能を実現させるためのアーキテクチュアを追加すると共にその設計対象のシステムには不要の部分を削除する作業を行なうようにして、システム設計の作業負担を全て新規に設定する場合に比べて軽減させるという手法は一般的に行なわれている。しかしながら、このような設計手法を採用するときは、正常に機能することが確認されている既に設計済みのシステムのシーケンスの組み合わせ（機能ブロック）には極力変更を加えないようにするので、新たなシーケンスの追加のために前述したような競合回避の手段を設ける場合が多数発生してしまい、システム設計の簡単化を妨げる要因となっていた。
発明の開示
上述した問題を鑑み、本発明は、設計対象のシステムを複数の機能ブロックに分割して機能ブロック毎に設計を行なう場合において、そのシステムの要求仕様を充足させるために実行すべき細分化されたシーケンスを各機能ブロックに分配するときに、シーケンス間での競合の発生が少なくなるように各シーケンスを分配することを課題とする。
まず、図２について説明する。同図は本発明の原理構成を示している。同図は本発明に係る機能ブロック分割システムを示しており、このシステムは設計対象システムに要求される機能が複数の機能ブロックの組み合わせによって構成されるように該機能を該機能ブロックへと分割するものである。
同図において、１は関係取得手段、２はグループ化手段、３は重複解消手段、４は出力手段である。
関係取得手段１は、入力された情報から、設計対象システムに要求される機能を実現させるためには実行することが必要とされる複数のシーケンスと、該シーケンスがメッセージの授受を行なうオブジェクトとの関係を取得する。
グループ化手段２は、関係取得手段１で取得されたシーケンスとオブジェクトとの関係に基づいて、同一のオブジェクトに対してメッセージの授受を行なうシーケンスをグループ化して該オブジェクトに対応するグループを構成する。
重複解消手段３は、グループ化手段２によるグループ化によって同一のシーケンスが異なるグループに重複して属したときに、該シーケンスがメッセージの授受を行なうオブジェクトに対してメッセージの授受を行なう他のシーケンスと該シーケンスとの間での該オブジェクトに関する実行順序の関係に基づいて該シーケンスについての該重複を解消する。
出力手段４は、グループ化手段２で構成された、重複解消手段３による重複の解消がなされたものを含むグループを前述した機能ブロックに対応付け、該機能ブロックで実行させるシーケンスとして、該機能ブロックに対応するグループに属するシーケンスを出力する。
上記の構成によれば、同一のオブジェクトに対するメッセージの授受は同一の機能ブロックに属するシーケンスで行なわれるので、同一の機能ブロックに属するシーケンスの実行順序を管理しておけば、そのオブジェクトに対するメッセージの授受によってシーケンスの競合が発生することはない。
また、同一のシーケンスが異なるグループに重複して属したときには、重複解消手段３によって、該シーケンスがメッセージの授受を行なうオブジェクトに対してメッセージの授受を行なう他のシーケンスと該シーケンスとの間での該オブジェクトに関する実行順序の関係に基づき該シーケンスについての該重複の解消が行なわれる。例えば、該シーケンスがそのグループにおいて一番初め以外の順序で実行しなければならないグループに属しているときには、重複解消手段３は該シーケンスをそのグループのみに属するようにして他のグループへの従属を解消する。こうすることにより、各機能ブロックの実行順序を管理しておけば、該メッセージとその従属が解消されたグループに属するシーケンスとが同一のオブジェクトに対してメッセージの授受を同時に行なうことがなくなるので、このオブジェクトに対するメッセージの授受によるシーケンスの競合が回避される。
なお、図２に示す構成において、設計対象システムに要求される機能を実現させるためには実行することが必要とされる複数のシーケンスの全てがメッセージの授受を行なうオブジェクトをグループ化手段２がグループ化の基準から除外してグループを構成するようにすることができる。
このようなオブジェクトに対してメッセージの授受を行なうときにおけるシーケンスの競合は本発明によるグループ化では不可避であるので、上述したようにこのオブジェクトをグループ化の基準から除外することにより、グループ化手段２がグループの構成を行なうため、及び重複解消手段３が重複の解消を行なうために要する処理負担が軽減される。
また、図２に示す構成において、設計対象システムに要求される機能を実現させるためには実行することが必要とされる複数のシーケンスのうちの１つのみがメッセージの授受を行なうオブジェクトをグループ化手段２がグループ化の基準から除外してグループを構成するようにすることができる。
このようなオブジェクトに対してメッセージの授受を行なうシーケンスが唯１つのみであれば、このメッセージの授受によってシーケンスの競合は起こり得ないので、上述したようにこのオブジェクトをグループ化の基準から除外することにより、グループ化手段２がグループの構成を行なうために要する処理負担が軽減される。
また、図２に示す構成において、設計対象システムに要求される機能を実現させるためには実行することが必要とされる複数のシーケンスのうちのいずれによるメッセージの授受によってもデータの書き込みが行なわれないオブジェクトをグループ化手段２がグループ化の基準から除外してグループを構成するようにすることができる。
例えこのようなオブジェクトに対するメッセージの授受によってシーケンスの競合が発生したとしても、このオブジェクトに対する全てのメッセージの授受においてデータの書き込みが行なわれない、例えば読み出しのみであれば、各シーケンスの実行に悪影響を与える事はないので、上述したようにこのオブジェクトをグループ化の基準から除外することにより、グループ化手段２がグループの構成を行なうため、及び重複解消手段３が重複の解消を行なうために要する処理負担が軽減される。
また、図２に示す構成において、グループ化手段２によって構成されたグループに属する各シーケンスの実行順序を該グループが対応しているオブジェクトに関する実行順序の関係に基づいて決定する実行順序決定手段を更に設け、出力手段４が、機能ブロックに対応するグループに属するシーケンスと共に、該シーケンスの該グループにおける該実行順序を示す情報を併せて出力するようにすることができる。
こうすることにより、システムの出力として、各機能ブロックで実行させるシーケンスの種別のみならず、シーケンス間の競合を回避するための実行順序をも提示することが可能となる。
また、図２に示す構成において、関係取得手段１は、設計対象システムに要求される機能の内容が表されるユースケースを実現するために行なう動作内容が記述されたシナリオから得られる情報に基づいて、該機能を実現させるためには実行することが必要とされる複数のシーケンスと、該シーケンスがメッセージの授受を行なうオブジェクトとの関係を取得するようにすることができる。
こうすることにより、設計対象システムに要求される機能の内容が表されるユースケースを実現するために行なう動作内容が記述されたシナリオを本発明に係るシステムに入力することによって、該機能の機能ブロックへの分割をこのシステムに行なわせることができるようになる。
また、図２に示す構成において、グループ化手段２によって構成されたグループに該グループとは異なる他のグループにも重複して属しているシーケンスが複数属しているときに、複数の該シーケンスを１つのシーケンスへと統合して該グループに属するようにするシーケンス統合手段を更に設け、重複解消手段３が、該シーケンス統合手段によって統合されたものを含む該シーケンスを対象として重複の解消を行なうようにすることができる。
グループ化手段２によって構成されたグループに該グループとは異なる他のグループにも重複して属しているシーケンスが複数属しているときには、重複解消手段３が重複の解消を行なってもシーケンスの競合が回避できない場合がある。このような場合に、上述したように、他のグループに属するシーケンスと共通のオブジェクトをアクセスの対象としているシーケンスを１つのシーケンスに統合し、この統合されたものを含む該シーケンスを対象として重複解消手段３が重複の解消を行なうことにより、シーケンスの競合が回避され得る。
また、図２に示す構成において、設計対象システムに要求される機能を実現させるためには実行することが必要とされる複数のシーケンスの各々について、該シーケンスの該設計対象システムにおける実行に要する実行時間を示す情報を取得するシーケンス実行時間取得手段と、出力手段４によって機能ブロックで実行されるものとして出力されるシーケンスの各々についての該実行時間の合計を算出することによって、該機能ブロックとして実行されるシーケンスの該設計対象システムにおける実行に要する実行時間を取得する機能ブロック実行時間取得手段と、を更に設ける構成とすることができる。
こうすることにより、設計対象システムの時間的な性能に対する要求を満たせるかどうかをこの本発明に係るシステムによる処理結果から判断することができるようになる。
また、図２に示す構成において、設計対象システムに要求される機能を実現させるためには実行することが必要とされる複数のシーケンスの各々について、該シーケンスの該設計対象システムにおける実行のために費やされるメモリ量を示す情報を取得するシーケンス消費メモリ量取得手段と、出力手段４によって機能ブロックで実行されるものとして出力されるシーケンスの各々についての該メモリ量の合計を算出することによって、該機能ブロックとして実行されるシーケンスの該設計対象システムにおける実行のために費やされるメモリ量を取得する機能ブロック消費メモリ量取得手段と、を更に設ける構成とすることができる。
こうすることにより、設計対象システムのメモリ容量に対する要求を満たせるかどうかをこの本発明に係るシステムによる処理結果から判断することができるようになる。
なお、設計対象システムに要求される機能が複数の機能ブロックの組み合わせによって構成されるように該機能を該機能ブロックへと分割するために、前記機能を実現させるためには実行することが必要とされる複数のシーケンスと、該シーケンスがメッセージの授受を行なうオブジェクトとの関係を取得し、同一のオブジェクトに対してメッセージの授受を行なう前記シーケンスをグループ化して該オブジェクトに対応するグループを構成し、前記グループ化によって同一のシーケンスが異なるグループに重複して属したときに、該シーケンスがメッセージの授受を行なうオブジェクトに対してメッセージの授受を行なう他のシーケンスと該シーケンスとの間での該オブジェクトに関する実行順序の関係に基づいて該シーケンスについての該重複を解消し、前記機能ブロックに前記グループを対応付け、該機能ブロックで実行させるシーケンスとして、該機能ブロックに対応するグループに属するシーケンスを出力するようにする機能ブロック分割方法も本発明に係るものであり、こうすることにより、図２に示した本発明に係る機能ブロック分割システムと同様の作用・効果を奏し、前述した課題が解決される。
また、上述した本発明に係る機能ブロック分割方法に相当する処理をコンピュータに行なわせるための命令が記述されたプログラムであっても、該プログラムをコンピュータに読み込ませて実行させることにより、図２に示した本発明に係る機能ブロック分割システムと同様の作用・効果を奏し、前述した課題が解決される。
発明を実施するための最良の形態
以下、本発明の実施の形態を図面に基づいて説明する。なお、ここでは、本発明の実施例として、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の規格のひとつであるＦＤＤＩ（Ｆｉｂｅｒ−Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）に基づく伝送技術において用いられる、ＭＡＣ（メディア・アクセス・コントロール：Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）からＰＭＤ（物理層媒体依存部：Ｐｈｙｓｉｃａｌ−ｌａｙｅｒ  Ｍｅｄｉｕｍ  Ｄｅｐｅｎｄｅｎｔ）層へのデータ送信を行なうシステムの設計において本発明を実施する場合について説明する。
なお、以下の説明においては、オブジェクト指向を採用するソフトウェア開発の分野では広く知られている、ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）を用いてのシステム開発技法を適用して上記の設計対象システムの設計を行なうものとする。
［１．機能の抽出］
システムの設計では、まず、設計対象システムに要求されている機能の抽出が行なわれる。ＵＭＬを用いたシステム設計ではこの機能の抽出の結果をユースケース図で表現する。設計対象システムについて作成されたシステム全体のユースケース図を図３に示す。
図３において、１０及び３０はアクタ（Ａｃｔｏｒ）を示すアイコンである。アクタとは、設計対象システムの外部に存在してその設計対象システムとの間で相互に作用を及ぼし合うものである。アクタは図３に示すように人の形をしたアイコンで示されるが、人間であるとは限らず、設計対象システムと通信を行なう他のシステム等であってもよい。現に、図３に示すこの設計対象システムでは、アクタ１０はＭＡＣを示し、アクタ３０はＰＭＤ層を示している。
また、図３において、２０はユースケース（Ｕｓｅ  Ｃａｓｅ）を示すアイコンである。ユースケースとは、設計対象システムを構成するオブジェクトと前述したアクタとの協調動作を抽象化したものである。図３に示すこの設計対象システムではユースケース２０は「送信する」という動作を示している。
また、アクタ１０からユースケース２０への矢印及びユースケース２０からアクタ３０への矢印はアクタ１０及びアクタ３０とユースケース２０との関係を表現している。図３では、以上のアクタ１０及びアクタ３０、ユースケース２０、並びにこれらの矢印により、「ＭＡＣからＰＭＤ層へ送信する」という設計対象システムの機能が示されている。
［２．シナリオの作成及びユースケースの詳細化］
次に、上述した［１．］で作成されたユースケース図に基づいてシナリオ（Ｓｃｅｎａｒｉｏ）の作成を行なう。シナリオとは、ユースケースで示されている協調動作の実現のために行なうべき具体的な動作内容を詳細化して説明する文章である。
図３における「送信する」ユースケース２０については、例えば、「Ｆｒａｍｅを生成し、そのＦｒａｍｅへの格納用のＳｉｇｎａｌ及びＤａｔａを作り、そのＦｒａｍｅを送信する。」という文章がシナリオとして作成される。なお、ここで、「Ｓｉｇｎａｌ」とは、ＭＡＣからＰＭＤ層への送信データに付加される制御コードのことを意味しており、「Ｄａｔａ」とはＭＡＣからＰＭＤ層へ送られる実体データのことを意味している。
なお、ユースケースで示されている協調動作を実現させる手法が複数存在することがあるので、同一のユースケースから異なるシナリオが作成される場合がある。つまり、同一のユースケースについて作成されるシナリオは一意に決まるものではないのである。従って、本明細書において各ユースケースから作成されたものとして記載されているシナリオは単なる一例に過ぎないものである。
シナリオの作成を終えたときには、そのシナリオに基づいて元のユースケースの詳細化を行ない、詳細化されたユースケースを示すユースケース図を作成する。
ユースケースの詳細化は、そのシナリオにおいて使用されている動詞を抽出することによって行なわれる。前述したシナリオの例では、ユースケース２０である「送信する」の動作を実行するために「Ｆｒａｍｅを生成する」動作が必要であり、この「Ｆｒａｍｅを生成する」動作を実行するためには「Ｓｉｇｎａｌを作る」動作と「Ｄａｔａを作る」動作とが必要である。つまり、ユースケース２０である「送信する」の動作を実行するためには「Ｆｒａｍｅを生成する」のユースケースが必要であり、ユースケース「Ｆｒａｍｅを生成する」の動作を実行するためには「Ｓｉｇｎａｌを作る」及び「Ｄａｔａを作る」の２つのユースケースを必要とする。図３には、ユースケース２０の詳細化によって求められたこれら３つのユースケースが２１、２２、及び２３として示されている。
以降、これらの詳細化されたユースケースについてのシナリオの作成とユースケースの詳細化とが繰り返し行なわれる。
ここでは、図３の例に示した詳細化されたユースケースのうち、「Ｄａｔａを作る」ユースケース２３についてのシナリオの作成とユースケースの詳細化の手順を例示する。
「Ｄａｔａを作る」ユースケース２３については、例えば、「ＴａｉｌとＳｅｒｖｉｃｅフィールドとを付加し、ＰＡＤを作り、これらをスクランブルし、畳み込みを行ない、データ分割を行ない、インターリーブを施し、複素数への変換を行ない、ノーマライズし、そしてＰｉｌｏｔを付してＤａｔａを作成する」というシナリオが作成される。そして、このシナリオから、「Ｄａｔａを作る」ユースケース２３が「Ｔａｉｌを付加する」、「Ｓｅｒｖｉｃｅフィールドを付加する」、「ＰＡＤを作る」、「スクランブルする」、「畳み込みを行なう」、「データ分割を行なう」、「インターリーブを施す」、「複素数への変換を行なう」、「ノーマライズする」、及び「Ｐｉｌｏｔを付す」へと詳細化される。これらのユースケースが示されたユースケース図を図４に示す。
次に、これらのユースケースについてのシナリオが更に作成される。
「Ｔａｉｌを付加する」ユースケース３１については、例えば「ＲａｔｅＴａｂｌｅを参照し、その参照結果に基づいてＤａｔａエリアを作成し、そのエリアに存在する送信対象であるＤａｔａにＴａｉｌデータを付加する。」というシナリオが作成される。
「Ｓｅｒｖｉｃｅフィールドを付加する」ユースケース３２については、例えば「ＤａｔａエリアのＤａｔａにＳｅｒｖｉｃｅフィールドを付加する。」というシナリオが作成される。
「ＰＡＤを作る」ユースケース３３については、例えば「ＲａｔｅＴａｂｌｅを参照し、その参照結果に基づいてＰＡＤの数を計算し、そのＰＡＤの数に対応する数の“０”データをＤａｔａエリアのＤａｔａに付加する。」というシナリオが作成される。なお、ＰＡＤとはＭＡＣフレームにおける調整ビット（Ｐａｄｄｉｎｇ  Ｂｉｔ）のことである。
「スクランブルする」ユースケース３４については、例えば「Ｓｃｒａｍｂｌｅｒを初期化し、Ｄａｔａに対してスクランブルを施す。」というシナリオが作成される。
「畳み込みを行なう」ユースケース３５については、例えば「エンコーダを初期化し、Ｄａｔａに対してエンコード処理を行ない、Ｄａｔａに対応するＣｏｄｅｄＤａｔａエリアを作成し、ＲａｔｅＴａｂｌｅを参照し、ＣｏｄｅｄＤａｔａエリアに格納されているＣｏｄｅｄＤａｔａについてのＰｉｃｔｕｒｅ（畳み込み）を計算する。」というシナリオが作成される。
「データ分割を行なう」ユースケース３６については、例えば「ＣｏｄｅｄＤａｔａを分割し、ＲａｔｅＴａｂｌｅを参照して、ＣｏｄｅｄＤａｔａに対応するＤｉｖｉｄｅｄＤａｔａエリアを作成し、ＤｉｖｉｄｅｄＤａｔａエリアに格納されているＤｉｖｉｄｅｄＤａｔａを分割する。」というシナリオが作成される。
「インターリーブを施す」ユースケース３７については、例えば「ＲａｔｅＴａｂｌｅを参照して、ＤｉｖｉｄｅｄＤａｔａをインターリーブする。」というシナリオが作成される。
「複素数への変換を行なう」ユースケース３８については、例えば「ＤｉｖｉｄｅｄＤａｔａをもとにしてＣｏｍｐｌｅｘｅｄＤａｔａエリアを作成し、ＲａｔｅＴａｂｌｅを参照して、ＤｉｖｉｄｅｄＤａｔａに対応する複素数を作成し、その実部（ｒｅａｌ）と虚部（ｉｍａｇｉｎａｒｙ）とを取り出し、それらをＣｏｍｐｌｅｘｅｄＤａｔａエリアに追加することにより、ＤｉｖｉｄｅｄＤａｔａを複素数（ＣｏｍｐｌｅｘＮｕｍｂｅｒ）に変換する。」というシナリオが作成される。
「ノーマライズする」ユースケース３９については、例えば「ＲａｔｅＴａｂｌｅを参照して、ＣｏｍｐｌｅｘｅｄＤａｔａを正規化（ノーマライズ）する」というシナリオが作成される。
「Ｐｉｌｏｔを付す」ユースケース４０については、例えば「Ｐｉｌｏｔエリアを作成して、ＣｏｍｐｌｅｘｅｄＤａｔａにＰｉｌｏｔデータを付す」というシナリオが作成される。
［３．論理構造の明確化］
次に、上述した［２．］によって詳細化された各ユースケースについてのシナリオより、各ユースケースで示されている協調動作の対象となるオブジェクトを抽出し、抽出されたオブジェクトを抽象化したクラス及び各クラス間の関係を示すクラス図を作成して論理構造を明確にする。
オブジェクトをシナリオから抽出するには、そのシナリオにおいて使用されている名詞を抽出することによって行なわれる。
例えば、今までの説明において作成されたシナリオのうち、「送信する」ユースケース２０についてのシナリオ「Ｆｒａｍｅを生成し、そのＦｒａｍｅへの格納用のＳｉｇｎａｌ及びＤａｔａを作り、そのＦｒａｍｅを送信する。」からは、「Ｆｒａｍｅ」、「Ｓｉｇｎａｌ」、及び「Ｄａｔａ」なる３つの名詞がオブジェクトとして抽出されるので、これらを抽象化したＦｒａｍｅクラス、Ｓｉｇｎａｌクラス、及びＤａｔａクラスがクラス図に描かれる。
また、シナリオの内容から、Ｆｒａｍｅオブジェクト及びＳｉｇｎａｌオブジェクトと、Ｆｒａｍｅオブジェクト及びＤａｔａオブジェクトとは各々関連していることが分かる。そこで、クラス図におけるＦｒａｍｅクラスとＳｉｇｎａｌクラス及びＤａｔａクラスとの間が、このような関係に基づいて選択される各種の線により結ばれる。
図３及び図４に示した各ユースケースについて作成されたシナリオに基づいて作成されたクラス図を図５に示す。
なお、図５に示すクラス図において示されている各クラス間の関係の全てを既に作成したシナリオのみに基づいて描くことはできず、描かれている一部の関係は技術常識に従って描かれている。
［４．動作流れの作成］
次に、以上までに作成したシナリオ及びクラス図を参考にして、各ユースケースの動作を実現するために実行するシーケンス及びそのシーケンスの実行の手順を示すシーケンス図を作成する。
設計対象システムについて作成されたシステム全体のシーケンス図を図６に示す。同図は図３に示した設計対象システム全体のユースケース図に対応するものである。
図６に示されているシーケンスについて実行順に説明する。
まず、ＭＡＣアクタ１０がｎｅｗメッセージ１０１を発行し、Ｌａｙｅｒオブジェクト５０を生成するシーケンスが実行される。
次に、ＭＡＣアクタ１０がｒｅｃｅｉｖｅＲｅｑｕｅｓｔメッセージ１０２を発行し、ＭＡＣアクタ１０からの受信要求をＬａｙｅｒオブジェクト５０に送付するシーケンスが実行される。
次に、ＭＡＣアクタ１０がｒｅｃｅｉｖｅＤａｔａメッセージ１０３を発行し、ＭＡＣアクタ１０から出力される送信対象データをＬａｙｅｒオブジェクト５０に送付するシーケンスが実行される。
次に、Ｌａｙｅｒオブジェクト５０がｎｅｗメッセージ１０４を発行し、Ｆｒａｍｅオブジェクト６０を生成するシーケンスが実行される。
次に、Ｆｒａｍｅオブジェクト６０がｍａｋｅＤａｔａメッセージ１０５を発行し、Ｄａｔａを作成するシーケンスが実行される。このシーケンスは図３における「Ｄａｔａを生成する」ユースケース２３に相当する動作を実現するものである。
次に、Ｆｒａｍｅオブジェクト６０がｍａｋｅＳｉｇｎａｌメッセージ１０６を発行し、Ｄａｔａを作成するシーケンスが実行される。このシーケンスは図３における「Ｓｉｇｎａｌを生成する」ユースケース２２に相当する動作を実現するものである。
次に、Ｌａｙｅｒオブジェクト５０がＲｅｃｅｉｖｅメッセージ１０７を発行し、それまでに実行されたシーケンスによって作成されたＳｉｇｎａｌ及びＤａｔａからなるＦｒａｍｅをＬａｙｅｒオブジェクト５０からＰＭＤ層アクタ３０へ送付するシーケンスが実行される。
次に、Ｌａｙｅｒオブジェクト５０がｎｏｔｉｆｙＥｎｄメッセージ１０８及び１０９を発行し、動作の終了をＰＭＤ層アクタ３０及びＭＡＣアクタ１０に通知するシーケンスが実行される。
図６には以上のシーケンスが示されている。
次に図７について説明する。同図は図３に示したシーケンスのうち、ｍａｋｅＤａｔａメッセージ１０５の発行によって実行されるＤａｔａを作成するシーケンスを更に詳細化して示したシーケンス図であり、図４に示した「Ｄａｔａを作る」ユースケース２３についての詳細化されたユースケース図に対応するものである。
図７に示されているシーケンスについて実行順に説明する。
まず、「Ｔａｉｌを付加する」ユースケース３１に相当する動作を実現する「Ｔａｉｌを付加する」シーケンス２００、「Ｓｅｒｖｉｃｅフィールドを付加する」ユースケース３２に相当する動作を実現する「Ｓｅｒｖｉｃｅフィールドを付加する」シーケンス２１０、「ＰＡＤを作る」ユースケース３３に相当する動作を実現する「ＰＡＤを作る」シーケンス２２０、そして「スクランブルする」ユースケース３４に相当する動作を実現する「スクランブルする」シーケンス２３０が、Ｆｒａｍｅオブジェクト６０とＤａｔａオブジェクト７０との間でこの順序で実行される。
次に、「畳み込みを行なう」ユースケース３５に相当する動作を実現する「畳み込みを行なう」シーケンス２４０がＦｒａｍｅオブジェクト６０とＤａｔａオブジェクト７０及びＣｏｄｅｄＤａｔａオブジェクト７１との間で実行される。
次に、「データ分割を行なう」ユースケース３６に相当する動作を実現する「データ分割を行なう」シーケンス２５０がＦｒａｍｅオブジェクト６０とＣｏｄｅｄＤａｔａオブジェクト７１及びＤｉｖｉｄｅｄＤａｔａオブジェクト７２との間で実行される。
次に、「インターリーブを施す」ユースケース３７に相当する動作を実現する「インターリーブを施す」シーケンス２６０がＦｒａｍｅオブジェクト６０とＤｉｖｉｄｅｄＤａｔａオブジェクト７２との間で実行される。
次に、「複素数への変換を行なう」ユースケース３８に相当する動作を実現する「複素数への変換を行なう」シーケンス２７０がＦｒａｍｅオブジェクト６０とＤｉｖｉｄｅｄＤａｔａオブジェクト７２及びＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３との間で実行される。
次に、「ノーマライズする」ユースケース３９に相当する動作を実現する「ノーマライズする」シーケンス２８０がＦｒａｍｅオブジェクト６０とＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３との間で実行される。
次に、「Ｐｉｌｏｔを付す」ユースケース４０に相当する動作を実現する「Ｐｉｌｏｔを付す」シーケンス２９０がＦｒａｍｅオブジェクト６０とＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３との間で実行される。
図７には以上のシーケンスが示されている。
以下、図７に示されている各シーケンスの詳細を示したシーケンス図を図８から図１７に示し、その各図に示されているシーケンスについて実行順に説明する。
図８は、図７に示したシーケンスのうち、「Ｔａｉｌを付加する」シーケンス２００を更に詳細に示したシーケンス図である。
まず、Ｆｒａｍｅオブジェクト６０がｇｅｔＲａｔｅメッセージ２０１を発行し、ＲａｔｅＴａｂｌｅオブジェクト８０の有するデータを取得するシーケンスが実行される。
次に、Ｆｒａｍｅオブジェクト６０がｎｅｗメッセージ２０２を発行し、Ｄａｔａオブジェクト７０を生成するシーケンスが実行される。
次に、Ｆｒａｍｅオブジェクト６０がａｄｄＴａｉｌメッセージ２０３を発行し、Ｄａｔａオブジェクト７０の有する送信対象であるＤａｔａにＴａｉｌデータを付加するシーケンスが実行される。
図８には以上のシーケンスが示されている。
図９は、図７に示したシーケンスのうち、「Ｓｅｒｖｉｃｅフィールドを付加する」シーケンス２１０を更に詳細化して示したシーケンス図である。
このシーケンス図には、Ｆｒａｍｅオブジェクト６０がａｄｄＳｅｒｖｉｃｅメッセージ２１１を発行し、Ｄａｔａオブジェクト７０の有する送信対象であるＤａｔａにＳｅｒｖｉｃｅフィールドを付加するシーケンスが実行される。
図１０は、図７に示したシーケンスのうち、「ＰＡＤを作る」シーケンス２２０を更に詳細化して示したシーケンス図である。
まず、Ｆｒａｍｅオブジェクト６０がｍａｋｅＰＡＤメッセージ２２１を発行し、Ｄａｔａオブジェクト７０の有する送信対象であるＤａｔａにＰＡＤを付加させる指示を与えるシーケンスが実行される。
次に、Ｄａｔａオブジェクト７０は、このｍａｋｅＰＡＤメッセージ２２１に応じてｇｅｔＲａｔｅメッセージ２２２を発行し、ＲａｔｅＴａｂｌｅオブジェクト８０の有するデータを取得するシーケンスが実行される。
次に、Ｄａｔａオブジェクト７０がｃａｌｃＰＡＤメッセージ２２３を発行し、ＲａｔｅＴａｂｌｅオブジェクト８０から取得したデータに基づいてＰＡＤの数を計算するシーケンスが実行される。
次に、Ｄａｔａオブジェクト７０がｃａｌｃＺｅｒｏメッセージ２２４を発行し、直前のシーケンスで算出されたＰＡＤの数に対応する数の“０”データをＤａｔａオブジェクト７０の有する送信対象であるＤａｔａに付加する。
図１０には以上のシーケンスが示されている。
図１１は、図７に示したシーケンスのうち、「スクランブルする」シーケンス２３０を更に詳細化して示したシーケンス図である。
まず、Ｆｒａｍｅオブジェクト６０がｉｎｉｔメッセージ２３２を発行し、Ｓｃｒａｍｂｌｅｒオブジェクト９０を初期化するシーケンスが実行される。
次に、Ｆｒａｍｅオブジェクト６０がｓｃｒａｍｂｌｅメッセージ２３２を発行し、Ｄａｔａオブジェクト７０の有する送信対象であるＤａｔａに対してスクランブルを施させる指示を与えるシーケンスが実行される。
次に、Ｄａｔａオブジェクト７０は、このｓｃｒａｍｂｌｅメッセージ２３２に応じてｓｃｒａｍｂｌｅメッセージ２３３を発行し、Ｄａｔａオブジェクト７０の有する送信対象であるＤａｔａに対するスクランブル処理をＳｃｒａｍｂｌｅｒオブジェクト９０に行なわせるシーケンスが実行される。
図１１には以上のシーケンスが示されている。
図１２は、図７に示したシーケンスのうち、「畳み込みを行なう」シーケンス２４０を更に詳細化して示したシーケンス図である。
まず、Ｆｒａｍｅオブジェクト６０がｉｎｉｔメッセージ２４１を発行し、Ｅｎｃｏｄｅｒオブジェクト９１を初期化するシーケンスが実行される。
次に、Ｆｒａｍｅオブジェクト６０がｅｎｃｏｄｅメッセージ２４２を発行し、Ｄａｔａオブジェクト７０の有する送信対象であるＤａｔａに対してエンコード処理を施させる指示を与えるシーケンスが実行される。
次に、Ｄａｔａオブジェクト７０は、このｅｎｃｏｄｅメッセージ２４２に応じてｅｎｃｏｄｅメッセージ２４３を発行し、Ｄａｔａオブジェクト７０の有する送信対象であるＤａｔａに対するエンコード処理をＥｎｃｏｄｅｒオブジェクト９１に行なわせるシーケンスが実行される。
次に、Ｄａｔａオブジェクト７０がｎｅｗメッセージ２４４を発行し、ＣｏｄｅｄＤａｔａオブジェクト７１を生成するシーケンスが実行される。
次に、Ｆｒａｍｅオブジェクト６０がＰｉｃｔｕｒｅメッセージ２４５を発行し、ＣｏｄｅｄＤａｔａオブジェクト７１の有するＥｎｃｏｄｅｒオブジェクト９１によるエンコード済みのＤａｔａに対して畳み込みの計算を行なう指示を行なうシーケンスが実行される。
次に、ＣｏｄｅｄＤａｔａオブジェクト７１は、このｐｉｃｔｕｒｅメッセージ２４５に応じてｇｅｔＲａｔｅメッセージ２４６を発行し、畳み込みの計算のために必要であるＲａｔｅＴａｂｌｅオブジェクト８０の有するデータを取得するシーケンスが実行される。
図１２には以上のシーケンスが示されている。
図１３は、図７に示したシーケンスのうち、「データ分割を行なう」シーケンス２５０を更に詳細化して示したシーケンス図である。
まず、Ｆｒａｍｅオブジェクト６０がｄｉｖｉｄｅメッセージ２５１を発行し、ＣｏｄｅｄＤａｔａオブジェクト７０の有する畳み込みの行なわれた後のデータであるＣｏｄｅｄＤａｔａの分割を行なう指示を与えるシーケンスが実行される。
次に、ＣｏｄｅｄＤａｔａオブジェクト７１は、このｄｉｖｉｄｅメッセージ２５１に応じてｇｅｔＲａｔｅメッセージ２５２を発行し、データ分割のために必要であるＲａｔｅＴａｂｌｅオブジェクト８０の有するデータを取得するシーケンスが実行される。
次に、ＣｏｄｅｄＤａｔａオブジェクト７１がｎｅｗメッセージ２５３を発行し、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２を生成するシーケンスが実行される。
次に、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２はこのｎｅｗメッセージ２５３に応じてＤａｔａＤｉｖｉｄｅメッセージ２５４を発行し、前述したＣｏｄｅｄＤａｔａを分割するシーケンスが実行される。
図１３には以上のシーケンスが示されている。
図１４は、図７に示したシーケンスのうち、「インターリーブを施す」シーケンス２６０を更に詳細化して示したシーケンス図である。
まず、Ｆｒａｍｅオブジェクト６０がｉｎｔｅｒｌｅａｖｅメッセージ２６１を発行し、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２の有する分割済みのＤｉｖｉｄｅＤａｔａに対してインターリーブの処理を施す指示を行なうシーケンスが実行される。
次に、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２は、このｉｎｔｅｒｌｅａｖｅメッセージ２４５に応じてｇｅｔＲａｔｅメッセージ２６２を発行し、インターリーブの処理のために必要であるＲａｔｅＴａｂｌｅオブジェクト８０の有するデータを取得するシーケンスが実行される。
図１４には以上のシーケンスが示されている。
図１５は、図７に示したシーケンスのうち、「複素数への変換を行なう」シーケンス２７０を更に詳細化して示したシーケンス図である。
まず、Ｆｒａｍｅオブジェクト６０がｃｏｎｖｅｒｔＣｏｍｐｌｅｘメッセージ２７１を発行し、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２の有するインターリーブ処理の施された後のＤｉｖｉｄｅＤａｔａの複素数への変換を行なう指示を与えるシーケンスが実行される。
次に、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２は、このｃｏｎｖｅｒｔＣｏｍｐｌｅｘメッセージ２７１に応じてｎｅｗメッセージ２７２を発行し、ＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３を生成するシーケンスが実行される。
次に、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２がｇｅｔＲａｔｅメッセージ２７３を発行し、複素数変換のために必要であるＲａｔｅＴａｂｌｅオブジェクト８０の有するデータを取得するシーケンスが実行される。
次に、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２がｍａｋｅＣｏｍｐｌｅｘメッセージ２７４を発行し、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２の有するインターリーブ処理の施された後のＤｉｖｉｄｅＤａｔａに対する複素数への変換の処理を開始させるシーケンスが実行される。
次に、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２がｇｅｔＲｅａｌメッセージ２７５を発行し、ＣｏｍｐｌｅｘｅｄＥｎｃｏｄｉｎｇオブジェクト９２の有する複素数変換された後のＤｉｖｉｄｅＤａｔａにおける実部のデータを取得するシーケンスが実行される。
次に、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２がｇｅｔＩｍａｇｉｎａｒｙメッセージ２７６を発行し、ＣｏｍｐｌｅｘｅｄＥｎｃｏｄｉｎｇオブジェクト９２の有する複素数変換された後のＤｉｖｉｄｅＤａｔａにおける虚部のデータを取得するシーケンスが実行される。
次に、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２がａｄｄＲｅａｌＩｍａｇｉｎａｒｙメッセージ２７７を発行し、取得されたＤｉｖｉｄｅＤａｔａにおける実部データと虚部データとの組み合わせをＣｏｍｐｌｅｘｅｄＤａｔａとしてＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３に追加するシーケンスが実行される。
図１５には以上のシーケンスが示されている。
図１６は、図７に示したシーケンスのうち、「ノーマライズする」シーケンス２８０を更に詳細化して示したシーケンス図である。
まず、Ｆｒａｍｅオブジェクト６０がｎｏｒｍａｌｉｚｅメッセージ２８１を発行し、ＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３の有するＣｏｍｐｌｅｘｅｄＤａｔａに対して正規化の処理を施す指示を行なうシーケンスが実行される。
次に、ＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３は、このｎｏｒｍａｌｉｚｅメッセージ２８１に応じてｇｅｔＲａｔｅメッセージ２８２を発行し、正規化の処理のために必要であるＲａｔｅＴａｂｌｅオブジェクト８０の有するデータを取得するシーケンスが実行される。
次に、ＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３がｎｏｒｍａｌｉｚｅメッセージ２８３を発行し、ＣｏｍｐｌｅｘｅｄＤａｔａに対して正規化の処理を施すシーケンスが実行される。
図１６には以上のシーケンスが示されている。
図１７は、図７に示したシーケンスのうち、「Ｐｉｌｏｔを付す」シーケンス２９０を更に詳細化して示したシーケンス図である。
まず、Ｆｒａｍｅオブジェクト６０がｎｅｗメッセージ２９１を発行し、Ｐｉｌｏｔオブジェクト９３を生成するシーケンスが実行される。
次に、Ｆｒａｍｅオブジェクト６０がａｄｄＰｉｌｏｔメッセージ２９２を発行し、ＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３の有する正規化されたＣｏｍｐｌｅｘｅｄＤａｔａにＰｉｌｏｔデータを付加するシーケンスが実行される。
図１７には以上のシーケンスが示されている。
以上までの［１．］、［２．］、［３．］、及び［４．］の作業によって、設計対象システムの要求仕様を充足させるために必要な全てのシーケンスが獲得される。
［５．シーケンスのグループ化］
次に、ここまでの作業によって獲得された各シーケンスをいくつかの機能ブロックに統合したときに機能ブロック内でのシーケンス間でのオブジェクトの競合の発生が少なくなるように各シーケンスのグループ分けを行なう。ここでは、シーケンス間での競合は同一のオブジェクトに対して行なわれる、異なるメッセージの授受によって生じることに注目し、各シーケンスにおいてメッセージの授受が行なわれるオブジェクトの異同を基準にしたグループ分けを行なうことでシーケンス間でのオブジェクトの競合の発生が少ないシーケンスのグループ分けを実現させる。
なお、以下の説明においては、これまでに説明した設計対象システムの要求仕様である送信動作を詳細化した動作内容のうちの「Ｄａｔａを作る」の動作のために必要なシーケンスのグループ化について説明する。
［５．１  シーケンスとオブジェクトとの関係の整理］
まず、設計対象システムの要求仕様を充足させるために必要なシーケンスと、これらの各シーケンスでメッセージの授受が行なわれる各オブジェクトとの関係を整理して表に示す。
ここで、図１８について説明する。同図は、「Ｄａｔａを作る」の動作のために必要な全てのシーケンスと、これらの各シーケンスでメッセージの授受が行なわれる全てのオブジェクトとの関係を表にして示した図である。
同図に示す表において、各行には各シーケンスでメッセージの授受が行なわれるオブジェクトの名前が示されている。また、各列には図８から図１７にかけての各図面の番号が示されているが、これは、ここまでに説明した、「Ｄａｔａを作る」の動作のために必要な各シーケンスについてのシーケンス図が示されている図面の番号を示したものである。
図１８について更に説明すると、例えばＦｒａｍｅオブジェクト６０は、図８から図１７までの全ての図面に登場しているので、Ｆｒａｍｅオブジェクト６０の行における全項目に丸印が付されている。
また、例えばＤａｔａオブジェクト７０は、図８から図１２までの各図面に登場しているので、Ｆｒａｍｅオブジェクト６０の行における図８から図１２までの各図面に対応する項目に丸印が付されている。
以下同様に、ＣｏｄｅｄＤａｔａオブジェクト７１、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２、ＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３、ＲａｔｅＴａｂｌｅオブジェクト８０、Ｓｃｒａｍｂｌｅｒオブジェクト９０、Ｅｎｃｏｄｅｒオブジェクト９１、ＣｏｍｐｌｅｘｅｄＥｎｃｏｄｉｎｇオブジェクト９２、及びＰｉｌｏｔオブジェクト９３の各々について、各オブジェクトが登場する図面に対応する項目に丸印が付されている。
［５．２  シーケンスのグループ化の基準とならないオブジェクトの除外］
次に、上述したようにして整理された各シーケンスと各オブジェクトの関係を参照し、シーケンスのグループ化の基準とならないオブジェクトをそのグループ化の基準から除外する。
まず、全てのシーケンスにおいてメッセージ授受の共通の対象となっているオブジェクトでは上述したシーケンスのグループ化の基準として利用できないのでグループ化の基準の対象から除外する。
図１８に示されている表においては、Ｆｒａｍｅオブジェクト６０は、図８から図１７までの各シーケンス図が示しているシーケンスにおいてメッセージ授受の共通の対象となっているので、シーケンスのグループ化の基準の対象から除外する。
次に、シーケンスのグループ化の基準の対象として残されているオブジェクトのうち、ただ一つのシーケンスにおいてのみメッセージ授受の対象となっているオブジェクトは競合を生じさせることはあり得ず、従って前述したシーケンスのグループ化の基準とする必要がないためこのグループ化の基準の対象から除外する。
図１８に示されている表において、Ｓｃｒａｍｂｌｅｒオブジェクト９０は図１１に示されている「スクランブルする」シーケンス２３０、Ｅｎｃｏｄｅｒオブジェクト９１は図１２に示されている「畳み込みを行なう」シーケンス２４０、ＣｏｍｐｌｅｘｅｄＥｎｃｏｄｉｎｇオブジェクト９２は図１５に示されている「複素数への変換を行なう」シーケンス２７０、そしてＰｉｌｏｔオブジェクト９３は図１７に示されている「Ｐｉｌｏｔを付す」シーケンス２９０においてのみメッセージ授受の対象となっているので、これらのオブジェクトをシーケンスのグループ化の基準の対象から除外する。
次に、シーケンスのグループ化の基準の対象として残されているオブジェクトのうち、メッセージ授受が行なわれている全てのシーケンスにおいてデータの書き込みの行なわれることのない読み出し専用であるオブジェクト、例えば不変であるデータの提供のために使用されるオブジェクトは、シーケンスの実行順序が変更されても不都合を生じることがなく、競合が生じても大きな影響はないので、シーケンスのグループ化の基準の対象から除外する。
図１８に示されている表において、ＲａｔａＴａｂｌｅオブジェクト８０は、図８に示されている「Ｔａｉｌを付加する」シーケンス２００、図１０に示されている「ＰＡＤを作る」シーケンス２２０、図１１に示されている「スクランブルする」シーケンス２３０、図１２に示されている「畳み込みを行なう」シーケンス２４０、図１３に示されている「データ分割を行なう」シーケンス２５０、図１４に示されている「インターリーブを施す」シーケンス２６０、図１５に示されている「複素数への変換を行なう」シーケンス２７０、及び図１６に示されている「ノーマライズする」シーケンス２８０においてメッセージ授受の対象となっているが、これらの全てのシーケンスにおいてデータの書き込みの行なわれることのない、読み出し専用のオブジェクトであるので、これらのオブジェクトをグループ化の基準の対象から除外する。
以上までの検討により、「Ｄａｔａを作る」の動作のために必要な各シーケンスでメッセージの授受が行なわれるオブジェクトのうち、Ｄａｔａオブジェクト７０、ＣｏｄｅｄＤａｔａオブジェクト７１、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２、ＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３がシーケンスのグループ化の基準として残される。
［５．３  残されたオブジェクトを基準としたシーケンスのグループ化］
次に、シーケンスのグループ化の基準として残されているオブジェクトに基づいて各シーケンスをグループ化する。
ここで図１９について説明する。同図は図１８に基づいて行なわれたシーケンスのグループ化を表で示した図である。
図１９に示す表では、同一のグループに属するシーケンスについてのシーケンス図の示されている図面の番号が同一行に示されている。例えば、グループＡにはＤａｔａオブジェクト７０に対してメッセージの授受を行なうシーケンス、具体的には図８に示されている「Ｔａｉｌを付加する」シーケンス２００、図９に示されている「Ｓｅｒｖｉｃｅフィールドを付加する」シーケンス２１０、図１０に示されている「ＰＡＤを作る」シーケンス２２０、図１１に示されている「スクランブルする」シーケンス２３０、及び図１２に示されている「畳み込みを行なう」シーケンス２４０が属していることが表されている。なお、Ｄａｔａオブジェクト７０に属するシーケンスは、図１８に示した表におけるＤａｔａオブジェクト７０の行を参照すれば容易に知ることができる。
以下同様に、グループＢにはＣｏｄｅｄＤａｔａオブジェクト７１に対して、グループＣにはＤｉｖｉｄｅｄＤａｔａオブジェクト７２に対して、そしてグループＤにはＣｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３に対して、それぞれメッセージの授受を行なうシーケンスについてのシーケンス図が示されている図面の番号が示されている。
［５．４  グループ内でのシーケンスの実行順序の決定］
次に、シーケンスが属している各グループにおいての各シーケンスの実行順序を決定する。
同一グループに属しているシーケンスは同一のオブジェクトに対するメッセージの授受を行なっているため、これらのシーケンスが並行して動作するとオブジェクトに対するアクセスの競合が発生し得る。そこで、同一グループ内でのシーケンスの動作を時系列にひとつずつ順に動作させるようにすることによって競合の発生を回避するのである。
この順序は前述したシナリオに従って作成されたシーケンス図に基づいて決定する。
例えば、グループＡに属するシーケンスは、図７に示されているシーケンス図における各シーケンスの実行順に従い、「Ｔａｉｌを付加する」シーケンス２００、「Ｓｅｒｖｉｃｅフィールドを付加する」シーケンス２１０、「ＰＡＤを作る」シーケンス２２０、「スクランブルする」シーケンス２３０、そして「畳み込みを行なう」シーケンス２４０の順に実行させるようにする。
以下同様に図７に示されているシーケンス図における各シーケンスの実行順に従い、グループＢに属するシーケンスは「畳み込みを行なう」シーケンス２４０（図１２）、「データ分割を行なう」シーケンス２５０（図１３）の順に実行させるようにし、グループＣに属するシーケンスは「データ分割を行なう」シーケンス２５０（図１３）、「インターリーブを施す」シーケンス２６０（図１４）、そして「複素数への変換を行なう」シーケンス２７０（図１５）の順に実行させるようにし、グループＤに属するシーケンスは「複素数への変換を行なう」シーケンス２７０（図１５）、「ノーマライズする」シーケンス２８０（図１６）、「Ｐｉｌｏｔを付す」シーケンス２９０（図１７）の順に実行させるようにする。
［５．５  複数グループに重複して属するシーケンスの重複の解消］
次に、複数のグループに重複して属するシーケンスについて、その重複を解消し、いずれか１つのグループのみに属するようにする。
図１９に示した表において、「図１２」と表されている「畳み込みを行なう」シーケンス２４０はグループＡ及びグループＢに属している。同様に、「図１３」と表されている「データ分割を行なう」シーケンス２５０はグループＢ及びグループＣに属しており、「図１５」と表されている「複素数への変換を行なう」シーケンス２７０はグループＣ及びグループＤに属している。
まず「畳み込みを行なう」シーケンス２４０について検討する。
「畳み込みを行なう」シーケンス２４０についてのシーケンス図が示されている図１２を参照すると、Ｄａｔａオブジェクト７０はｅｎｃｏｄｅメッセージ２４２等によるシーケンスの実行によってデータの操作が行なわれているに過ぎず、他のシーケンス、具体的には図８に示した「Ｔａｉｌを付加する」シーケンス２００におけるｎｅｗメッセージ２０２によるシーケンスの実行によって生成されている。一方、ＣｏｄｅｄＤａｔａオブジェクト７１は図１２におけるｎｅｗメッセージ２４４によるシーケンスの実行によってそこで初めて生成されている。
ここで、Ｄａｔａオブジェクト７０に注目すると、ｅｎｃｏｄｅメッセージ２４３によるシーケンスを実行するためにはその実行前にＤａｔａオブジェクト７０が生成されていなければならないことは明らかであるから、このシーケンスを実行する前までに「Ｔａｉｌを付加する」シーケンス２００におけるｎｅｗメッセージ２０２によるシーケンスを実行する必要がある。つまり、図１２に示されている「畳み込みを行なう」シーケンス２４０を実行するためには、その前までに図８に示されている「Ｔａｉｌを付加する」シーケンス２００を実行する必要がある。
これに対し、ＣｏｄｅｄＤａｔａオブジェクト７１は図１２におけるｎｅｗメッセージ２４４によるシーケンスの実行によってそこで初めて生成されるので、「畳み込みを行なう」シーケンス２４０の実行順に制限を与える要因とはならない。
以上のことから、図１２に示されている「畳み込みを行なう」シーケンス２４０は、グループＢの従属を解消し、Ｄａｔａオブジェクト７０の競合を回避するための実行順序の決定がされているグループＡのみに属するようにすればよいことが分かる。
次に「データ分割を行なう」シーケンス２５０について検討する。
「データ分割を行なう」シーケンス２５０についてのシーケンス図が示されている図１３を参照すると、ＣｏｄｅｄＤａｔａオブジェクト７１はｄｉｖｉｄｅメッセージ２５１等によるシーケンスの実行によってデータの操作が行なわれているに過ぎず、他のシーケンス、具体的には図１２に示した「畳み込みを行なう」シーケンス２４０の実行によって生成されている。一方、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２は図１３におけるｎｅｗメッセージ２５３によるシーケンスの実行によってそこで初めて生成されている。
従って、前述と同様の理由により、図１３に示されている「データ分割を行なう」シーケンス２５０は、グループＣの従属を解消し、ＣｏｄｅｄＤａｔａオブジェクト７１の競合を回避するための実行順序の決定がされているグループＢのみに属するようにすればよいことが分かる。
「複素数への変換を行なう」シーケンス２７０についても同様の検討を行なう。
「複素数への変換を行なう」シーケンス２７０についてのシーケンス図が図示されている図１５を参照すると、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２はｃｏｎｖｅｒｔＣｏｍｐｌｅｘメッセージ２７１等によるシーケンスの実行によってデータの操作が行なわれているに過ぎず、他のシーケンス、具体的には図１３に示した「データ分割を行なう」シーケンス２５０の実行によって生成されている。一方、ｃｏｍｐｌｅｘｅｄＤａｔａオブジェクト７３は図１５におけるｎｅｗメッセージ２７３によるシーケンスの実行によってそこで初めて生成されている。
従って、図１５に示されている「複素数への変換を行なう」シーケンス２７０は、グループＤの従属を解消し、ＤｉｖｉｄｅｄＤａｔａオブジェクト７２の競合を回避するための実行順序の決定がされているグループＣのみに属するようにすればよいことが分かる。
以上までの［５．１］、［５．２］、［５．３］、［５．４］、及び［５．５］の作業によって各シーケンスのグループ化が完了する。
［６．機能ブロックへの分割］
次に、グループ化されたシーケンスを機能ブロックに纏める。
ここで図２０について説明する。同図は、設計対象システムの要求仕様である送信動作のうちの「Ｄａｔａを作る」機能の機能ブロックへの分割結果を表で示した図である。
同図に示すように、以上までの検討により、グループＡに属する「Ｔａｉｌを付加する」シーケンス２００（図８）、「Ｓｅｒｖｉｃｅフィールドを付加する」シーケンス２１０（図９）、「ＰＡＤを作る」シーケンス２２０（図１０）、「スクランブルする」シーケンス２３０（図１１）、及び「畳み込みを行なう」シーケンス２４０（図１２）が実行される機能ブロックをＢＬＯＣＫ１とし、グループＢに属する「データ分割を行なう」シーケンス２５０（図１３）が実行される機能ブロックをＢＬＯＣＫ２とし、グループＣに属する「インターリーブを施す」シーケンス２６０（図１４）及び「複素数への変換を行なう」シーケンス２７０（図１５）が実行される機能ブロックをＢＬＯＣＫ３とし、グループＤに属する「ノーマライズする」シーケンス２８０（図１６）及び「Ｐｉｌｏｔを付す」シーケンス２９０（図１７）が実行される機能ブロックをＢＬＯＣＫ４とする。
このようにして得られた各機能ブロックがこの順に従って実行されることによって前述した「Ｄａｔａを作る」機能が実現される。
以上までに説明した手法によって得られた前述した「Ｄａｔａを作る」機能の機能ブロックへの分割結果を図２１に示す。また、図７に示したシーケンス図の分割結果に相当する、各機能ブロックで実行される各シーケンスの実行順序を表しているシーケンス図を図２２、図２３、図２４、及び図２５に示す。
以上までの作業によって設計対象システムに要求される機能がシーケンス間での競合が少なくなるように適切に分割されてシステム設計が完了し、その後は機能ブロック単位での設計に移行することになる。
次に、以上までに説明した機能ブロックへの分割を行なうシステムについて説明する。
図２６は本発明を実施する機能ブロック分割システムの構成を示す図である。同図において、３０１はＣＰＵ、３０２はＲＯＭ、３０３はＲＡＭ、３０４はハードディスク装置、３０５は操作入力部、３０６は表示装置、３０７は入出力装置、３０８はバスである。そして、ＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３０３、ハードディスク装置３０４、操作入力部３０５、表示装置３０６、及び入出力装置３０７はいずれもバス３０８に接続されており、相互にデータの授受が行なえる。
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１はこの機能ブロック分割システム（以下、「本システム」と称する）全体の動作制御を司る中央処理装置である。
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２は、ＣＰＵ３０１によって実行される制御プログラムが予め格納されているメモリであり、ＣＰＵ３０１がこの制御プログラムを実行することによって本システム全体の動作の制御が行なわれる。
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３は、各種のデータの一時的な格納領域として、またＲＯＭ３０２に格納されている制御プログラムをＣＰＵ３０１が実行するときにワークメモリとして必要に応じて使用されるメモリである。
ハードディスク装置３０４は、後述するシステム設計支援処理をＣＰＵ３０１が行なうときに各種のデータファイルを格納する記憶装置である。また、ハードディスク装置３０４には、語とその語の品詞との関係が示されている辞書テーブルファイルが予め格納されており、この辞書データファイルは前述したシナリオに使用されている語の品詞解析のために使用される。
なお、前述した制御プログラムをＲＯＭ３０２に格納しておく代わりにこのハードディスク装置３０４に予め記憶させておき、本システムが起動されたときにＣＰＵ３０１がこの制御プログラムをハードディスク装置３０４から読み出してＲＡＭ３０３に一旦格納し、その後ＲＡＭ３０３からその制御プログラムを読み出して実行するようにして本システム全体の動作の制御を行なうようにしてもよい。
操作入力部３０５は本システムを使用するユーザによって操作されるキーボートやマウス等の入力装置を有し、これらの入力装置に対して行なわれた操作の状況を取得する。
表示装置３０６はＣＰＵ３０１から指示された表示を行なうものであり、例えばＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）やＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）を用いた装置である。
入出力装置３０７は、外部から入力される情報、例えば設計対象システムに要求される仕様が表されている仕様情報ファイルを受け取ってＣＰＵ３０１にその仕様情報ファイルを送付し、あるいはＣＰＵ３０１からの出力、例えばシステム設計の結果である機能ブロックへの分割結果を示す情報やその機能ブロックにおいて動作させるシーケンスを示す情報の出力を行なうものである。入出力装置３０７は、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−ＲＯＭ）、ＤＶＤ−ＲＯＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ−ＲＯＭ）、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃｓ）ディスクなどといった可搬型の記録媒体の読み出し及び書き込み装置を備えて構成される。また、通信ネットワークを介して他の機器との間でこれらの入出力情報を交換するためのインタフェース装置を入出力装置３０７として備えるようにしてもよい。更に、ＣＰＵ３０１からの出力の内容を用紙に印刷するプリンタ装置を入出力装置３０７として備えるようにしてもよい。
本装置は以上の各構成要素を備えて構成される。
なお、本システムの構成は標準的な構成のコンピュータシステムの多くが備えているものであり、従ってこのようなコンピュータシステムで本発明を実施することも可能である。
次に、本システムにおけるＣＰＵ３０１によって行なわれる制御処理について説明する。なお、これより説明する各処理は、いずれも本システムを制御するための制御プログラムをＣＰＵ３０１が実行することによって実現される。
まず図２７について説明する。同図は、ＣＰＵ３０１によって行なわれるシステム設計支援処理の処理内容を示すフローチャートである。同図に示す処理をＣＰＵ３０１が行なうことによって設計対象システムに要求されている機能の機能ブロックへの分割が本システムで行なわれる。
まず、Ｓ４０１では設計対象システムに要求されている機能の取得処理が行なわれる。この処理は本システムを使用して前述した［１．機能の抽出］の作業を行なうためのものである。この処理によって、図３に示したような、設計対象システムに要求されている機能に対応するユースケース図を表している情報の取得と、この取得された情報の格納されている情報データファイルのハードディスク装置３０４への記憶とが行なわれる。なお、この処理におけるユースケース図を表している情報の取得では、例えばユーザによる操作入力部３０５に対する操作内容をＣＰＵ３０１が取得してその操作に対応するユースケース図の描画を表示装置３０６に表示させると共にそのユースケース図を表現している情報をＣＰＵ３０１が取得するようにしてもよく、また、例えば本システムの外部に存在するユースケース図を表現している情報を、入出力装置３０７を介してＣＰＵ３０１が取得するようにしてもよい。
次に、Ｓ４０２ではシナリオ作成支援処理が行なわれる。この処理によって、例えばユーザによって操作入力部３０５が操作されることによって入力されるシナリオの文章を表現している情報がＣＰＵ３０１で取得され、その情報をハードディスク装置３０４へ記憶させる。
次に、Ｓ４０３ではユースケース詳細化処理が行なわれる。この処理によって、前ステップの処理によって取得されたシナリオから品詞が動詞である語が抽出され、この抽出された語が表されている図４に示したような詳細化されたユースケース図が作成される。なお、シナリオに使用されている語の品詞の解析にはハードディスク装置３０４に記憶されている辞書テーブルファイルが参照される。
次に、Ｓ４０４ではユースケースの詳細化が完了したか否かの判定を行なう処理が行なわれ、この判定結果がＹｅｓならばＳ４０５に処理が進み、ＮｏならばＳ４０３へ処理が戻ってＳ４０３及びＳ４０４の処理が繰り返される。なお、この処理は、例えばユースケースの詳細化が完了したか否かを問う質問を表示装置３０６に表示させ、ユーザによってなされるこの質問に対する回答を示す操作入力部３０５の操作内容をＣＰＵ３０１が取得し、その操作内容に基づいてこの判定の結果を決定するようにすればよい。
以上までのＳ４０２からＳ４０４にかけての処理は、本システムを使用して前述した［２．シナリオの作成及びユースケースの詳細化］の作業を行なうためのものである。
次に、Ｓ４０５ではクラス図作成支援処理が行なわれる。この処理によって、ハードディスク装置３０４に記憶されている辞書テーブルファイルに基づいてＳ４０２の処理によって取得されたシナリオから品詞が名詞である語が抽出され、この抽出された語が表されている図５に示したような詳細化されたクラス図が作成される。なお、この処理は本システムを使用して前述した［３．論理構造の明確化］の作業を行なうためのものである。
Ｓ４０６ではシーケンス図作成支援処理が行なわれる。この処理によって、以上までの処理によって作成されたシナリオ及びクラス図に基づいて、図６及び図７に示すような各ユースケースの動作を実現するために実行するシーケンス及びそのシーケンスの実行の手順、並びに図８〜図１７に示すような詳細化された各ユースケースの動作を実現するために実行するシーケンス及びそのシーケンスの実行の手順を示すシーケンス図が作成される。この処理は、例えばユーザによる操作入力部３０５に対する操作内容をＣＰＵ３０１が取得してその操作に対応するシーケンス図の描画を表示装置３０６に表示させると共にそのユースケース図を表現している情報をＣＰＵ３０１が取得し、その情報をハードディスク装置３０４へ記憶させるというものである。なお、この処理は本システムを使用して前述した［４．動作流れの作成］の作業を行なうためのものである。
Ｓ４０７ではシーケンスグループ化処理が行なわれる。この処理によって、以上までの処理によって獲得された設計対象システムの要求仕様を充足させるために必要な全てのシーケンスをいくつかの機能ブロックに統合したときに、その機能ブロック内のシーケンス間でのオブジェクトの競合の発生が少なくなるような各シーケンスのグループ分けが行なわれる。なお、この処理は本システムを使用して前述した［５．シーケンスのグループ化］の作業を行なうためのものであり、その処理の詳細は後述する。
Ｓ４０８では機能ブロック分割処理が行なわれる。この処理によって、前ステップの処理によってグループ化されたシーケンスが機能ブロックに纏められ、設計対象システムに要求されている機能の機能ブロックへの分割が完了する。具体的には、前ステップの処理結果に基づいて図２０に示すような分割結果を示すテーブルが作成され、このテーブルを表している情報がハードディスク装置３０４に格納される。
Ｓ４０９では機能ブロック図作成処理が行なわれる。この処理によって、前ステップの処理によって作成された分割結果を示すテーブルに基づいて、図２１に示すような、各シーケンスの各機能ブロックへの従属関係が明示されている機能ブロック図が作成され、この機能ブロック図を表している情報がハードディスク装置３０４に格納される。
Ｓ４１０では、機能ブロックシーケンス図作成処理が行なわれる。この処理によって、Ｓ４０６の処理によって作成された各シーケンス図とＳ４０８の処理によって作成された分割結果を示すテーブルとに基づいて、図２２〜図２５に示すような、各機能ブロックで実行される各シーケンスの実行順序を表しているシーケンス図が作成され、この作成されたシーケンス図を表している情報がハードディスク装置３０４に格納される。
以上までのＳ４０８からＳ４１０にかけての処理は、本システムを使用して前述した［６．機能ブロックへの分割］の作業を行なうためのものである。
Ｓ４１１では出力処理が行なわれる。この処理によって、以上のＳ４０９及びＳ４１０の処理によって作成された機能ブロック図を表している情報及びシーケンス図を表している情報がハードディスク装置３０４から読み出され、これらの情報で表されている各図が表示装置３０６に表示される。また、ユーザの指示に応じ、これらの情報が入出力装置３０７で出力される。
以上までの処理がステム設計支援処理である。
次に、上述したシステム設計処理におけるＳ４０７の処理としてＣＰＵ３０１で行なわれるシーケンスグループ化処理について、図２８に示したシーケンスグループ化処理の処理内容を示すフローチャートに沿って説明する。
まず、Ｓ５０１では関係テーブル作成処理が行なわれる。この処理によって、前述したシステム設計処理におけるＳ４０６までの処理によって作成された詳細化された各ユースケースの動作を実現するために実行するシーケンスとそのシーケンスの実行の手順とを示す図８〜図１７に示すようなシーケンス図を示す情報がハードディスク装置３０４から読み出され、設計対象システムに要求されている機能の実現のために必要な全てのシーケンスとこれらの各シーケンスでメッセージの授受が行なわれる全てのオブジェクトとの関係を示す図１８に示すような関係テーブルがこれらの情報から作成され、この作成された関係テーブルを表している情報がハードディスク装置３０４に格納される。なお、この処理は本システムを使用して前述した［５．１  シーケンスとオブジェクトとの関係の整理］の作業を行なうためのものである。
次に、Ｓ５０２ではグループ化基準オブジェクト抽出処理が行なわれる。この処理は本システムを使用して前述した［５．２  シーケンスのグループ化の基準とならないオブジェクトの除外］の作業を行なうためのものであり、具体的には以下のＳ５０２−１〜Ｓ５０２−３にかけての処理が行なわれる。
Ｓ５０２−１では全シーケンス共通オブジェクト除外処理が行なわれる。この処理により、Ｓ５０１の処理によって作成された関係テーブルに示されているオブジェクトのうち、全てのシーケンスにおいてメッセージ授受の共通の対象となっていることがその関係テーブルに示されているオブジェクトがグループ化の基準の対象から除外される。
Ｓ５０２−２では単一シーケンス使用オブジェクト除外処理が行なわれる。この処理により、シーケンスのグループ化の基準の対象として残されているオブジェクトのうち、ただ一つのシーケンスにおいてのみメッセージ授受の対象となっているオブジェクトがグループ化の基準の対象から除外される。
Ｓ５０２−３では、読み出し専用オブジェクト除外処理が行なわれる。この処理により、シーケンスのグループ化の基準の対象として残されているオブジェクトのうち、メッセージ授受が行なわれている全てのシーケンスにおいてデータの書き込みの行なわれることのない読み出し専用であるオブジェクトがシーケンスのグループ化の基準の対象から除外される。
以上までの処理がＳ５０２のグループ化基準オブジェクト抽出処理である。
次に、Ｓ５０３ではグループ内シーケンス実行順序決定処理が行なわれる。この処理により、シーケンスのグループ化の基準の対象として残されているオブジェクトに基づいてＳ５０１の処理によって作成された関係テーブルに示されている各シーケンスのグループ化が行なわれて図１９に示すようなテーブルが作成され、更に、そのテーブルに示されている各シーケンスについてのグループ内における実行順序が、ハードディスク装置３０４に格納されているＳ４０６までの処理によって作成された図８〜図１７に示すようなシーケンス図を示す情報に基づいて決定される。なお、この処理は本システムを使用して前述した［５．３  残されたオブジェクトを基準としたシーケンスのグループ化］及び［５．４  グループ内でのシーケンスの実行順序の決定］の作業を行なうためのものである。
Ｓ５０４では、シーケンス重複解消処理が行なわれる。この処理によって、前ステップの処理によってグループ化されたシーケンスのうち複数のグループに重複して属しているものについて、Ｓ４０６までの処理によって作成された図８〜図１７に示すようなシーケンス図を示す情報から得られるオブジェクトの生成シーケンスの順序関係に基づいてその重複を解消する処理が行なわれ、全てのシーケンスがいずれか１つのグループのみに属するようになる。なお、この処理は本システムを使用して前述した［５．５  複数グループに重複して属するシーケンスの重複の解消］の作業を行なうためのものである。
以上までの処理がシーケンスグループ化処理であり、この処理がＣＰＵ３０１で行なわれることによって、機能ブロック内のシーケンス間でのオブジェクトの競合の発生が少なくなるような各シーケンスのグループ分けが実現される。
次に、本発明の改良について、ここではシーケンスの統合を用いた機能ブロックへの分割について説明する。これは、他のグループに属するシーケンスと共通のオブジェクトをアクセスの対象としているシーケンスが同一グループに複数属しているために、前述した手法では機能ブロックへの分割が行なえないときに、そのようなシーケンスを１つのシーケンスに統合することによって機能ブロックへの分割を可能とするものである。
まず図２９について説明する。同図は、ある機能の実現のために必要な全てのシーケンスと、これらの各シーケンスでメッセージの授受が行なわれる全てのオブジェクトとの関係の例を表にして示した図であり、図１８に示した表と同様のものである。
図２９にはシーケンス１〜シーケンス５の５つのシーケンスとオブジェクトＡ〜オブジェクトＣの３つのオブジェクトとの関係が示されている。ここで、この５つのシーケンスはいずれも読み出し専用のシーケンスではないものとする。
まず、前述した手法に従ってこの図２９の表に示されているシーケンスのグループ化を試みる。なお、以下の説明においては、便宜上、前述した手法を「第一の手法」と称することとし、これより説明する手法を「第二の手法」と称することとする。
図３０、図３１、及び図３２は、第一の手法に従ったグループ化を図２９の表に示されているシーケンスに対して試みた結果の例を各々示している。
図３０は、シーケンス３の複数グループへの従属の解消を行なった結果、シーケンス１、シーケンス２、及びシーケンス３をこの実行順序でグループＡに従属させ、シーケンス４及びシーケンス５をこの実行順序でグループＢに従属させた例を示している。この例は、しかしながら、この例では、グループＡに属するシーケンス２とグループＢに属するシーケンス４とが同一のオブジェクトＢをアクセスするために競合が発生し得る。つまり、このグループ化では競合が回避されないのでこのグループ化による機能ブロックへの分割は不適切である。
図３１は、シーケンス２及びシーケンス４の複数グループへの従属の解消を行なった結果、シーケンス１、シーケンス３、及びシーケンス２をこの実行順序でグループＡに従属させ、シーケンス４をグループＢに、そしてシーケンス５をグループＣに、それぞれ従属させた例を示している。しかしながら、この例では、オブジェクトＢについてのシーケンスの競合は回避されるものの、グループＡに属するシーケンス３とグループＣに属するシーケンス５とが同一のオブジェクトＣをアクセスするために競合が発生し得る。つまり、このグループ化も競合が回避されないのでこのグループ化による機能ブロックへの分割も不適切である。
図３２は、シーケンス２及びシーケンス４の複数グループへの従属の解消を行なった結果、シーケンス１及びシーケンス２をこの実行順序でグループＡに従属させ、シーケンス４をグループＢに、そしてシーケンス３及びシーケンス５をグループＣに、それぞれ従属させた例を示している。しかしながら、この例では、オブジェクトＢ及びオブジェクトＣについてのシーケンスの競合は回避されるものの、グループＡに属するシーケンス１又はシーケンス２とグループＣに属するシーケンス３とが同一のオブジェクトＡをアクセスするために競合が発生し得る。つまり、このグループ化も競合が回避されないのでこのグループ化による機能ブロックへの分割も不適切である。
以上のように、他のグループに属するシーケンスと共通のオブジェクトをアクセスの対象としているシーケンスが同一グループに複数属しているために、前述した手法ではシーケンスの重複が解消しきれず、その結果、機能ブロックへの分割が行なえないことがある。このような場合には、他のグループに属するシーケンスと共通のオブジェクトをアクセスの対象としているシーケンスを１つのシーケンスに統合することによって機能ブロックへの分割を可能とすることができる。
ここで図３３について説明する。同図は図２９の表に示されているシーケンスに対して行なわれるシーケンスの統合を示した図である。
同図において、上側の表はシーケンスの統合が施される前のものであり、図２９に示したものと同一の表である。また同図において下側の表はシーケンスの統合が施された後の表である。
まず、図３３における上側の表に関し、前述した第一の手法における［５．４  グループ内でのシーケンスの実行順序の決定］までの作業に従えば、オブジェクトＡをアクセスするシーケンス１、シーケンス２、及びシーケンス３が１つのグループとなり、オブジェクトＢをアクセスするシーケンス２及びシーケンス４が１つのグループとなり、オブジェクトＣをアクセスするシーケンス３、シーケンス４、及びシーケンス５が１つのグループとなる。
ここで、グループＡに着目すると、そのグループＡに属するシーケンス２及びシーケンス３がそれぞれ他のグループに属するシーケンスと共通のオブジェクトをアクセスしている。そこで、このシーケンス２とシーケンス３とを１つのシーケンス２３に統合する。図３３の上側の表をこの統合されたシーケンス２３を用いて再作成されたものが下側の表である。この表が作成された後は、前述した第一の手法における［５．３  残されたオブジェクトを基準としたシーケンスのグループ化］以降の作業を改めて行なえばよい。
ここで図３４について説明する。同図は第一の手法に従ったグループ化を図３３の下側の表に示されているシーケンスに対して試みた結果の例を示している。
図３４の表に関し、前述した第一の手法における［５．３  残されたオブジェクトを基準としたシーケンスのグループ化］及び［５．４  グループ内でのシーケンスの実行順序の決定］の作業に従えば、オブジェクトＡをアクセスするシーケンス１及びシーケンス２３が１つのグループとなり、オブジェクトＢをアクセスするシーケンス２３及びシーケンス４が１つのグループとなり、オブジェクトＣをアクセスするシーケンス２３、シーケンス４、及びシーケンス５が１つのグループとなる。
ここで、前述した［５．５  複数グループに重複して属するシーケンスの重複の解消］に従えば、オブジェクトＢ及びオブジェクトＣの両方に注目することによってシーケンス２３をグループＡに従属させればよいとの判断を下すことができ、更に、オブジェクトＣに注目することによってシーケンス４をグループＢに従属させればよいとの判断を下すことができる。
以上までに説明した第二の手法によって得られた機能ブロックへの分割結果を示しているのが図３５である。
次に、本システムでこの第二の手法を行なうためにＣＰＵ３０１で行なわれる処理について説明する。
図３６は、図２８にフローチャートで示したシーケンスグループ化処理を変更して上述したシーケンスの統合を行なわせるときの変更内容を示している。この図３６に示されているフローチャートは図２８におけるＳ５０４の処理と置換される。
図２８のＳ５０３の処理に続き、Ｓ６０１ではシーケンスの統合を行なう必要があるか否かの判定処理が行なわれる。この処理では、Ｓ５０３までの処理によって構成された各グループのうち、他のグループに属するシーケンスと共通のオブジェクトをアクセスしているシーケンスが複数属しているものが存在するか否かが判定される。このＳ６０１の判定結果がＹｅｓならばＳ６０２に処理が進む。一方、このＳ６０１の判定結果がＮｏならば図２８のＳ５０４の処理であるシーケンス重複解消処理が行なわれ、その後は図２８のＳ５０５以降の処理が行なわれる。
Ｓ６０２ではシーケンス統合処理が行なわれる。この処理により、他のグループに属するシーケンスと共通のオブジェクトをアクセスしているシーケンスが複数属しているグループが一つ抽出され、この抽出されたグループにおいて他のグループに属するシーケンスと共通のオブジェクトをアクセスしているシーケンスが統合される。
Ｓ６０３では図２８のＳ５０３と同様のグループ内シーケンス実行順序決定処理が行なわれる。この処理により、シーケンスのグループ化の基準の対象として残されているオブジェクトに基づいた各シーケンスのグループ化と各シーケンスについてのグループ内における実行順序の決定とが行なわれて図３３の下側に示すようなテーブルが作成される。
Ｓ６０４では、図２８のＳ５０４と同様のシーケンス重複解消処理が行なわれる。この処理により、グループ化されたシーケンスのうち複数のグループに重複して属しているものについてその重複を解消する処理が行なわれる。
Ｓ６０５では、前述したＳ６０１と同様の、シーケンスの統合を行なう必要があるか否かの判定処理が再度行なわれる。このＳ６０５の判定結果がＹｅｓならばＳ６０２へ処理が戻って上述した処理が繰り返される。一方、Ｓ６０５の判定結果がＮｏならば、シーケンスの統合が完了したとみなし、図２８のＳ５０５（すなわち図２７のＳ４０８）以降の処理が行なわれる。
以上の処理が、図２７に示したシステム設計処理におけるＳ４０７のシーケンスグループ化処理としてＣＰＵ３０１で行なわれることによって、本システムにおいてシーケンスの統合を用いた機能ブロックへの分割が実現される。
なお、以上までに説明した本システムによる機能ブロックへの分割において、各シーケンスの実行に要する時間（タイムバジェット）を示す情報をシーケンス毎に与えておき、設計対象システムに要求される機能の機能ブロックへの分割を終えた後に各機能ブロックに属する全てのシーケンスの実行に要する時間を算出するようにしてもよく、こうすることにより、設計対象システムの時間的な性能に対する要求を満たせるかどうかを本システムで判断することができるようになる。
この設計対象システムの時間的な性能に対する要求を満たせるかどうかを本システムで判断するためには、図２７にフローチャートで示したＣＰＵ３０１によって行なわれるシステム設計支援処理の処理内容に対して変更を加えればよい。
図２７に示したシステム設計処理を変更して本システムに上述した設計対象システムの時間的な性能に対する要求の充足判断を行なわせるときの変更内容を図３７に示す。この図３７に示されているフローチャートは図２７におけるＳ４０７及びＳ４０８の処理と置換される。
図２７のＳ４０６の処理に続き、Ｓ７０１ではタイムバジェット設定処理が行なわれる。この処理によって、ユーザによる操作入力部３０５に対する操作内容が取得され、Ｓ４０６までの処理によって作成されたシーケンス図に示されている各シーケンスに対し、その実行に要する時間の設定がその操作内容に基づいて行なわれる。
Ｓ７０１に続き、前述したものと同様の処理である、Ｓ４０７のシーケンスグループ化処理及びＳ４０８の機能ブロック分割処理が行なわれる。
Ｓ４０８の処理に続き、Ｓ７０２では実行時間算出処理が行なわれる。この処理により、Ｓ４０８までの処理によって分割を終えた機能ブロックに属するシーケンスについて設定された実行時間が合計され、機能ブロックの実行に要する時間が算出される。
Ｓ７０３では、設計対象システムの時間的な性能に対する要求を満たせるか否かの判定処理が行なわれる。この判定処理では、Ｓ７０２の処理によって算出された実行時間と、予め設定されている設計対象システムの時間的な性能に対する要求値とが比較される。そして、この実行時間がこの要求値以下であれば判定結果がＹｅｓとなり、処理は図２７のＳ４０９の処理へと進んで以降の処理が行なわれる。一方、この実行時間がこの要求値よりも大きいのであれば判定結果がＮｏとなり、Ｓ７０４に処理が進む。
Ｓ７０４では警告処理が行なわれる。この処理により、設計対象システムの時間的な性能に対する要求が満たされない旨の警告表示が表示装置３０６に表示され、その後はシステム設計処理が終了する。
以上の処理がＣＰＵ３０１で行なわれることによって、設計対象システムの時間的な性能に対する要求を満たせるかどうかを本システムで判断することが可能となる。
また、以上までに説明した本システムによる機能ブロックへの分割において、各シーケンスの実行のために費やされるメモリの量を示す情報をシーケンス毎に与えておき、設計対象システムに要求される機能の機能ブロックへの分割を終えた後に各機能ブロックに属する全てのシーケンスの実行のために費やされるメモリ量を算出するようにしてもよく、こうすることにより、設計対象システムのメモリ容量に対する要求を満たせるかどうかを本システムで判断することができるようになる。
この設計対象システムのメモリ容量に対する要求を満たせるかどうかを本システムで判断するためには、図２７にフローチャートで示したＣＰＵ３０１によって行なわれるシステム設計支援処理の処理内容に対して変更を加えればよい。
図２７に示したシステム設計処理を変更して本システムに上述した設計対象システムのメモリ容量に対する要求の充足判断を行なわせるときの変更内容を図３８に示す。この図３８に示されているフローチャートは図２７におけるＳ４０７及びＳ４０８の処理と置換される。
図２７のＳ４０６の処理に続き、Ｓ８０１ではメモリ量設定処理が行なわれる。この処理によって、ユーザによる操作入力部３０５に対する操作内容が取得され、Ｓ４０６までの処理によって作成されたシーケンス図に示されている各シーケンスに対し、その実行のために費やされるメモリの量の設定がその操作内容に基づいて行なわれる。
Ｓ８０１に続き、前述したものと同様の処理である、Ｓ４０７のシーケンスグループ化処理及びＳ４０８の機能ブロック分割処理が行なわれる。
Ｓ４０８の処理に続き、Ｓ８０２では使用メモリ量算出処理が行なわれる。この処理により、Ｓ４０８までの処理によって分割を終えた機能ブロックに属するシーケンスについて設定されたメモリ量が合計され、機能ブロックの実行のために使用されるメモリの量が算出される。
Ｓ８０３では、設計対象システムのメモリ容量に対する要求を満たせるか否かの判定処理が行なわれる。この判定処理では、Ｓ８０２の処理によって算出されたメモリ量と、予め設定されている設計対象システムのメモリ容量に対する要求値とが比較される。そして、このメモリ量がこの要求値以下であれば判定結果がＹｅｓとなり、処理は図２７のＳ４０９の処理へと進んで以降の処理が行なわれる。一方、このメモリ量がこの要求値よりも大きいのであれば判定結果がＮｏとなり、Ｓ８０４に処理が進む。
Ｓ８０４では警告処理が行なわれる。この処理により、設計対象システムのメモリ容量に対する要求が満たされない旨の警告表示が表示装置３０６に表示され、その後はシステム設計処理が終了する。
以上の処理がＣＰＵ３０１で行なわれることによって、設計対象システムのメモリ容量に対する要求を満たせるかどうかを本システムで判断することが可能となる。
なお、本発明を標準的なコンピュータで実施するには、以上までに説明した本システムにおけるＣＰＵ３０１が行なっていたものと同様の処理をそのコンピュータに行なわせるための制御プログラムを作成し、その制御プログラムをコンピュータに読み込ませて実行させることにより可能となる。
また、このような制御プログラムをコンピュータで読み取り可能な記録媒体に記録させ、そのプログラムを記録媒体からコンピュータに読み出させて実行させることによって本発明をコンピュータで実施することも可能である。
記録させた制御プログラムをコンピュータで読み取ることの可能な記録媒体の例を図３９に示す。同図において、９０１はコンピュータ、９０２はメモリ、９０３は可搬型記録媒体、９０４は通信回線、９０５はプログラムサーバ、９０６は記憶装置である。
図３９に示すように、記録媒体としては、例えば、コンピュータ９０１に内蔵若しくは外付けの付属装置として備えられるＲＯＭやハードディスク装置などのメモリ９０２、あるいはＦＤ（フレキシブルディスク）、ＭＯ（光磁気ディスク）、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどといった可搬型記録媒体９０３等が利用できる。また、記録媒体は回線９０４を介してコンピュータ９０１と接続される、プログラムサーバ９０５として機能するコンピュータが備えている記憶装置９０６であってもよい。この場合には、制御プログラムを表現するデータ信号で搬送波を変調して得られる伝送信号を、プログラムサーバ９０５から伝送媒体である通信回線９０４を通じて伝送するようにし、コンピュータ９０１では受信した伝送信号を復調して制御プログラムを再生することで当該制御プログラムを実行できるようになる。
なお、本発明は、ハードウェア及びソフトウェアいずれのシステム設計においても適用可能である。
その他、本発明は、上述した実施形態に限定されることなく、種々の改良・変更が可能である。例えば、設計対象システムの要求仕様を充足させるために必要となるシーケンスの獲得は、説明したＵＭＬを用いてシステム開発技法を適用して行なう上述したもの以外の他の手法によるものであってもよい。
以上詳細に説明したように、本発明は、設計対象システムに要求される機能を実現させるためには実行することが必要とされる複数のシーケンスと、該シーケンスがメッセージの授受を行なうオブジェクトとの関係を取得し、同一のオブジェクトに対してメッセージの授受を行なうシーケンスをグループ化して該オブジェクトに対応するグループを構成する。ここで、該グループ化によって同一のシーケンスが異なるグループに重複して属したときには、該シーケンスがメッセージの授受を行なうオブジェクトに対してメッセージの授受を行なう他のシーケンスと該シーケンスとの間での該オブジェクトに関する実行順序の関係に基づいて該シーケンスについての該重複を解消する。そして、該機能ブロックに該グループを対応付け、該機能ブロックで実行させるシーケンスとして、該機能ブロックに対応するグループに属するシーケンスを出力するようにする。
本発明は、以上のようにすることにより、そのシステムの要求仕様を充足させるために実行すべき細分化されたシーケンスを各機能ブロックに分配したときにおけるシーケンス間での競合の発生が少なくなるという効果を奏する。
【図面の簡単な説明】
本発明は、後述する詳細な説明を、下記の添付図面と共に参照すればより明らかになるであろう。
図１は、従来行なわれていた競合回避の手続きを説明する図である。
図２は、本発明の原理構成を示す図である。
図３は、設計対象システムについて作成されたシステム全体のユースケース図である。
図４は、図３に示されていた「Ｄａｔａを作る」ユースケースが詳細化されたユースケース図である。
図５は、図３及び図４に示した各ユースケースについて作成されたシナリオに基づいて作成されたクラス図である。
図６は、設計対象システムについて作成されたシステム全体のシーケンス図である。
図７は、図３に示したシーケンスのうち、ｍａｋｅＤａｔａメッセージの発行によって実行されるＤａｔａを作成するシーケンスを更に詳細化して示したシーケンス図である。
図８は、図７に示したシーケンスのうち、「Ｔａｉｌを付加する」シーケンスを更に詳細に示したシーケンス図である。
図９は、図７に示したシーケンスのうち、「Ｓｅｒｖｉｃｅフィールドを付加する」シーケンスを更に詳細化して示したシーケンス図である。
図１０は、図７に示したシーケンスのうち、「ＰＡＤを作る」シーケンスを更に詳細化して示したシーケンス図である。
図１１は、図７に示したシーケンスのうち、「スクランブルする」シーケンスを更に詳細化して示したシーケンス図である。
図１２は、図７に示したシーケンスのうち、「畳み込みを行なう」シーケンスを更に詳細化して示したシーケンス図である。
図１３は、図７に示したシーケンスのうち、「データ分割を行なう」シーケンスを更に詳細化して示したシーケンス図である。
図１４は、図７に示したシーケンスのうち、「インターリーブを施す」シーケンスを更に詳細化して示したシーケンス図である。
図１５は、図７に示したシーケンスのうち、「複素数への変換を行なう」シーケンスを更に詳細化して示した図である。
図１６は、図７に示したシーケンスのうち、「ノーマライズする」シーケンスを更に詳細化して示したシーケンス図である。
図１７は、図７に示したシーケンスのうち、「Ｐｉｌｏｔを付す」シーケンスを更に詳細化して示したシーケンス図である。
図１８は、「Ｄａｔａを作る」の動作のために必要な全てのシーケンスと、これらの各シーケンスでメッセージの授受が行なわれる全てのオブジェクトとの関係を表にして示した図である。
図１９は、図１８に基づいて行なわれたシーケンスのグループ化を表で示した図である。
図２０は、設計対象システムの要求仕様である送信動作のうちの「Ｄａｔａを作る」機能の機能ブロックへの分割結果を表で示した図である。
図２１は、「Ｄａｔａを作る」機能の機能ブロックへの分割結果を示す図である。
図２２は、図２１における機能ブロック１で実行される各シーケンスの実行順序を表しているシーケンス図である。
図２３は、図２１における機能ブロック２で実行される各シーケンスの実行順序を表しているシーケンス図である。
図２４は、図２１における機能ブロック３で実行される各シーケンスの実行順序を表しているシーケンス図である。
図２５は、図２１における機能ブロック４で実行される各シーケンスの実行順序を表しているシーケンス図である。
図２６は、本発明を実施する機能ブロック分割システムの構成を示す図である。
図２７は、ＣＰＵ３０１によって行なわれるシステム設計支援処理の処理内容を示すフローチャートである。
図２８は、シーケンスグループ化処理の処理内容を示すフローチャートである。
図２９は、ある機能の実現のために必要な全てのシーケンスと、これらの各シーケンスでメッセージの授受が行なわれる全てのオブジェクトとの関係の例を表にして示した図である。
図３０は、第一の手法に従ったグループ化を図２９の表に示されているシーケンスに対して試みた結果の第一の例を示した図である。
図３１は、第一の手法に従ったグループ化を図２９の表に示されているシーケンスに対して試みた結果の第二の例を示した図である。
図３２は、第一の手法に従ったグループ化を図２９の表に示されているシーケンスに対して試みた結果の第三の例を示した図である。
図３３は、図２９の表に示されているシーケンスに対して行なわれるシーケンスの統合を示した図である。
図３４は、第一の手法に従ったグループ化を図３３の下側の表に示されているシーケンスに対して試みた結果の例を示す図である。
図３５は、第二の手法によって得られた機能ブロックへの分割結果を示す図である。
図３６は、図２８にフローチャートで示したシーケンスグループ化処理を変更してシーケンスの統合を行なわせるときの変更内容を示す図である。
図３７は、図２７に示したシステム設計処理を変更して図２６に示すシステムに設計対象システムの時間的な性能に対する要求の充足判断を行なわせるときの変更内容を示す図である。
図３８は、図２７に示したシステム設計処理を変更して図２６に示すシステムに設計対象システムのメモリ容量に対する要求の充足判断を行なわせるときの変更内容を示す図である。
図３９は、記録させた制御プログラムをコンピュータで読み取ることの可能な記録媒体の例を示す図である。
【図１】
2003096183.tif 000003
【図２】
2003096183.tif 000004
【図３】
2003096183.tif 000005
【図４】
2003096183.tif 000006
【図５】
2003096183.tif 000007
【図６】
2003096183.tif 000008
【図７】
2003096183.tif 000009
【図８】
2003096183.tif 000010
【図９】
2003096183.tif 000011
【図１０】
2003096183.tif 000012
【図１１】
2003096183.tif 000013
【図１２】
2003096183.tif 000014
【図１３】
2003096183.tif 000015
【図１４】
2003096183.tif 000016
【図１５】
2003096183.tif 000017
【図１６】
2003096183.tif 000018
【図１７】
2003096183.tif 000019
【図１８】
2003096183.tif 000020
【図１９】
2003096183.tif 000021
【図２０】
2003096183.tif 000022
【図２１】
2003096183.tif 000023
【図２２】
2003096183.tif 000024
【図２３】
2003096183.tif 000025
【図２４】
2003096183.tif 000026
【図２５】
2003096183.tif 000027
【図２６】
2003096183.tif 000028
【図２７】
2003096183.tif 000029
【図２８】
2003096183.tif 000030
【図２９】
2003096183.tif 000031
【図３０】
2003096183.tif 000032
【図３１】
2003096183.tif 000033
【図３２】
2003096183.tif 000034
【図３３】
2003096183.tif 000035
【図３４】
2003096183.tif 000036
【図３５】
2003096183.tif 000037
【図３６】
2003096183.tif 000038
【図３７】
2003096183.tif 000039
【図３８】
2003096183.tif 000040
【図３９】
2003096183.tif 000041
【国際調査報告】
2003096183.tif 000042
2003096183.tif 000043
2003096183.tif 000044
2003096183.tif 000045