第06章 詳細(xì)設(shè)計(jì)_第1頁
第06章 詳細(xì)設(shè)計(jì)_第2頁
第06章 詳細(xì)設(shè)計(jì)_第3頁
第06章 詳細(xì)設(shè)計(jì)_第4頁
第06章 詳細(xì)設(shè)計(jì)_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第6 6章章 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) 根本目標(biāo):確定怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng)。 任務(wù):設(shè)計(jì)出程序的“藍(lán)圖”。 回答的問題:“具體的說,系統(tǒng)應(yīng)該怎樣做?” 詳細(xì)設(shè)計(jì)的結(jié)果基本上決定了最終的程序代詳細(xì)設(shè)計(jì)的結(jié)果基本上決定了最終的程序代碼的質(zhì)量碼的質(zhì)量 6.1 結(jié)構(gòu)程序設(shè)計(jì) 6.2 人機(jī)界面設(shè)計(jì) 6.3 過程設(shè)計(jì)的工具 6.4 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法 6.5 程序復(fù)雜程度的定量度量第第6章章 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)-程序的質(zhì)量與程序中所包含的GO TO 語句的數(shù)量成反比-Bohm和Jacopini證明了:3種基本的控制結(jié)構(gòu)(順序,選擇,循環(huán))就能實(shí)現(xiàn)任何單入口單出口的程序-“結(jié)構(gòu)程序設(shè)計(jì)是盡可能少用GO T

2、O語句的程序設(shè)計(jì)方法。最好僅在檢測出錯誤時才使用GO TO語句,而且應(yīng)該總是使用前向GO TO語句?!?衡量程序的質(zhì)量不僅要看它的運(yùn)行情況,更主要衡量程序的質(zhì)量不僅要看它的運(yùn)行情況,更主要的是要看它的可讀性!的是要看它的可讀性!6.1 結(jié)構(gòu)程序設(shè)計(jì): 易讀性6.26.2人機(jī)界面設(shè)計(jì)人機(jī)界面設(shè)計(jì)6.2.16.2.1設(shè)計(jì)問題設(shè)計(jì)問題1. 響應(yīng)時間: 長度和易變性2. 用戶幫助: 集成和附加, 上下文3. 出錯信息: 如何辦, 多媒體(圖,文,聲,光), 用戶心理4. 命令交互:快捷操作,自定義宏指令, 一致性6.2.2設(shè)計(jì)過程設(shè)計(jì)過程: 原型,迭代,精化6.2.3人機(jī)界面設(shè)計(jì)指南人機(jī)界面設(shè)計(jì)指南總

3、原則:用戶的屏幕總原則:用戶的屏幕一般交互指南(一致,確認(rèn),減少記憶,UNDO,易記,層次,多媒體)信息顯示指南(一致,少用縮寫,色彩,窗口布局)1.數(shù)據(jù)輸入指南(盡量少,格式) 1 1、可使用性、可使用性 使用簡單使用簡單 用戶界面中所用術(shù)語的標(biāo)準(zhǔn)化和一致性用戶界面中所用術(shù)語的標(biāo)準(zhǔn)化和一致性 具有具有HELP功能功能 快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本 具有容錯能力具有容錯能力 2 2、靈活性、靈活性 考慮用戶的特點(diǎn)、能力、知識水平??紤]用戶的特點(diǎn)、能力、知識水平。 提供不同的系統(tǒng)響應(yīng)信息。提供不同的系統(tǒng)響應(yīng)信息。 提供根據(jù)用戶需求制定和修改提供根據(jù)用戶需求制定和修改界

4、面。界面。 3 3、界面的復(fù)雜性與可靠性、界面的復(fù)雜性與可靠性 復(fù)雜性復(fù)雜性界面規(guī)模及組織的復(fù)雜程度。應(yīng)該愈簡單愈好。界面規(guī)模及組織的復(fù)雜程度。應(yīng)該愈簡單愈好。 可靠性可靠性指無故障使用的時間間隔。用戶界面應(yīng)該能夠保指無故障使用的時間間隔。用戶界面應(yīng)該能夠保 證用戶正確、可靠地使用系統(tǒng),及程序、數(shù)據(jù)的安全。證用戶正確、可靠地使用系統(tǒng),及程序、數(shù)據(jù)的安全。 1 1、用戶特性分析、用戶特性分析 用戶模型用戶模型 了解所有用戶的技能和經(jīng)驗(yàn),針對用戶能力設(shè)計(jì)或更改界面。了解所有用戶的技能和經(jīng)驗(yàn),針對用戶能力設(shè)計(jì)或更改界面。從以下方面分析:從以下方面分析: 用戶類型用戶類型通常分為:外行型、初學(xué)型、熟練

5、型、專家型。通常分為:外行型、初學(xué)型、熟練型、專家型。 用戶特性度量用戶特性度量與用戶使用模式和用戶群體能力有關(guān)。與用戶使用模式和用戶群體能力有關(guān)。 包括:用戶使用頻度、用戶用機(jī)能力、用戶的知識、思維能力等。包括:用戶使用頻度、用戶用機(jī)能力、用戶的知識、思維能力等。2 2、用戶界面的任務(wù)分析、用戶界面的任務(wù)分析 任務(wù)模型(任務(wù)模型(DFDDFD圖)圖) 是對系統(tǒng)內(nèi)部活動的分解,不僅要進(jìn)行功能分解(用是對系統(tǒng)內(nèi)部活動的分解,不僅要進(jìn)行功能分解(用DFDDFD圖描圖描述),還要包括與人相關(guān)的活動。每個加工即一個功能或任務(wù)。述),還要包括與人相關(guān)的活動。每個加工即一個功能或任務(wù)。3 3、確定用戶界面

6、類型、確定用戶界面類型 正文菜單、圖標(biāo)菜單、正文和圖標(biāo)混合菜單,如:開始正文菜單、圖標(biāo)菜單、正文和圖標(biāo)混合菜單,如:開始菜單。菜單。 從用戶角度出發(fā),用戶界面設(shè)計(jì)的類型主要有問題描述語言,數(shù)據(jù)表格、從用戶角度出發(fā),用戶界面設(shè)計(jì)的類型主要有問題描述語言,數(shù)據(jù)表格、圖形與圖標(biāo)、菜單、對話框及窗口等。每一種類型都有不同的特點(diǎn)和性能。討圖形與圖標(biāo)、菜單、對話框及窗口等。每一種類型都有不同的特點(diǎn)和性能。討論以下類型:論以下類型: 固定位置、固定位置、下拉式、下拉式、浮動位置(彈出)浮動位置(彈出)圖3.54 混合菜單圖3.55 固定及下拉菜單固定菜單固定菜單下拉菜單下拉菜單 在用戶界面中,加入豐富多彩的

7、畫面,將能夠更加行象地為用戶提供有用的信在用戶界面中,加入豐富多彩的畫面,將能夠更加行象地為用戶提供有用的信息,以達(dá)到可視化的目的。主要的處理操作有:圖象的隱蔽和再現(xiàn)、屏幕滾動和息,以達(dá)到可視化的目的。主要的處理操作有:圖象的隱蔽和再現(xiàn)、屏幕滾動和圖案顯示、動畫等。圖案顯示、動畫等。 對話框是在需要時,顯示在屏幕上一個矩形區(qū)域內(nèi)的圖形和正文信息。通過對話框是在需要時,顯示在屏幕上一個矩形區(qū)域內(nèi)的圖形和正文信息。通過對話框,實(shí)現(xiàn)系統(tǒng)和用戶之間的通信。對話框,實(shí)現(xiàn)系統(tǒng)和用戶之間的通信。對話框顯示的方式與彈出式菜單類似,即瞬時彈出。同時,系統(tǒng)還應(yīng)將對話對話框顯示的方式與彈出式菜單類似,即瞬時彈出。同

8、時,系統(tǒng)還應(yīng)將對話框所覆蓋的原圖象進(jìn)行保存,以便在對話結(jié)束后能立即恢復(fù)??蛩采w的原圖象進(jìn)行保存,以便在對話結(jié)束后能立即恢復(fù)。有三種對話形式:有三種對話形式:必須回答式如圖必須回答式如圖3.58所示所示無需回答式無需回答式 如圖如圖3.59所示所示警告式警告式 如圖如圖4.58所示所示圖3.58 必須回答式對話框圖3.59 無需回答式對話框圖3.60 警告式對話框4 4、窗口(、窗口(windowwindow) 圖形學(xué)中稱為視圖區(qū)(圖形學(xué)中稱為視圖區(qū)(ViewportViewport),視為虛擬屏幕。一個實(shí)用窗口,可包),視為虛擬屏幕。一個實(shí)用窗口,可包含部件:含部件: 菜單區(qū)(菜單區(qū)(men

9、u barmenu bar) 圖標(biāo)區(qū)(圖標(biāo)區(qū)(icon baricon bar) 標(biāo)題區(qū)(標(biāo)題區(qū)(title bartitle bar) 移動區(qū)(移動區(qū)(move barmove bar) 大小區(qū)(大小區(qū)(size barsize bar) 退出區(qū)(退出區(qū)(quit barquit bar) 用戶工作區(qū)(用戶工作區(qū)(users work barusers work bar) 橫向滾動區(qū)(橫向滾動區(qū)(horizontal scroll barhorizontal scroll bar) 縱向滾動區(qū)(縱向滾動區(qū)(vertical scroll barvertical scroll bar)圖3.6

10、1 窗口數(shù)據(jù)輸入界面,是系統(tǒng)的重要組成部分。主要從數(shù)據(jù)輸入界面,是系統(tǒng)的重要組成部分。主要從輸入速度輸入速度和和減減少出錯率少出錯率考慮??紤]。1、盡量減少輸入工作量、盡量減少輸入工作量 對相同內(nèi)容輸入設(shè)置默認(rèn)值對相同內(nèi)容輸入設(shè)置默認(rèn)值 自動填入自動填入 列表選擇或點(diǎn)擊選擇列表選擇或點(diǎn)擊選擇2、輸入屏幕與輸入格式匹配、輸入屏幕與輸入格式匹配 即屏幕顯示按照數(shù)據(jù)使用頻率、重要性、次序等組織。即屏幕顯示按照數(shù)據(jù)使用頻率、重要性、次序等組織。3、數(shù)據(jù)輸入的一般規(guī)則、數(shù)據(jù)輸入的一般規(guī)則確定輸入確定輸入交互動作交互動作確定刪除確定刪除提供反饋提供反饋推薦一本推薦一本GUIGUI設(shè)計(jì)的好書設(shè)計(jì)的好書GUI

11、GUI設(shè)計(jì)禁忌設(shè)計(jì)禁忌2.02.0 (GUI Bloopers 2.0 Common User Interface Design Donts and Dos) (美 Jeff Johnson 著 盛海艷 等譯) 機(jī)械工業(yè)出版社 2009年1月第1版第1次印刷 ISBN: 978-7-111-24229-16.3 過程設(shè)計(jì)的工具1 1、流程圖、流程圖2 2、結(jié)構(gòu)化流程圖(、結(jié)構(gòu)化流程圖(N-S圖)圖)3 3、PAD圖圖問題分析圖問題分析圖4、 PDL5、 判定表判定表/ /判定樹 程序流程圖又稱為程序框圖,它是歷史上程序流程圖又稱為程序框圖,它是歷史上最悠久使用最廣泛的描述過程設(shè)計(jì)的方法,然最悠

12、久使用最廣泛的描述過程設(shè)計(jì)的方法,然而也是用得最混亂得方法。而也是用得最混亂得方法。1. 程序流程圖程序流程圖優(yōu)點(diǎn):對控制流程的描繪很直觀,優(yōu)點(diǎn):對控制流程的描繪很直觀, 便于初學(xué)者掌握。便于初學(xué)者掌握。缺點(diǎn)缺點(diǎn):(1)不是逐步求精的好工具;)不是逐步求精的好工具;(2)箭頭不受約束;)箭頭不受約束;(3)不易表示數(shù)據(jù)結(jié)構(gòu)。)不易表示數(shù)據(jù)結(jié)構(gòu)。( (p) p) 控制流控制流(a) 選擇選擇(分支分支);(b) 注釋;注釋; (c) 預(yù)先定義的處理;預(yù)先定義的處理;(d) 多分支;多分支;(e) 開始或停止;開始或停止;(f) 準(zhǔn)備;準(zhǔn)備;(g)循環(huán)上界限;循環(huán)上界限;(h) 循環(huán)下界限;循環(huán)下

13、界限;(i) 虛線;虛線;(j) 省略符;省略符;(k) 并行方式;并行方式;(l) 處理;處理;(m) 輸入輸入/輸出;輸出;(n) 連接;連接;(o) 換頁連接;換頁連接;程序流程圖常用符號程序流程圖常用符號abX1X2X7X6X4X3X5higfedcjFTFFFTTT多分支選多分支選擇結(jié)構(gòu)擇結(jié)構(gòu)先判定型循先判定型循環(huán)結(jié)構(gòu)環(huán)結(jié)構(gòu)選擇結(jié)構(gòu)選擇結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)圖3.4 流程圖N-SN-S圖由而且僅由順序、選擇、循環(huán)三種基本結(jié)構(gòu)組成。圖由而且僅由順序、選擇、循環(huán)三種基本結(jié)構(gòu)組成?;緢D例如下:基本圖例如下:順序結(jié)構(gòu)順序結(jié)構(gòu)塊塊1塊塊2塊塊3塊塊4條件條件T F塊塊1塊塊2選

14、擇結(jié)構(gòu)選擇結(jié)構(gòu)Case I=1,2,3T塊塊1塊塊2多分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)F塊塊3塊塊當(dāng)條件成立時當(dāng)條件成立時當(dāng)型循環(huán)當(dāng)型循環(huán)塊塊直到條件成立時直到條件成立時直到型循環(huán)直到型循環(huán)2、 NS圖圖盒圖的特點(diǎn)盒圖的特點(diǎn) 功能域明確,可以從盒圖上一眼就看出來。功能域明確,可以從盒圖上一眼就看出來。 不可能任意轉(zhuǎn)移控制不可能任意轉(zhuǎn)移控制 很容易確定局部和全程數(shù)據(jù)的作用域很容易確定局部和全程數(shù)據(jù)的作用域 很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。次結(jié)構(gòu)。ab條條 件件 1TF Case Xi, i=2,3,4X2X3X4當(dāng)條件當(dāng)條件3成立成立條條 件件 2直

15、到條件直到條件4成立成立直直 到到 條條 件件 成立成立cdefghij順序結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)FTTFN-SN-S圖舉例圖舉例NS圖舉例3 3、PADPAD圖圖問題分析圖問題分析圖(problem Analysis Diagramproblem Analysis Diagram) 其基本控制結(jié)構(gòu)如下:其基本控制結(jié)構(gòu)如下:PAD圖基本結(jié)構(gòu) PAD圖是一種由左往右展開的二維樹由左往右展開的二維樹型結(jié)構(gòu)。 PAD圖的控制流程為自上而下、從左到右自上而下、從左到右地執(zhí)行。PAD圖的優(yōu)點(diǎn)如下: (1)清

16、晰地反映了程序的層次結(jié)構(gòu)。圖中的豎線為程序的層次線,最左邊豎線是程序的主線, 其后一層一層展開,層次關(guān)系一目了然。 (2)支持逐步求精的設(shè)計(jì)方法, 左邊層次中的內(nèi)容可以抽象, 然后由左到右逐步細(xì)化。 (3)易讀易寫, 使用方便。 (4)支持結(jié)構(gòu)化的程序設(shè)計(jì)原理。 (5)可自動生成程序。 (6)既可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu)。PADPAD圖應(yīng)用舉例圖應(yīng)用舉例ji1maxA(i)開始輸入A(1)到A(10)的值置初值:n10sort輸入A(1)到A(10)的值結(jié)束sortdefi1WHILE in1WHILE jnA(i)maxii1jj1maxA(j)BmaxmaxA(j)A(j)B

17、 4. 過程設(shè)計(jì)語言過程設(shè)計(jì)語言 過程設(shè)計(jì)語言過程設(shè)計(jì)語言(Process Design Language, 簡稱簡稱PDL)是在偽碼的是在偽碼的基礎(chǔ)上,擴(kuò)充了模塊的定義與調(diào)用、數(shù)據(jù)定義和輸入輸出而形成的?;A(chǔ)上,擴(kuò)充了模塊的定義與調(diào)用、數(shù)據(jù)定義和輸入輸出而形成的。它的控制結(jié)構(gòu)與偽碼相同。它的控制結(jié)構(gòu)與偽碼相同。PDL是一種用于描述模塊算法設(shè)計(jì)和處是一種用于描述模塊算法設(shè)計(jì)和處理細(xì)節(jié)的語言。理細(xì)節(jié)的語言。 PDL一般分為一般分為內(nèi)外兩層語法內(nèi)外兩層語法,外層語法應(yīng)符合一般,外層語法應(yīng)符合一般程序設(shè)計(jì)語言常用的語法規(guī)則,而內(nèi)層語法則用一些簡單的句子、程序設(shè)計(jì)語言常用的語法規(guī)則,而內(nèi)層語法則用一些

18、簡單的句子、短語和通用的數(shù)學(xué)符號,來描述程序應(yīng)執(zhí)行的功能。短語和通用的數(shù)學(xué)符號,來描述程序應(yīng)執(zhí)行的功能。 PDL具有嚴(yán)格具有嚴(yán)格的關(guān)鍵字外層語法,用于定義控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和模塊接口,而的關(guān)鍵字外層語法,用于定義控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和模塊接口,而它表示實(shí)際操作和條件的內(nèi)層語法又是靈活自由的,使用自然語言它表示實(shí)際操作和條件的內(nèi)層語法又是靈活自由的,使用自然語言的詞匯。的詞匯。 PDL與結(jié)構(gòu)化分析中描述加工邏輯的與結(jié)構(gòu)化分析中描述加工邏輯的“結(jié)構(gòu)化語言結(jié)構(gòu)化語言”有什么不同有什么不同呢呢? 所不同的僅是它們的作用不同,故抽象層次不同,所不同的僅是它們的作用不同,故抽象層次不同, 模糊程度不同。模糊

19、程度不同。 “結(jié)構(gòu)化語言結(jié)構(gòu)化語言”是描述加工是描述加工“做什么做什么”的,并且使開發(fā)人員和用的,并且使開發(fā)人員和用戶都能看懂,因此戶都能看懂,因此無嚴(yán)格的外語法無嚴(yán)格的外語法,內(nèi)層自然語言描述較抽象、較概,內(nèi)層自然語言描述較抽象、較概括。而括。而PDL是描述處理過程是描述處理過程“怎么做怎么做”的細(xì)節(jié)。的細(xì)節(jié)。 開發(fā)人員將按其處開發(fā)人員將按其處理細(xì)節(jié)編程序,理細(xì)節(jié)編程序,故外層語法更嚴(yán)格一些,故外層語法更嚴(yán)格一些, 更趨于形式化更趨于形式化,內(nèi)層自然,內(nèi)層自然語言描述實(shí)際操作更具體更詳細(xì)一些。語言描述實(shí)際操作更具體更詳細(xì)一些。 1). PDL特點(diǎn)特點(diǎn) PDL的特點(diǎn)如下:的特點(diǎn)如下: (1)

20、所有關(guān)鍵字都有固定語法,所有關(guān)鍵字都有固定語法, 以便提供結(jié)構(gòu)化控制結(jié)構(gòu)、以便提供結(jié)構(gòu)化控制結(jié)構(gòu)、 數(shù)數(shù)據(jù)說明和模塊的特征。據(jù)說明和模塊的特征。 (2) 描述處理過程的說明性語言沒有嚴(yán)格的語法。描述處理過程的說明性語言沒有嚴(yán)格的語法。 (3) 具有數(shù)據(jù)說明機(jī)制,包括簡單的與復(fù)雜的數(shù)據(jù)說明。具有數(shù)據(jù)說明機(jī)制,包括簡單的與復(fù)雜的數(shù)據(jù)說明。 (4) 具有模塊定義和調(diào)用機(jī)制,開發(fā)人員應(yīng)根據(jù)系統(tǒng)編程所用的具有模塊定義和調(diào)用機(jī)制,開發(fā)人員應(yīng)根據(jù)系統(tǒng)編程所用的語種,說明語種,說明PDL表示有關(guān)程序結(jié)構(gòu)。表示有關(guān)程序結(jié)構(gòu)。 2). 程序結(jié)構(gòu)程序結(jié)構(gòu) 用用PDL表示的程序結(jié)構(gòu)一般有下列幾種結(jié)構(gòu)。表示的程序結(jié)構(gòu)一

21、般有下列幾種結(jié)構(gòu)。1) 順序結(jié)構(gòu)順序結(jié)構(gòu)采用自然語言描述順序結(jié)構(gòu):采用自然語言描述順序結(jié)構(gòu): 處理處理S1 處理處理S2 處理處理Sn2) 選擇結(jié)構(gòu)選擇結(jié)構(gòu)(1) IF-結(jié)構(gòu):結(jié)構(gòu): IF 條件條件 IF 條件條件 處理處理S1 或或 處理處理S ELSE ENDIF 處理處理S2 ENDIF(2) IF-ORIF-ELSE結(jié)構(gòu):結(jié)構(gòu): IF 條件條件1 處理處理S1 ORIF 條件條件2 ELSE 處理處理Sn ENDIF(3) CASE結(jié)構(gòu):結(jié)構(gòu): CASE OF CASE(1) 處理處理S1 CASE(2) 處理處理S2 ELSE 處理處理Sn ENDCASE 3) 重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu) (

22、1) FOR 結(jié)構(gòu):結(jié)構(gòu): FOR i=1 TO n 循環(huán)體循環(huán)體 END FOR (2) WHILE 結(jié)構(gòu):結(jié)構(gòu): WHILE 條件條件 循環(huán)體循環(huán)體 ENDWHILE(3) UNTIL 結(jié)構(gòu):結(jié)構(gòu): REPEAT 循環(huán)體循環(huán)體 UNTIL 條件條件4) 出口結(jié)構(gòu)出口結(jié)構(gòu)(1) ESCAPE 結(jié)構(gòu)結(jié)構(gòu)(退出本層結(jié)構(gòu)退出本層結(jié)構(gòu)): WHILE 條件條件 處理處理S1 ESCAPE L IF 條件條件 處理處理S2 ENDWHILE L: (2) CYCLE結(jié)構(gòu)結(jié)構(gòu)(循環(huán)內(nèi)部進(jìn)入循環(huán)的下一次循環(huán)內(nèi)部進(jìn)入循環(huán)的下一次): L: WHILE 條件條件 處理處理S1 CYCLE L IF 條件條件

23、處理處理S2 ENDWHILE 5) 擴(kuò)充結(jié)構(gòu)擴(kuò)充結(jié)構(gòu) (1) 模塊定義:模塊定義: PROCEDURE 模塊名模塊名(參數(shù)參數(shù)) RETURN END (2) 模塊調(diào)用:模塊調(diào)用: CALL 模塊名模塊名(參數(shù)參數(shù)) (3) 數(shù)據(jù)定義:數(shù)據(jù)定義: DECLARE 屬性屬性 變量名,變量名, 屬性有:屬性有: 字符、字符、 整型、整型、 實(shí)型、實(shí)型、 雙精度、雙精度、 指針、指針、 數(shù)組及結(jié)構(gòu)數(shù)組及結(jié)構(gòu)等類型。等類型。 (4) 輸入輸入/輸出:輸出: GET(輸入變量表輸入變量表) PUT(輸出變量表輸出變量表) 3). PDL應(yīng)用示例應(yīng)用示例 現(xiàn)以現(xiàn)以系統(tǒng)主控模塊詳細(xì)設(shè)計(jì)為例,系統(tǒng)主控模塊詳

24、細(xì)設(shè)計(jì)為例, 說明如何用說明如何用PDL來描述。來描述。 PROCEDURE模塊名模塊名( ) 清屏;清屏; 顯示顯示系統(tǒng)用戶界面;系統(tǒng)用戶界面; PUT(“請輸入用戶口令:請輸入用戶口令:”); GET(password); IF password系統(tǒng)口令系統(tǒng)口令 提示警告信息;提示警告信息; 退出運(yùn)行退出運(yùn)行 ENDIF 顯示本系統(tǒng)主菜單;顯示本系統(tǒng)主菜單; WHILE(true) 接收用戶選擇接收用戶選擇ABC; IF ABC=“退出退出” Break; ENDIF 調(diào)用相應(yīng)下層模塊完成用戶選擇功能;調(diào)用相應(yīng)下層模塊完成用戶選擇功能; ENDWHILE; 清屏;清屏; RETURNEND

25、 PDL的總體結(jié)構(gòu)與一般程序完全相同。的總體結(jié)構(gòu)與一般程序完全相同。 外語法同相應(yīng)程序語言外語法同相應(yīng)程序語言一致,內(nèi)語法使用自然語言,易編寫,一致,內(nèi)語法使用自然語言,易編寫, 易理解,也很容易轉(zhuǎn)換成源程易理解,也很容易轉(zhuǎn)換成源程序。除此以外,還有以下優(yōu)點(diǎn):序。除此以外,還有以下優(yōu)點(diǎn): (1) 提供的機(jī)制較圖形全面,提供的機(jī)制較圖形全面, 為保證詳細(xì)設(shè)計(jì)與編碼的質(zhì)量創(chuàng)造了有為保證詳細(xì)設(shè)計(jì)與編碼的質(zhì)量創(chuàng)造了有利條件。利條件。 (2) 可作為注釋嵌入在源程序中一起作為程序的文檔,并可同高級程可作為注釋嵌入在源程序中一起作為程序的文檔,并可同高級程序設(shè)計(jì)語言一樣進(jìn)行編輯、修改,有利于軟件的維護(hù)。序

26、設(shè)計(jì)語言一樣進(jìn)行編輯、修改,有利于軟件的維護(hù)。 (3) 可自動生成程序代碼,提高軟件生產(chǎn)率。目前已有可自動生成程序代碼,提高軟件生產(chǎn)率。目前已有PDL多種版本多種版本(如如PDL/pascal, PDL/C, PDL/Ada等等),為自動生成相應(yīng)代碼提供了便,為自動生成相應(yīng)代碼提供了便利條件。利條件。 當(dāng)算法中包含多重嵌套的條件選擇時,用程序當(dāng)算法中包含多重嵌套的條件選擇時,用程序流程圖、盒圖、流程圖、盒圖、PADPAD圖或過程設(shè)計(jì)語言圖或過程設(shè)計(jì)語言( (PDL)PDL)都不易清都不易清楚地描述。然而判定表卻能夠清晰地表示復(fù)雜的條件楚地描述。然而判定表卻能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動

27、作之間的對應(yīng)關(guān)系。組合與應(yīng)做的動作之間的對應(yīng)關(guān)系。 一張判定表由四部分組成,左上部列出所有條一張判定表由四部分組成,左上部列出所有條件,左下部是所有可能做的動作,右上部是表示各種件,左下部是所有可能做的動作,右上部是表示各種條件組合的一個矩陣,右下部是和每種條件組合相對條件組合的一個矩陣,右下部是和每種條件組合相對應(yīng)的動作。判定表右半部的每一應(yīng)的動作。判定表右半部的每一列實(shí)質(zhì)上是一條規(guī)則,列實(shí)質(zhì)上是一條規(guī)則,規(guī)定了與特定的條件組合相對應(yīng)的動作。規(guī)定了與特定的條件組合相對應(yīng)的動作。5 5、判定表、判定表 判定表雖然能清晰地表示復(fù)雜的條件組合判定表雖然能清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對

28、應(yīng)關(guān)系,但其含義卻與應(yīng)做的動作之間的對應(yīng)關(guān)系,但其含義卻不是一眼就能看出來的,初次接觸這種工具不是一眼就能看出來的,初次接觸這種工具的人要理解它需要有一個簡短的學(xué)習(xí)過程。的人要理解它需要有一個簡短的學(xué)習(xí)過程。 此外,當(dāng)數(shù)據(jù)元素的值多于兩個時此外,當(dāng)數(shù)據(jù)元素的值多于兩個時(例如,例如,上例中假設(shè)對機(jī)票需細(xì)分為頭等艙、二等艙上例中假設(shè)對機(jī)票需細(xì)分為頭等艙、二等艙和經(jīng)濟(jì)艙等多種級別時和經(jīng)濟(jì)艙等多種級別時),判定表的簡潔程度,判定表的簡潔程度也將下降。也將下降。 判定樹是判定表的變種,也能清晰地表示復(fù)判定樹是判定表的變種,也能清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系雜的條件組合與應(yīng)做的動作之

29、間的對應(yīng)關(guān)系。5 5、 判定樹判定樹 1.1.在許多應(yīng)用領(lǐng)域中信息都有清楚的層次結(jié)構(gòu)、輸入數(shù)據(jù)、內(nèi)在許多應(yīng)用領(lǐng)域中信息都有清楚的層次結(jié)構(gòu)、輸入數(shù)據(jù)、內(nèi)部存儲的信息部存儲的信息( (數(shù)據(jù)庫或文件數(shù)據(jù)庫或文件) )以及輸出數(shù)據(jù)都可能有獨(dú)特的結(jié)以及輸出數(shù)據(jù)都可能有獨(dú)特的結(jié)構(gòu)。構(gòu)。 2.2.數(shù)據(jù)結(jié)構(gòu)既影響程序的結(jié)構(gòu)又影響程序的處理過程,重復(fù)出數(shù)據(jù)結(jié)構(gòu)既影響程序的結(jié)構(gòu)又影響程序的處理過程,重復(fù)出現(xiàn)的數(shù)據(jù)通常由具有循環(huán)控制結(jié)構(gòu)的程序來處理,選擇數(shù)據(jù)現(xiàn)的數(shù)據(jù)通常由具有循環(huán)控制結(jié)構(gòu)的程序來處理,選擇數(shù)據(jù)( (即,即,可能出現(xiàn)也可能不出現(xiàn)的信息可能出現(xiàn)也可能不出現(xiàn)的信息) )要用帶有分支控制結(jié)構(gòu)的程序來要用帶有

30、分支控制結(jié)構(gòu)的程序來處理。處理。 3.3.層次的數(shù)據(jù)組織通常和使用這些數(shù)據(jù)的程序的層次結(jié)構(gòu)十分層次的數(shù)據(jù)組織通常和使用這些數(shù)據(jù)的程序的層次結(jié)構(gòu)十分相似。相似。6.4 6.4 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法 4.4.面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的最終目標(biāo)是得出對程序處理過程面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的最終目標(biāo)是得出對程序處理過程的描述。的描述。 5.5.這種設(shè)計(jì)方法并不明顯地使用軟件結(jié)構(gòu)的概念,模塊是設(shè)計(jì)這種設(shè)計(jì)方法并不明顯地使用軟件結(jié)構(gòu)的概念,模塊是設(shè)計(jì)過程的副產(chǎn)品,對于模塊獨(dú)立原理也沒有給予應(yīng)有的重視。過程的副產(chǎn)品,對于模塊獨(dú)立原理也沒有給予應(yīng)有的重視。 6.6.因此,這種方法最適合于在

31、詳細(xì)設(shè)計(jì)階段使用,也就是說,因此,這種方法最適合于在詳細(xì)設(shè)計(jì)階段使用,也就是說,在完成了軟件結(jié)構(gòu)設(shè)計(jì)之后,可以使用面向數(shù)據(jù)結(jié)構(gòu)的方法來在完成了軟件結(jié)構(gòu)設(shè)計(jì)之后,可以使用面向數(shù)據(jù)結(jié)構(gòu)的方法來設(shè)計(jì)每個模塊的處理過程。設(shè)計(jì)每個模塊的處理過程。JacksonJackson方法和方法和WarnierWarnier方法是最著名的兩種面向數(shù)據(jù)方法是最著名的兩種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。結(jié)構(gòu)的設(shè)計(jì)方法。JacksonJackson系統(tǒng)開發(fā)方法則是面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法系統(tǒng)開發(fā)方法則是面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法. . 其基本思想是先建立輸入輸出的數(shù)據(jù)結(jié)構(gòu)其基本思想是先建立輸入輸出的數(shù)據(jù)結(jié)構(gòu), ,再將其轉(zhuǎn)換再將其轉(zhuǎn)換為

32、軟件結(jié)構(gòu)為軟件結(jié)構(gòu). .其分析的重點(diǎn)放在構(gòu)造與系統(tǒng)相關(guān)的現(xiàn)實(shí)世界其分析的重點(diǎn)放在構(gòu)造與系統(tǒng)相關(guān)的現(xiàn)實(shí)世界, ,并建立并建立現(xiàn)實(shí)世界的信息域的模型上現(xiàn)實(shí)世界的信息域的模型上. .其最終目標(biāo)是生成軟件的過程性描述其最終目標(biāo)是生成軟件的過程性描述. .強(qiáng)調(diào)程序結(jié)構(gòu)與強(qiáng)調(diào)程序結(jié)構(gòu)與問題結(jié)構(gòu)相對應(yīng)問題結(jié)構(gòu)相對應(yīng). . Jackson方法有方法有JSP(Jackson Structure Programming)和)和改進(jìn)的改進(jìn)的JSD(Jackson System development)方法。)方法。 JSP法主要體現(xiàn)程序結(jié)構(gòu)的設(shè)計(jì)法主要體現(xiàn)程序結(jié)構(gòu)的設(shè)計(jì),不嚴(yán)格區(qū)分軟件概要設(shè)不嚴(yán)格區(qū)分軟件概要設(shè)計(jì)和

33、詳細(xì)設(shè)計(jì)計(jì)和詳細(xì)設(shè)計(jì).可以根據(jù)可以根據(jù)JSP的規(guī)則直接導(dǎo)出程序結(jié)構(gòu)的規(guī)則直接導(dǎo)出程序結(jié)構(gòu).一般用一般用于規(guī)模不大的數(shù)據(jù)處理系統(tǒng)于規(guī)模不大的數(shù)據(jù)處理系統(tǒng),而且而且I/O數(shù)據(jù)結(jié)構(gòu)容易描述的情數(shù)據(jù)結(jié)構(gòu)容易描述的情況況. (2) JSD法是對法是對JSP法的擴(kuò)充法的擴(kuò)充,針對針對JSP法的缺陷而提出的解決法的缺陷而提出的解決方案方案.其主要特點(diǎn)是其主要特點(diǎn)是: 用用“分而治之分而治之”的策略控制系統(tǒng)的復(fù)雜性的策略控制系統(tǒng)的復(fù)雜性,解決解決I/O結(jié)構(gòu)的沖結(jié)構(gòu)的沖突問突問 題題. 實(shí)體結(jié)構(gòu)分析是用實(shí)體結(jié)構(gòu)分析是用Jackson圖來描述每個實(shí)體執(zhí)行圖來描述每個實(shí)體執(zhí)行的動作及其時序的動作及其時序,產(chǎn)生一組描

34、述實(shí)體進(jìn)程的產(chǎn)生一組描述實(shí)體進(jìn)程的Jackson結(jié)構(gòu)圖結(jié)構(gòu)圖. 6.4.1 Jackson圖圖 1. Jackson圖的表示圖的表示 雖然程序中實(shí)際使用的數(shù)據(jù)結(jié)構(gòu)種類繁多,但是它們的數(shù)據(jù)元雖然程序中實(shí)際使用的數(shù)據(jù)結(jié)構(gòu)種類繁多,但是它們的數(shù)據(jù)元素彼此間的邏輯關(guān)系卻只有順序、選擇和重復(fù)三種,因此,素彼此間的邏輯關(guān)系卻只有順序、選擇和重復(fù)三種,因此, 邏輯數(shù)邏輯數(shù)據(jù)結(jié)構(gòu)也只有這三種。據(jù)結(jié)構(gòu)也只有這三種。 1) 順序結(jié)構(gòu)順序結(jié)構(gòu) 順序結(jié)構(gòu)的數(shù)據(jù)由一個或多個數(shù)據(jù)元素組成,每個元素按確定順序結(jié)構(gòu)的數(shù)據(jù)由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序出現(xiàn)一次。次序出現(xiàn)一次。 2) 選擇結(jié)構(gòu)選擇結(jié)構(gòu) 選擇結(jié)構(gòu)的數(shù)

35、據(jù)包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。時按一定條件從這些數(shù)據(jù)元素中選擇一個。 3) 重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu) 重復(fù)結(jié)構(gòu)的數(shù)據(jù),重復(fù)結(jié)構(gòu)的數(shù)據(jù), 根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成?;蚨啻螛?gòu)成。(a) 順序結(jié)構(gòu);順序結(jié)構(gòu); (b) 選擇結(jié)構(gòu);選擇結(jié)構(gòu); (c) 重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)(b)ACDB(a)AC D B AB *(c) Jackson圖具有如下圖具有如下優(yōu)點(diǎn):優(yōu)點(diǎn): (1) 便于表示層次結(jié)構(gòu),便于表示層次結(jié)構(gòu), 是對結(jié)構(gòu)進(jìn)行自頂向下分解的有力工是對結(jié)構(gòu)

36、進(jìn)行自頂向下分解的有力工具。具。 (2) 形象直觀可讀性好。形象直觀可讀性好。 (3) 既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu)(因?yàn)槌绦蚪Y(jié)構(gòu)也只既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu)(因?yàn)槌绦蚪Y(jié)構(gòu)也只有上述三種基本類型)。有上述三種基本類型)。 缺點(diǎn)缺點(diǎn): 當(dāng)系統(tǒng)規(guī)模及復(fù)雜度大時當(dāng)系統(tǒng)規(guī)模及復(fù)雜度大時,確定數(shù)據(jù)結(jié)構(gòu)困難確定數(shù)據(jù)結(jié)構(gòu)困難. 2. Jackson圖應(yīng)用的示例圖應(yīng)用的示例 某倉庫管理系統(tǒng)每天要處理大批由單據(jù)所組成的事務(wù)文件。某倉庫管理系統(tǒng)每天要處理大批由單據(jù)所組成的事務(wù)文件。 單單據(jù)分為訂貨單和發(fā)貨單兩種,每張單據(jù)由多行組成,訂貨單每行包據(jù)分為訂貨單和發(fā)貨單兩種,每張單據(jù)由多行組成,訂貨單每行包

37、括零件號、零件名、單價及數(shù)量等括零件號、零件名、單價及數(shù)量等 4 個數(shù)據(jù)項(xiàng),發(fā)貨單每行包括零個數(shù)據(jù)項(xiàng),發(fā)貨單每行包括零件號、零件名及數(shù)量等件號、零件名及數(shù)量等 3 個數(shù)據(jù)項(xiàng),用個數(shù)據(jù)項(xiàng),用Jackson結(jié)構(gòu)圖表示該事務(wù)文結(jié)構(gòu)圖表示該事務(wù)文件的數(shù)據(jù)結(jié)構(gòu)。下圖為該事務(wù)文件的數(shù)據(jù)結(jié)構(gòu)。件的數(shù)據(jù)結(jié)構(gòu)。下圖為該事務(wù)文件的數(shù)據(jù)結(jié)構(gòu)。 事務(wù)文件的事務(wù)文件的Jackson結(jié)構(gòu)圖結(jié)構(gòu)圖事務(wù)文件單據(jù) *訂貨單發(fā)貨單發(fā)貨行*訂貨行*零件號 零件名數(shù)量數(shù)量單價零件名零件號Jackson圖和層次圖的區(qū)別:圖和層次圖的區(qū)別: 層次圖中的一個方框通常代表一個模塊;層次圖中的一個方框通常代表一個模塊; Jackson圖即使在

38、描繪程序結(jié)構(gòu)時,一個方框也并不代表圖即使在描繪程序結(jié)構(gòu)時,一個方框也并不代表一個模塊,通常只代表幾個語句。一個模塊,通常只代表幾個語句。 層次圖表現(xiàn)的是調(diào)用關(guān)系,通常一個模塊除了調(diào)用下級模層次圖表現(xiàn)的是調(diào)用關(guān)系,通常一個模塊除了調(diào)用下級模塊外,還完成其他操作;塊外,還完成其他操作; Jackson圖表現(xiàn)的是組成關(guān)系,即一個方框中包括的操作圖表現(xiàn)的是組成關(guān)系,即一個方框中包括的操作僅僅由它下層框中的那些操作組成。僅僅由它下層框中的那些操作組成。偽碼(綱要邏輯)偽碼(綱要邏輯) 與與Jackson結(jié)構(gòu)圖對應(yīng),結(jié)構(gòu)圖對應(yīng), 用于將用于將Jackson結(jié)構(gòu)圖表示的程序結(jié)構(gòu)結(jié)構(gòu)圖表示的程序結(jié)構(gòu)轉(zhuǎn)換為語言

39、表示。轉(zhuǎn)換為語言表示。 (1) 順序結(jié)構(gòu)順序結(jié)構(gòu): A seq B C D A end (2) 選擇結(jié)構(gòu)選擇結(jié)構(gòu): A sel 條件條件1 B A or 條件條件2 C A or 條件條件3 D A end (3) 重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu): A iter until(或(或while)條件)條件 B A end 開發(fā)步驟開發(fā)步驟 JSP方法基本由下列方法基本由下列5個步驟個步驟組成組成: (1) 分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu), 并用并用Jackson圖圖描繪這些數(shù)據(jù)結(jié)構(gòu)描繪這些數(shù)據(jù)結(jié)構(gòu)。 (2) 找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有找出輸入數(shù)據(jù)結(jié)構(gòu)和輸

40、出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系對應(yīng)關(guān)系的數(shù)據(jù)單的數(shù)據(jù)單元。所謂有對應(yīng)關(guān)系是指有直接的因果關(guān)系,在程序中可以同時處元。所謂有對應(yīng)關(guān)系是指有直接的因果關(guān)系,在程序中可以同時處理的數(shù)據(jù)單元(對于重復(fù)出現(xiàn)的數(shù)據(jù)單元必須是重復(fù)的次序和次數(shù)理的數(shù)據(jù)單元(對于重復(fù)出現(xiàn)的數(shù)據(jù)單元必須是重復(fù)的次序和次數(shù)都相同才可能有對應(yīng)關(guān)系)。都相同才可能有對應(yīng)關(guān)系)。 (3) 用下列用下列3條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出圖導(dǎo)出描繪程序描繪程序結(jié)構(gòu)的結(jié)構(gòu)的Jackson圖圖: 為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層次和在程序結(jié)構(gòu)圖的

41、相應(yīng)層次畫一個處理框(如果這對數(shù)據(jù)單元在輸次和在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個處理框(如果這對數(shù)據(jù)單元在輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中所處的層次不同,入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中所處的層次不同, 則和它們對應(yīng)的處則和它們對應(yīng)的處理框在程序結(jié)構(gòu)圖中所處的層次與它們之中在數(shù)據(jù)結(jié)構(gòu)圖中理框在程序結(jié)構(gòu)圖中所處的層次與它們之中在數(shù)據(jù)結(jié)構(gòu)圖中層次低層次低的的那個對應(yīng))。那個對應(yīng))。 根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次,根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次, 在程在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。 根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單

42、元所處的層次,根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次, 在程在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。 (4) 列出所有操作和條件列出所有操作和條件(包括選擇條件和重復(fù)結(jié)束條件),并(包括選擇條件和重復(fù)結(jié)束條件),并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。 (5) 用偽碼表示程序用偽碼表示程序。 現(xiàn)舉例說明現(xiàn)舉例說明Jackson方法設(shè)計(jì)過程。方法設(shè)計(jì)過程。 問題陳述問題陳述 某倉庫存放多種零件(如某倉庫存放多種零件(如P1, P2, ),每個零件的每次),每個零件的每次進(jìn)貨、發(fā)貨都有一張卡片作出記錄,每

43、月根據(jù)這樣一疊卡片打印一進(jìn)貨、發(fā)貨都有一張卡片作出記錄,每月根據(jù)這樣一疊卡片打印一張?jiān)聢蟊怼堅(jiān)聢蟊怼?報表每行列出某種零件本月庫存量的凈變化。用報表每行列出某種零件本月庫存量的凈變化。用JSP方方法對該問題進(jìn)行設(shè)計(jì)。法對該問題進(jìn)行設(shè)計(jì)。 1) 建立輸入、建立輸入、 輸出數(shù)據(jù)結(jié)構(gòu)輸出數(shù)據(jù)結(jié)構(gòu) 建立輸入、建立輸入、 輸出數(shù)據(jù)結(jié)構(gòu)的步驟如下:輸出數(shù)據(jù)結(jié)構(gòu)的步驟如下: (1) 輸入數(shù)據(jù):輸入數(shù)據(jù): 根據(jù)問題陳述,根據(jù)問題陳述, 同一種零件的進(jìn)貨、同一種零件的進(jìn)貨、 發(fā)貨狀發(fā)貨狀態(tài)不同,每月登記有若干張卡片。態(tài)不同,每月登記有若干張卡片。 把同一種零件的卡片放在一起組成一組,所有的卡片組按零件把同一種

44、零件的卡片放在一起組成一組,所有的卡片組按零件名排序。名排序。 所以輸入數(shù)據(jù)是由許多零件組組成的文件,每個零件組有所以輸入數(shù)據(jù)是由許多零件組組成的文件,每個零件組有許多張卡片,許多張卡片, 張卡片上記錄著本零件進(jìn)貨或發(fā)貨的信息。因此輸入張卡片上記錄著本零件進(jìn)貨或發(fā)貨的信息。因此輸入數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)的Jackson圖為圖圖為圖 (a)。 輸出數(shù)據(jù):根據(jù)問題陳述,輸出數(shù)據(jù)是一張如圖輸出數(shù)據(jù):根據(jù)問題陳述,輸出數(shù)據(jù)是一張如圖 (c)的月報表,)的月報表, 它由表頭和表體兩部分組成,表體中有許多行,它由表頭和表體兩部分組成,表體中有許多行, 一個零件的凈變化一個零件的凈變化占一行,其輸出數(shù)據(jù)結(jié)構(gòu)的占

45、一行,其輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖為圖圖為圖 (b)。 2) 找出輸入、找出輸入、 輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的單元輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的單元 月報表由輸入文件產(chǎn)生,有直接的因果關(guān)系,月報表由輸入文件產(chǎn)生,有直接的因果關(guān)系, 因此頂層的數(shù)據(jù)因此頂層的數(shù)據(jù)單元是對應(yīng)的。表體的每一行數(shù)據(jù)由輸入文件的每一個單元是對應(yīng)的。表體的每一行數(shù)據(jù)由輸入文件的每一個“零件組零件組”計(jì)算而來,行數(shù)與組數(shù)相同,且行的排列次序與組的排列次序一致,計(jì)算而來,行數(shù)與組數(shù)相同,且行的排列次序與組的排列次序一致,都按零件號排序。因此都按零件號排序。因此“零件組零件組”與與“行行”兩個單元對應(yīng),以下再兩個單元對應(yīng),以下再

46、無對應(yīng)的單元。無對應(yīng)的單元。 某倉庫系統(tǒng)輸入、某倉庫系統(tǒng)輸入、 輸出數(shù)據(jù)結(jié)構(gòu)輸出數(shù)據(jù)結(jié)構(gòu)(a) 輸入數(shù)據(jù)結(jié)構(gòu);輸入數(shù)據(jù)結(jié)構(gòu); (b) 輸出數(shù)據(jù)結(jié)構(gòu);輸出數(shù)據(jù)結(jié)構(gòu); (c) 輸出表輸出表輸入文件零件組 *卡片 *進(jìn)貨 發(fā)貨 月報表表頭表體行 *零件名凈變化對應(yīng)對 應(yīng)月報表零件名 增加數(shù)量P1P2P3 1500 100 200(c)(b)(a) 3) 導(dǎo)出程序結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu) 找出對應(yīng)關(guān)系后,根據(jù)以下規(guī)則導(dǎo)出程序結(jié)構(gòu):對于輸入數(shù)據(jù)找出對應(yīng)關(guān)系后,根據(jù)以下規(guī)則導(dǎo)出程序結(jié)構(gòu):對于輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)單元,每對有對應(yīng)關(guān)系的數(shù)據(jù)單元按結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)單元,每對有對應(yīng)關(guān)系的數(shù)據(jù)單元按

47、照它們所在的層次,在程序結(jié)構(gòu)圖適當(dāng)位置合畫一個處理框,無對照它們所在的層次,在程序結(jié)構(gòu)圖適當(dāng)位置合畫一個處理框,無對應(yīng)關(guān)系的數(shù)據(jù)單元,各畫一個處理框。應(yīng)關(guān)系的數(shù)據(jù)單元,各畫一個處理框。 根據(jù)以上規(guī)則,根據(jù)以上規(guī)則, 畫出的程序結(jié)構(gòu)圖如下圖所示。畫出的程序結(jié)構(gòu)圖如下圖所示。 在下圖的程序結(jié)構(gòu)的第在下圖的程序結(jié)構(gòu)的第4層增加了一個層增加了一個“處理零件組處理零件組”的框,的框,因?yàn)楦倪M(jìn)的因?yàn)楦倪M(jìn)的Jackson圖規(guī)定順序執(zhí)行的處理中不允許混有重復(fù)執(zhí)行圖規(guī)定順序執(zhí)行的處理中不允許混有重復(fù)執(zhí)行和選擇執(zhí)行的處理。和選擇執(zhí)行的處理。 增加了這樣一個框,增加了這樣一個框, 使符合該規(guī)定,同時也使符合該規(guī)定,

48、同時也提高了結(jié)構(gòu)圖的易讀性。提高了結(jié)構(gòu)圖的易讀性。 某倉庫系統(tǒng)程序結(jié)構(gòu)某倉庫系統(tǒng)程序結(jié)構(gòu)由輸入文件產(chǎn)生月報表產(chǎn)生表頭產(chǎn)生表體產(chǎn)生零件名產(chǎn)生凈變化處理零件組處理卡片 *處理發(fā)貨處理進(jìn)貨由零件組產(chǎn)生輸出行 * 4) 列出并分配操作與條件列出并分配操作與條件 為了對程序結(jié)構(gòu)作補(bǔ)充,要列出求解問題的所有操作和條件,為了對程序結(jié)構(gòu)作補(bǔ)充,要列出求解問題的所有操作和條件,然后分配到程序結(jié)構(gòu)圖的適當(dāng)位置,然后分配到程序結(jié)構(gòu)圖的適當(dāng)位置, 就可得到完整的程序結(jié)構(gòu)圖。就可得到完整的程序結(jié)構(gòu)圖。 (1) 本問題的基本操作列出如下:本問題的基本操作列出如下: A:終止終止,B:打開文件打開文件,C:關(guān)閉文件關(guān)閉文件

49、,D:打印字符行打印字符行,E:讀一張卡讀一張卡 , F:產(chǎn)產(chǎn)生行結(jié)束符生行結(jié)束符,G:累計(jì)進(jìn)貨量累計(jì)進(jìn)貨量,H:累計(jì)發(fā)貨量累計(jì)發(fā)貨量,I:計(jì)算凈變化計(jì)算凈變化, J: 置零件組置零件組開始標(biāo)志開始標(biāo)志 (2) 列出條件如下:列出條件如下: I(1):輸入條件未結(jié)束):輸入條件未結(jié)束I(2):零件組未結(jié)束):零件組未結(jié)束S(3):): 進(jìn)發(fā)進(jìn)發(fā)貨標(biāo)志貨標(biāo)志將操作與條件分配到適當(dāng)位置的程序結(jié)構(gòu)圖如下圖所示。將操作與條件分配到適當(dāng)位置的程序結(jié)構(gòu)圖如下圖所示。 分配操作后的程序結(jié)構(gòu)圖 由輸入文件產(chǎn)生月報表產(chǎn)生表頭產(chǎn)生表體產(chǎn)生零件名產(chǎn)生凈變化處理零件組處理卡片 *處理發(fā)貨處理進(jìn)貨由零件組產(chǎn)生輸出行 *

50、IS(3)GHI(2)DIDFJDJEBCAI(1) 在分配操作時注意:為了能獲得重復(fù)和選擇的條件,在分配操作時注意:為了能獲得重復(fù)和選擇的條件, Jackson建議至少超前讀一個記錄,以便使得程序不論在什么時候判定,建議至少超前讀一個記錄,以便使得程序不論在什么時候判定, 總總有數(shù)據(jù)已經(jīng)讀入,并做好使用準(zhǔn)備。有數(shù)據(jù)已經(jīng)讀入,并做好使用準(zhǔn)備。 因此在圖因此在圖4.32中,中, 將操作將操作E(讀一張卡)放在打開文件之后,同時在處理完一張卡片后再讀一(讀一張卡)放在打開文件之后,同時在處理完一張卡片后再讀一次。次。 5) 用偽碼寫出程序用偽碼寫出程序 Jackson方法中的偽碼與方法中的偽碼與J

51、ackson所示的程序結(jié)構(gòu)圖完全對應(yīng),用所示的程序結(jié)構(gòu)圖完全對應(yīng),用偽碼寫出程序的過程,實(shí)際上就是自頂向下用這些偽碼替換偽碼寫出程序的過程,實(shí)際上就是自頂向下用這些偽碼替換Jackson圖中每個處理框的過程,每個處理框都看作是下層處理框及分配在圖中每個處理框的過程,每個處理框都看作是下層處理框及分配在上面的操作組成。上面的操作組成。 下圖所示的程序結(jié)構(gòu)的偽碼為:下圖所示的程序結(jié)構(gòu)的偽碼為: 產(chǎn)生月報表產(chǎn)生月報表 seq 打開文件打開文件 讀一張卡讀一張卡 產(chǎn)生表頭產(chǎn)生表頭 seq 打印字符行打印字符行 產(chǎn)生表頭產(chǎn)生表頭 end 置零件組開始標(biāo)志置零件組開始標(biāo)志 產(chǎn)生表體產(chǎn)生表體 iter wh

52、ile 輸入文件未結(jié)束輸入文件未結(jié)束 由零件組產(chǎn)生輸出行由零件組產(chǎn)生輸出行 seq 處理零件組處理零件組 iter while 零件組未結(jié)束零件組未結(jié)束 處理卡片處理卡片 sel 進(jìn)貨標(biāo)志進(jìn)貨標(biāo)志處理進(jìn)貨處理進(jìn)貨 seq 累計(jì)進(jìn)貨量累計(jì)進(jìn)貨量處理進(jìn)貨處理進(jìn)貨 endalt 發(fā)貨標(biāo)志發(fā)貨標(biāo)志處理發(fā)貨處理發(fā)貨 seq 累計(jì)發(fā)貨量累計(jì)發(fā)貨量處理發(fā)貨處理發(fā)貨 end 處理卡片處理卡片 end 讀一張卡讀一張卡 處理零件組處理零件組 end產(chǎn)生零件名產(chǎn)生零件名 seq 打印字符行打印字符行產(chǎn)生零件名產(chǎn)生零件名 end產(chǎn)生凈變化產(chǎn)生凈變化 seq 計(jì)算凈變化計(jì)算凈變化 打印字符行打印字符行 產(chǎn)生凈變化產(chǎn)生

53、凈變化 end 換行換行 置零件組開始標(biāo)志置零件組開始標(biāo)志 由零件組產(chǎn)生輸出行由零件組產(chǎn)生輸出行end 產(chǎn)生表體產(chǎn)生表體 end 關(guān)閉文件關(guān)閉文件 終止終止 產(chǎn)生月報表產(chǎn)生月報表 end 用偽碼書寫程序可以很方便地轉(zhuǎn)換成源代碼,用偽碼書寫程序可以很方便地轉(zhuǎn)換成源代碼, 還可以檢查前面還可以檢查前面步驟的錯誤。如果分配操作不正確或者結(jié)構(gòu)圖不正確,步驟的錯誤。如果分配操作不正確或者結(jié)構(gòu)圖不正確, 都難以寫出都難以寫出它的偽碼。它的偽碼。 結(jié)構(gòu)沖突問題結(jié)構(gòu)沖突問題 JSP方法適用于輸入數(shù)據(jù)和輸出數(shù)據(jù)結(jié)構(gòu)之間有對應(yīng)關(guān)系的問方法適用于輸入數(shù)據(jù)和輸出數(shù)據(jù)結(jié)構(gòu)之間有對應(yīng)關(guān)系的問題求解。但有些情況下,輸入數(shù)據(jù)

54、和輸出數(shù)據(jù)結(jié)構(gòu)之間找不到對應(yīng)題求解。但有些情況下,輸入數(shù)據(jù)和輸出數(shù)據(jù)結(jié)構(gòu)之間找不到對應(yīng)關(guān)系,關(guān)系, 若倉庫系統(tǒng)中的卡片不按零件名分組,而是按進(jìn)貨、發(fā)貨的若倉庫系統(tǒng)中的卡片不按零件名分組,而是按進(jìn)貨、發(fā)貨的日期順序排列,這樣日期順序排列,這樣“零件組零件組”與與“行行”就不對應(yīng)了。就不對應(yīng)了。 輸入數(shù)據(jù)與輸入數(shù)據(jù)與輸出數(shù)據(jù)結(jié)構(gòu)找不到對應(yīng)關(guān)系的情況,稱為結(jié)構(gòu)沖突。輸出數(shù)據(jù)結(jié)構(gòu)找不到對應(yīng)關(guān)系的情況,稱為結(jié)構(gòu)沖突。 對這種結(jié)構(gòu)對這種結(jié)構(gòu)沖突的問題,沖突的問題,Jackson提出了引入中間數(shù)據(jù)結(jié)構(gòu)或中間文件的辦法,提出了引入中間數(shù)據(jù)結(jié)構(gòu)或中間文件的辦法, 將沖突部分分隔開來,建立多個程序結(jié)構(gòu),將沖突部分

55、分隔開來,建立多個程序結(jié)構(gòu), 再利用中間文件把它們再利用中間文件把它們聯(lián)系起來,構(gòu)成一個系統(tǒng)的整體。聯(lián)系起來,構(gòu)成一個系統(tǒng)的整體。 詳細(xì)設(shè)計(jì)階段設(shè)計(jì)出的模塊質(zhì)量如何呢?第5章中曾經(jīng)講述了軟件設(shè)計(jì)的基本原理和概念,經(jīng)過詳細(xì)設(shè)計(jì)之后每個模塊的內(nèi)容都非常具體了,因此可以使用這些原理進(jìn)一步仔細(xì)衡量它們的質(zhì)量。但是,這種衡量畢竟只能是定性定性的,人們希望能進(jìn)一步定量度量定量度量軟件的性質(zhì)。6.5 6.5 程序復(fù)雜程度的定量度量程序復(fù)雜程度的定量度量定量度量程序復(fù)雜程度的方法很有價值:把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯誤的數(shù)量以及軟件開發(fā)需要用的工作量,定量度量的結(jié)果可以用來比較兩個不同的設(shè)計(jì)

56、或兩個不同算法的優(yōu)劣;程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度。使用得比較廣泛的有McCabeMcCabe方法和HalsteadHalstead(霍斯德)方法。1. 1. 流圖流圖McCabe方法根據(jù)程序控制流的復(fù)雜程度控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。為了突出表示程序的控制流,人們通常使用流圖流圖(也稱為程序圖程序圖)。所謂流圖實(shí)質(zhì)上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。6.5.1 McCabe方法在流圖中用圓圓表示結(jié)點(diǎn),一個圓代表一條或多條語句。程序流程圖中的一個順序的處理框

57、序列和一個菱形判定框,可以映射成流圖中的一個結(jié)點(diǎn)。流圖中的箭頭線稱為邊邊,它和程序流程圖中的箭頭線類似,代表控制流。在流圖中一條邊必須終止于一個結(jié)點(diǎn),即使這個結(jié)點(diǎn)并不代表任何語句(實(shí)際上相當(dāng)于一個空語句)。由邊和結(jié)點(diǎn)圍成的面積稱為區(qū)域區(qū)域,當(dāng)計(jì)算區(qū)域數(shù)時應(yīng)該包括圖外部未被圍起來的那個區(qū)域。 用任何方法表示的過程設(shè)計(jì)結(jié)果,都可以翻譯成流圖。 當(dāng)過程設(shè)計(jì)中包含復(fù)合條件復(fù)合條件時,生成流圖的方法稍微復(fù)雜一些。所謂復(fù)合條件,就是在條件中包含了一個或多個布爾運(yùn)算符(邏輯OR,AND,NAND,NOR)。在這種情況下,應(yīng)該把復(fù)合條件分解為若干個簡單條件分解為若干個簡單條件,每個簡單條件對應(yīng)流圖中一個結(jié)點(diǎn)。包含條件的結(jié)點(diǎn)稱為判定節(jié)點(diǎn)判定節(jié)點(diǎn),從每個判定結(jié)點(diǎn)引出兩條或多條邊。圖6.16 由PDL翻譯成的流圖由包含復(fù)合條件的PDL映射成的流圖2. 2. 計(jì)算環(huán)形復(fù)雜度的方法計(jì)算環(huán)形復(fù)雜度的方法 環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜度。有了描繪程序控制流的流圖之后,可以用下述3種方法中的任何一種任何一種來計(jì)算環(huán)形復(fù)雜度。(1) 流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度。(2) 流圖G的環(huán)形復(fù)雜度V(G)=E-N+2,其中,E是流圖中邊的條數(shù),N是結(jié)點(diǎn)數(shù)。(3) 流圖G的環(huán)形復(fù)雜度V(G)=P+1,其中,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論