標籤:
隨著軟體危機的存在才慢慢地產生了對軟體工程的認識,在軟體開發和維護的過程中存在著很多嚴重的問題,一方面與軟體本身的特點有關,另一方面也和軟體開發與維護的方法不正確有關,逐漸地產生了軟體工程。
軟體危機的表現:
i)軟體開發成本難以控制、軟體開發進度難以預測。
費用超支、進度拖延的情況屢屢發生。有時為了趕進度或壓成本不得不採取一些權宜之計,這樣又往往嚴重損害了軟體產品的品質。
ii)軟體的可靠性差,產品品質無法保證。
軟體是邏輯產品,品質問題很難以統一的標準度量,因而造成品質控制困難。儘管耗費了大量的人力物力,而系統的正確性卻越來越難以保證,出錯率大大增加。
iii)生產出來的軟體難以維護
很多程式缺乏相應的文檔資料,程式中的錯誤難以定位,難以改正,有時改正了已有的錯誤又引入新的錯誤。隨著軟體的社會擁有量越來越大,維護佔用了大量人力、物力和財力。
iiii)軟體成本在電腦系統總成本中所佔的比例居高不下,且逐年上升。 由於微電子學技術的進步和硬體生產自動化程度不斷提高,硬體成本逐年下降,效能和產量迅速提高。然而軟體開發需要大量的人力,軟體成本隨著軟體規模和數量的劇增而持續上升。
iiiii)軟體開發生產率提高的速度遠遠滿足不了電腦應用迅速普及深入的需要。軟體產品供不應求的狀況使得人類不能充分利用現代電腦硬體所能提供的巨大潛力。
iiiiii)使用者對產品功能難以滿足。
開發人員和使用者之間很難溝通、矛盾很難統一。往往是軟體人員不能真正瞭解使用者的需求,而使用者又不瞭解電腦求解問題的模式和能力,雙方無法用共同熟悉的語言進行交流和描述。
軟體工程是將系統的、科學的和嚴密的方法應用於設計、開發、運行和維護軟體,以及對這些方法本身的研究,也就是將工程應用於軟體,它由方法、工具和過程三部分組成,而軟體是電腦系統中程式、資料和文檔的集合。程式是用程式設計語言描述的、適合電腦處理的語句序列,資料是使程式能夠適當地處理資訊的資料結構,文檔是軟體開發、使用和維護程式所需要的圖文資料。軟體具有個體化、規模龐大、維護複雜和長期性的特點。軟體又分為應用軟體和系統軟體。應用軟體是使用者可以使用的各種程式設計語言,以及用各種程式設計語言編製的應用程式的集合,分為應用軟體包和使用者程式。而系統軟體是指控制和協調電腦及外部裝置,支援應用軟體開發和啟動並執行系統,是無需使用者幹預的各種程式的集合,主要功能是調度,監控和維護電腦系統;負責管理電腦系統中各種獨立的硬體,使得他們可以協調工作。
軟體工程的架構可以概括為:目標、過程和原則。
(1)軟體工程目標:生產具有正確性、可用性以及開銷合宜的產品。正確性指軟體產品達到預期功能的程度。可用性指軟體基本結構、實現及文檔為使用者可用的程度。開銷合宜是指軟體開發、啟動並執行整個開銷滿足使用者要求的程度。這些目標的實現不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。
(2)軟體工程過程:生產一個最終能滿足需求且達到工程目標的軟體產品所需要的步驟。軟體工程過程主要包括開發過程、運作過程、維護過程。它們覆蓋了需求、設計、實現、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析擷取需求定義,又稱軟體需求規約。需求分析產生功能規約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟體系統結構,包括子系統、模組以及相關層次的說明、每一模組的介面定義。詳細設計產生程式員可用的模組說明,包括每一模組中資料結構說明及加工描述。實現活動把設計結果轉換為可執行檔程式碼。確認活動貫穿於整個開發過程,實現完成後的確認,保證最終產品滿足使用者的要求。維護活動包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支援過程、培訓過程等。
(3)軟體工程的原則是指圍繞工程設計、工程支援以及工程管理在軟體開發過程中必須遵循的原則。軟體工程的原則有:
i)選取適宜開發範型
該原則與系統設計有關。在系統設計中,軟體需求、硬體需求以及其他因素之間是相互制約、相互影響的,經常需要權衡。因此,必須認識需求定義的易變性,採用適宜的開發範型予以控制,以保證軟體產品滿足使用者的要求。
ii)採用合適的設計方法
在軟體設計中,通常要考慮軟體的模組化、抽象與資訊隱蔽、局部化、一致性以及適應性等特徵。合適的設計方法有助於這些特徵的實現,以達到軟體工程的目標。
iii)提供高品質的工程支援
“工欲善其事,必先利其器”。在軟體工程中,軟體工具與環境對軟體過程的支援頗為重要。軟體工程項目的品質與開銷直接取決於對軟體工程所提供的支撐品質和效用。
iiii)重視開發過程的管理
生產一個最終能滿足需求且達到工程目標的軟體產品所需要的步驟。
軟體工程是電腦領域發展最快的學科分支之一,國家非常重視軟體行業的發展,對軟體人才的培養給予了非常優惠的政策。本專業培養掌握電腦軟體基本理論知識,熟悉軟體開發和管理技術、能夠在電腦軟體領域中從事軟體設計、開發和管理的進階人才。
軟體工程專業就業前景非常廣闊。畢業後去向除考取國內外名牌大學研究生外,主要去向是電腦軟體專業公司﹑資訊諮詢公司﹑以及金融等其它獨資、合資企業。從事各級各類企事單位的業辦公自動化處理、電腦安裝與維護、網頁製作、電腦網路和專業伺服器的維護管理和開發工作、動態商務網站開發與管理、軟體測試與開發及電腦相關裝置的商品貿易等方面的有關工作。
問題1軟體工程和系統工程的區別?
2需求變更為什麼是不可避免的?
3檢驗和有效性驗證的區別?
4所面臨的主要問題是什嗎?
5軟體工程究竟是不是側重於對問題本身的分析呢?
對軟體工程的理解