2009年1月5日 星期一

筆記:軟體品質協會論壇文章。何謂軟體可靠度?

請問何謂軟體可靠度 ? 與硬體可靠度有何差別 ?
應依據何種標準發展與測試 ?
是否需納入 FCA 與 PCA ?
應如何在需求文件中展述有關軟體可靠度的需求 ?
應如何在設計文件中展述有關軟體可靠度的 Traceability ?

因此,個人就不揣淺陋,簡單表達個人意見如下:

首先,我們要瞭解可靠度是產品眾多品質屬性中的一項,它屬於產品的非功能性需求。所以要瞭解可靠度就如同要瞭解其它的需求一樣要「由上往下」的去思考,才能掌握其要義。

吾 人之所以需要一件產品或一個系統,就是要它來協助我們處理某一事務或問題,也就是產品就是我賴以處理問題的工具。然而天下任何東西都不完美的,都有其極 限,都有其可能失效的時候,而我們使用的工具亦然。當我們想要使用它時,若它不能為我們所用,那麼我們必然會蒙受損失。所以於經營管理上,我們有必要於使 用工具前瞭解其可靠的程度。此一可靠程度的表達方式,在以往硬體為主的情況下,通常用以下三個數字來表達。

1. 平均失效時間MTTF(mean time to failure)
2. 平均修復時間MTTR(meat time to repair)
3. 可用性(Availability) = MTTF / (MTTF + MTTR) x 100%

因 為有了這樣的數據,我們才能進一步決定,再其失效時間內,我們要如何處理我們原有的問題?如果有替代的方式處理時,它的成本為何?如果沒有替代方式處理時 所造成的損失為何?我們有沒有可能再提昇產品的可用性?可提高至何種程度?其成本又為何?…諸如此類的問題,只有再有了可靠度的相關數據後,才有可能做出 有根據的理性決定。

在硬體的世界中,產品之所以會失效(撇開設計與製造的因素),主要有兩大原因,一為磨損,一為材料疲勞,都是自然界物 理特性所使然。所以,在硬體系統的領域常使用兩個(或以上)相同的元件互為備援,來提昇系統的可靠度。譬如:系統原本的可靠度為70%,若同時使用個原本 的系統互為備援作為一個新的系統。那麼這個新系統的可靠度就可提昇到 91% ( 1- (1 - 70%) x (1 - 70%))。

然 而在軟體的領域中,沒有磨損與材料疲勞的問題。造成軟體不能如預期般的運轉,是因為需求規格(SRS)、設計說明(SDD)或程式中有缺陷(fault) (或bug)。並於使用時程式執行時遇到了這些缺陷,才使得軟體失效(failure)。因此,不同的使用者對相同的軟體,可能對該軟體的可靠度有完全不 同的感受。另外,軟體提抍可靠度的方式與硬體也截然不同。在對軟體可靠度有嚴苛的要求環境中(通常是要藉由軟體可靠度確保產品的安全性),譬如:飛航管制 系統…等,經常再不容出錯的地方以相同的需求規格,不同設計的模組,做平行的運算,只有當兩組(或更多)模組結果相同時,才往下繼續執行其它的步驟。否 則,將不執行這些步驟。藉此來確保軟體的可靠度與安全性。

有了以上的基本認識,現在來看軟體可靠度的定義。有人將它定義成:the probability of a software system to perform its specified functions correctly over a long period of time or for different input sets under the usage environments similar to that of its target customers. 於分析軟體可靠度時,要準備 operation profiles 作為模擬客戶使用的輸入資料(個人認為這是在執行上比較困難的部份)。也要於數種可靠度模型(model)中選用一種,以做為分析軟體可靠度的方法。有關 可靠度模型,我不完全瞭解,也就不多做介紹了。

現在,先就可靠度本身做一個總結,後面再對衍生的問題加以說明。可靠度是對產品的一項品質 屬性所做的客觀描述,只要它是依照與客戶所約定的方式進行,分析的過程也沒有錯誤的話,不論其最後的數字高或低,可靠度本身都不會有問題。可靠度有沒有達 到目標或要求,以及如何達到可靠度目標才是問題。不過這個問題,不是可靠度分析可以處理的。另外,可靠度也不能協助我們定位某一次失效的原因,當然也就不 能用它來判斷,出問題的是硬體或軟體。

至於,應依據何種標準發展與測試 ?個人不知道。

另外,FCA(產品的功能型態稽 核 / Functional Configuration Audit)是確保受稽核的軟體項目與它的規格一致。PCA(實體型態稽核 / Physical Configuration Audit)是確保設計與參考文件和建置出來的軟體產品實體是一致的。因此,從其目的上來看兩者都與可靠度似乎是沒有關連的。

應如何在需求文件中展述有關軟體可靠度的需求?我想這最主要要看開發團隊執行軟體可靠度分析的能力,以及與客戶協商的結果(採用什麼樣的可靠度模式)而定。

最後有關可靠度的 Traceability 的問題,個人以為與管理其它需求規格的追溯方式沒有什麼不同。

希望以上的說明,能對各位有所幫助。

周茂松 敬上

原文網址:http://www.csqa.org.tw/portal/modules/newbb/viewtopic.php?topic_id=388&forum=1&post_id=976#forumpost976