決模棱兩可問(wèn)題的。如果不同的評(píng)審者從不同的角度對(duì)需求說(shuō)明給予解釋?zhuān)總€(gè)評(píng)審人員都真正了解需求文檔,這樣二義性就不會(huì)直到項(xiàng)目后期才被發(fā)現(xiàn),那時(shí)再發(fā)現(xiàn)的話會(huì)使得更正代價(jià)很大。
4. 不必要的特性
“畫(huà)蛇添足”是指開(kāi)發(fā)人員力圖增加一些“用戶(hù)欣賞”但需求規(guī)格說(shuō)明中并未涉及的新功能。經(jīng)常發(fā)生的情況是用戶(hù)并不認(rèn)為這些功能性很有用,以致在其上耗費(fèi)的努力“白搭”了。
開(kāi)發(fā)人員應(yīng)當(dāng)為客戶(hù)構(gòu)思方案并為他們提供一些具有創(chuàng)新意識(shí)的思路,具體提供哪些功能要在客戶(hù)所需與開(kāi)發(fā)人員在允許時(shí)限內(nèi)的技術(shù)可行性之間求得平衡,開(kāi)發(fā)人員應(yīng)努力使功能簡(jiǎn)單易用,而不要未經(jīng)客戶(hù)同意,擅自脫離客戶(hù)要求,自作主張。
同樣,客戶(hù)有時(shí)也可能要求一些看上去很“酷”,但缺乏實(shí)用價(jià)值的功能,而實(shí)現(xiàn)這些功能只能徒耗時(shí)間和成本。為了將“畫(huà)蛇添足”的危害盡量減小,應(yīng)確信:你明白為什么要包括這些功能,以及這些功能的“來(lái)龍去脈”,這樣使得需求分析過(guò)程始終是注重那些能使用戶(hù)完成他們業(yè)務(wù)任務(wù)的核心功能。
時(shí)刻記?。很浖晒Φ臉?biāo)準(zhǔn)是是否解決用戶(hù)的問(wèn)題,而不是它有多Cool的功能。
5. 過(guò)于精簡(jiǎn)的規(guī)格說(shuō)明
有時(shí),客戶(hù)并不明白需求分析有如此重要,于是只作一份簡(jiǎn)略之至的規(guī)格說(shuō)明,僅涉及了產(chǎn)品概念上的內(nèi)容,然后讓開(kāi)發(fā)人員在項(xiàng)目進(jìn)展中去完善,結(jié)果很可能出現(xiàn)的是開(kāi)發(fā)人員先建立產(chǎn)品的結(jié)構(gòu)之后再完成需求說(shuō)明。這種方法可能適合于尖端研究性的產(chǎn)品或需求本身就十分靈活的情況(McConnell 1996),不過(guò)商業(yè)應(yīng)用大多都不是這種情況。在大多數(shù)情況下,這會(huì)給開(kāi)發(fā)人員帶來(lái)挫折(使他們?cè)诓徽_的假設(shè)前提和極其有限的指導(dǎo)下工作),也會(huì)給客戶(hù)帶來(lái)煩惱(他們無(wú)法得到他們所設(shè)想的產(chǎn)品)。
6. 忽略了用戶(hù)分類(lèi)
大多數(shù)產(chǎn)品是由不同的人使用其不同的特性,使用頻繁程度也有所差異,使用者受教育程度和經(jīng)驗(yàn)水平也不盡相同。如果你不能在項(xiàng)目早期就針對(duì)所有這些主要用戶(hù)進(jìn)行分類(lèi)的話,必然導(dǎo)致有的用戶(hù)對(duì)產(chǎn)品感到失望。例如,菜單驅(qū)動(dòng)操作對(duì)高級(jí)用戶(hù)太低效了,但含義不清的命令和快捷鍵又會(huì)使不熟練的用戶(hù)感到困難。
7. 不準(zhǔn)確的計(jì)劃
“上述是我對(duì)新產(chǎn)品的看法,好,現(xiàn)在你能告訴我你什么時(shí)候能完成嗎?”許多開(kāi)發(fā)人員都遇到這種難題。對(duì)需求分析缺乏理解會(huì)導(dǎo)致過(guò)分樂(lè)觀的估計(jì),而當(dāng)不可避免的超支發(fā)生時(shí),會(huì)帶來(lái)頗多麻煩。據(jù)報(bào)道,導(dǎo)致需求過(guò)程中軟件成本估計(jì)極不準(zhǔn)確的原因主要有以下五點(diǎn):頻繁的需求變更、遺漏的需求、與用戶(hù)交流不夠、質(zhì)量低下的需求規(guī)格說(shuō)明和不完善的需求分析(Davis 1995)。
對(duì)不準(zhǔn)確的要求所提問(wèn)題的正確響應(yīng)是“等我真正明白你的需求時(shí),我就會(huì)來(lái)告訴你”?;诓怀浞中畔⒑臀唇?jīng)深思的對(duì)需求不成熟的估計(jì)很容易為一些因素左右。要作出估計(jì)時(shí),最好還是給出一個(gè)范圍(如最好的情況下,很可能的,最壞情況下)或一個(gè)可信賴(lài)的程度(我有9 0 的把握,我能在8周內(nèi)完成)。未經(jīng)準(zhǔn)備的估計(jì)通常是作為一種猜測(cè)給出的,聽(tīng)者卻認(rèn)為是一種承諾。因此我們要盡力給出可達(dá)到的目標(biāo)并堅(jiān)持完成它。
什么是優(yōu)秀的需求
討論軟件需求的文章有很多,對(duì)于需求的標(biāo)準(zhǔn)也不盡相同,這里我想用NASA的軟件開(kāi)發(fā)過(guò)程中的概念,軟件需求過(guò)程的標(biāo)準(zhǔn)是:清楚(Clear)、完整(Complete)、一致(Consistent)、可測(cè)試(Testable),此外還有其他的概念,如可跟蹤的、可修改的等等。
清楚:目前大多數(shù)的需求分析采用的仍然是自然語(yǔ)言(因?yàn)槿绻捎眯问交Z(yǔ)言的話,和用戶(hù)的溝通將成為一個(gè)大問(wèn)題,這意味著客戶(hù)在開(kāi)發(fā)軟件之前必須先進(jìn)