品質管理ツールSonarの記事
@ITにおかもとさんが品質管理ツールSonarの記事を書いておられたのでメモ。
【元ネタ】
コード探知機「Sonar」でプロジェクトの深海を探れ! (1/4) - @IT
メトリクスでソフトウェア品質を見える化する: プログラマの思索
Sonarはインストール出来ていたものの、使いこなせてなかったので、とても参考になる。
Sonarで一番知りたいメトリクスは複雑度だ。
複雑度と単体テストケース数の相関関係: プログラマの思索でも書いたけれど、複雑度と単体テストケース数は密接に絡んでいる。
ソフトウェア複雑度(McCabeのサイクロマチック数)
≒分岐網羅(C1)のテストケース数
≒単体テストケース数
という関係があるから、複雑度が大きいほど単体テストケース数が膨らむ。
たとえJUnitで単体テストを自動化していても、複雑度が大きすぎるプログラムはどこかにバグが潜んでいる。
IF文やFor文がたくさんネストしているプログラムは、それだけで簡単に複雑度は30以上は超える。
おそらくどんなシステムでも、複雑度が30を超えるプログラムは10個ぐらいはあるように思う。
特に本番稼働後、たくさんのパッチを当てる度に複雑度は増していく。
他の会社では、複雑度が15以上のプログラムはコードレビューを必須として、30を超えたら書き直すかどうか方針を下すという話を聞いたことがある。
個人的には、複雑度が30以上のプログラムは、リファクタリングして書き直した方が、その後の結合テストでも修正しやすいし、リリース後の運用保守でも機能追加しやすくなると思う。
こみいったプログラムの保守ほど嫌な作業はない。
プログラムに手を入れて変更するだけで、新たなバグを作ってしまう可能性が高いからだ。
SonarやStatSVNなどのメトリクス出力ツールを使って、いつでも開発者が自分たちのシステムの品質を見るようにすれば、自然に綺麗なプログラムを書こうという意識が生まれるだろう。
品質の見える化は開発者のプログラミング作法を自然に変えてくれるはずだ。
| 固定リンク
「ソフトウェア」カテゴリの記事
- Redmine AI HelperプラグインはRedmineをAI駆動プロジェクト管理に変える可能性を秘めている #Redmine(2025.12.31)
- 「RedmineのUbuntu+Docker構築への移行」の感想 #redmineT(2024.11.24)
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのenum型はシングルトンクラスみたいだ(2022.06.20)
- テスラが従来の自動車メーカーと異なるところは工場までソフトウェア化すること(2022.02.09)
「ソフトウェア工学」カテゴリの記事
- マイクロマネジメントに陥ったチケット駆動開発の罠と再生戦略 #redminet(2026.04.26)
- リプレースとアーキテクチャモダナイゼーシヨンの違いの本質は何なのか?(2026.04.08)
- アーキテクチャモダナイゼーションにおけるAMETチームの役割と責任範囲は何か(2026.03.23)
- アーキテクチャモダナイゼーションとはそもそも何なのか?(2026.03.22)
- 自動車業界におけるA-SPICE・機能安全・サイバーセキュリティの規格に対応したプロセス改善とは何か?(2026.02.15)


コメント