LOC
LOCには以下のような問題がある。
ソフトウェアのサイズを表すが、機能の量や開発工数の結びつくものではない。また書き方次第で簡単に水増しできる。
優れた開発者や開発チームは少ないLOCで多くの価値を提供するが、未熟なチームだとLOCは多くとも実現する機能は少なく、質は悪くなる。そのためLOCと開発コストを紐付けることはできない。
プログラミング言語の記述にはある程度の自由度があり、まったく動作が等しいプログラムであってもさまざまな記述ができる。これは特に、C言語の流れを汲む自由度の高い言語で著しい。
同じまたは類似の処理をコピー&ペーストすればLOCは簡単に増える。マクロ化、関数化、クラス化などすれば、ソースコードは読みやすく保守しやすくなるが、LOCは減る。
同じ問題を解決するためにもさまざまな解決法があり、無駄な処理をしたり効率の悪いアルゴリズムを使ったりすればLOCは増えることが多い。
同じ処理内容であっても、プログラミング言語の種類によって必要なLOCは大きく変わる。たとえば、C言語を基準にすると、COBOLやFORTRANは数倍、アセンブリ言語では十倍以上の行数が必要であることが多い。ただしこれは、ソフトウェア開発のコストの指標としてはむしろ適切な長所であると言える。
このような問題があるため、LOCでソフトウェアの実際の規模を測るのは難しい。そのため、LOCに変わる指標としてファンクションポイント法などが利用されてきている。