1.什么是軟件工程
軟件工作的范圍不僅僅局限在程序編寫,而是擴展到整個軟件生命的周期,
如軟件的基本概念形成、需求分析、設計、實現、安裝部署、運行維護,直到軟件被跟新或替換新版本。
軟件工程還包括很多技術性管理工作,例如過程管理、產品管理、資源管理和質量管理,在這些方面也逐步建立起了標准和規范。
2.軟件生命周期
軟件的生命周期可以分為6個階段如圖示:
- 計划:此階段是軟件開發方與需求方共同討論,主要確定軟件的開發目標及其可行性。
- 需求分析:在確定軟件開發可行的情況下,對軟件需要實現的各個功能進行詳細分析。需求分析階段是一個很重要的階段,這一階段做得好,將為整個軟件開發項目的成功打下良好的基礎。"唯一不變的是變化本身",同樣需求也是在整個軟件開發過程中不斷變化和深入的,因此我們必須制定需求變更計划來應付這種變化,以保護整個項目的順利進行。
- 設計:此階段主要根據需求分析的結果,對整個軟件系統進行設計,如系統框架設計,數據庫設計等等。軟件設計一般分為總體設計和詳細設計。好的軟件設計將為軟件程序編寫打下良好的基礎。
- 編碼:此階段是將軟件設計的結果轉換成計算機可運行的程序代碼。在程序編碼中必須要制定統一,符合標准的編寫規范。以保證程序的可讀性,易維護性,提高程序的運行效率。
- 軟件測試:在軟件設計完成后要經過嚴密的測試,以發現軟件在整個設計過程中存在的問題並加以糾正。整個測試過程分單元測試、組裝測試以及系統測試三個階段進行。測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計划並嚴格按照測試計划進行測試,以減少測試的隨意性。
- 運行維護:軟件維護是軟件生命周期中持續時間最長的階段。在軟件開發完成並投入使用后,由於多方面的原因,軟件不能繼續適應用戶的要求。要延續軟件的使用壽命,就必須對軟件進行維護。軟件的維護包括糾錯性維護和改進性維護兩個方面。
3.軟件工程的研究領域
軟件工程研究的領域涉及軟件的方方面面。至少包括人員管理、項目管理、可行性分析、需求分析、系統設計、編碼、測試、質量管理和配置管理。如圖4.2所示
4.軟件的發展史
如圖4.3所示
5.軟件工程化概念的提出
20世紀60年代。“軟件危機”就已經出現。
針對“軟件危機”,人們提出了軟件工程化的概念。軟件工程化概念首次出現在1968年的NATO(北大西洋公約組織)會議上。
這一時期主要提出了zhuming著名的“瀑布模型”,然而軟件測試作為瀑布模式的一個獨立階段出現,也受到了人們的廣泛關注。
隨后的軟件開發主要以結構化的分析和設計、結構化的編碼和測試為特征。
6.“軟件工廠”
20世紀70年代初,“軟件工廠”的概念出現,主要圍繞軟件過程和軟件復用展開研究,使軟件工程思想得到進一步的深化和提高。
這一時期主要提出了“面向對象”的編程思想,軟件測試在這一階段有新的挑戰,尤其是單元測試方法的改變。
7.軟件管理過程
20世紀80年代后,軟件生產進入以過程為中心的階段。
提出了過程能力成熟度模型CMM、個體軟件過程PSP、群組軟件過程TSP等模型。軟件測試在這個階段更加強調與開發協作!
軟件不是一個人開發的,是一大幫人一起開發的,因此需要溝通、協作、需要大家遵循一定的流程和做事方式,這是“軟件過程”,如圖4.4
“瀑布模式”嘗試從軟件過程的角度解決“軟件危機”。
但事實證明這種簡單的階段划分並不能完美地解決軟件工程化問題。后來陸續提出了快速原型法、螺旋模型、噴泉模型等對“瀑布式”生命周期模型進行補充。
8.軟件過程相關方法和工具
9.軟件工程發展新趨勢
10.軟件工程目的
軟件工程的目的是提高軟件的質量和生產率,最終實現軟件的工廠化生產。采用軟件工程模型的目的是為了保證項目成功,
並且每次都成功。決定成功的三個因素如圖4.6
摘自:《軟件測試技術大全》