組み込み機器開発手法 ウォータフォール手法とアジャイル開発の違い

今回は組み込み機器開発で使用されるウォータフォール手法の流れを解説しアジャイル開発との違いについて触れていきます。ウォータフォール手法は昔から使用されてきており、機能がほぼ決まっている場合には完成度が高い製品開発を行えます。

ウォータフォール手法とは

システムの開発を下記のように分けて行っていきます。
1.機能定義→2.システム設計→3.ハード設計とソフト設計→4.実装→5.テスト
ウォータフォールと言われる理由は基本的に開発が定義から始まり実装まで後戻りなく行われていくので一方方向で進んでいくためで、まるで滝を流れる水の様子と似ているからです。
機能定義では実装する機能を何にするかを決めます。そしてシステム設計にてその機能を実現するためのハードとソフトの構成を決めることになります。使用するマイコンもこの段階で決まります。他には機能を実現するための通信モジュールや各センサーの方式なども決めることになります。次のハード設計とソフト設計は並行して行われていきます。ハード設計では実際の部品選定が進められていきます。消費電力や動作環境を考えて部品を選び、回路図にまとめます。ソフト設計では動作周期をどうするか、状態遷移をどうするか、各センサーの信号処理をどうするかなどを決めていくことになります。各I/Oのドライバーを自前で作るのか、すでにあるものを修正して使うのかなども考える必要があります。そして最後に実装工程を行っていきます。ハード側では基板に部品の実装を行います。ソフト側では実際のコーディングは始まることになります。この工程が一番工数がかかり想定漏れがあると大きな影響が発生してしまいます。前段階でどれだけバグになりそうな点を想定しておけるかがエンジニアの腕の見せ所となるわけです。

実装まで完了するとテスト工程に移ります。テスト工程は実装よりも時間がかかる場合が多いです。特に車載業界では様々なティア1が作ったECUをまとめていくため、他のECUとの動作のすり合わせに非常に時間がかかります。万が一不具合があると人の命に係わる自動車ですが、使用される環境が非常に厳しいため、トヨタをはじめ各自動車メーカーは非常に厳しいテスト項目を課しています。採用されると数百万台に搭載される機器が―40度から100度近い環境で動くので非常にテストは大変になります。テスト工程が実装部分からハード、ソフトを含めた結合テスト、システム全体の動作テストとステップが上がっていくのでウォータフォールをさかのぼっていくことからV字開発と言われています。下記の図を見て頂くとV字になっているかと思います。

画像1


ウォータフォール手法のメリット・デメリット

ウォータフォール手法を使用すると今どこまで開発しているかがわかりやすいかと思います。この手法のメリットとしては下記が挙げられます。
・開発状況の管理が行いやすい(今どこまでできているかがわかりやすい)
・最初にゴール(目標物)を明確にできる
・設計方法が決まっているので大人数での開発が行いやすい
・作りこまれており無駄が少ない設計が行える
一方のデメリットとして下記が挙げられます
・設計変更が発生すると場合によっては最初からやり直しになる
・設計時に想定ミスがあると後の作業への影響が大きくなる
・実際にモノができるまでに時間がかかる

この開発手法は大規模システム開発に向いていることが分かるかと思います。そのため家電や自動車など様々な組み込み機器で採用されてきた開発手法になります。

アジャイル開発手法について

近年では開発した機器のアプリを後から更新するなどアジャイルな開発要望が高まっています。製品を出すときに既に100%完成している必要がないという設計思想です。この場合はウォータフォール手法の様な作りこみは不要でなるべく早く最低限必要な機能だけ盛り込んだ製品が求められます。この様な要望に対応してアジャイル開発を使用すると、1つの機能に絞り込んで必要なハードとソフトの選定を行い、実装を行っていきます。そのため機能が増えると場合によってはハードが足りなくなり、後から付け足すことも発生します。半導体製造装置業界では顧客のカスタム仕様に合わせて後から追加機能を入れていくのでどちらかというとアジャイルな開発を行うことが多い気がします。(この辺りは関わる案件次第です。)アプリなどのソフトウェア開発ではデータ容量に特に制限はないので後から機能追加できるアジャイル開発が近年ではよく使われる様になりました。ウォータフォール手法がすべての機能を盛り込んだ製品が出来てくるのに対し、アジャイル開発では一つ一つの機能が実装される度にリリースされるという違いになります。

これからの組み込み機器開発について

アジャイル開発は組み込み機器開発においても画期的な開発手法であることは間違いありません。今までより格段に速いスピードで製品を開発することができるようになります。ただ、今後も作りこみが必要な自動車など大規模な製品では消費者が操作を行わない部分(エンジンやモータの制御、加速、減速機能などのシャシー制御)についてはウォータフォール手法が使われ続けることになると思われます。一方でカーナビ操作や乗り心地操作など消費者の使用感に関わる部分はどんどんアジャイル開発が取り入れられていき、テスラの様なアップデート可能な車の時代が来ています。なんでもアジャイルし過ぎるとでこぼこの製品になってしまうので注意が必要ですね。

この記事が気に入ったらサポートをしてみませんか?