一個軟件從開始到最后一共需要以下幾個流程:
? ?1戒良、計劃
? ?2体捏、分析
? ?3、設計
? ?4糯崎、編碼
? ?5几缭、測試
? ?6、維護
? ?1沃呢、計劃
? ?對所要解決的問題進行總體定義年栓,包括了解用戶的要求及現(xiàn)實環(huán)境,從技術(shù)薄霜、經(jīng)濟和社會因素等3個方面研究并論證本軟件項目的可行性某抓,編寫可行性研究報告,探討解決問題的方案惰瓜,并對可供使用的資源(如計算機硬件否副、系統(tǒng)軟件、人力等)成本崎坊,可取得的效益和開發(fā)進度作出估計备禀,制訂完成開發(fā)任務的實施計劃。
? ?2奈揍、分析
? ?軟件需求分析就是對開發(fā)什么樣的軟件的一個系統(tǒng)的分析與設想曲尸。它是一個對用戶的需求進行去粗取精、去偽存真男翰、正確理解队腐,然后把它用軟件工程開發(fā)語言(形式功能規(guī)約,即需求規(guī)格說明書)表達出來的過程奏篙。本階段的基本任務是和用戶一起確定要解決的問題,建立軟件的邏輯模型迫淹,編寫需求規(guī)格說明書文檔并最終得到用戶的認可秘通。需求分析的主要方法有結(jié)構(gòu)化分析方法、數(shù)據(jù)流程圖和數(shù)據(jù)字典等方法敛熬。本階段的工作是根據(jù)需求說明書的要求肺稀,設計建立相應的軟件系統(tǒng)的體系結(jié)構(gòu),并將整個系統(tǒng)分解成若干個子系統(tǒng)或模塊应民,定義子系統(tǒng)或模塊間的接口關(guān)系话原,對各子系統(tǒng)進行具體設計定義夕吻,編寫軟件概要設計和詳細設計說明書,數(shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu)設計說明書繁仁,組裝測試計劃涉馅。在任何軟件或系統(tǒng)開發(fā)的初始階段必須先完全掌握用戶需求,以期能將緊隨的系統(tǒng)開發(fā)過程中哪些功能應該落實黄虱、采取何種規(guī)格以及設定哪些限制優(yōu)先加以定位稚矿。系統(tǒng)工程師最終將據(jù)此完成設計方案,在此基礎上對隨后的程序開發(fā)捻浦、系統(tǒng)功能和性能的描述及限制作出定義晤揣。
? ?3、設計
? ?軟件設計可以分為概要設計和詳細設計兩個階段朱灿。實際上軟件設計的主要任務就是將軟件分解成模塊是指能實現(xiàn)某個功能的數(shù)據(jù)和程序說明昧识、可執(zhí)行程序的程序單元〉涟牵可以是一個函數(shù)跪楞、過程、子程序环疼、一段帶有程序說明的獨立的程序和數(shù)據(jù)习霹,也可以是可組合、可分解和可更換的功能單元炫隶。模塊淋叶,然后進行模塊設計。概要設計就是結(jié)構(gòu)設計伪阶,其主要目標就是給出軟件的模塊結(jié)構(gòu)煞檩,用軟件結(jié)構(gòu)圖表示。詳細設計的首要任務就是設計模塊的程序流程栅贴、算法和數(shù)據(jù)結(jié)構(gòu)斟湃,次要任務就是設計數(shù)據(jù)庫,常用方法還是結(jié)構(gòu)化程序設計方法檐薯。
? ?4凝赛、編碼
? ?軟件編碼是指把軟件設計轉(zhuǎn)換成計算機可以接受的程序,即寫成以某一程序設計語言表示的“源程序清單”坛缕。充分了解軟件開發(fā)語言墓猎、工具的特性和編程風格,有助于開發(fā)工具的選擇以及保證軟件產(chǎn)品的開發(fā)質(zhì)量赚楚。
? ?當前軟件開發(fā)中除在專用場合毙沾,已經(jīng)很少使用二十世紀80年代的高級語言了,取而代之的是面向?qū)ο蟮拈_發(fā)語言宠页。而且面向?qū)ο蟮拈_發(fā)語言和開發(fā)環(huán)境大都合為一體左胞,大大提高了開發(fā)的速度寇仓。
? ?5、測試
? ?軟件測試的目的是以較小的代價發(fā)現(xiàn)盡可能多的錯誤烤宙。要實現(xiàn)這個目標的關(guān)鍵在于設計一套出色的測試用例(測試數(shù)據(jù)與功能和預期的輸出結(jié)果組成了測試用例)遍烦。如何才能設計出一套出色的測試用例,關(guān)鍵在于理解測試方法门烂。不同的測試方法有不同的測試用例設計方法乳愉。兩種常用的測試方法是白盒法測試對象是源程序,依據(jù)的是程序內(nèi)部的的邏輯結(jié)構(gòu)來發(fā)現(xiàn)軟件的編程錯誤屯远、結(jié)構(gòu)錯誤和數(shù)據(jù)錯誤蔓姚。結(jié)構(gòu)錯誤包括邏輯、數(shù)據(jù)流慨丐、初始化等錯誤坡脐。用例設計的關(guān)鍵是以較少的用例覆蓋盡可能多的內(nèi)部程序邏輯結(jié)果。白盒法和黑盒法依據(jù)的是軟件的功能或軟件行為描述房揭,發(fā)現(xiàn)軟件的接口备闲、功能和結(jié)構(gòu)錯誤。其中接口錯誤包括內(nèi)部/外部接口捅暴、資源管理恬砂、集成化以及系統(tǒng)錯誤。黑盒法用例設計的關(guān)鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口蓬痒。
? ?6泻骤、維護
? ?維護是指在已完成對軟件的研制(分析、設計梧奢、編碼和測試)工作并交付使用以后狱掂,對軟件產(chǎn)品所進行的一些軟件工程的活動。即根據(jù)軟件運行的情況亲轨,對軟件進行適當修改趋惨,以適應新的要求,以及糾正運行中發(fā)現(xiàn)的錯誤惦蚊。編寫軟件問題報告器虾、軟件修改報告。
? ?一個中等規(guī)模的軟件蹦锋,如果研制階段需要一年至二年的時間曾撤,在它投入使用以后,其運行或工作時間可能持續(xù)五年至十年晕粪。那么它的維護階段也是運行的這五年至十年期間。在這段時間渐裸,人們幾乎需要著手解決研制階段所遇到的各種問題巫湘,同時還要解決某些維護工作本身特有的問題装悲。做好軟件維護工作,不僅能排除障礙尚氛,使軟件能正常工作诀诊,而且還可以使它擴展功能,提高性能阅嘶,為用戶帶來明顯的經(jīng)濟效益属瓣。然而遺憾的是,對軟件維護工作的重視往往遠不如對軟件研制工作的重視讯柔。而事實上抡蛙,和軟件研制工作相比,軟件維護的工作量和成本都要大得多魂迄。
? ?在實際開發(fā)過程中粗截,軟件開發(fā)并不是從第一步進行到最后一步,而是在任何階段捣炬,在進入下一階段前一般都有一步或幾步的回溯熊昌。在測試過程中的問題可能要求修改設計,用戶可能會提出一些需要來修改需求說明書等湿酸。