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