ビースラッシュ代表取締役社長の山田大介氏
ビースラッシュ代表取締役社長の山田大介氏
[画像のクリックで拡大表示]

 想定外の不具合やテスト工程での設計のやり直し、納期に間に合わせるための突貫工事…。今、悩みを抱えているソフトウエア(以下、ソフト)の設計現場は珍しくない。こうした悩みを解決する1つの解が、モデリングである。

 「技術者塾」において「不具合の未然防止に役立つ 組み込みソフトのモデリング」の講座を持つ、ビースラッシュ代表取締役社長の山田 大介氏に、組み込みソフトのモデリングについて学ぶ利点やポイントなどを聞いた。(聞き手は近岡 裕)

──組み込みソフトのモデリングは、今、なぜ求められるのでしょうか。

山田氏:ソフトの設計現場では現在、大規模化や丸投げ、在庫化(価値の低下)が進み、問題が深刻化しています。大規模化の問題は、様々な機器がデジタル化されたことで生じました。ソフトの規模が増大し、ソフト全体を把握している人が極めて少なくなっているのです。

 続いて、丸投げの問題は仕様を伝達するだけの「手配師」が増えたことで発生しました。上流工程の要求分析や方式設計を行わずに伝達するだけで済ますため、後工程になって問題が発覚してしまうのです。そして、在庫化の問題では、最初に作ったソースコード(ソースプログラム)を数年に渡って使い続けていくことが原因で起きています。局所的な修正が、結果としてソースコードを複雑怪奇なものにしてしまいます。在庫化が進んだソースコードは修正に時間がかかり、副作用となる不具合が発生しやすいのです。

 例えば、コンパクトなデジタルカメラでは、ソフトの規模が優に100万行を超えている上に、モデルチェンジが早いことから年間に複数機種を開発しなければなりません。つまり、ソフトの規模の増大と製品開発サイクルの短縮を背景に、ソフトの設計現場の負荷が高まっていることが問題を深刻化させているのです。

 技術者塾の講座でソフトのモデリングを学ぶと以下のことが期待できます。(1)モデル化することで、大規模ソフトの全体を見渡せるようになり(プロジェクト計画も立てやすくなる)、(2)外部委託などの活用(連携)がより上手にできるようになります。受け入れてからテストをするだけではなく、上流工程で品質を作り込むことができます。そして、(3)ソフトを資産(価値の高いもの)にし、再利用しやすく、複数機種に搭載しやすいものにすることができます。

──組み込みソフトのモデリングは、今後ますます必要とされるようになるのでしょうか。

山田氏:「組み込みソフト」という単一製品はもちろんですが、実社会の情報をコンピューティングと結びつけて、より一層高度な社会の実現を目指すシステム「Cyber-Physical Systems(サイバーフィジカルシステム、CPS)」としてのソフト、IoT(Internet of Things、もののインターネット)に搭載されるソフトなど、今後使われるニーズの高いソフトの作り方としても、モデリングは効力を発揮します。

 ソフトのモデリングを駆使すれば、仮説検証型のプロダクトアウト、すなわち、ユーザーにとって価値のある機能を先行して市場投入し、ユーザーとともに進化させていくような作り方が可能となります。イノベーティブなものづくりといえます。

──組み込みソフトのモデリングを学ぶ上でのキーポイントを教えてください。

山田氏:ソフトウエアの全体像を俯瞰し、「静的な機能構造」と「動的なタスク構造」を分けてモデリングすることです。多面的に見て、構造的に表現することが大切です。ソフトのアーキテクチャー設計では「複数のビューでモデル化する」と表現します。これまでは、どちらかというと詳細化、すなわち、動作するソースコードを作る方向へ向かうだけでした。また、プログラム言語は手続き型であることが多く、処理の流れを実装すれば動きます。実装する前に、設計を構造的に見ることに慣れていないソフト設計者が多いというのが現状です。

──技術者塾の講座では、どのようなポイントに力点を置いて説明しますか。

山田氏:次のポイントに力点を置きます。まず、組み込みソフト全体を俯瞰し、複数のビュー(静的、動的、状態)で、それぞれモデル化します。続いて、その際の視点の違いを明確にします。静的な視点では抽象化(粒度)や概念化(名前付け)という発想スキル(右脳的なスキル)を、動的な視点ではリアルタイム性や同期といった技術スキル(左脳的なスキル)を使います。最後に、これらを図面化して矛盾のないように「統合」します。

──想定する受講者はどのような方ですか。また、受講することでどのようなスキルを得られますか。

山田氏:新しい価値を創造していく若手技術者(次世代のリーダーとなる技術者)から、大きなプロジェクトを上手に運営したいベテラン技術者(現世代のリーダーである技術者)まで、ソフトを扱う幅広い技術者が対象となります。

 受講効果としては、良い設計をするためのスキルや、他の技術者とコミュニケーションしながらより良いものを作り上げるスキル、そして設計意図を他の人に伝達するスキルが身に付きます。

 具体的には、ソフト設計図(モデル)の具体例を踏まえながら、ソフトの読み書きの基礎を学べます。加えて、ソフトの全体像を俯瞰しながら、静的構造図や動的構造図などを作成するスキルを演習を通じて習得できます。そして、ソフトの設計原則である「高凝集」や「疎結合」、「走り切り」といった基本概念を理解することができます。