アプリケーション開発における見積りは、ユーザー企業/SIerを問わず、永遠の課題である。現時点ではまだまだ未成熟な手法に溢れているが、今後のAIの進化によってより精度の高い見積り手法が開発される可能性もある。企業は、自社で採用する「開発方法論/開発プロセス」および「開発言語/フレームワーク/ツール/サービス」に適した見積り手法を複数選択し、それらの検証/試行を重ねることで、自社標準の見積り手法を確立する活動を推進すべきである。
国内企業においてもアジャイル開発の採用は進んでいるが、基幹系システムを中心にウォーターフォール開発を利用する企業もまだ多い。いずれの開発プロセスであっても、その開発プロジェクトを企画する際には、総費用や開発スケジュールを立案する必要がある。図1にウォーターフォール開発とアジャイル開発の進め方の概要を示した。
ウォーターフォール開発の場合、要件定義を全て完了し、それらの要件を分析し基本設計を行う。基本設計の手法はさまざまではあるが、一般的には個々の要件をシステムで実現するためのタスクに分解し、個々のタスクに必要なリソース(要員、ITインフラ、開発ツールなど)を算定し、当該プロジェクトに割り当て可能な要員を選定し、それらの要員の能力を見据えて、開発期間を推定する。つまり、要件定義や基本設計が完了しない限り、正確な見積り(総費用およびスケジュール)を作成することは困難である。そして、最初に実施した要件定義で100%正しく過不足のない要件を抽出することはほぼ不可能であり、実際には基本設計、詳細設計、実装などの各段階で、要件の修正や追加/削除をする必要がある。
一方、アジャイル開発の場合は、開発プロジェクトの初期に全ての要件定義を完了させることはせず、イテレーション(アジャイル開発における繰り返し単位)ごとにまず主だった要件定義を行い、優先度の高い要件に対する開発を行い、その結果を踏まえて次回以降のイテレーションを計画する(要件追加、修正など)のが一般的である。つまり、アジャイル開発の場合、開発プロジェクトが完了するまでは正確な費用やスケジュールがわからないことになる。
しかし、企業で開発プロジェクトを企画する場合、費用もスケジュールもわからずにスタートすることは許されない。ウォーターフォール開発か、アジャイル開発か、といった開発プロセスの種類とは関係なく、何らかのかたちでプロジェクト開始前にプロジェクト全体の見積りを作成しなければならない。そして、それは容易な作業ではない。