チームのソフトウェア開発プロセスを改善し、時間の見積もりを改善し、プロジェクトの実行中に対処する必要がある特殊なケースのバリエーションを検出するために使用できるメトリックを追跡したいと考えています。
各回答を 1 つの指標に限定し、その使用方法を説明し、良い回答に投票してください。
(ソース: osnews.com )
逆コードカバレッジ
テスト中に実行されなかったコードの割合を取得します。これは Shafa が言及したものと似ていますが、使い方が異なります。テスト中にコード行が実行された場合、それがテストされる可能性があることがわかります。しかし、コード行が実行されていない場合、それがテストされていないことは確かです。単体テストでこれらの領域を対象にすると、品質が向上し、カバーされたコードを監査するよりも時間がかかりません。理想的には両方を行うことができますが、それが実現することは決してありません.
「チームのソフトウェア開発プロセスを改善する」: 欠陥の発見率と修正率
これは、コミットまたは検証された修正の数に対して提起された欠陥またはバグの数に関連しています。
これは非常に重要な指標の 1 つであると言わざるを得ません。
修正率が低いということは、チームが他のこと (おそらく機能) に取り組んでいることを示しています。バグ数が多い場合は、開発者にいくつかの欠陥に対処してもらう必要があるかもしれません。
発見率が低いということは、ソリューションが素晴らしく、バグがほとんどないか、QA チームがブロックされているか、別のことに注力していることを示しています。
見つけたバグのソースとタイプを追跡します。
バグ ソースは、バグが導入された開発段階を表します。(例: 仕様、設計、実装など)
バグの種類は、バグの広範なスタイルです。例えば。メモリ割り当て、不適切な条件。
これにより、開発のそのフェーズで従う手順を変更し、コーディング スタイル ガイドを調整して、過剰に表現されたバグの種類を排除することができます。
それに対して見積もりがあるタスクを実行するのにかかる時間を追跡します。彼らが十分に下回っていた場合は、その理由を質問してください。それらが十分に終わっている場合は、その理由を質問してください。
ネガティブなことにしないでください。タスクが吹き飛ばされたり、見積もりが大幅に下回ったりしても問題ありません。あなたの目標は、見積もりプロセスを継続的に改善することです。
速度: 特定の単位時間あたりの機能の数。
機能をどのように定義するかはあなた次第ですが、それらはほぼ同じ大きさである必要があります。そうでない場合、速度はあまり役に立ちません。たとえば、ストーリーやユース ケースによって機能を分類できます。これらは、すべてほぼ同じサイズになるように分割する必要があります。反復ごとに、いくつのストーリー (ユースケース) が実装 (完了) されたかを把握します。機能/反復の平均数がベロシティです。機能ユニットに基づいて速度がわかったら、それを使用して、機能に基づいて新しいプロジェクトを完了するのにかかる時間を見積もることができます。
[編集] または、機能ポイントやストーリー ポイントなどの重みを複雑さの尺度として各ストーリーに割り当て、完成した各機能のポイントを合計して、ポイント/反復で速度を計算することもできます。
ソース コード内のクローン (類似のコード スニペット) の数を追跡します。
クローンを見つけたらすぐにコードをリファクタリングして、クローンを取り除きます。
関数の長さの平均、またはより良い感触を得るための関数の長さのヒストグラム。
関数が長くなればなるほど、その正しさは明らかではなくなります。コードに長い関数がたくさん含まれている場合、そこにいくつかのバグが隠れている可能性があります。
ファンインとファンアウトは私のお気に入りです。
ファンイン:このモジュールを使用/認識している他のモジュール/クラスの数
ファンアウト:このモジュールは他にいくつのモジュールを使用/認識していますか
時間の見積もりを改善する
Joel Spolsky の Evidence-based Scheduling は、それ自体がメトリックではありませんが、まさにあなたが望むもののように思えます。http://www.joelonsoftware.com/items/2007/10/26.htmlを参照してください。
ソースの一部がレビューを受けているかどうか、受けている場合はどのタイプかを追跡します。その後、レビューされたコードとレビューされていないコードで見つかったバグの数を追跡します。
これにより、見つかったバグに関して、コード レビュー プロセスがどの程度効果的に機能しているかを判断できます。
スクラムを使用している場合は、バックログ。各スプリント後のサイズはどれくらいですか? 一定の割合で縮小していますか?または、(a) 当初考えられていなかったことが原因でバックログに押し込まれている (「誰も考えていなかった監査レポートの別のユースケースが必要です。バックログに追加します。 ") または (b) 約束された機能の代わりに、作業を完了せず、日付を満たすためにバックログにプッシュします。
コミットごとの失敗したテストまたは壊れたビルドの数。
Mary Poppendieckが推奨するシステムが特に気に入って使用しています。このシステムは、パッケージとして取得する必要がある 3 つの総合的な測定値に基づいています (したがって、3 つの回答を提供するつもりはありません)。
ユーザーに価値を迅速に提供するという究極の目標に向けて歩調を合わせているかどうかは、これ以上知る必要はありません。
クラス間の相互依存。コードがどの程度緊密に結合されているか。
QAチームによってバグが報告されるたびに、その欠陥が開発者による単体テストから逃れた理由を分析します。
これを永続的な自己改善の練習と考えてください。
チームのソフトウェア開発プロセスを改善する
メトリクスはチームのソフトウェア開発プロセスを改善するのに何の役にも立たないことを理解することが重要です。それらを使用できるのは、使用している特定のメトリックに関して、開発プロセスの改善に向けてどれだけ進んでいるかを測定することだけです. おそらく私はセマンティクスについて口論していますが、あなたがそれを表現している方法が、ほとんどの開発者がそれを嫌う理由です. メトリックを使用して結果を測定するのではなく、メトリックを使用して結果を推進しようとしているようです。
別の言い方をすれば、コード カバレッジが 100% でお粗末な単体テストと、すばらしい単体テストで 80% 未満のカバレッジのどちらがよいでしょうか?
あなたの答えは後者でなければなりません。完璧な世界を望み、両方を用意することもできますが、最初に単体テストに集中し、その時点でカバレッジがそこに到達するようにすることをお勧めします。
前述の指標のほとんどは興味深いものですが、チームのパフォーマンスを向上させるのには役立ちません。問題は、開発フォーラムで管理に関する質問をすることです。
プロジェクト スケジュール レベルおよび個人レベルでの見積もり/対/実績 (Joel の証拠に基づく方法への前のリンクを参照)、リリース時に削除された欠陥の割合 (私のブログを参照: http://redrockresearch.org/? p=58 )、スコープ クリープ/月、および全体的な生産性評価 (パトナムの生産性指数)。また、開発者の帯域幅は測定に適しています。
QA におけるメトリクスの追跡は、かなり前から基本的な活動でした。しかし、多くの場合、開発チームは、これらの指標がビジネスのあらゆる側面にどの程度関連しているかを十分に検討していません。たとえば、欠陥率、有効性、テストの生産性、コード カバレッジなどの典型的な追跡指標は、通常、ソフトウェアの機能面の観点から評価されますが、ソフトウェアのビジネス面での重要性に注意を払う人はほとんどいません。
ソフトウェアのビジネス面に多くの価値を付加できるその他の指標もあります。これは、ソフトウェアの全体的な品質ビューを見るときに非常に重要です。これらは、大きく次のように分類できます。
類似行の数。(コードをコピー/貼り付け)
障害解決効率の指標が気に入っています。DRE は、見つかったすべての不具合に対する、ソフトウェア リリース前に解決された不具合の比率です。ソフトウェアを本番環境にリリースするたびに、この指標を追跡することをお勧めします。
おそらく、CodeHealerをテストできます
CodeHealerは、ソースコードの詳細な分析を実行し、次の領域の問題を探します。
スクラムを使用している場合、毎日のスクラムがどのように行われたかを知りたいと思うでしょう。人々は、やり遂げると言ったことをやり遂げていますか?
個人的には苦手です。私は日常生活で慢性的に轢かれます。
コード カバレッジ率
ソース管理コミットのサイズと頻度。