プロダクトライン開発をアップグレードさせた『新たなプロダクトライン開発』でソフトウェアファースト時代に備える!
ソフトウェアを共通化する方法として、プロダクトライン開発がありますが、OTAを考慮するとプロダクトライン開発を適用するだけでは不十分と言えます。さまざまな製品の事例を元に、我々が導き出した答えは、これまでと一味違った『新たなプロダクトライン開発』です。ここでは弊社のこれまでの支援実績から得た知見をもとに『新たなプロダクトライン開発』のポイントについて説明いたします。
目次
1.ソフトウェアを一本化する時にバリエーションの多さと変化の速さで分類
一本化したソフトウェアが満たすべきことは、プロダクトラインエンジニアリングで一般的に言われていることと同じです。
- 共通部と固有部を分離して資産化して管理
- 新たな機能を可能な限り共通部に組み込む
- 共通部と固有部の組み合わせで製品を導出
既存のコードからプロダクトラインのためのソフトウェア資産を作る方法は、『プロダクトライン開発~製品群開発を効率化するRIPPLE アプローチ~』をご参照ください。
さて、ソフトウェアを完全に一本化することで、大量に発生するバリエーションを、上手に管理していく必要があります。そのためには、まずは、ソフトウェアを一本化する時に、バリエーションの多さと変化の速さに着目して、構造化することをお勧めします。
- 変化が速く・バリエーションが多いところは柔軟に
- 変化が遅く・バリエーションが少ないところは堅牢に
- 変更が局所化できるように
この観点で構造化したものが下左図の抽象化レイヤで、それに従った製品の導出イメージが右図です。
2、大量に発生するバリエーションはフィーチャモデルの構造化・階層化で分散管理
ソフトウェアを完全に一本化する副作用として、大量にバリエーションが発生し、それをフィーチャーモデルで書くと複雑になるという点が挙げられます。このように大量かつ複雑なフィーチャ間の関係を、間違いを起こさず管理するためには、フィーチャモデルを構造化・階層化するという方法をとることが有効です。具体的に言うと、下図のように、構造・レイヤーごとにフィーチャーツリーを作り、ツリーを跨ぐフィーチャーの関係を管理することによって、情報を整理して捉えることができるようになります。
3、高いリリース頻度を許し、品質のデグレードを許さないような仕組みとは
ソフトウェアを一本化した後は、変更への対応の仕方をどうするか考えなくてはなりません。高いリリース頻度を許容した上で、デグレードさせないための工夫 が必要です。そのポイントは、以下の2 点です。
- 開発プロセスで問題発生を抑え込む
- アーキテクチャの劣化を防ぐ
プロダクトライン開発における変更のパターンは次の3 種類です。
- コア資産のみの変更
- コア資産と製品固有部分それぞれの変更
- 製品固有部分のみの変更
それぞれの変更や追加に対して、XDDP のプロセスを厳密に適用することで、問題の混入を防ぐことができます。XDDP については、『XDDP による派生開発』をご参照ください。
アーキテクチャの劣化については、構造の解析と、クローンができないよう常に監視し継続的に改善していくことしか解はありません。そのためには、CI システムを使って、静的解析・回帰テストを自動化し、常に監視しておきましょう。
ここで提案した「新たなプロダクトライン開発」は、エクスモーションのこれまでの支援の実績から得た知見や、こうあるべきであるという観点から作成しました。来る『ソフトウェアファースト時代』に、一緒に立ち向かいましょう。
こちらからお願いします
4.コンサルタントが教える成功の秘訣
OTAなどの技術の登場により、これからの時代のビジネスの進化はますます早くなり、それに伴い開発現場に対する要求も、問題も、ソリューションも常に変化し続けることになるでしょう。そのため開発者はこれまで以上にReactiveな姿勢で自分たちの問題と向き合い解決していく姿勢が求められることになります。
今回ご提案したソリューションに実際に取り組み始めた現場も出てきました。彼らは、日々このソリューションを進化させ、開発に取り組んでいます。
エクスモーションは今後もこのような現場を支援する中で新しい時代のシステム開発のあるべき姿を模索・挑戦していきます。ぜひ私たちと一緒に困難な開発を乗り切っていきましょう。
エクスモーションが提供するSPL関連サービス
ソフトウェアファースト移行支援
ソフトウェアファーストに移行するための、現状分析・あるべき姿の構築・プロセス導入・アーキテクチャ構築・ソフトウェア資産構築・・・あらゆる移行支援を開発現場で支えます。
ソフトウェアファースト人材育成支援
ソフトウェアファースト時代を迎えるにあたり、ソフトウェアエンジニアの確保・育成は、先行して進める必要があります。 ソフトウェアファースト人材のスキル定義、育成、および、エレキやハードエンジニアからのキャリアチェンジなど、戦略的かつ実践的な人材育成を支援します。