システム構造の可視化と改善
"良いシステム構造"と"悪いシステム構造"
本記事で示しているDSMの例は極端で単純な例だが、こうした例を含む多くのパターンに触れることは、DSMの見かたを学び、身に付けていくうえで、重要である。初心者のうちはDSMから読み取れる情報は少ないが、慣れてくることによって、短時間でシステム構造を俯瞰(ふかん)できるようになる。これは、2次元CADで描いた図面から3次元の立体を認識することに似ている。
まず、良いシステム構造を、いくつか示す。
一般的に、良いシステム構造は一方向のモジュール構造となっており、DSMでは対角線よりも下の領域に"x"が現れる(図6)。
図6: モジュール構造が一方向のDSM |
ほかのモジュールから利用されるライブラリ的なモジュール(D)や、センサーやアクチュエータのデバイスが存在する場合、DSMでは横一列で"x"が並ぶことになる(図7)。
図7: ライブラリ的なモジュールのDSM |
一方、制御の調整役やコントロールをつかさどるモジュール(A)は、DSMにおいて縦一列で"x"が並んで現れる(図8)。
図8: コントロールをつかさどるモジュールのDSM |
モジュールA~Dまで処理をつなげて、複雑な動作に対応させていくシステム構造の場合、モジュール間に直列の関係が強いため、DSMでは対角線の下に"x"が配置される構造となる(図9)。
図9: モジュールA~Dまで処理がつながっている場合のDSM |
このように、モジュールの役割がほかのモジュールに対して構造上うまく分担できているかを、依存関係の並び方のパターンとして把握することができる。
最後に、前ページの図4で示したDSMの図において、システム構造上、良くないモジュールの依存関係が存在しているため、悪いシステム構造の例として説明する(図10)。DSMで見ると、右上三角形に存在する"x"が、良くない依存関係を示している(DSM上、黄色の丸で囲った部分)。
図10: モジュールの依存関係が良くない、悪いシステム構造の例 |
良くない依存関係の1つ目は、モジュールBとCの相互依存関係である。モジュールBからC、モジュールCからBの関係が存在し、双方の役割分担がよくない関係となっている。2つ目は、モジュールDからAの依存関係である。これにより、モジュールA→B→C→D→Aと、モジュールA→C→D→Aの2つの循環参照が発生している。
このような、悪い例の積み重なりが、システムの安定性を損ね、大変な労力とコスト負担を開発現場に強いてしまう。一般的に、ソフトウエア開発現場ではUMLの利用が推奨されているが、開発量の大規模化に伴い、膨大な図面の量を確認する必要が生じている。SysMLにおいても同様の状況が考えられるが、DSMを併用することで、効率的にシステム構造の矛盾点を発見/管理し、システム構造の改善に役立てられるようになる。
実際のシステムでは、こうした相互依存関係や循環参照をすべて取り除くことが困難な場合が多い。従って、現実的には、モジュールの変更影響度/影響範囲を最低限把握するとともに、関連モジュールを正確に特定して検証する、という運用方法をとる。
図11: 現実の姿をあるべき姿に近付ける活動に定常的に組み込む |
理想的かつ最適なシステム構造、すなわち、あるべき姿を設計の初期から規定することは、困難である。現状のシステム構造、すなわち現実の姿をDSMを使って評価/監視しつつ、現実の姿をあるべき姿に近付ける活動に定常的に組み込むことが、設計品質を高めるポイントとなる(図11)。なお、筆者らは、SysMLのモデリングに「Enterprise Architect」(開発会社はオーストラリアのSparxSystems)、DSMによるシステム構造の確認に「Lattix」(開発会社は米Lattix)を用いている。