閱讀需要具備一定的需求工作經(jīng)驗峭沦,并非通過閱讀能夠直接獲取經(jīng)驗和知識蝴韭,如果不具備經(jīng)驗可以跟有經(jīng)驗的人去交流,獲得知識需要認真的思考熙侍,勤奮和努力
需求其實并非在談需求
需求是某種自然法則,等著你來發(fā)現(xiàn)履磨。需求的活動主要不是編寫需求文檔蛉抓,相反,它專注于理解業(yè)務問題剃诅,并為之提供解決方案巷送。軟件是要解決某種問題,硬件和服務也是矛辕。需求發(fā)現(xiàn)的真正藝術(shù)是發(fā)現(xiàn)真實的問題笑跛。
如果我們必須構(gòu)建軟件,那么它必須為擁有它的人提供最理想的價值聊品。
產(chǎn)品提供的利益必須與產(chǎn)品的成本相稱飞蹂。“業(yè)務分析師”翻屈、“需求工程師”陈哑、“產(chǎn)品擁有者”、“系統(tǒng)分析師”以及其他“頭銜”的職責,就是確定擁有者最看重的價值是什么惊窖。
如果軟件不必滿足需求刽宪,那你怎么干都行。但是界酒,如果它打算滿足需求圣拄,你就必須知道要求是什么,才能構(gòu)建正確的軟件毁欣。
你必須得到需求的正確理解庇谆,并與客戶達成一致意見,否則你的產(chǎn)品或項目就會有嚴重的缺陷署辉。不幸的是族铆,需求并非總是得到正確的理解。軟件開發(fā)者(幾乎)有機會消除這些錯誤哭尝,但許多人選擇(或他們的項目經(jīng)理)幾乎跳過需求的發(fā)現(xiàn)哥攘,直接輕率的開始構(gòu)建錯誤的產(chǎn)品。如果開始就發(fā)現(xiàn)了正確的需求材鹦,成本會低很多逝淹。
構(gòu)建一個軟件和解決一個業(yè)務問題之間,存在巨大的差別桶唐。前者不一定實現(xiàn)后者栅葡。
軟件要對擁有者有價值,就必須解決擁有者的業(yè)務問題尤泽。最多的錯誤就是需求錯誤欣簇,相當多的軟件不能正確的解決問題。
我們永遠不知道用戶批準上一次交付是因為對它滿意坯约,還是因為被過程搞得筋疲力盡熊咽。
我們必須無數(shù)次的強調(diào):軟件就是要解決一個業(yè)務問題。所有開發(fā)工作者都必須從問題開始闹丐,而不是從看到的解決方案開始横殴。
需求不一定要寫下來,但構(gòu)建著必須知道它們
在某些情況下卿拴,口頭溝通需求更有效衫仑,在另一些情況下,必須永久的記錄下需求堕花。需求的理由記錄了【團隊】的決定文狱,它也為【測試】者和【開發(fā)】者提供了清晰的指示,說明了需求的重要性缘挽,從而建議需要花多少工作量如贷。此外陷虎,如果【維護】者知道為什么有這項需求,也會降低將來維護的成本杠袱。
需求的工作并不是要為項目增加額外負擔尚猿,編寫需求的工作將帶來數(shù)倍的回報,因為需求的準確性會影響將來所需要完成的工作楣富。
客戶不一定總能帶給你答案凿掂,有時候客戶也不可能知道什么是對的,有時候他就是不知道需要什么纹蝴。
傳統(tǒng)來講庄萎,需求活動被看成是某種類似速記員的任務。準確記錄他們說的所有東西塘安,并將他們的要求翻譯成產(chǎn)品的需求糠涛。需要考慮到利益相關(guān)者在試圖描述需求時的困難。展望一個產(chǎn)品來解決一個問題兼犯,尤其是問題并非總是理解的很徹底忍捡,也有“增量改進”的問題,這種增量的方式通常排除了重大的創(chuàng)新切黔,常常會導致平庸的產(chǎn)品砸脊,不能滿足期望。
需求不是偶然得到的纬霞,要通過某種有序的過程得到
所有重要的努力都需要有序的過程凌埂。這些過程不是因循守舊的過程,不是無頭無腦的執(zhí)行所有指令诗芜,不過問任何疑問瞳抓,按照實現(xiàn)描述的順序,沒有任何變通伏恐。相反孩哑,有序的過程由一組任務構(gòu)成,實現(xiàn)預期的結(jié)果脐湾,但是這些任務的次序、重點和應用程度總需要采用該過程的人或團隊來決定叙淌。最重要的是秤掌,參與這個過程的人必須能看到,為什么過程中不同的任務是重要的鹰霍,哪些任務對項目最重要闻鉴。
你怎樣去迭代都可以,但仍需要理解業(yè)務的需求
迭代式開發(fā)方法變得越來越流行茂洒。這肯定是有意義的進步孟岛,但像很多進步一樣,這些技術(shù)有時候炒作過度了。
冷靜地頭腦會意識到渠羞,任何開發(fā)技術(shù)都需要發(fā)現(xiàn)需求斤贰,真實認真開發(fā)的先決條件。需要冷靜的頭腦事先已經(jīng)將需求過程吸收到他們的開發(fā)生命周期中次询。聰明的做法不是廢棄需求荧恍,而是從一個不同的方向接近需求。
真正值得關(guān)注的是既要發(fā)現(xiàn)需求屯吊,又不必編寫無用的送巡、不成熟的、浪費成本的成堆的文檔盒卸。不論你怎樣開發(fā)軟件骗爆,總是要理解客戶的業(yè)務問題,以及產(chǎn)品必須做些什么來解決這個問題(即它的需求)蔽介。
沒有銀彈摘投。所有的方法和工具都無法彌補糟糕的想法和糟糕的手藝
雖然我們需要有一個有序的過程,但不應該認為它能夠代替思考屉佳。在需求的過程中谷朝,業(yè)務分析師需要面對幾個版本的需求,同時還要想象未來最好的軟件產(chǎn)品是怎樣的武花。
需求活動從來都不會是簡單的圆凰,想要成功,就需要業(yè)務分析師的思考和理解体箕。會有一些自動化的工具可以有所幫助专钉,但它們只能作為輔助手段,而不能夠代表最好的需求實踐累铅。盲目的遵循事先制定的實踐跃须,根本不能取得有經(jīng)驗的業(yè)務分析師能夠取得的結(jié)果。分析師最重要的工具:頭腦娃兽、眼睛和耳朵菇民。
要想成功地實現(xiàn)需求,需求就必須可度量投储、可測試第练。
從本質(zhì)上說,功能需求是產(chǎn)品支持其擁有者的業(yè)務時必須要做的事玛荞。非公能需求是產(chǎn)品要在擁有者的環(huán)境中取得成功娇掏,必須將功能完成得多好進行量化描述。
要讓構(gòu)建得產(chǎn)品完全滿足這些標準勋眯,在編寫需求時就必須準確婴梧。同時下梢,必須考慮到需求來自于人,而人并非總是準確塞蹭,可能總是不準確孽江。要達到必要的準確程度,必須對需求進行某種測量浮还。
即使完美的程序檢驗工作竟坛,也只能建立滿足規(guī)格說明的程序。軟件任務最難的部分在于钧舌,得到完整而一致的規(guī)格說明書担汤。構(gòu)建一個程序的許多本質(zhì)工作,實際上就是消除規(guī)格說明書中的缺陷洼冻。
如果不能為需求找到測量指標崭歧,那么它就不是需求,只是一種無根據(jù)的想法撞牢。
作為業(yè)務分析師率碾,你將改變用戶思考這個問題的方式,不是現(xiàn)在就是將來屋彪。
在你開始理解需求時所宰,尤其在需求來自于不同的利益相關(guān)者時,你就開始建立一些抽象概念畜挥,并建立一系列詞匯表仔粥。你戰(zhàn)士業(yè)務過程的模型,與利益相關(guān)者一起發(fā)現(xiàn)工作的本質(zhì)蟹但,得到清晰和可測量的需求躯泰,并將所有這些事實反饋給利益相關(guān)者拧咳。在做這些事情時估灿,你就會改變(改進)它們對業(yè)務問題的看法。
如果人們對需求的含義有了更好的理解浴韭,他們就可能看到改進的辦法客叉。你的一部分工作就是幫助人們盡早理解和質(zhì)疑他們的需求诵竭,這樣讓他們就可以幫助你發(fā)現(xiàn)他們真正的需求。