🎸

ソースコード品質のメトリクス 〜メトリクスの活用戦略 DevOpsとマイクロサービス時代のQA〜

2024/05/22に公開

はじめに

DevOpsとマイクロサービス時代のQA:高品質なソフトウェアを目指してという記事を執筆しました。この記事では、DevOpsおよびマイクロサービスにおける「品質が良い」という状態を定義しました。今回の記事では、メトリクスに焦点を当てて言及します。

品質向上はソフトウェア開発における永遠のテーマです。特に、DevOps文化とマイクロサービスアーキテクチャが普及している現代では、品質管理のアプローチも進化しています。本記事では、品質向上を目指す際に重要となるメトリクスに焦点を当て、DevOpsとマイクロサービス環境での適用方法について解説します。

PR

2024年6月12日から14日まで、出島メッセ長崎にてソフトウェア・シンポジウム2024が開催されます。シンポジウムの2日目と3日目には、今こそ考えたい!データを活用した品質改善戦略!と題したワーキンググループを主催いたします。品質改善にご興味のある方はぜひご参加ください!

本記事の目的

コード品質について、具体的なケーススタディを通じて、実践的な知見を共有します。この記事は、GQMモデルを用いてソースコード品質を評価・改善する方法を探求し、読者が自身のプロジェクトで同様の手法を適用できるように支援することを目的としています。

ソースコード品質のGQMモデル

GQMを使って整理します。
整理されたGQMは非常に明確で、具体的な目標達成に役立つと思います。

1. 目標(Goal)

目標: 継続的デリバリーをするために、品質特性の保守性を向上させ、デグレードを防ぎ、開発者が安心してPRできる環境を作る。

  • 具体的な成果: 高いコードの保守性デグレードの防止、開発者のプルリクエスト信頼度向上。
  • 重要性: 保守性の高いコードは、継続的デリバリーを支え、システムの安定性と将来のメンテナンスコスト削減に寄与する。
  • 範囲: 自身が携わる開発プロジェクト。
  • 品質レベル: 保守性が向上し、デグレードの発生が減少、開発者のPRがスムーズに進む。

2. 質問(Question)

  1. ソースコードの保守性が高い状態とは?
  2. 生産性と品質が両立できる状態とは?

3. メトリクス(Metric)

  1. C1 Coverage(条件網羅):

    • 条件分岐のカバレッジ率: コードの条件分岐が網羅されている割合。
  2. 静的解析結果(SonarQubeのBugs, Codesmell):

    • Bugsの数: SonarQubeの判定でAとなる。
    • Code Smellsの数: SonarQubeの判定でAとなる。

参考

このGQMモデルに基づいて、ソースコードの品質改善に向けた具体的な活動を実施することができます。以下のような改善活動を提案します:

改善活動

  1. コードレビューの強化

    • 静的解析の指摘に対応する。
    • ペアプログラミングやモブプログラミングの導入しチーム内にナレッジをシェアする。
    • ソースコードレベルのケーススタディを言語化する。
  2. 自動テストの充実

    • ユニットテストをC1 Coverageを意識して書く。
    • テストの自動化と定期的な実行。
  3. 静的解析ツールの導入と活用

    • SonarQubeなどの静的解析ツールをフィードバックループに組み込む。
    • 静的解析の結果をレトロスペクティブで参照し、必要に応じてプロダクトバックログ化する。
  4. 継続的なトレーニングと教育

    • コーディング規約やベストプラクティスのトレーニング。
    • ケーススタディ学習セッション。

Discussion