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

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

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

