前回,システムモデルを表現する方法として,「論理モデル」と「物理モデル」があることを説明した。今回はその論理モデルの定義方法についてより詳しく解説する。

アジレント・テクノロジー 電子計測本部 R&D プロセスコンサルティング
多田 昌人

 今回はより詳細に論理モデルを構築する方法について述べたい。
 論理モデルの基本的な構築方法は,これまでに解説した「顧客モデル」や「製品モデル」と同じで,機能(F:ユース・ケース)を列挙して,それに付随する非機能要件(URPS+)を定義するというのもの。通常は製品モデルのユース・ケースの実現手順であるユース・シナリオの各ステップが,論理モデルのユース・ケースとなる。ただし,そのFURPS+を列挙するだけでは,十分とはいえない。論理モデルのユース・ケースの実現に必要な製品の構成要素が,互いにどう関連しているかを考える必要がある。手順は以下のようになる。

  • (1)製品モデルが要求する機能(F)と非機能要件(URPS)+ を実現するためのシステム内の構成要素を挙げる
  • (2)構成要素間の依存関係を定義する
  • (3)他のすべての要求に対して上記(1)(2)を繰り返し,FURPS+の配分を最適化する
  • (4)最終的に各構成要素が担う機能(F)とその非機能要件(URPS+)を定義する

 (1)~(4)の進め方を具体的に見ていこう。  例えば,製品モデルの構築段階で「写真を印刷する」というユース・ケースが挙がり,そのFURPS+を表1のように定義したとする。このユース・ケースの手順(ユース・シナリオ)は,前回説明したように「用紙を送り」「印字ヘッドを移動し」「インクを吐出して」「最後に用紙を排出する」となる。第8回で解説したように,これがシステムモデルにおける論理モデルとなる。ここでそれらの機能(つまり論理モデルのユース・ケース)の実現に必要な構成要素を考えると「用紙」「印字ヘッド」「紙送り機構」といったものが挙がってくる。これが上記手順の(1)である。
 しかし,構成要素を列挙しただけでは設計には落とし込めない。機能と非機能要件の最適な配分と具体的な定義が必要だ。そこで,列挙した内部の構成要素(紙送り機構や印字ヘッドなど)が,それぞれ「何をしているか」を,時間を追って考える〔手順(2)〕。これを分かりやすく表現したのが図1のシーケンス図である*1
 こうした図を描くことで,11秒での処理範囲はどこまでか,その内訳をどうするかといった検討が容易になる。写真のデータ量を基に,用紙送りの時間や印字ヘッドの移動に要する時間などの配分を考えればよいのである。それらが,各構成要素の非機能要件になり,この後に物理モデルを検討する段階での制約事項となる。物理モデルの定義段階でその制約条件が守れないと分かれば,この論理モデルのシーケンスに戻ればよい。構成要素のどの配分を見直せばよいかが容易に分かる。
 図1は,手順と同時に(2)の構成要素間の依存関係も示している。依存関係とは,その構成要素同士が互いに与えたり受けたりする影響のこと。例えば,ある構成要素が,別の構成要素をどうやって起動するか,逆にある構成要素は何によって,どのように起動されるかといった関係である。これは,順番もしくは時間という関係で依存している*2

表1 「写真をL判用紙に印刷する」というユース・ケースのFURPS+
ユース・ケース(機能:F)に対して,非機能要件(URPS+)の設計目標とその評価方法を定義している。ちなみにここで「S」や「+」に挙げた「メンテナンス性」や「開発費」「部材費」といったコストは,このユース・ケースだけでなく製品全体にかかわってくる要素なので,本来はもっと上流で定義する。ただし,改良型の製品開発の場合,新機能や性能の実現のためにかけられるコストを明示できるなら,こうした記述が有用となる。

図1 「写真をL判用紙に印刷する」場合の論理モデル
こうした図を描くことによって「L判用紙に11秒以内に写真画質で印刷する」ために,三つの構成要素に機能や非機能要件をどのように割り振ればよいか,各構成要素同士がどう依存しているかを把握しやすくなる。

*1 UML(Unified Modeling Language)でも図1と同様の表現をするが,順番と情報のやり取りが分かれば,ほかの表現方法でも構わない。ここでは,時間的な依存関係と,情報という依存関係を表現している。

*2 ここでいう依存関係とは,機械設計で考えれば力の伝達であり,電気設計で言えば,どこからどこに電源が供給され,何がどれを制御するかといった関係である。ソフトウエアなら,どの関数がどんなパラメータでどの関数を呼ぶかといったところ。なお,依存関係としてはこのほかにも大きさや,重さ,熱などといったものも考えられる。それらは機能の分担決めではないので,論理モデルの機能展開の段階では表面化しないが,物理モデルを検討する段階で大きさを制限したり,必要な電源容量を決めたりする場合には明確化しなくてはならない。例えば,発生する熱容量や熱の影響を受けやすい構成部品同士の関係を明らかにする必要がある。こうした非機能要件による依存関係は,次回以降の物理モデルの検討で解説する。

構成要素ごとにFURPS+を洗い出す