足彩14场和任选9场都在这里/勇士队伊戈达拉/保超级联赛2024/科比布莱恩特 - 篮球比分直播188

軟件是怎么開發(fā)出來的?
發(fā)布時(shí)間:2020-05-15

軟件開發(fā)流程

先上一個(gè)軟件開發(fā)的整體流程圖,這就是大名鼎鼎的“瀑布模型(Waterfall Model)”。據(jù)說由溫斯頓·羅伊斯(Winston Royce)在1970年提出。

瀑布模型

瀑布模型的特點(diǎn)為:上一階段的結(jié)果為本階段的輸入,開發(fā)進(jìn)程從一個(gè)階段“流動(dòng)”到下一個(gè)階段。

(圖中右側(cè)括號(hào)中為每個(gè)階段的輸出物。)

一般軟件售前人員對(duì)這個(gè)流程比較熟悉,這其中項(xiàng)目規(guī)劃、可行性論證報(bào)告、需求說明書等,通常都由IT售前人員提供。

如果將瀑布模型的設(shè)計(jì)部分分為總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)兩部分,即“軟件開發(fā)的8個(gè)流程”:

1、問題定義階段

用戶提出一個(gè)軟件開發(fā)需求以后,分析人員首先要明確軟件的實(shí)現(xiàn)目標(biāo)、規(guī)模及類型:如它是數(shù)據(jù)處理問題還是實(shí)時(shí)控制問題,是科學(xué)計(jì)算問題還是人工智能問題等。

2、可行性研究

基本任務(wù):“對(duì)于上一個(gè)階段所確定的問題有行得通的解決辦法嗎”?

內(nèi)容包括經(jīng)濟(jì)可行性、技術(shù)可行性、法律可行性、不同方案。

結(jié)束標(biāo)準(zhǔn):提出關(guān)于問題性質(zhì)、工程目標(biāo)和規(guī)模的問題定義書面報(bào)告;提出可行性研究報(bào)告。

3. 需求分析

基本任務(wù):“為了解決這個(gè)問題,目標(biāo)系統(tǒng)必須做什么?”

確定系統(tǒng)必須具有的功能和性能,系統(tǒng)要求的運(yùn)行環(huán)境,并且預(yù)測系統(tǒng)發(fā)展的前景。

結(jié)束標(biāo)準(zhǔn):軟件需求規(guī)格說明書(specification)

4. 總體設(shè)計(jì)(概要設(shè)計(jì))

基本任務(wù):“概括地說,應(yīng)如何解決這個(gè)問題?”

設(shè)計(jì)出實(shí)現(xiàn)目標(biāo)系統(tǒng)的幾種可能的方案。推薦一個(gè)最佳方案。

結(jié)束標(biāo)準(zhǔn):概要設(shè)計(jì)文檔

5. 詳細(xì)設(shè)計(jì)

基本任務(wù):“應(yīng)該怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)呢?”

結(jié)束標(biāo)準(zhǔn):設(shè)計(jì)出程序的詳細(xì)規(guī)格說明。

6. 編碼

基本任務(wù):寫出正確的容易理解、容易維護(hù)的程序模塊

結(jié)束標(biāo)準(zhǔn):以某種程序設(shè)計(jì)語言表示的源程序清單

7. 測試(單元測試和綜合測試)

基本任務(wù):在設(shè)計(jì)測試用例的基礎(chǔ)上檢驗(yàn)軟件的各個(gè)組成部分是否達(dá)到預(yù)定的要求。

結(jié)束標(biāo)準(zhǔn):軟件合格,能交付用戶使用。

8. 軟件維護(hù)

基本任務(wù):使系統(tǒng)持久地滿足用戶的需要。

改正性維護(hù),適應(yīng)性維護(hù),完善性維護(hù),預(yù)防性維護(hù)。

雖然后來提出很多模型,如演化模型(evolutionary model)、增量模型(incremental model)、原型模型(prototyping model)等,但現(xiàn)在軟件開發(fā)的流程,依然總體遵循瀑布模型。

如何搭建一個(gè)系統(tǒng)

說完流程,再說說系統(tǒng)是如何被開發(fā)人員搭建出來的。

系統(tǒng)的百度百科定義為:軟件系統(tǒng)(Software Systems)是指由系統(tǒng)軟件、支撐軟件和應(yīng)用軟件組成的計(jì)算機(jī)軟件系統(tǒng),它是計(jì)算機(jī)系統(tǒng)中由軟件組成的部分。

搭建系統(tǒng)可以分為三個(gè)步驟:環(huán)境部署、軟件開發(fā)、軟件部署。

系統(tǒng)部署步驟圖

1、環(huán)境部署

準(zhǔn)備服務(wù)器,部署操作系統(tǒng)、軟件環(huán)境、安全軟件、FTP服務(wù)器等。數(shù)據(jù)庫和應(yīng)用可分開布置在多個(gè)服務(wù)器,也可布置在同一服務(wù)器。

準(zhǔn)備網(wǎng)絡(luò),分為內(nèi)網(wǎng)和外網(wǎng)。外網(wǎng)需要購買公網(wǎng)IP和域名。

負(fù)責(zé)人:網(wǎng)絡(luò)管理員

2、軟件開發(fā)

包括開發(fā)語言選擇、架構(gòu)設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)等工作,并進(jìn)行編碼、編譯、測試、打包。

負(fù)責(zé)人:程序員

3、軟件部署

將程序文件上傳到服務(wù)器,進(jìn)行部署、配置,成功后即可通過客戶端訪問項(xiàng)目。

負(fù)責(zé)人:軟件實(shí)施

軟件開發(fā)階段

下面以java語言開發(fā)為例,簡單講講程序員是如何進(jìn)行軟件開發(fā)的。

(本部分參考了“軟帝在線”公眾號(hào)、博客園“架構(gòu)與我”的文章)。

1、新建java文件(或工程)

java源代碼本質(zhì)上就是普通的文本文件,可以用txt等工具編輯java代碼(程序員一般采用源代碼編輯工具,如:Notepad++;或集成開發(fā)工具IDE,如:Eclipse)。txt編寫后需將文件擴(kuò)展名改成java。

2、編寫代碼

以“Hello World”舉例編寫代碼:

publicclassHelloWorld{publicstaticvoidmain(String[] args){System.out.println("Hello World");}}

該程序表示的意思是輸出Hello World這樣一段話。

3、編譯程序

Java程序之所以能做到跨平臺(tái)運(yùn)行,是因?yàn)镴ava程序運(yùn)行在JVM中的,然而JVM只能夠識(shí)別字節(jié)碼文件,而不能直接識(shí)別Java文件。所以需要先將Java文件編譯成字節(jié)碼文件,即class文件,然后字節(jié)碼文件才能夠在JVM中運(yùn)行。

編譯文件,可以通過手動(dòng)執(zhí)行Dos命令javac,或直接用編譯器如Eclipse完成。

4、運(yùn)行程序

可在Dos命令窗口中輸入java命令,按回車,輸出Hello World;

或在編譯器的控制臺(tái)中看到輸出結(jié)果。

5、單元測試

單元測試(模塊測試)是開發(fā)者對(duì)編寫的一小段代碼,檢驗(yàn)一個(gè)很小的、很明確的功能是否正確。

通常采用JUnit框架(多數(shù)java開發(fā)環(huán)境已集成)進(jìn)行測試,即所謂白盒測試,叫“白盒”是因?yàn)槌绦騿T知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。

測試通過后,就完成了軟件開發(fā)階段,可以打包部署了。