需求分析實(shí)用方法之——明確系統(tǒng)邊界(C系架構(gòu)設(shè)計(jì)法,sishuok)
需求分析實(shí)用方法之——明確系統(tǒng)邊界(C系架構(gòu)設(shè)計(jì)法,sishuok)
前面,我們聊了需求分析要做什么。接下來,我們就來聊聊,需求分析到底該如何去做,也就是做需求分析的一些基本方法。這塊的內(nèi)容會比較多,我們分成幾次來寫。
先來看做需求分析的基本的思維方式:我們只考慮具體要實(shí)現(xiàn)什么,明確具體的展現(xiàn)形式。也就說,我們只考慮我們現(xiàn)在這個系統(tǒng),到底要干些什么事,系統(tǒng)最終展現(xiàn)出來是什么樣子;而不去考慮,到底這個功能該如何去實(shí)現(xiàn),這是一個非常基本的思維方式。
要跟大家強(qiáng)調(diào)一下,因?yàn)榧軜?gòu)師通常都是從開發(fā)人員這樣一步一步升上來的,有些剛開始做架構(gòu)的架構(gòu)師,他的這個思維方式,還帶著濃厚的開發(fā)人員的思維,他一看到功能需求,看到這些功能點(diǎn),腦袋里面馬上就想到的是,我該用什么樣的開發(fā)技術(shù),用什么樣的代碼去實(shí)現(xiàn)這樣的功能。
也就是說,他會自覺不自覺的就在思考該怎么實(shí)現(xiàn),就差把代碼寫出來了。所以,這里特別提醒,在做需求分析這個階段,我們只是去考慮:要做什么,而不去考慮具體如何做,至于具體如何做的事情,是接下來咱們的架構(gòu)設(shè)計(jì),概要設(shè)計(jì),詳細(xì)設(shè)計(jì)等階段要去考慮的。

所以開始講需求分析如何做的時候,咱們就要強(qiáng)調(diào)一下這個基本的思維方式,接下來,我們就正式的進(jìn)入到講需求分析方法的這個過程里面。
一般來說,開始做需求分析,第一步就是要去理解業(yè)務(wù),通常會先要求需求調(diào)研的人員來給我們講一講業(yè)務(wù),前面也講了,需求調(diào)研完了過,已經(jīng)形成了需求調(diào)研的說明書,也形成了相應(yīng)的業(yè)務(wù)藍(lán)圖、具體的業(yè)務(wù)架構(gòu)圖等,這些東西都已經(jīng)有了,我們現(xiàn)在理解業(yè)務(wù),就是要來理解這些文檔里面的內(nèi)容,所以通行的方式,就是先讓需求調(diào)研的人員,來給架構(gòu)團(tuán)隊(duì),還有開發(fā)團(tuán)隊(duì),先整體的講一講這個業(yè)務(wù)是什么,讓大家對整個業(yè)務(wù)有一個整體的了解,去理解整個業(yè)務(wù)的背景,理解相應(yīng)的一些業(yè)務(wù)場景。
粗略理解整體業(yè)務(wù)過后,就開始進(jìn)入到一個一個具體的業(yè)務(wù)流程或者業(yè)務(wù)功能的講解,需求調(diào)研人員在講解的過程當(dāng)中,架構(gòu)師會不斷去思考和理解這些業(yè)務(wù),當(dāng)然,咱們是要站在架構(gòu)師的角度來看待這些業(yè)務(wù),這個過程,就要朝著咱們前面講的需求分析的目標(biāo)去前進(jìn),就說我們要盡可能的準(zhǔn)確、全面、深入的去理解這些業(yè)務(wù)。
在這個過程當(dāng)中,要是有一些東西沒有想明白或者沒有理解,可以及時跟需求調(diào)研人員去溝通。這個時候,其實(shí)你可以把需求調(diào)研人員當(dāng)成是用戶,相當(dāng)于在邊聽他講邊來做一次內(nèi)部的需求調(diào)研,方式是一樣的。當(dāng)然,由于有了很多的內(nèi)容,還有資料的準(zhǔn)備,這個過程會比純粹的需求調(diào)研要快得多。
理解了細(xì)節(jié)業(yè)務(wù)過后,咱們就會繼續(xù)向前,開始來明確系統(tǒng)的邊界。首先,我們要明確系統(tǒng)一級的大功能,也就是說我們現(xiàn)在不關(guān)心內(nèi)部的一些細(xì)節(jié),如果我們把整個系統(tǒng)當(dāng)成是一個大的黑盒的話,我們明確一下它里面的一些一級的功能就可以了。

比如假設(shè)我們這個項(xiàng)目就是去做一個電商系統(tǒng)的話,這個時候,我們只需要明確,這是我們的一個大系統(tǒng),它里面有哪些一級的功能,比方說有用戶、產(chǎn)品、商品,還有訂單、庫存等等的。咱們這個系統(tǒng),可能有這么一些大的功能,這個就叫明確一級的一些功能。一般來說,在初次理解這個系統(tǒng)的業(yè)務(wù)的時候,這些東西都要定下來。
再來看第二個,去梳理使用系統(tǒng)的角色,這個對于我們后續(xù)的分析設(shè)計(jì)是非常有幫助的,尤其是咱們有一個方法叫業(yè)務(wù)走查,就是要模擬這些使用系統(tǒng)的角色,來完成實(shí)際的業(yè)務(wù),就按照實(shí)際的業(yè)務(wù)場景來走查這個功能對還是不對。所以,這個地方要把使用系統(tǒng)的角色都梳理出來。另外一個,梳理這些角色,也有助于我們?nèi)ダ斫膺@些業(yè)務(wù)功能。
思考的方式就是,站在系統(tǒng)的角度來思考,誰會使用我這個系統(tǒng);哪些人用這個系統(tǒng)來完成他的日常工作;誰來維護(hù)這個系統(tǒng);誰來管理這個系統(tǒng);誰會從這個系統(tǒng)里面去查看一些信息等等的。
在這里,我們也可以去畫UML的用例圖。就是一個高層的,這么一個功能的邊界,通過畫圖,我們會發(fā)現(xiàn),會有哪些角色來使用系統(tǒng)。
第三個,就是“梳理系統(tǒng)”,梳理要使用的其他系統(tǒng)或資源。這個也是非常重要的,很多人容易把它忽略。啥意思呢?就是說,如果我們這個系統(tǒng)要想跑起來,剛才不是已經(jīng)確定了這個功能邊界了嗎?說明內(nèi)部只有這些功能,但是為了讓我們的系統(tǒng)能夠正常運(yùn)轉(zhuǎn)起來,可能還需要很多支撐的東西,或者說需要一些外圍的系統(tǒng)。這些也要在這個階段明確的定下來。
比如說用戶管理的一部分功能,可能要來自于已有的一個軟件系統(tǒng),用戶已經(jīng)在使用的老系統(tǒng),比方說來自CRM,也就是說,我們的用戶管理會去使用CRM的一部分功能,也就是用戶管理需要CRM這個系統(tǒng)的支撐。
類似的,訂單管理可能會涉及到庫存的一些功能,庫存呢,也是已經(jīng)做好的一些專業(yè)的庫存軟件,可能訂單會去使用這個庫存系統(tǒng),這個時候就一定要搞清楚,我們要做的系統(tǒng)的邊界到底在哪里,哪些是我們要做的,哪些是我們不做的。當(dāng)然,訂單管理,可能還會涉及到像支付、財(cái)務(wù)等系統(tǒng),一般來說,像電商系統(tǒng)很少會直接自己去管財(cái)務(wù)這些東西,一般都會跟后端的,比方說ERP,或者說財(cái)務(wù)系統(tǒng)去對接,比較大型一些的企業(yè),基本上用的可能都是SAP這類的。這個時候,也需要把它標(biāo)識出來,因?yàn)檫@個也涉及到未來的一個對接,就說你需要跟他結(jié)合上。
這些咱們在做這個初步的需求分析的時候,就要把他們明確下來,頭腦里就很清楚的知道有哪些角色在使用我們的系統(tǒng),我們的系統(tǒng)內(nèi)部有哪些功能是我們需要做的,我們需要使用到外部哪些資源或者系統(tǒng),這些系統(tǒng)是不需要我們做的,這樣的話,未來我們的這個架構(gòu)設(shè)計(jì),需要考慮的邊界就出來了。

你看,除了要考慮我們系統(tǒng)內(nèi)部的這些功能之外,我們還要考慮這些使用的外部系統(tǒng),我們怎么跟已有的這些系統(tǒng)進(jìn)行集成,或者說是交互,這個就涉及了交互的方式、通信的協(xié)議、包括來回傳遞數(shù)據(jù)的格式、數(shù)據(jù)安全性、調(diào)用的頻次、性能等等一系列的問題。
所以,我們做需求分析的時候,就要把這些東西定下來,這些就是這兒說的明確系統(tǒng)邊界。
當(dāng)然明確系統(tǒng)邊界,并不僅僅只是針對最大的一級系統(tǒng),實(shí)際上隨著視角往里走,這也是做架構(gòu)設(shè)計(jì)的一個基本的思想,就是從大到小,由粗到精,逐步細(xì)化。當(dāng)我這個角色從一級的系統(tǒng),假如已經(jīng)走到用戶管理這里頭來了,還是同樣的方式,一樣要去分析用戶管理這個系統(tǒng),它里面包含的下一級子系有哪些,就這樣一級一級向下細(xì)化。
也就說每一個層級,都應(yīng)該按照這里講的這個方式去明確系統(tǒng)的邊界,每次都是明確當(dāng)前這一級的大功能,然后要去識別他的角色,他要使用的外部的資源和系統(tǒng)。這些對我們后續(xù)的具體功能的需求分析,還有架構(gòu)設(shè)計(jì)都是非常有幫助的。
這個方法,我們就先講到這個地方,當(dāng)然需求分析的方法并沒有講完,這才剛剛開始,才剛到明確系統(tǒng)邊界這個地方,另外,這些方法咱們一定要結(jié)合具體的應(yīng)用去進(jìn)行實(shí)戰(zhàn),否則,可能你聽起來覺得都對,說的也蠻有道理,但是一到結(jié)合具體業(yè)務(wù)的時候,就搞不定了,不知道怎么去用,不知道怎么去做。
為了大家更好的交流架構(gòu)設(shè)計(jì)的思想和知識,大家可以加sishuok,拉你進(jìn)架構(gòu)設(shè)計(jì)群,一起共同學(xué)習(xí),共同進(jìn)步。