KUMICO

COLUMN

組み込み機器開発におけるソフトウェア開発と開発プロセスの動向

組み込みソフトウェア入門では、組み込みソフトウェアについて広く説明を行いました。本コラムでは組み込みソフトウェアの中でも“ソフトウェア開発プロセス”に着目し、組み込みのソフトウェア開発とソフトウェア開発プロセスの流れについて説明します。

ソフトウェア開発プロセスって?

初めに、「ソフトウェア開発プロセスとは」について押さえておきましょう。仕事に限らず、目的を達成するためには様々な作業が必要になります。その作業の入力や出力、内容などを整理したものをプロセスと呼びます。英語で言うプロセスには、「処理」と「工程」という意味があります。「処理」は、仕様・データ・プログラムという「入力」に対して何かしらの作業を施し、結果を「出力」すること、それに対して「工程」は、ある目的のために手順を追って複数の処理を実行することを指します。ここでは主に、後者の「工程(ソフトウェア開発工程)」について説明します。例えば、カレーライスを作る工程を入力、出力、内容で整理してみましょう。ここでいう目的は、「カレーライスを食べること」になります。

  • 材料を買ってくる
    入力=材料リスト・お金、出力=材料、内容=購入する

  • 材料を切る
    入力=買ってきた材料、出力=切られた材料、内容=切る

  • 鍋に入れ炒める
    入力=切られた材料、出力=火の通った材料、内容=炒める・煮る

  • ルーを入れ混ぜる
    入力=火の通った材料・ルー、出力=カレーソース、内容=混ぜる

  • ごはんと共にお皿に盛る
    入力=ごはんの盛られたお皿とカレーソース、出力=カレーライス、内容=盛り付ける

このプロセスをソフトウェア開発に当てはめたものがソフトウェア開発プロセスです。ソフトウェア開発の目的は、「必要な機能を満たすソフトウェアを開発すること」、広義では製品を作ることで、その目的を達成するためには様々な工程が必要です。

組み込み機器のトレンドとソフトウェア開発

アプリ開発(アプリケーション作成)も例外ではありませんが、ソフトウェア開発プロセスは組み込み機器の機能と大きな関係があります。以前執筆したコラムの組み込み開発業界の流れ・動向のところで、組み込み機器の流れを携帯電話やスマートフォンを例に説明したように、組み込み機器は時代に伴い大きく変化しています。組み込み機器がどんどんコンパクトになる一方で、組み込み機器が持つ機能は飛躍的に増加しています。昔は単一の機能だけが実現できればよかったものが、最近ではM2M(Machine to Machine Interface)やIoT(Internet of Things)が流行しているように、機器と機器がインターネットでつながりコミュニケーションをとる時代です。よって、これからの組み込み機器はインターネットにつながるコミュニケーション機能が要求されるでしょう。今後の組み込み機器は、ネットワーク上に流すデータを最小限にするために、加工、圧縮などの処理が必要になると思います。これらを考えてみても組み込み機器の機能は増加していくでしょう。

組み込み機器のソフトウェア開発と開発プロセスの関係

組み込み機器の機能増加に伴い、開発する組み込みソフトウェアの規模も増加しています。単一の機能を実現するだけの組み込みソフトウェアであれば開発プロセスはさほど重要ではなかったのですが、組み込みソフトウェアの規模が大きくなってくると、組み込み技術者はソフトウェア開発のプロセスを明確にし、各段階においてしっかりとテスト、検証を行うような開発をしなければ、まともなソフトウェアが作れなくなっています。組み込み開発プロセスは組み込み機器の機能とともに重要性を増し、開発・製造するソフトウェア、製品の特長によって様々な開発プロセスが考案されています。

組み込み開発プロセスの代表として挙げられるのが、ウォーターフォールモデルではないでしょうか。別名、V字モデル、V字工程と言ったりもします。ウォーターフォールモデルは、先ほど述べたカレーライスの作り方に該当するかと思います。要求分析から設計、実装、テスト、統合といった具合に、段階的にソフトウェアを作り込んでいく方法です。ウォーターフォールモデルは作業工程が段階的なので管理がしやすく、開発プロセスとしては使いやすいと思います。しかしウォーターフォールモデルには弱点があり、最後までカレーライスが完成しないため、本当にそれでよいのかというテストを行うタイミングが遅くなってしまいます。開発規模が大きいほど、テスト工程で問題が生じた場合に手戻りが大きくなります。

そこで登場したのがスパイラル方式(反復プロセス)です。スパイラルによるソフトウェア開発手法はウォーターフォールモデルと違い、まず核となる部分を作り、早い段階でテスト・検証を行います。カレーライスを例にすると、いきなりルーとお湯でカレーソースを作り、ご飯と一緒に盛り付ければ具材は入っていないもののカレーライスは完成し、食べる(テストする)事ができます。次に野菜を入れてテストしてみる。それで問題がなければ肉を入れてテストするといったやり方です。すべてを終えてからではなく、まずは重要な部分だけを作りこんでテストする、というのがこのスパイラル方式です。早い段階でテストができるため、手戻りが少なく、製品をイチ早く発売できるメリットがあります。また近年、活発に考案されているのがアジャイルソフトウェア開発です。アジャイルとは、「すばやい」「俊敏」を意味しています。スパイラル方式(反復型)が比較的規模の大きなプロジェクトで使われるのに対し、アジャイル開発は小規模プロジェクトで行われています。このように組み込み業界において、ソフトウェア開発のプロセスは、組み込み機器の流れに合わせて進化しており、ソフトウェア開発技術の向上と生産性の効率化が図られています。

“組み込み”でのソフトウェア開発プロセスを知る

組み込み機器が進歩するにつれ、必要とされる組み込みソフトウェアは変化し、それを作る組み込みソフトウェア開発プロセスも同様に進化していくでしょう。組み込み業界のソフトウェア開発プロセスを改善することで、より品質の良い組み込みソフトウェアを効率よく作れるようになり、より良い製品がより安く購入できるようになるのではと思います。今現在でさえ、組み込みでのソフトウエア開発プロセスを語ろうとすると数多くの考え方や理論があり、書店でも専門書が多数見つかると思います。ソフトウェア開発プロセスに興味がある、ソフトウェア開発者、ソフトウェア開発技術者を目指す方は読んでみてはいかがでしょうか。また、ソフトウェア開発環境展などの展示会に行って勉強してみるのもおもしろいかもしれません。ソフトウェア開発に関しては、その工程や品質管理の中で欠かせないプロジェクト管理ツールや便利な開発ツールなども追々紹介したいと思います。

個別相談も承っております。下記よりお申し込みください。

個別相談会申し込み

関連記事

OTHER COLUMN

MORE  

まこちゃんブログ

NEWS

MORE  

PARTNER

  • Intel
  • Xilinx

お探しの組み込み製品はキーワードで検索!