軟件開發方法對軟件的可靠性也有重要影響。
目前的軟件開發方法主要有Parnas方法、Yourdon方法、面向數據結構的Jackson方法和Warnier方法、PSL/PSA方法、原型化方法、面向對象方法、可視化方法、ICASE方法、瑞理開發方法等,其他還有BSP方法、CSF方法等。這里特別要提一下的是Parnas方法。
Parnas方法是最早的軟件開發方法,是Parnas 在1972年提出來的,基本思想是在概要設計時預先估計未來可能發生變化,提出了信息隱藏的原則以提高軟件的可靠性和可維護性。
在設計中要求先列出將來可能要變化的因素,在劃分模塊時將一些可能發生變化的因素隱含在某個模塊的內部,使其他模塊與此無關,這樣就提高了軟件的可維護性,避免了錯誤的蔓延,也就提高了軟件的可靠性。還提出了提高可靠性的措施:
(1)考慮到硬件有可能出故障,接近硬件的模塊要對硬件行為進行檢查,及時發現錯誤。
(2)考慮到操作人員有可能失誤,輸入模塊對輸入數據進行合法性檢查,是否合法、越權,及時糾錯。
(3)考慮到軟件本身有可能失誤,加強模塊間檢查,防止錯誤蔓延。
對瑞理方法可能許多人還不熟悉,這里簡要介紹一下。
瑞理(Rational)模式是美國瑞理軟件工程公司發展出來的,其模式是:
面向對象;
螺旋式上升;
管理與控制;
高度自動化;
以管理觀點和技術觀點把軟件生命周期劃分為起始、規劃、建構、轉移、進化五個階段,也可把這五個階段歸并為研究時期(起始和規劃)和生產時期(建構和轉移),最后是維護時期(進化),特別適合對高風險部分及變動需求的處理。
在以上的眾多方法中,可視化方法主要用于與圖形有關的應用,目前的可視化開發工具只能提供用戶界面的可視化開發,對一些不需要復雜圖形界面的應用不必使用這種方法;ICASE 技術還沒有完全成熟,所以可視在方法和ICASE方法最多只能用作輔助方法。面向數據結構的方法、PSL/PSA方法及原型化方法只適合于中小型系統的開發。
面向對象的方法便于軟件復雜性控制,有利于生產率的提高,符合人類的思維習慣,能自然地表達現實世界的實體和問題,具有一種自然的模型化能力,達到從問題空間到解空間的較為直接自然的映射。
在面向對象的方法中,由于大量使用具有高可靠性的庫,其可靠性也就有了保證,用面向對象的方法也利于實現軟件重用。
所以建議采用面向對象的方法,借鑒Parnas和瑞理模式的思想,在開發過程中再結合使用其他方法,吸取其它方法的優點。
3.軟件重用
最大限度地重用現有的成熟軟件,不僅能縮短開發周期,提高開發效率,也能提高軟件的可維護性和可靠性。因為現有的成熟軟件,已經過嚴格的運行檢測,大量的錯誤已在開發、運行和維護過程中排除,應該是比較可靠的。在項目規劃開始階段就要把軟件重用列入工作中不可缺少的一部分,作為提高可靠性的一種必要手段。
軟件重用不僅僅是指軟件本身,也可以是軟件的開發思想方法、文檔,甚至環境、數據等,包括三個方面內容的重用:
(1)開發過程重用,指開發規范、各種開發方法、工具和標準等。
(2)軟件構件重用,指文檔、程序和數據等。
(3)知識重用,如相關領域專業知識的重用。
一般用的比較多的是軟件構件重用。
軟件重用的過程如下:候選,選擇,資格,分類和存儲,查找和檢索。在選擇可重用構件時,一定要有嚴格的選擇標準,可重用的構件必須是經過嚴格測試的、甚至是經過可靠性和正確性證明的構件,應模塊化(實現單一、的完整的功能)、結構清晰(可讀、可理解、規模適當),且有高度可適應性。
4.使用開發管理工具
開發一個大的軟件系統,離不開開發管理工具,作為一個項目管理員,僅僅靠人來管理是不夠的,需要有開發管理工具來輔助解決開發過程中遇到的各種各樣的問題,以提高開發效率和產品質量。
如Intersolv公司的PVCS軟件開發管理工具,在美國市場占有率已超過70%,使用PVCS可以帶來不少好處:規范開發過程,縮短開發周期,減少開發成本,降低項目投資風險;自動創造完整的文檔,便于軟件維護;管理軟件多重版本;管理和追蹤開發過程中危及軟件質量和影響開發周期的缺陷和變化,便于軟件重用,避免數據丟失,也便于開發人員的交流,對提高軟件可靠性,保證質量有很大作用。
在我國,開發管理工具并沒有得到有效地使用,許多軟件公司還停留在人工管理階段,所開發的軟件質量不會很高。
人的管理比較困難,在保證開發人員素質的同時,要保持人員的穩定性,盡可能避免人員的經常流動。人員流動影響了軟件的質量,工作連續性難保證,繼承者不可能對情況了解很清楚等,也可能影響工作進程等。PVCS也提供了適當的人員管理方法。
5.加強測試
軟件開發前期各階段完成之后,為進一步提高可靠性,只有通過加強測試來實現了。為最大限度地除去軟件中的差錯,改進軟件的可靠性,就要對軟件進行完備測試。要對一個大的軟件系統進行完備測試是不可能的,所以要確定一個最小測試數和最大測試數,前者是技術性的決策,后者管理性的決策,在實際過程中要確定一個測試數量的下界??偟膩碚f,要在可能的情況下,進行盡可能完備的測試。
誰來做測試呢?一般說來,用戶不大可能來進行模塊測試,模塊測試應該由最初編寫代碼的程序員來進行,要在他們之間交換程序進行模塊測試,自己設計的程序自己測試一般都達不到好的效果。
測試前要確定測試標準、規范,測試過程中要建立完整的測試文檔,把軟件置于配置控制下,用形式化的步驟去改變它,保證任何錯誤及對錯誤的動作都能及時歸檔。
測試規范包括以下三類文檔:
(1)測試設計規范:詳細描述測試方法,規定該設計及其有關測試所包括的特性。還應規定完成測試所需的測試用例和測試規程,規定特性的通過/失敗判定準則。
(2)測試用例規范:列出用于輸入的具體值及預期輸出結果。規定在使用具體測試用例時對測試規程的各種限制。
原文轉自:http://www.uml.org.cn/rjzl/200612011.htm