組込み開発では、ソフトウェアを一から作るというケースは稀で、プロジェクトの90%以上を派生開発(流用開発、差分開発)が占めているという現実があります。派生開発とは、過去に作ったソフトウェア製品をベースに、新規のモジュールを追加したり、既存のモジュールをカスタマイズしたりして、新たなソフトウェア製品に仕上げる手法です。

 派生開発は、「過去の資産を流用できるので短期間で開発ができる」とのイメージがありますが、工数の見積もりが難しかったり、元の設計書に不備があったり、継ぎ足しで開発しているうちにソフトウェアの構造が崩れてしまったりなど、さまざまな問題や苦労があるのが実情だと思います。

なぜ派生開発の効率は上がらないのか? 実際に開発現場で発生している問題を整理し、事象別に解決方法のご提案を行っていきたいと思います。

まずは派生開発の問題点を、技術面と組織面に分けてみます。

【技術面の課題】
・他の人が作成したコードを調べる作業が発生する
・ソースの依存箇所をgrepの繰り返しで確認しており、時間がいくらあっても足りない
・データ管理や履歴管理、構成管理などのルールや環境の整備が不十分
・派生開発に関わるコードに対して、どの範囲までテストするべきなのか分かりにくい etc.

【組織面の問題】
・ドキュメントが不足しており、全体を把握することができない
・開発業務の一部、または全部を社外へ委託することがあり、変更箇所を把握できないことがある
・開発担当者の中で、システム全体を見通せる人が少ない etc.

列挙したこれらの問題は、必ずしも独立したものではなく、それぞれが複雑に絡み合っており、交錯する複数の問題を一度に解決することは難しいケースが多くあります。

派生開発の問題に対してどのような方針で臨むべきかについては、それぞれ開発対象となるシステムや、開発部署の置かれている状況が異なるので、一概には言えませんが、ここでは「長期的な取り組み」と「短期的な取り組み」に分けて考えてみることにします。

時間を掛けた取り組みが必要な環境や手法が関わる問題です。
【長期的な取り組み】
・派生開発に合った開発プロセスや開発手法を導入し、持続可能な開発体制を構築する
・開発者の分析スキルの向上

人材育成は効果が現れるまでには時間が掛かります。また、開発プロセスを見直すとなると、他部署や社外の協力会社との調整・合意が必要になります。こうした取り組みは、長期的視野に立ち、粘り強く、粛々と進める必要があります。

一方、技術面の問題の中には、短期的な活動によって改善できるものがあります。
【短期的な取り組み】
・プロジェクト管理やデータ管理の現状の問題点を洗い出す
・過去のプロジェクトを分析し、時間がかかっている工程を把握する
・開発管理上のルールを設ける

 とはいえ、短期的な取り組みを行うとしても、どこから手を付ければよいのかは開発を管理する立場の方も悩まれるところだと思います。

 本連載では、現状分析に主眼を置いて、ソフトウェア変更による「影響範囲把握」「構造把握」をツールで手軽に行う方法を、組込みソフトウェアの派生開発で起こりがちな問題を取り上げて解説します。

 分析ツールは、導入や操作方法の理解に時間が掛かるものもありますが、ここでご紹介するツール「Re:Zolver(リゾルバー)」は、すぐに誰にでも使えることをコンセプトとしており、コストパフォーマンスも高いことが特長です。

次回は、多くの開発現場を悩ませている工数見積もりの問題を取り上げます。

製品開発の90%以上が派生開発に
理想的な派生開発と実際の?派生開発