LOC(Lines Of Code)についての詳細
LOC、すなわちLines Of Codeは、
ソフトウェアの規模を測るために利用される指標であり、主に
ソースコードの行数を意味します。しばしばLOCと略されますが、より具体的に示すためにSource Lines Of Code(SLOC)とも呼ばれることがあります。この指標は、プログラムの物理的な行数を参照することが多いですが、これにはいくつかの重要な配慮が必要です。
物理LOCと論理LOCの違い
ソフトウェアの行数には、2つの主なカテゴリがあります。物理LOC(physical LOC)は、
テキストファイル内の行数そのものであり、空行やコメント行も含まれます。一方、論理LOC(logical LOC)は、実際にプログラムの実行に関わる行数に焦点を当て、無駄な行を除外することでより意味のある計測が可能になります。この論理LOCを算出する際には、コメントや空行を省くことが一般的です。たとえば、2つの命令が記載された行は2行とカウントされますが、
括弧だけの行は無視されます。
論理LOCの算出には、wc -lなどのツールが使用され、空行やコメントなどを取り除いて精度を高めます。これにより、開発者は
ソフトウェアの規模をより正確に把握し、様々な観点で分析を行うことが可能になります。
LOCの問題点
しかし、LOCにはいくつかの問題が指摘されています。まず、LOCは
ソフトウェアのサイズを測るものの、必ずしも機能の量や開発にかかる工数に直結しません。コーディングスタイルによって簡単に行数を増やすことができるため、その値が必ずしも有意義な指標とは言えないのです。優れた開発者やチームは、少ないLOCで高い価値を提供できるのに対し、未熟なチームは多くの行数を生成しても、機能が貧弱であったり品質が低い場合があります。このため、LOCと開発コストの関係を明確にすることが難しくなっています。
さらに、
プログラミング言語にはそれぞれ特徴があり、同じ機能を実現するためのコードは言語によって大きく異なります。具体的には、
C言語を基準にした場合、
COBOLやFORTRANでは行数が数倍に増加することがあり、
アセンブリ言語に至っては10倍以上の行数を必要とすることさえあります。この特性は、時として
ソフトウェア開発のコストに関連する適切な長所とも言えます。
LOCの実際の例
たとえば、1からnまでの和を計算する
C++プログラムを考えてみましょう。このプログラムの標準的な実装は物理LOCおよび論理LOCともに3行です。コメント行を加えた場合でも論理LOCは変わりませんが、物理LOCは4行となります。また、別の実装方法でも論理LOCは4行でありながら、処理内容は同じです。更に、非常に効率的な
アルゴリズムを用いると、論理LOCはなんと1行に圧縮されます。
このように、同じ処理を行う
ソースコードでも、記述方法や
アルゴリズムによってLOCが大きく変動することがわかります。これにより、LOCだけで
ソフトウェアの真の規模を測ることが難しいことが理解できます。そのため、LOCの代わりに
ファンクションポイント法など、他の指標を使用することが一般的です。これらの指標は、
ソフトウェアの機能や開発プロセスに焦点を当てることで、より正確な評価を可能にします。
参考文献