派生開発というのは新規開発に対峙させた概念です。もともと新規開発に対して「保守開発」という領域があります。ただしそこでは新規にリリースされたプログラムコードに紛れ込んだ欠陥を取り除いたり、システムが稼働する環境の変化に適応させるための変更を施したりして維持することが主たる目的です。

これに対して、組み込みシステムの世界では、新しく開発された部品を取り入れたり、製品の価値を高めるために新しい機能を組み込んだり、操作性の改善を施したりして、新しい製品をリリースするという方法がとられてきました。

その背景には、CPUの性能の大幅な向上、メモリーチップの小型化や大容量化、半導体の微細加工技術や集積技術などハードウェアの目覚ましい進歩があり、これを取り込むことで競争相手の製品よりも魅力的であることをアピールするわけです。組み込みシステムの世界では、このようにして次々と新しい機能が追加され、購買意欲をそそる製品を開発してきました。

また、新製品が市場に受け入れられて売上げを伸ばせば、さらに売上げを伸ばすために製品のラインナップを拡充しますが、その過程で新しい機能を追加したり、他の製品から流用したりして短期間に製品のラインナップを整え、競争相手の参入を防ごうとします。

組み込みシステムの世界では、このような新しい機能を追加したり消費者の興味をそそるような改善作業のことを「派生開発」とい呼んでいました。そこには「保守開発」という概念はなかったといってもよいでしょう。

「派生開発」は、パッケージソフトの開発にも見られます。法令の改訂に伴うプログラムの変更は時には大幅なものになります。また操作性の改善、新たなビジネス要求の解決策の搭載などをパッケージのリリース間隔の中で行います。この他に航空機の運航管理システム、電車の自動改札機や高速道路のETCといった社会インフラに関係するシステムにも派生開発の特徴が見られます。

エンタープライズ系でも、金融や会計のルール改訂に伴う変更が強いられています。販売管理システムでもWebとの接続機能を取り入れたり、企業の競争力を強化するために新しい機能を組み入れたりするようになりました。これらの多くは従来の「是正」や「適応」の範囲を超えています。その結果、保守開発の中に「改良保守」という考え方が取り入れられるようになったのです。

新しい開発パターンとして、新規に開発する際にも全くの新規開発というケースが減っています。新規にコードを書くのはアーキテクチャに関する部分だけで、それぞれの「機能」部分は既存のシステムやオープンソースから流用とか移植という方法で作り上げていくことがあります。この場合、ブロックのおもちゃのように繋ぎあわせるだけで済めばよいのですが、実際には移植の際に細かな調整が必要になります。この調整の部分に「派生開発」の特徴が見られます。

このように、ソフトウェア開発の多くの分野で「派生開発」が行われるようになっています。しかしながら、一般に行われている「派生開発」は該当箇所を見付け次第に変更し、あとはテストで確認するという方法であり、合理的なプロセス(開発アプローチ)に基づいて実施されていないために、開発工数がオーバーしたり、多くのバグに見舞われてその手戻り作業に振り回されたりしています。

80年代の派生開発は、ソフトウェアの規模が小さかったり、納期にもいくらか余裕が持てたので、何とか力任せの方法でも対応できたのですが、90年代に入って、ソフトウェアの規模が増大し、納期の短縮、コストの削減などの市場の要求が変化したにも関わらず、プロセスを変化させなかったために破綻しました。

本会では、このような「派生開発」の世界に合理的な秩序を持ち込むことで、今までとは違った派生開発のあり方を提案するものです。

派生開発推進協議会    初代代表  清水 吉男