本研究に関係する付録資料の紹介を行う。
本研究に関係する付録資料の紹介を行う。
以下に掲載する指標群は、メトリクスツール「Resource Standard Metrics (RSM)」のウェブサイトに掲載されていたものからの抜粋である。
指標名 | 説明 |
---|---|
LOC | Lines of Code。コードの行数。SLOC(Source LOC)とも。計測の規則も様々で、以下にはその例を幾つか掲載する。関数毎・クラス毎・パッケージ毎で計測する。 |
Effective LOC | eLOCとも。空行・コメント行・括弧だけの行を除いてカウントした数値。 |
Physical LOC | 物理LOC。ソースファイルに記載されいているプログラムの行数をそのまま計測した数値。 |
Logical LOC | 論理LOC。lLOCとも。プログラムにおける文(statement)の数を表す数値。1行に複数文書かれている場合も文の数だけカウントする。 |
Comments Lines | コメントの行数。 |
Blank Lines | 空行の行数。 |
FP (LOC由来) | LOCの値から算出したFP(Function Point:ファンクションポイント)値。機能数とその複雑さによって算出した数値。 |
Number of Input Parameters | 引数の数。 |
Number of Return Points | 関数が戻る場所(return)の数。 |
Interface Complexity | Input Parameters + Return Points。インタフェースの複雑さ。 |
Cyclomatic Complexity | 循環的複雑度。線形独立な経路の数。循環の数 + 1。 |
{Functional, Class, Namespace/Package} Complexity | Interface + Cyclomatic。 |
Average, Maximum, Minimum | 関数ごとのLOCについて算出する平均値・最大値・最小値。 |
Number of Data attributes | 属性(フィールド)の数。アクセス修飾子(public, private, protected)毎に数え分ける。 |
Number of Methods | 操作(メソッド)の数。アクセス修飾子(public, private, protected)毎に数え分ける。 |
Number of Functions | 関数(メソッド?)の数。クラス毎・パッケージ毎で計測する。 |
Depth of Inheritance Tree | 継承の階層数。 |
Number of Classes | クラス数。 |
Number of Base Classes | 基底クラス(親クラス)の数。 |
Number of Derived classes | 派生クラス(子クラス)の数。 |
Derived/Base Class Ratio | 派生クラス数と基底クラス数の比率。派生クラス数÷基底クラス数で求める。 |
{Maximun, Average} Inheritance Depth | 継承の階層数の最大値・平均値。 |
{Maximun, Average} Number of Child Classes | 子クラス数の最大値・平均値 |
Average functions per class | クラス毎の関数(メソッド)数。 |
Comment and White space percentages | プログラム中のコメントや空白が占める割合。 |
Average Character line length | 1行の文字数の平均値。 |
Memory Allocation and De-allocation metrics | メモリの動的確保及び解放を行なっている箇所の数。 |
Language Keyword use | 利用している予約語(キーワード)の数。 |
Language Construct use | 利用している言語構造の数。(PHPのprintやexitのようなもの。) |
Extract Comments per file for understandability rating and spell checking | コメントの理解しやすさとスペルチェック。 |
Extract Strings per file for spell checking | 文字列のスペルチェック。 |
Metrics differentials between two file version | 2バージョンのファイルについてメトリクス結果の比較を行う。 |
Total C, C++ and Header Files | C, C++のソースファイル及びヘッダファイルの総数。 |
Total Java Files | Javaのソースファイルの総数。 |
Total Number of Files | 総ファイル数。 |
以下は、Javaプログラムを解析にかけた場合の指標群だが、指標名と実測値からその意味を類推しているため、誤訳の可能性を否定出来ない。
指標名 | 説明 |
---|---|
Lines | 空行を除いた行数を表す数値。 |
Statements | セミコロンで終わる文と、クラスやメソッドの定義文の合計を表す数値。 |
% Branches | おそらく、Statements中に存在するif文の割合を表す数値。 |
Calls | メソッド呼び出しの回数を表す数値。 |
% Comments | コメントが占める割合。 |
Classes | プログラム中のクラス定義数(内部クラス数を含む)を表す数値。 |
Methods/Class | メソッド数とクラス数の比率。メソッド数÷クラス数で算出する。 |
Avg Stmts/Method | 1メソッドあたりの平均Statements数。 |
Max Complexity | おそらく、各メソッドのCyclomatic Complexityのうち、その最大のものを表す数値。 |
Max Depth | おそらく、{ }(ブロック)の最大ネスト数。 |
Avg Depth | おそらく、{ }(ブロック)の平均ネスト数。 |
Avg Complexity | おそらく、各メソッドのCyclomatic Complexityの平均値。 |
指標名 | 説明 |
---|---|
NORM | Number of Overridden Methods。オーバーライドしているメソッドの数。 |
NOF | Number of Attributes (Field)。属性(フィールド)数。 |
NSC | Number of Children。子クラス数。 |
NOC | Number of Classes。総クラス数。 |
MLOC | Method Lines of Code。メソッドのLOC。 |
NOM | Number of Methods。メソッド数。 |
NBD | Nested Block Depth。ブロックのネスト数。 |
DIT | Depth of Inheritance Tree。継承の階層数。 |
NOP | Number of Packages。パッケージ数。 |
CA | Afferent Coupling。依存しているパッケージ外のクラス数。 |
NOI | Number of Interfaces。インタフェースの数。 |
VG | MaCabe Cyclomatic Complexity。循環的複雑度。 |
TLOC | Total Lines of Code。コードの行数。 |
RMI | Instability。(パッケージの)不安定性。Ce / (Ca + Ce)で算出する。 |
PAR | Number of Parameters。引数の数。 |
LCOM | Lack of Cohesion of Methods。あるクラスの凝集性の欠如を表す。小さいほど凝集度は大きく、メソッドの強度が高いことを表す。 |
CE | Efferent Coupling。依存しているパッケージ内のクラス数。 |
NSM | Number of Static Methods。スタティックメソッド(クラスメソッド)の数。 |
RMD | Normalized Distance。 |
RMA | Abstractness。パッケージの抽象度。全クラス及びインタフェース中の抽象クラス及び抽象インタフェースの割合。 |
SIX | Specialization Index。クラスの特殊化指標の平均値。NORM * DIT / NOMで算出する。 |
WMC | Weighted methods per Class。あるクラスに定義されているメソッドのCyclomatic Complexityの総和。大きいほど複雑であり、メンテナンスのコストがかかることを示唆する。 |
NSF | Number of Static Attributes。スタティックフィールド(クラスフィールド)の数。 |
指標名 | 説明 |
---|---|
NOA | Number of Attribute。NOFに同じ。 |
NCV | Number of Class Variables。クラス変数の数を表す。NSFに同じ。 |
NIV | Number of Instance Variables。インスタンス変数の数を表す。 |
NCM | Number of Class Methods。クラスメソッドの数を表す。NSMに同じ。 |
NIM | Number of Instance Methods。インスタンスメソッドの数を表す。 |
NOC | Number of Children。サブクラスの数を表す。NSCに同じ。大きいほどサブクラスへの影響力が強く、メンテナンスに注意が必要であることを示唆する。 |
CBO | Coupling between Objects。あるクラスに関係しているクラスの数を表す。大きいほど他のクラスに依存していることを表し、複雑でメンテナンスコストがかかることを示唆する。 |
RFC | Response for a Class。あるクラスに関係しているメッセージの数を表す。大きいほど発信しなければならないメッセージが多いことを表し、複雑なクラスであることを示唆する。 |
HF | Hierarchy Factor。あるクラスの抽象性(具体性)を計測した値。0の場合は、そのクラスがインヘリタンス(クラス階層)の一番上に位置することを意味し、階層を下がるにしたがって1に近づく。0に近いほどクラスの抽象性が高く、再利用性が良好であることを示唆する。 |
RF | Reference Factor。あるクラスの全体性(部分性)を計測した値。クラスの相互参照関係(半順序)のどのあたりに位置するのかを表す。他のクラスを参照する割合が大きいほど1に近づき、0に近いほどクラスの独立性が高く部品として使われる可能性が高いことを示唆する。 |
PF | Polymorphism Factor。あるクラスの多相性(一義性)を計測した値。クラスが所有するメッセージが、他のクラスの所有するメッセージとどのくらい重なっているのかを表す。1に近づくほどメッセージが重なっていることを示し、ポリモーフィズムが有効に働いている可能性を示唆する。0に近づくほどメッセージが統一されていないことを示唆する。 |
CP | Class Popularity。あるクラスの人気度を計測した値。人気の高いクラスほど、他のクラスから利用されていることを表す。人気の高いクラスが集中しているほど、依存しているクラスが統一されていることを表し、良好なプログラムであることを示唆する。 |
MP | Message Popularity。あるメッセージの人気度を計測した値。CPと同様で、人気の高いメッセージが集中しているほど、発信されているメッセージが統一されていることを表し、良好なプログラムであることを示唆する。 |
走行時間 | プログラムの走行時間。ベンチマークテストにも。 |
これまでに研究の一環として食してきたスパゲッティ(またはパスタ)を挙げておく。
# | 名称 |
---|---|
1 | 北山洋食カフェ 和蘭芹「生ハムとモッツァレラチーズのトマトソース スパゲッティ」 |
2 | 日清 カップ麺「スパ王 生タイプ ペペロンチーノ」 |
3 | サークルKサンクス「ルベッタ 大皿 明太子スパゲッティ」 |
4 | スーパーマーケット成城石井「無着色明太子の彩りパスタ」 |
5 | 自家製「ボルカノ スパゲティ 1.8mm / ナスのトマトソーススパゲッティ」 |
6 | Osteria SAKURA「小海老と九条ねぎのアーリオ・オーリオスパゲティ」 |
7 | 喫茶マウンテン「甘口抹茶小倉スパ」 |
8 | 日清フーズ 冷凍食品「マ・マー 大盛りスパゲティ ナポリタン」 |
9 | 自主調理「ディ・チェコ フィリッポ567 スパゲッテリ(約1.8mm) / バジルソーススパゲッティ」 |
10 | 自主調理「日清フーズ マ・マー スパゲティ 1.6mm / バジルソーススパゲッティ」 |
11 | 北山ランタン「一膳パスタランチ 日替りパスタ フレッシュトマトとズッキーニのパスタ」 |
12 | ポポラマーマ「ほうれん草ベーコンジェノベーゼ」 |
13 | 自主調理「ディ・チェコ No.11 スパゲッティーニ(1.6mm) / ボンゴレソーススパゲッティ」 |
14 | カプリチョーザ「なすとホウレン草のミートソーススパゲティ」 |
15 | カプリチョーザ「ベーコンとクリームのスパゲティ カルボナーラ」 |
16 | セカンドハウス「セカンドトマトソース」 |
17 | 自主調理「日清フーズ マ・マー スパゲティ 1.8mm / カルボナーラ と ミートソース(2種類)」 |
18 | セカンドハウス「ポテトたらこ」 |
19 | 自主調理「ガロファロ No.15 フェットチーネ(???mm) / カルボナーラスパゲッティ」 |
20 | サイゼリヤ「イカの墨入りスパゲッティ」 |
21 | 自主調理「バリラ No.5 スパゲッティ(1.7mm) / バジルソース と ミートソース(2種類)」 |
22 | 自主調理「ディ・チェコ No.9 カッペリーニ(0.9mm) / 納豆」 |
23 | 自主調理「ジュゼッペ コッコ No.34 リングイーネ / ツナしょうゆ風味」 |
24 | 自主調理「青の洞窟 スパゲッティ 1.7mm / ジェノベーゼバジルソース」 |
25 | 自主調理「地中海のパスタ SAINT MICHEL 1.7mm Spaghetti」(チュニジア産) |
26 | 自主調理「オーマイ スパゲッティ 1.7mm」 |
27 | 自主調理「AGNESI(アネージ) SPAGHETTI n.3 1.7mm」 |
28 | Jolly-Pasta(ジョリーパスタ)「スモークサーモンといくら」 |
29 | 自主調理「ジュゼッペ コッコ No.33 スパゲッティ」 |
30 | 自主調理「PECK SPAGHETTI 1.8mm」 |
31 | 日清食品 冷凍食品「スパ王 プレミアム 海老とトマトの入ったジェノベーゼ」 |
32 | サンヨー食品 カップ麺「カルボナーラ フェットチーネ」 |
33 | TOMATO&ONION「和風シソ明太子スパゲティ」 |
34 | あるでん亭「なすトマト」 |
35 | 洋麺屋五右衛門「豚しゃぶとたっぷり野菜の胡麻ダレ仕立て」 |
36 | NIFTY「ツナときのこのクリームパスタ」 |
37 | 自主調理「Besler スパゲッティ 1.7mm」(トルコ産) |
38 | 自主調理「ディ・チェコ No.41 ペンネリガーテ」 |
39 | 自主調理「CASTIGLIONI(カスティリオーニ) スパゲッティ No.52 1.67mm」 |
40 | アンチョビ「ベーコンとホウレン草のトマトソース」 |