📊
内部品質と外部品質 - ソフトウェア品質の探求
ソフトウェア品質について様々な観点から考える記事群です。
はじめに
ソフトウェアの品質に関する議論や資料において「内部品質」や「外部品質」という単語が出てきたことはないでしょうか。なんとなくわかるけれど体系立てて理解していなかったので、来歴と私なりの解釈を残しておこうと思います。
独断と偏見による説明
出典
「内部品質」や「外部品質」はソフトウェア品質に関する規格「JIS X 25010」に登場する「ソフトウェア品質のライフサイクル」という以下の図に由来していると考えられます。
初見では何やらよくわからない図ですが、円の中に「プロセス品質」「内部特徴」「外部特徴」「利用時の品質」という単語が出ています。「特徴」という単語を「品質」に読み替えて、4つの品質が存在すると言っているように読み取ることにします。
4つの品質
ソフトウェア開発の文脈で「品質」と言った場合、多くの人は「外部品質」をイメージするのではないでしょうか。しかし「プロセス品質」や「内部品質」もあると考えて良いように思います。それぞれの品質についてのイメージは以下の通りです。
品質の種類 | ざっくり言うと | 高品質な状態のイメージ |
---|---|---|
プロセス品質 | 開発手順が決まっている | ・俗人性が少ない |
内部品質 | ソースが読みやすい | ・同じ種類のコンポーネントの構造が均一である ・変更時の影響範囲が見極めやすい |
外部品質 | 仕様書通りに動く | ・カタログスペックが優秀である |
利用時の品質 | 利用者の満足度が高い | ・ソフトウェアが使いやすい ・アクティブな利用者が多い |
品質同士の関係
これら4つの品質は互いに関係しています。前述の図を再度みると、それぞれの品質が「影響」や「依存」していると示されています。
この繋がりは以下のような関係であると考えられます。
品質の種類 | 影響 | 依存 |
---|---|---|
プロセス品質 | 高品質な手順で作ると高品質な成果物が製造できる(内部品質に影響) | - |
内部品質 | ソースコードが綺麗だと不具合が混入しにくい(外部品質に影響) | 手順やルールが曖昧だとソースコードの質が低くなる(プロセス品質に依存) |
外部品質 | 仕様通りに動くと利用者の満足度が上がる(利用時の品質に影響) | ソースコードの質が低いと不具合が多い(内部品質に依存) |
利用時の品質 | - | 仕様通りに動かないと利用者の満足度は低い(外部品質に依存) |
評価するには
これらの4つの品質は計測対象や計測方法が異なります。代表的な評価方法は以下のようになるのではないでしょうか。
品質の種類 | 計測対象の例 | 計測方法の例 |
---|---|---|
プロセス品質 | ・開発プロセス ・手順書 |
・プロセス/手順書レビュー |
内部品質 | ・ソースコード | ・lint ・ソースレビュー |
外部品質 | ・動作中のソフトウェア | ・要件や仕様に基づいたテスト |
利用時の品質 | ・利用者の利用状況 ・利用者の満足度 |
・ユーザーレビュー ・アンケート ・利用状況の計測 |
改善するには
最後に4つの品質の改善方法ですが、評価方法と同様に改善方法も品質ごとに異なると考えられます。
品質の種類 | 改善方法の例 |
---|---|
プロセス品質 | ・標準化の推進 |
内部品質 | ・リファクタリングの実施 ・ペアプロ/モブプロの実施 |
外部品質 | ・不具合の改修 |
利用時の品質 | ・CICDを回す |
さいごに
「品質」といっても色々あります。品質について議論したり評価したり改善したりする際は、どの品質を対象としているかを考えるのがよいでしょう。
品質関連の他の記事は「ソフトウェア品質の探求」からどうぞ。
出典
- JIS X 25010(前身は JIS X 0129)
- ISO/IEC 25010(前身は ISO/IEC 9126)
Discussion