軟件開(kāi)發(fā)質(zhì)量的雙保險(xiǎn)(2)——業(yè)務(wù)設(shè)計(jì)驗(yàn)證與業(yè)務(wù)用例

0 評(píng)論 5006 瀏覽 14 收藏 15 分鐘

編輯導(dǎo)語(yǔ):在上篇文章《軟件質(zhì)量的雙保險(xiǎn)(1)——設(shè)計(jì)驗(yàn)證與軟件測(cè)試》中,作者談到判斷軟件設(shè)計(jì)的結(jié)果是正確的,要用到“設(shè)計(jì)驗(yàn)證”的方法,包括“業(yè)務(wù)設(shè)計(jì)驗(yàn)證”和“應(yīng)用設(shè)計(jì)驗(yàn)證”兩個(gè)部分,本篇文章中,作者繼續(xù)分析了設(shè)計(jì)系統(tǒng)的驗(yàn)證用例。

對(duì)需求工程師來(lái)說(shuō),編寫(xiě)一次完整、完美的業(yè)務(wù)用例所帶來(lái)的能力提升,可匹敵多次設(shè)計(jì)同類(lèi)系統(tǒng)的收獲,因?yàn)閹в袠I(yè)務(wù)場(chǎng)景的用例整合了架構(gòu)、功能、數(shù)據(jù)、管理等多層面的內(nèi)容,且由于用例是用數(shù)據(jù)、規(guī)則的細(xì)粒度寫(xiě)成的,如驗(yàn)證結(jié)果沒(méi)有問(wèn)題則為系統(tǒng)上線(xiàn)成功提供了保證。

如果寫(xiě)不出自己設(shè)計(jì)系統(tǒng)的驗(yàn)證用例,說(shuō)明他對(duì)系統(tǒng)是否能夠成功運(yùn)行是沒(méi)有把握的。有用例幫助檢驗(yàn)結(jié)果,不但能減少設(shè)計(jì)和編程錯(cuò)誤,還能在設(shè)計(jì)階段就掌握上線(xiàn)后的細(xì)節(jié)和效果、提升客戶(hù)滿(mǎn)意度,同時(shí)詳細(xì)完整的用例還可以用作上線(xiàn)培訓(xùn)資料。

一、定義

1. 業(yè)務(wù)設(shè)計(jì)驗(yàn)證

通過(guò)編寫(xiě)一套業(yè)務(wù)數(shù)據(jù)用以模擬某個(gè)業(yè)務(wù)處理場(chǎng)景的全過(guò)程,用這套數(shù)據(jù)將系統(tǒng)中要驗(yàn)證的對(duì)象串聯(lián)起來(lái),用以驗(yàn)證業(yè)務(wù)設(shè)計(jì)的整體架構(gòu)、業(yè)務(wù)流程、界面字段、數(shù)據(jù)關(guān)系、計(jì)算公式、管控規(guī)則等內(nèi)容是否正確,確保系統(tǒng)中的業(yè)務(wù)邏輯、數(shù)據(jù)邏輯是正確的,業(yè)務(wù)設(shè)計(jì)驗(yàn)證的主要工作是編寫(xiě)業(yè)務(wù)用例。

2. 業(yè)務(wù)用例

是針對(duì)業(yè)務(wù)設(shè)計(jì)階段成果的驗(yàn)證依據(jù),業(yè)務(wù)用例將專(zhuān)業(yè)知識(shí)、業(yè)務(wù)設(shè)計(jì)部分(業(yè)務(wù)與管理)的成果,通過(guò)業(yè)務(wù)場(chǎng)景將流程、功能、數(shù)據(jù)、規(guī)則等串聯(lián)在一起,用以驗(yàn)證業(yè)務(wù)邏輯、數(shù)據(jù)邏輯是否正確、功能是否可以滿(mǎn)足設(shè)計(jì)的要求。

  • 用例構(gòu)成:業(yè)務(wù)用例是由三個(gè)部分構(gòu)成的,用例場(chǎng)景、數(shù)據(jù)結(jié)構(gòu)圖、數(shù)據(jù)推演表;
  • 編寫(xiě)期間:業(yè)務(wù)用例是在業(yè)務(wù)設(shè)計(jì)期間編寫(xiě)的,在業(yè)務(wù)設(shè)計(jì)完成時(shí)進(jìn)行驗(yàn)證。

3. 作用

業(yè)務(wù)用例的粒度包含了從架構(gòu)(粗)-數(shù)據(jù)(細(xì)),因此可以精確地驗(yàn)證如下的內(nèi)容(不限于此)。圖1 表示了在軟件工程框架上編寫(xiě)的業(yè)務(wù)用例的位置,業(yè)務(wù)驗(yàn)證的作用如下:

軟件開(kāi)發(fā)質(zhì)量的雙保險(xiǎn) — 2.業(yè)務(wù)設(shè)計(jì)驗(yàn)證與業(yè)務(wù)用例

圖1 軟件工程框架上業(yè)務(wù)用例的位置

1)支持驗(yàn)證業(yè)務(wù)設(shè)計(jì)結(jié)果

  • 確認(rèn)業(yè)務(wù)架構(gòu)的合理性、業(yè)務(wù)優(yōu)化的效果;
  • 檢查業(yè)務(wù)邏輯、數(shù)據(jù)邏輯的正確性,找出隱性的邏輯錯(cuò)誤;
  • 通過(guò)數(shù)據(jù)推演,找到業(yè)務(wù)流程設(shè)計(jì)上的“斷點(diǎn)”、或是“多余點(diǎn)”等。

2)支持應(yīng)用用例的編制

作為后面應(yīng)用設(shè)計(jì)用例的“業(yè)務(wù)數(shù)據(jù)來(lái)源”,與應(yīng)用設(shè)計(jì)成果(界面、控件)等共同組合,形成應(yīng)用用例。

3)支持測(cè)試用例的編制

由于業(yè)務(wù)用例含有精確的“業(yè)務(wù)數(shù)據(jù)”,可以為測(cè)試工程師編寫(xiě)測(cè)試用例提供數(shù)據(jù)、規(guī)則等來(lái)源,同時(shí)也可以幫助測(cè)試工程師更好地理解系統(tǒng)的業(yè)務(wù)背景、業(yè)務(wù)邏輯。

4)支持上線(xiàn)培訓(xùn)

業(yè)務(wù)用例的數(shù)據(jù)、規(guī)則等由于模擬的是實(shí)際業(yè)務(wù)場(chǎng)景,上線(xiàn)培訓(xùn)時(shí)用戶(hù)可以直接按照業(yè)務(wù)用例中的數(shù)據(jù)進(jìn)行練習(xí),加快學(xué)習(xí)和理解的系統(tǒng)的速度。

5)使用對(duì)象、使用場(chǎng)合

  • 業(yè)務(wù)設(shè)計(jì)師進(jìn)行內(nèi)部討論、驗(yàn)證;
  • 與客戶(hù)的相關(guān)部門(mén)、崗位進(jìn)行溝通、確認(rèn);
  • 向后續(xù)設(shè)計(jì)、驗(yàn)證提供邏輯、數(shù)據(jù)的支持等。

6)對(duì)軟件客戶(hù)價(jià)值的檢驗(yàn)

軟件客戶(hù)價(jià)值來(lái)源于業(yè)務(wù)設(shè)計(jì)和應(yīng)用設(shè)計(jì),其中業(yè)務(wù)設(shè)計(jì)產(chǎn)生的業(yè)務(wù)價(jià)值包括:

  • 經(jīng)過(guò)業(yè)務(wù)設(shè)計(jì)后,企業(yè)的各類(lèi)過(guò)程清晰(業(yè)務(wù)流程),如:合同流程、采購(gòu)流程等;
  • 企業(yè)的各類(lèi)規(guī)則標(biāo)準(zhǔn)化(字典),如:客商、材料、采購(gòu)、支付等;
  • 各類(lèi)需求調(diào)研時(shí)的客戶(hù)痛點(diǎn)的解決方案等。

二、業(yè)務(wù)用例內(nèi)容

編寫(xiě)業(yè)務(wù)用例是業(yè)務(wù)設(shè)計(jì)驗(yàn)證的主要工作。一個(gè)完整的業(yè)務(wù)用例由三個(gè)部分構(gòu)成:用例場(chǎng)景、數(shù)據(jù)結(jié)構(gòu)圖和數(shù)據(jù)推演表,其中:

  • 用例場(chǎng)景:用以確定需要驗(yàn)證的對(duì)象、目的;
  • 數(shù)據(jù)結(jié)構(gòu)圖:利用架構(gòu)圖來(lái)表達(dá)用例場(chǎng)景的數(shù)據(jù)流轉(zhuǎn)過(guò)程;
  • 數(shù)據(jù)推演表:利用數(shù)據(jù)結(jié)構(gòu)圖,詳細(xì)數(shù)據(jù)、規(guī)則來(lái)推演驗(yàn)證用例場(chǎng)景描述的過(guò)程。

1. 用例場(chǎng)景

一個(gè)系統(tǒng)的業(yè)務(wù)設(shè)計(jì)完成后,需要對(duì)那些部分進(jìn)行驗(yàn)證是根據(jù)需求工程師(或業(yè)務(wù)專(zhuān)家)的判斷來(lái)決定的,通常判斷是否需要驗(yàn)證的條件如下(僅做參考):

  • 業(yè)務(wù)場(chǎng)景、業(yè)務(wù)邏輯非常復(fù)雜的部分;
  • 業(yè)務(wù)計(jì)算的邏輯復(fù)雜、數(shù)據(jù)來(lái)源復(fù)雜、且需要多重計(jì)算;
  • 待開(kāi)發(fā)的軟件是新產(chǎn)品、或涉及到新的業(yè)務(wù);
  • 軟件涉及到多人協(xié)同、多系統(tǒng)協(xié)同等的場(chǎng)景;
  • 客戶(hù)對(duì)某個(gè)業(yè)務(wù)場(chǎng)景非常關(guān)心、且需求工程師把握也不大的情況等。

大型的、復(fù)雜系統(tǒng)可能要編寫(xiě)多個(gè),甚至十幾個(gè)業(yè)務(wù)用例。每個(gè)業(yè)務(wù)用例的對(duì)象、目的都不同,它們的驗(yàn)證結(jié)果合起來(lái)就給出了該系統(tǒng)的業(yè)務(wù)設(shè)計(jì)成果是否滿(mǎn)足要求。

下面給出具體的用例提綱(作為后續(xù)設(shè)計(jì)用例場(chǎng)景),用例的數(shù)據(jù)關(guān)系參見(jiàn)圖2。

  • 題目:工程項(xiàng)目的成本過(guò)程管理;
  • 目的:一是驗(yàn)證成本發(fā)生過(guò)程的邏輯的正確性、二是成本過(guò)程的可控性;
  • 價(jià)值:充分展示“信息化環(huán)境”下的成本管理方式、帶來(lái)的價(jià)值(傳統(tǒng)方式做不到)。

根據(jù)上述提綱,用例場(chǎng)景具體數(shù)據(jù)設(shè)定如下,其中,企業(yè)為兩級(jí)組織(公司、項(xiàng)目部):

  • 場(chǎng)景的起始數(shù)據(jù)①=合同總額=1100萬(wàn)元;
  • 目標(biāo)數(shù)據(jù)④公司預(yù)留利潤(rùn)額=100萬(wàn)、目標(biāo)數(shù)據(jù)②項(xiàng)目部預(yù)留利潤(rùn)額=50萬(wàn);
  • 預(yù)算總額分為4條線(xiàn)支出,即:材料線(xiàn)、設(shè)備線(xiàn)、勞務(wù)線(xiàn)和經(jīng)費(fèi)線(xiàn);
  • 結(jié)果數(shù)據(jù)①公司實(shí)得利潤(rùn)額=80萬(wàn)(減)、結(jié)果數(shù)據(jù)②項(xiàng)目組實(shí)得利潤(rùn)額=-20萬(wàn)(虧)。

這個(gè)用例場(chǎng)景給出了“成本管理”的關(guān)鍵環(huán)節(jié)(節(jié)點(diǎn)數(shù)據(jù)),有了這個(gè)關(guān)鍵節(jié)點(diǎn)的指引,第二步做出“數(shù)據(jù)結(jié)構(gòu)圖”(驗(yàn)證用的框架)、第三步寫(xiě)出“數(shù)據(jù)推演表(驗(yàn)證用的內(nèi)容)”

2. 數(shù)據(jù)結(jié)構(gòu)圖

用例場(chǎng)景不但要用文字描述,還需要用一個(gè)可以表達(dá)場(chǎng)景的數(shù)據(jù)結(jié)構(gòu)圖,這個(gè)圖可以給出:場(chǎng)景開(kāi)始的目標(biāo)數(shù)據(jù)、場(chǎng)景結(jié)束的結(jié)果數(shù)據(jù)、以及表達(dá)從目標(biāo)數(shù)據(jù)→結(jié)果數(shù)據(jù)的變化過(guò)程的結(jié)構(gòu)圖。

軟件開(kāi)發(fā)質(zhì)量的雙保險(xiǎn) — 2.業(yè)務(wù)設(shè)計(jì)驗(yàn)證與業(yè)務(wù)用例

圖2 數(shù)據(jù)結(jié)構(gòu)圖

1)結(jié)構(gòu)圖

數(shù)據(jù)結(jié)構(gòu)圖,是以功能的結(jié)果數(shù)據(jù)為節(jié)點(diǎn)、以數(shù)據(jù)間的關(guān)系為連接形成的圖形,給出了從目標(biāo)數(shù)據(jù)→結(jié)果數(shù)據(jù)的變化過(guò)程這個(gè)結(jié)構(gòu)圖中同時(shí)體現(xiàn)了“業(yè)務(wù)邏輯”和“數(shù)據(jù)邏輯”。

  • 形式:采用流程與分解兩種模型的混合體,來(lái)源于流程圖的流向和和數(shù)據(jù)的分解結(jié)構(gòu);
  • 來(lái)源:結(jié)構(gòu)圖的內(nèi)容來(lái)源為用例場(chǎng)景;
  • 節(jié)點(diǎn):節(jié)點(diǎn)標(biāo)注的是“功能名稱(chēng)+數(shù)據(jù)”,這個(gè)“數(shù)據(jù)”是該功能的處理結(jié)果,節(jié)點(diǎn)不一定都來(lái)自于流程,也可以是“數(shù)據(jù)庫(kù)名稱(chēng)+數(shù)據(jù)”;
  • 關(guān)系:節(jié)點(diǎn)之間的關(guān)系是數(shù)據(jù)關(guān)系,前后之間是計(jì)算關(guān)系。

2)節(jié)點(diǎn)

根據(jù)用例的題目、場(chǎng)景來(lái)確定涉及到的哪些業(yè)務(wù)設(shè)計(jì)的成果,節(jié)點(diǎn)要素可能是一個(gè)功能(活動(dòng)、字典)、或是一個(gè)數(shù)據(jù)庫(kù),設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)圖需要將所有參與場(chǎng)景的要素找出來(lái),然后用數(shù)據(jù)關(guān)系把它們關(guān)聯(lián)起來(lái)。

由于本課題是“成本管理”,所以節(jié)點(diǎn)一定都是來(lái)自于與成本管理有關(guān)的功能(或數(shù)據(jù)庫(kù))。圖21-7為本用例的數(shù)據(jù)結(jié)構(gòu)圖,解讀如下:

  • 合同總額①=1100萬(wàn),①=②+③+④=950+50+100;
  • 目標(biāo)1:公司預(yù)留利潤(rùn)額④=100萬(wàn),結(jié)果1:公司獲得利潤(rùn)額⑧=80萬(wàn)(減少);
  • 目標(biāo)2:預(yù)算總額②=950萬(wàn), 結(jié)果2:成本結(jié)算額⑤=1020萬(wàn)(超標(biāo));
  • 項(xiàng)目部預(yù)算超額⑥:⑥=②-⑤=950–1020=-70萬(wàn),預(yù)算超額70萬(wàn);
  • 項(xiàng)目部實(shí)際利潤(rùn)⑦:⑦=③-⑥=50–70=-20萬(wàn),項(xiàng)目部實(shí)際利潤(rùn)額為-20萬(wàn);
  • 公司為項(xiàng)目部承擔(dān)了20萬(wàn)的虧損額,因此,公司實(shí)際利潤(rùn)額⑧=④+(-20)=100-20= 80萬(wàn)(公司實(shí)際利潤(rùn)額為80萬(wàn),減少了20萬(wàn))。

另外,要注意數(shù)據(jù)結(jié)構(gòu)圖的節(jié)點(diǎn)設(shè)置原則:

  • 節(jié)點(diǎn)上的數(shù)據(jù)一定是該功能內(nèi)部處理完成、且與成本管理相關(guān)的數(shù)據(jù);
  • 節(jié)點(diǎn)上的數(shù)據(jù)必須是“數(shù)字型”(需要進(jìn)行計(jì)算),而不能是“文字型”;
  • 節(jié)點(diǎn)上只標(biāo)注計(jì)算的結(jié)果,而不要計(jì)算的過(guò)程數(shù)據(jù)(留在后面的數(shù)據(jù)推演表中表達(dá));
  • 節(jié)點(diǎn)的粒度都要一致,包括:數(shù)據(jù)類(lèi)型、數(shù)據(jù)的單位。

3. 數(shù)據(jù)推演表

有了數(shù)據(jù)結(jié)構(gòu)圖,目標(biāo)和結(jié)果數(shù)據(jù)后,下面用一個(gè)數(shù)據(jù)推演表,將數(shù)據(jù)結(jié)構(gòu)圖中的從“目標(biāo)數(shù)據(jù)”→“結(jié)果數(shù)據(jù)”的數(shù)據(jù)變化過(guò)程用完整地列出來(lái),數(shù)據(jù)推演表涉及到的主要內(nèi)容可以分為三個(gè)部分:

  • 用例場(chǎng)景的要求,比如:項(xiàng)目部的預(yù)算要虧損,最終項(xiàng)目部利潤(rùn)為負(fù)值;
  • 場(chǎng)景中每個(gè)節(jié)點(diǎn)內(nèi)部的數(shù)據(jù)計(jì)算方法、公式;
  • 用例目的中規(guī)定的管理規(guī)則要求,如:成本過(guò)程的可控性。

數(shù)據(jù)推演表是對(duì)數(shù)據(jù)結(jié)構(gòu)圖上每個(gè)節(jié)點(diǎn)的內(nèi)部數(shù)據(jù)進(jìn)行詳細(xì)地表達(dá),每個(gè)數(shù)據(jù)推演表的最終合計(jì)值填寫(xiě)到數(shù)據(jù)結(jié)構(gòu)圖的相應(yīng)節(jié)點(diǎn)上,以數(shù)據(jù)結(jié)構(gòu)圖上“預(yù)算總額 = 950萬(wàn)”為例,預(yù)算總額見(jiàn)表1。

軟件開(kāi)發(fā)質(zhì)量的雙保險(xiǎn) — 2.業(yè)務(wù)設(shè)計(jì)驗(yàn)證與業(yè)務(wù)用例

表1 預(yù)算總額表(數(shù)據(jù)推演表) 注:表中的紅字為“父”節(jié)點(diǎn)。

每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一張類(lèi)似上述的數(shù)據(jù)推演表,這個(gè)數(shù)據(jù)推演表里記錄的就是功能中數(shù)據(jù)和數(shù)據(jù)的計(jì)算過(guò)程。

雖然數(shù)據(jù)推演表編制時(shí)的工作量很大,但正是有了詳實(shí)的數(shù)據(jù)對(duì)后面的測(cè)試、以及系統(tǒng)上線(xiàn)培訓(xùn)都起了很大的幫助,因?yàn)椴环倒せ蚴菧p少了返工總的周期可以大幅度地縮短,提升了一次上線(xiàn)的成功率。

反過(guò)來(lái)也可以說(shuō)明,如果復(fù)雜系統(tǒng)的數(shù)據(jù)不進(jìn)行預(yù)先的紙上推演,怎么保證軟件開(kāi)發(fā)完成后可以準(zhǔn)確的運(yùn)行呢?憑什么說(shuō)設(shè)計(jì)是正確無(wú)誤的呢?

三、業(yè)務(wù)設(shè)計(jì)驗(yàn)證過(guò)程

驗(yàn)證過(guò)程在編寫(xiě)業(yè)務(wù)場(chǎng)景、繪制數(shù)據(jù)結(jié)構(gòu)圖的時(shí)候就開(kāi)始了:

  • 繪制數(shù)據(jù)結(jié)構(gòu)圖的依據(jù)是對(duì)應(yīng)的業(yè)務(wù)流程圖,繪制數(shù)據(jù)結(jié)構(gòu)圖時(shí)可以確認(rèn)業(yè)務(wù)邏輯;
  • 數(shù)據(jù)結(jié)構(gòu)圖上的每個(gè)節(jié)點(diǎn)都對(duì)應(yīng)著一個(gè)具體的業(yè)務(wù)功能;
  • 每個(gè)功能又對(duì)應(yīng)著一個(gè)或一組原型界面;
  • 每個(gè)原型界面上的數(shù)據(jù)對(duì)應(yīng)著一個(gè)或一組數(shù)據(jù)推演表;
  • 每個(gè)數(shù)據(jù)推演表中的數(shù)據(jù)在填寫(xiě)時(shí)都必須給出清晰的數(shù)據(jù)來(lái)源;
  • 確認(rèn)數(shù)據(jù)推演表中的所有數(shù)據(jù)及相關(guān)計(jì)算公式、管控規(guī)則,可以確認(rèn)數(shù)據(jù)邏輯。

按照這樣的方法推演下來(lái),基本上就可以確認(rèn)業(yè)務(wù)設(shè)計(jì)的結(jié)果是否正確了。

 

本文由 @李鴻君 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自?Unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!