一.軟件開(kāi)發定義
軟件開(kāi)發是根據用戶要求建造出軟件系統或者系統中的軟件部分的過程。軟件開(kāi)發是一項包括需求捕捉、需求分析、設計(jì)、實現和(hé)測試的系統工程。軟件一般是用某種程序設計(jì)語言來(lái)實現的。通(tōng)常采用軟件開(kāi)發工具可(kě)以進行(xíng)開(kāi)發。軟件分為(wèi)系統軟件和(hé)應用軟件,并不隻是包括可(kě)以在計(jì)算(suàn)機上(shàng)運行(xíng)的程序,與這些(xiē)程序相關的文件一般也被認為(wèi)是軟件的一部分。 軟件設計(jì)思路和(hé)方法的一般過程,包括設計(jì)軟件的功能和(hé)實現的算(suàn)法和(hé)方法、軟件的總體(tǐ)結構設計(jì)和(hé)模塊設計(jì)、編程和(hé)調試、程序聯調和(hé)測試以及編寫、提交程序。
二.軟件開(kāi)發階段劃分
1.計(jì)劃
對所要解決的問題進行(xíng)總體(tǐ)定義,包括了解用戶的要求及現實環境,從技(jì)術(shù)、經濟和(hé)社會(huì)因素等3個(gè)方面研究并論證本軟件項目的可(kě)行(xíng)性,編寫可(kě)行(xíng)性研究報告,探討(tǎo)解決問題的方案,并對可(kě)供使用的資源(如計(jì)算(suàn)機硬件、系統軟件、人(rén)力等)成本,可(kě)取得(de)的效益和(hé)開(kāi)發進度作(zuò)出估計(jì),制(zhì)訂完成開(kāi)發任務的實施計(jì)劃。
2.分析
軟件需求分析就是對開(kāi)發什麽樣的軟件的一個(gè)系統的分析與設想。它是一個(gè)對用戶的需求進行(xíng)去粗取精、去僞存真、正确理(lǐ)解,然後把它用軟件工程開(kāi)發語言(形式功能規約,即需求規格說明(míng)書(shū))表達出來(lái)的過程。本階段的基本任務是和(hé)用戶一起确定要解決的問題,建立軟件的邏輯模型,編寫需求規格說明(míng)書(shū)文檔并最終得(de)到用戶的認可(kě)。需求分析的主要方法有(yǒu)結構化分析方法、數(shù)據流程圖和(hé)數(shù)據字典等方法。本階段的工作(zuò)是根據需求說明(míng)書(shū)的要求,設計(jì)建立相應的軟件系統的體(tǐ)系結構,并将整個(gè)系統分解成若幹個(gè)子系統或模塊,定義子系統或模塊間(jiān)的接口關系,對各子系統進行(xíng)具體(tǐ)設計(jì)定義,編寫軟件概要設計(jì)和(hé)詳細設計(jì)說明(míng)書(shū),數(shù)據庫或數(shù)據結構設計(jì)說明(míng)書(shū),組裝測試計(jì)劃。在任何軟件或系統開(kāi)發的初始階段必須先完全掌握用戶需求,以期能将緊随的系統開(kāi)發過程中哪些(xiē)功能應該落實、采取何種規格以及設定哪些(xiē)限制(zhì)優先加以定位。系統工程師(shī)最終将據此完成設計(jì)方案,在此基礎上(shàng)對随後的程序開(kāi)發、系統功能和(hé)性能的描述及限制(zhì)作(zuò)出定義。
3.設計(jì)
軟件設計(jì)可(kě)以分為(wèi)概要設計(jì)和(hé)詳細設計(jì)兩個(gè)階段。實際上(shàng)軟件設計(jì)的主要任務就是将軟件分解成模塊是指能實現某個(gè)功能的數(shù)據和(hé)程序說明(míng)、可(kě)執行(xíng)程序的程序單元。可(kě)以是一個(gè)函數(shù)、過程、子程序、一段帶有(yǒu)程序說明(míng)的獨立的程序和(hé)數(shù)據,也可(kě)以是可(kě)組合、可(kě)分解和(hé)可(kě)更換的功能單元。模塊,然後進行(xíng)模塊設計(jì)。概要設計(jì)就是結構設計(jì),其主要目标就是給出軟件的模塊結構,用軟件結構圖表示。詳細設計(jì)的首要任務就是設計(jì)模塊的程序流程、算(suàn)法和(hé)數(shù)據結構,次要任務就是設計(jì)數(shù)據庫,常用方法還(hái)是結構化程序設計(jì)方法。
4.編碼
軟件編碼是指把軟件設計(jì)轉換成計(jì)算(suàn)機可(kě)以接受的程序,即寫成以某一程序設計(jì)語言表示的“源程序清單”。充分了解軟件開(kāi)發語言、工具的特性和(hé)編程風格,有(yǒu)助于開(kāi)發工具的選擇以及保證軟件産品的開(kāi)發質量。
當前軟件開(kāi)發中除在專用場(chǎng)合,已經很(hěn)少(shǎo)使用二十世紀80年代的高(gāo)級語言了,取而代之的是面向對象的開(kāi)發語言。而且面向對象的開(kāi)發語言和(hé)開(kāi)發環境大(dà)都合為(wèi)一體(tǐ),大(dà)大(dà)提高(gāo)了開(kāi)發的速度。
5.測試
軟件測試的目的是以較小(xiǎo)的代價發現盡可(kě)能多(duō)的錯誤。要實現這個(gè)目标的關鍵在于設計(jì)一套出色的測試用例(測試數(shù)據與功能和(hé)預期的輸出結果組成了測試用例)。如何才能設計(jì)出一套出色的測試用例,關鍵在于理(lǐ)解測試方法。不同的測試方法有(yǒu)不同的測試用例設計(jì)方法。兩種常用的測試方法是白盒法測試對象是源程序,依據的是程序內(nèi)部的的邏輯結構來(lái)發現軟件的編程錯誤、結構錯誤和(hé)數(shù)據錯誤。結構錯誤包括邏輯、數(shù)據流、初始化等錯誤。用例設計(jì)的關鍵是以較少(shǎo)的用例覆蓋盡可(kě)能多(duō)的內(nèi)部程序邏輯結果。白盒法和(hé)黑(hēi)盒法依據的是軟件的功能或軟件行(xíng)為(wèi)描述,發現軟件的接口、功能和(hé)結構錯誤。其中接口錯誤包括內(nèi)部/外部接口、資源管理(lǐ)、集成化以及系統錯誤。黑(hēi)盒法用例設計(jì)的關鍵同樣也是以較少(shǎo)的用例覆蓋模塊輸出和(hé)輸入接口。
6.維護
維護是指在已完成對軟件的研制(zhì)(分析、設計(jì)、編碼和(hé)測試)工作(zuò)并交付使用以後,對軟件産品所進行(xíng)的一些(xiē)軟件工程的活動。即根據軟件運行(xíng)的情況,對軟件進行(xíng)适當修改,以适應新的要求,以及糾正運行(xíng)中發現的錯誤。編寫軟件問題報告、軟件修改報告。
一個(gè)中等規模的軟件,如果研制(zhì)階段需要一年至二年的時(shí)間(jiān),在它投入使用以後,其運行(xíng)或工作(zuò)時(shí)間(jiān)可(kě)能持續五年至十年。那(nà)麽它的維護階段也是運行(xíng)的這五年至十年期間(jiān)。在這段時(shí)間(jiān),人(rén)們幾乎需要着手解決研制(zhì)階段所遇到的各種問題,同時(shí)還(hái)要解決某些(xiē)維護工作(zuò)本身特有(yǒu)的問題。做(zuò)好軟件維護工作(zuò),不僅能排除障礙,使軟件能正常工作(zuò),而且還(hái)可(kě)以使它擴展功能,提高(gāo)性能,為(wèi)用戶帶來(lái)明(míng)顯的經濟效益。然而遺憾的是,對軟件維護工作(zuò)的重視(shì)往往遠不如對軟件研制(zhì)工作(zuò)的重視(shì)。而事實上(shàng),和(hé)軟件研制(zhì)工作(zuò)相比,軟件維護的工作(zuò)量和(hé)成本都要大(dà)得(de)多(duō)。
在實際開(kāi)發過程中,軟件開(kāi)發并不是從第一步進行(xíng)到最後一步,而是在任何階段,在進入下一階段前一般都有(yǒu)一步或幾步的回溯。在測試過程中的問題可(kě)能要求修改設計(jì),用戶可(kě)能會(huì)提出一些(xiē)需要來(lái)修改需求說明(míng)書(shū)等。