• 検索結果がありません。

ファイル TEF東海メトリクス勉強会 Summary8 1 8 8 8

N/A
N/A
Protected

Academic year: 2018

シェア "ファイル TEF東海メトリクス勉強会 Summary8 1 8 8 8"

Copied!
24
0
0

読み込み中.... (全文を見る)

全文

(1)

1

第 8 章

ソフトウェアの信頼性測定と

予測

2011 年 12 月 3 日

らち

TEF 東海メトリクス勉強会 第 9 回

たまに良い結果をもたらすモデルはあるが、普遍的にひどいモデルも多い。 常に性格であると信頼できるモデルなど存在しない。 ステファン・カン

(2)

2

8.1 なぜソフトウェアの信頼性の研究と予測

が必要か

私「すべての欠陥の99%を削減することは無理な目標であ る」と上司も納得。しかし上司は、

上司「最初の 6 ヶ月間の稼動で99.99%の信頼度が欲し い」という。

さて、あなたはどう答え、何をするべきだろうか?

私「だから、さっき欠陥の99%を削減することは無理だから

、 6 ヶ月間ノントラブルで動かすことはできない!」

上司「では、どうしたら 6 ヶ月間ノントラブルで稼動させる ことができるか、考えて欲しい」

私「・・・」

みなさんは、いかがでしょうか?

(3)

3

8.2 信頼性とは何か

ソフトウェアの信頼度の定義

「ソフトウェアシステムが所定の環境のもと、特定の期間内 に故障することなく機能する確率である」

ポイントは、

確率:

 絶対的でなく、確率的な現象や予測について述べればよい

故障することなく:

 故障の定義を決めてしまえばよい

        (例:保守員を呼ばなければならないよう な事象)

特定の環境のもと:

 環境を特定してよい (例: OS=XP メモリ = 8 GB )

特定の期間内:

 期間を決めてよい (例: 2 秒間だけ) 

補足: 決めてよい=顧客と合意すればよい

6 ヶ月間の稼動で99.99%の信頼度←故障の定義と環境を決めちゃえばいいね。

(4)

4

8.3 障害と故障

7 章の復習

障害はシステムに存在する欠陥である

故障は運用時に障害箇所が実行されて、要求されたパフ ォーマンスを発揮できない状態である。

欠陥メトリクスは障害を測定する。 信頼性メトリクスは故障を測定する。

つまり、

欠陥のあるコードが実行されなければ。MTBFは無限 大に近づき、ソフトウェアの可用性は100%になる システム起動箇所に欠陥があり、それが必ず実行される 場合は、MTBFは 0 に近づき、可用性も0%になる

補足: MTBF=Mean Time Between Failures

(5)

5

8.4 故障の致命度分類

致命度分類

同じ影響を持つ故障 によって分類する

コストへの影響、システム能力への影響、ユーザへの影響など 最大4~5に分類

電話回線 ( 能力に基づく )

致命度 定義

いかなる通話も処理できない、電話回線網がすべてダ ウン

特定地域のいかなる通話も処理できない。 スイッチ内のいかなる通話も処理できない 不便な運用

ATMネットワーク ( ユーザに基づ く)

致命度 定義:影響を受けるマシ ン数

>1000

100~1000

10~100

<10

ルータ ( ユーザ種別に基づく)

致命度 定義:影響を受けるOS

Win

Mac

Android

Linux

さて、皆さん の製品では?

(6)

6

8.5 故障強度

単位ごとの故障数

単位がシステムにとって自然な単位であること。

でないと、故障強度はユーザにとって意味のないものに なる。

意味のある例:

 飛行機:フライと数毎の墜落数、百マイル毎の墜落数  車:使用年数毎の故障数、1000Km毎の故障数 パソコン:使用年数毎の故障数

 ルータ:連続使用時間数毎の故障数 意味のない例:

 パソコン:メールの発信数ごとの故障数

 ルータ:電源の抜き差し回数ごとの故障数 さて、皆さんの製品では?

(7)

7

8.6 信頼性のコスト

信頼性はタダではない。

実際1%の改善につきそれぞれコストがかかる。 テストやレビューを行うなど開発費用がかかる。

(でもQuality is Free とクロスビーさんは言っている)

次ページから苦手なゾーンに突入。

   ドラえも~ん、なにかいい道具はないの~?

(8)

8

8.6 信頼性のコスト

信頼性のコストモデル

COCOMOⅡ

コスト係数として、ソフトウェア信頼性要求度 (RELY) を使う   RELY : 低 0.82 ~ 標準 1 ~ 高 1.26

マーカスとスターンの可用性指標

R=e-t/MTTF, A=MTTF /(MTTF+MTTR) R=e(A-1)/(A*MTTR)*t

A は可用性、 MTTF は平均故障時間、 MTTR は平均修復時間

シャーの信頼性モデル 工数と信頼性

R=e-kCt/E

この式から投資と信頼性の式を導くと E=-kCt/(lnR)

投資

ワンポイント: MTBF と似ているが、MTBF は修理すればまた利用可能になるようなシステム に適用するのに対し、MTTFは修理不可能なシステムに対して適用する。例えば電球は 1 度切 れるともう使えないので MTTF を適用するが、電気スタンドは電球を取り替えて修理すればま た利用できるので MTBF を適用する。 http://www.atmarkit.co.jp/icd/root/00/77467900.html より引用

(9)

9

8.7 ソフトウェア信頼性理論

信頼性工学の基本的な目的

システムが故障する時期を予測すること。

ソフトウェアの信頼性は、ハードウェアの信頼性と似て いる。

え~、ソフトには腐食も、劣化もないのに~???

確率的に似ている

時間の経過とともに変化し、グラフやモデルで表せる。 つまり確率分布がある。

   確率分布:確率変数のとる値に対し、その値をとる確率の分布状態。

http://www.publickey1.jp/blog/09/post_56.htmlより引用 確率分布のグラフ例です(たぶん)

(10)

10

ひとやすみ

「ソフトウェアの故障時期も確率分布に従う」

  って、うちの会社の人に言うと、絶対こう言うと思 う「欠陥のあるコードが実行されなければ。絶対故障しな い。でもね、システム起動箇所に欠陥があり、それが必 ず実行される場合は、必ず故障する。ソフトウェアの故 障って、1か0の世界なんだよ。」

これに対して皆さんなら、何といいますか?

(11)

11

8.7.1(1) 一様分布

一様分布

例: 5 日以内に故障するソフトウェアがある。

   いつ故障するかはその確率はいつも同じである。    これを時間 t を使い、故障密度関数で表すと

    f(t)=1/5 ・・・ t=1~5     f(t)=0    ・・・ t > 5

0.2

1 2 3 4 5 6 7

0 f(t)

これには特定の状況を説明するには優れているが、 終了の時点がわからないという大きな制限がある。

そこで一般的に使われるのが、次のランダム分布である。

(12)

12

8.7.1(2) ランダム分布

ランダム分布

故障は時間の経過とともに

ランダムに発生する傾向にある。

過去のイベントからは独立している。

時刻tまでに故障しなかった条件における故障の確率が各 時刻について一定( λ )である。指数分布とも呼ばれる。

<ご興味のある方、お読みください> f(t) = λe-λt

λ=1 / MTTF 補説: λ は瞬間故障率(ハザード率ともいう)、MTTFは平均故障時間 故障データに t1 から tn まで n 個の異なる故障時点がある場合は次の式となる。

MTTF = (Σti) / n

もし故障密度関数 f(t) が与えられている場合は、 MTTF は f(t) の「期待値」となり次のようになる。 MTTF = ∫0 tf(t)dt

指数分布に対しては次のようになる。

MTTF = ∫0 t λe-λt dt = 1 / λ         ∫インテグラルと読む

f(t)

t

0 に近づくが 0 にはならない

(13)

13

8.7.1(2) ランダム分布の計算例

あるシステムの部品は定期的に故障し、交換している。こ の様子を 1 ヶ月間追跡したところ、 2,7,8,16,22,31 日に 故障した。さて MTTF はいくつ?

  ((2-1)+(7-2)+(8-7)+(16-8)+(22-16)+(31-22))/6 = 30/6 = 5 日間

あるシステムの故障が発生する時間の長さを追跡すると、 f(1)=10%, f(2)=15%, f(3)=20%, f(4)=25%, f(5)=30%, その他の f(x)= 0% であった。さて MTTF は?

0.1*1 + 0.15*2 + 0.2*3 + 0.25*4 + 0.3*5 = 3.5

指数分布がある。 MTTF は 2 日間。

つまり λ=1/MTTF=1/2=0.5 となり、 f(t)=0.5e-0.5tとなる。 ここで、 10 日目では f(10)= 0.5e-5=0.0033=0.33% となる。 なお、 1 番目の例において 9 日目に故障がまったく発生し なければ、 f(10)=f(2)=0.5e-1=0.18=18% となる。

f(10)=f(2) の意味がわかりません。どなたか教えてくださ い。

0.5e-5

=2.718^- 5*0.5

=0.003371

(14)

14

8.7.2 時間間隔における故障確率

ある 2 つの時点間における故障確率は、 f(t) の曲線の下の面 積になる。つまり、 f(t) の積分である。

  ∫ t2t1 f(t)dt

一様分布の例に対して、 t1 と t2 の間の故障確率は次のとおり。

  ∫ t2t1 0.2dt = 0.2(t2-t1)

例:一様分布における時刻 3 と 4 の間の故障確率は 0.2(4-3)=0.2   20% となる。

指数関数に対して、 t1 と t2 の間の故障確率は次のとおり。  ∫ t2t1 λe-λtdt = e-λt |t2t1 = e-λt1 - e-λt2

例:指数分布における時刻 5 と 6 の間の故障確率は

e-λ*5 - e-λ*6となり λ に依存する。

λ=1 のときの故障確率は 0.004 、 λ=0.1 のときの故障確率は 0.057 である。つまり、時刻 5 と 6 の間の故障確率は λ=0.1 の ときに 5.7% である。したがって、 MTTF=1/0.1=10 となる。

????? どなたか教えてくだ さい。

(15)

15

どうわからないかというと・・・

例:指数分布における時刻 5 と 6 の間の故障確率は

e-λ*5 - e-λ*6となり λ に依存する。

λ=1 のときの故障確率は 0.004 、

λ=0.1 のときの故障確率は 0.057 である。

つまり、時刻 5 と 6 の間の故障確率は λ=0.1 のときに 5. 7% である。

e=2.718 とすると、

e-1*5 - e-1*6=2.718^(1*5)-2.718^(1*6)=-254.8416577 0.004 と大きく違ってるんですけど???

e-0.1*5 - e-0.1*6=2.718^(0.1*5)-2.718^(0.1*6)=-0.173369649 0.057 と大きく違ってるんですけど???

p.216 下 7 行目「2.指数分布における時刻 5 と時刻 6 との間の故障間隔」は「故障確率」の誤植?

(16)

16

8.7.3  F(t): 時刻tまでの故障確率

時刻t 「までの」 故障確率は F(t) と記述する。 F(t) は累積分布関数である。

これに対しf(t)は、確率密度関数である。

一様分布の例では、整数tが5以下の場合に F(t)=0.2t であり、5より大きい t に対しては 0 になる。

         ( 累積だから1になるが正しいので は ?)

指数分布では

F(t)=∫t10 λe-λtdt = e-λt |t10 = 1 - e-λt1

10 0.6

0 t

F(t)

λ = 0.1 のときの F(t)

(17)

17

8.7. 4 R(t) 信頼度関数

システムが時刻tまでに故障しない確率である。だから

、時刻 t までに故障する確率を1から引いた値となる。     R(t)= 1- F(t)

一様分布の例では、

    R(t)= 1- 0,2t となる

指数分布では

    R(t)= 1- (1- e-λt)= e-λt となる

λ=0.1 と仮定すると、 7 日間にわたってシステムが故 障しない確率は、 R(t)= e-0.7 となる

(18)

18

8.7.5 信頼性理論のまとめ

信頼性理論には、以下の3つの基本関数がある。

f(t) = 故障の確率密度関数

F(t) = 時刻tまでの故障確率

R(t) = 時刻tまでの無故障確率

これら3つは以下のように関連づけられる。

F(t) =∫ t0 f(t) dt

f(t) = Σ ( i=1 から t までの) f(i)

R(t) =1- F(t)

(19)

19

8.8 信頼性モデル

これは、製品の信頼性、または製品のリリース後の潜在 欠陥数を見積もるために使われる。

出荷時期の事実に基づいた決定

保守にかかるリソースの計画   リリース後の

    欠陥数と

    欠陥を見つけられる時期・・・(時刻tまでの故障確率 F(t) を使う?)

    要員が修正できる欠陥数   から、見積もる。

(20)

20

8.8.1 モデルの種類

信頼性モデルは欠陥モデルととてもよく似ており、 同じこともある。

信頼性モデルには、静的モデルと動的モデルがある

静的モデルは、プログラムの属性を使って欠陥数を見積もる。 このモデルは一般的に y=f(a,b,c,d, ・・・ ,z) という形をと る。yは欠陥率または欠陥数。

a ~ z は、製品やプロセス、プロジェクト属性である。

静的モデルは、モジュールレベルでうまく機能する。

動的モデルは、統計分布に基づき磁気を見積もる必要がある場 合や、プロジェクトが失敗するかどうかなど、プロジェクトの 対部分でうまく機能する。

あるモデルでは、ライフサイクル全体をもらし、レイリー分布 を利用する。また、テストプロセスや配備プロセスから始まり

、指数分布を使うモデルもある。

(21)

21

8.8.1 モデルの種類

信頼性モデルは、動的モデルである。

これは、バグの発見と修正がノルマであり、システムの 安定性が増しつつあり、したがって信頼度が増しつつあ ることが期待されるときに使われる。

動的モデルにおいて「時間」は重要な意味を持つ。

そのため時間は、意識的に選択され、的確に特定する必 要がある。 1 2 3 4

欠陥数 10 5 3 2

テスト時間 80 40 40 20

CPU 時間 100 20 50 30 故障強度

週ごと 10 5 3 2

テスト時間ご

0.13 0.13 0.08 0.10 CPU 時間ごと 0.10 0.25 0.06 0.07

ここだけ見る と減っている ように見える が・・・

(22)

22

8.8.1 モデルの種類

信頼度成長モデルは、欠陥数と MTTF のいずれについて も基づくことができる。

欠陥数モデルでは、故障強度は時間の経過とともに減少。 MTTF モデルでは、信頼度が向上すると、時間の経過と ともに MTTF が増加。

MTBF = MTTR + MTTF

  (平均故障間隔=平均修復時間+平均故障時間)

(23)

23

8.8.2 残存欠陥数の予測

これは、 7.4 節 7.5 節で詳細に説明した。なので、それ 以外のシンプルなものを説明する。

SEI の成熟度レベルに沿った欠陥数に基づく方法。  確かに組織の成熟度レベルと欠陥数は相関関係があるかも。

過去のデータを使う方法として、欠陥除去率を使う方法。  過去に存在した類似プロジェクトと比較する。

(24)

24

おしまい

参照

関連したドキュメント

DTPAの場合,投与後最初の数分間は,糸球体濾  

最後に要望ですが、A 会員と B 会員は基本的にニーズが違うと思います。特に B 会 員は学童クラブと言われているところだと思うので、時間は

タービンブレード側ファツリー部 は、運転時の熱応力及び過給機の 回転による遠心力により経年的な

・少なくとも 1 か月間に 1 回以上、1 週間に 1

燃料・火力事業等では、JERA の企業価値向上に向け株主としてのガバナンスをよ り一層効果的なものとするとともに、2023 年度に年間 1,000 億円以上の

LF/HF の変化である。本研究で はキャンプの日数が経過するほど 快眠度指数が上昇し、1日目と4 日目を比較すると 9.3 点の差があ った。

 映画「Time Sick」は主人公の高校生ら が、子どものころに比べ、時間があっという間

近年は人がサルを追い払うこと は少なく、次第に個体数が増える と同時に、分裂によって群れの数