在軟件開(kāi)發(fā)過(guò)程中,需求分析是最開(kāi)始的工作 ,需求分析如果做得不夠詳細(xì)或者是偏離用戶需求的話,往往會(huì)給項(xiàng)目帶來(lái)滅絕性的災(zāi)難。因此如何保證需求分析的正確性,不偏離用戶的需求就成了決定軟件項(xiàng)目成敗的關(guān)鍵。
需求工程師取得用戶的顯性需求后,要仔細(xì)的分析用戶到底要求軟件實(shí)現(xiàn)什么功能,用戶的表達(dá)和需求工程師的理解有時(shí)間并不會(huì)一致,這樣會(huì)導(dǎo)致用戶所想的和需求說(shuō)明書(shū)上所描述的有偏差。并且需求工程師取得用戶的需求后必須做仔細(xì)透徹的分析,有時(shí)候用戶的需求并不一定正確,可能是用戶忽然的想法,并不可行。如果需求工程師不能對(duì)用戶提出的需求進(jìn)行判斷的話,可能辛辛苦苦的實(shí)現(xiàn)了用戶需求,結(jié)果被用戶自己否決掉。用戶絕對(duì)不會(huì)將責(zé)任攬到自己身上,他們只會(huì)說(shuō)“你們是專家,怎么能怪我呢?”。
網(wǎng)上有一幅漫畫(huà)形象地描述了信息在傳遞過(guò)程中產(chǎn)生的誤差。
需求分析師是項(xiàng)目中直接與客戶接觸的人,需求做的好不好決定項(xiàng)目成敗,因此對(duì)于需求規(guī)格說(shuō)明書(shū)的正確性必須進(jìn)行徹底的驗(yàn)證,將錯(cuò)誤在開(kāi)工前就消滅。
通常有兩種手段來(lái)檢查需求的正確性,分別是需求評(píng)審和需求測(cè)試 。
1、 需求評(píng)審
需求評(píng)審可以分為正式評(píng)審與非正式評(píng)審,在需求規(guī)格說(shuō)明書(shū)完成后,需求組必須自己對(duì)需求做評(píng)審。如果需求組遞交的需求規(guī)格說(shuō)明書(shū)在指導(dǎo)后面的工作的時(shí)候出現(xiàn)很明顯的錯(cuò)誤,我想拿高工資的需求分析人員是無(wú)法向老板交差的。為了需求分析人員的名譽(yù),他們自己會(huì)對(duì)自己提交的內(nèi)容進(jìn)行審核,直到他們認(rèn)為自己的工作成果足夠好,才會(huì)將需求規(guī)格說(shuō)明書(shū)提交給正式評(píng)審組。
正式評(píng)審組的成員一般由公司內(nèi)經(jīng)驗(yàn)最豐富,技術(shù)最牛的人(技術(shù)總監(jiān))來(lái)?yè)?dān)任,當(dāng)然參加評(píng)審的人中間還應(yīng)該有項(xiàng)目經(jīng)理、QA人員、測(cè)試人員、架構(gòu)師,他們仔細(xì)閱讀需求規(guī)格說(shuō)明書(shū),并針對(duì)自己將要開(kāi)展的工作內(nèi)容進(jìn)行檢查,并提出問(wèn)題。
正式評(píng)審是最后一關(guān),如果正式評(píng)審?fù)ㄟ^(guò)了,將進(jìn)入系統(tǒng)設(shè)計(jì)階段,如果在系統(tǒng)設(shè)計(jì)階段再跨里程碑來(lái)修改需求的話,所花費(fèi)的代價(jià)將大大增加。因此正式評(píng)審將是一個(gè)“雞蛋里挑骨頭”的過(guò)程,只有所有的人都認(rèn)為需求已經(jīng)沒(méi)有什么可挑剔評(píng)審才能通過(guò)。
2、 需求測(cè)試
可以認(rèn)為需求評(píng)審也屬于需求測(cè)試范圍,但是這里提的需求測(cè)試和評(píng)審不同,它是測(cè)部門(mén)來(lái)測(cè)試需求是否符合用戶的要求。顯然這是有難度的,傳統(tǒng)的測(cè)試工作都是從單元測(cè)試 開(kāi)始,編碼之前全部做得都是計(jì)劃性工作。測(cè)試人員對(duì)需求分析進(jìn)行測(cè)試?那么前提條件是測(cè)試人員必須熟悉需求分析,這對(duì)測(cè)試人員的要求提高了。將需求測(cè)試人員作為測(cè)試人員中的特殊種類來(lái)培養(yǎng),能夠?qū)π枨笫欠裾_進(jìn)行檢查,這樣就能夠在需求階段就引入測(cè)試。當(dāng)然需求測(cè)試人員可以是經(jīng)過(guò)培訓(xùn)的需求分析人員,但是他必須脫離需求組,加入測(cè)試部門(mén),這樣才能保證測(cè)試不是自己人測(cè)自己,以保證測(cè)試的效果。
需求測(cè)試不等同于后面階段集成測(cè)試或者系統(tǒng)測(cè)試 ,后面的測(cè)試都是軟件已經(jīng)編寫(xiě)完成的條件下,判斷軟件是否會(huì)出錯(cuò)。而需求測(cè)試,只是驗(yàn)證需求是否真的是用戶的。對(duì)于需求的功能測(cè)試 ,可以用RAD工具建立界面原型,用戶通過(guò)原型的操作來(lái)確定是否需求跟他的期望相同。對(duì)于那些用戶不合理的需求,測(cè)試人員要能夠分辨出來(lái),并跟用戶進(jìn)行核對(duì),確定用戶的真實(shí)需求??梢哉f(shuō)需求測(cè)試是需求測(cè)試人員和用戶共同來(lái)執(zhí)行的。
之所以將需求測(cè)試和需求評(píng)審并行進(jìn)行,是因?yàn)樾枨笤u(píng)審是項(xiàng)目的各方干系人共同進(jìn)行的檢查工作,評(píng)審工作關(guān)注的焦點(diǎn)是分散的,很難將偏離用戶的需求檢查出來(lái),并且涉及的人很多,因此不可能耗費(fèi)太長(zhǎng)時(shí)間。而需求測(cè)試執(zhí)行的時(shí)間可以比評(píng)審時(shí)間長(zhǎng),有專門(mén)的關(guān)注方面,能夠檢查出不合理的需求分析,在項(xiàng)
目前期進(jìn)行錯(cuò)誤糾正,往往比實(shí)現(xiàn)后糾正要節(jié)約幾百甚至幾千倍的成本。