想做程序員?你需要了解軟件的生命周期(上)

一、市場需求調(diào)研
目前軟件研發(fā)需求來源主要有兩種渠道:
一是軟件公司主動挖掘市場需求,從而開發(fā)出解決大眾需求的軟件系統(tǒng),此需求來源所研發(fā)的軟件一般稱為產(chǎn)品,從用戶角度而言,需求由軟件公司提出,用戶被動接收,屬于被動模式。
另一種則是由用戶主動提出需求,由軟件公司負(fù)責(zé)設(shè)計開發(fā),一般稱為項目,從用戶角度而言,需求由用戶主動提出來,屬于主動模式。

軟件產(chǎn)品開發(fā)往往沒有明確的需求提出者或者最終客戶。需求由軟件公司市場人員根據(jù)社會用戶的需求來確定軟件需求。例如,某公司市場人員覺得目前做手機(jī)游戲利潤比較高,則可能發(fā)起某項市場調(diào)查,看看潛在客戶是否有采購意向。這種模式風(fēng)險較高,用戶群不確定,需求通常不夠明確,產(chǎn)品開發(fā)過程中可能面臨著需求頻繁變更風(fēng)險及后期銷售不力的情況。產(chǎn)品研發(fā)往往是長期的,如騰訊公司的QQ產(chǎn)品,已持續(xù)生產(chǎn)研發(fā)了近20年,仍在不斷優(yōu)化改進(jìn)。
與產(chǎn)品相比,軟件項目的研發(fā)風(fēng)險相對小很多。當(dāng)特定客戶因自身需求需要研發(fā)某種軟件系統(tǒng)時,由軟件公司進(jìn)行設(shè)計開發(fā)。在這種情況下,對軟件公司而言,客戶想開發(fā)什么,就開發(fā)什么,需求往往是明確的,并且項目資金也比較充足,項目失敗的風(fēng)險較小。業(yè)務(wù)系統(tǒng)基本都以項目運(yùn)作方式,如銀行的柜臺交易系統(tǒng)、網(wǎng)上銀行系統(tǒng)等。
無論是產(chǎn)品還是項目,經(jīng)過初步需求溝通后,正常情況下都會有初步需求分析報告。
針對產(chǎn)品,市場人員經(jīng)過市場調(diào)研、分析后輸出《×××市場分析報告》,闡述產(chǎn)品功能及市場前景等信息。
針對項目,軟件公司與需求提出者初步溝通后,輸出《×××系統(tǒng)初步需求預(yù)研報告》,便于進(jìn)行可行性研究。
二、可行性研究
產(chǎn)品項目可行性研究是以企業(yè)研發(fā)能力為前提,以投資收益為目的,從技術(shù)、成本、管理、風(fēng)險控制等方面對產(chǎn)品或項目進(jìn)行全面分析研究的方法,預(yù)測其投產(chǎn)后的經(jīng)濟(jì)效益,在既定范圍內(nèi)進(jìn)行方案論證與選擇,以便最合理地利用資源,達(dá)到預(yù)定的社會效益和經(jīng)濟(jì)效益。
從軟件生產(chǎn)角度來看,可行性研究的重點(diǎn)是解決前期市場調(diào)研的產(chǎn)品或項目是否可行,能否在一定的成本壓力下,持續(xù)地為公司或企業(yè)帶來適當(dāng)?shù)睦妫瑹o論是社會效益還是經(jīng)濟(jì)效益。通常情況,軟件產(chǎn)品成敗受4個方面的約束:Time(時間)、Scope(范圍)、Cost(成本)、Risk(風(fēng)險)。在可行性研究階段,如何找出這4個方面的平衡點(diǎn),是需要優(yōu)先解決的問題。
三、產(chǎn)品項目立項
經(jīng)過市場需求調(diào)研、可行性研究評審確認(rèn)可行后,需求調(diào)研人員(市場人員、需求分析人員或客戶經(jīng)理)牽頭,進(jìn)行產(chǎn)品或項目立項活動,構(gòu)建產(chǎn)品或項目研發(fā)小組,制定產(chǎn)品運(yùn)作計劃,如需求開發(fā)、系統(tǒng)設(shè)計開發(fā)、系統(tǒng)測試、軟件發(fā)布、運(yùn)行維護(hù)等一系列工作的步驟及時間點(diǎn)。產(chǎn)品立項階段軟件研發(fā)團(tuán)隊成員包括項目經(jīng)理、開發(fā)經(jīng)理、研發(fā)工程師、測試經(jīng)理,測試工程師一般后期加入,如到需求評審或系統(tǒng)測試設(shè)計時。
四、需求調(diào)研開發(fā)
產(chǎn)品或項目立項后,需進(jìn)行詳細(xì)的需求調(diào)研。需求調(diào)研同樣有兩種模式:主動模式和被動模式。
在主動模式下,軟件公司派出需求調(diào)研小組與用戶直接溝通,獲得正確可靠的需求。小組成員一般是客戶代表、需求開發(fā)者或開發(fā)人員;被動模式由軟件公司市場調(diào)研人員根據(jù)市場產(chǎn)品需求信息分析判斷,無明確的需求提出者,得到較為粗泛的需求。
需求調(diào)研是整個軟件生產(chǎn)活動中最為重要的環(huán)節(jié),此環(huán)節(jié)輸出的一切成果都是后續(xù)工作的基準(zhǔn)。很多公司在需求調(diào)研開發(fā)階段會投入較長的時間,花費(fèi)大量人力、物力,保證需求調(diào)研的充分性及正確性。從軟件測試角度來說,測試工程師亦需在這個階段參與進(jìn)來,測試工程師如能在需求調(diào)研開發(fā)階段接觸初始需求,對保證整個項目的測試質(zhì)量具有積極意義。
在需求調(diào)研開發(fā)階段,每一個需求都需與客戶、市場需求反復(fù)驗證確認(rèn),最終得到規(guī)范的需求規(guī)格說明書。需求規(guī)格說明書(Software Requirements Specification,SRS)作為用戶與軟件公司雙方約定的一個合同制文檔,通常情況下從軟件系統(tǒng)功能、性能、外部接口等方面闡述用戶提出的顯性或隱性需求,并以此作為后續(xù)軟件生產(chǎn)活動的基準(zhǔn)輸入。故在需求調(diào)研、需求開發(fā)、需求評審、需求管理環(huán)節(jié)需花費(fèi)大量的時間及精力。

