問題是在哪里:用透視修飾全文(使用透視修飾全文)
799
2025-04-02
事實(shí)1
需求其實(shí)并非在談需求。
對(duì)于軟件產(chǎn)品、硬件產(chǎn)品、服務(wù)或任何你想構(gòu)建的東西,需求就是它們要做的事或要成為的東西。不論你發(fā)現(xiàn)還是沒發(fā)現(xiàn),寫下來或沒寫下來,需求都存在。顯然,除非產(chǎn)品滿足需求,否則就不對(duì)。所以從這個(gè)角度你可以認(rèn)為,需求是某種自然法則,等著你來發(fā)現(xiàn)。
這就是說,需求活動(dòng)主要不是編寫需求文檔。相反,它專注于理解業(yè)務(wù)問題,并為之提供解決方案。軟件是要解決某種問題,硬件和服務(wù)也是。需求發(fā)現(xiàn)的真正藝術(shù)是發(fā)現(xiàn)真實(shí)的問題。只要你做到了這一點(diǎn),就為識(shí)別和選擇不同的解決方案奠定了基礎(chǔ)。所以,從本質(zhì)上說,需求與編寫需求無關(guān),而是發(fā)現(xiàn)要解決的問題。
另外,當(dāng)我們說“業(yè)務(wù)”、“業(yè)務(wù)問題”或“工作”時(shí),我們的意思就是你所關(guān)心的各種活動(dòng),它們可以是商業(yè)上的、科學(xué)上的、嵌入式的、政府的、軍方的,實(shí)際上也可以是所有其他類型的活動(dòng)、服務(wù)或消費(fèi)品。
此外,在本書中,當(dāng)我們說“他”(常指業(yè)務(wù)分析師)時(shí),我們的意思是“他或她”。我們發(fā)現(xiàn)說“他或她”或“他/她”很不方便。請(qǐng)相信,需求工作不分性別。
事實(shí)2
如果我們必須構(gòu)建軟件,那么它必須為擁有它的人提供最理想的價(jià)值。
請(qǐng)注意,我們關(guān)注最終結(jié)果的擁有者,只是間接地關(guān)注用戶。這種關(guān)注似乎與通常的優(yōu)先級(jí)相反,所以我們最好解釋一下。
擁有者是為軟件(也可以是硬件或其他要構(gòu)建的產(chǎn)品)付費(fèi)的人或組織,不論擁有者為該軟件的開發(fā)付了錢,還是從別處購買了該軟件。軟件部署時(shí)造成的業(yè)務(wù)影響,也是擁有者付出的成本。另一方面,擁有者從軟件中得到好處。描述這種關(guān)系非常簡單,擁有者花錢買好處。
我們可以用另一種方式來表述:除非產(chǎn)品提供了利益,否則擁有者不會(huì)付錢。這種利益通常表現(xiàn)為提供某種以前沒有的能力,或改變某種業(yè)務(wù)過程,使之更快、更便宜、更方便。自然,這種利益為擁有者提供的價(jià)值,必須超過開發(fā)該產(chǎn)品的成本(參見圖1)。
圖1 隨著軟件變得越來越強(qiáng)大、成本越來越高,軟件帶來的利益也越來越大。但在某一點(diǎn),構(gòu)建的成本開始超過利益,項(xiàng)目就不再盈利了
要最好地體現(xiàn)價(jià)值,產(chǎn)品提供的利益必須與產(chǎn)品的成本相稱。在某些情況下,如果帶給擁有者的價(jià)值足夠大,產(chǎn)品可以成本很高。例如,航空公司愿意付大量的錢來開發(fā)模擬器,確保飛行員獲得合適的資質(zhì)和技能。如果他們沒有合適的資質(zhì)和技能,就會(huì)造成生命財(cái)產(chǎn)損失。航空公司可能也會(huì)花大量的錢來開發(fā)自動(dòng)化的值機(jī)系統(tǒng),因?yàn)檫@將大幅減少乘客登機(jī)的成本。同一家航空公司只愿花很少的錢來開發(fā)食堂員工花名冊(cè)系統(tǒng),因?yàn)槭聦?shí)是:這類任務(wù)可以手工完成,食堂里的人不對(duì)可能帶來煩惱,但幾乎不會(huì)對(duì)生命構(gòu)成威脅。
需求發(fā)現(xiàn)者(稱為“業(yè)務(wù)分析師”、“需求工程師”、“產(chǎn)品擁有者”、“系統(tǒng)分析師”或其他頭銜)的職責(zé),就是確定擁用者看重的價(jià)值是什么。在某些情況下,提供一個(gè)小系統(tǒng),解決一些小問題就能夠?yàn)閾碛姓咛峁┳銐虻睦妫屗麄冇X得值。在另一些情況下(可能這種情況很多),擴(kuò)展系統(tǒng)的功能將提供很大的價(jià)值,并且可能只要增加少量成本就可以實(shí)現(xiàn)。這都取決于擁有者認(rèn)為什么有價(jià)值。
然后就是最佳價(jià)值:充分理解擁有者的問題,以便交付一個(gè)解決方案,以最好的價(jià)格提供最好的回報(bào)。
事實(shí)3
如果軟件不必滿足要求,那你怎么干都行。但是,如果它打算滿足要求,你就必須知道要求是什么,才能構(gòu)建正確的軟件。
這樣思考很有價(jià)值:如果開發(fā)者正確地理解了產(chǎn)品打算為用戶完成什么,以怎樣的方式完成,這些產(chǎn)品就是最有用的。要理解這些事情,你必須理解擁有者的業(yè)務(wù)工作,并決定將來工作如何進(jìn)行。
如果這些事情得到理解并達(dá)成了一致意見,業(yè)務(wù)分析師就與擁有者溝通,探討怎樣的產(chǎn)品能為工作帶來最大的改進(jìn)。業(yè)務(wù)分析師得到需求,描述產(chǎn)品的功能(它要做什么)以及產(chǎn)品的屬性(它做到什么程度)。
不知道這些需求,開發(fā)項(xiàng)目得到的產(chǎn)品就不太可能有太大價(jià)值。除了少數(shù)撞大運(yùn)的意外,沒有產(chǎn)品能在事先不理解需求的情況下成功。
不論擁有者希望做哪種工作,科學(xué)的、商務(wù)的、電子商務(wù)的或社交網(wǎng)絡(luò)的,也不論使用什么開發(fā)語言或開發(fā)工具來構(gòu)建產(chǎn)品,開發(fā)生命周期(敏捷、原型、螺旋、Rational統(tǒng)一過程或其他方法)也與理解需求的要求無關(guān)。
這一事實(shí)總是會(huì)出現(xiàn):你必須得到需求的正確理解,并與客戶達(dá)成一致意見,否則你的產(chǎn)品或項(xiàng)目就會(huì)有嚴(yán)重的缺陷。
有兩次我被問到:“請(qǐng)告訴我,Babbage先生,如果向機(jī)器輸入錯(cuò)誤的數(shù)字,會(huì)得到正確的答案嗎?”我無法理解問出這種問題的混亂思維。 ?????——Charles?Babbage
事實(shí)4
構(gòu)建一個(gè)軟件和解決一個(gè)業(yè)務(wù)問題之間,存在巨大的差別。前者不一定實(shí)現(xiàn)后者。
許多軟件開發(fā)項(xiàng)目只關(guān)注軟件。這也許看起來很合理,畢竟,大多數(shù)軟件項(xiàng)目設(shè)法開發(fā)出某種軟件。然而,只關(guān)注軟件有點(diǎn)像在建帕臺(tái)農(nóng)神廟時(shí)只關(guān)注石頭。軟件要對(duì)擁有者有價(jià)值,就必須解決擁有者的業(yè)務(wù)問題。
我們開發(fā)了相當(dāng)多的軟件。每年產(chǎn)生數(shù)千萬行代碼(也可能是數(shù)億行)。這些代碼中包含許多錯(cuò)誤,最多的錯(cuò)誤是需求錯(cuò)誤。因此,世界上相當(dāng)多的軟件不能解決正確的問題。
某些開發(fā)過程基于一種理念,即向目標(biāo)用戶交付某種功能,然后請(qǐng)他們來說是否能解決他們的問題。如果不能解決,軟件就返工一下,然后再次展示并請(qǐng)求批準(zhǔn)。這樣做有一個(gè)問題:我們永遠(yuǎn)不知道用戶批準(zhǔn)前一次交付是因?yàn)閷?duì)它滿意,還是因?yàn)楸贿^程搞得筋疲力盡。
最重要的是,很難讓單個(gè)用戶理解部署一個(gè)軟件在更大范圍內(nèi)造成的影響。通常軟件用戶不知道更大業(yè)務(wù)的足夠信息,不能確定具體應(yīng)用這種軟件是否會(huì)對(duì)業(yè)務(wù)的其他部分帶來問題。
就算是啰嗦,我們也要再次強(qiáng)調(diào),軟件就是要解決一個(gè)業(yè)務(wù)問題。于是很清楚,所有開發(fā)工作都必須從問題開始,而不是從看到的解決方案開始。
事實(shí)5
需求不一定要寫下來,但構(gòu)建者必須知道它們。
通常,需求項(xiàng)目的目標(biāo)看起來就是盡可能得到一份厚厚的需求規(guī)格說明書。很少有人能理解它的大部分內(nèi)容,甚至更少的人有耐心去讀它,但這似乎都不重要。需求編寫者相信,需求規(guī)格說明書越厚,他們的工作就越會(huì)受到欣賞。
在寫好之后,這份可觀的文檔就被拋過墻頭(或者應(yīng)該說用鏟車拋過墻頭),交給開發(fā)者,盼望這些人對(duì)厚厚一疊規(guī)格說明書感到高興。畢竟,它的頁數(shù)越多,內(nèi)容遺漏的可能性就越少。也許理論上是這樣。自然,開發(fā)者幾乎總是對(duì)這種文檔毫無興趣,要么忽略它,要么固執(zhí)地堅(jiān)持它。這兩種方式的最終結(jié)果,通常都不能令人滿意。
雖然有這種奇怪的行為,我們?nèi)匀恍枰治鲂枨螅⑦@些需求告訴給開發(fā)團(tuán)隊(duì)(參見圖2)。
圖2 自然,需要和產(chǎn)品構(gòu)建者溝通需求
需求是否寫下來,這不是問題的要點(diǎn)。在某些情況下,口頭溝通需求更有效,在另一些情況下,必須永久地記錄下需求。
雖然口頭溝通需求效率高,但我們覺得,所有需求都用這種方式來溝通是不可行的。在很多時(shí)候,編寫需求的活動(dòng)有助于業(yè)務(wù)分析師和利益相關(guān)者徹底理解需求。除了改進(jìn)理解之外,正確編寫需求也提供了追蹤文檔。需求的理由,或故事卡上的緣故,記錄了團(tuán)隊(duì)的決定。它也為測試者和開發(fā)者提供了清晰的指示,說明了需求的重要性,從而建議需要花多少工作量。此外,如果維護(hù)者知道為什么有這項(xiàng)需求,也會(huì)降低將來維護(hù)的成本。
需求并不是要為項(xiàng)目增加額外的負(fù)擔(dān),所以除非很有必要,否則就不應(yīng)該寫任何東西。但是,如果有需要,那么編寫需求的工作將帶來數(shù)倍的回報(bào),因?yàn)樾枨蟮臏?zhǔn)確性和對(duì)將來維護(hù)工作的減少。
事實(shí)6
客戶不一定總能給你正確答案。有時(shí)候客戶也不可能知道什么是對(duì)的,有時(shí)候他就是不知道需要什么。
傳統(tǒng)來講,需求活動(dòng)被看成是某種類似速記員的任務(wù)。也就是說,業(yè)務(wù)分析師仔細(xì)聆聽利益相關(guān)者,準(zhǔn)確記錄他們說的所有東西,并將他們的要求翻譯成產(chǎn)品的需求。
這種方式的缺點(diǎn)是,它沒有考慮到利益相關(guān)者在試圖描述需求時(shí)的困難。展望一個(gè)產(chǎn)品來解決一個(gè)問題,這不是一項(xiàng)簡單的任務(wù),尤其是問題并非總是理解得很徹底。考慮到今天業(yè)務(wù)的復(fù)雜性和規(guī)模,個(gè)人確實(shí)很難理解業(yè)務(wù)所有適當(dāng)?shù)牟糠帧?/p>
我們也有“增量改進(jìn)”的問題。在詢問有關(guān)新系統(tǒng)時(shí),利益相關(guān)者常常會(huì)描述原有的系統(tǒng),并加上一些改進(jìn)。這種增量的方式通常排除了所有重大的創(chuàng)新,常常會(huì)導(dǎo)致平庸的產(chǎn)品,不能滿足期望。
業(yè)務(wù)分析師必須表演戲法。有時(shí)候他必須記錄下客戶的要求,有時(shí)候他必須說服客戶,他們要求的并不是他們需要的,有時(shí)候他必須從客戶的解決方案中導(dǎo)出需求,有時(shí)候他必須提出沒有人提到的創(chuàng)新,得到更好的解決方案。在所有情況下他都應(yīng)該想到,每個(gè)利益相關(guān)者都可能是匹諾曹(見圖3),不要什么都相信。
圖3 有時(shí)候,你的客戶就像匹諾曹,不會(huì)告訴你全部事實(shí)
事實(shí)7
需求不是偶然得到的,要通過某種有序的過程得到。
所有重要的努力都需要有序的過程。隨機(jī)使用鋼筋和水泥不會(huì)建成大樓,需要一個(gè)定義的過程來設(shè)計(jì)和建造這樣的結(jié)構(gòu)。類似地,有一個(gè)定義的、系統(tǒng)的過程來拍電影。摩托車也是通過有序的過程來設(shè)計(jì)和建造的,你的最近一次飛行也是一組有序的過程,幾 乎是逐字執(zhí)行的。甚至藝術(shù)工作,如寫小說和畫畫,藝術(shù)家都會(huì)遵循一個(gè)有序的過程。
這些過程不是因循守舊的過程,不是無頭腦地執(zhí)行所有指令,不問任何問題,按預(yù)先描述的順序,沒有任何變通。相反,有序的過程由一組任務(wù)構(gòu)成,實(shí)現(xiàn)預(yù)期的結(jié)果,但這些任務(wù)的次序、重點(diǎn)和應(yīng)用程度需要采用該過程的人或團(tuán)隊(duì)來決定。
最重要的是,參與這個(gè)過程的人必須能看到,為什么過程中不同的任務(wù)是重要的,哪些任務(wù)對(duì)項(xiàng)目最重要。
事實(shí)8
你怎么迭代都可以,但仍需要理解業(yè)務(wù)的需求。
迭代式開發(fā)方法變得越來越流行,這肯定是有意義的進(jìn)步,但像很多進(jìn)步一樣,這些技術(shù)有時(shí)候炒作過度了。例如,我們?cè)牭接腥苏f(也有人印刷出版),迭代式交付讓需求變得多余。
冷靜的頭腦會(huì)意識(shí)到,任何開發(fā)技術(shù)都需要發(fā)現(xiàn)需求,這是認(rèn)真開發(fā)的先決條件。因此,冷靜的頭腦已經(jīng)將需求過程吸收到他們的開發(fā)生命周期中。聰明的方法不是廢除需求,而是從一個(gè)不同的方向接近需求。
真正值得關(guān)注的是既要發(fā)現(xiàn)需求,又不必編寫無用的、不成熟的、浪費(fèi)的成堆文檔(這適用于所有類型的開發(fā)技術(shù))。
不論你怎樣開發(fā)軟件,總是要理解客戶的業(yè)務(wù)問題,以及產(chǎn)品必須做些什么來解決這個(gè)問題(即它的需求)。
事實(shí)9
沒有銀彈。所有方法和工具都無法彌補(bǔ)糟糕的想法和糟糕的手藝。
雖然我們需要一個(gè)有序的過程,但不應(yīng)該認(rèn)為它能夠代替思考。過程有幫助,但它們對(duì)聰明人幫助較大,對(duì)不準(zhǔn)備思考的人幫助較小。對(duì)于需求過程來說,這一點(diǎn)尤其正確。在需求過程中,業(yè)務(wù)分析師需要面對(duì)幾個(gè)版本的需求,同時(shí)還要想象未來最好的軟件產(chǎn)品是怎樣的。
需求活動(dòng)一點(diǎn)兒也不簡單,要想成功,就需要業(yè)務(wù)分析師的思考和理解。一些自動(dòng)化工具可以有所幫助,但它們只能作為輔助手段,而不能替代好的需求實(shí)踐。盲目遵循事先制定的實(shí)踐,根本不能取得有經(jīng)驗(yàn)的業(yè)務(wù)分析師能取得的結(jié)果。分析師使用最重要的工具:頭腦、眼睛和耳朵。
事實(shí)10
要想成功地實(shí)現(xiàn)需求,需求就必須可度量、可測試。
從本質(zhì)上說,功能需求是產(chǎn)品支持其擁有者的業(yè)務(wù)時(shí)必須做的事。非功能需求是產(chǎn)品要在擁有者的環(huán)境中取得成功,必須將功能完成得多好的量化描述。
要讓構(gòu)建的產(chǎn)品完全滿足這些標(biāo)準(zhǔn),在編寫需求時(shí)就必須準(zhǔn)確。同時(shí),必須考慮到需求來自于人,而人并非總是準(zhǔn)確,可能總是不準(zhǔn)確。要達(dá)到必要的準(zhǔn)確程度,必須對(duì)需求進(jìn)行某種測量。如果可以用數(shù)字代替文字來測量需求,就能讓需求可測試。
例如,如果你的產(chǎn)品有一個(gè)需求是“應(yīng)該對(duì)新用戶有吸引力”,那么就可以建立一個(gè)測量指標(biāo),即初次使用的用戶能夠在2分鐘內(nèi)成功建立一個(gè)賬戶,對(duì)于用戶應(yīng)該知道的所有數(shù)據(jù)項(xiàng),都不會(huì)有超過5秒鐘的猶豫,如他的姓名、郵件地址和類似的數(shù)據(jù)項(xiàng)。(猶豫時(shí)間是測量產(chǎn)品直觀程度的指標(biāo),是對(duì)用戶的吸引力的一部分。)自然,如果你用這種方式來測量需求,測試人員就可以確定產(chǎn)品(有時(shí)候是產(chǎn)品原型)是否滿足需求。
可以很放心地說,如果你不能為需求找到測量指標(biāo),那它就不是需求,只是一種無根據(jù)的想法。
事實(shí)11
作為業(yè)務(wù)分析師,你將改變用戶思考這個(gè)問題的方式,不是現(xiàn)在就是將來。
在你開始理解需求時(shí),尤其在需求來自于不同的利益相關(guān)者時(shí),你就開始建立一些抽象概念,并建立一個(gè)詞匯表。你展示業(yè)務(wù)過程的模型,與利益相關(guān)者一起發(fā)現(xiàn)工作的本質(zhì),得到清晰和可測量的需求,并將所有這些事實(shí)反饋給利益相關(guān)者。在做這些事情時(shí),你就會(huì)改變(改進(jìn))他們對(duì)業(yè)務(wù)問題的看法。
如果人們對(duì)需求的含義有了更好的理解,他們就可能看到改進(jìn)的辦法。你的一部分工作就是幫助人們盡早理解和質(zhì)疑他們的需求,這樣他們就可以幫助你發(fā)現(xiàn)他們真正的需求。
需求究竟是什么
在了解這些事實(shí)之后,我們一直在討論的需求到底是什么呢?簡而言之,需求就是產(chǎn)品支持其擁有者的業(yè)務(wù)所必須完成的事,或讓擁有者接受并感興趣所必須具備的品質(zhì)。需求之所以存在,要么因?yàn)樵擃愋偷漠a(chǎn)品要求某些功能和品質(zhì),要么因?yàn)榭蛻粝M撔枨蟪蔀榻桓兜漠a(chǎn)品的一部分。
功能需求是產(chǎn)品必須完成的那些事。 ??產(chǎn)品應(yīng)該生成一份所有道路的除冰調(diào)度表,這些道路在給定的時(shí)間參數(shù)內(nèi)預(yù)計(jì)會(huì)結(jié)冰。
這類需求是產(chǎn)品要做的一件事。產(chǎn)品要在擁有者的業(yè)務(wù)背景下有用,就必須做這件事。你可以推斷,上例中的擁有者是一個(gè)組織機(jī)構(gòu),負(fù)責(zé)保持道路的安全,實(shí)現(xiàn)方式是分派卡車,在快要結(jié)冰的道路上播撒除冰物質(zhì)。
產(chǎn)品必須在0.25秒以內(nèi)確定對(duì)方是“朋友”還是“敵人”。 ??非功能需求是產(chǎn)品必須具備的屬性或品質(zhì)。
有時(shí)它們作為需求的原因是為了改進(jìn)產(chǎn)品,或讓人們想買它。例如:
產(chǎn)品應(yīng)該提供愉快的用戶體驗(yàn)。
有時(shí)它們讓產(chǎn)品可用:
產(chǎn)品應(yīng)該能被到達(dá)大廳的旅行者使用,這些旅行者可能不使用當(dāng)?shù)氐恼Z言。
非功能需求可能開始看起來很模糊,或不完整。在本書后面的內(nèi)容中,我們會(huì)看到如何為它們制定驗(yàn)收標(biāo)準(zhǔn),讓它們可度量、可測試。
限制條件是全局性的需求。它們可以是對(duì)項(xiàng)目本身的限制,或是對(duì)產(chǎn)品最終設(shè)計(jì)的限制。例如,這是一個(gè)項(xiàng)目限制條件:
產(chǎn)品必須在新的稅務(wù)年度開始前準(zhǔn)備好。 ??限制條件是一個(gè)全局問題,約束著所有的需求。
產(chǎn)品的客戶是在說,如果顧客不能在新的稅務(wù)年度中使用該產(chǎn)品,那么它就沒有什么用了。其效果是,需求分析師必須對(duì)需求進(jìn)行限制,只包括那些在最后期限內(nèi)能夠提供最大價(jià)值的需求。
還有一些限制條件是針對(duì)產(chǎn)品的最終設(shè)計(jì)和構(gòu)造的。例如,下面的例子:
產(chǎn)品應(yīng)該作為iPad、iPhone、Android和Blackberry應(yīng)用來運(yùn)行。
如果這是一個(gè)真正的業(yè)務(wù)限制條件,而不只是某種看法或觀點(diǎn),那么不滿足這個(gè)限制條件的所有解決方案顯然是不能接受的。
不論限制了什么,限制條件都可以看成是另一種類型的需求,參見圖4。
限制條件只是另一種類型的需求。
圖4 最終產(chǎn)品的功能受到限制條件的約束。功能性是用戶能得到的好處,但“交付”功能性的非功能需求讓產(chǎn)品可用,被用戶接受
本文節(jié)選自《掌握需求過程(第3版)》
內(nèi)容簡介
本書可作為軟件開發(fā)人員在開發(fā)過程中隨時(shí)參考的手冊(cè),是產(chǎn)品經(jīng)理、系統(tǒng)分析師、軟件開發(fā)者和測試者必讀的一本好書。
本文轉(zhuǎn)載自異步社區(qū)
軟件開發(fā) 軟件開發(fā)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。