対象試験と出題頻度

保守性は、基本情報技術者・応用情報技術者で出題されるテーマです。

ソフトウェア品質特性(ISO/IEC 25010、JIS X 25010)の8つの主特性のひとつとして、「使用性」「信頼性」「効率性」などとの違いを正確に区別できるかが問われます。

詳細をクリックして確認
対象試験:
基本情報技術者
応用情報技術者
出題頻度:
★★★☆☆
ランクB(標準)覚えておくと有利

用語の定義

情報処理試験を勉強していると、「保守性って結局、修正しやすいってこと?それともバグが少ないってこと?」と混乱しがちです。

保守性(Maintainability)とは、一言で言うと

 「ソフトウェアを修正・改善・拡張しやすい度合い

のことです。

イメージとしては、整理整頓された工具箱です。

工具がラベル付きで仕切られた箱に並んでいれば、必要なドライバーをすぐ取り出せ、新しい工具も迷わず追加できます。

逆に工具がぐちゃぐちゃに突っ込まれた箱だと、目的の工具を探すだけで一苦労、戻す場所も決まらず混乱します。

ソフトウェアも同じで、「直したい場所をすぐ特定でき、安全に変更でき、変更後に問題がないか確認しやすい」状態が、保守性の高いソフトウェアです。

📊 保守性の基本情報

項目 内容
英語名 Maintainability
規格 ISO/IEC 25010(JIS X 25010)製品品質モデル
分類 ソフトウェア品質特性(主特性)の1つ
副特性 モジュール性・再利用性・解析性・修正性・試験性

解説

ソフトウェアは一度作って終わりではありません。リリース後に発見されるバグの修正、新機能の追加、OSやライブラリのバージョンアップへの追従など、運用フェーズに入ってからのほうが手を入れる期間が長いのが普通です。

このとき「直したい部分の影響範囲がわからない」「修正すると別の場所が壊れる」という状態だと、運用コストが青天井に膨らみます。これを防ぐ品質指標が保守性です。

5つの副特性

ISO/IEC 25010では、保守性は5つの副特性に分解されています。

副特性 意味
モジュール性 構成要素が独立しており、1か所の変更が他に波及しにくい度合い
再利用性 部品を別のシステムや別の文脈で使い回せる度合い
解析性 不具合の原因や変更の影響範囲を調べやすい度合い
修正性 欠陥や差分を、新しい欠陥を作らずに直せる度合い
試験性 変更後に正しく動くかをテストで確認しやすい度合い

図解:8つの品質主特性の中での位置づけ

ISO/IEC 25010 製品品質モデル(8主特性)

機能適合性
性能効率性
互換性
使用性
信頼性
セキュリティ
保守性 ⭐
移植性

▲ 保守性は8つの主特性の1つ。直下に5つの副特性がぶら下がる

混同しやすい品質特性との比較

保守性は、似た響きを持つ「信頼性」「移植性」「使用性」と混同されがちです。違いは「何を改善する観点か」で整理できます。

品質特性 観点 見分けキーワード
保守性 変更・修正・改善のしやすさ 修正容易、解析、影響範囲
信頼性 壊れずに動き続けるか 成熟性、可用性、障害許容
移植性 別の環境に移しやすいか 環境適応、設置、置換
使用性 利用者にとって使いやすいか 操作、習得、UI

保守性を高める実装上のポイント

具体例として、保守性が高いコードと低いコードを並べてみます。同じ処理でも、構造の違いで修正コストは大きく変わります。

❌ 保守性が低い例(マジックナンバー・責務混在)

def calc(p, t):
    # 何の8?何の0.1?コメントなし
    if t == 1:
        return p * 1.08
    elif t == 2:
        return p * 1.10 - 50
    else:
        return p

⭕ 保守性が高い例(命名・分離・定数化)

TAX_RATE_REDUCED = 0.08   # 軽減税率
TAX_RATE_STANDARD = 0.10  # 標準税率
COUPON_DISCOUNT = 50

def apply_reduced_tax(price):
    return price * (1 + TAX_RATE_REDUCED)

def apply_standard_tax_with_coupon(price):
    return price * (1 + TAX_RATE_STANDARD) - COUPON_DISCOUNT

▲ 命名・定数化・関数分割により、税率変更時の影響範囲が一目でわかる(解析性・修正性の向上)。

では、この用語が試験でどのように出題されるか見ていきましょう。

💡 保守性の核心を3行で

・ISO/IEC 25010の8主特性のひとつで「変更のしやすさ」を表す
・副特性は「モジュール性・再利用性・解析性・修正性・試験性」の5つ
・「壊れにくさ」は信頼性、「環境を移しやすい」は移植性で別物


試験ではこう出る!

保守性は、FE・APの午前問題で品質特性の比較問題として出題されます。

📊 過去問での出題実績

試験回 出題内容 問われたポイント
AP R元秋
午前 問46
JIS X 25010の品質副特性「modifiability(修正性)」が属する主特性を選ぶ問題。 ・正解は「保守性」
・信頼性・互換性・移植性がひっかけ
FE H30秋
午前 問46
ソフトウェアの品質特性のうち、保守性に関する記述を選ぶ問題。 ・「修正のしやすさ」が決め手
・「使い方の習得しやすさ」(使用性)が典型ひっかけ
AP H29春
午前 問46
品質副特性「試験性」が属する主特性を問う問題。 ・正解は「保守性」
・試験性=テストのしやすさ、と紐づけて覚える

📝 IPA試験での出題パターン

パターン1:「副特性が属する主特性を選べ」
「修正性」「試験性」「解析性」「モジュール性」「再利用性」のいずれかが提示され、それが属する主特性を答える形式。これら5つを見たら反射的に「保守性」と答えられるようにしておくのが最短ルートです。

 

パターン2:「保守性の説明を選べ」
4つの品質特性の説明文が並び、保守性に該当するものを選ぶ形式。ひっかけとして「故障せず動き続ける」(信頼性)、「別環境に移植できる」(移植性)、「使い方を習得しやすい」(使用性)の説明が混ざります。キーワードは「修正」「変更」「解析」。

 

ここまで押さえればOKです。旧規格のJIS X 0129(ISO/IEC 9126)との細かい差分まで深追いする必要はありません。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. JIS X 25010(ISO/IEC 25010)における品質特性「保守性」の説明として、最も適切なものはどれでしょうか?

  • A. ソフトウェアを修正・改善・拡張する際の容易さを示す特性で、モジュール性・再利用性・解析性・修正性・試験性の副特性から構成される。
  • B. 規定された条件下で、規定された期間にわたり、ソフトウェアが故障せずに機能を実行し続ける度合いを示す特性。
  • C. ソフトウェアを別のハードウェア・OS・利用環境へ移し替える際の容易さを示す特性。

正解と解説を見る

正解:A

解説:
保守性は「ソフトウェアを修正・改善・拡張しやすい度合い」を示す品質特性で、5つの副特性(モジュール性・再利用性・解析性・修正性・試験性)から構成されます。AP R元秋 午前問46やH29春 午前問46で、まさにこの副特性との対応が出題されています。

選択肢Bは信頼性の説明です。故障せず動き続ける度合いを表すもので、保守性とは別の主特性に分類されます。選択肢Cは移植性の説明です。別環境への移し替えやすさを示すもので、こちらも保守性とは独立した主特性です。


よくある質問(FAQ)

Q. 旧規格JIS X 0129(ISO/IEC 9126)の保守性と、現行JIS X 25010の保守性は何が違いますか?

副特性の構成が一部変わっています。旧規格では「解析性・変更性・安定性・試験性・標準適合性」でしたが、現行規格では「モジュール性・再利用性・解析性・修正性・試験性」に再編されました。試験で問われるのは現行規格が主流ですが、過去問には旧規格表記の問題も残っているため、「変更性≒修正性」と読み替えられれば十分です。

Q. 保守性を数値で測ることはできますか?

完全な数値化は難しいものの、代理指標は存在します。代表的なのは「循環的複雑度(サイクロマティック複雑度)」「コード行数」「結合度・凝集度」「コードカバレッジ(試験性の代理)」などです。実務ではSonarQubeのようなツールがこれらを自動計測し、技術的負債として可視化します。試験範囲では「指標がある」と知っていれば十分で、計算式の暗記までは不要です。

Q. 利用時品質モデルにも保守性はありますか?

ありません。ISO/IEC 25010には「製品品質モデル(8主特性)」と「利用時品質モデル(5主特性)」の2系統があり、保守性は製品品質モデル側に分類されます。利用時品質モデルは「有効性・効率性・満足性・リスク回避性・利用状況網羅性」で構成され、エンドユーザーが実際に使ったときの体験品質を扱う点が違いです。

Q. アジャイル開発と保守性の関係は?

アジャイル開発は短い反復で機能追加と変更を続けるため、保守性が低いコードは速度低下に直結します。リファクタリング・自動テスト・継続的インテグレーションといったプラクティスは、いずれも修正性・試験性を高く保つための工夫です。設計段階で品質を作り込む考え方は「シフトレフト」と呼ばれます。