2006-09-16

ものづくり戦略とソフトウェア品質

記事をお読みいただく前にお知らせがある。インターネット書店のアマゾンで『組込みソフトエンジニアを極める』の 「なか見!検索」ができるようになった。

なか見!検索」とは、アマゾンのWEBサイト上で書籍のページをぱらぱらめくったり、書籍の中身に対して全文検索できるサービスである。(アマゾンのWEBサイト内でアカウント認証していることが条件になっている)

このサービスは著者にも便利なサービスだ。たとえば「状態遷移」について書いたところを探したいなと思ったら、「なか見!検索」の検索バーに“状態遷移”と打ち込んでリターンキーを押せば、11ヶ所で使っていることがわかる。是非、こちらで試してみて欲しい。

さて、今回のテーマは『ものづくり戦略とソフトウェア品質』である。9月14日、15日、東京お台場のTFTビルで日科技連主催の-ソフトウェア品質シンポジウム-が開催された。このシンポジウムでは何人もの著名な方々が講演されているが、特に印象に残ったのが、広島市立大学情報学部教授 大場充先生の「ソフトウェアのテストと品質保証」と、東京大学大学院経済学研究科教授 兼 ものづくり経営研究センター長 藤本隆宏先生の「ものづくり論とソフトウェア-組織能力とアーキテクチャの視点から-」の2コマだ。

大場先生はソフトウェアテスト・品質保証の専門家で、米国IBMや日本アイ・ビー・エムで培われた実践的なソフトウェア品質保証の話をしてくれる。藤本先生は日本の製造業を生産の現場を中心に調査し、日本の製造業(特に自動車製造)の組織論、ものづくりの優位性について研究されている。

お二人の代表的な著書は大場先生は『ソフトウェアプロセス改善と組織学習―CMMを毒にするか?薬にするか?、藤本先生は『日本のもの造り哲学』などがある。

大場先生も藤本先生もそれぞれちょっとだけ面識があり、ソフトウェア品質シンポジウムが始まる前にプログラムをチェックしておいて講演を聞きに行った。そこでおもしろい発見をした。今回のソフトウェア品質シンポジウムで別々のコマで発表された専門分野のまったく違うお二人が二人とも偶然アリストテレスの話をしたのだ。

大場先生は講演の中で、アリストテレスは物質(実体、存在するもの-Substance-)とは何かを考え、その量的側面と質的側面を分けて考えようとし、量的な側面を表現する言葉として現在の英語の Quantitiy(質量)に相当するギリシャ語を用い、その対立する概念である質的な側面を表現する言葉として「様態」に近いことばを造り、そのことばがラテン語の Qualitas 、英語の Quality の語源となったと語った。

アリストテレスの哲学における「質」は、日本語で言えば「様態」に近い概念で、「ものが存在している様子」を表し、たとえば、水と氷のように水の「液体状」と「個体状」の様態の変化を明確に区別したいという意図から「質」という概念と、それを意味する言葉を創りだしたと大場先生は言った。

ここからがおもしろいのだが、藤本先生はご自分の講演で、大場先生と同じようにアリストテレスを引用して、「アリストテレスはものの中に真意が宿っていると考え、ものは“質量”と“形相”が合体したものであり、“形相”とは品質と設計情報に分離される」と語った。

アリストテレスが物質を表すためにに Quantity(質量) とは異なるもう一つの概念を考え、大場先生はそれを“様態”から Quality(品質)へ変化したといい、藤本先生はそれは“形相”であり、品質+設計情報であると言った。

藤本先生の話では、ものづくりの結果できあがった“もの”には設計者の意図が含まれており、ものを手にしたユーザーはパッケージなどから設計者がものに埋め込んだ設計情報を推定しているとのことだった。藤本先生は壇上でミネラルウォーターのパッケージを示してこの情報も設計情報の一部であると説明していた。

【藤本先生の講義スライドから引用】

-ものづくり現場発の戦略論とは-

広義の「ものづくり」・・・ 人工物に託して、設計情報=付加価値を創造し、転写し、発信し、お客に至る流れを作り、顧客満足を得ること。「ものをつくる」ではなくむしろ「ものに(設計情報を)つくり込む」

ものづくり現場に偏在するものは何か? 実はモノではない。設計である。

したがって、「ものづくり現場発の戦略論」とは、高度5メートルの世界(ものづくり現場)に偏在する「設計情報」にこだわり、製品・工程の設計のありかたを虚心坦懐に観察することから出発し、そこから組み立て直す戦略論である。

[1] ものづくりの組織能力 = その企業特有の「設計情報の流し方のうまさ」
[2] アーキテクチャ = その製品・工程の設計情報がもつ構想(設計思想)

【引用終わり】

藤本先生は、ものの価値は設計情報の価値であり、企業はお客様の方向に設計情報を流す流れを作ることが大事であり、設計情報の流れから無駄を省くことが必要だと言っていた。そして、トヨタ自動車はこの設計情報の流れをできるだけ早く無駄なくするということに集中しており、実際に効果を上げているという。

このような組織能力(Organization Capability) と流れを早く無駄なくするアーキテクチャを構築するには組織としての統合力が必要であり、分業しすぎずに全体が見えている必要があるとのこと。そして、最適化された組織能力(Organization Capability) は他の組織には簡単にまねすることができない。

組織の特長とアーキテクチャの組み合わせを間違えるとあっという間に組織能力を下げ、市場競争力を下げてしまう。藤本先生はIBMの歴史について、昔IBMの組織能力とクローズドのメインフレームアーキテクチャは相性がよかったが、オープン・サーバーのアーキテクチャを採用したことで組織能力との相性が悪くなり、この分野の業績を悪化させた例を挙げていた。

ひとつのブログ記事で藤本先生の考えを語り尽くすことは不可能なので、今回はモノの価値と顧客満足と品質との関連に絞って書きたいと思う。

「ソフトウェア品質とは何か」の記事で、「品質とは、顧客要求を満たし満足させる程度」であると書いた。『組込みソフトエンジニアを極める』の第4章 -品質の壁を越える-では、「組込み製品の価値」には 顕在的価値(Real Value)と潜在的価値(Potential Value)の2種類の価値があると書いた。(冒頭の図)

顕在的価値は簡単に言えばカタログスペックとして掲載されるような機能や性能であり“魅力的な品質”を表す、潜在的価値とは品質の中でも“当たり前品質”と呼ばれるようなものである。

大場先生は一般にソフトウェア品質の定義としてよく引き合いに出される ISO9126 の6つの品質特性「機能性」「信頼性」「使用性」「効率性」「保守性」「移植性」は品質に関するひとつの View であり、時代の流れによって品質に対する考え方は変遷しており、“魅力的な品質”と“当たり前品質”といった日本的な価値を重視した考ええ方もあるのでISO9126 の6つの品質だけが品質の定義だとは思わない方がよいと言っていた。

“当たり前品質”は良いからといって評価につながらないことが多いが、悪い場合には企業自体の悪い評価に直結する可能性が高い傾向がある。

さて、藤本先生が語る「ものづくりの競争力」には次のような流れがある。

・ものづくり組織能力(問題解決、改善能力。ジャストインタイム。フレキシブル生産)
 ↓
・裏の競争力(生産性、コスト、生産リードタイム、開発リードタイム、開発生産性など)
 ↓
・表の競争力(価格、性能、納期、ブランド、市場シェア、お客の満足度)
 ↓
・収益力(会社のもうけ、株価)

藤本先生は「アリストテレスはモノを質量と形相に分け、形相は品質と設計情報のことである」と言った。上記のものづくり競争力の流れの最初の2つは設計情報に関係し、後の2つが品質に関係する。

「ものの品質が顧客要求を満たし満足させる程度」であるなら、それは顕在的価値(魅力的な品質)と潜在的価値(当たり前品質)の2つに分解できる。

設計情報(付加価値)を創造し、モノに転写し、発信し、ユーザー至る流れを作ると顧客満足を得ることができる。

・設計情報がモノの価値を生み出し最終的に顧客満足につながる。
・設計情報をモノに転写するときに品質が生まれ、品質が価値を生み出す。

この話は、組込みソフトエンジニアにとっては朗報と言える。ソフトウェアは設計情報の固まりだ。メカやエレキのようにQuantitiy(質量)の要素がないので、100%設計情報であり、その設計情報が顧客満足を高めることに直結する。また、顧客満足の度合いである品質は設計情報を転写するときに生まれるため、ソフトウェアの場合はソフトウェアエンジニアによってのみ品質が作り込まれる。

部品の歩留まりや、寸法のずれ、生産、組み立て効率などの要素がないので、ソフトウェアエンジニアの能力がストレートにモノの価値や品質を作り上げる。

逆に言えば商品の価値や品質を下げる要因がソフトウェアにあった場合、もとをたどると設計情報そのものが悪かったか、それとも設計情報を転写するときに問題があったのかどちらかになる。部品や生産の仕方などに責任を押しつけることはできないので、全部組込みソフトエンジニアに戻ってきてしまうのだ。

組込みソフトエンジニアが設計情報そのものを質を高め、設計情報を転写するときの品質を高めると、企業の組織能力、競争力、収益力が高まる。

組込みソフトエンジニアが技術を磨いてよい設計情報を作り上げ、設計情報を転写する際に品質を作り込むことができれば勝ち、設計情報自体もたいしたことがなく、設計情報を転写する際の品質も低ければ負けということになる。誰のせいにもできない。

やりがいもあるし、いい加減にしたときのしっぺ返しも強い。因果な商売である。

2006-09-10

組込みソフトの安全性

今 、組込みソフトを搭載した組込み機器は世の中にあふれている。携帯電話、FAX、エアコン、TV、リモコン、ミニコンポ、プリンタ、エレベータ、自動車、信号機、自動ドア、電子レジスタ、医療機器、鉄道、飛行機などなど。

そして、組込みソフトが原因となって社会問題に発展するような事故も少なからず起きている。

今回は、組込みソフトの安全性について、『組込みソフトエンジニアを極める』のプロローグの一節から考えてみたい。

【『組込みソフトエンジニアを極める』-プロローグ-より引用】

組込みソフトエンジニアがハードルや壁を乗り越えゴールに到達するまでには、高いモチベーション(動機付け)が必要です。では、組込みソフトエンジニアは試練を乗り越えて技術を高めるためのモチベーションをどこに求めればよいのでしょうか。

ひとつは、常に追いつめられながらギリギリの状態で仕事に取り組まなければならない悪循環から抜けだし、開発効率を高め余裕を持ってクリエイティブな気持ちで仕事に臨めるようになるため、そして、もう一つは魅力的な製品を開発し、ユーザーに信頼を持って快適に使ってもらい次回も自分たちの製品を選んでもらえる自信が持てるようになるため、この2つ理想が試練を乗り越えるためのモチベーションの源泉になります。

組込みソフトウェアは単に組込み機器の中で動くソフトウェアという意味ではありません。組込み機器は、さまざまな形状の外観を持ち、さまざまなユーザーインターフェースで人々の生活の中に入り込み、生活の表舞台に、あるいは、生活を支える裏方として役に立っています。組込みソフトウェアは、その心臓部であり、コントローラです。そして、組込みソフトエンジニアには自分たちが作ったソフトウェアが組込み製品の中で重要な役割を果たしているという喜びと満足感があります。

しかし、その喜びや満足感の後ろには大きな責任もあります。組込み機器が私たちの人間の身近にあって役に立っているということは、一歩間違えば組込み機器は人間を傷づける凶器にもなりかねないということです。特に組込みソフトウェアは中部の構造が見えにくいにも関わらず、設計の自由度が高いため、設計者の意図に反して社会的な問題を起こしてしまうことも残念ながらあります。

私たちは、ものつくりの喜びを感じながらも、自らの技術を磨き、組込み機器を使ってもらうエンドユーザーの満足を満たしつつ、安全で信頼性の高い組込みソフトウェアを世に送り出す義務を背負っています。

組込みソフトエンジニアは、目的を達成するための技術を磨き極めることで、仲間と創造の喜びを分かち合うことができ、便利なだけでなく安心して使える魅力的な組込み機器を世に送り出すことが可能となり、社会と組織への責任を果たすことができるのです。

日本の組込みソフトエンジニアを取り巻く環境を振り返ると、組込みソフトプロジェクトでは、技術者のぎりぎりのがんばりで増加した要求や計画された製品のリリース期限をこなしているという現状があります。場合によっては、プロジェクトに新しい人を投入することで解決しようとする組織もあるでしょう。

しかし、安直な増員はかえって技術者の負担を増加させることになり悪循環からなかなか抜け出すことはできません。組込みソフトエンジニアは技術を磨き極めることでのみ、悪循環を脱し、好循環の世界に突き抜けることができるのです。好循環の世界に入ることができれば、高い品質の組込みソフトウェアを効率よく開発することが可能となり、今リリースしている製品よりももっと顧客満足を高めることのできる商品を作り出すことができます。効率化によってできた余裕でオリジナリティの高いアイディアを考え、新しいキーデバイスの導入をハードウェア技術者と検討することも可能になります。

組込みソフトエンジニアを極める目的は、ものつくりの喜びを分かち合い、生活を豊かにし安心して使える商品を世に送り出し、商品をより競争力の高いものに引き上げ競合他社に打ち勝つことにあるのです。そこに至るまでの道のりは長く、途中にはハードルや壁が横たわっています。私たち組込みソフトエンジニアは、到達すべきゴールから目を離すことなく技術を極めることでハードルと壁を乗り越え、悪循環から好循環への境界を突破できるのです。

【引用終わり】

組込みソフトエンジニアは組込み機器を世に送りだし、自分が作った機器が社会の中で役立っているという喜びや満足感を得ることができる、しかし、その喜びや満足感の後ろには大きな責任もあると書いた。

組込み機器が私たちの人間の身近にあって役に立っているということは、一歩間違えば組込み機器は人間を 傷づける凶器にもなりかねない。

組込みソフトはハードウェアを制御することができるが、ハードウェアが扱うエネルギーの大きさを考慮せずに設計することもできてしまう。

CPUに接続されているポートを ON/OFF するだけで、巨大なクレーンのアームを動かしたり、エレベータを昇降させることができる。

組込み機器に搭載するソフトウェアの規模が小さいときは、組込みソフトエンジニアはプログラムを書きながら組込み機器の動きを想像することができた。しかし、ソフトウェアの規模が10万行を越えて100万行クラスになってくると、今作っているソフトウェアモジュールがシステム全体の中でどのような役割を担っているのか、どのような優先度で動いているのか分からなくなったりすることがある。

特に、システムの一部をオフショアに出したりすると、一部の機能を任されたプログラマ達は、システムがどのようなエネルギーを扱うのか分からないまま、現在ある情報だけでソフトウェアを作ることになる。

規模の大きいソフトウェアの信頼性を高め安全性を高める方法はあるが、唯一の解決策、ゴールドスタンダードはない。

ソフトウェア開発のプロセスを定義し、プロセスのインプットとアウトプットを Verification(検証)し、不整合なないことを確認する。また、設計の努力によって不具合の作り込みを減らし、テストやレビューなどによって、不具合を摘出する。そして、作り上げた組込みソフトウェアと組み込み機器がユーザーニーズに合致しているかどうかを Validation(妥当性確認)する。

また、想定されるリスクを防止、軽減するためにどんな対策をすればよいか考え、その対策を確実に実施したことを確認し、過去に起こした不具合の再発を防止するための対策を追加し、他の機器で起こった問題が自分たちの機器にも起こりえないかどうかを分析する。

不具合の発生件数をトレースしたり、継続的な技術者教育を行うことも大事だ。

いろいろなアクティビティはあるのだが、ひとつ言えることは、自分たちがリリースする機器が社会の中で安全に働いて欲しいという強い思いと、安全な作品をリリースしているという自覚と、裏付けのある自信がなければダメだ。

組込みソフトウェアの規模が小さいときは、製品の開発に関わるソフトウェアエンジニアのすべてが自分の作ったソフトウェアにそのような自覚を持っていた。

しかし、規模の大きくなってしまった現在では、組込み機器を組込みソフトを安全で信頼できるものにしたいという自覚を持った技術者がシステム全体の安全性や信頼性の実現を確認していかなければいけない。

組込みソフトの安全性の確保、妥当性の確認には終わりはないのだが、組込み製品が抱えるリスクの大きさによって、その努力はより慎重により深く実施されなければいけない。

組込みソフトエンジニアのモチベーションの源泉である “自分が作ったものがユーザー個人や社会に役立っているという喜び” が、その思いとは裏腹に人を傷つけ、社会問題を起こさないようにためには、自分たちが作るソフトウェアの安全性や信頼性を高めるための設計技術・検証技術を獲得し実践するしかないのである。

2006-09-03

2006年3月から8月までの記事の索引

今回は、これまでこのブログ『組込みソフトウェア工房』に書いた記事・エッセイの索引を作ってみた。リファレンスリストを作ってみると、組込みアーキテクチャや人材育成に関する記事が多いことがわかる。裏を返せばやっぱり、組込み機器の開発を成功させるにあたっていろいろ壁になっているのがこの2つのテーマなのかもしれない。

★はお勧め記事

--- 組込みソフトウェア工房 記事リファレンスリスト 2006年3月~8月 ---

組込みソフトエンジニアを極める
組込みソフトウェア工房へようこそ
なぜ、『組込みソフトエンジニアを極める』を書いたのか?
★『組込みソフトエンジニアを極める』に送られたメッセージ
★『組込みソフトエンジニアを極める』に送られたメッセージ2
缶バッジ


【ソフトウェア品質に関するもの】
★★シンドラーの事故を防止するためにはエンジニアは何をすべきか
★ソフトウェア品質とは何か

【日本人の気質とソフトウェア開発】
★ISO9000やCMMIに違和感を感じませんか?

【エンジニアとしてのスタンス】
★働くことの本質は貢献である
権限もいらないから責任も取らないってあり?

【組込みアーキテクチャ・アーキテクト】
すり合わせと組み合わせ
音声のプロフェッショナル
★TOYOTAの組込みソフトウェアに関するリスク
リアルタイム設計技術の難しさ
★★T-Engineに乗ったやつは勝ち組か負け組か?

【技術者教育・鍛錬、人材】
新人技術者へのハードルは確実に高くなっている
組込みソフトエンジニアの情報検索能力は低い?
★★仕様書を書かないエンジニア
★教材がいいと受講者の食いつきが違うね
★美食を極めるには不味いものを食べるべし
なるほど、これが海外人材登用の新しいかたちなんだ
英語は苦手
30代が主役

【マーケティング】
★マーケティングの重要性
★洗濯機メーカーは新しい洗濯機を開発しようとしてはいけない

【組込みソフト開発に役立つ雑誌・書籍】
組込みプレス vol.3
どんな本を読むといいか?

【人間の脳とソフトウェア開発について】
★考える脳考えるコンピューター
小学生の問題も解けないなんて!

【役立つツール】
★Lifehacks って知ってた?(僕は知らなかった)
Mindmapで幹を太くする方法

【再利用・プロダクトライン】
プロダクトラインがNEのカバーストーリーに登場
Nokiaの技術戦略

【その他】
ライオンと魔女