--------------------------------------
【派生開発の問題点】
 ベースとなるプログラムの処理を精査する必要があった。プログラムの構造や処理の流れが分かりにくく、開発者の意図を汲み取るのに予想外の時間がかかった。

【原因】
 コーディングやコメント付与の作法が担当者まかせだった。コードの作りが凝りすぎていた。プログラムの構造がくずれ、一貫性が失われていた。

【対策】
 コードの可読性と再利用性を改善するためのコーディングルールを設ける。コードを調べる際の手順や方法を標準化し、開発チームの中で分析のノウハウを共有する。
--------------------------------------

 派生開発では、多くの場合、自分以外の開発者が記述や改変をしたプログラムを取り扱います。例えば、工数を見積もるときや開発方針を決めるとき、また開発途中でも、元のソースコードを頻繁に参照します。

派生開発において、ソースコードを調べる際に苦労する原因として、以下のことが考えられます。

・コーディングの作法が自分と違っていて、ストレスがたまる
・コメントや補足説明が足りない
・技巧の限りをつくしたコーディング。コード効率は優れているが、可読性や再利用性に難がある
・派生開発を繰り返す過程で、当初は整然としていたプログラムの構造が徐々にくずれていった etc.

 派生開発は、組織的な「コードの再利用」と言えます。可読性や再利用性を意識せずに作成されたプログラムが扱いにくいのは当然です。また、派生開発を繰り返すということは、多くの開発者がコードの作成や保守にかかわる、ということです。独りよがりの、属人的なコードを残すと、多くの人に迷惑がかかります。

当たり前と言えば当たり前ですが、開発チームの中で、共通のルールに則ってソースコードや補足説明のドキュメントを作成し、ソフトウェアとしての資産価値を上げることが肝要です。

また、派生開発のソースコードの分析には、ある程度の定石があります。例えば、以下のようなところでつまずくことが多いようです。

・グローバル変数が多い場合、関数やファイルの間の関係が見通しにくい
・過去の製品では使われていたが、現在は使われていない古い記述が、ソースコードの中に残っている
・複数の目的のコード(例えばターゲットCPUが異なるコード)が混在しており、ビルドの際に有効にするコードを切り替えている
・関数呼び出しのオーバヘッドを削減するため、コンパイラによってインライン展開された箇所がある

 このようなところは早めにチェックし、情報を整理したり、ドキュメントとして記録を残したりします。開発者の間でこうした情報と分析のノウハウを共有すれば、派生開発の効率が上がっていくことが期待できます。

 上述のつまずきやすい箇所の分析作業を、ツールで補助する方法も有効です。当社(DTSインサイト)のソフトウェア影響分析ツール「Re:Zolver(リゾルバー)」は、関数間の呼び出し関係を検索する機能を備えています。これにより、グローバル変数が使用されている箇所をすみやかに把握できます。

 またこのツールは、オブジェクトコードとコンパイル前のソースコードを比較して、実行ファイルと非実行ファイル、有効コードと無効コードを識別できるようになっています。例えば、実際に実行されるファイルだけをリストアップしたり、プログラム表示の際に有効コードだけを示したりすることが可能です。

コードを調査・分析するのは大変
ソースの行番号を色分けして表示