要件の整理/共有でシステム設計の品質を高める
これから4回に分けて、「組み込み製品の品質を高めるシステム設計」をテーマに、組み込み製品開発における実践的なプラクティスを紹介する。
組み込み製品とは、特定の機能を実現するためにコンピュータ・システムを含んでいる製品を指しているが、対象とする製品は時代とともに変わってきている。
例えば、メカニクス製品の代表のような自動車を例に見てみよう。自動車は、走る、曲がる、止まる、運ぶ、というのが代表的な機能だが、これらの機能は駆動制御、ボディ制御、安全制御、マルチメディア制御などで構成され、いまやコンピュータ・システムのかたまりといえる。
この例からも分かるように、以前であれば組み込み製品とは思われていなかった製品も、組み込み製品に分類されるようになってきている。現在では、組み込み製品でない製品を探す方が難しい状況となっている。
背景には、製品機能の高度化が挙げられる。製品開発に携わる人々は、ネットワーク化やソフトウエア化という手段、つまりIT技術を駆使して、これらの機能を実現しているのである。
経済産業省が公開した「2009年度組み込み産業実態調査」によれば、組み込みソフトウエアの開発費総額は、過去5年以上にわたって年率平均15%以上で増加しており、いまや組み込み製品開発総額の49.0%を占めている(図1)。つまり、製品開発費の約半分を、組み込みソフトウエア開発が占めているのである。
図1: 製品開発費に占める組み込みソフトウエア開発費の割合が増加 |
しかし、これだけソフトウエア開発のウェートが高まっているにもかかわらず、製品開発の現場は、以前と変わっていない。依然として、かつてメカニクス製品を開発していたときと同じような、メカ主導型の開発の進め方を続けているのが実態だ。
メカ主導型の開発には問題がある。メカ開発(以下、メカ)に比べて、エレクトロニクス開発(以下、エレキ)とソフトウエア開発(以下、ソフト)の着手時期が遅くなってしまうのである。これにより「メカとエレキ/ソフトとの間で技術情報が伝わらない」「メカとエレキ/ソフト間の業務分担が確立されない」といった問題が発生する(図2)。これでは、重大な品質問題を引き起こしかねない。
図2: 組み込み開発時代には、メカ設計とエレキ・ソフト設計のギャップが問題を引き起こす |
事実、コンサルティングの現場で出くわすのは、「とにかく納期優先*1」というスタンスで、品質を後回しにする開発現場である。「作ってみないとわからない*1」というスタンスで、検討もそこそこに終わらせて、製品を試作してはモグラたたきのように不具合をつぶす。ひとりよがりの表現や用語で仕様を伝達して「伝わっているはず*1」と思い込む。設計が完了すると、他者への影響はお構いなしに「自分は大丈夫*1」と考える。こうした、タコツボ化した技術者の集まりの開発現場である。
*1: 「太字」表現は『それでもコストは削れる。』(iTiDコンサルティング編著、日経BP社発行)より
これらの事態を、技術者の努力や1人のスーパーマンの活躍で解決するのは、難しい。要求が高度化し、その要求を満たすための機能が複雑化しすぎている現状は、1人の人間が設計できる限界を超えている。開発対象が今後も複雑化していくことが見えている以上、技術者の努力といった根性論ではなく、仕組みとして仕事のやり方を根本的に変えていかねばならない。
では、どう仕事のやり方を変えていけばよいのか。それが、今回の連載のテーマである。