化工機械

[拼音]:ruanjian gongcheng

[英文]:software engineering

用工程方法研製和維護軟體的過程和有關技術。軟體研製包括需求定義、設計、實現和測試四個階段;軟體維護指使用過程中對已有軟體的修改和完善。

產生背景

60年代,電子計算機已發展到第三代,硬體技術進展迅速,價格急劇下降,應用領域不斷擴大。每一項新的應用,都需要研製相應的軟體系統。60年代後期出現了所謂“軟體危機”,其實質是人們難以控制軟體的研製和維護。其具體表現為:

(1)大型軟體系統十分複雜,很難理解和維護。系統不能適應執行環境的變化和使用者的動態需求。

(2)研製週期過長。大型軟體系統往往不能按時交付使用,實際所用的時間往往大大超出預計的時間。

(3)大型軟體系統的可靠性差。各種除錯程式只能發現錯誤,但不能保證沒有錯誤。某些系統(如核反應堆控制系統、導彈發射系統)的可靠性又極端重要,一旦失控,後果嚴重。

(4)軟體費用上漲,研製和維護費用一再增加,往往超出預算。

面對“軟體危機”,人們調查研究了軟體生產的實際情況,逐步感到採用工程化的方法從事軟體系統的研究和維護的必要性。於是,軟體工程在1968年應運而生。

基本內容

軟體工程的主要物件是大型軟體。軟體工程研究的問題主要有:質量保證和質量評價;研製和維護的方法;工具系統、檔案、使用者介面的設計;軟體管理等。

軟體質量和質量評價技術

軟體工程的任務之一是提高軟體質量。最初偏重可靠性和效率,後來更強調從易使用性、易維護性和易移植性等方面綜合考察軟體質量的整體特性。

易使用性包括可靠性、易操作性和效率。可靠性指在一定的時期內軟體在多次執行中不失敗的概率,反映軟體正確工作的程度。易操作性表示系統能提供良好的使用者介面,使用者易學易用。效率指包括時間、空間在內的一切系統資源的有效利用程度。

易維護性包括易理解性、易修改性和易測試性。易理解性表示所研製的軟體,不僅易為研製者本人所理解,而且也為別人容易理解。易修改性表示容易修正使用中發現的錯誤,也易於更新和擴充系統的功能,使軟體能夠適應環境的變化和滿足使用者的動態需求。測試是一個程式的執行過程,目的是為了尋找遺留的錯誤。

易移植性指將軟體從一種環境移植到另一種環境的難易程度。

在明確了軟體質量應具備的各種特性之後,還需要有各種評價軟體質量特性的技術。

軟體研製與維護技術

在研製和維護的每個階段,軟體工程師都必須從實際情況出發,選用最適當的技術和方法。軟體研製的每個階段,都把前一階段研製活動的結果作為本階段的規格說明,並以此規格說明作為驗證本階段研製活動結果的根據。軟體工程必須考慮如何對每個階段進行充分的論證和檢查,以防止錯誤傳遞到下一階段。作為最早階段的需求定義,是分析和記述使用者的實際需要。獲得一個正確的需求定義相當困難。然而,在包含有錯誤的需求定義的基礎上研製軟體,又會造成人力物力的極大浪費。因此,需求定義技術在軟體工程中佔有重要的地位。

維護有三類:第一是校正性的,即修正編碼、設計乃至需求定義中的錯誤;第二是適應性的,這是系統執行環境改變所要求的;第三是完善性的,是使用者要求增加新的功能而引起的。在一個實際的系統中,維護總是不可避免的。因此,在研製系統時,必須考慮到系統應是易維護的,以求儘量減少維護的工作量。計算機系統的大部分費用花在軟體上,而軟體的大部分費用又花在維護上。因此,軟體工程要重視維護。

在軟體研製和維護過程中,檔案起著重要的作用。檔案記載了軟體生存週期各階段產生的規格說明、各種決策,以及決策的依據,使軟體研製和維護過程有章可循,有據可查。檔案是軟體的重要組成部分,是理解、使用、維護軟體所不可缺少的資料。檔案的標準化、形式化,以及檔案的自動管理,也是軟體工程的研究課題。

軟體管理

包括制訂軟體研製和維護計劃,準備支援環境,監督實施,檢查進度,協調人員之間的關係等。它的基本目的是在給定的研製維護費用和工程限期下,研製出符合使用者功能要求和質量要求的軟體系統。軟體管理包括工程管理、質量管理、費用管理和人員組織管理等內容。為實現良好的軟體管理,必須有完備的管理體制、正確的管理方針和有效的管理支援系統。

軟體支援環境

人們致力創造合適的軟體支援環境,以提高軟體生產率。各種高階語言、編輯程式、程式庫和除錯程式等軟體工具,都在一定程度上改善軟體支援環境。但是,早期的軟體支援環境只支援編碼實現、測試等階段的某些工作,並不能為需求定義和設計等階段提供適當的工具。較完備的軟體支援環境,為從需求定義到維護的各個階段工作提供適宜的環境和整體化的工具組,包括環境資料庫、計算機輔助設計系統、介面軟體、目標系統的模擬軟體等。

軟體工程的最終目的,是擺脫手工生產軟體的狀況,實現軟體研製和維護的自動化。

參考書目

宮本勳,《ソフトゥェァエンジニァリング,現狀と展望》,TBS出版會,東京,1982。

I.Sommerville,Software Engineering,Addison-Wesley,London,1982.

參考文章

簡述計算機軟體工程中需求分析的基本任務和基本工作。網際網路簡述計算機軟體工程動態測試中的白盒法。網際網路闡述計算機軟體工程中詳細設計的基本任務。網際網路闡述計算機軟體工程可行性研究的具體步驟。網際網路簡述計算機軟體工程結構化分析(SA)方法的步驟。網際網路簡述計算機軟體工程中軟體結構設計的具體方法。網際網路闡述計算機軟體工程可行性研究的內容。網際網路簡述計算機軟體工程動態測試中的黑盒法。網際網路