あなたは人に「モデルベース開発」を正しく説明できるだろうか? プロセス改善手法の1つであるモデルベース開発の概念や特徴について解説
ご存じのとおり、皆さんが普段何げなく使用しているシンプルな家庭用電化製品から、輸送・通信・防衛/安全保障・医療・産業機器に至るまで、「組み込みシステム」は今日の電子機器製品の根幹を支えるテクノロジーとして急速に普及しています。
さらに、組み込みシステムの適用範囲は、プロセッサやメモリの低価格化と高機能化に伴い増大の一途をたどっており、組み込みシステム自体の大規模化も急速に進んでいます。例えば、DVDレコーダや携帯電話などに代表されるような次世代の情報家電製品においては、組み込みシステム向けのソフトウェアのステップ数は年々増大する傾向にあり、いまでは数百万ステップは当たり前で、中には1000万ステップを超えるようなケースも出てきています。実際、「ここ3〜5年の間で開発対象となるソフトウェアの規模は5〜10倍に増加した」という声も耳にするくらいです。
また、最近では、ソフトウェア/ハードウェアの機能分割や、組み込みソフトウェアを実装するターゲット・プロセッサ、OSの選択など、機能とコストを最適なバランスで実現するシステム構成を決定するために考慮しなければならない課題も多様化してきています。そして、開発プロジェクトのメンバーも同じ企業の社員だけとは限らず、企業をまたがった開発プロジェクトなど、その規模は増大傾向にあります。実際、経済産業省の調べによると、約80%のプロジェクトが10名以上のメンバーで構成されているそうです(図1)。
従って、プロジェクト管理の点からも、円滑かつ確実に開発を進めていくうえでも、メンバー間のコミュニケーションや共同作業は非常に重要となります。
このような組み込みシステムの設計・開発プロジェクトの大規模化、複雑化に歯止めが掛かる気配はまったくありません。むしろ、今後さらに加速していくであろうということが懸念されています。また、製品開発コストにおいて組み込みソフトウェア開発の占める割合は60%以上(図2)、携帯電話においてはその割合が70〜80%に達するといわれています。開発コストは最終的には製品価格に跳ね返ってくるものですし、利益確保のためには経費を削減しなければなりませんから、組み込みソフトウェア開発にとってコスト削減は非常に重要な課題といえます。
こうした状況に加え、移り気な消費者ニーズに迅速に対応すべく、製品のライフサイクルは短縮する傾向にあります。開発期間の短縮も当然のように要求されますから、このような需要の変化に対応するため、組み込みシステムエンジニアは正確かつ効率的なソフトウェアおよびハードウェアの開発をいまよりも速いペースで実現しなければなりません。
以上をまとめますと、現在、製品の根幹を成す組み込みシステム開発に関しては、開発自体が困難になっているにもかかわらず、低コスト、短期間で開発しなければならないという課題に直面しているわけです。製品開発(電子機器を含む)にかかわる製造業において、“組み込みシステム開発におけるプロセスの革新”が最も切実なテーマとなっている背景には、実はこのような現状があるのです。
従来の手法に基づく組み込みシステム開発では、要件および仕様は紙に記述された文書、いわゆる「仕様書」で定義されます。紙に書かれた仕様書を用いる問題点として、書き手の意図した情報を、読み手に誤解なく伝達することが非常に困難な点が挙げられます。すなわち、紙ベースの仕様書に基づく開発プロセスは、そもそもコミュニケーションの際にエラーが発生するリスクがあるものなのです。
さらに、この「仕様書」の妥当性を確認し、システム設計を進めていく過程で、各種のツールを駆使するなど、何らかの形でプロトタイプを構築しなければなりません。システムの設計結果は、このプロトタイプの出力結果と、仕様書に定義された所望の出力結果とを比較することで妥当性が評価されます。通常、開発に着手した段階では、紙の仕様書の内容は不完全で、必要となる詳細な設計情報がこのプロセスの中で明らかになることも多くあります。このような情報は、逐次仕様書に追加されていくべきものです。製品コストや開発スケジュールにより、このようなプロトタイプ開発のための費用や作業工数は制約を受けますので、その中で目的を達成しなければなりません。複雑化が進む組み込みシステム開発において、このような作業にどこまで工数を割くことができるのでしょうか?
また、無線LANや携帯電話などに代表される通信機器の開発では、製品の要求仕様が標準規格として確定する前から開発プロジェクトが開始されるというケースもあり得ます。このような場合、プロジェクトの進行中に、度重なる仕様変更や、それに伴う設計変更などの追加作業が発生することになります。紙に書かれた仕様書では、書かれた情報を誤解なく伝えることさえ困難なのに、変更された情報を逐次更新し、管理することなんて本当に実現できるのでしょうか?
典型的な組み込みソフトウェア/ハードウェア開発は、このようなシステム設計の工程を経て、仕様の妥当性が確認された後、再び紙の「仕様書」に基づいて、プログラミング言語やハードウェア記述言語を用い、人手を介してコーディングされることで進められます。このような人手を介したコーディング作業にはそれなりに時間がかかりますし、高いスキルを持った要員の確保も困難ですから、コードの品質も要員のスキルに依存してバラツキが生じる可能性もあります。また、タイプミスや、仕様書に記述された内容がコーディング作業者に正しく伝わらないことが原因で、エラーが混入する可能性も否定できません。過去に開発されたソフトウェア資産を再利用する際に、他人の作成したプログラムコードを参照しようとしたが、解読するのに苦労して結局再利用をあきらめてしまったとか、開発資産の継承がうまくいっていないという話はよくあることです。
では、検証という観点ではどうでしょうか? コーディング時に発生した単純なタイプミスのようなエラーであれば修正は容易かもしれませんが、単体テストで検出できず、システム全体の統合テストのような最終段階でエラーが検出された場合はそうはきません。このようなエラーは、システム内部の機能単位(サブシステム)間の相互作用などさまざまな要因が複雑に絡み合って発生することが多く、その原因を特定し、修正するには莫大な時間と費用が必要となります。また、このようなエラー要因を特定する際に避けて通れない工程間をまたがるようなコミュニケーションにおいては、ほとんどの場合、紙の仕様書をよりどころとして進めなければなりません。いままでの話からもその作業が容易でないことは誰でも想像がつくでしょう。こうなってしまうとプロジェクト全体が遅延したり、最悪の場合、それまでの作業が台無しになってしまったりというリスクが懸念されます。
このように、実際の開発現場で直面する問題から、紙の仕様書だけに基づいた従来の組み込みシステム開発の限界が明らかになってきたわけです。
従来手法の限界が明らかになるにつれ、組み込みシステム開発におけるプロセスの見直しや革新的な手法への取り組みは急務であるという認識が高まっています。その結果、現在では国内外のさまざまな分野において、組み込みシステム開発プロセスの改善策、手法が議論されるようになっています。その範囲は組み込みシステム開発に携わるメーカー企業のみならず、開発ツールを提供するベンダ、コンサルティングや受託開発などの技術サービスを提供する企業にも及んでいるようです。
本稿の主役である「モデルベース開発」は工業製品、特に電子機器製品に含まれる組み込みシステム開発のプロセスを改善するための手法の1つです。近年、航空宇宙分野や自動車分野における組み込み制御システム開発の現場で採用され、一定の効果が出ているという報告もあることから注目を集めています。
世の中には、モデルベース開発について言及している書籍やWebの情報は数多く存在していますが、その定義や解釈については“これ”といったものがないのが現状です。そこで、これらの情報を基に筆者は、モデルベース開発において言及される代表的な特徴、その構成要素を抽出してみました(以下、4つ)。
モデルベース開発について言及している情報の中には、これらすべてについて記述されているものあれば、部分的に記述されているものもありますが、従来手法の問題として指摘されていた、紙の仕様書で不足する情報を補完するために「モデル」を用いることで、「仕様を明確化する」「開発プロセス全体のコミュニケーションを改善する」「開発の上流工程を重視する」というコンセプトにおいてはどれも共通のようです。
これらを踏まえて、モデルベース開発について定義すると、
対象となるシステムを記述したモデルを仕様として定義し、このモデルをよりどころとして開発プロセスを再構築する手法
といえます。
次ページでは、モデルベース開発において、その核となる開発の上流工程での適用に着目し、代表的な2つの特徴について解説していきます。
Copyright © ITmedia, Inc. All Rights Reserved.