謹(jǐn)記:管理好產(chǎn)品的需求
思考良久,需求的變動(dòng)固然是造成這種結(jié)果的主要原因,另一個(gè)不能忽視的因素則是需求沒(méi)有表述清楚,開(kāi)發(fā)人員面對(duì)表述模糊的需求文檔,更加無(wú)法完成既定的開(kāi)發(fā)工作。 如何表述清楚需求?我們需要盡可能做好兩件事情:1.完整建立產(chǎn)品的user case;2.在需求文檔中力爭(zhēng)做到明確、完整、一致和可測(cè)試四點(diǎn)。那么對(duì)于產(chǎn)品、開(kāi)發(fā)的工作影響就能降到最小,你的項(xiàng)目也越能在規(guī)定的時(shí)間內(nèi)完成。 如何建立產(chǎn)品的User Case Diagram User Case Diagram也叫用例圖,基于面向?qū)ο蟮乃枷牒陀脩粢暯莵?lái)設(shè)計(jì)。如下圖就是一種非常簡(jiǎn)單的用例圖,它有點(diǎn)類似創(chuàng)建產(chǎn)品的用戶角色,你需要能從使用的角度描述出用戶是如何一步步操作這個(gè)產(chǎn)品的。 用例這種通過(guò)講故事來(lái)把需求描述清楚的辦法很有點(diǎn)黑盒的概念,很容易被用戶和開(kāi)發(fā)者理解;但缺陷在于無(wú)法描述清楚該如何實(shí)現(xiàn),也很少涉及內(nèi)部的信息。一旦我們遇到無(wú)法理解產(chǎn)品實(shí)現(xiàn)機(jī)制或者內(nèi)部流程架構(gòu)的情況時(shí),就必須借助其他的方法來(lái)理解需求,這個(gè)過(guò)程可以理解為打開(kāi)黑盒。這樣通過(guò)不斷地觀察黑盒,打開(kāi)黑盒、分析黑盒,然后再打開(kāi)黑盒的過(guò)程,我們就能做到對(duì)整個(gè)產(chǎn)品的需求有比較準(zhǔn)確的把握。 用例圖就是這樣一種能幫助我們了解需求的方式,當(dāng)然如果指望讓程序員看完了用例圖就能把程序做出來(lái),那是相當(dāng)?shù)爻兜?/p>
因?yàn)橛美龍D本身只是用來(lái)闡述用戶的需求,很難準(zhǔn)確對(duì)產(chǎn)品的功能、架構(gòu)賦予嚴(yán)謹(jǐn)?shù)拿枋龊投x。因此,我們還需要另外一份交付物,來(lái)清楚表達(dá)產(chǎn)品的功能、流程和架構(gòu),比如說(shuō)產(chǎn)品需求文檔。 產(chǎn)品需求文檔應(yīng)有的幾個(gè)基本要素: 對(duì)應(yīng)的產(chǎn)品不同,需求的標(biāo)準(zhǔn)也不盡相同,不過(guò)有一些通用的要素,仍然是可以借鑒的: 明確:很多撰寫(xiě)需求文檔的人并沒(méi)有學(xué)習(xí)過(guò)形式化語(yǔ)言,因此我們看到的需求文檔很多都是采用自然語(yǔ)言寫(xiě)出來(lái)的。這對(duì)需求分析帶來(lái)的最大弊病就是它的二義性。因此需要我們對(duì)文檔的表述進(jìn)行一些限制,例如盡可能只用主謂賓的基本表達(dá)方式,避免修飾句,避免容易令人產(chǎn)生誤解的表達(dá)方式。 比如我們是做一個(gè)社??ㄏ到y(tǒng),你可以這樣描述需求:每張公交IC卡只能屬于一個(gè)用戶,社??ㄓ锌ㄌ?hào)和金額數(shù)。社??梢栽卺t(yī)院使用,可以用來(lái)支付醫(yī)藥費(fèi)。 完整:既不要在提需求時(shí)說(shuō)還有一些需求沒(méi)有確認(rèn),也不要開(kāi)發(fā)接近完成了提出來(lái)有一些需求遺漏了。需求的不完整是導(dǎo)致開(kāi)發(fā)返工的最直接因素,也是令人發(fā)指的行為。 需求的完整需要產(chǎn)品人員有很好的產(chǎn)品管理技能,也需要對(duì)已有產(chǎn)品的架構(gòu)有清晰的了解,很多時(shí)候產(chǎn)品人員面對(duì)的都是拍腦袋或者臨時(shí)決定提出來(lái)的需求,很難第一時(shí)間提煉出完整的需求,怎么辦?問(wèn)!問(wèn)自己,問(wèn)客戶,問(wèn)開(kāi)發(fā)。在你無(wú)法確認(rèn)出完整需求或者起碼的核心需求之前,任何交付給開(kāi)發(fā)的行為注定是不負(fù)責(zé)任的。 一致:需求簡(jiǎn)單來(lái)說(shuō)可以分成業(yè)務(wù)需求、用戶需求和開(kāi)發(fā)需求三個(gè)方面。用戶需求需要能和業(yè)務(wù)需求一致,開(kāi)發(fā)需求需要能和用戶需求一致,這并不是在說(shuō)廢話,而是三種需求之間的繼承關(guān)系。否則,辛苦開(kāi)發(fā)出來(lái)的東西很可能會(huì)偏離當(dāng)初的實(shí)現(xiàn)目標(biāo)。在具象的實(shí)現(xiàn)過(guò)程中,這種一致性也必須細(xì)化。往往用戶需求在整個(gè)過(guò)程中不斷變化,產(chǎn)生所謂的”需求變動(dòng)”,這種變化不應(yīng)該超出先前既定的范圍,至少不應(yīng)該超出最初的業(yè)務(wù)目標(biāo)。 可測(cè)試:很多人認(rèn)為項(xiàng)目、產(chǎn)品的測(cè)試應(yīng)該從寫(xiě)完代碼輸出測(cè)試產(chǎn)品時(shí)開(kāi)始算起或者說(shuō)開(kāi)發(fā)們?cè)趯?xiě)代碼的時(shí)候就該開(kāi)始履行測(cè)試的職責(zé)了,這樣理解有它的道理。但實(shí)際上,和完整性的要求一樣,測(cè)試的過(guò)程應(yīng)該從需求一開(kāi)始分析的時(shí)候就要開(kāi)始。 作為測(cè)試的輸入輸入和參照物,需求分析應(yīng)該是可測(cè)試的。比如我們說(shuō)“設(shè)計(jì)一個(gè)網(wǎng)站,能讓用戶第一時(shí)間了解車票的行情”。這個(gè)需求是可測(cè)試的么?當(dāng)然不是!車票是指的火車票、汽車票抑或二者都是?了解車票的行情包括哪些方面?這些在需求中都沒(méi)有做出說(shuō)明,也意味著它是無(wú)法測(cè)試的,不具備可測(cè)試性。 因此包括前幾項(xiàng)的需求因素在內(nèi),我們的目的都是要保證需求的可測(cè)試性。當(dāng)且只有當(dāng)所有的需求是可以被測(cè)試的,才有可能保證產(chǎn)品從需求分析到設(shè)計(jì)開(kāi)發(fā)再到最后的交付都是真的在圍繞業(yè)務(wù)目標(biāo)和用戶需要的。產(chǎn)品才能更接近成功。 究竟該如何解決“需求的變動(dòng)”帶來(lái)的問(wèn)題呢,對(duì)于這個(gè)“世界難題”我只能說(shuō)見(jiàn)招拆招了,畢竟這屬于項(xiàng)目開(kāi)發(fā)中不可抗的外因,很多時(shí)候并不是產(chǎn)品經(jīng)理或者項(xiàng)目經(jīng)理能左右的。在面向?qū)ο蟮拈_(kāi)發(fā)模式下,管理者能做的就是盡可能避免變動(dòng)可能造成的計(jì)劃延遲,而對(duì)于產(chǎn)品經(jīng)理來(lái)說(shuō),不僅要控制好進(jìn)度,更要能把握好變動(dòng)可能帶來(lái)的對(duì)核心功能的影響,因?yàn)槟闶钦贫嬲?,你是“總設(shè)計(jì)師”。 但是,有句說(shuō)句:忽略需求過(guò)程或者需求的變動(dòng)造成項(xiàng)目返工是項(xiàng)目失敗的最大因素,大量項(xiàng)目的失敗往往都是在需求階段就注定了的。正在做產(chǎn)品經(jīng)理的諸位不妨審視一下自己的工作,發(fā)現(xiàn)情況不妙的趕緊處理掉吧。 舉兩個(gè)典型的需求變動(dòng)的例子: 1.需求人員口頭上把自己的想法和開(kāi)發(fā)人員溝通以后,又扔下一句話:這些地方暫時(shí)沒(méi)有討論清楚,不用去管,你先做吧,然后過(guò)了一段時(shí)間又提出來(lái)一個(gè)新需求,完全不管不同需求之間對(duì)開(kāi)發(fā)工作的影響。 2.告訴開(kāi)發(fā)人員需要做一個(gè)xx產(chǎn)品,但是現(xiàn)在自己很忙,要開(kāi)發(fā)人員先照著其他類似的產(chǎn)品做一個(gè)出來(lái)。 上述的兩種情況都會(huì)造成項(xiàng)目的不成功,特別當(dāng)某些外行冒充內(nèi)行的時(shí)候…… 文章轉(zhuǎn)自:@裴立
請(qǐng)問(wèn)在“一致”這一屬性中,對(duì)需求的三種劃分是不是應(yīng)該在考慮”產(chǎn)品需求“?產(chǎn)品需求應(yīng)該是用戶需求的劃分,但好像又是包含在業(yè)務(wù)需求中的?這個(gè)理不清楚,還請(qǐng)指教一下!
筆誤,產(chǎn)品需求應(yīng)該是用戶需求的延伸!
認(rèn)真讀完這篇文章,覺(jué)得似乎是在說(shuō)我,我想把需求做好,可路還有很長(zhǎng),這篇文章給我了很大的啟發(fā),感謝分享!