官术网_书友最值得收藏!

3.4 系統的結構化描述技術

在數據流程圖中,每個處理框只是簡單地標上了處理的名字,不能表達處理邏輯的全部內容。在數據字典里,包括了對各個處理功能的一般描述,但這種描述是高度概括的,也不可能描述各個處理邏輯的全部細節。因此需要其他工具來詳細描述處理邏輯。

數據流程圖是分層的。將一個大型復雜的系統逐層分解成許多個足夠簡單的基本加工,頂層的數據流程圖表達系統的主要邏輯功能,隨著自頂而下、逐層細化的過程,表達的功能也越來越具體,處理邏輯也越來越精細,直到底層的數據流程圖、系統的全部處理邏輯被詳細地表達出來。系統底層的處理邏輯詳細到了可以實現的程度,是系統的最小功能單元,因此被稱為“基本處理”。如果對所有基本處理的邏輯功能都描述清楚了,再自底而上進行綜合,整個系統的所有邏輯功能也就清楚了。

加工處理邏輯指的是業務人員處理業務的算法和邏輯關系,即用戶要求這個加工“做什么”。加工處理邏輯的分析就是對業務流程分析和數據流程分析的補充,也是系統處理模塊的設計依據。每個加工處理必然有處理的原始數據和輸出設計,以及處理的邏輯關系和算法。例如,用文字表達這種多元的邏輯關系,不僅十分煩瑣,而且難以看清,采用了結構化描述技術可以清晰地表達條件、決策規則和應采用行動之間的邏輯關系,容易為管理人員和系統分析人員所接受。結構化描述技術主要有結構化英語、決策樹和決策表等。

3.4.1 結構化英語

結構化英語又稱為程序設計語言(PDL,Program Design Language),是一種模仿計算機語言的處理邏輯描述方法,介于自然語言和形式化語言之間的半形式化語言。它是在自然語言的基礎上增加了一些限制而得到的語言,使用有限的詞匯和有限的語句來描述處理邏輯。

結構化英語的詞匯包括英語命令動詞、數據字典中定義的名字、有限的自定義詞和邏輯關系詞如IF THEN ELSE、WHILE DO、REPEAT UNTIL和CASE OF等。其動詞的含義要具體,不使用抽象的動詞,盡可能少用或者根本不用形容詞或副詞。

結構化英語只允許使用3種基本結構控制,處理邏輯的操作使用自然語言短語來表示。這3種基本控制結構如下。

1)簡單陳述句

力求精練,不應太長,避免使用復合語句。

2)判定結構

IF THEN ELSE或CASE OF結構。

3)循環結構

WHILE DO或REPEAT UNTIL結構。

結構化英語的處理原則如下。

(1)盡可能精確,避免二義性。

(2)盡可能簡單,使用戶易于理解。

(3)也可用帶有一定結構的漢語來描寫加工邏輯。

1.主要結構

結構化英語通常分為外層和最內層兩大層,其中外層可以有多層,相互嵌套。外層語法比較具體,最內層語法則比較靈活。外層語法用來描述控制結構,通常采用人們已熟知的幾種標準結構,如順序、選擇和循環,這些控制結構將加工中的各個操作連接起來,使用了由IF、THEN、ELSE等詞組成的規范化語言。

內部語法具有以下特點。

(1)只有簡單陳述句一種,它能明確地表達“做什么”。

(2)名詞都是字典中定義過的詞或自定義的詞。

(3)動詞避免用空洞的詞。

(4)沒有形容詞和副詞等修飾語。

(5)可以用一些常用的運算法和關系符等。

總體來說,結構化英語只允許使用3種基本結構控制,處理邏輯的操作使用自然語言短語來表示。這3種基本控制結構如下。

1)簡單陳述句

力求精練,不應太長,避免使用復合語句。在描述處理中決策方案的部分通常用簡單陳述句,例如“先付款再發貨”、“先按庫存發貨”或“不發貨”等。

2)判定結構

采用的是計算機語言的類似結構:

            IF<條件>
            THEN決策1
            ELSE<非條件>/OTHERWISE<非條件>
            SO決策2

IF與ELSE對應的是同一條件的是與非,因此一個結構只能對一種條件進行判斷。當要描述多個條件的處理邏輯時,就要通過嵌套結構實現,而且要求各個結構的引導詞要配對出現。

3)循環結構

也采用了計算機語言的類似結構,并有兩種描述方式:

            WHILE<條件>
            DO決策

            REPEATE決策
            UNTIL<條件>

其中,WHILE-DO型結構,滿足條件才進入循環,執行決策動作這一“循環體”;而REPEATE-UNTIL型是先進入循環,執行一次后再判斷條件是否滿足,若滿足條件,則退出循環。

2.應用舉例

假設某商店業務“檢查發貨單”有這樣的處理:對于超過10000元以上的大額發貨單,若客戶信譽良好,欠款不超過3個月,則發批準書或發貨單;否則,在欠款未還清之前不予批準。對于10000元以下的小額發貨單,如果客戶信譽良好,欠款不超過3個月,直接發批準書及發貨單;否則,則向客戶發出賒欠報告,并發批準書及發貨單。該處理邏輯用結構化英語描述如下:

            IF發貨單筆金額超過10000元  THEN
              IF欠款超過3個月THEN
                  在欠款未還清之前不發批準書
              ELSE
                  發批準書、發貨單
              ENDIF
            ELSE
            IF欠款超過3個月THEN
              發批準書、發貨單、賒欠報告
            ELSE
              發批準書、發貨單
            ENDIF
            ENDIF

3.4.2 決策樹

在某些處理邏輯中,處理動作需要依賴于多個邏輯條件的取值,這時,處理邏輯的描述就比較復雜。如果用結構化英語來表達,就需要多重嵌套,可讀性下降。為了簡潔地表達數據流程圖中處理邏輯的邏輯判斷功能,用樹形結構圖來描述對各種情況的處理,這即為決策樹。

1.決策樹概述

決策樹一般是自上而下生成的,每個決策或事件都可能引起兩個或多個事件,導致不同的結果。選擇分割的方法有好幾種,但是目的都是一致的,即對目標類嘗試進行最佳的分割。從根到葉子節點都有一條路徑,這條路徑就是一條“規則”。決策樹可以是二叉樹,也可以是多叉樹。

決策樹主要由3個部分組成。定義要決策的問題,就是決策節點;以條件為例,從決策節點連接形成的分支結構就是方案分支,它往往是根據條件值的多少來決定分支的數量的;在最后一個條件列后加入的就是決策結果,不同方案分支通過不同的路徑得出決策結果,從而形成樹形分叉圖。

用決策樹描述處理邏輯的優點如下。

(1)可以生成容易理解的規則。

(2)計算量相對來說不是很大。

(3)可以處理連續和分類條件。

(4)決策樹可以清晰地顯示哪些條件比較重要。

用決策樹描述處理邏輯的缺點如下。

(1)對連續值的條件比較難預測。

(2)對有時間順序的條件,需要很多預處理的工作。

(3)當類別太多時,錯誤可能就會增加得比較快。

(4)一般的算法分類時,只是根據一個條件來分類。

2.應用舉例

“檢查發貨單”的例子用決策樹來表述,如圖3.17所示。

圖3.17 “檢查發貨單”的決策樹

3.4.3 決策表

對一些條件較多、在每種條件下取值也比較多的情況,可采用決策表的形式。這時,需要描述的處理是由一組動作組成的,而這些動作是否執行又取決于一組條件的取值,這時用決策表寫加工邏輯比較合適。

1.決策表概述

決策表是一種表格狀的決策分析工具,它可以在條件復雜的情況下,很直觀地表達出具體條件、決策規則和應該采取的行動之間的邏輯關系。決策表的優點在于清晰易懂,但是只適合描述條件,描述循環比較困難。

決策表由4 個部分組成,左上方是條件說明,列出了所有可能的條件;左下方是動作說明,列出了所有可能采取的動作;右上方是條件組合,是針對各種條件給出的多種條件取值的組合;右下方是動作組合,指出了在某種條件取值的組合情況下所采取的動作。

決策表的劃分如圖3.18所示。

圖3.18 決策表的劃分

決策表的繪制較為復雜,原因在于條件值的組合狀態較多,要考慮周全。要獲得最終的決策表,通常需要繪制3表。首先要定義條件的取值及含義,然后按照所有組合狀態繪制出初始決策表,最后將相關列合并成為最終的決策表。在合并時,按照操作中選擇用一決策方案的不同條件進行判斷,首先要找到條件條目的共同點,再分析其不同條件值的組合是否被相關列遍歷了,如果已經遍歷,則相關列合并,否則不合并。

由此,可以歸納出合并的原則:對于采取相同動作的N條規則,如果有某個條件在第N列中的取值正好是該條件取值的全部情況,而其他條件的取值都相同,那么這N條規則可以合并,說明該條件的取值與所采取的動作無關。

運用決策表來描述決策邏輯,通常包括以下6個步驟。

(1)首先分析、確定決策邏輯涉及的條件,列在決策表的左上方。

(2)分析、確定每個條件的取值情況。

(3)列出條件的所有組合情況,標在決策表的右上方。

(4)分析、確定決策邏輯涉及的動作,列在決策表的左下方。

(5)決定各種條件組合下所采取的行動,畫在決策表的右下方。

(6)應用合并規則,化簡決策表。

用決策表來表達一個復雜的問題,其優越之處在于不會遺漏某種可能的情況。決策表能夠把在什么條件下、系統應該采取什么動作,表達得十分清楚、準確和一目了然。這是用語言難以準確、清楚地表達的。決策表的另一個優越之處在于這些條件的地位是平等的,不用考慮條件的先后順序。但是,用決策表描述循環情況就比較困難。

2.應用舉例

“檢查發貨單”用決策表(見表3-1)來表示,繪制如下。

表3-1 “檢查發貨單”決策表

“檢查發貨單”決策表中列名為2的列表示在發貨單金額大于10000元、欠款未超期的條件組合下所采取的動作即發出批準書、發出發貨單。

“檢查發貨單”決策表列出了兩個條件所有可能的4種組合,就是一張完整的決策表,不會有遺漏,但是這張表可以化簡。表中列名為2和4的列,所采取的動作是一樣的,再查看條件取值組合情況,通過分析,可以看到,無論是大額發貨單還是小額發貨單,只要客戶信譽良好,欠款不超期,都可以采取相同的操作,即發出批準書和發貨單。這兩條規則就可以合并。化簡以后的決策表如表3-2所示。

表3-2 簡化后的“檢查發貨單”決策表

3.4.4 結構化描述技術的選擇

在描述一個基本加工的處理邏輯時,結構化英語、決策樹和決策表通常被交叉使用,互相補充。這3種描述方式各有優缺點。對于不太復雜的判定情況,或者是使用決策表有困難時,可以使用決策樹。而如果在一個處理邏輯中,同時存在順序、判斷和循環時,比較適用于結構化英語。對于組合條件較多的、復雜的判斷,使用決策表比較好。

哪一種方法是最好的方法,這取決于一系列的因素:問題的特性和復雜程度、由決策導出的行動個數,以及使用的難易。從評價各個方法的優點和局限性來說,可以給出下列結論。

(1)數據流程圖的基本作用是描述數據流程,它可以用于高低各種層次的系統分析,并且有利于提供高質量的系統文檔。然而這種方法對于輸出/輸入的細節描述較差,用戶經常在初期發現它非常容易混淆。

(2)數據字典是能夠在滿足系統的數據需求基礎上簡化結構,它也可以用于高低各種層次的系統分析,但是它不能提供有關功能方面的細節,并且一些不懂技術的用戶常常不愿意接受這種方法。

(3)當問題要求給出行動順序和具體決策時最好使用結構化英語。

(4)決策樹常用于驗證邏輯關系和在只涉及少量行動方案的決策問題中。

(5)決策樹和決策表最適用于處理那些具有復雜分支路線的決策,例如,計算優惠價或者銷售回扣及庫存控制過程等。

主站蜘蛛池模板: 铜陵市| 定边县| 肥西县| 措勤县| 大新县| 平顶山市| 福鼎市| 周宁县| 米泉市| 凤凰县| 松原市| 九龙城区| 舞钢市| 盐城市| 留坝县| 庐江县| 阿鲁科尔沁旗| 绥棱县| 梓潼县| 林州市| 香格里拉县| 湘潭市| 米林县| 晋宁县| 密山市| 林芝县| 司法| 乐平市| 兴山县| 陕西省| 新建县| 原阳县| 鄂州市| 沂源县| 潜江市| 溧阳市| 牙克石市| 新民市| 平乐县| 怀宁县| 博乐市|