[レポート]
オージス総研 シニアコンサルタント 畑 伸樹
7/24、25に組み込みシステム技術サマーワークショップ(SWEST)に参加してきました。
このワークショップは組み込みソフトウェア業界の技術交流が少なすぎる、ということで産学協同で行われているもので、第3回となる今回は大学の先生、学生、大手メーカ、ソフトウェア企業、ツールベンダなどを中心に150名もの参加がありました。
開催場所は浜名湖畔の観光ホテルで、昼は企業や大学などから発表が行われ、夜もいくつかのテーマごとに討論会を行い、参加者は4人程度の相部屋で宿泊というおもしろいプログラムでした。
今回はLSI設計技術のシンポジウムであるDAシンポジウムと同時開催で、夜の会食は大広間で行われ、日本の製造業をささえるソフトウェア、LSI研究者/技術者が300名そろうという図はなかなかの壮観でした。
発表のテーマは主に以下のようなものであり、どれも(Co-Design以外は?)現場の組み込みソフトウェア技術者にとって関心の高いものでした。
- RTOS
- オブジェクト指向開発
- 開発ツール
- LSIシステム記述言語(SpecCなど)によるLSI/ソフト Co-Design
私はオブジェクト指向開発の発表を主に聞きました。
コマツの青木 淳さんからは、「オブジェクト指向組み込みシステムにおけるタスク分割」というテーマで、ラジコンカーという例題を使って、クラス設計、タスクへのマッピングをする手法の発表がありました。
シーケンス図を使って、非同期に呼ばれるべき箇所をピックアップし、タスク分割を行う方法でした。
組み込みシステムにおけるタスクマッピングには色々なやり方があり、例えば自動車制御などのハードリアルタイムシステムと家電などのソフトリアルタイムシステムではやり方が全く違います。青木さんの発表はソフトリアルタイムシステムのタスクマッピング手法です。
タスク分割については状態図をつかって並行性をピックアップしていく方法もありますが、大規模なシステムだと状態設計をいきなりするよりも、シーケンス図で並行性をピックアップする方が容易な場合もあり、この方法もとても有効だと思います。また、東芝の玉木 裕二さんからは「組み込みシステム向けオブジェクト指向フレームワークの開発」というテーマで、組み込みシステムの共通ライブラリとしてOSラッパーやユーティリティを開発を行ったという発表がありました。このあたりは繰り返し型開発ではアーキテクチャメカニズムとしてコンサルを行っているプロジェクトでもよく開発する部分です。
発表を聞き終わって、オージスからも色々な情報を出していかないと、と感じました。
来年は、ぜひ発表を行いたいと思っています。
私が参加した討論会は、「組込みソフトウェアの品質向上を目指して 技術 vs. プロセス/管理(開発プロセスと手法) 、チームワークとやる気と人間関係」というものでした。
私も討論に参加して以下のような意見を述べてきました。
- 技術者の技術とプロセス/管理は車の両輪であり、どちらもプロジェクトには不可欠。
- 開発プロセスはプロジェクト管理のテンプレートでしかない。開発プロセスはプロジェクトや開発チームの性質に応じてカスタマイズされるべき。
- ソフトウェア開発プロジェクトはサッカーが戦術と個人技からなるように、戦術(開発プロセス)と個人技(技術)からなる。
- プロジェクト管理技術もまた、「技術(個人技)」である
- 技術者の技術(個人技)が重要なのはいうまでもない。技術者の暗黙知を開発プロセスや技術文書などの「形式知」にして、技術を伝えていくことが重要。
討論会で感じたことは、組み込みソフトウェア、LSIの開発組織にせよ、プロジェクト管理に対する意識がまだまだ足りない、ということでした。
プロジェクト管理はいわばプロジェクト運営の戦略です。戦略の欠如はプロジェクトの混迷の原因になるので、プロジェクトチームはプロジェクト管理にもっと関心を持って取り組むべきだと思います。この他に私はつねづね、組み込みソフトウェア開発組織が苦労している原因のひとつには、会社としてこのような環境の変化に十分対応しきれていないことがあるのでは、と思っています。
ソフトウェアが製品に組み込まれるようになったのはここ20年くらいという場合が多いので、ソフトウェア技術者出身の管理者、経営者が少ない、ということも原因にあるのかも知れません。
これには現場の技術者と管理者、経営者がもっと意思疎通を行って、問題を共有することが必要だと思います。
日本の製造業は「カイゼン(改善)」活動をずっとやってきているので、その手法が役立つと思うのですが、いかがでしょうか。討論会の最後に武蔵工業大の松本 吉弘教授からコメントをいただいたのですが、ソフトウェアのプロジェクト管理を研究している国際学会などで、ソフト開発プロジェクトにメンターや監査役を置く方法が良い、と言う認識が広がっている、というお話をされていて、日頃コンサルにおいて、メンタリングやレビューを行ってしているので、興味深いものがありました。
LSI設計の世界で、SpecCやSystemCなどの仕様記述言語が提案されています。これらはC言語ライクな言語でLSIの外部仕様を記述して、ソフトウェアとハードウェアを同時に設計(Co-Design)しよう、というものです。
確かに、LSIとソフトウェアの設計をいっしょにやる、という考えは理にかなっていて良い気がします。
LSIの技術者の方もソフトウェア技術者とCo-Designしたい、と考えている人が多いようです。(UMLに関心を持っている方も多いです。)
LSIも含めてシステムのユースケース図を作成し、それをソフトウェアとLSIに落としていく、という流れになるのでしょう。しかし、Co-Designの実際の適用例というのはまだまだ少ないようです。
これは、ソフトウェアのアーキテクチャ設計というものが浸透していないために、どの段階でCo-Designすれば良いのか、という判断が難しいからなのかも知れません。
例えばソフトウェアのアーキテクチャ設計の際に、LSIをサブシステムと想定し、そのIFと並行性を記述すれば、そこからLSIは作れるような気がします。
基本的には、高速処理などを行う時にLSIが使われることが多いので、「ここはソフトウェアの処理性能では追いつかない」ということが分かる熟練したソフトウェアの技術者と、「こういうことをLSIでやったらどう?」と相談に乗ってくれるLSI技術者がいれば、Co-Designは可能な気がしています。また、このLSIの仕様記述をJavaでしよう、という動きもありまして(SWESTでの発表はありませんでしたが)、オムロンソフトウェアさんとフューチャーデザインオートメーションさんでJavaを仕様記述言語にしてEDAツール「JEDIシステム」などが開発中で昨年(2000年)のLIS・デザイン・オブ・ザ・イヤーを受賞しています。
オブジェクト指向言語の方がIP(Intellectual property:知的資産。LSI、半導体業界でよく使われている)化しやすく、特にJavaは言語レベルで並行性をサポートしているということなどが利点なのだそうです。正式リリースは2002年頃(半導体産業新聞 2000/10/11号)ということで、興味深いものです。ソフトウェア技術者は比較的関心が薄い分野ですが、組み込みシステムの将来においてCo-Designは1つのトピックであると思います。
多くの組み込みソフトウェア開発組織は、近年、RTOS、Cの導入をして開発手法の改善をしてきました。しかし、市場からの製品の高機能化・大規模化、納期短縮の要求は強く、それが強い製品ほど、開発は難しいものとなっています。
しかし、RTOS、Cの導入をしてきた経験から、変化への対応力は強いのではないだろうか、と思っています。実際に、組み込み業界でもUMLの標準化、オブジェクト指向開発手法の成熟、ツールの充実、RAM/ROMの価格低下というような状況を受けて、UMLやオブジェクト指向の導入が本格化してきています。(特に自動車業界などは一部のメーカなどの積極的な取り組みもあって危機感をもって取り組んおり、レベルの高さがうかがえました。)
組み込みシステムは転換期を迎えており、大変面白い時期にきていると思います。最後に、SWESTを開催された実行委員会の方に感謝いたします。
組み込みシステム開発の現在と、未来を垣間見ることができ、とても楽しい2日間でした。
© 2000 OGIS-RI Co., Ltd. |
|