用議論文三要素,搞定需求分析(中)

1 評論 3576 瀏覽 15 收藏 11 分鐘

結構框架分析是一個自底向下的過程,先根據每個業務場景、流程,需要從中發現找出各種類;然后分析類之間的數量與邏輯關系,將類聯系在一起,最后確定類屬性與操作,繪制出“類圖”,完成結構框架分析。

先回顧一下上一篇文章的內容,主要講業務模型這個“論點”的分析思路:以業務目標這個抽象角度作為分析的切入點,梳理需求;再引入用例,通過場景分析,對用例進行細化,最后得出分析業務模型的歸納公式:

用議論文三要素,搞定需求分析(中)

講完論點,此篇文章就來bb一下,需求分析的“論據”。需求分析的“論據”就是業務模型的整體結構,傳達系統有什么?

為了更好地理解這個問題,回答之前,首先我們思考一下這個生活問題:西紅柿炒雞蛋有什么?換言之西紅柿炒雞蛋的食材有什么?

這點生活常識,我還是有的。

果斷百度了一下,西紅柿炒雞蛋的食材:番茄3個,雞蛋3個,油10g,鹽5g, 雞精3g。

so easy,但別小瞧這幾個簡單的數字與文字,它表示了各食材、佐料之間的數量關系(番茄與雞蛋的數量關系、油、鹽、雞精之間的數量關系等),缺少某樣食材或者各食材、輔料的數量關系不對,都會影響西紅柿炒雞蛋這盤菜的最后結果。

同樣系統也是這個道理,而在軟件中,這個物叫“類”,實際上就是一類事物的意思,一張桌子是一個對象,桌子就是一個類了,其實用戶是很容易理解的,它就是“類型”的意思。很多商業系統只有1個、兩個或三個核心的類,圍繞著這幾個類產生大量的處理流程,系統就是為產生和操縱這些東西開發的。

類的構成很簡單,由類名、屬性、操作組成。類名是類的名稱、屬性是類擁有的信息、操作是類提供的服務。

如圖為類的表示方法:

用議論文三要素,搞定需求分析(中)

回歸正題,有沒有發現,需求分析的“論據”就是用類映射現實世界,以類作為核心,描述系統的結構框架,來表示系統有什么?

那如何用類來做結構框架分析呢?

主要步驟包括這三個:

  1. 根據每個業務場景、流程,需要從中發現找出各種類;
  2. 再分析它們之間的數量關系、邏輯關系;
  3. 然后在明確物的屬性與操作,最后得出結構框架。

講完思路,下面就來小實戰一下。

發現類

同樣,還是以上篇文章中的“餐廳系統”為例。

就餐的大概流程:顧客在“真好吃”餐館吃飯,通過手機掃描二維碼進行點菜,翻閱菜單查看菜品,菜品種類有熱菜、冷菜、小吃,點菜完成后,系統需要將小明點的菜品記錄,生成訂單,并生成送菜單發送給對應的廚師(負責熱菜的、負責冷盤的、負責小吃的),廚師做完菜后,通知服務員端菜,服務員根據送菜單上的餐桌號,將菜端到顧客面前,顧客就餐完結賬。

有一點不同的是現實生活的對象往往是具象的,類容易理解找出,系統的對象往往是抽象的,不容易找出與分辨,且具有十分多的屬性需要分析,判斷是否可以作為類。不過,也是有“名詞動詞法”去幫助我們去分辨。

“名詞動詞法”,其主要規則是從名詞與名詞短語中提取類與屬性;從動詞與動詞短語中提取操作與關聯;其實就是名詞對應類或者類的屬性,動詞對應類的操作。而所有格短語通常表示屬性(格式:xxx的xxx,例如:餐桌的號碼牌,號碼牌就是一個屬性)。

名詞有:顧客 “真好吃”餐館 菜單 熱菜 冷菜 小吃 菜品 訂單送菜單 餐桌號 廚師 服務員。

很顯然,并不是每一個名詞都是可以作為類的,有些名詞對于開發的系統來說是無關緊要的,甚至是系統之外的,而有些名詞適合作為屬性。

顧客,會對系統產生作用,會下訂單,可以歸類到“顧客”這個類中。

“真好吃”餐廳“廚師”“服務員”不對系統產生作用,是系統外的概念,不屬于類。

熱菜、冷菜、小吃都是菜品的類型,菜品是可以作為類的。

菜單作為統計菜品的主體,具有統計的操作方法,可以視為一個類。

訂單包含了下單時間、餐桌號、顧客點的菜品與付款類型,是一個類。

送菜單包含了該菜的信息、餐桌號還有自身的編號,也是一個類。

餐桌號概念過小,只能作為訂單的屬性。

所以提煉出:菜單、菜品、顧客、訂單、菜品單。

明確類之間的數量與邏輯關系

類之間最常見的邏輯關系有三類:關聯、泛化、聚合/組合。

關聯:說明兩物有聯系,用一條直線連接。比如顧客與訂單之間有聯系。

泛化:子類從父類中繼承,使用空心箭頭的實現表示。就如圖上述例子,菜品是父類,熱菜、冷菜、小吃作為子類繼承了菜的特性,同時具有自己獨特的屬性。

聚合與組合關系:整體與部分的關系。區別在于,聚合中的部分可以獨立于“整體”存在,而組合中的部分“完全依賴于整體”。這里菜品與菜單就是聚合的關系,菜品可以獨立于菜單而存在。

用議論文三要素,搞定需求分析(中)

并根據以上的邏輯關系,對每個類進行分析,同時思考他們的數量關系,分析過程如下:

用議論文三要素,搞定需求分析(中)

綜上,可以得出初步的類圖。

用議論文三要素,搞定需求分析(中)

明確類的屬性與方法

當找出了系統的類,并厘清它們之間的數量關系與邏輯關系之后,就可以確定類的屬性與操作了。根據目前的業務描述,可以找到以下的屬性與操作:

  • 菜品類:屬性有菜品編號、菜品名稱、菜品類型、價格
  • 訂單類:屬性有下單時間、餐桌號、價格、付款類型
  • 送菜單:屬性有送餐單號
  • 顧客:屬性有人數

接著使用“名詞動詞法”,來找出類的操作,動詞有:吃點記錄、發送做通知端、統計。

當然動作都是由類發出的,根據第一步的找出的類,就可以排除掉不是類發出的動詞:服務員的端、廚師的做、廚師的通知。另外顧客的吃不對系統產生影響,因此也排除,最后剩下:

  • 訂單:記錄菜品;
  • 送菜單:發送;
  • 菜單:統計菜品。

將以上這些屬性與操作加入原先的模型,就可以得到一個完整的類圖了!如圖所示:

用議論文三要素,搞定需求分析(中)

小結

結構框架分析是一個自底向下的過程,先根據每個業務場景、流程,需要從中發現找出各種類;然后分析類之間的數量與邏輯關系,將類聯系在一起,最后確定類屬性與操作,繪制出“類圖”,完成結構框架分析。

結構框架就如同議論文中的“論據”,它是“論點”的根據,它也是系統的根據,需要繪制出類全面且關系清晰、屬性與操作明確的類圖,可視化地表示系統有什么。

下一篇,將bb需求分析的“論證”,如何化靜為動,清晰地表達系統怎么做?

相關閱讀

用議論文三要素搞定需求分析(上)

 

本文由 @澤 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 題主肯定是從開發轉過來的,類/屬性都用上了 ??

    來自四川 回復