
121
複雑さはソフトウェアのライフサイクルの至るところにあります。要求、分析、設計、そしてもちろ
ん実装にも。複雑さは、ソフトウェアを読んで理解しにくくし、そのために変更も難しくなり、さらに
はソフトウェアに欠陥が含まれる一因であるとも信じられています。このため複雑さは、通常はソフト
ウェアの好ましくない性質だとされます。ソフトウェアプロジェクトで生産されるすべてのもののうち、
複雑度を測定するのが一番容易な選択肢がソースコードです。しかし、ここ数十年のソフトウェアに関
する研究は、どのようなメトリクスが与えられたコード片の複雑度を最も良く表すかということについ
て、未だ合意に至っていません。異なるプログラミング言語で書かれた
2
つのコード片を比較して、ど
ちらのコードの方が複雑かを言うことですら難しいのです。決定版がないため、現状ではプログラムの
複雑度を測定するためのメトリクスの提案が無数に存在しています。研
究者によれば、各々の特定の事
例に対しての最良のメトリクスは何である、ということになっているでしょうか?
たとえばコード行
数などの、非常に素朴なソースコードメトリクスよりも、これら無数のメトリクスの方がいくらかでも
優れているのでしょうか?
本章では、膨大な量のオープンソースソフトウェアを活用して、大きさと複雑さに関するさまざまな
メトリクス間の関係を調査します。無数の属性やメトリクスで窒息してしまわないために、私たちはプ
ログラミング言語として
C
言語だけを扱います。
C
言語はソフトウェア開発において ...