那么在討論這個(gè)問題之前,要說清楚這個(gè)問題,就首先必要的說明,什么是需求建模。
什么是需求建模,怎么認(rèn)識(shí)這個(gè)建模。首要的他就是一種行為,一個(gè)過程,一個(gè)建立模型的過程,其中的動(dòng)作是建立,目標(biāo)是模型,合并起來就是建立一個(gè)模型,那么需求建模,指的又是什么?“建立關(guān)于需求的模型”,可以這么理解,字面上的意思是這樣的。也可以拓展到整個(gè)軟件的生命周期中來,將需求建模,和需求獲取,需求分析,需求建模,軟件設(shè)計(jì)等后續(xù)流程一并的考慮進(jìn)來,那么需求建模就是在對(duì)需求進(jìn)行分析過后,使用分析后的信息,建立一個(gè)模型,這個(gè)模型是為了表達(dá)前面所做的工作,也就是這個(gè)需求要達(dá)到什么(參與者要得到什么,參與者之間的關(guān)系等等),同時(shí)這個(gè)模型能夠?yàn)楹髞淼能浖O(shè)計(jì)做一個(gè)參考,以此來保證整個(gè)軟件生命周期的活動(dòng)是連續(xù)的,整個(gè)軟件生命周期是由淺入深,由深到淺的V形。
那么細(xì)說軟件周期中的需求建模,他是如何利用需求分析后的信息,以及如何建立模型的。需求分析為我們提供了一個(gè)規(guī)格說明書,其中說明了各個(gè)用列場(chǎng)景所發(fā)生的事情,以及其相關(guān)約束條件,這些信息就相當(dāng)于磚塊,他們的特征是零散的且相互獨(dú)立的,需要在建模過程中將他們聯(lián)系起來,作為一個(gè)軟件系統(tǒng)的模型表達(dá)出來。而建立他們之間的聯(lián)系就成為了首要工作。
1,如何建立各個(gè)用列之間的聯(lián)系:基于場(chǎng)景的分析
用列在一定程度上已經(jīng)表達(dá)了一些場(chǎng)景,但這些場(chǎng)景是分散的片段,他們之間的聯(lián)系在系統(tǒng)和現(xiàn)實(shí)行為上是有關(guān)聯(lián)的,比如系統(tǒng)界面的跳轉(zhuǎn)和用戶操縱之間的聯(lián)系,他們之間的聯(lián)系是操作,因?yàn)閳?chǎng)景需要而必然發(fā)生的動(dòng)作。所以通過場(chǎng)景的分析,能夠?qū)⒂昧新?lián)系起來,甚至到最后能夠?qū)⑺械挠昧新?lián)系到一個(gè)場(chǎng)景中來,當(dāng)然這樣的交叉看起來有點(diǎn)復(fù)雜,不利于查看,所以一般來說,場(chǎng)景分析的參與者限制在2-5個(gè)是最好的,這樣一個(gè)場(chǎng)景的可變因素少一點(diǎn),模型建立起來就簡單點(diǎn)。一般我們使用活動(dòng)圖或者泳道圖來表達(dá)整個(gè)需求模型。
基于這樣的一種敘事方式,實(shí)際上已經(jīng)能夠表達(dá)需求模型了,但題目不是說得“行為狀態(tài)”,那跟場(chǎng)景分析有什么關(guān)系。事件行為狀態(tài),是一組表達(dá)方式,這樣的方式是以一種固定的被切割的塊拼接一個(gè)場(chǎng)景。它的作用主要作為一種輔助表達(dá)。特別是當(dāng)一個(gè)場(chǎng)景當(dāng)中涉及到多種的狀態(tài)變更的時(shí)候,比如我們的訂單,他的狀態(tài)有新建,支付中,已支付,發(fā)貨中,已收貨,退貨中,已退貨,退款中,已退款等,這里的狀態(tài)有9種,而對(duì)于給予場(chǎng)景的分析來說,他只會(huì)對(duì)某一種狀態(tài)建立模型,那么就會(huì)有九種不同的場(chǎng)景模型,那么這里事件行為狀態(tài)就能夠派上用場(chǎng)了。
2,行為狀態(tài)
首先,這種表達(dá)方式在我的工作中出現(xiàn)了,并運(yùn)行良好。
在日常生活中,怎么樣表達(dá)一個(gè)主體他隨著時(shí)間變化的過程,使得這個(gè)表達(dá)更準(zhǔn)確可信以及具有數(shù)學(xué)意義,那么莫過于用數(shù)據(jù)庫的acid理論來表達(dá)了。(什么?你問我acid是什么?實(shí)際上我也不知道是什么鬼)就是用一種嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)科學(xué)來表達(dá)一個(gè)主體(至于數(shù)據(jù)科學(xué)是什么鬼我也不知道,不深究了,多半是我編的)。雖然我們不懂a(chǎn)cid是什么,所以我們就可以在這上面做進(jìn)一步的深究(瞎吹),acid中有兩個(gè)概念,一個(gè)就是事件,一個(gè)就是狀態(tài)。一致性原子性隔離性持久性,他們都是圍繞著對(duì)于一個(gè)實(shí)體,他發(fā)生的事件以及他的狀態(tài)來說的。
一個(gè)實(shí)體后者說一個(gè)訂單,要從一個(gè)狀態(tài)變成另外一個(gè)狀態(tài),他必然要經(jīng)歷一個(gè)事件,這個(gè)事件的發(fā)生,讓這個(gè)狀態(tài)發(fā)生了改變,現(xiàn)實(shí)當(dāng)中的所有事件都是必然發(fā)生的,它只會(huì)導(dǎo)致一種狀態(tài)而不會(huì)同時(shí)出現(xiàn)多種狀態(tài),但我們構(gòu)思的事件是必然發(fā)生的,并且還有可能是可拆分的存在中間狀態(tài)的情況(如果存在中間狀態(tài),那么就有必要再次拆分事件,已滿足acid),為了表達(dá)這樣一定會(huì)發(fā)生的情況,和我們預(yù)知情況的關(guān)系,出現(xiàn)了這樣的一種表達(dá)方式。
表達(dá)方式:
在某某時(shí)刻,某某地點(diǎn),某某因?yàn)槟衬呈录l(fā)生而被新建,因?yàn)榘l(fā)生了某某事件而變成了另外一個(gè)狀態(tài)等等,這樣的描述方式。而之所以這是一種切塊,就在于狀態(tài)(表達(dá)一個(gè)實(shí)體在某個(gè)固定時(shí)間點(diǎn)持久不變的狀態(tài))是固定的,事件在這里也是一個(gè)連續(xù)固定的事件塊,所以他們拼接起來就是時(shí)間的連續(xù),而表現(xiàn)出了整個(gè)場(chǎng)景。