劉竹旺 周松
[摘 要]基于構件的軟件開發方法是在吸取了已有軟件開發方法經驗基礎上的一種全新的、高效的開發方法,采用可復用的軟件構件進行開發,能夠有效地提高軟件開發的質量和效率。本文主要分析基于構件化設計的軟件可靠性。
[關鍵詞]構件化 軟件 可靠性
隨著計算機技術的飛速發展,軟件已經逐漸應用到各種安全關鍵領域,例如航空航天、核電、國防、工業控制、交通運輸、金融等。這類軟件通常都規模龐大、結構復雜,對可靠性和安全性有著極高的要求。長期以來,由于此類系統的軟件失效和安全性問題,造成生命財產損失,甚至給環境造成嚴重災難的事例層出不窮,這就使得軟件的可靠性分析、評估和保障變得尤其重要。
一、軟件構件概念
隨著軟件工程的發展,軟件復用技術逐漸成為研究熱點。基于構件的軟件開發(Component-Based Software Development,CBSD)方法 ,改變了傳統的基于“數據結構+算法”的開發模式,提出了基于“構件開發+構件組裝”的開發新思路,使已有成果得以復用,因而得到了廣大開發人員的推崇并迅速發展。軟件構件,是指軟件系統中具有相對獨立功能、可以明確辨識、接口由契約指定、和語境有明顯依賴關系、可獨立部署、可組裝的軟件實體。它由接口、實現和部署三大要素構成。其中,接口主要解釋構件所能完成的功能,實現是讓此構件運作的代碼,部署是構件的存在形式,即為二進制代碼或可執行文件。
基于構件的軟件開發具有適用范圍廣、重用效率高的特點,其效率的發揮需要大量標準的構件群來支持,這就需要標準統一的構件封裝技術規格和應用于具體領域的大量構件。這兩個方面現在是構件化發展的阻礙。構件封裝技術規格的統一需要資深軟件公司和國際性的軟件機構深化合作、統籌兼顧來制定實用、有效、科學的標準。領域構件群的創建需要學術組織和有責任有遠見的軟件公司加大投入,深化構件化軟件開發的應用,在業界形成模范作用。而中小型軟件公司應該建立自己的構件庫,在開發中盡量應用構件化軟件開發方法,總結經驗,為構件化時代的到來和繁盛做準備。有了統一的規格標準和各個領域豐富的構件群,那么構件化的開發將極大提高軟件開發效率,解決軟件危機。
二、基于構件的軟件開發過程
基于構件的開發,是指將軟件系統的開發過程看作是在體系結構的指導下,用構件組裝方式開發軟件系統的軟件開發方法。基于構件的軟件開發過程可以概括為以下四個階段:
1.問題域分析與建模( 問題分析階段)
針對問題描述,通過領域工程的思想,進行問題域分析與建模。分析階段的主要任務是通過對問題域的抽象,區分出共性問題和變性問題,分析的結果是將問題域進行形式化表示,即建立問題域模型,可采用UML模型來表示。
2.求解域模型設計( 構件設計階段)
根據對問題域的分析與建模,可得出求解域模型,即系統的體系結構及系統所需構件。對于已存在的、可復用的構件,分析其接口是否需要擴展;對于需要新增的構件,通過合理的分析及設計,保證構件滿足求解域的要求,并盡可能保構件的可復用性。
3.構件開發及組裝( 系統開發階段)
從構件庫中選取滿足需要的構件,擴展其接口使之應用于當前工程;對新開發的軟件構件,不僅應該使其應用于當前工程,還要將其存儲到構件庫中,以便復用。通過組裝得到完整的系統,經測試后可發布運行。
4.應用系統演化( 系統維護階段)
基于構件的應用系統的演化實際上是構件升級、替換和擴充的過程,針對用戶需求或實際運行效果進行軟件的調整,以適應新的環境要求。
三、基于構件化設計的軟件可靠性分析
1.可靠性分析基礎
軟件可靠性是指軟件在規定的時間內軟件不失效的概率。構件可以自行開發,可以購買商業構件,也可以從相關領域構件庫中獲取。雖然獲取的構件一般都有相應的可靠性說明,但同一構件在不同的軟件系統中所處狀態不同,其可靠性也需要進行重新分析。在基于敏捷開發的構件化軟件實踐中,每發布一次軟件版本,都是以構件測試為基礎,用戶必須對各構件進行使用性測試以發現軟件失效。小規模、多版本發布,使用戶可以在早期發現軟件中與自己所提的需求不一致的地方,用戶可以持續地參與到測試中來。用戶通過現場使用并快速反饋,為敏捷團隊修正開發方向提供依據,可以說迭代增量開發、持續集成、小版本發布這些實踐都是自適應的。對當前版本進行現場使用測試,獲得失效數據(測試成功與失敗次數),可獲得該版本可靠性的點估計。
2.可靠性分析
首先,它可以便于設計開發者之間相互理解和交流。只要系統是使用某種風格或模式的規范方法來組織,則別的設計者就很容易理解系統的體系結構。譬如某人把系統描述為“管道—過濾器”模式,則他不必給出細節,人們立刻明白系統是如何組織起來的,并在腦海中清晰地得到此系統的圖像;
第二,使用軟件體系結構促進了設計的復用。許多經過實踐證明的軟件結構可以用來解決許多相似類型的新問題,這對新軟件的開發帶來了便利和質量保證;
第三,使用軟件體系結構也促進了顯著的代碼復用。對于體系結構中的不變部分,不同的系統可以共同應用同一段實現代碼,從而提高了該段代碼的應用價值;
第四,使用軟件體系結構的標準風格和模式有利于支持互操作性,例如像CORBA這種面向對象的結構和基于事件機制的工具集成。
總之,使用軟件體系結構的模式有利于軟件開發者之間的交流和理解,有利于提高軟件設計實施的效率和質量。軟件體系結構的觀念能否成熟到使軟件設計開發發生根本性改變,關鍵在于各類體系結構、設計模式的完善和系統化。軟件體系結構設計中很重要的成就之一就是抽象出了許多常見的軟件系統構建模式。這些構建模式是軟件系統設計人員多年工作經驗的總結,它們將為軟件設計的系統分析和設計工作提供豐富的參考資料。
軟件體系結構的選擇往往成為一個系統設計成敗的關鍵。人們在開發研制軟件的長期實踐中積累總結了許多成功的經驗。不同類型的功能需要不同類型的構件實現。
參考文獻:
[1]楊芙清,梅宏. 構件化軟件設計與實現[M]. 北京 :清華大學出版社,2008.
[2]許幀. 基于構件的軟件開發方法及實現[J]. 軟件導刊,2009(11):17-19.
[3]張馳. 軟件構件匹配技術研究[J]. 微電子學與計算機,2009(3):109-112.