2007年,世界級(jí)的軟件分析大師Eric Evans發(fā)表了他的經(jīng)典著作《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》,進(jìn)而形成了一套獨(dú)特的軟件分析與設(shè)計(jì)方法,簡(jiǎn)稱為DDD(Domain-Driven Design)。在領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)思想中,有許多是涉及到需求分析領(lǐng)域的先進(jìn)方法,我把它歸納為有效建模、統(tǒng)一語(yǔ)言和持續(xù)學(xué)習(xí)。
有人說(shuō):大師所站的高度實(shí)在太高了,是生活在太空里的,所以我們要追隨大師就只有因?yàn)槿毖醵赖簟N艺J(rèn)為這句話說(shuō)得非常生動(dòng),學(xué)習(xí)大師真的不是一件容易的事,把大師的思想落實(shí)到我們的工作中更難,常常還伴隨著一些不小的風(fēng)險(xiǎn),學(xué)習(xí)伊大師也是一樣的。
伊大師一上來(lái)就提出了要有效建模的思想,我當(dāng)時(shí)立馬就暈菜了。按照這個(gè)思想,我們應(yīng)當(dāng)在業(yè)務(wù)研討會(huì)上,與客戶討論業(yè)務(wù)需求的時(shí)候就開(kāi)始現(xiàn)場(chǎng)建模了。這!怎么可能呢?客戶看得懂那些專業(yè)的、抽象的模型嗎?我們能拿著模型與客戶交流嗎?這是不是在浪費(fèi)時(shí)間?
的確,伊大師提出了有效建模思想,與其它很多諸如在會(huì)后分析整理時(shí)進(jìn)行的原文分析方法大相徑庭。同時(shí),這個(gè)思想認(rèn)為,我們應(yīng)當(dāng)與客戶代表形成一種統(tǒng)一的語(yǔ)言,一種混合語(yǔ)言。這種語(yǔ)言,既有軟件技術(shù)中的元素,又有業(yè)務(wù)領(lǐng)域中的術(shù)語(yǔ),同時(shí),它又是技術(shù)人員與業(yè)務(wù)人員都能理解的語(yǔ)言。使用這個(gè)語(yǔ)言,技術(shù)人員與業(yè)務(wù)人員就是在用同一語(yǔ)言在溝通與討論問(wèn)題,這種溝通的障礙就得以消除。
道理簡(jiǎn)單實(shí)踐難,什么是有效的建模,什么是統(tǒng)一的語(yǔ)言呢?經(jīng)過(guò)無(wú)數(shù)的實(shí)踐與嘗試,我逐漸開(kāi)始明白了。首先,什么是有效的建模呢?當(dāng)我們作為非專業(yè)人員去看一個(gè)建筑設(shè)計(jì)師繪制的圖紙時(shí),我們一看就明白這是一棟樓房,那是一座橋梁,為什么?因?yàn)閳D紙形象生動(dòng),沒(méi)有那么多專業(yè)術(shù)語(yǔ),我們一看就明白了。軟件中的設(shè)計(jì)圖也是一樣的道理。
當(dāng)我們站在技術(shù)人員的視角去繪制設(shè)計(jì)圖時(shí),客戶必然看不懂,因?yàn)閳D中使用的都是專業(yè)的術(shù)語(yǔ)、專業(yè)的符號(hào),表達(dá)的都是專業(yè)的設(shè)計(jì)思想。反過(guò)來(lái),如果我們站在業(yè)務(wù)人員的視角去繪制設(shè)計(jì)圖時(shí),情況就不一樣了。如果一個(gè)用例圖,圖中的功能都是客戶日常經(jīng)常做的業(yè)務(wù)操作,并且命名都是業(yè)務(wù)人員能夠理解的業(yè)務(wù)術(shù)語(yǔ),試問(wèn)客戶會(huì)不理解嗎?同樣,在領(lǐng)域模型中,我們按照客戶的思路,運(yùn)用客戶的術(shù)語(yǔ),去繪制一個(gè)一個(gè)的對(duì)象,按照他們的思路去描繪對(duì)象間的關(guān)系,描繪對(duì)象間的操作,他們真的就會(huì)看不明白嗎?這說(shuō)得似乎有一些抽象,我們舉一個(gè)實(shí)際的例子吧。
有一次,我與客戶在討論一個(gè)考核系統(tǒng),首先客戶描述著他們的需求:
客戶:我們這個(gè)考核系統(tǒng)是由許多個(gè)考核指標(biāo)組成的,每個(gè)考核指標(biāo)就標(biāo)志著我們的某項(xiàng)工作的完成情況。每個(gè)考核指標(biāo)中有一個(gè)分母數(shù),標(biāo)志某段時(shí)間所有應(yīng)當(dāng)完成的工作數(shù)量,有一個(gè)分子數(shù),標(biāo)志這段時(shí)間正確完成的工作數(shù)量,最后還有一個(gè)過(guò)錯(cuò)數(shù),標(biāo)志那些錯(cuò)誤的,或者沒(méi)有按時(shí)完成的工作數(shù)量。
需求人員:為什么是分子分母?
客戶:因?yàn)樽詈笠?jì)算正確率,用正確率來(lái)考核一個(gè)單位完成工作的情況。
這樣,我們?cè)诩埳侠L制出一個(gè)考核指標(biāo),在屬性中寫(xiě)下分母數(shù)、分子數(shù)、過(guò)錯(cuò)數(shù)、正確率。
需求人員:那么每個(gè)考核指標(biāo)都有一個(gè)過(guò)錯(cuò)判斷標(biāo)準(zhǔn)了?
客戶:當(dāng)然啦,每個(gè)考核指標(biāo)都有它的過(guò)錯(cuò)判斷標(biāo)準(zhǔn)。一個(gè)考核指標(biāo)可能會(huì)有多個(gè)過(guò)錯(cuò)行為,每一個(gè)過(guò)錯(cuò)行為都有各自的過(guò)錯(cuò)判斷標(biāo)準(zhǔn),任何一個(gè)過(guò)錯(cuò)了,這個(gè)執(zhí)法行為就算過(guò)錯(cuò)啦。
需求人員:先等等,你剛才提到執(zhí)法行為了。執(zhí)法行為和考核指標(biāo)是什么關(guān)系?
客戶:哦,執(zhí)法行為嘛,就是執(zhí)法人員對(duì)某個(gè)用戶執(zhí)行的一次業(yè)務(wù)操作??己酥笜?biāo)中的分母數(shù)就是所有執(zhí)法行為的個(gè)數(shù);分子數(shù)就是正確的執(zhí)法個(gè)數(shù);過(guò)錯(cuò)數(shù)就是錯(cuò)誤的執(zhí)法個(gè)數(shù)。
這樣,我們就繪制出這樣一個(gè)草圖:
客戶看了這個(gè)草圖有些不同明白:過(guò)錯(cuò)類型是什么東西?
需求人員:過(guò)錯(cuò)類型就是某種類型的過(guò)錯(cuò)行為呀,它定義了某種過(guò)錯(cuò)行為,有它的過(guò)錯(cuò)判斷標(biāo)準(zhǔn)。下面這個(gè)過(guò)錯(cuò)行為就是那些具體的過(guò)錯(cuò),比如張三今天犯了什么錯(cuò),李四明天犯了什么錯(cuò)。
客戶:哦,明白。這兩個(gè)箭頭怎么跟其它箭頭不一樣,后面還跟了個(gè)菱形框?
需求人員:哦,這代表的是包含關(guān)系,表示一個(gè)考核指標(biāo)包含了多個(gè)類型的過(guò)錯(cuò)行為呀。
經(jīng)過(guò)一番交流,我們已經(jīng)明白客戶的意思了,客戶也明白我們畫(huà)的圖了。大家對(duì)彼此的交流都比較滿意。
所有的愛(ài)情都是以浪漫開(kāi)始的,需求分析也不如此。隨著需求分析的不斷深入,我們發(fā)現(xiàn)問(wèn)題了。在這張圖中,我們把執(zhí)法行為與過(guò)錯(cuò)行為僅僅描述為一對(duì)多的包含關(guān)系,似乎沒(méi)有什么特別的。但對(duì)大量考核指標(biāo)具體需求的分析,我們才發(fā)現(xiàn)其實(shí)不是這樣簡(jiǎn)單。當(dāng)考核指標(biāo)只有一種過(guò)錯(cuò)行為的時(shí)候,那非常簡(jiǎn)單,這個(gè)過(guò)錯(cuò)行為對(duì)就是對(duì),錯(cuò)就是錯(cuò)。但當(dāng)考核指標(biāo)存在多種過(guò)錯(cuò)行為的時(shí)候,情況就復(fù)雜了,必須分成三種情況:
1. 一個(gè)執(zhí)法行為同時(shí)包含多種過(guò)錯(cuò)行為,每個(gè)過(guò)錯(cuò)行為就是一個(gè)考核點(diǎn),任意一個(gè)考核點(diǎn)錯(cuò)了整個(gè)就判錯(cuò),只有所有考核點(diǎn)都正確才判正確。這種情況就像填一個(gè)表單,所有數(shù)據(jù)項(xiàng)都填對(duì)了才算對(duì),任意一個(gè)錯(cuò)了就算錯(cuò),然后畫(huà)出這樣一個(gè)對(duì)象圖:
2. 雖然一個(gè)考核指標(biāo)定義了多個(gè)過(guò)錯(cuò)行為,但它把所有執(zhí)法行為分為多個(gè)類型,每個(gè)類型的執(zhí)法行為只對(duì)應(yīng)一個(gè)過(guò)錯(cuò)行為,這個(gè)過(guò)錯(cuò)行為對(duì)就是對(duì),錯(cuò)就是錯(cuò):
3. 最后一種就是那些限期完成的考核指標(biāo),正確的行為只有一個(gè):按時(shí)完成的行為,過(guò)錯(cuò)行為卻有兩個(gè):逾期完成與逾期未完成。
雖然圖形有些復(fù)雜,但這正是代表了現(xiàn)實(shí)世界業(yè)務(wù)的復(fù)雜性。我們拿著這些圖與客戶進(jìn)行了簡(jiǎn)單的描述,由于圖中的所有元素都是用客戶熟悉的術(shù)語(yǔ)描述的,因此他們很快就能夠理解。同時(shí),開(kāi)發(fā)人員拿到這樣一個(gè)圖,很快就制訂了四套不同的方案,來(lái)分別解決四種不同的情況。
隨后,在對(duì)這四種情況更加深入的分析時(shí),我們發(fā)現(xiàn)第一種情況在計(jì)算過(guò)錯(cuò)數(shù)時(shí)似乎有一些問(wèn)題。在第一種情況中,一個(gè)執(zhí)法行為包含了多個(gè)過(guò)錯(cuò)行為,如果出現(xiàn)了過(guò)錯(cuò),過(guò)錯(cuò)數(shù)算幾?假如一個(gè)執(zhí)法行為包含三個(gè)過(guò)錯(cuò)行為,如果都做對(duì)了,分子數(shù)算1;但假如有2個(gè)過(guò)錯(cuò)行為錯(cuò)了,過(guò)錯(cuò)數(shù)算2?還有那一個(gè)正確的行為呢?這似乎有些矛盾!當(dāng)我們向業(yè)務(wù)人員提出這個(gè)問(wèn)題時(shí),他也有些懵了,這樣的結(jié)果似乎是我們雙方都沒(méi)有預(yù)料到的。經(jīng)過(guò)反復(fù)的思考與討論,最后我們做出這樣的決定:將原有的過(guò)錯(cuò)數(shù)拆分成過(guò)錯(cuò)戶與過(guò)錯(cuò)數(shù)。在以上情況中,如果一個(gè)執(zhí)法行為有2個(gè)過(guò)錯(cuò)行為錯(cuò)了,過(guò)錯(cuò)戶為1,過(guò)錯(cuò)數(shù)為2。試想,如果不對(duì)需求進(jìn)行如此深入分析與理解,能發(fā)現(xiàn)這樣的問(wèn)題嗎?如果不及早發(fā)現(xiàn)這樣的問(wèn)題,是否會(huì)給項(xiàng)目后期帶來(lái)巨大的風(fēng)險(xiǎn)?
應(yīng)該說(shuō),從最初的粗淺認(rèn)識(shí),深入到后來(lái)對(duì)四種情況的認(rèn)識(shí),正是體現(xiàn)了DDD的另一個(gè)思想:持續(xù)學(xué)習(xí)。需求人員在開(kāi)始一個(gè)新的管理系統(tǒng)的分析工作時(shí),都有可能面臨著一個(gè)全新的業(yè)務(wù)領(lǐng)域。在這個(gè)領(lǐng)域中,他們不可能一夜成為專家,也不必要成為專家。他們需要時(shí)間去學(xué)習(xí)領(lǐng)域知識(shí),但這并不意味著學(xué)習(xí)所有的領(lǐng)域知識(shí),而是與軟件相關(guān)的領(lǐng)域知識(shí)。做財(cái)務(wù)軟件,你不必考財(cái)務(wù)師,但你必須要學(xué)會(huì)與財(cái)務(wù)軟件相關(guān)的財(cái)務(wù)知識(shí)。你對(duì)領(lǐng)域模型的認(rèn)識(shí)被延伸到了整個(gè)軟件生命周期中,包括之后一次一次的升級(jí)完善。你每認(rèn)識(shí)深入一點(diǎn)兒,就可能會(huì)體現(xiàn)到你的分析設(shè)計(jì)中,并最終體現(xiàn)在開(kāi)發(fā)的軟件中。你對(duì)領(lǐng)域知識(shí)認(rèn)識(shí)再深入一點(diǎn)兒,軟件就再完善一分。
我們應(yīng)當(dāng)怎樣做需求分析
我們應(yīng)當(dāng)怎樣做需求調(diào)研:初識(shí)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:拜訪
我們應(yīng)當(dāng)怎樣做需求調(diào)研:研討會(huì)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求研討
我們應(yīng)當(dāng)怎樣做需求調(diào)研:迭代
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求捕獲(上)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求捕獲(下)
我們應(yīng)當(dāng)怎樣做需求分析:功能角色分析與用例圖
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)流程分析(上)
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)流程分析(下)
我們應(yīng)當(dāng)怎樣做需求分析:用例說(shuō)明
我們應(yīng)當(dāng)怎樣做需求分析:查詢報(bào)表分析
我們應(yīng)當(dāng)怎樣做需求分析:子用例與擴(kuò)展用例
我們應(yīng)當(dāng)怎樣做需求分析:行動(dòng)圖和狀態(tài)圖
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)領(lǐng)域分析
我們應(yīng)當(dāng)怎樣做需求分析:原文分析法
我們應(yīng)當(dāng)怎樣做需求分析:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
我們應(yīng)當(dāng)怎樣做需求分析:非功能需求
我們應(yīng)當(dāng)怎樣做需求確認(rèn):需求列表
我們應(yīng)當(dāng)怎樣做需求確認(rèn):一個(gè)需求列表的實(shí)例
我們應(yīng)當(dāng)怎樣做需求確認(rèn):快速原型法
我們應(yīng)當(dāng)怎樣做需求確認(rèn):需求規(guī)格說(shuō)明書(shū)
我們應(yīng)當(dāng)怎樣做需求確認(rèn):評(píng)審與簽字確認(rèn)會(huì)
(續(xù))
有人說(shuō):大師所站的高度實(shí)在太高了,是生活在太空里的,所以我們要追隨大師就只有因?yàn)槿毖醵赖簟N艺J(rèn)為這句話說(shuō)得非常生動(dòng),學(xué)習(xí)大師真的不是一件容易的事,把大師的思想落實(shí)到我們的工作中更難,常常還伴隨著一些不小的風(fēng)險(xiǎn),學(xué)習(xí)伊大師也是一樣的。
伊大師一上來(lái)就提出了要有效建模的思想,我當(dāng)時(shí)立馬就暈菜了。按照這個(gè)思想,我們應(yīng)當(dāng)在業(yè)務(wù)研討會(huì)上,與客戶討論業(yè)務(wù)需求的時(shí)候就開(kāi)始現(xiàn)場(chǎng)建模了。這!怎么可能呢?客戶看得懂那些專業(yè)的、抽象的模型嗎?我們能拿著模型與客戶交流嗎?這是不是在浪費(fèi)時(shí)間?
的確,伊大師提出了有效建模思想,與其它很多諸如在會(huì)后分析整理時(shí)進(jìn)行的原文分析方法大相徑庭。同時(shí),這個(gè)思想認(rèn)為,我們應(yīng)當(dāng)與客戶代表形成一種統(tǒng)一的語(yǔ)言,一種混合語(yǔ)言。這種語(yǔ)言,既有軟件技術(shù)中的元素,又有業(yè)務(wù)領(lǐng)域中的術(shù)語(yǔ),同時(shí),它又是技術(shù)人員與業(yè)務(wù)人員都能理解的語(yǔ)言。使用這個(gè)語(yǔ)言,技術(shù)人員與業(yè)務(wù)人員就是在用同一語(yǔ)言在溝通與討論問(wèn)題,這種溝通的障礙就得以消除。
道理簡(jiǎn)單實(shí)踐難,什么是有效的建模,什么是統(tǒng)一的語(yǔ)言呢?經(jīng)過(guò)無(wú)數(shù)的實(shí)踐與嘗試,我逐漸開(kāi)始明白了。首先,什么是有效的建模呢?當(dāng)我們作為非專業(yè)人員去看一個(gè)建筑設(shè)計(jì)師繪制的圖紙時(shí),我們一看就明白這是一棟樓房,那是一座橋梁,為什么?因?yàn)閳D紙形象生動(dòng),沒(méi)有那么多專業(yè)術(shù)語(yǔ),我們一看就明白了。軟件中的設(shè)計(jì)圖也是一樣的道理。
當(dāng)我們站在技術(shù)人員的視角去繪制設(shè)計(jì)圖時(shí),客戶必然看不懂,因?yàn)閳D中使用的都是專業(yè)的術(shù)語(yǔ)、專業(yè)的符號(hào),表達(dá)的都是專業(yè)的設(shè)計(jì)思想。反過(guò)來(lái),如果我們站在業(yè)務(wù)人員的視角去繪制設(shè)計(jì)圖時(shí),情況就不一樣了。如果一個(gè)用例圖,圖中的功能都是客戶日常經(jīng)常做的業(yè)務(wù)操作,并且命名都是業(yè)務(wù)人員能夠理解的業(yè)務(wù)術(shù)語(yǔ),試問(wèn)客戶會(huì)不理解嗎?同樣,在領(lǐng)域模型中,我們按照客戶的思路,運(yùn)用客戶的術(shù)語(yǔ),去繪制一個(gè)一個(gè)的對(duì)象,按照他們的思路去描繪對(duì)象間的關(guān)系,描繪對(duì)象間的操作,他們真的就會(huì)看不明白嗎?這說(shuō)得似乎有一些抽象,我們舉一個(gè)實(shí)際的例子吧。
有一次,我與客戶在討論一個(gè)考核系統(tǒng),首先客戶描述著他們的需求:
客戶:我們這個(gè)考核系統(tǒng)是由許多個(gè)考核指標(biāo)組成的,每個(gè)考核指標(biāo)就標(biāo)志著我們的某項(xiàng)工作的完成情況。每個(gè)考核指標(biāo)中有一個(gè)分母數(shù),標(biāo)志某段時(shí)間所有應(yīng)當(dāng)完成的工作數(shù)量,有一個(gè)分子數(shù),標(biāo)志這段時(shí)間正確完成的工作數(shù)量,最后還有一個(gè)過(guò)錯(cuò)數(shù),標(biāo)志那些錯(cuò)誤的,或者沒(méi)有按時(shí)完成的工作數(shù)量。
需求人員:為什么是分子分母?
客戶:因?yàn)樽詈笠?jì)算正確率,用正確率來(lái)考核一個(gè)單位完成工作的情況。
這樣,我們?cè)诩埳侠L制出一個(gè)考核指標(biāo),在屬性中寫(xiě)下分母數(shù)、分子數(shù)、過(guò)錯(cuò)數(shù)、正確率。
需求人員:那么每個(gè)考核指標(biāo)都有一個(gè)過(guò)錯(cuò)判斷標(biāo)準(zhǔn)了?
客戶:當(dāng)然啦,每個(gè)考核指標(biāo)都有它的過(guò)錯(cuò)判斷標(biāo)準(zhǔn)。一個(gè)考核指標(biāo)可能會(huì)有多個(gè)過(guò)錯(cuò)行為,每一個(gè)過(guò)錯(cuò)行為都有各自的過(guò)錯(cuò)判斷標(biāo)準(zhǔn),任何一個(gè)過(guò)錯(cuò)了,這個(gè)執(zhí)法行為就算過(guò)錯(cuò)啦。
需求人員:先等等,你剛才提到執(zhí)法行為了。執(zhí)法行為和考核指標(biāo)是什么關(guān)系?
客戶:哦,執(zhí)法行為嘛,就是執(zhí)法人員對(duì)某個(gè)用戶執(zhí)行的一次業(yè)務(wù)操作??己酥笜?biāo)中的分母數(shù)就是所有執(zhí)法行為的個(gè)數(shù);分子數(shù)就是正確的執(zhí)法個(gè)數(shù);過(guò)錯(cuò)數(shù)就是錯(cuò)誤的執(zhí)法個(gè)數(shù)。
這樣,我們就繪制出這樣一個(gè)草圖:

客戶看了這個(gè)草圖有些不同明白:過(guò)錯(cuò)類型是什么東西?
需求人員:過(guò)錯(cuò)類型就是某種類型的過(guò)錯(cuò)行為呀,它定義了某種過(guò)錯(cuò)行為,有它的過(guò)錯(cuò)判斷標(biāo)準(zhǔn)。下面這個(gè)過(guò)錯(cuò)行為就是那些具體的過(guò)錯(cuò),比如張三今天犯了什么錯(cuò),李四明天犯了什么錯(cuò)。
客戶:哦,明白。這兩個(gè)箭頭怎么跟其它箭頭不一樣,后面還跟了個(gè)菱形框?
需求人員:哦,這代表的是包含關(guān)系,表示一個(gè)考核指標(biāo)包含了多個(gè)類型的過(guò)錯(cuò)行為呀。
經(jīng)過(guò)一番交流,我們已經(jīng)明白客戶的意思了,客戶也明白我們畫(huà)的圖了。大家對(duì)彼此的交流都比較滿意。
所有的愛(ài)情都是以浪漫開(kāi)始的,需求分析也不如此。隨著需求分析的不斷深入,我們發(fā)現(xiàn)問(wèn)題了。在這張圖中,我們把執(zhí)法行為與過(guò)錯(cuò)行為僅僅描述為一對(duì)多的包含關(guān)系,似乎沒(méi)有什么特別的。但對(duì)大量考核指標(biāo)具體需求的分析,我們才發(fā)現(xiàn)其實(shí)不是這樣簡(jiǎn)單。當(dāng)考核指標(biāo)只有一種過(guò)錯(cuò)行為的時(shí)候,那非常簡(jiǎn)單,這個(gè)過(guò)錯(cuò)行為對(duì)就是對(duì),錯(cuò)就是錯(cuò)。但當(dāng)考核指標(biāo)存在多種過(guò)錯(cuò)行為的時(shí)候,情況就復(fù)雜了,必須分成三種情況:
1. 一個(gè)執(zhí)法行為同時(shí)包含多種過(guò)錯(cuò)行為,每個(gè)過(guò)錯(cuò)行為就是一個(gè)考核點(diǎn),任意一個(gè)考核點(diǎn)錯(cuò)了整個(gè)就判錯(cuò),只有所有考核點(diǎn)都正確才判正確。這種情況就像填一個(gè)表單,所有數(shù)據(jù)項(xiàng)都填對(duì)了才算對(duì),任意一個(gè)錯(cuò)了就算錯(cuò),然后畫(huà)出這樣一個(gè)對(duì)象圖:

2. 雖然一個(gè)考核指標(biāo)定義了多個(gè)過(guò)錯(cuò)行為,但它把所有執(zhí)法行為分為多個(gè)類型,每個(gè)類型的執(zhí)法行為只對(duì)應(yīng)一個(gè)過(guò)錯(cuò)行為,這個(gè)過(guò)錯(cuò)行為對(duì)就是對(duì),錯(cuò)就是錯(cuò):

3. 最后一種就是那些限期完成的考核指標(biāo),正確的行為只有一個(gè):按時(shí)完成的行為,過(guò)錯(cuò)行為卻有兩個(gè):逾期完成與逾期未完成。

雖然圖形有些復(fù)雜,但這正是代表了現(xiàn)實(shí)世界業(yè)務(wù)的復(fù)雜性。我們拿著這些圖與客戶進(jìn)行了簡(jiǎn)單的描述,由于圖中的所有元素都是用客戶熟悉的術(shù)語(yǔ)描述的,因此他們很快就能夠理解。同時(shí),開(kāi)發(fā)人員拿到這樣一個(gè)圖,很快就制訂了四套不同的方案,來(lái)分別解決四種不同的情況。
隨后,在對(duì)這四種情況更加深入的分析時(shí),我們發(fā)現(xiàn)第一種情況在計(jì)算過(guò)錯(cuò)數(shù)時(shí)似乎有一些問(wèn)題。在第一種情況中,一個(gè)執(zhí)法行為包含了多個(gè)過(guò)錯(cuò)行為,如果出現(xiàn)了過(guò)錯(cuò),過(guò)錯(cuò)數(shù)算幾?假如一個(gè)執(zhí)法行為包含三個(gè)過(guò)錯(cuò)行為,如果都做對(duì)了,分子數(shù)算1;但假如有2個(gè)過(guò)錯(cuò)行為錯(cuò)了,過(guò)錯(cuò)數(shù)算2?還有那一個(gè)正確的行為呢?這似乎有些矛盾!當(dāng)我們向業(yè)務(wù)人員提出這個(gè)問(wèn)題時(shí),他也有些懵了,這樣的結(jié)果似乎是我們雙方都沒(méi)有預(yù)料到的。經(jīng)過(guò)反復(fù)的思考與討論,最后我們做出這樣的決定:將原有的過(guò)錯(cuò)數(shù)拆分成過(guò)錯(cuò)戶與過(guò)錯(cuò)數(shù)。在以上情況中,如果一個(gè)執(zhí)法行為有2個(gè)過(guò)錯(cuò)行為錯(cuò)了,過(guò)錯(cuò)戶為1,過(guò)錯(cuò)數(shù)為2。試想,如果不對(duì)需求進(jìn)行如此深入分析與理解,能發(fā)現(xiàn)這樣的問(wèn)題嗎?如果不及早發(fā)現(xiàn)這樣的問(wèn)題,是否會(huì)給項(xiàng)目后期帶來(lái)巨大的風(fēng)險(xiǎn)?
應(yīng)該說(shuō),從最初的粗淺認(rèn)識(shí),深入到后來(lái)對(duì)四種情況的認(rèn)識(shí),正是體現(xiàn)了DDD的另一個(gè)思想:持續(xù)學(xué)習(xí)。需求人員在開(kāi)始一個(gè)新的管理系統(tǒng)的分析工作時(shí),都有可能面臨著一個(gè)全新的業(yè)務(wù)領(lǐng)域。在這個(gè)領(lǐng)域中,他們不可能一夜成為專家,也不必要成為專家。他們需要時(shí)間去學(xué)習(xí)領(lǐng)域知識(shí),但這并不意味著學(xué)習(xí)所有的領(lǐng)域知識(shí),而是與軟件相關(guān)的領(lǐng)域知識(shí)。做財(cái)務(wù)軟件,你不必考財(cái)務(wù)師,但你必須要學(xué)會(huì)與財(cái)務(wù)軟件相關(guān)的財(cái)務(wù)知識(shí)。你對(duì)領(lǐng)域模型的認(rèn)識(shí)被延伸到了整個(gè)軟件生命周期中,包括之后一次一次的升級(jí)完善。你每認(rèn)識(shí)深入一點(diǎn)兒,就可能會(huì)體現(xiàn)到你的分析設(shè)計(jì)中,并最終體現(xiàn)在開(kāi)發(fā)的軟件中。你對(duì)領(lǐng)域知識(shí)認(rèn)識(shí)再深入一點(diǎn)兒,軟件就再完善一分。
我們應(yīng)當(dāng)怎樣做需求分析
我們應(yīng)當(dāng)怎樣做需求調(diào)研:初識(shí)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:拜訪
我們應(yīng)當(dāng)怎樣做需求調(diào)研:研討會(huì)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求研討
我們應(yīng)當(dāng)怎樣做需求調(diào)研:迭代
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求捕獲(上)
我們應(yīng)當(dāng)怎樣做需求調(diào)研:需求捕獲(下)
我們應(yīng)當(dāng)怎樣做需求分析:功能角色分析與用例圖
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)流程分析(上)
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)流程分析(下)
我們應(yīng)當(dāng)怎樣做需求分析:用例說(shuō)明
我們應(yīng)當(dāng)怎樣做需求分析:查詢報(bào)表分析
我們應(yīng)當(dāng)怎樣做需求分析:子用例與擴(kuò)展用例
我們應(yīng)當(dāng)怎樣做需求分析:行動(dòng)圖和狀態(tài)圖
我們應(yīng)當(dāng)怎樣做需求分析:業(yè)務(wù)領(lǐng)域分析
我們應(yīng)當(dāng)怎樣做需求分析:原文分析法
我們應(yīng)當(dāng)怎樣做需求分析:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
我們應(yīng)當(dāng)怎樣做需求分析:非功能需求
我們應(yīng)當(dāng)怎樣做需求確認(rèn):需求列表
我們應(yīng)當(dāng)怎樣做需求確認(rèn):一個(gè)需求列表的實(shí)例
我們應(yīng)當(dāng)怎樣做需求確認(rèn):快速原型法
我們應(yīng)當(dāng)怎樣做需求確認(rèn):需求規(guī)格說(shuō)明書(shū)
我們應(yīng)當(dāng)怎樣做需求確認(rèn):評(píng)審與簽字確認(rèn)會(huì)
(續(xù))
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
