
軟件開發是根據用戶要求建造出軟件系統或者系統中的軟件部分的過程 。軟件開發是一項包括需求捕捉、需求分析、設計、實現和測試的系統工程 。軟件一般是用某種程序設計語言來實現的 。通常采用軟件開發工具可以進行開發 。
1. 分析
軟件需求分析就是回答做什么的問題 。它是一個對用戶的需求進行去粗取精、去偽存真、正確理解,然后把它用軟件工程開發語言(形式功能規約,即需求規格說明書)表達出來的過程 。本階段的基本任務是和用戶一起確定要解決的問題 , 建立軟件的邏輯模型,編寫需求規格說明書文檔并最終得到用戶的認可 。需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法 。本階段的工作是根據需求說明書的要求 , 設計建立相應的軟件系統的體系結構,并將整個系統分解成若干個子系統或模塊,定義子系統或模塊間的接口關系 , 對各子系統進行具體設計定義,編寫軟件概要設計和詳細設計說明書,數據庫或數據結構設計說明書,組裝測試計劃 。
2. 設計
軟件設計可以分為概要設計和詳細設計兩個階段 。實際上軟件設計的主要任務就是將軟件分解成模塊是指能實現某個功能的數據和程序說明、可執行程序的程序單元 。可以是一個函數、過程、子程序、一段帶有程序說明的獨立的程序和數據 , 也可以是可組合、可分解和可更換的功能單元 。模塊 , 然后進行模塊設計 。概要設計就是結構設計,其主要目標就是給出軟件的模塊結構,用軟件結構圖表示 。詳細設計的首要任務就是設計模塊的程序流程、算法和數據結構,次要任務就是設計數據庫,常用方法還是結構化程序設計方法 。
3. 編碼
軟件編碼是指把軟件設計轉換成計算機可以接受的程序,即寫成以某一程序設計語言表示的"源程序清單" 。充分了解軟件開發語言、工具的特性和編程風格 , 有助于開發工具的選擇以及保證軟件產品的開發質量 。
【軟件開發過程可以包括以下6個階段】
當前軟件開發中除在專用場合,已經很少使用二十世紀80年代的高級語言了,取而代之的是面向對象的開發語言 。而且面向對象的開發語言和開發環境大都合為一體,大大提高了開發的速度 。
4. 測試
軟件測試的目的是以較小的代價發現盡可能多的錯誤 。要實現這個目標的關鍵在于設計一套出色的測試用例(測試數據和預期的輸出結果組成了測試用例) 。如何才能設計出一套出色的測試用例,關鍵在于理解測試方法 。不同的測試方法有不同的測試用例設計方法 。兩種常用的測試方法是白盒法測試對象是源程序,依據的是程序內部的的邏輯結構來發現軟件的編程錯誤、結構錯誤和數據錯誤 。結構錯誤包括邏輯、數據流、初始化等錯誤 。用例設計的關鍵是以較少的用例覆蓋盡可能多的內部程序邏輯結果 。白盒法和黑盒法依據的是軟件的功能或軟件行為描述 , 發現軟件的接口、功能和結構錯誤 。其中接口錯誤包括內部/外部接口、資源管理、集成化以及系統錯誤 。黑盒法用例設計的關鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口 。黑盒法 。
5. 維護
維護是指在已完成對軟件的研制(分析、設計、編碼和測試)工作并交付使用以后,對軟件產品所進行的一些軟件工程的活動 。即根據軟件運行的情況,對軟件進行適當修改,以適應新的要求,以及糾正運行中發現的錯誤 。編寫軟件問題報告、軟件修改報告 。
一個中等規模的軟件,如果研制階段需要一年至二年的時間,在它投入使用以后 , 其運行或工作時間可能持續五年至十年 。那么它的維護階段也是運行的這五年至十年期間 。在這段時間,人們幾乎需要著手解決研制階段所遇到的各種問題,同時還要解決某些維護工作本身特有的問題 。做好軟件維護工作,不僅能排除障礙,使軟件能正常工作,而且還可以使它擴展功能 , 提高性能 , 為用戶帶來明顯的經濟效益 。然而遺憾的是 , 對軟件維護工作的重視往往遠不如對軟件研制工作的重視 。而事實上,和軟件研制工作相比,軟件維護的工作量和成本都要大得多 。
在實際開發過程中,軟件開發并不是從第一步進行到最后一步,而是在任何階段,在進入下一階段前一般都有一步或幾步的回溯 。在測試過程中的問題可能要求修改設計,用戶可能會提出一些需要來修改需求說明書等 。
