システムの開発生産性が低い原因としては、以下のようなものが考えられます。

①システム要件が曖昧で変更が多い
 システム要件があいまいだったり、途中での変更が重なると、開発作業での手戻りが多くなり、生産性を大幅に低下させてしまいます。また開発途中での仕様変更が多いシステムはコードが汚くなり、構造化のレベルも下がってしまいます。結果として開発生産性だけでなく、改修や保守の生産性も低くなります。開発生産性と保守生産性には多くの場合、相関が見られます。利用者側で改善できる部分も多いですから、発注体制を見直すことは重要な対策といえるでしょう。

②開発期間に制約がある
 開発期間が極端に短いと、作業を平行分割する必要が出てきます。そうなるとチームごとの情報伝達でのミスが重なり、バグの発生確率が高くなります。結果として修正工数が増え、生産性を低下させます。適正な開発期間を確保することが重要です。

③開発するシステムのデータ構造が最適化されていない
 データの構造が最適化されていないと、同じ機能を実装するのに記述しなければならないコードの量が増え、生産性を低下させます。当然改修や保守の生産性にも影響してきます。データ構造を最適化できると、データベースのテーブルに対するアクセスを特定の機能グループに集中させることができます。そうなれば動作も軽快になり、保守や改修の際の手間やミスを軽減させることが可能となります。データ構造の最適化レベルはCRUD図などを作成すると分析することができます。

④開発チームのプロセス成熟度が低い、もしくは経験値が低い
 開発生産性は開発ベンダーのチームの能力に依存します。チームの能力が低いと、ユーザー側では対処のしようがありません。チームの能力は要件定義の段階でかなり明らかになります。
 ユーザーのニーズをうまく具現化できないチームの場合には、発注を再検討した方がよいでしょう。基本設計の段階でうまくいっていれば、プログラミングが多少下手でも、大きな問題には発展しません。

【弊社刊行マニュアル書籍のご案内】
政府IT予算の削減にも使われたノウハウを凝縮!
情報システム発注における価格検証・価格交渉完全マニュアル」くわしくは「こちら」。
3000件のIT診断実績から得られた知見をそのまま書籍化しました。他では得られない貴重な情報です。