🎸

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

2024/06/11に公開

モジュール性とは

SQuaRE(Software Product Quality Requirements and Evaluation、ISO/IEC 25010)は、ソフトウェア製品の品質特性を定義する国際標準です。この標準において、保守性はソフトウェアの品質特性の一つとされており、その副特性としてモジュール性(Modularity)が挙げられています。
モジュール性は、ソフトウェアが独立したモジュールまたはコンポーネントに分割されている程度を指し、保守性の観点から非常に重要な副特性です。

https://youtube.com/shorts/zLT5a1I9Ctg

モジュール性が高いソフトウェアの特徴・利点

  • 独立性: 各モジュールは、他のモジュールとの強い依存関係を持たずに独立して機能します。これにより、一つのモジュールを変更または更新しても、他のモジュールに影響を与えにくくなります。
  • 交換可能性: モジュールは、必要に応じて他のモジュールと交換することができます。これにより、システムの柔軟性が向上し、新しい技術やコンポーネントへの適応が容易になります。
  • 理解しやすさ: ソフトウェアが明確に定義されたモジュールに分割されていると、各モジュールの機能と責任がはっきりしているため、開発者はシステム全体を理解しやすくなります。
  • 再利用性: 独立したモジュールは、他のプロジェクトやシステムで再利用することが可能です。これにより、開発の効率化とコスト削減が図れます。

モジュール性の高いソフトウェアは、保守作業が容易になるため、修正、拡張、テスト、理解がしやすくなります。また、モジュール性は、ソフトウェアの構造を整理し、複雑さを管理するための重要な手段となります。SQuaREの枠組みでは、モジュール性は保守性を向上させるための中核的な副特性として位置づけられており、ソフトウェアの長期的な品質と持続可能性を確保するために不可欠です。

モジュール性のメトリクスをGQMで考える/ケーススタディ

目標(Goal)

  • 目標: ソフトウェアのモジュール性を向上させ、保守性と再利用性を高める。
  • 目的: システムの柔軟性を向上させ、変更や拡張を容易にし、開発効率を改善する。
  • 範囲: 新規開発中のソフトウェアプロジェクト、または既存のソフトウェアシステム。
  • 品質観点: ソフトウェアアーキテクチャ、コード構造、コンポーネント設計。

質問(Question)

  • 質問1: ソフトウェアはどの程度モジュール化されているか?
  • 質問2: 各モジュールの独立性はどの程度保たれているか?
  • 質問3: モジュール間の結合度はどの程度低いか?
  • 質問4: モジュールの再利用性はどの程度高いか?
  • 質問5: モジュールの変更が他のモジュールに与える影響はどの程度制限されているか?

メトリクス(Metric)

想定されるメトリクスは下記の通りです。

  • メトリクス1: モジュール数 - システムを構成する独立したモジュールの総数。
  • メトリクス2: 結合度(Coupling) - モジュール間の相互依存の度合いを測定するメトリクス。
  • メトリクス3: 凝集度(Cohesion) - モジュール内の要素がどれだけ機能的に関連しているかを測定するメトリクス。
  • メトリクス4: 再利用率 - 他のプロジェクトやモジュールで再利用されているコードの割合。
  • メトリクス5: 変更伝播度(Change Propagation) - あるモジュールの変更が他のモジュールにどれだけ影響を与えるかを測定するメトリクス。

ただし、これらをすべて集計するのは困難なので、ある程度絞ります。

ソースコードの重複度(Duplications Lines, Duplicated Blocks)を計測することで、結合度と凝集度と再利用率が「ある程度」測れると考えます。
また、結果的にモジュール性の良さは開発効率として効果が現れるはずなのでFour Keysの生産性をメトリクスとします。

Discussion