システム構造の可視化と改善
前回は、システム・モデルを作成することの重要性を解説した。今回は、システムのモデル化を表現する手段である「SysML」と、モデルの品質を確認する手段である「DSM」(Dependency Structure Matrix)を紹介する。DSMの説明に際しては、"良いシステム構造"と"悪いシステム構造"を対比させながら、製品の品質を高める方法について示す。
製品の品質を確保する手段として、システム構造の可視化が重要である。製品は、個々の独立した機能部品(モジュール)が積み重なって構成されている。独立したもの(モジュール)を連携させるために、これらを接続するインタフェースが必要になる。インタフェースを規定し、個々のモジュールに分割するルールを決めているのが、アーキテクチャである。
航空宇宙や造船系の開発では、システム・エンジニアリングの考え方に沿って、大規模・複雑化した製品設計に対して、モジュール化を自然に用いてきた。
残念ながら、現状の製品開発では、求められる機能や制御部品が複雑化/複合化していることから、モジュールの分業/協調設計がやりにくくなっている。例えば、モジュール化を設計に持ち込む際、「どこまで細かくモジュール化すればよいのか」という問いに答えられない。
これらに答えるため、システム・エンジニアリングの知見を反映し、設計の情報を厳密に記述/表現する手段を提供するのが、モデリング言語のSysMLである。SysMLでは、UML(Unified Modeling Language)におけるソフトウエア特有の配置図やオブジェクト指向絡みの特殊な記述要素などを抑制することで、より使いやすくしている。
図1: SysMLとUMLの違い(クリックで拡大) |
SysMLは、次に示す4つの柱から成り立つ。
- 要求: 何を作るべきか?
- システム設計者が、企画部門や顧客と仕様を共有するため、要求図を作成する
図2-1: 4つの柱で成り立つSysML: 1.要求図(クリックで拡大) - 構造: モジュールをどう分割し、どう組み上げるか?(構造面の独立性を主に確保する)
- システム設計者は、システムを構成するモジュール(ブロック)を配置し、依存関係を構造図にて定義し、ブロックごとに、ハードウエア、ソフトウエアを分割する
- システム設計者は、機能部品とペリフェラルの拡張部分を設計し、ハードウエア設計者とフィージビリティ(実現可能性)を評価する
図2-2: 4つの柱で成り立つSysML: 2.構造図(クリックで拡大) - 振る舞い: モジュールは、どの様な順番で機能するか?(機能面の統合を主に図る)
- システム設計者は、複数のモジュールが機能を実行する流れ(機能フロー、状態管理)を定義する
- システム設計者は、動作性能をハードウエアやソフトウエアの設計者と評価する
図2-3: 4つの柱で成り立つSysML: 3.振る舞い図(クリックで拡大) - パラメトリック: モジュールは、どのような制約と順序に従い、値を変換するのか?
- ハードウエア設計者は、DSP(Digital Signal Processor)などについて、入力信号から出力信号までの演算ロジックを設計する
- ソフトウエア設計者は、入力/出力データ構造を評価する
図2-4: 4つの柱で成り立つSysML: 4.パラメトリック図(クリックで拡大)
なお、2つ注意すべき点がある。
1つ目は、SysMLの利用方法に、決まり切ったプロセスがない点である。製品開発のステップのうえで、ソフトウエアの開発が先行する組織もあれば、ハードウエアの開発が先行する組織もある。おのおのの現場の設計プロセスによって、これらの図を設計業務の中でどのように位置付け、どのように用いるかは、開発組織ごとに定義する必要がある。
2つ目は、設計時にすべての図と記法を実際の設計に用いる必要はない点である。すべての図を知っておくことは悪いことではないが、開発の現場において暗黙的であいまいな解釈が入り込みそうなところや、開発者自身が使いこなせる範囲で適用することが重要である。このためには、実際のツールを購入し、部分的に用いることから始めるのがよいだろう。
次に、DSMを用いた、システム構造の品質の確認について解説する。