ソフトウェア工学1 第12回品質とその評価tsnaka/lecture/se1/第12回...8...
TRANSCRIPT
ソフトウェア工学1第12回 品質とその評価
2017年7月11日中島
1
授業内容
• テスト妥当性評価
• ソフトウェア品質
2
テスト妥当性評価
テスト妥当性 (adequacy) とは
プログラムの信頼性の指標
網羅性基準
運用的基準
欠陥除去基準
信頼度ベクトル
信頼度は,一つの基準だけを信用するのではなく,複数の基準から総合的に判断すべき
3種類の基準
欠陥発見効率
ランダムテスト+運用信頼性指標(MTBF)
信頼性成長曲線モデル
MTBF: Mean Time Between Failures
仕様カバレッジ
コードカバレッジ
3
運用状態でどれだけ長く正しく機能できるか
網羅性基準: テストケースがテスト空間をどれだけ検査できたかという基準
テスト妥当性評価:網羅性基準
プログラムに基づく基準
仕様に基づく基準
制御フロー基準データフロー基準
状態ベース網羅基準要求事項網羅基準
コードカバレッジ
仕様カバレッジ
4
仕様カバレッジ
• (識別された)要求仕様の内テストされたものの割合
5
要求事項1
要求事項2要求事項3
・・・
要求事項N
テストされた要求事項の数
要求事項の総数
テストケース1-1テストケース1-2
テストケース3
テストケースN
要求仕様書 テスト仕様書
✕
NN-1
網羅性基準:コードカバレッジ
単体テスト指標
命令網羅 C0
分岐網羅 C1
条件網羅
実行命令文のうち,テストで実行されたものの総数実行命令文の総数
分岐のうち,テストで通過したものの総数分岐の総数
条件式のうち,テストでしたものの総数条件式の総数
<
<>
指標名 測定方法
a=0 or b=0a=0 b=0
真 偽
偽 偽
a=0 b=0
真 偽
偽 真
分岐網羅 条件網羅
真偽はすべて評価でも,パスはyのみ
パスはyとnを通るでもbの真は未評価
y
n
6
網羅性基準:コードカバレッジ
結合テスト指標
関数実行網羅 S0
関数呼出し網羅 S1
関数のうち,テストで実行されたものの総数関数/手続きの総数
関数呼出しのうち,テストで実行されたものの総数関数/手続き呼出しの総数
指標名 測定方法
関数A
関数B
関数D
関数C
関数A
関数B
関数D
関数C
S0=100%S1=75%
S0=100%S1=100%
実行された関数に注目
関数呼び出し口に注目
7
テスト妥当性評価:欠陥除去基準
発見した欠陥数に基づくもの
欠陥除去基準: テストによって,「どれだけ欠陥が除去が残っているか」をみる基準
欠陥発見のプロセスに基づくもの
8
欠陥除去基準: 発見した欠陥数に基づくもの
総欠陥数を,発見した欠陥数を推定する
Aが検出した欠陥数
AとBの両方で検出された欠陥数
テストセットA
テストセットB
テストセットA 埋込欠陥数
Aが検出した埋込欠陥数
欠陥総数(推定値)
埋め込み方式
非埋め込み方式 独立した2つのテストケースでテストを実施.検出した結果の数から推定する
=Aが検出した総欠陥数
×
2/6*9=27
あらかじめ欠陥を埋め込んでおき,あるテストケースで検出した欠陥の数から推定する
埋め込んだ欠陥
Capture & Re-capture法
欠陥総数(推定値)
Bが検出した欠陥数×
=6
3
10
9*13/3=399
欠陥除去基準:欠陥発見のプロセスに基づくもの
欠陥数の検出実績を,モデルで外挿し,総欠陥数を推定する
信頼性成長曲線モデル:欠陥がテスト時間に対してどのように累積し収束するかを示す数式モデルゴンペルツ,ロジスティクス曲線などがある.
欠陥累積数
実測値
K: 総欠陥数(推定値)
テスト終了日(予測)
テスト終了基準
テスト時間(あるいはテストケース実施数)
予測値(成長曲線モデル)
目標検出件数K‘残存欠陥密度
0.04件/kL
ゴンペルツ曲線
E
t
Eとtの実績から,K,a,bを推定する.式を変形(両辺を微分,Kを消し込んで両辺の対数をとると,1次式になり回帰分析ができる)
𝐷𝐷 = log𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑
�1𝑑𝑑
𝑑𝑑 = 𝐾𝐾 � 𝑎𝑎𝒃𝒃𝒕𝒕
𝐴𝐴 = log 𝑏𝑏
𝐵𝐵 = log(log 𝑎𝑎 � log 𝑏𝑏)
𝐷𝐷 = 𝐴𝐴𝑑𝑑 + 𝐵𝐵
10
ソフトウェア品質
• 品質とは何か?
• 顧客に「いい品質のソフトウェアを作ってくれ」と言われたら,どう考えるべきか?
11
例えば・・・ 欠陥が少ないこと 顧客のニーズにあっていること 使いやすいこと
クイズ : 品質の善し悪し
1212
どちらのドレスの品質がよい?A B
① Aがよい。② Bがよい。③ 差異はない。
当たり前品質:・仕様通り(寸法、仕立て)・キズやシミがない
魅力品質:・ユーザの要求に適合(使い方にあっている、デザイン、質感がよい)
③「品質」に差異はない
でもそれでよいか?
当たり前品質だけでは差別化できない
システムとソフトウェアの品質の定義
13
「ソフトウェアの品質」には国際標準の定義があるISO/IEC 25010 システムとソフトウェア製品の品質モデル
機能適合性
性能効率性
互換性
使用性
信頼性
セキュリティ
保守性
移植性
機能完全性、機能正確性、機能適切性
時間効率性、資源効率性、容量満足性
共存性、相互運用性
適切度認識性、習得性、運用操作性、ユーザエラー防止性、ユーザインタフェース快美性
成熟性、可用性、障害許容性、回復性
機密性、インテグリティ、否認防止性、責任追跡性、真正性
モジュール性、再利用性、解析性、修正性、試験性
適応性、設置性、置換性
下線: 当たり前品質に相当
システム例で品質を考える
• システムが異なれば,重要な「品質」も異なる.
• 以下のシステムを例に,各品質特性・副特性を考えてみよう。
① シューティングゲーム(スマホアプリ)
② インターネットショッピング
③ 自動車のエンジン制御ユニット
④ 鉄道運行制御システム(線路等施設と列車の状態把握,緊急停車を含む運行指示)
• 次ページ以降,重要な品質副特性について評価– ◎とても重要、○重要、– △それほど重要でない、– ×考えなくてよい
14
品質特性/副特性: 機能適合性
15
■ 機能完全性(定義された)利用者の目的を果たす上で,必要な機能が揃っているか
■ 機能正確性機能が(求められる精度で)正確である
■ 機能適切性機能がニーズに適合しているか(業務に適切に利用できるか)
機能適合性 ①Game
②Shop
③自エ
④鉄道
△ ○ ○ ◎
◎ ◎ ◎ ◎
× △ ◎ ◎
品質特性/副特性: 性能効率性・互換性
16
■ 時間効率性応答時間: 入力に対する応答の速さ処理時間: 処理にかかる時間スループット: 単位時間あたりの処理量
性能効率性
■ 相互運用性つながる他のシステムと適切に情報交換できる度合い
■ 共存性他のシステムに(から)相互に妨害することなく機能できる
互換性
①Game
②Shop
③自エ
④鉄道
◎ ○ × ○
○ × ◎ ○
× ◎ × ×
× ○ × ○
× ○ × ×
品質特性/副特性: 使用性
17
■ 習得性時間をかけずに自然と習得できるヘルプ,マニュアル等の習得手段がある
■ 運用操作性操作や表示に一貫性があり,操作の入力負担が小さい
■ ユーザエラー防止性利用者が入力を間違わないようにガードしたり,間違えた時に訂正しやすい
■ ユーザインタフェース快美性見栄えや対話の快適性に対する満足度
使用性 ①Game
②Shop
③自エ
④鉄道
◎ ○ × ×
○ ○ × △
× △ × ○
○ ◎ × ◎
× ◎ × ◎
品質特性/副特性: 信頼性
18
■ 成熟性システムが十分にテストされ,または実運用で使い込まれ,故障しない
■ 可用性システムが利用可能な状態にある程度(システム稼働率)
■ 障害許容性障害にもかかわらず,システムのサービスを何らかの内容で継続できる能力
信頼性 ①Game
②Shop
③自エ
④鉄道
○ ○ ◎ ◎
× △ × ◎
× △ ◎ ◎
品質特性/副特性: セキュリティ
19
■ 機密性アクセス権限の逸脱がないように管理する能力
■ インテグリティデータに対する改ざんを防止する能力
セキュリティ ①Game
②Shop
③自エ
④鉄道
× ◎ × ○
× ◎ ○ ◎
品質特性/副特性: 保守性・移植性
20
■ 解析性不具合などに対する原因究明が容易
■ 試験性ある機能やシステム構成要素が的確にテストできるように構成されているか
保守性
■ 適応性運用環境が多様あるいは変化するとき追随できる度合い
■ 設置性可動環境にインストール/アンインストール容易な度合い
移植性
①Game
②Shop
③自エ
④鉄道
× ○ × ○
○ ○ ○ ◎
◎ ○ ◎ ◎
△ ○ ○ △
ISO/IEC 25000 (SQuaRE)シリーズ
21
品質モデル部門25010 システムとソフトウェア品質モデル(改訂準備中)25011 ITサービス品質モデル25012 データ品質モデル
品質要求部門25030 品質要求(改訂作業中)
品質評価部門25040 品質評価基本概念25041 品質評価のプロセス
品質管理部門25000 基本概念と用語25001 計画と管理
品質測定部門25020 品質測定の基本概念(改訂作業中)25021 品質測定要素25022 利用時品質測定量25023 製品品質測定量25024 データ品質測定量
システムとソフトウェア品質に関する国際規格
品質を標準化する目的: 品質評価の客観性確保
• 利用者/取得者
– 候補製品を比較選定する
• 開発者
– 開発した成果物が要求を満足しているかを確認する
• 独立評価者
– 第三者が利用者の立場で客観評価を行う
22
品質を標準化する必要性
• 品質要求に対する合意基盤の確立
→ 要求を出す側と受ける側の共通理解の促進
• 評価の客観性、反復性、定量性の確保
→ 結果の信頼性、信ぴょう性の保証
• 受入・選定の拠り所となる評価方法、基準の設定
→ 評価結果の解釈の一貫性の保証
23
品質要求の定量化の考え方
24
測定量(Measure)
測定法(Measurement Method)
品質特性/副特性
測定対象ソフトウェア(Target Entity)
目標値(Target Value)
尺度(Scale)
例) 残存欠陥密度例) 信頼性/成熟性潜在欠陥数を抑える
例) 成長曲線を使い,総欠陥数を推定し,累積欠陥数を引いて,残存欠陥数を推定、コード規模で割る
例) 0.01件/kL
例) 許容範囲=0.008~0.02件/kL
• 品質要求は,定量化しないと,あいまい(検証不可能)
潜在する欠陥数
属性(Property)
成熟性要求: 潜在欠陥数を抑制する測定量: 残存欠陥密度測定法: 成長曲線による推定等
(→次ぺージ)目標: 0.01件/kL尺度: 許容範囲=0.008~0.02kL
情報ニーズ
定量化
評価基準
• 対象ソフトウェアの品質要求を,測定量を使って定量的に定義 測定量は,測定法により計算する. 品質要求は,測定量の目標値と尺度
(許容範囲)により表現する.
測定量の仕組み
25
品質測定量
算式
品質測定要素 品質測定要素
測定方法 測定方法
属性 属性
測定対象 測定対象
残存欠陥密度 [件/kL]
規模
ソースコードテスト(テスト仕様書)
品質測定要素
測定方法
属性
測定対象
実行プログラム
検出欠陥数テスト消化数
測定法
測定対象ソフトウェア
情報ニーズ潜在する欠陥数(密度)
測定量の仕組み
26
品質測定量
算式
品質測定要素 品質測定要素
測定方法 測定方法
属性 属性
測定対象 測定対象
コード行数
残存欠陥密度 [件/kL]
ソースコードの行数をコメント抜きでカウント
規模
ソースコードテスト(テスト仕様書)
品質測定要素
測定方法
属性
測定対象
実行プログラム
検出欠陥数テスト消化数
テスト実施日単位に検出欠陥数をカウント
テスト実施日単位に実施したテストケース数をカウント
テスト消化数+日付
検出欠陥数+日付
①成長曲線により欠陥総数を推定②残存欠陥数=欠陥総数-累積検出欠陥数③残存欠陥密度=残存欠陥数/コード行数
• 測定対象の属性を「測定方法」により測定する→品質測定要素• 品質測定要素から、「算式」を使って、品質測定量を計算する
測定尺度と評価
27
目標範囲内
最小限で受入可
受入不可
要求を超過(過剰品質)
0.0200.025
0.008測定値 満足
不満足
設定水準測定尺度
残存欠陥密度
MTBF (mean time between failures) 不満足
成熟性評価品質総合評価
(assess-ment)
機能正確性評価
80点
95点
合格
品質特性別評価(重み付け)
測定値評定(rating)
• 測定値は、設定された水準を用いて、満足/不満足を評定する• 評定結果に基づき、品質特性別評価、品質総合評価と進む
まとめ
• テストの妥当性は,網羅性基準,欠陥除去基準,運用的基準の3つの面から評価する必要がある.
• 品質には,当たり前品質と魅力品質がある.
• ISO/IEC 25000(SQuaRE)シリーズは,システムとソフトウェアの品質に関する国際規格である.
• 品質モデル: 8個の品質特性– 機能適合性,性能効率性,互換性,使用性,信頼性,セキュリティ,保守性,移植性
– 品質特性の下に,品質副特性がある。
• 品質評価には,測定量を用いる.– 測定量は,測定法,目標値,尺度がある.
– 測定量を用いて,品質要求を定義する.
28
課題2 品質要求の定義
• P14の4つのシステムのいずれかを対象とする.
• 対象システムについて,重要な品質副特性を選択し,例のように要求定義をせよ。– 測定量、測定法は自作でも、調査したものでもよい
– 目標と尺度は自分の基準でよい。単位を間違えないように
7/18(火) 締め切り29
対象システム: ①シューティングゲーム
品質要求: 潜在欠陥数を抑制する(成熟性)
測定量: 残存欠陥密度 測定法
品質測定要素と測定方法(基礎データ)1) テスト消化数+日付
テスト実施日単位に実施したテストケース数をカウント
2) 検出欠陥数+日付テスト実施日単位に検出欠陥数をカウント
3) コード行数ソースコードの行数をコメント抜きでカウント
算法(基礎データからの計算方法)①成長曲線により欠陥総数を推定②残存欠陥数=欠陥総数-累積検出欠陥数③残存欠陥密度=残存欠陥数/コード行数
目標: 0.01件/kL 尺度: 許容範囲=0.008~0.02kL
例)