9

私は非常に大規模なプロジェクトに取り組んでおり、作成に数年かかり、かなり大きな会社で、全体的なコード品質の向上に向けた作業を行っています。

この文脈で、品質と複雑さを測定するためにどのような種類の指標を使用するのか疑問に思っていました. 私は絶対的な対策を求めているわけではありませんが、時間をかけて改善できる一連の項目を探しています。これは何百ものプロジェクトにまたがるちょっとした大規模な操作であることを考えると (私はもっと小規模なプロジェクトについて尋ねられたいくつかの質問を見てきました)、もっと自動化可能で全体論的なものを探しています。

これまでのところ、次のようなリストがあります。

  • 全機能テスト中のコード カバレッジ率
  • BVT 障害の再発
  • nDepend などのツールに基づく依存関係グラフ/スコア
  • ビルド警告の数
  • 見つかった/抑制された FxCop/StyleCop 警告の数
  • 「キャッチ」ステートメントの数
  • 手動展開ステップの数
  • プロジェクト数
  • どこにも参照されていない「死んだ」コード/プロジェクトの割合
  • コード レビュー中の WTF の数
  • コードの総行数。層ごとに分類される場合があります
4

5 に答える 5

6

機能性、信頼性、使いやすさ、効率性、保守性、および移植性という 6 つの主要なソフトウェア品質特性に基づいて作業を整理する必要があります。これらの特性を説明する図をオンラインに掲載しました。次に、特性ごとに、必要で追跡可能な最も重要な指標を決定します。たとえば、Chidamber や Kemerer のような一部のメトリックはオブジェクト指向ソフトウェアに適していますが、循環的複雑度のような他のメトリックはより汎用的です。

于 2009-08-30T21:19:54.870 に答える
2

おそらく、この分析が興味深い、または洞察に満ちていることに気付くでしょう: A Tale of Four Kernels
Edit: schema, and the対応するクエリ

于 2009-08-30T04:07:15.360 に答える
1

循環的複雑度は、まともな「品質」指標です。ただし、それが唯一の指標である場合、開発者はそれを「ゲーム」する方法を見つけることができると確信しています。:)

そして、CRAPメトリックがあります...

PS NDependには約100億のメトリックがあるため、一見の価値があります。ReflectorのCodeMetricsも参照してください。

D'oh!あなたがすでにNDependについて言及していることに気づきました。

報告されたバグの数も追跡するのが興味深いでしょう...

于 2009-08-30T04:28:46.813 に答える
1

全体的なコード品質を向上させるというタスクを引き受ける場合。あなたは見てみるかもしれません:

  • 現在未解決の問題がいくつあり、解決するのにどれくらいの時間がかかりますか?
  • 要件を収集するためにどのようなプロセスを用意していますか?
  • スタッフはベストプラクティスに従っていますか?
  • あなたの会社のプログラミング方法論を説明するための SOP はありますか。

大規模なプロジェクトに多くの開発者が関与している場合、誰もが独自のプログラミング方法を持っています。プログラミングの各スタイルは問題を解決しますが、一部の回答は他のものよりも効率が悪い場合があります。

新しい機能を攻撃したり、既存のコードを修正したりするときに、スタッフをどのように活用しますか。開発者が SOP のプログラミングに従ってチームで作業することで、全員がより良いコードになることが強制されます。

ルールに従ってより効率的にコードを作成すると、開発時間は短縮されます。

必要なすべてのメトリックを取得できますが、まず、物事がどのように行われているかを確認する必要があります。

どのような開発手法を採用していますか?

物事が現在どのように行われているかを知らなくても、必要なすべての指標を取得できますが、改善が見られることはありません.

于 2009-08-30T04:59:57.517 に答える
0

ソフトウェアのクローン作成/重複コードの量、少ないほど明らかに優れています。(リンクでは、クローンとそれらを検出/測定するためのさまざまな手法について説明しています。)

于 2009-08-30T04:44:46.797 に答える