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

下載本文檔

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

文檔簡(jiǎn)介

第三章軟件設(shè)計(jì)

(詳細(xì)設(shè)計(jì))實(shí)用軟件工程第三章軟件設(shè)計(jì)

(詳細(xì)設(shè)計(jì))實(shí)用軟件工程第3章軟件設(shè)計(jì)軟件設(shè)計(jì)通常分為兩個(gè)階段:總體設(shè)計(jì)階段和詳細(xì)設(shè)計(jì)階段。 總體設(shè)計(jì)

詳細(xì)設(shè)計(jì)第3章軟件設(shè)計(jì)軟件設(shè)計(jì)通常分為兩個(gè)階段:總體設(shè)計(jì)階3.1軟件設(shè)計(jì)的基本任務(wù)詳細(xì)設(shè)計(jì)的基本任務(wù)

詳細(xì)設(shè)計(jì)是總體設(shè)計(jì)的進(jìn)一步的具體化,主要確定每個(gè)模塊的具體執(zhí)行過(guò)程,故也稱(chēng)為過(guò)程設(shè)計(jì)。其基本任務(wù)有:

(1).為每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì)。

(2).為模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì)。

(3).對(duì)數(shù)據(jù)庫(kù)進(jìn)行物理設(shè)計(jì)。

(4).界面設(shè)計(jì)。

(5).編寫(xiě)文檔

(6).評(píng)審3.1軟件設(shè)計(jì)的基本任務(wù)詳細(xì)設(shè)計(jì)的基本任務(wù)第6章:詳細(xì)設(shè)計(jì)確定如何具體實(shí)現(xiàn)所要求的系統(tǒng)。不是具體編寫(xiě)程序,而是設(shè)計(jì)程序的“藍(lán)圖”。詳細(xì)設(shè)計(jì)的結(jié)果決定最終程序代碼的質(zhì)量。不僅在邏輯上正確地實(shí)現(xiàn)每個(gè)模塊的功能,更重要的設(shè)計(jì)出的處理過(guò)程應(yīng)該盡可能簡(jiǎn)明易懂。3.4.1詳細(xì)設(shè)計(jì)的目標(biāo):3.4詳細(xì)設(shè)計(jì)第6章:詳細(xì)設(shè)計(jì)確定如何具體實(shí)現(xiàn)所要求的系統(tǒng)。3.4.2結(jié)構(gòu)程序設(shè)計(jì):一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。

3.4詳細(xì)設(shè)計(jì)3.4.2結(jié)構(gòu)程序設(shè)計(jì):3.4詳細(xì)設(shè)計(jì)使用結(jié)構(gòu)程序設(shè)計(jì)技術(shù)的好處:1)提高軟件開(kāi)發(fā)工程的成功率和生產(chǎn)率;2)系統(tǒng)有清晰的層次結(jié)構(gòu),容易閱讀理解;3)單入口單出口的控制結(jié)構(gòu),容易診斷糾正;4)模塊化可以使得軟件可以重用;5)程序邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。3.4詳細(xì)設(shè)計(jì)使用結(jié)構(gòu)程序設(shè)計(jì)技術(shù)的好處:3.4詳細(xì)設(shè)計(jì)經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):只允許使用順序、IF_THEN_ELSE選擇和DO_WHILE循環(huán);擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):除了三種基本控制結(jié)構(gòu),還使用DO_CASE和DO_UNTIL循環(huán);修正的結(jié)構(gòu)程序設(shè)計(jì):除了三種基本控制結(jié)構(gòu)和兩種擴(kuò)充結(jié)構(gòu),還使用BREAK等結(jié)構(gòu)。經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):只允許使用順序、IF_THEN_ELSE1)順序結(jié)構(gòu):相當(dāng)于“A、B”3.4.3三種基本控制結(jié)構(gòu)AB(a)順序結(jié)構(gòu)1)順序結(jié)構(gòu):相當(dāng)于“A、B”3.4.3三種基本控制結(jié)2)選擇結(jié)構(gòu)相當(dāng)于“IfexpthenAelseBendif”ABexp(b)選擇結(jié)構(gòu)2)選擇結(jié)構(gòu)ABexp(b)選擇結(jié)構(gòu)3)循環(huán)結(jié)構(gòu):相當(dāng)于“WhileexpdoA”A(c)循環(huán)結(jié)構(gòu)exp3)循環(huán)結(jié)構(gòu):相當(dāng)于“WhileexpdoA”1)多分支結(jié)構(gòu)相當(dāng)于“CaseIofI=1:C1;I=2:C2;I=3:C3;…;I=n:Cn”3.

擴(kuò)充兩種控制結(jié)構(gòu)

CnC3C1C2(d)多分支結(jié)構(gòu)I=?…1)多分支結(jié)構(gòu)3.擴(kuò)充兩種控制結(jié)構(gòu)CnC3C1C2(d)2)UNTIL循環(huán)結(jié)構(gòu)相當(dāng)于“RepeatAUntilexp”A(e)UNTIL循環(huán)exp2)UNTIL循環(huán)結(jié)構(gòu)A(e)UNTIL循環(huán)exp(1)程序流程圖

程序流程圖:是一種描述程序的控制結(jié)構(gòu)流程和指令執(zhí)行情況的有向圖。歷史悠久、使用廣泛、直觀描繪控制流程、便于初學(xué)者掌握。3.4.4詳細(xì)設(shè)計(jì)時(shí)使用的工具(1)程序流程圖程序流程圖:是一種描述程序的控制ASP檢索程序流程圖:記錄集末端?記數(shù)變量加1,輸出記錄字段值及圖像轉(zhuǎn)跳下一記錄關(guān)閉數(shù)據(jù)庫(kù)鏈接對(duì)象、記錄集對(duì)象,并釋放資源輸出記錄數(shù)和提示結(jié)束YN開(kāi)始加載Include文件定義記數(shù)變量、作物變量創(chuàng)建數(shù)據(jù)庫(kù)鏈接對(duì)象、記錄集對(duì)象打開(kāi)數(shù)據(jù)庫(kù)用客戶(hù)提交的值對(duì)作物變量賦值SQL查詢(xún)語(yǔ)句賦值通過(guò)記錄集對(duì)象打開(kāi)SQL語(yǔ)句設(shè)定的記錄ASP檢索程序流程圖:記錄集末端?記數(shù)變量加1,輸出記錄字段2)程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制。3)程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。程序流程圖的缺點(diǎn):1)程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過(guò)早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。2)程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可由Nassi和Shneiderman開(kāi)發(fā)了另一種圖形化設(shè)計(jì)工具,它的目標(biāo)是保證結(jié)構(gòu)化程序設(shè)計(jì),這種圖形工具叫做盒狀圖,或稱(chēng)為N—S圖。盒圖的特點(diǎn):(1)功能域(即一個(gè)特定控制結(jié)構(gòu)的作用域)明確,很容易從盒圖上看出。(2)不可能任意轉(zhuǎn)移控制(3)很容易確定局部和全程數(shù)據(jù)的作用域(4)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)(5)盒圖沒(méi)有箭頭,不可以隨意轉(zhuǎn)移控制,不允許違背程序設(shè)計(jì)的原則。

(2)盒圖(N-S圖)

由Nassi和Shneiderman開(kāi)發(fā)了另一種圖形化設(shè)計(jì)工盒圖(N-S圖)在NS圖中,每個(gè)“處理步驟”是用一個(gè)盒子表示的,所謂“處理步驟”可以是語(yǔ)句或語(yǔ)句序列。需要時(shí),盒子中還可以嵌套另一個(gè)盒子,嵌套深度一般沒(méi)有限制,只要整張圖在一頁(yè)紙上能容納得下,由于只能從上邊進(jìn)入盒子然后從下邊走出,除此之外沒(méi)有其他的入口和出口,所以,NS圖限制了隨意的控制轉(zhuǎn)移,保證了程序的良好結(jié)構(gòu)。盒圖(N-S圖)在NS圖中,每個(gè)“處理步驟”是用一個(gè)盒子表盒圖(N-S圖)ABC條件FTElseBThenACase條件Case1ACase2B…CasenN循環(huán)條件循環(huán)條件Do-While部分Do-Until部分Aa.順序結(jié)構(gòu)b.選擇結(jié)構(gòu)c.多分支結(jié)構(gòu)d.當(dāng)型循環(huán)結(jié)構(gòu)e.直到型循環(huán)結(jié)構(gòu)f.調(diào)用子程序A圖3.4盒圖的基本符號(hào)盒圖(N-S圖)ABC條件FTElseThenCaseFTBCDACase1E2F3G4HA:盒圖例子FTBCDACase1234A:盒圖例子

PAD(ProblemAnalysisDiagram)是問(wèn)題分析圖。日立公司發(fā)明和推廣(1973)。(3)PAD圖PAD(ProblemAnalysisDP1P2WHILECUNTILCPPP2P1CP1P2Pn…X=L1L2Lndefa.順序結(jié)構(gòu)b.當(dāng)型循環(huán)結(jié)構(gòu)c.直到型循環(huán)結(jié)構(gòu)d.選擇結(jié)構(gòu)e.多分支結(jié)構(gòu)f.語(yǔ)句標(biāo)號(hào)g.定義PAD圖的基本符號(hào)P1P2WHILECUNTILCPPP2P1CP1P例子:

例子:例子:

P1P2UNTILC2P7P4P3Cdefa.初始的PAD圖

PAD圖例子b.使用def符號(hào)細(xì)化處理框P2P5P2P8C1UNTILC2P9P10P6例子:P1P2UNTILC2P7P4P3Cdefa.初將盒圖轉(zhuǎn)換為PAD圖將盒圖轉(zhuǎn)換為PAD圖軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件PAD圖的優(yōu)點(diǎn):1)使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號(hào)所設(shè)計(jì)出來(lái)的程序必然是結(jié)構(gòu)化程序;2)PAD圖所描繪的程序結(jié)構(gòu)十分清晰。圖中最左面的豎線(xiàn)是程序的主線(xiàn),即第一層結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾?,PAD圖逐漸向右延伸,每增加一個(gè)層次,圖形向右擴(kuò)展一條豎線(xiàn)。PAD圖中豎線(xiàn)的總條數(shù)就是程序的層次數(shù);PAD圖的優(yōu)點(diǎn):3)用PAD圖表現(xiàn)程序,通俗易懂,程序從圖中最左豎線(xiàn)上端的結(jié)點(diǎn)開(kāi)始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有結(jié)點(diǎn);4)容易將PAD圖轉(zhuǎn)換成高級(jí)語(yǔ)言源程序,這種轉(zhuǎn)換可以用軟件工具自動(dòng)完成;5)可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu);6)PAD圖的符號(hào)支持自頂向下、逐步求精的方法。3)用PAD圖表現(xiàn)程序,通俗易懂,程序從圖中最左豎線(xiàn)上端的結(jié)判定表由四部分組成:左上部列出所有條件左下部是所有可能做的動(dòng)作右上部表示各種條件組合右下部是和每種條件組合相對(duì)應(yīng)的動(dòng)作

(4)判定表當(dāng)模塊中包含復(fù)雜的條件組合,并要根據(jù)這些條件的組合選擇動(dòng)作時(shí),只有判定表和判定樹(shù)能夠清晰地表達(dá)出復(fù)雜的條件組合與各種動(dòng)作之間的對(duì)應(yīng)關(guān)系。判定表的每一列可解釋為一條處理規(guī)則

判定表由四部分組成:(4)判定表當(dāng)模塊中包含復(fù)雜的條件組合

12345教授

TFFF副教授

FTFF講師

FFTF助教

FFFT講座TFFFF50×

30

×

25

×

20

×

15

×例:某校制定了教師的講課課時(shí)津貼標(biāo)準(zhǔn)。對(duì)于各種性質(zhì)的講座,無(wú)論教師是什么職稱(chēng),每課時(shí)津貼費(fèi)一律是50元;而對(duì)于一般的授課,則根據(jù)教師的職稱(chēng)來(lái)決定每課時(shí)津貼費(fèi):教授30元,副教授25元,講師20元,助教15元。

12345教授

TFFF副教授

FTFF講師

FFTF助教

123456789國(guó)內(nèi)乘客

TTTTFFFF頭等艙

TFTFTFTF殘疾乘客

FFTTFFTT行李重量W≤30

TFFFFFFFF

免費(fèi)

×

(W-30)×2

×

(W-30)×3

×

(W-30)×4

×

×

(W-30)×6

×

×(W-30)×8

×

(W-30)×12

×

乘飛機(jī)時(shí)能夠攜帶的行李的重量與收費(fèi)的關(guān)系

123456789國(guó)內(nèi)乘客

TTTTFFFF頭等艙

(5)判定樹(shù)是判定表的變種,也能清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系。判定樹(shù)的優(yōu)點(diǎn):形式簡(jiǎn)單,直觀明了,易于掌握。判定樹(shù)的缺點(diǎn):①存在著數(shù)據(jù)冗余的問(wèn)題,相同的數(shù)據(jù)元素往往要重復(fù)多次,而且越接近樹(shù)的葉端重復(fù)的次數(shù)越多。②判定樹(shù)要求對(duì)條件進(jìn)行層次劃分,若條件所處層次不對(duì),可能會(huì)導(dǎo)致增加判定樹(shù)的復(fù)雜性。(5)判定樹(shù)是判定表的變種,也能清晰地表示復(fù)雜的條件組合與判定樹(shù)判定樹(shù)是判定表的變種。行李重量W>30行李重量W≤30國(guó)內(nèi)乘客外國(guó)乘客頭等艙其他艙頭等艙其他艙殘疾乘客正常乘客殘疾乘客正常乘客殘疾乘客正常乘客殘疾乘客正常乘客(W-30)×2(W-30)×4(W-30)×3(W-30)×6(W-30)×4(W-30)×8(W-30)×6(W-30)×12免費(fèi)用判定樹(shù)表示計(jì)算行李費(fèi)的算法行李費(fèi)算法判定樹(shù)行李重量W>30行李重量W≤30國(guó)內(nèi)乘客外國(guó)乘客頭等艙過(guò)程設(shè)計(jì)語(yǔ)言(PDL)也稱(chēng)為結(jié)構(gòu)化的英語(yǔ)或偽碼,它是一種混合語(yǔ)言,通常采用英語(yǔ)(或中文)的詞匯,采用某種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言的語(yǔ)法。如:ifI>0then

執(zhí)行訂單數(shù)據(jù)輸入模塊

else

報(bào)告出錯(cuò)信息

endif3.4.6過(guò)程設(shè)計(jì)語(yǔ)言(PDL)過(guò)程設(shè)計(jì)語(yǔ)言(PDL)也稱(chēng)為結(jié)構(gòu)化的英語(yǔ)或偽碼,它是一種混合PDL的優(yōu)點(diǎn):1)可以作為注釋直接插在源程序中間;2)可以使用普通的正文編輯程序或文字處理系統(tǒng)來(lái)完成PDL的書(shū)寫(xiě)和編輯工作;3)現(xiàn)在已經(jīng)有一些自動(dòng)處理程序可以自動(dòng)地把PDL生成程序代碼。PDL的缺點(diǎn):不如圖形工具形象直觀。PDL的優(yōu)點(diǎn):PDL的缺點(diǎn):不如圖形工具形象直觀。購(gòu)書(shū)單學(xué)生學(xué)生教材購(gòu)銷(xiāo)系統(tǒng)進(jìn)書(shū)通知領(lǐng)書(shū)單缺書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的頂層DFD實(shí)例1:教材購(gòu)銷(xiāo)系統(tǒng)的設(shè)計(jì)購(gòu)書(shū)單進(jìn)書(shū)通知領(lǐng)書(shū)單缺書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的頂層DFD實(shí)例1:通過(guò)前一章結(jié)構(gòu)化分析,已獲得教材購(gòu)銷(xiāo)系統(tǒng)第三層的兩張DFD圖,即銷(xiāo)售子系統(tǒng)DFD圖和采購(gòu)子系統(tǒng)DFD圖。用結(jié)構(gòu)化設(shè)計(jì)方法,從上述兩張DFD圖導(dǎo)出教材,購(gòu)銷(xiāo)系統(tǒng)的總體結(jié)構(gòu)圖,包括初始終的SC圖和按改進(jìn)規(guī)則進(jìn)行修改后的最終SC圖。通過(guò)前一章結(jié)構(gòu)化分析,已獲得教材購(gòu)銷(xiāo)系統(tǒng)第三層的兩張DFD圖進(jìn)書(shū)通知購(gòu)書(shū)單進(jìn)書(shū)通知領(lǐng)書(shū)單缺書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的0層DFD學(xué)生學(xué)生1銷(xiāo)售2采購(gòu)F2缺書(shū)登記表F1教材存量表進(jìn)書(shū)通知購(gòu)書(shū)單進(jìn)書(shū)通知領(lǐng)書(shū)單缺書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的0層DFD學(xué)發(fā)票發(fā)票暫缺書(shū)單領(lǐng)書(shū)單有效購(gòu)書(shū)單購(gòu)書(shū)單進(jìn)書(shū)通知無(wú)效書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的1層DFD-銷(xiāo)售子系統(tǒng)學(xué)生學(xué)生F2缺書(shū)登記表F1教材存量表1.5登記缺書(shū)F4售書(shū)登記表F3學(xué)生用書(shū)表1.6產(chǎn)生補(bǔ)書(shū)單1.1審查有效性1.2開(kāi)發(fā)票1.3打印發(fā)票1.4登記售書(shū)打印書(shū)單采購(gòu)補(bǔ)售書(shū)單發(fā)票發(fā)票暫缺書(shū)單領(lǐng)書(shū)單有效購(gòu)書(shū)單進(jìn)書(shū)通知無(wú)效書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)教材購(gòu)銷(xiāo)系統(tǒng)的1層DFD-采購(gòu)子系統(tǒng)進(jìn)書(shū)通知進(jìn)書(shū)通知銷(xiāo)售保管員2.3修改庫(kù)存與待購(gòu)量F1教材存量表F2缺書(shū)登記表F6教材一覽表2.1按書(shū)號(hào)匯總?cè)睍?shū)2.2按出版社統(tǒng)計(jì)缺書(shū)F5待購(gòu)教材表缺書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的1層DFD-采購(gòu)子系統(tǒng)進(jìn)書(shū)通知進(jìn)書(shū)通知銷(xiāo)售1.1審查購(gòu)書(shū)單有效性學(xué)生購(gòu)書(shū)單領(lǐng)書(shū)單發(fā)票F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知1.2開(kāi)發(fā)票1.3打印發(fā)票1.4登記售書(shū)1.5登記缺書(shū)1.6產(chǎn)生補(bǔ)售書(shū)單采購(gòu)有效購(gòu)書(shū)單F3學(xué)生用書(shū)表F4售書(shū)登記表發(fā)票學(xué)生暫缺書(shū)單補(bǔ)售書(shū)單1.7開(kāi)領(lǐng)書(shū)單第一步:細(xì)化并修改DFD圖。修改后銷(xiāo)售子系統(tǒng)DFD圖無(wú)效購(gòu)書(shū)單1.1學(xué)購(gòu)書(shū)單領(lǐng)書(shū)單發(fā)票F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知1軟件設(shè)計(jì)銷(xiāo)售F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知2.3修改教材庫(kù)存和待購(gòu)量2.2按出版社統(tǒng)計(jì)缺書(shū)2.1按書(shū)號(hào)匯總?cè)睍?shū)F5待購(gòu)教材表F6教材一覽表書(shū)庫(kù)保管員缺書(shū)單進(jìn)書(shū)通知F7進(jìn)書(shū)登記表修改后采購(gòu)子系統(tǒng)DFD圖軟件設(shè)計(jì)銷(xiāo)F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知2.32.22.軟件設(shè)計(jì)第二步:鑒別DFD圖的類(lèi)別。1.1審查購(gòu)書(shū)單有效性學(xué)生購(gòu)書(shū)單領(lǐng)書(shū)單發(fā)票F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知1.2開(kāi)發(fā)票1.3打印發(fā)票1.4登記售書(shū)1.5登記缺書(shū)1.6產(chǎn)生補(bǔ)售書(shū)單采購(gòu)有效購(gòu)書(shū)單F3學(xué)生用書(shū)表F4售書(shū)登記表發(fā)票學(xué)生暫缺書(shū)單補(bǔ)售書(shū)單1.7開(kāi)領(lǐng)書(shū)單修改后銷(xiāo)售子系統(tǒng)DFD圖加工1.1用于出售,產(chǎn)生數(shù)據(jù)流“有效購(gòu)書(shū)單”。加工1.6用于補(bǔ)售,產(chǎn)生傳入數(shù)據(jù)流“補(bǔ)售書(shū)單”。一次售書(shū)只能執(zhí)行一種功能,要么出售,要么補(bǔ)售。因此,數(shù)據(jù)流“有效書(shū)單”和“補(bǔ)售書(shū)單”不能同時(shí)出現(xiàn)。所以,該DFD圖屬于事務(wù)型結(jié)構(gòu)。無(wú)效購(gòu)書(shū)單軟件設(shè)計(jì)第二步:鑒別DFD圖的類(lèi)別。1.1學(xué)購(gòu)書(shū)單領(lǐng)書(shū)單發(fā)票軟件設(shè)計(jì)銷(xiāo)售F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知2.3修改教材庫(kù)存和待購(gòu)量2.2按出版社統(tǒng)計(jì)缺書(shū)2.1按書(shū)號(hào)匯總?cè)睍?shū)F5待購(gòu)教材表F6教材一覽表書(shū)庫(kù)保管員缺書(shū)單進(jìn)書(shū)通知F7進(jìn)書(shū)登記表該DFD圖屬于事務(wù)型結(jié)構(gòu)軟件設(shè)計(jì)銷(xiāo)F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知2.32.22.軟件設(shè)計(jì)教材購(gòu)銷(xiāo)系統(tǒng)讀出用戶(hù)選擇銷(xiāo)售采購(gòu)用戶(hù)命令銷(xiāo)售命令采購(gòu)命令教材購(gòu)銷(xiāo)系統(tǒng)SC框架初售補(bǔ)售初售命令補(bǔ)售命令統(tǒng)計(jì)缺書(shū)登記進(jìn)書(shū)統(tǒng)計(jì)命令登記命令第三步:畫(huà)出SC圖框架。軟件設(shè)計(jì)教材購(gòu)銷(xiāo)系統(tǒng)讀出用戶(hù)選擇銷(xiāo)售采購(gòu)用戶(hù)命令銷(xiāo)售命令采購(gòu)軟件設(shè)計(jì)第四步:分解動(dòng)作分支、補(bǔ)充動(dòng)作層與細(xì)節(jié)層。采購(gòu)統(tǒng)計(jì)缺書(shū)登記進(jìn)書(shū)按書(shū)號(hào)匯總?cè)睍?shū)按出版社統(tǒng)計(jì)缺書(shū)打印缺書(shū)單修改教材待購(gòu)量修改教材庫(kù)存量統(tǒng)計(jì)命令缺書(shū)登記表待購(gòu)教材表待購(gòu)教材表缺書(shū)單缺書(shū)單進(jìn)書(shū)通知進(jìn)書(shū)通知登記命令缺書(shū)單采購(gòu)子系統(tǒng)初始SC圖軟件設(shè)計(jì)第四步:分解動(dòng)作分支、補(bǔ)充動(dòng)作層與細(xì)節(jié)層。采購(gòu)統(tǒng)計(jì)缺軟件設(shè)計(jì)銷(xiāo)售初售補(bǔ)售獲取購(gòu)書(shū)單有效性開(kāi)發(fā)票開(kāi)領(lǐng)書(shū)單打印發(fā)票獲取補(bǔ)售書(shū)單登記缺書(shū)審查購(gòu)書(shū)單有效性讀購(gòu)書(shū)單讀進(jìn)書(shū)通知初售命令補(bǔ)售命令有效購(gòu)書(shū)單有效購(gòu)書(shū)單購(gòu)書(shū)單有效購(gòu)書(shū)單發(fā)票暫缺書(shū)單發(fā)票補(bǔ)售書(shū)單領(lǐng)書(shū)單領(lǐng)書(shū)單補(bǔ)售書(shū)單進(jìn)書(shū)通知銷(xiāo)售子系統(tǒng)初始SC圖登記售書(shū)發(fā)票軟件設(shè)計(jì)銷(xiāo)售初售補(bǔ)售獲取購(gòu)書(shū)單開(kāi)發(fā)票開(kāi)領(lǐng)書(shū)單打印發(fā)票獲取補(bǔ)售詳細(xì)設(shè)計(jì)示例現(xiàn)在仍以“教材購(gòu)銷(xiāo)系統(tǒng)”中的部分模塊作例子,說(shuō)明怎樣根據(jù)前面介紹的方法來(lái)進(jìn)行模塊設(shè)計(jì),編碼的實(shí)質(zhì)相當(dāng)于“翻譯”,工作比較簡(jiǎn)單,就不另說(shuō)明了。第一步:寫(xiě)出模塊說(shuō)明。第二步:將模塊說(shuō)明細(xì)化為詳細(xì)邏輯

詳細(xì)設(shè)計(jì)示例軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件3.5Jackson方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)是由英國(guó)人M?Jackson首先提出和倡導(dǎo)的,所以又稱(chēng)為Jackson程序設(shè)計(jì)方法(簡(jiǎn)稱(chēng)JSP)。該方法的基本思想是使程序結(jié)構(gòu)與問(wèn)題結(jié)構(gòu)相對(duì)應(yīng),即與數(shù)據(jù)結(jié)構(gòu)相對(duì)應(yīng)。因此它按輸入輸出以及內(nèi)部存儲(chǔ)信息的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì),把數(shù)據(jù)結(jié)構(gòu)的描述變換為對(duì)程序結(jié)構(gòu)的描述,有時(shí)也稱(chēng)為結(jié)構(gòu)數(shù)據(jù)設(shè)計(jì)方法。3.5Jackson方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)是Jackson方法的特點(diǎn)和目標(biāo)J總結(jié)了COBOL事務(wù)處理程序中的開(kāi)發(fā)方法而發(fā)展起來(lái)的,特點(diǎn):重點(diǎn)不是自頂向下逐步求精,而是在數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上進(jìn)行構(gòu)造根據(jù)輸入/輸出的數(shù)據(jù)結(jié)構(gòu)建立程序結(jié)構(gòu)目標(biāo):獲得簡(jiǎn)單清晰的設(shè)計(jì)方案Jackson方法的特點(diǎn)和目標(biāo)J總結(jié)了COBOL事務(wù)處理程Jackson結(jié)構(gòu)程序設(shè)計(jì)方法由五個(gè)步驟組成:1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu);2)找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元;Jackson結(jié)構(gòu)程序設(shè)計(jì)方法由五個(gè)步驟組成:3)用三條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖:A.為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫(huà)一個(gè)處理框;B.根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫(huà)上對(duì)應(yīng)的處理框;C.根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫(huà)上對(duì)應(yīng)的處理框;3)用三條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)4)列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置;5)用偽碼表示程序。4)列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把

Jackson為了表達(dá)程序中使用的數(shù)據(jù)結(jié)構(gòu),使用了與程序結(jié)構(gòu)相同的三種基本結(jié)構(gòu)形式,即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)。使用這三種基本的數(shù)據(jù)結(jié)構(gòu)表達(dá)方法,可以形成更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。

ABCDABCD

S(i)AB—

S(i)AB*I(i)Jackson為了表達(dá)程序中使用的數(shù)據(jù)結(jié)構(gòu),使用Jackson圖和描繪軟件結(jié)構(gòu)的層次圖非常相似,但兩者表示的含義有本質(zhì)的不同。層次圖中的一個(gè)方框通常代表一個(gè)模塊,模塊上下級(jí)之間表示的是調(diào)用關(guān)系,通常一個(gè)模塊除了調(diào)用下級(jí)模塊外,還完成其他操作;而Jackson圖表示的是組成關(guān)系,在描繪程序結(jié)構(gòu)時(shí),一個(gè)方框并不代表一個(gè)模塊,通常一個(gè)方框只代表幾個(gè)語(yǔ)句,上層方框中包括的操作僅僅由它下層框中的那些操作組成。

Jackson圖和描繪軟件結(jié)構(gòu)的層次圖非常相似,但兩者表示的Jackson圖解邏輯中的關(guān)鍵字與順序結(jié)構(gòu)相對(duì)應(yīng)的Jackson圖解邏輯,使用‘seq’和‘end’關(guān)鍵字。與選擇結(jié)構(gòu)相對(duì)應(yīng)的Jackson圖解邏輯,使用‘select’、‘or’和‘end’是關(guān)鍵字,其中cond1、cond2和cond3分別是執(zhí)行B、C或D的條件:與重復(fù)結(jié)構(gòu)相對(duì)應(yīng)的Jackson圖解邏輯,使用‘iter’、‘until’、‘while’和‘end’是關(guān)鍵字,其中cond是條件:Jackson圖解邏輯中的關(guān)鍵字與順序結(jié)構(gòu)相對(duì)應(yīng)的Jacks順序結(jié)構(gòu):AseqBCDAend與三種基本結(jié)構(gòu)對(duì)應(yīng)的偽碼是:選擇結(jié)構(gòu)Aselectcond1BAorcond2CAorcond3DAend重復(fù)結(jié)構(gòu)Aiteruntil(或while)condBAend順序結(jié)構(gòu):與三種基本結(jié)構(gòu)對(duì)應(yīng)的偽碼是:選擇結(jié)構(gòu)重復(fù)結(jié)構(gòu)示例:打印表格程序的輸出數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的程序結(jié)構(gòu)示例:打印表格程序的輸出數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的程序結(jié)構(gòu)例:一個(gè)正文文件由若干記錄組成,每個(gè)記錄是一個(gè)字符串。如:Record1:Howmanystagesarethereinthetraditionalsoftwaredevelopmentmodel?Record2:Afterenteringtheroom,walktothepersonsittingnearesttoyouandgreethim/herwitha“highfive”.Record3:Whatareencapsulatedintoanobject?Record4:Whatdiagramisthefollowingdiagram?Simplydescribethemeaningofit.

實(shí)例2:例:一個(gè)正文文件由若干記錄組成,每個(gè)記錄是一個(gè)字符串。實(shí)例2要求:1)設(shè)計(jì)程序統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),輸出數(shù)據(jù)的格式是,每讀入一個(gè)記錄(字符串)之后,另起一行打印出這個(gè)字符串及其空格數(shù);Record1:Howmanystagesarethereinthetraditionalsoftwaredevelopmentmodel?ThenumberofBlankis12

2)最后打印出文件中空格的總個(gè)數(shù)。

要求:JSP方法的分析和設(shè)計(jì)步驟-1第1步.分析并確定輸入和輸出數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu),并用Jackson圖畫(huà)出JSP方法的分析和設(shè)計(jì)步驟-1第1步.分析并確定輸入和輸出數(shù)JSP方法的分析和設(shè)計(jì)步驟-2第2步.找出輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)元素有對(duì)應(yīng)關(guān)系是指有直接因果關(guān)系,即在程序中可以同時(shí)處理的數(shù)據(jù)元素對(duì)于表示“重復(fù)”的數(shù)據(jù)元素,只有其重復(fù)次數(shù)和次序都相同時(shí)才有對(duì)應(yīng)關(guān)系輸入/輸出數(shù)據(jù)結(jié)構(gòu)最高層次的兩個(gè)數(shù)據(jù)元素總是有對(duì)應(yīng)關(guān)系的JSP方法的分析和設(shè)計(jì)步驟-2第2步.找出輸入數(shù)據(jù)結(jié)構(gòu)與輸出JSP方法的分析和設(shè)計(jì)步驟-3第3步.從描述數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描述程序結(jié)構(gòu)的Jackson圖,導(dǎo)出規(guī)則:有對(duì)應(yīng)關(guān)系的數(shù)據(jù)元素,按照它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次上畫(huà)一個(gè)處理框(如果它們?cè)谳斎牒洼敵鰣D中的層次不同,則程序結(jié)構(gòu)圖中處理框?qū)哟闻c較低的那個(gè)對(duì)應(yīng)為輸入數(shù)據(jù)結(jié)構(gòu)圖中剩余的每個(gè)數(shù)據(jù)元素,在程序結(jié)構(gòu)圖的相應(yīng)層次上畫(huà)一個(gè)處理框,在模塊名稱(chēng)上增加“分析”或“處理”或取一個(gè)具有實(shí)際含義的名稱(chēng)為輸出數(shù)據(jù)結(jié)構(gòu)圖中剩余的每個(gè)數(shù)據(jù)元素,在程序結(jié)構(gòu)圖的相應(yīng)層次上畫(huà)上一個(gè)處理框JSP方法的分析和設(shè)計(jì)步驟-3第3步.從描述數(shù)據(jù)結(jié)構(gòu)的Jac程序結(jié)構(gòu)圖導(dǎo)出結(jié)果程序結(jié)構(gòu)圖導(dǎo)出結(jié)果JSP方法的分析和設(shè)計(jì)步驟-4第4步.列出所有操作和條件,并將它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置首先從輸出操作開(kāi)始,再回到輸入操作加入必須的與條件有關(guān)的操作最后把每個(gè)操作都分配到程序結(jié)構(gòu)中去JSP方法的分析和設(shè)計(jì)步驟-4第4步.列出所有操作和條件,并設(shè)變量sum存放一行字符串中的空格數(shù);totalsum存放空格總數(shù);pointer用來(lái)指示當(dāng)前分析的字符在字符串中的位置,可列出其所有操作,并對(duì)其編號(hào)如下:①停止②打開(kāi)文件③關(guān)閉文件④打印字符串⑤打印空格數(shù)⑥打印空格總數(shù)⑦sum=sum+1條件列表如下:I(1):文件結(jié)束I(2):字符串結(jié)束S(3):字符是空格將條件與相應(yīng)的循環(huán)條件關(guān)聯(lián),并將操作按次序與相當(dāng)?shù)哪K進(jìn)行關(guān)聯(lián),按從左至右決定先后順序,關(guān)聯(lián)后的程序結(jié)構(gòu)圖⑧totalsum=totalsum+sum⑨讀入字符串⑩sum=0⒒totalsum=0⒓pointer=1⒔pointer=pointer+1設(shè)變量sum存放一行字符串中的空格數(shù);totalsum存放空停止打開(kāi)文件關(guān)閉文件打印字符串打印空格數(shù)打印空格總數(shù)sum:=sum+1totalsum:=totalsum+sum讀入字符串sum:=0totalsum:=0pointer:=1pointer:=pointer+1文件結(jié)束字符串結(jié)束字符是空格停止打開(kāi)文件關(guān)閉文件打印字符串打印空格數(shù)打印空格總數(shù)sum:JSP方法的分析和設(shè)計(jì)步驟-5第5步.把帶有操作的程序結(jié)構(gòu)圖轉(zhuǎn)換成結(jié)構(gòu)正文,同時(shí)加入選擇及迭代條件統(tǒng)計(jì)空格

seq打開(kāi)文件讀入字符串totalsum=0程序體

iteruntil文件結(jié)束

處理字符串

seq

印字符串

seq

打印字符串

印字符串

endsum=0pointer=1

分析字符串

iteruntil字符串結(jié)束

分析字符

select字符是空格

處理空格

seqsum=sum+1pointer=pointer+1

處理空格

end

分析字符

or字符不是空格

處理非空格

seqpointer=pointer+1

處理非空格

end

分析字符

end

分析字符串

end

印空格數(shù)

seq

打印空格數(shù)

印空格數(shù)

endtotalsum=totalsum+sum

讀入字符串

處理字符串

end程序體

end印空格總數(shù)

seq

打印空格總數(shù)印空格總數(shù)

end關(guān)閉文件停止統(tǒng)計(jì)空格

endJSP方法的分析和設(shè)計(jì)步驟-5第5步.把帶有操作的程序結(jié)構(gòu)圖JSP方法的特點(diǎn)簡(jiǎn)單、易學(xué)、形象直觀、可讀性好便于表示層次結(jié)構(gòu)適用于小型數(shù)據(jù)處理系統(tǒng)JSP方法的特點(diǎn)簡(jiǎn)單、易學(xué)、形象直觀、可讀性好3.6用戶(hù)界面設(shè)計(jì)

用戶(hù)界面又稱(chēng)人機(jī)界面或人機(jī)接口。用戶(hù)界面設(shè)計(jì)是軟件設(shè)計(jì)的重要組成部分。

3.6.1用戶(hù)界面設(shè)計(jì)的一般原則

①用戶(hù)熟悉原則②一致性原則③可恢復(fù)性原則

④用戶(hù)指南原則

⑤用戶(hù)差異性原則

3.6.2用戶(hù)界面設(shè)計(jì)過(guò)程

用戶(hù)界面設(shè)計(jì)是以用戶(hù)為中心,反復(fù)迭代的過(guò)程。

3.6用戶(hù)界面設(shè)計(jì)用戶(hù)界面又稱(chēng)人機(jī)界面或人用戶(hù)界面設(shè)計(jì)過(guò)程圖

分析和理解用戶(hù)活動(dòng)與最終用戶(hù)一起評(píng)價(jià)產(chǎn)生動(dòng)態(tài)設(shè)計(jì)原型紙上設(shè)計(jì)原型設(shè)計(jì)原型可執(zhí)行原型實(shí)現(xiàn)最終的用戶(hù)界面與最終用戶(hù)一起評(píng)價(jià)用戶(hù)界面設(shè)計(jì)過(guò)程圖分析和理解與最終用戶(hù)產(chǎn)生動(dòng)態(tài)紙上設(shè)計(jì)原型3.6.3用戶(hù)界面設(shè)計(jì)經(jīng)驗(yàn)

人機(jī)界面主要有5種交互方式,即菜單選擇、表單填寫(xiě)、命令語(yǔ)言、直接操縱和自然語(yǔ)言。

1.菜單選擇

l

一致性:選擇用戶(hù)熟悉的術(shù)語(yǔ)、以一致的方式使用這些術(shù)語(yǔ)。

l

簡(jiǎn)明性:

l

把關(guān)鍵詞置于菜單條名稱(chēng)的首位:

l

建立邏輯上相似的條目組:同一菜單下面每個(gè)菜單條目應(yīng)和其他條目有相似之處。3.6.3用戶(hù)界面設(shè)計(jì)經(jīng)驗(yàn)人機(jī)界面主要有5種交軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件2.表單填寫(xiě)l

使用有意義的標(biāo)題l

給出簡(jiǎn)短的可以理解的說(shuō)明l

在表單上使用邏輯序列對(duì)字段進(jìn)行邏輯排序和分組l

以視覺(jué)上有感染力的方式設(shè)計(jì)表單l

使用熟悉的字段標(biāo)簽l

使用一致的術(shù)語(yǔ)和縮寫(xiě)l

在數(shù)據(jù)輸入字段周?chē)⒎纸鏻

允許光標(biāo)方便地移動(dòng)l

允許簡(jiǎn)單的錯(cuò)誤更正l

盡可能防止錯(cuò)誤l

當(dāng)輸入無(wú)效值后能提供出錯(cuò)信息l

清楚標(biāo)出任何一個(gè)可選字段。l

給出單個(gè)字段的解釋l

清楚地用信號(hào)告知數(shù)據(jù)輸入完成

2.表單填寫(xiě)l使用有意義的標(biāo)題軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件3.命令語(yǔ)言

l

限制命令數(shù)量l

選擇有意義的獨(dú)特的命令名l

使用縮寫(xiě)要一致l

命令語(yǔ)法的結(jié)構(gòu)應(yīng)該一致l

采用提示幫助臨時(shí)用戶(hù)l

考慮用命令菜單幫助臨時(shí)用戶(hù)在繪圖系統(tǒng)中,利用關(guān)鍵詞line、brok、rect和circ作為畫(huà)直線(xiàn)、折線(xiàn)、矩形和圓的助記符,進(jìn)行識(shí)別和操作。3.命令語(yǔ)言l限制命令數(shù)量在繪圖系統(tǒng)中,利用關(guān)鍵詞lin4.直接操縱

l

使用易于理解的圖標(biāo):圖標(biāo)的意義應(yīng)該盡可能明確,一個(gè)不恰當(dāng)?shù)膱D標(biāo)不能很好地表示它的信息。l

避免令人迷惑的類(lèi)比:圖標(biāo)應(yīng)以預(yù)期的方式工作。l

不違反大眾習(xí)慣:不同的用戶(hù)群體可能對(duì)一個(gè)圖標(biāo)如何工作有不同的習(xí)慣。l

為特有的目的使用圖標(biāo)。l

仔細(xì)設(shè)計(jì)圖標(biāo)的交互。4.直接操縱l使用易于理解的圖標(biāo):圖標(biāo)的意義應(yīng)該盡可能軟件設(shè)計(jì)文檔總體設(shè)計(jì)說(shuō)明書(shū)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)參見(jiàn)實(shí)例軟件設(shè)計(jì)文檔總體設(shè)計(jì)說(shuō)明書(shū)參見(jiàn)實(shí)例本章小結(jié)

軟件設(shè)計(jì)是軟件開(kāi)發(fā)過(guò)程中用以保證質(zhì)量的關(guān)鍵步驟。軟件設(shè)計(jì)的主要任務(wù)是根據(jù)用戶(hù)需求也即需求規(guī)格說(shuō)明導(dǎo)出系統(tǒng)的實(shí)現(xiàn)方案。在進(jìn)行軟件設(shè)計(jì)時(shí)應(yīng)該遵循一些基本原則,其中最主要的原則是模塊獨(dú)立性和可重用性原則。軟件設(shè)計(jì)又分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。

總體設(shè)計(jì)將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件系統(tǒng)的總體結(jié)構(gòu)并建立接口。在傳統(tǒng)的結(jié)構(gòu)化總體設(shè)計(jì)中,利用變換分析和事務(wù)分析技術(shù)把數(shù)據(jù)流圖變換成系統(tǒng)結(jié)構(gòu)圖,這是一種面向數(shù)據(jù)流的設(shè)計(jì)方法。本章小結(jié)軟件設(shè)計(jì)是軟件開(kāi)發(fā)過(guò)程中用以保證質(zhì)量的關(guān)鍵步驟。軟本章小結(jié)詳細(xì)設(shè)計(jì)階段的任務(wù)是在總體設(shè)計(jì)的基礎(chǔ)上,確定怎樣具體地實(shí)現(xiàn)所要求的目標(biāo)系統(tǒng),也就是要為每一個(gè)模塊或?qū)ο笤O(shè)計(jì)相應(yīng)的算法和數(shù)據(jù)結(jié)構(gòu)。傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)目前已經(jīng)比較成熟和得到了廣泛的運(yùn)用。它使用的詳細(xì)設(shè)計(jì)的描述工具有程序流程圖、盒圖(N-S圖)、PAD圖、PDL語(yǔ)言、判定表和判定樹(shù)等。JSP方法是一種面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法,它的最終目標(biāo)是得出程序的過(guò)程性描述,它并不明確地提出軟件應(yīng)該劃分為模塊的概念,模塊只是設(shè)計(jì)過(guò)程中的副產(chǎn)品。

本章小結(jié)詳細(xì)設(shè)計(jì)階段的任務(wù)是在總體設(shè)計(jì)的基礎(chǔ)上,確定怎樣具體寫(xiě)在最后成功的基礎(chǔ)在于好的學(xué)習(xí)習(xí)慣Thefoundationofsuccessliesingoodhabits86寫(xiě)在最后成功的基礎(chǔ)在于好的學(xué)習(xí)習(xí)慣86謝謝聆聽(tīng)·學(xué)習(xí)就是為了達(dá)到一定目的而努力去干,是為一個(gè)目標(biāo)去戰(zhàn)勝各種困難的過(guò)程,這個(gè)過(guò)程會(huì)充滿(mǎn)壓力、痛苦和挫折LearningIsToAchieveACertainGoalAndWorkHard,IsAProcessToOvercomeVariousDifficultiesForAGoal謝謝聆聽(tīng)LearningIsToAchieveAC87第三章軟件設(shè)計(jì)

(詳細(xì)設(shè)計(jì))實(shí)用軟件工程第三章軟件設(shè)計(jì)

(詳細(xì)設(shè)計(jì))實(shí)用軟件工程第3章軟件設(shè)計(jì)軟件設(shè)計(jì)通常分為兩個(gè)階段:總體設(shè)計(jì)階段和詳細(xì)設(shè)計(jì)階段。 總體設(shè)計(jì)

詳細(xì)設(shè)計(jì)第3章軟件設(shè)計(jì)軟件設(shè)計(jì)通常分為兩個(gè)階段:總體設(shè)計(jì)階3.1軟件設(shè)計(jì)的基本任務(wù)詳細(xì)設(shè)計(jì)的基本任務(wù)

詳細(xì)設(shè)計(jì)是總體設(shè)計(jì)的進(jìn)一步的具體化,主要確定每個(gè)模塊的具體執(zhí)行過(guò)程,故也稱(chēng)為過(guò)程設(shè)計(jì)。其基本任務(wù)有:

(1).為每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì)。

(2).為模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì)。

(3).對(duì)數(shù)據(jù)庫(kù)進(jìn)行物理設(shè)計(jì)。

(4).界面設(shè)計(jì)。

(5).編寫(xiě)文檔

(6).評(píng)審3.1軟件設(shè)計(jì)的基本任務(wù)詳細(xì)設(shè)計(jì)的基本任務(wù)第6章:詳細(xì)設(shè)計(jì)確定如何具體實(shí)現(xiàn)所要求的系統(tǒng)。不是具體編寫(xiě)程序,而是設(shè)計(jì)程序的“藍(lán)圖”。詳細(xì)設(shè)計(jì)的結(jié)果決定最終程序代碼的質(zhì)量。不僅在邏輯上正確地實(shí)現(xiàn)每個(gè)模塊的功能,更重要的設(shè)計(jì)出的處理過(guò)程應(yīng)該盡可能簡(jiǎn)明易懂。3.4.1詳細(xì)設(shè)計(jì)的目標(biāo):3.4詳細(xì)設(shè)計(jì)第6章:詳細(xì)設(shè)計(jì)確定如何具體實(shí)現(xiàn)所要求的系統(tǒng)。3.4.2結(jié)構(gòu)程序設(shè)計(jì):一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。

3.4詳細(xì)設(shè)計(jì)3.4.2結(jié)構(gòu)程序設(shè)計(jì):3.4詳細(xì)設(shè)計(jì)使用結(jié)構(gòu)程序設(shè)計(jì)技術(shù)的好處:1)提高軟件開(kāi)發(fā)工程的成功率和生產(chǎn)率;2)系統(tǒng)有清晰的層次結(jié)構(gòu),容易閱讀理解;3)單入口單出口的控制結(jié)構(gòu),容易診斷糾正;4)模塊化可以使得軟件可以重用;5)程序邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。3.4詳細(xì)設(shè)計(jì)使用結(jié)構(gòu)程序設(shè)計(jì)技術(shù)的好處:3.4詳細(xì)設(shè)計(jì)經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):只允許使用順序、IF_THEN_ELSE選擇和DO_WHILE循環(huán);擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):除了三種基本控制結(jié)構(gòu),還使用DO_CASE和DO_UNTIL循環(huán);修正的結(jié)構(gòu)程序設(shè)計(jì):除了三種基本控制結(jié)構(gòu)和兩種擴(kuò)充結(jié)構(gòu),還使用BREAK等結(jié)構(gòu)。經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):只允許使用順序、IF_THEN_ELSE1)順序結(jié)構(gòu):相當(dāng)于“A、B”3.4.3三種基本控制結(jié)構(gòu)AB(a)順序結(jié)構(gòu)1)順序結(jié)構(gòu):相當(dāng)于“A、B”3.4.3三種基本控制結(jié)2)選擇結(jié)構(gòu)相當(dāng)于“IfexpthenAelseBendif”ABexp(b)選擇結(jié)構(gòu)2)選擇結(jié)構(gòu)ABexp(b)選擇結(jié)構(gòu)3)循環(huán)結(jié)構(gòu):相當(dāng)于“WhileexpdoA”A(c)循環(huán)結(jié)構(gòu)exp3)循環(huán)結(jié)構(gòu):相當(dāng)于“WhileexpdoA”1)多分支結(jié)構(gòu)相當(dāng)于“CaseIofI=1:C1;I=2:C2;I=3:C3;…;I=n:Cn”3.

擴(kuò)充兩種控制結(jié)構(gòu)

CnC3C1C2(d)多分支結(jié)構(gòu)I=?…1)多分支結(jié)構(gòu)3.擴(kuò)充兩種控制結(jié)構(gòu)CnC3C1C2(d)2)UNTIL循環(huán)結(jié)構(gòu)相當(dāng)于“RepeatAUntilexp”A(e)UNTIL循環(huán)exp2)UNTIL循環(huán)結(jié)構(gòu)A(e)UNTIL循環(huán)exp(1)程序流程圖

程序流程圖:是一種描述程序的控制結(jié)構(gòu)流程和指令執(zhí)行情況的有向圖。歷史悠久、使用廣泛、直觀描繪控制流程、便于初學(xué)者掌握。3.4.4詳細(xì)設(shè)計(jì)時(shí)使用的工具(1)程序流程圖程序流程圖:是一種描述程序的控制ASP檢索程序流程圖:記錄集末端?記數(shù)變量加1,輸出記錄字段值及圖像轉(zhuǎn)跳下一記錄關(guān)閉數(shù)據(jù)庫(kù)鏈接對(duì)象、記錄集對(duì)象,并釋放資源輸出記錄數(shù)和提示結(jié)束YN開(kāi)始加載Include文件定義記數(shù)變量、作物變量創(chuàng)建數(shù)據(jù)庫(kù)鏈接對(duì)象、記錄集對(duì)象打開(kāi)數(shù)據(jù)庫(kù)用客戶(hù)提交的值對(duì)作物變量賦值SQL查詢(xún)語(yǔ)句賦值通過(guò)記錄集對(duì)象打開(kāi)SQL語(yǔ)句設(shè)定的記錄ASP檢索程序流程圖:記錄集末端?記數(shù)變量加1,輸出記錄字段2)程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制。3)程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。程序流程圖的缺點(diǎn):1)程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過(guò)早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。2)程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可由Nassi和Shneiderman開(kāi)發(fā)了另一種圖形化設(shè)計(jì)工具,它的目標(biāo)是保證結(jié)構(gòu)化程序設(shè)計(jì),這種圖形工具叫做盒狀圖,或稱(chēng)為N—S圖。盒圖的特點(diǎn):(1)功能域(即一個(gè)特定控制結(jié)構(gòu)的作用域)明確,很容易從盒圖上看出。(2)不可能任意轉(zhuǎn)移控制(3)很容易確定局部和全程數(shù)據(jù)的作用域(4)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)(5)盒圖沒(méi)有箭頭,不可以隨意轉(zhuǎn)移控制,不允許違背程序設(shè)計(jì)的原則。

(2)盒圖(N-S圖)

由Nassi和Shneiderman開(kāi)發(fā)了另一種圖形化設(shè)計(jì)工盒圖(N-S圖)在NS圖中,每個(gè)“處理步驟”是用一個(gè)盒子表示的,所謂“處理步驟”可以是語(yǔ)句或語(yǔ)句序列。需要時(shí),盒子中還可以嵌套另一個(gè)盒子,嵌套深度一般沒(méi)有限制,只要整張圖在一頁(yè)紙上能容納得下,由于只能從上邊進(jìn)入盒子然后從下邊走出,除此之外沒(méi)有其他的入口和出口,所以,NS圖限制了隨意的控制轉(zhuǎn)移,保證了程序的良好結(jié)構(gòu)。盒圖(N-S圖)在NS圖中,每個(gè)“處理步驟”是用一個(gè)盒子表盒圖(N-S圖)ABC條件FTElseBThenACase條件Case1ACase2B…CasenN循環(huán)條件循環(huán)條件Do-While部分Do-Until部分Aa.順序結(jié)構(gòu)b.選擇結(jié)構(gòu)c.多分支結(jié)構(gòu)d.當(dāng)型循環(huán)結(jié)構(gòu)e.直到型循環(huán)結(jié)構(gòu)f.調(diào)用子程序A圖3.4盒圖的基本符號(hào)盒圖(N-S圖)ABC條件FTElseThenCaseFTBCDACase1E2F3G4HA:盒圖例子FTBCDACase1234A:盒圖例子

PAD(ProblemAnalysisDiagram)是問(wèn)題分析圖。日立公司發(fā)明和推廣(1973)。(3)PAD圖PAD(ProblemAnalysisDP1P2WHILECUNTILCPPP2P1CP1P2Pn…X=L1L2Lndefa.順序結(jié)構(gòu)b.當(dāng)型循環(huán)結(jié)構(gòu)c.直到型循環(huán)結(jié)構(gòu)d.選擇結(jié)構(gòu)e.多分支結(jié)構(gòu)f.語(yǔ)句標(biāo)號(hào)g.定義PAD圖的基本符號(hào)P1P2WHILECUNTILCPPP2P1CP1P例子:

例子:例子:

P1P2UNTILC2P7P4P3Cdefa.初始的PAD圖

PAD圖例子b.使用def符號(hào)細(xì)化處理框P2P5P2P8C1UNTILC2P9P10P6例子:P1P2UNTILC2P7P4P3Cdefa.初將盒圖轉(zhuǎn)換為PAD圖將盒圖轉(zhuǎn)換為PAD圖軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件PAD圖的優(yōu)點(diǎn):1)使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號(hào)所設(shè)計(jì)出來(lái)的程序必然是結(jié)構(gòu)化程序;2)PAD圖所描繪的程序結(jié)構(gòu)十分清晰。圖中最左面的豎線(xiàn)是程序的主線(xiàn),即第一層結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾樱琍AD圖逐漸向右延伸,每增加一個(gè)層次,圖形向右擴(kuò)展一條豎線(xiàn)。PAD圖中豎線(xiàn)的總條數(shù)就是程序的層次數(shù);PAD圖的優(yōu)點(diǎn):3)用PAD圖表現(xiàn)程序,通俗易懂,程序從圖中最左豎線(xiàn)上端的結(jié)點(diǎn)開(kāi)始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有結(jié)點(diǎn);4)容易將PAD圖轉(zhuǎn)換成高級(jí)語(yǔ)言源程序,這種轉(zhuǎn)換可以用軟件工具自動(dòng)完成;5)可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu);6)PAD圖的符號(hào)支持自頂向下、逐步求精的方法。3)用PAD圖表現(xiàn)程序,通俗易懂,程序從圖中最左豎線(xiàn)上端的結(jié)判定表由四部分組成:左上部列出所有條件左下部是所有可能做的動(dòng)作右上部表示各種條件組合右下部是和每種條件組合相對(duì)應(yīng)的動(dòng)作

(4)判定表當(dāng)模塊中包含復(fù)雜的條件組合,并要根據(jù)這些條件的組合選擇動(dòng)作時(shí),只有判定表和判定樹(shù)能夠清晰地表達(dá)出復(fù)雜的條件組合與各種動(dòng)作之間的對(duì)應(yīng)關(guān)系。判定表的每一列可解釋為一條處理規(guī)則

判定表由四部分組成:(4)判定表當(dāng)模塊中包含復(fù)雜的條件組合

12345教授

TFFF副教授

FTFF講師

FFTF助教

FFFT講座TFFFF50×

30

×

25

×

20

×

15

×例:某校制定了教師的講課課時(shí)津貼標(biāo)準(zhǔn)。對(duì)于各種性質(zhì)的講座,無(wú)論教師是什么職稱(chēng),每課時(shí)津貼費(fèi)一律是50元;而對(duì)于一般的授課,則根據(jù)教師的職稱(chēng)來(lái)決定每課時(shí)津貼費(fèi):教授30元,副教授25元,講師20元,助教15元。

12345教授

TFFF副教授

FTFF講師

FFTF助教

123456789國(guó)內(nèi)乘客

TTTTFFFF頭等艙

TFTFTFTF殘疾乘客

FFTTFFTT行李重量W≤30

TFFFFFFFF

免費(fèi)

×

(W-30)×2

×

(W-30)×3

×

(W-30)×4

×

×

(W-30)×6

×

×(W-30)×8

×

(W-30)×12

×

乘飛機(jī)時(shí)能夠攜帶的行李的重量與收費(fèi)的關(guān)系

123456789國(guó)內(nèi)乘客

TTTTFFFF頭等艙

(5)判定樹(shù)是判定表的變種,也能清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系。判定樹(shù)的優(yōu)點(diǎn):形式簡(jiǎn)單,直觀明了,易于掌握。判定樹(shù)的缺點(diǎn):①存在著數(shù)據(jù)冗余的問(wèn)題,相同的數(shù)據(jù)元素往往要重復(fù)多次,而且越接近樹(shù)的葉端重復(fù)的次數(shù)越多。②判定樹(shù)要求對(duì)條件進(jìn)行層次劃分,若條件所處層次不對(duì),可能會(huì)導(dǎo)致增加判定樹(shù)的復(fù)雜性。(5)判定樹(shù)是判定表的變種,也能清晰地表示復(fù)雜的條件組合與判定樹(shù)判定樹(shù)是判定表的變種。行李重量W>30行李重量W≤30國(guó)內(nèi)乘客外國(guó)乘客頭等艙其他艙頭等艙其他艙殘疾乘客正常乘客殘疾乘客正常乘客殘疾乘客正常乘客殘疾乘客正常乘客(W-30)×2(W-30)×4(W-30)×3(W-30)×6(W-30)×4(W-30)×8(W-30)×6(W-30)×12免費(fèi)用判定樹(shù)表示計(jì)算行李費(fèi)的算法行李費(fèi)算法判定樹(shù)行李重量W>30行李重量W≤30國(guó)內(nèi)乘客外國(guó)乘客頭等艙過(guò)程設(shè)計(jì)語(yǔ)言(PDL)也稱(chēng)為結(jié)構(gòu)化的英語(yǔ)或偽碼,它是一種混合語(yǔ)言,通常采用英語(yǔ)(或中文)的詞匯,采用某種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言的語(yǔ)法。如:ifI>0then

執(zhí)行訂單數(shù)據(jù)輸入模塊

else

報(bào)告出錯(cuò)信息

endif3.4.6過(guò)程設(shè)計(jì)語(yǔ)言(PDL)過(guò)程設(shè)計(jì)語(yǔ)言(PDL)也稱(chēng)為結(jié)構(gòu)化的英語(yǔ)或偽碼,它是一種混合PDL的優(yōu)點(diǎn):1)可以作為注釋直接插在源程序中間;2)可以使用普通的正文編輯程序或文字處理系統(tǒng)來(lái)完成PDL的書(shū)寫(xiě)和編輯工作;3)現(xiàn)在已經(jīng)有一些自動(dòng)處理程序可以自動(dòng)地把PDL生成程序代碼。PDL的缺點(diǎn):不如圖形工具形象直觀。PDL的優(yōu)點(diǎn):PDL的缺點(diǎn):不如圖形工具形象直觀。購(gòu)書(shū)單學(xué)生學(xué)生教材購(gòu)銷(xiāo)系統(tǒng)進(jìn)書(shū)通知領(lǐng)書(shū)單缺書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的頂層DFD實(shí)例1:教材購(gòu)銷(xiāo)系統(tǒng)的設(shè)計(jì)購(gòu)書(shū)單進(jìn)書(shū)通知領(lǐng)書(shū)單缺書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的頂層DFD實(shí)例1:通過(guò)前一章結(jié)構(gòu)化分析,已獲得教材購(gòu)銷(xiāo)系統(tǒng)第三層的兩張DFD圖,即銷(xiāo)售子系統(tǒng)DFD圖和采購(gòu)子系統(tǒng)DFD圖。用結(jié)構(gòu)化設(shè)計(jì)方法,從上述兩張DFD圖導(dǎo)出教材,購(gòu)銷(xiāo)系統(tǒng)的總體結(jié)構(gòu)圖,包括初始終的SC圖和按改進(jìn)規(guī)則進(jìn)行修改后的最終SC圖。通過(guò)前一章結(jié)構(gòu)化分析,已獲得教材購(gòu)銷(xiāo)系統(tǒng)第三層的兩張DFD圖進(jìn)書(shū)通知購(gòu)書(shū)單進(jìn)書(shū)通知領(lǐng)書(shū)單缺書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的0層DFD學(xué)生學(xué)生1銷(xiāo)售2采購(gòu)F2缺書(shū)登記表F1教材存量表進(jìn)書(shū)通知購(gòu)書(shū)單進(jìn)書(shū)通知領(lǐng)書(shū)單缺書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的0層DFD學(xué)發(fā)票發(fā)票暫缺書(shū)單領(lǐng)書(shū)單有效購(gòu)書(shū)單購(gòu)書(shū)單進(jìn)書(shū)通知無(wú)效書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的1層DFD-銷(xiāo)售子系統(tǒng)學(xué)生學(xué)生F2缺書(shū)登記表F1教材存量表1.5登記缺書(shū)F4售書(shū)登記表F3學(xué)生用書(shū)表1.6產(chǎn)生補(bǔ)書(shū)單1.1審查有效性1.2開(kāi)發(fā)票1.3打印發(fā)票1.4登記售書(shū)打印書(shū)單采購(gòu)補(bǔ)售書(shū)單發(fā)票發(fā)票暫缺書(shū)單領(lǐng)書(shū)單有效購(gòu)書(shū)單進(jìn)書(shū)通知無(wú)效書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)教材購(gòu)銷(xiāo)系統(tǒng)的1層DFD-采購(gòu)子系統(tǒng)進(jìn)書(shū)通知進(jìn)書(shū)通知銷(xiāo)售保管員2.3修改庫(kù)存與待購(gòu)量F1教材存量表F2缺書(shū)登記表F6教材一覽表2.1按書(shū)號(hào)匯總?cè)睍?shū)2.2按出版社統(tǒng)計(jì)缺書(shū)F5待購(gòu)教材表缺書(shū)單教材購(gòu)銷(xiāo)系統(tǒng)的1層DFD-采購(gòu)子系統(tǒng)進(jìn)書(shū)通知進(jìn)書(shū)通知銷(xiāo)售1.1審查購(gòu)書(shū)單有效性學(xué)生購(gòu)書(shū)單領(lǐng)書(shū)單發(fā)票F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知1.2開(kāi)發(fā)票1.3打印發(fā)票1.4登記售書(shū)1.5登記缺書(shū)1.6產(chǎn)生補(bǔ)售書(shū)單采購(gòu)有效購(gòu)書(shū)單F3學(xué)生用書(shū)表F4售書(shū)登記表發(fā)票學(xué)生暫缺書(shū)單補(bǔ)售書(shū)單1.7開(kāi)領(lǐng)書(shū)單第一步:細(xì)化并修改DFD圖。修改后銷(xiāo)售子系統(tǒng)DFD圖無(wú)效購(gòu)書(shū)單1.1學(xué)購(gòu)書(shū)單領(lǐng)書(shū)單發(fā)票F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知1軟件設(shè)計(jì)銷(xiāo)售F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知2.3修改教材庫(kù)存和待購(gòu)量2.2按出版社統(tǒng)計(jì)缺書(shū)2.1按書(shū)號(hào)匯總?cè)睍?shū)F5待購(gòu)教材表F6教材一覽表書(shū)庫(kù)保管員缺書(shū)單進(jìn)書(shū)通知F7進(jìn)書(shū)登記表修改后采購(gòu)子系統(tǒng)DFD圖軟件設(shè)計(jì)銷(xiāo)F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知2.32.22.軟件設(shè)計(jì)第二步:鑒別DFD圖的類(lèi)別。1.1審查購(gòu)書(shū)單有效性學(xué)生購(gòu)書(shū)單領(lǐng)書(shū)單發(fā)票F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知1.2開(kāi)發(fā)票1.3打印發(fā)票1.4登記售書(shū)1.5登記缺書(shū)1.6產(chǎn)生補(bǔ)售書(shū)單采購(gòu)有效購(gòu)書(shū)單F3學(xué)生用書(shū)表F4售書(shū)登記表發(fā)票學(xué)生暫缺書(shū)單補(bǔ)售書(shū)單1.7開(kāi)領(lǐng)書(shū)單修改后銷(xiāo)售子系統(tǒng)DFD圖加工1.1用于出售,產(chǎn)生數(shù)據(jù)流“有效購(gòu)書(shū)單”。加工1.6用于補(bǔ)售,產(chǎn)生傳入數(shù)據(jù)流“補(bǔ)售書(shū)單”。一次售書(shū)只能執(zhí)行一種功能,要么出售,要么補(bǔ)售。因此,數(shù)據(jù)流“有效書(shū)單”和“補(bǔ)售書(shū)單”不能同時(shí)出現(xiàn)。所以,該DFD圖屬于事務(wù)型結(jié)構(gòu)。無(wú)效購(gòu)書(shū)單軟件設(shè)計(jì)第二步:鑒別DFD圖的類(lèi)別。1.1學(xué)購(gòu)書(shū)單領(lǐng)書(shū)單發(fā)票軟件設(shè)計(jì)銷(xiāo)售F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知2.3修改教材庫(kù)存和待購(gòu)量2.2按出版社統(tǒng)計(jì)缺書(shū)2.1按書(shū)號(hào)匯總?cè)睍?shū)F5待購(gòu)教材表F6教材一覽表書(shū)庫(kù)保管員缺書(shū)單進(jìn)書(shū)通知F7進(jìn)書(shū)登記表該DFD圖屬于事務(wù)型結(jié)構(gòu)軟件設(shè)計(jì)銷(xiāo)F1教材存量表F2缺書(shū)登記進(jìn)書(shū)通知2.32.22.軟件設(shè)計(jì)教材購(gòu)銷(xiāo)系統(tǒng)讀出用戶(hù)選擇銷(xiāo)售采購(gòu)用戶(hù)命令銷(xiāo)售命令采購(gòu)命令教材購(gòu)銷(xiāo)系統(tǒng)SC框架初售補(bǔ)售初售命令補(bǔ)售命令統(tǒng)計(jì)缺書(shū)登記進(jìn)書(shū)統(tǒng)計(jì)命令登記命令第三步:畫(huà)出SC圖框架。軟件設(shè)計(jì)教材購(gòu)銷(xiāo)系統(tǒng)讀出用戶(hù)選擇銷(xiāo)售采購(gòu)用戶(hù)命令銷(xiāo)售命令采購(gòu)軟件設(shè)計(jì)第四步:分解動(dòng)作分支、補(bǔ)充動(dòng)作層與細(xì)節(jié)層。采購(gòu)統(tǒng)計(jì)缺書(shū)登記進(jìn)書(shū)按書(shū)號(hào)匯總?cè)睍?shū)按出版社統(tǒng)計(jì)缺書(shū)打印缺書(shū)單修改教材待購(gòu)量修改教材庫(kù)存量統(tǒng)計(jì)命令缺書(shū)登記表待購(gòu)教材表待購(gòu)教材表缺書(shū)單缺書(shū)單進(jìn)書(shū)通知進(jìn)書(shū)通知登記命令缺書(shū)單采購(gòu)子系統(tǒng)初始SC圖軟件設(shè)計(jì)第四步:分解動(dòng)作分支、補(bǔ)充動(dòng)作層與細(xì)節(jié)層。采購(gòu)統(tǒng)計(jì)缺軟件設(shè)計(jì)銷(xiāo)售初售補(bǔ)售獲取購(gòu)書(shū)單有效性開(kāi)發(fā)票開(kāi)領(lǐng)書(shū)單打印發(fā)票獲取補(bǔ)售書(shū)單登記缺書(shū)審查購(gòu)書(shū)單有效性讀購(gòu)書(shū)單讀進(jìn)書(shū)通知初售命令補(bǔ)售命令有效購(gòu)書(shū)單有效購(gòu)書(shū)單購(gòu)書(shū)單有效購(gòu)書(shū)單發(fā)票暫缺書(shū)單發(fā)票補(bǔ)售書(shū)單領(lǐng)書(shū)單領(lǐng)書(shū)單補(bǔ)售書(shū)單進(jìn)書(shū)通知銷(xiāo)售子系統(tǒng)初始SC圖登記售書(shū)發(fā)票軟件設(shè)計(jì)銷(xiāo)售初售補(bǔ)售獲取購(gòu)書(shū)單開(kāi)發(fā)票開(kāi)領(lǐng)書(shū)單打印發(fā)票獲取補(bǔ)售詳細(xì)設(shè)計(jì)示例現(xiàn)在仍以“教材購(gòu)銷(xiāo)系統(tǒng)”中的部分模塊作例子,說(shuō)明怎樣根據(jù)前面介紹的方法來(lái)進(jìn)行模塊設(shè)計(jì),編碼的實(shí)質(zhì)相當(dāng)于“翻譯”,工作比較簡(jiǎn)單,就不另說(shuō)明了。第一步:寫(xiě)出模塊說(shuō)明。第二步:將模塊說(shuō)明細(xì)化為詳細(xì)邏輯

詳細(xì)設(shè)計(jì)示例軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件軟件設(shè)計(jì)(詳細(xì)設(shè)計(jì))課件3.5Jackson方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)是由英國(guó)人M?Jackson首先提出和倡導(dǎo)的,所以又稱(chēng)為Jackson程序設(shè)計(jì)方法(簡(jiǎn)稱(chēng)JSP)。該方法的基本思想是使程序結(jié)構(gòu)與問(wèn)題結(jié)構(gòu)相對(duì)應(yīng),即與數(shù)據(jù)結(jié)構(gòu)相對(duì)應(yīng)。因此它按輸入輸出以及內(nèi)部存儲(chǔ)信息的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì),把數(shù)據(jù)結(jié)構(gòu)的描述變換為對(duì)程序結(jié)構(gòu)的描述,有時(shí)也稱(chēng)為結(jié)構(gòu)數(shù)據(jù)設(shè)計(jì)方法。3.5Jackson方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)是Jackson方法的特點(diǎn)和目標(biāo)J總結(jié)了COBOL事務(wù)處理程序中的開(kāi)發(fā)方法而發(fā)展起來(lái)的,特點(diǎn):重點(diǎn)不是自頂向下逐步求精,而是在數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上進(jìn)行構(gòu)造根據(jù)輸入/輸出的數(shù)據(jù)結(jié)構(gòu)建立程序結(jié)構(gòu)目標(biāo):獲得簡(jiǎn)單清晰的設(shè)計(jì)方案Jackson方法的特點(diǎn)和目標(biāo)J總結(jié)了COBOL事務(wù)處理程Jackson結(jié)構(gòu)程序設(shè)計(jì)方法由五個(gè)步驟組成:1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu);2)找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元;Jackson結(jié)構(gòu)程序設(shè)計(jì)方法由五個(gè)步驟組成:3)用三條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖:A.為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫(huà)一個(gè)處理框;B.根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫(huà)上對(duì)應(yīng)的處理框;C.根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫(huà)上對(duì)應(yīng)的處理框;3)用三條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)4)列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置;5)用偽碼表示程序。4)列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把

Jackson為了表達(dá)程序中使用的數(shù)據(jù)結(jié)構(gòu),使用了與程序結(jié)構(gòu)相同的三種基本結(jié)構(gòu)形式,即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)。使用這三種基本的數(shù)據(jù)結(jié)構(gòu)表達(dá)方法,可以形成更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。

ABCDABCD

S(i)AB—

S(i)AB*I(i)Jackson為了表達(dá)程序中使用的數(shù)據(jù)結(jié)構(gòu),使用Jackson圖和描繪軟件結(jié)構(gòu)的層次圖非常相似,但兩者表示的含義有本質(zhì)的不同。層次圖中的一個(gè)方框通常代表一個(gè)模塊,模塊上下級(jí)之間表示的是調(diào)用關(guān)系,通常一個(gè)模塊除了調(diào)用下級(jí)模塊外,還完成其他操作;而Jackson圖表示的是組成關(guān)系,在描繪程序結(jié)構(gòu)時(shí),一個(gè)方框并不代表一個(gè)模塊,通常一個(gè)方框只代表幾個(gè)語(yǔ)句,上層方框中包括的操作僅僅由它下層框中的那些操作組成。

Jackson圖和描繪軟件結(jié)構(gòu)的層次圖非常相似,但兩者表示的Jackson圖解邏輯中的關(guān)鍵字與順序結(jié)構(gòu)相對(duì)應(yīng)的Jackson圖解邏輯,使用‘seq’和‘end’關(guān)鍵字。與選擇結(jié)構(gòu)相對(duì)應(yīng)的Jackson圖解邏輯,使用‘select’、‘or’和‘end’是關(guān)鍵字,其中cond1、cond2和cond3分別是執(zhí)行B、C或D的條件:與重復(fù)結(jié)構(gòu)相對(duì)應(yīng)的Jackson圖解邏輯,使用‘iter’、‘until’、‘while’和‘end’是關(guān)鍵字,其中cond是條件:Jackson圖解邏輯中的關(guān)鍵字與順序結(jié)構(gòu)相對(duì)應(yīng)的Jacks順序結(jié)構(gòu):AseqBCDAend與三種基本結(jié)構(gòu)對(duì)應(yīng)的偽碼是:選擇結(jié)構(gòu)Aselectcond1BAorcond2CAorcond3DAend重復(fù)結(jié)構(gòu)Aiteruntil(或while)condBAend順序結(jié)構(gòu):與三種基本結(jié)構(gòu)對(duì)應(yīng)的偽碼是:選擇結(jié)構(gòu)重復(fù)結(jié)構(gòu)示例:打印表格程序的輸出數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的程序結(jié)構(gòu)示例:打印表格程序的輸出數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的程序結(jié)構(gòu)例:一個(gè)正文文件由若干記錄組成,每個(gè)記錄是一個(gè)字符串。如:Record1:Howmanystagesarethereinthetraditionalsoftwaredevelopmentmodel?Record2:Afterenteringtheroom,walktothepersonsittingnearesttoyouandgreethim/herwitha“highfive”.Record3:Whatareencapsulatedintoanobject?Record4:Whatdiagramisthefollowingdiagram?Simplydescribethemeaningofit.

實(shí)例2:例:一個(gè)正文文件由若干記錄組成,每個(gè)記錄是一個(gè)字符串。實(shí)例2要求:1)設(shè)計(jì)程序統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),輸出數(shù)據(jù)的格式是,每讀入一個(gè)記錄(字符串)之后,另起一行打印出這個(gè)字符串及其空格數(shù);Record1:Howmanystagesarethereinthetraditionalsoftwaredevelopmentmodel?ThenumberofBlankis12

2)最后打印出文件中空格的總個(gè)數(shù)。

要求:JSP方法的分析和設(shè)計(jì)步驟-1第1步.分析并確定輸入和輸出數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu),并用Jackson圖畫(huà)出JSP方法的分析和設(shè)計(jì)步驟-1第1步.分析并確定輸入和輸出數(shù)JSP方法的分析和設(shè)計(jì)步驟-2第2步.找出輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)元素有對(duì)應(yīng)關(guān)系是指有直接因果關(guān)系,即在程序中可以同時(shí)處理的數(shù)據(jù)元素對(duì)于表示“重復(fù)”的數(shù)據(jù)元素,只有其重復(fù)次數(shù)和次序都相同時(shí)才有對(duì)應(yīng)關(guān)系輸入/輸出數(shù)據(jù)結(jié)構(gòu)最高層次的兩個(gè)數(shù)據(jù)元素總是有對(duì)應(yīng)關(guān)系的JSP方法的分析和設(shè)計(jì)步驟-2第2步.找出輸入數(shù)據(jù)結(jié)構(gòu)與輸出JSP方法的分析和設(shè)計(jì)步驟-3第3步.從描述數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描述程序結(jié)構(gòu)的Jackson圖,導(dǎo)出規(guī)則:有對(duì)應(yīng)關(guān)系的數(shù)據(jù)元素,按照它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次上畫(huà)一個(gè)處理框(如果它們?cè)谳斎牒洼敵鰣D中的層次不同,則程序結(jié)構(gòu)圖中處理框?qū)哟闻c較低的那個(gè)對(duì)應(yīng)為輸入數(shù)據(jù)結(jié)構(gòu)圖中剩余的每個(gè)數(shù)據(jù)元素,在程序結(jié)構(gòu)圖的相應(yīng)層次上畫(huà)一個(gè)處理框,在模塊名稱(chēng)上增加“分析”或“處理”或取一個(gè)具有實(shí)際含義的名稱(chēng)為輸出數(shù)據(jù)結(jié)構(gòu)圖中剩余的每個(gè)數(shù)據(jù)元素,在程序結(jié)構(gòu)圖的相應(yīng)層次上畫(huà)上一個(gè)處理框JSP方法的分析和設(shè)計(jì)步驟-3第3步.從描述數(shù)據(jù)結(jié)構(gòu)的Jac程序結(jié)構(gòu)圖導(dǎo)出結(jié)果程序結(jié)構(gòu)圖導(dǎo)出結(jié)果JSP方法的分析和設(shè)計(jì)步驟-4第4步.列出所有操作和條件,并將它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置首先從輸出操作開(kāi)始,再回到輸入操作加入必須的與條件有關(guān)的操作最后把每個(gè)操作都分配到程序結(jié)構(gòu)中去JSP方法的分析和設(shè)計(jì)步驟-4第4步.列出所有操作和條件,并設(shè)變量sum存放一行字符串中的空格數(shù);totalsum存放空格總數(shù);pointer用來(lái)指示當(dāng)前分析的字符在字符串中的位置,可列出其所有操作,并對(duì)其編號(hào)如下:①停止②打開(kāi)文件③關(guān)閉文件④打印字符串⑤打印空格數(shù)⑥打印空格總數(shù)⑦sum=sum+1條件列表如下:I(1):文件結(jié)束I(2):字符串結(jié)束S(3):字符是空格將條件與相應(yīng)的循環(huán)條件關(guān)聯(lián),并將操作按次序與相當(dāng)?shù)哪K進(jìn)行關(guān)聯(lián),按從左至右決定先后順序,關(guān)聯(lián)后的程序結(jié)構(gòu)圖⑧totalsum=totalsum+sum⑨讀入字符串⑩sum=0⒒totalsum=0⒓pointer=1⒔pointer=pointer+1設(shè)變量sum存放一行字符串中的空格數(shù);totalsum存放空停止打開(kāi)文件關(guān)閉文件打印字符串打印空格數(shù)打印空格總數(shù)sum:=sum+1totalsum:=totalsum+sum讀入字符串sum:=0totalsum:=0pointer:=1pointer:=pointer+1文件結(jié)束字符串結(jié)束字符是空格停止打開(kāi)文件關(guān)閉文件打印字符串打印空格數(shù)打印空格總數(shù)sum:JSP方法的分析和設(shè)計(jì)步驟-5第5步.把帶有操作的程序結(jié)構(gòu)圖轉(zhuǎn)換成結(jié)構(gòu)正文,同時(shí)加入選擇及迭代條件統(tǒng)計(jì)空格

seq打開(kāi)文件讀入字符串totalsum=0程序體

iteruntil文件結(jié)束

處理字符串

seq

印字符串

seq

打印字符串

印字符串

endsum=0

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論