用議論文三要素,搞定需求分析(上)
如何進(jìn)行有效的需求分析?作者從議論文三要素出發(fā),對(duì)需求分析進(jìn)行了分析與探討,與大家分享。
軟件開發(fā)流程大概分為需求階段、設(shè)計(jì)階段、編碼階段、測(cè)試階段、運(yùn)維階段這五大階段。
某項(xiàng)研究分析了63個(gè)軟件開發(fā)項(xiàng)目,對(duì)于需求錯(cuò)誤在軟件開發(fā)項(xiàng)目的不同階段,發(fā)現(xiàn)并改正所損失的成本進(jìn)行了研究與評(píng)定,得到了如下表格:
由圖表可以發(fā)現(xiàn),越在后面的階段,因?yàn)樾枨箦e(cuò)誤而帶來的損失成本也就越大,而在需求階段發(fā)現(xiàn)并改正的損失成本是最低的。這是因?yàn)樵降胶竺嫱度氲娜肆Y源與時(shí)間越多,如果在初期能準(zhǔn)確分析好需求,便不會(huì)帶來之后的損失,故需求分析在軟件開發(fā)中處于關(guān)鍵地位。
需求分析三要素
那需求分析怎么做呢?凡是都是有規(guī)律可循,需求分析也不例外。說白了,就有點(diǎn)像議論文寫作。來來來,我們看一下百度百科對(duì)議論文的定義:
議論文,是一種剖析事物,論述事理,發(fā)表意見,提出主張(論點(diǎn))的文體。作者通過擺事實(shí)、講道理、辨是非等方法,來確定其觀點(diǎn)正確,樹立某種主張。議論文應(yīng)該觀點(diǎn)明確、論據(jù)充分、語言精煉、論證合理、有嚴(yán)密的邏輯性。
移花接木一下:
需求分析,是一種剖析參與者需求(老板、用戶、業(yè)務(wù)人員等等),抽象事物,組織概念,建立業(yè)務(wù)模型的過程。產(chǎn)品經(jīng)理通過明目標(biāo)、理業(yè)務(wù)、面向?qū)ο蟮确椒?,來確定需求,建立業(yè)務(wù)模型。需求分析應(yīng)當(dāng)目標(biāo)明確,用例充分、語言精煉,論證合理,有嚴(yán)密的邏輯感。
嗯,有點(diǎn)感覺。
既然議論文有三要素:論點(diǎn)、論據(jù)、論證,那需求分析有三要素嗎?
- 論點(diǎn):提煉抽象后的業(yè)務(wù)模型
- 論據(jù):即論點(diǎn)的根據(jù),業(yè)務(wù)模型的根據(jù)便是宏觀上業(yè)務(wù)模型的整體結(jié)構(gòu),告訴你系統(tǒng)有什么。
- 論證:即用論據(jù)證明論點(diǎn),從詞性上判斷,這是一個(gè)動(dòng)詞,同樣證明業(yè)務(wù)模型其實(shí)就是強(qiáng)調(diào)怎么把系統(tǒng)整體結(jié)構(gòu)的元素聯(lián)系起來,告訴你系統(tǒng)怎么做。
毫無違和感,有木有。
開始bb!
業(yè)務(wù)模型
模型,即通過主觀意識(shí)借助實(shí)體或者虛擬表現(xiàn)構(gòu)成客觀闡述形態(tài)結(jié)構(gòu)的一種表達(dá)目的的物件(物件并不等于物體,不局限于實(shí)體與虛擬、不限于平面與立體)。
相似地,建立業(yè)務(wù)模型的目的就是為了表示業(yè)務(wù)需求并獲得對(duì)業(yè)務(wù)需求的理解,然后對(duì)業(yè)務(wù)需求進(jìn)行便于理解的表達(dá)。這是能證明你是否正確且完全理解業(yè)務(wù)需求的工具,也是你與開發(fā)人員表達(dá)說明業(yè)務(wù)需求的利器,切記不能讓你的理解停留在腦海里!
業(yè)務(wù)目標(biāo)
我們先來思考這么一個(gè)問題:某餐廳老板想要為其餐廳設(shè)計(jì)一個(gè)餐廳管理系統(tǒng)。面對(duì)老板如此抽象的需求,你會(huì)如何去分析呢?
大部分的思路往往是先梳理大致的業(yè)務(wù)流程圖,然后針對(duì)每一個(gè)步驟,進(jìn)行用戶訪談,詢問業(yè)務(wù)中的細(xì)節(jié)。
可你有沒發(fā)現(xiàn),如果一這么做,就會(huì)陷入細(xì)節(jié)的泥坑。技術(shù)的細(xì)節(jié)、咦這個(gè)能不能實(shí)現(xiàn);交互的細(xì)節(jié),咦這樣交互肯定不行的;UI的細(xì)節(jié),咦這里設(shè)計(jì)成下拉框?這樣的結(jié)果便是,自己的思路越來越凌亂,最終往往就是靠直覺做決定了!直覺可不給你背鍋??!
解決問題有這么一個(gè)方法:在面對(duì)問題的時(shí)候首先不要決定去通盤考慮,而是找出問題領(lǐng)域里包含的抽象角度。如果把抽象角度都找全了,并且這些角度都分析清楚了,問題也就解決了。
抽象角度的理解就好比:當(dāng)問你刀與叉的區(qū)別是什么的時(shí)候,感覺自己無從回答。而問你刀與叉在使用上的區(qū)別是什么,便豁然開朗,一個(gè)是切,一個(gè)是叉。這里的使用角度就是一個(gè)抽象角度。
需求分析也是一樣的,具體來說,做需求的時(shí)候,首要目的不是弄清楚業(yè)務(wù)是如何一步一步完成的,業(yè)務(wù)包含了哪些細(xì)節(jié),而是要弄清楚有多少業(yè)務(wù)的參與者?每個(gè)參與者的目標(biāo)是什么?參與者的目標(biāo)就是你的抽象角度。
(這里便用到了面向?qū)ο蠓治龇椒?,面向?qū)ο蟮暮锰幈闶强梢约凶⒁饬υ谝治龅膶?duì)象上,排除其他因素的干擾。這也就是為什么程序員拿到需求之后,不是直接碼代碼,而是先建表,厘清一個(gè)個(gè)實(shí)體對(duì)象與它們之間的關(guān)系,就是這個(gè)道理。)
回過頭來,首先找出系統(tǒng)的所有參與者,然后進(jìn)行初步的用戶訪談,明確業(yè)務(wù)目標(biāo),大致可以分為:
- 顧客:提供用餐自動(dòng)化服務(wù),提高點(diǎn)餐效率,方便顧客。
- 服務(wù)員:提供管理訂單服務(wù),記錄每桌的點(diǎn)的菜品,檢查每個(gè)訂單的上菜、收費(fèi)情況等。
- 店長:提供財(cái)務(wù)管理服務(wù),記錄每日的收銀。
- ……
這里我們用數(shù)學(xué)簡(jiǎn)單的公式提煉一下,可得到這樣一個(gè)公式:需求分析=∑(1到無窮)業(yè)務(wù)目標(biāo),意思便是:要全面地分析需求需要找到所有的業(yè)務(wù)目標(biāo)(抽象角度)。
用例
所謂的用例便是,參與者帶著目的去做一件件事情,這些事情都圍繞著目標(biāo),而這些事情可以有很多不同的方法或是遇到各種各樣的意外情況,因此這件事情是由很多不同情況的集合構(gòu)成的。
這些不同情況便是場(chǎng)景。如圖便是用例的構(gòu)成:(小技巧:用例必須滿足動(dòng)賓結(jié)構(gòu))
就拿第一個(gè)業(yè)務(wù)目標(biāo):為顧客提供用餐自動(dòng)化服務(wù),提高點(diǎn)餐效率,方便顧客,這一業(yè)務(wù)目標(biāo)來說,可以定義的邊界為“顧客用餐服務(wù)”。從名字就可以明確業(yè)務(wù)目標(biāo)是為顧客用餐服務(wù)的。
邊界決定了系統(tǒng)首要的問題是解決顧客的期望,也就是說,系統(tǒng)首先要滿足顧客的需求。用餐方式分為堂食和外賣,其用例便有點(diǎn)餐、下單、買單。如圖所示:
這里又可以得到一個(gè)公式:業(yè)務(wù)目標(biāo)=∑(1到無窮)用例
場(chǎng)景
那如何思考全場(chǎng)景呢?換句話說,我們需要思考全場(chǎng)景的抽象角度。場(chǎng)景的構(gòu)成要素:時(shí)間,地點(diǎn)、人物、行為可以幫助我們分析。
- 時(shí)間:餐廳營業(yè)時(shí)下單,餐廳休息時(shí)下單
- 地點(diǎn):堂食,外面吃(外賣)
- 人物:?jiǎn)稳它c(diǎn),多人點(diǎn)
- 行為:添加菜品、刪除菜品、修改菜品、查詢菜品(增刪改查)
以此類推,得到所有滿足用例的場(chǎng)景。上公式:用例=∑(1到無窮)場(chǎng)景
小結(jié)
這一篇講解了需求分析的論點(diǎn)——業(yè)務(wù)模型,以及業(yè)務(wù)模型的建模思路,取其精華,可以用如下圖所示的公式來表示如何建業(yè)務(wù)模型。下一篇將著重講講需求分析三要素的論據(jù)與論證。
本文由 @澤 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
- 目前還沒評(píng)論,等你發(fā)揮!