🎸

ISO/IEC 25010 SQueRE 保守性の副特性「再利用性」 DevOpsとマイクロサービス時代のQA キーワード解説

2024/06/12に公開

再利用性とは

SQuaRE(Software Product Quality Requirements and Evaluation、ISO/IEC 25010)における保守性の副特性としての「再利用性(Reusability)」は、ソフトウェアのコンポーネントが新しい使用状況や他のソフトウェア製品で再利用される能力を指します。再利用性は、ソフトウェア開発における効率性と経済性を高めるための重要な要素です。
再利用性は、ソフトウェアのコンポーネントやモジュールが、異なるアプリケーションやプロジェクト間で共有され、再利用されることを可能にする品質特性です。

再利用性が高いソフトウェアの特徴・利点

  • 開発効率の向上: 既存の信頼性の高いコンポーネントを再利用することで、開発時間を短縮し、新しい機能の追加やアプリケーションの拡張を迅速に行うことができます。
  • コスト削減: 再利用により、開発に必要なリソースが減少し、全体的な開発コストが削減されます。
  • 品質の向上: 既にテストされ、実績のあるコンポーネントを使用することで、バグのリスクを減らし、全体的なソフトウェアの品質を向上させることができます。
  • 標準化: 再利用可能なコンポーネントを使用することで、ソフトウェアの設計と実装に一貫性を持たせることができ、保守性と理解しやすさが向上します。

再利用性を高めるためには、ソフトウェアの設計段階で、モジュール性や汎用性を考慮し、インターフェースを明確に定義することが重要です。また、ドキュメントの整備やコンポーネントのカタログ化も、再利用を促進するために役立ちます。

再利用性の高いソフトウェアは、長期的な視点で見ると、開発の柔軟性を保ちながら、継続的な改善とイノベーションを支援する基盤となります。SQuaREの枠組みでは、再利用性は保守性を支える重要な副特性として位置づけられており、ソフトウェアのライフサイクル全体にわたって価値を提供します。

再利用性のメトリクスをGQMで考える/ケーススタディ

保守性の副特性:再利用性のメトリクスをGQMに基づいて考えます。

目標(Goal)

  • 目標: ソフトウェアの再利用性を向上させ、開発効率と品質を高める。
  • 目的: コードの再利用を促進し、開発コストの削減と迅速な市場投入を実現する。
  • 範囲: 新規および既存のソフトウェアプロジェクト。
  • 品質観点: コードの汎用性、モジュール化、およびコンポーネントの独立性。

質問(Question)

  • 質問1: ソフトウェアのどのコンポーネントが再利用可能か?
  • 質問2: 再利用可能なコンポーネントの品質はどの程度か?
  • 質問3: 再利用による開発時間の削減はどの程度か?
  • 質問4: 再利用コンポーネントのメンテナンスはどの程度容易か?
  • 質問5: 再利用コンポーネントの統合における技術的な障壁は何か?

メトリクス(Metric)

  • メトリクス1: 再利用コンポーネント数 - 再利用されているコンポーネントの総数。
  • メトリクス2: 再利用率 - プロジェクト全体のコードのうち、再利用されている割合。
  • メトリクス3: 開発時間削減率 - 再利用によって削減された開発時間の割合。
  • メトリクス4: バグ率 - 再利用コンポーネントにおけるバグの発生率。
  • メトリクス5: 統合労力 - 再利用コンポーネントを新しいプロジェクトに統合するために必要な労力。

ただし、これらをすべて集計するのは予算・リソース・運用的に困難な場合が想定されるので、ある程度絞ります。

メトリクス: 再利用率

  • SonarQubeはコードの重複度(Duplicated Lines)を測定しますが、これは再利用率とは異なる概念です。再利用率を正確に測定するには、プロジェクト間で共有されているコードの追跡が必要です。
  • ですが、重複度が低い=再利用率が高いと捉えます。

メトリクス: 開発時間削減率

  • Four Keysのデプロイ頻度・変更リードタイムで間接的に測定します。

メトリクス: バグ率

  • SonarQubeはコードのバグを検出する機能を提供しており(Bugs)、再利用コンポーネントにおけるバグの発生率を測定するために使用できます。

課題

再利用コンポーネント数はSonarQubeで取得できないので、検討が必要です。また、再利用率は直接的な指標ではないのでどのような相関があるかを検討する必要があります。
メトリクスが多いと実際の運用が難しくなるので、可能な限りシンプルにしたいと考えており、上記としました。

Discussion