ソフトの焼き直し?!果たして工数はどのくらい?
古くから使われているVB6で作られたソフトを運用をしています。
もう20年近く前に作られたソフトです。 Visual Basicバージョン6.0は1998年にリリースされ、Windows上で動くソフトウェアを簡単に作成することができましたので、2000年前後には広く利用されていました。
そのようなシステムがついに焼き直しの議論が浮上し、突如として「.NETへの焼き直しの概算を今日中に提出してほしい」という依頼がありました。
概算を出すためには、どのような手順を踏むべきでしょうか。 様々な手法が考えられますが、私が実施した手順を紹介いたします。
この手順で、当日中に提出でき、見積もりにも納得していただけました。
まず、3つのステップで見積もりを行うことにしました。概算工期も示しました。
1. 現在の規模を把握する。
まず、このVB6で作成されたアプリケーションのソースコードの行数を調査しました。 VB6のソースコードをカウントするツールはいくつかありますが、今回は「かぞえチャオ!」を使用しました。
カウント対象の拡張子は、basとcls、frmです。 これにより、総ステップ数とコメントを除いた実際のステップ数が確認できます。
なお、frmは画面の構成要素を表すもので、画面の部品の設定情報が含まれており、htmlのようなものです。ロジックとは異なりますが、焼き直し作業では画面オブジェクトの把握やイベントの解析が必要ですので、frmも含めてカウントすることにしました。
調査の結果、実ステップ数合計は約40,000行でした。
2. 新しい言語で焼き直した場合の規模を把握する。
VB6から.NETに焼き直した場合、どのくらいのステップ数で実現できるのかを探るために、ブログ記事などを調査しました。
いくつかの記事によると、VB6ではデータベース接続やテキストボックスなどのコントロール操作のコードが肥大化しやすかったのに対し、.NETはそのような点で改善されており、半分のコード量で同様の機能を実現できると書いてありました。
しかし、今回のVB6アプリケーションはバックグラウンド処理が多く、画面UIや帳票はそれほど複雑ではありません。 そのため、この削減効果を十分に享受できないと考え、コード量が約30%削減できると予想しました。
したがって、焼き直し後の見積もりステップ数は28,000行となります。
3. その規模から、どのくらいの工数が必要かを計算する。
では、28,000行の規模にはどのくらいの工数が必要なのでしょうか。
「ソフトウェア開発分析データ集2020」には、設計やテストを含めて1人月あたり約740ステップをこなせるという記載がありました(「5. 参考にした資料」を参照)。
この情報を元に計算すると、37人月が必要となります。
設計、製造、テストなどで、計37人月の工数が必要という結果になりました。
4. 工期
次に、開発期間について考えます。 「標準工期(月数)=投入工数の立方根×2.5」という式があります。
37の立方根はおよそ3.3となります。 この値に2.5を掛けると8.25となります。 したがって、開発期間はおよそ8ヶ月となります。
私自身もこのアプリケーションの全体像を把握していますが、直感的にこの程度の工数がかかるだろうと感じています。
以上の見積もりを報告し、計算の過程を説明したところ、納得していただけました。
5. 参考にした資料
「ソフトウェア開発分析データ集2020」はIPAのHPよりダウンロード可能です。 P84の A1.2 SLOC 規模別 SLOC 生産性 という章を参考にしています。 https://www.ipa.go.jp/digital/chousa/metrics/ug65p90000001iu7-att/000085879.pdf
「40KSLOC 未満」かつ「KSLOC/160人時」の行で、「平均」列の値が、0.74つまり740ステップでした。 これを参考にしました。
ちなみに最新の2022が出てました(後から気づいた)。 最新のほうが少々生産性が下がっていて、640ステップでしたね。 それで提出すれば良かったかな…。