米国ではいま、「DSO」という単語が注目されている。ジョン・ブルッグマン氏が、旧来の組み込み開発の問題点を指摘し、DSOとは何かを明らかにする。
「DSO」(Device Software Optimization:デバイス・ソフトウェアの最適化)は実体を伴った言葉です。DSOが単にマーケティング上の宣伝文句にすぎないとすれば、この言葉は無意味なキャンペーンのスローガンとして、すでに葬り去られていることでしょう。ガートナー・グループは、この言葉を「アプリケーション開発サイクルの効率向上を目指す大きな流れに沿って、広い市場のニーズをとらえたテクノロジである」と指摘しています。デバイス・ソフトウェア産業の実情を正しく反映しているからこそ、DSOはこのように評価されたのです。
マイクロプロセッサの98%は、「デバイス」の中で使用されています。デバイスとは、「デスクトップPCではないすべての電子機器」です。デバイスは、至る所で使用されています。2006年には、控えめに見積もっても全世界で140億のインテリジェント・デバイスがネットワークに接続されると予測されています。
それらの個々のデバイスには、相当量のソフトウェアが組み込まれています。私はこの言葉が好きではありませんが、これらのソフトウェアはかなり前から「組み込みソフトウェア」と呼ばれてきました。しかしこの言葉では、ネットワークに接続されたデバイスが拡散する世界も、複雑かつ高度化したソフトウェアの現状も、正しく表現されていません。私はこの世界の多くの人々と同様に、「デバイス・ソフトウェア」という言葉を使っています。
デバイス・ソフトウェアの開発は容易ではなく、日々難しくなっています。なぜ開発が困難になっていくのでしょうか? それには多くの理由があります。
消費者は新しい機能を次々と求めます。携帯電話はかつて電話をかけるだけの商品でしたが、そのような時代は過ぎ去りました。今日では、携帯電話でゲームや音楽が楽しめ、写真や動画の撮影ができ、Webブラウザと電子メールが使えるようになりました。携帯電話を、税金の計算や犬の散歩に役立てる人もいます。これらの個々の機能は、それぞれ複雑なソフトウェアを必要としますが、まだ始まりに過ぎません。消費者は、これらのアプリケーションがすぐに利用でき、安全で信頼性が高く、互いに相互運用性があり、携帯電話以外のさまざまなものに通信手段を提供することを求めます。しかも、消費者にとって、携帯電話は安価で小さいことが必須条件です。
工場で働くエンジニアにとって、こうした消費者の要求は何を意味するのでしょうか。基本的には、厳しい開発を強いるものです。しかし、開発の現場では市場の要求とは異なる面から問題が生じています。
多くの企業の「組み込みソフトウェア」開発者は歴史的に、自分たちが好きな開発ツールを、自分の好みに合うやり方で使っていました。しかも、彼らは開発プロセスのうち自分がかかわる一部にのみ関心を向け、設計やモデリングからデバイスの出荷に至る開発プロセス全体を見渡すことがありませんでした。彼らは、特定の孤立した問題の解決に自分のやり方で対処することに誇りを持ち、開発ツール間の親和性や大規模に展開できる開発プロセスに関心を向けませんでした。この結果、企業は数多くの知的財産とインテグレーションの問題を抱えることになりました。開発プロセスが分断されていると、新製品を開発するたびに、そして既存製品をアップグレードするたびに、同じ問題に対処する必要に迫られます。
高品質のデバイスを製品化しても、消費者のニーズや市場の期待に応え損ねることがあります。市場機会をまひさせる共通の問題を、いくつか挙げておきます。
今日のデバイスに搭載される平均的なソフトウェアは、1万行以上のコードで記述されています。そして、コードの量は2年ごとに倍になります。アプリケーションのコード量が増えると、エラーが入り込む余地も増えます。開発者は、信頼性を向上させるためにコード・モジュールを冗長化させるので、コードの量はさらに増加します。大きなアプリケーションは開発が難しく、テストとデバッグに長い時間がかかります。
デスクトップ・コンピュータは、単一のハードウェア・アーキテクチャで成り立っていますが、デバイスが採用するマイクロプロセッサには多くの選択肢があります。デバイス・ソフトウェアの開発チームは、ハードウェアを選択して実装するために、多大な時間を費やします。
異なる開発チームが異なる開発ツールを使う例がよく見られます。これは、開発プロジェクト間でエンジニアを移動させたり、複数の開発チームを統合することを難しくしています。開発プロセス全体を可視化する方法がないと、コードの品質を評価して管理することが困難になります。
ハードウェアとソフトウェアの統合、自社技術とサードパーティの技術の統合には時間がかかります。また、異なる開発ツールを使用している異なる開発チームの仕事を統合するのにも時間がかかります。にもかかわらず、多くの企業ではプロジェクトを発足させるたびに、この低レベルなエンジニアリングの問題が発生し、プロジェクトのスケジュールと製品品質が危機的な状況に陥ることが少なくありません。
もはや孤立したデバイスはありません。消費者はデバイスが互いに通信できることを期待し、セキュリティの問題に妥協することなく、さまざまな領域で利便性が高まることを望んでいます。ネットワーキングとセキュリティのプロトコルを統合することは、時間がかかり品質にも影響を及ぼします。とりわけ、プロジェクトを開始するたびに、これらの技術を実装し直すような場合は問題が深刻化します。
今日の高度化したデバイスの多くは、OSとアプリケーションの間で、拡張性があるミドルウェアの機能を利用しています。ミドルウェアには、GUIやファイルシステム、データベースなどがあります。ミドルウェアの開発やサードパーティの技術の選択と統合は、時間がかかりデバイスの品質に悪影響を与えます。
企業が自社技術で開発ツールを設計した場合、トラブルシュートとサポートにも責任を持たねばなりません。しかし、自社技術で育成したソリューションで実現できないことに直面したり、プロジェクトを完遂できなくなると、デバイスを製造する企業は途方に暮れるしかありません。
1つのプロジェクトの完遂に悪戦苦闘する企業は、新しい開発プロセスや技術を使うために必要なエンジニアの教育がおろそかになります。デバイスを製造する企業の多くが、新しく優れた技術に移行したがらないのは、人的資源や経済資源に移行コストが掛かるからです。教育投資に消極的でも、開発チームの多くは日常的な開発業務に能力を発揮します。しかし、これでは新しいデバイスの設計と仕様策定の要求に応えるスキルを欠くことになります。
ベンダとの関係を管理するには、2つの挑戦課題があります。まず、数多くのテクノロジー・プロバイダと面会し、それらの事業とライセンス条件を理解する必要があります。2番目の問題は、サードパーティの技術のロードマップと新製品のリリース・サイクルに、自社製品のライフサイクルを適合させるということです。
Copyright © ITmedia, Inc. All Rights Reserved.