趙學燕
(天津師范大學,中國 天津300387)
B.W.Boehm認為軟件工程就是運用現代科學技術知識來設計并構造計算機程序及為開發(fā)、運行和維護這些程序所必須的相關文件資料。這里對“設計”一詞應有廣義的理解,它包括軟件的需求分析和對軟件進行修改時所進行的再設計活動。
IEEE說∶“軟件工程是開發(fā)、運行、維護和修復軟件的系統(tǒng)方法”,其中,“軟件”是計算機程序、方法、規(guī)則、相關的文檔資料以及在計算機上運行時所必需的數據。
Fairley給出的軟件工程的定義為∶軟件工程學為在成本限額以內按時完成開發(fā)和修改軟件產品所需的系統(tǒng)生產和維護的技術與管理的科學。
由此可見,軟件工程包括3個基本要素∶方法、工具和過程。
首先,軟件工程方法為軟件開發(fā)提供了“如何做”的技術。它包括多方面的任務,如項目計劃與估算、軟件系統(tǒng)需求分析、數據結構、系統(tǒng)總體結構的設計、算法的設計、編碼、測試以及維護等。軟件工程常采用某種特殊的語言或圖形的表達方法以及一套質量保證的標準。
其次,軟件工具為軟件工程方法提供了自動的或半自動的軟件支撐環(huán)境。有人把諸多工具集成起來,使得一種工具產生的信息可以為其他的工具所使用,這樣建立起一種稱之為計算機輔助軟件工程(CASE)的軟件開發(fā)支撐系統(tǒng)。CASE將各種軟件工具、開發(fā)機器和存放開發(fā)過程信息的工程數據庫組合起來形成一個軟件工程環(huán)境。
另外,軟件工程的過程則是將軟件工程的方法和工具綜合起來以達到合理、及時地進行計算機軟件開發(fā)的目的。過程定義了方法使用的順序,要求交付的文檔資料,為保證質量和協(xié)調變更所需要的管理及軟件開發(fā)各個階段完成的里程碑。
組織實施軟件工程項目,從技術上和管理上采取了多項措施以后,最終希望得到項目的成功。所謂成功指的是達到以下幾個主要目標∶較低的開發(fā)成本,達到要求的軟件功能,取得較好的軟件性能,開發(fā)的軟件易于移植,需要較低的維護費用,能按時完成開發(fā)工作,及時交付使用等。
在實際開發(fā)中,要使上述目標都達到理想的程度往往非常困難,而且上述目標很可能相互沖突。如追求降低開發(fā)成本,很可能同時也降低了軟件的可靠性;若過于追求軟件的性能,則可能造成軟件對硬件有較大的依賴性,從而直接影響軟件的可移植性等。
3.1 制定軟件計劃
在軟件項目開發(fā)之前,針對不同的工作目標制定不同類型的工作計劃,對項目實施計劃進行可行性研究。主要包括下述任務:
第一,經濟可行性。分析能否做到以最小投入成本得到最佳經濟收益,做出立即投入、推遲開發(fā)或不值得開發(fā)的選擇。如果可行,做出開發(fā)進度安排。
第二,技術可行性。分析使用現有的技術能否實現系統(tǒng),能否解決系統(tǒng)技術難點,系統(tǒng)對技術人員有什么要求,硬件能否配套等其它技術冒險的各種因素。
第三,社會(法律)可行性。分析開發(fā)系統(tǒng)是否符合當前社會生產經營體制及法律法規(guī)的要求。
3.2 需求分析和定義
對開發(fā)軟件提出的需求進行分析并給出詳細的定義。軟件開發(fā)人員和用戶共同討論決定哪些需求是可以滿足的,并對其加以確切的描述,然后編寫出軟件需求說明書或系統(tǒng)功能說明書及初步的系統(tǒng)用戶手冊,提交管理機構評審。
3.3 軟件設計
設計是軟件工程的核心,就是把需求變換成為軟件的具體方案,軟件設計一般分為總體設計和詳細設計兩個階段,總體設計是根據需求所得到的數據流、數據結構,使用結構設計技術,導出軟件模塊結構;詳細設計是使用表格、圖形或自然語言等詳細設計工具,按照模塊設計準則進行軟件各個模塊的具體過程的描述,如模塊的分解與合并、低耦合性、高內聚性的特點,以及模塊的作用、控制范圍、復雜性和接口,按步驟進行設計。
3.4 程序編寫(軟件編碼)把用戶的要求變?yōu)橛嬎銠C能夠接受的形式,為每個模塊編寫程序,即寫成以某一種特定程序設計語言表示的源程序清單。自然,寫出的程序應當是結構良好、清晰易讀又與設計一致。
3.5 軟件測試
測試是保證軟件質量的重要手段,其主要方式是在設計測試用例的基礎上檢驗軟件的各個組成部分,一般采用黑盒法和白盒法。所謂黑盒法是根據程序的物理特性,測試每一個功能是否達到預期的要求,白盒法則是根據程序的邏輯結構,進行目標測試。無論黑盒法還是白盒法都要設計測試用例,按照單元測試、組裝測試、確認測試、系統(tǒng)測試、人工測試的步驟,對模塊功能、接口、數據結構組成進行測試。最后按規(guī)定的各項需求,逐漸進行有效性測試,決定已開發(fā)的軟件是否合格,能否交付用戶使用。
3.6 軟件運行/維護
已交付的軟件投入正式使用便進入運行階段。這一階段可能持續(xù)若干甚至幾十年。軟件在運行過程中需要不斷診斷、進行修改,包括改正性維護、適應性維護、完善性維護和預防性維護。維護的重要性在逐年提高。這一階段是軟件工程的最后一個階段,也是最重要階段,應給予足夠的重視。
數據庫系統(tǒng)是應用較為廣泛的多用戶共享資源,具有通用、獨立、冗余少、安全、完整的特性,因此,在進行數據庫系統(tǒng)設計時應采用軟件工程的方法。主要是對數據管理、庫結構設計與建立、系統(tǒng)設計、語言的選擇與設計、實用程序的編寫、功能模塊的設計等方面應用軟件工程的理論和方法。在進行這些設計的需求階段,應確定對軟件的設計方法、所使用的描述工具、目標實現、推廣使用等方面進行論證,然后根據用戶和系統(tǒng)要求,進行包括上述功能的軟件設計、輸入輸出設計、用戶設計和模塊功能、接口設計,然后編寫用于數據庫實現的編譯、連接、測試等語言程序,使所設計的數據庫系統(tǒng)具有易開發(fā)、易推廣、易理解的高質量、高效率的軟件。
因此,應用軟件工程的理論和方法,可以設計較復雜的系統(tǒng)軟件,使設計工程化、系統(tǒng)化,提高軟件研制質量和水準。
[1]鄭人杰.軟件工程[M].北京:清華大學出版社,1999.
[2]張海藩.軟件工程導論[M].北京:清華大學出版社,1996.
[3]劉潤彬.軟件工程簡明教程[M].大連:大連理工大學出版社,1995.