摘 要:自21世紀初以來,由于信息技術的迅猛發展,舊有的軟件危機尚未徹底解決,新形勢下的危機已經頻發。本文主要介紹軟件危機的基本概況和早期階段的主要表現,并且對軟件開發規律有了進一步的認識。
關鍵詞:軟件危機;軟件開發規律;CMM
1 軟件危機概述
1.1 軟件危機新問題
軟件危機是指軟件生產方式過于落后,但是計算機軟件需求迅速增長,兩者之間造成難以調和的矛盾,從而導致軟件在開發與維護過程中出現一系列嚴重問題的現象。
1.2 早期軟件危機的表現
因為軟件產品是人為生產的產品,只要是由人做的工作都不會是完美無缺的,總會或多或少的存在一些錯誤。既然錯誤是必然存在的,我們目前的問題是如何避免錯誤的產生和消除已經產生的錯誤。
早期軟件危機主要表現在:(1)開發費用和進度失控,為了趕進度或壓成本不得不采用一些權宜之計,這樣又往往嚴重損害軟件產品質量。(2)軟件可靠性差,盡管耗費了大量的人力物力,系統的正確性越來越難以保證。(3)軟件難以維護,很多程序缺乏相應的文檔資料,程序中的錯誤難以定位,難以改正。
2 軟件開發規律認識
2.1 軟件開發本質
軟件開發規律是所有軟件開發人員不得不研究和解決的問題,尤其是中國的軟件從業者不僅要研究一般的軟件開發規律,還要研究具有中國特色的軟件開發規律和中國商業軟件的開發規律。
軟件開發的本質其實就是一種映射,具體的說是要實現“高層概念”到“低層概念”的映射,從“高層處理邏輯”到“低層處理邏輯”的映射。特別是對于大型軟件系統的開發,這一映射是相當復雜的,涉及相關人員、使用技術、采取的途徑等等。
軟件工程活動是生產一個最終滿足用戶的需求且達到工程目標的軟件產品所需要的步驟,包括需求、設計、實現、確認、支持等活動。需求是在一個抽象層上建立系統模型的活動。設計活動定義實現需求規約所需的結構,該活動的主要產品包括軟件體系結構、詳細的處理算法。實現活動是設計規約到代碼轉換的活動。驗證確認是一項評估活動,貫穿于整個開發過程,包括動態分析和靜態分析。
2.2 軟件過程管理
在實際的項目質量管理中,質量管理總是圍繞著質量保證過程和質量控制過程兩方面。這兩個過程相互作用,在實際應用中可能發生交叉。軟件質量保證的目的是使軟件過程對于管理人員來說是可見的。它通過對軟件產品和活動進行評審和審計來驗證軟件是合乎標準的。軟件質量保證組在項目開始時就一起參與建立計劃、標準和過程。軟件質量控制主要為發現和消除軟件產品的缺陷。對于高質量的軟件來講,最終產品應該盡可能達到零缺陷。而軟件開發是一個以人為中心的活動,所以缺陷是不可避免。要想交付一個高質量的軟件,消除缺陷的活動就變得很重要。缺陷消除是通過評審和測試來實現。潛在的缺陷越大,用來消除它所花的費用越高。因此成熟的軟件開發過程在每一個可能會引入潛在缺陷的階段完成之后會展開質量控制活動。這些活動包括:需求評審、設計評審、代碼走查、單元測試、集成測試、系統測試和驗收測試等。
CMM對實施軟件過程的必要條件做了明確定義,劃分了5個成熟度等級:
⑴初始級。在初始級,企業一般不具備穩定的軟件開發與維護的環境。處于這一等級的企業,成功與否在很大程度上決定于有杰出的項目經理與經驗豐富的開發團隊,項目成功與否非常不確定。
⑵可重復級。這一級,建立了管理軟件項目的政策,以及為貫徹執行這些政策而定的措施。通過這一級,企業實現了過程的規范化、穩定化。
⑶定義級。這一級,面對整個企業的軟件開發與維護過程的文件將被制訂出來。這些過程是集成到一個協調的整體。項目小組要根據該項目的特點去改編企業的標準軟件過程來制訂出為本項目而定義的過程。
⑷定量管理級。這一級,企業對產品與過程建立起定量的質量目標,同時在過程中加入規定的很清楚的連續的度量。
⑸優化級。這個等級中企業會把重點放在對過程的不斷優化。企業會主動去找出過程的弱點和長處,達到預防缺陷的目標。項目小組分析引起缺陷的原因,對過程進行評鑒與改進,以便預防已發生的缺陷再度發生。
3 結語
軟件危機曾經是計算機領域最熱門的話題,為了解決這場危機,眾多專家、學者做了大量努力,最終認識到所謂的軟件危機實質上是軟件中存在錯誤。錯誤是軟件的固有屬性,是沒法去改變的。軟件過程是為了獲得高質量軟件所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟。ISO 9000把過程定義為:使用資源將輸入轉化為輸出的活動所構成的系統。過程定義了:運用方法的順序、應該交付的文檔資料、管理措施,以及標志軟件開發各個階段任務完成的里程碑。