結(jié)構(gòu)化設(shè)計(jì)方法課件_第1頁
結(jié)構(gòu)化設(shè)計(jì)方法課件_第2頁
結(jié)構(gòu)化設(shè)計(jì)方法課件_第3頁
結(jié)構(gòu)化設(shè)計(jì)方法課件_第4頁
結(jié)構(gòu)化設(shè)計(jì)方法課件_第5頁
已閱讀5頁,還剩149頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

引言結(jié)構(gòu)化開發(fā)方法(StructuredDevelopingMethod)

是現(xiàn)有的軟件開發(fā)方法中最成熟,應(yīng)用最廣泛的方法,主要特點(diǎn)是快速、自然和方便。結(jié)構(gòu)化開發(fā)方法由結(jié)構(gòu)化分析方法(SA法)、結(jié)構(gòu)化設(shè)計(jì)方法(SD法)及結(jié)構(gòu)化程序設(shè)計(jì)方法(SP法)構(gòu)成的。

結(jié)構(gòu)化設(shè)計(jì)方法(SD法StructuredDesign)是結(jié)構(gòu)化開發(fā)方法的核心,與SA法,SP法密切聯(lián)系,主要完成軟件系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)。面向數(shù)據(jù)流的設(shè)計(jì)方法又稱結(jié)構(gòu)化設(shè)計(jì)。結(jié)構(gòu)化設(shè)計(jì)方法課件1傳統(tǒng)的結(jié)構(gòu)化軟件設(shè)計(jì)有兩種基本方法:(1)面向行為的設(shè)計(jì)如:面向數(shù)據(jù)流的設(shè)計(jì)方法基于數(shù)據(jù)處理過程建立軟件結(jié)構(gòu),也稱為結(jié)構(gòu)化設(shè)計(jì)方法(SD)。(2)面向數(shù)據(jù)的設(shè)計(jì)如:Jackson(JSD)設(shè)計(jì)方法基于輸入/輸出數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)軟件結(jié)構(gòu)。傳統(tǒng)的結(jié)構(gòu)化軟件設(shè)計(jì)有兩種基本方法:2

結(jié)構(gòu)化設(shè)計(jì)方法概述設(shè)計(jì)先于編碼”,這是軟件工程“推遲實(shí)現(xiàn)”基本原則的又一體現(xiàn)。結(jié)構(gòu)化設(shè)計(jì)方法(StructuredDesign,SD)是基于模塊化、自頂向下細(xì)化、結(jié)構(gòu)化程序設(shè)計(jì)等程序設(shè)計(jì)技術(shù)基礎(chǔ)上發(fā)展起來的。結(jié)構(gòu)化設(shè)計(jì)方法用模塊結(jié)構(gòu)圖來表達(dá)程序模塊之間的關(guān)系。軟件設(shè)計(jì)分為兩個(gè)階段:概要設(shè)計(jì)詳細(xì)設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)方法概述設(shè)計(jì)先于編碼”,這是軟件工程“推遲實(shí)現(xiàn)”3概要設(shè)計(jì)概要設(shè)計(jì)也稱總體設(shè)計(jì),確定軟件的結(jié)構(gòu)以及各組成成分(子系統(tǒng)或模塊)之間的相互關(guān)系。概要設(shè)計(jì)的主要任務(wù)是:將系統(tǒng)劃分成模塊;決定每個(gè)模塊的功能;決定模塊的調(diào)用關(guān)系;決定模塊的界面,即模塊間傳遞的數(shù)據(jù)。概要設(shè)計(jì)階段的主要任務(wù)是通過數(shù)據(jù)流圖來確定系統(tǒng)的結(jié)構(gòu)圖,并且對這些結(jié)構(gòu)圖進(jìn)行分析和細(xì)化。在概要設(shè)計(jì)階段,結(jié)構(gòu)化設(shè)計(jì)主要采用面向數(shù)據(jù)流的設(shè)計(jì)方法。概要設(shè)計(jì)概要設(shè)計(jì)也稱總體設(shè)計(jì),確定軟件的結(jié)構(gòu)以及各組成成分(4詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)就是在概要設(shè)計(jì)的基礎(chǔ)上決定如何具體實(shí)現(xiàn)各模塊的內(nèi)部細(xì)節(jié),直到對系統(tǒng)中的每個(gè)模塊給出足夠詳細(xì)的過程描述。在編碼實(shí)現(xiàn)階段就可以完全按照詳細(xì)設(shè)計(jì)的細(xì)節(jié)過程來映射到代碼,最終實(shí)現(xiàn)整個(gè)系統(tǒng)。一般使用結(jié)構(gòu)化程序設(shè)計(jì)工具來描述,如程序流程圖(B-S流程圖)、盒圖(N-S流程圖)、PAD圖等。詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)就是在概要設(shè)計(jì)的基礎(chǔ)上決定如何具體實(shí)現(xiàn)各模塊5數(shù)據(jù)流類型根據(jù)基本系統(tǒng)模型,數(shù)據(jù)信息必須以“外部”信息形式進(jìn)入軟件系統(tǒng),經(jīng)過內(nèi)部處理以后再以“外部”的形式離開系統(tǒng)?;舅枷耄簩⑾到y(tǒng)設(shè)計(jì)成由相對獨(dú)立、單一功能的模塊組成的結(jié)構(gòu)。有三種數(shù)據(jù)流類型:變換型數(shù)據(jù)流事務(wù)型數(shù)據(jù)流混合型數(shù)據(jù)流數(shù)據(jù)流類型根據(jù)基本系統(tǒng)模型,數(shù)據(jù)信息必須以“外部”信息形式進(jìn)6變換型數(shù)據(jù)流信息可以通過各種路徑進(jìn)入系統(tǒng),信息在“流”入系統(tǒng)的過程中由外部形式變換成內(nèi)部數(shù)據(jù)形式,這被標(biāo)識為輸入流。在軟件的核心,輸入數(shù)據(jù)經(jīng)過一系列加工處理,這被標(biāo)識為變換流。通過變換處理后的輸出數(shù)據(jù),沿各種路徑轉(zhuǎn)換為外部形式“流”出軟件,這被標(biāo)識為輸出流。整個(gè)數(shù)據(jù)流體現(xiàn)了以輸入、變換、輸出的順序方式,沿一定路徑前行的特征,這就是變換型數(shù)據(jù)流,簡稱變換流。變換型數(shù)據(jù)流信息可以通過各種路徑進(jìn)入系統(tǒng),信息在“流”入系統(tǒng)7變換型數(shù)據(jù)流時(shí)間輸入流輸出流變換流信息

信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式;

進(jìn)入系統(tǒng)的信息通過變換中心;經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);

當(dāng)數(shù)據(jù)流圖具有這些特征時(shí),這種信息流就叫作變換流。變換型數(shù)據(jù)流時(shí)間輸入流輸出流變換流信息信息82022/11/149變換流輸入變換輸出2022/11/119變換流輸入變換輸出9事務(wù)型數(shù)據(jù)流當(dāng)數(shù)據(jù)流經(jīng)過一個(gè)具有“事務(wù)中心”特征的數(shù)據(jù)處理時(shí),它可以根據(jù)事務(wù)類型從多條路徑的數(shù)據(jù)流中選擇一條活動通路。這種具有根據(jù)條件選擇處理不同事務(wù)的數(shù)據(jù)流,就是事務(wù)型數(shù)據(jù)流,簡稱事務(wù)流?!顒油贰聞?wù)中心⊕⊕⊕事務(wù)型數(shù)據(jù)流事務(wù)型數(shù)據(jù)流當(dāng)數(shù)據(jù)流經(jīng)過一個(gè)具有“事務(wù)中心”特征的數(shù)據(jù)處理10事務(wù)流

原則上所有信息流都可以歸結(jié)為變換流。當(dāng)數(shù)據(jù)流圖具有如圖所示的形狀時(shí),這種數(shù)據(jù)流是“以事務(wù)為中心的”。數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動作序列中選出一個(gè)來執(zhí)行。這類特殊的數(shù)據(jù)流,稱為事務(wù)流,處理T稱為事務(wù)中心,它完成下述任務(wù):(1)接收輸入數(shù)據(jù)(事務(wù));(2)分析每個(gè)事務(wù)確定它的類型;(3)根據(jù)事務(wù)類型選取一條活動通路。事務(wù)流原則上所有信息流都可以歸結(jié)為變換流。11混合型數(shù)據(jù)流在一個(gè)大型系統(tǒng)的DFD中,變換流和事務(wù)流往往會同時(shí)出現(xiàn)。例如,在一個(gè)事務(wù)型的DFD中,分支動作路徑上的信息流也可能會體現(xiàn)出變換流的特征。這種具有將事務(wù)流和變換流組合出現(xiàn),就是混合型數(shù)據(jù)流,簡稱混合流?;旌闲蛿?shù)據(jù)流1混合型數(shù)據(jù)流在一個(gè)大型系統(tǒng)的DFD中,變換流和事務(wù)流往往會同12混合型數(shù)據(jù)流2變換3……變換2傳出數(shù)據(jù)傳入數(shù)據(jù)事務(wù)中心變換1結(jié)果混合型數(shù)據(jù)流2變換3……變換2傳出傳入事務(wù)變換1結(jié)果139.3數(shù)據(jù)流設(shè)計(jì)方法面向數(shù)據(jù)流分析(DFA,DataFlowAnalysis)的設(shè)計(jì)是一種結(jié)構(gòu)化的軟件體系結(jié)構(gòu)設(shè)計(jì)方法。面向數(shù)據(jù)流分析的設(shè)計(jì)能與大多數(shù)需求規(guī)格說明技術(shù)配合,可以使模塊達(dá)到高內(nèi)聚性(順序性內(nèi)聚)。這一設(shè)計(jì)技術(shù)是從數(shù)據(jù)流圖(DFD)分析模型映射為軟件模塊組成結(jié)構(gòu)設(shè)計(jì)的描述,所以也稱為結(jié)構(gòu)化設(shè)計(jì)(SD,StructuredDesign)方法。通常所說的結(jié)構(gòu)化設(shè)計(jì)方法(簡稱SD方法),也就是基于數(shù)據(jù)流的設(shè)計(jì)方法。目標(biāo)系統(tǒng)的DFD

SD目標(biāo)系統(tǒng)的SC9.3數(shù)據(jù)流設(shè)計(jì)方法面向數(shù)據(jù)流分析(DFA,DataFl14數(shù)據(jù)流映射步驟復(fù)查基本系統(tǒng)模型,并精化系統(tǒng)數(shù)據(jù)流圖;分析數(shù)據(jù)流類型,確定數(shù)據(jù)流具有變換流特征還是事務(wù)流特征:如果是變換流特征,確定輸入流和輸出流的邊界(也分別稱為最高輸入/輸出抽象點(diǎn)),輸入流邊界和輸出流邊界之間就是變換流,也稱為“變換中心”。變換流加工處理的是某些形式的內(nèi)部數(shù)據(jù);如果是事務(wù)流特征,則可確定一個(gè)接收分支和一個(gè)發(fā)送分支。其中發(fā)送分支包含一個(gè)“事務(wù)中心”和各個(gè)事務(wù)動作流;采用自頂向下、逐步求精的方式完成模塊分解,確定相應(yīng)的軟件組成結(jié)構(gòu);根據(jù)模塊獨(dú)立性原理和運(yùn)用設(shè)計(jì)度量標(biāo)準(zhǔn),對導(dǎo)出的軟件結(jié)構(gòu)進(jìn)行優(yōu)化。數(shù)據(jù)流映射步驟復(fù)查基本系統(tǒng)模型,并精化系統(tǒng)數(shù)據(jù)流圖;15從DFD圖導(dǎo)出SC圖的步驟開始細(xì)化修改SRS中的DFD圖判斷DFD圖的結(jié)構(gòu)類型是變換型嗎?F事務(wù)分析變換分析完善SC圖T對最終的SC圖進(jìn)行評審結(jié)束從DFD圖導(dǎo)出SC圖的步驟開始細(xì)化修改SRS中判斷D16變換流設(shè)計(jì)(變換分析)變換分析是一系列設(shè)計(jì)步驟的總稱,經(jīng)過這些步驟把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。變換流設(shè)計(jì)的要點(diǎn)是分析數(shù)據(jù)流圖,確定輸入流、輸出流邊界,根據(jù)輸入、變換、輸出三個(gè)數(shù)據(jù)流分支將軟件映射成一個(gè)標(biāo)準(zhǔn)的“樹型”體系結(jié)構(gòu)。在有多個(gè)輸入流和多個(gè)輸出流時(shí),應(yīng)分別找出各個(gè)輸入流和輸出流的邊界,即最高抽象點(diǎn),然后分別連接這些輸入流的最高抽象點(diǎn)和輸出流的最高抽象點(diǎn),分別形成輸入邊界和輸出邊界。變換流設(shè)計(jì)(變換分析)變換分析是一系列設(shè)計(jì)步驟的總稱,經(jīng)過這17檢查順序(物理輸入)檢查合理性擴(kuò)充代碼核對檢查和修改壓縮代碼配檢查和(邏輯輸入)(邏輯輸出)輸入主加工輸出卡片舊文件(物理輸出)新文件

中心變換型(transformcenter)—

變換分析其特點(diǎn)是:DFD圖可以明顯分為“輸入-處理-輸出”三部分。檢查(物理輸入)檢查擴(kuò)充核對修改壓縮配(邏輯輸入)(邏輯輸出18①確定主加工及邏輯輸入/輸出主加工—描述了系統(tǒng)的主要功能、特征。其特點(diǎn)是:輸入/輸出數(shù)據(jù)流較多,往往主加工不止一個(gè)。邏輯輸入/輸出—是指輸入/輸出主加工的數(shù)據(jù)流。輸入流—是把物理輸入轉(zhuǎn)換為邏輯輸入的數(shù)據(jù)流。輸出流—是將邏輯輸出轉(zhuǎn)換為物理輸出的數(shù)據(jù)流。②進(jìn)行一級分解,設(shè)計(jì)上層模塊

為每個(gè)輸入設(shè)計(jì)一個(gè)輸入模塊,為每個(gè)輸出設(shè)計(jì)一個(gè)輸出模塊,同時(shí)為每個(gè)主加工設(shè)計(jì)一個(gè)處理模塊。FDC中心加工2號加工3號加工1號加工4號加工ABE

輸入流轉(zhuǎn)換流輸出流

輸入流轉(zhuǎn)換流輸出流MCICTCOCCDDCICTCO

變換分析技術(shù)變換分析①確定主加工及邏輯輸入/輸出②進(jìn)行一級分解,設(shè)計(jì)上層模塊19③進(jìn)行二級分解,設(shè)計(jì)中下層模塊

這一步的工作是自頂向下,逐步細(xì)化,為第一層的每一個(gè)輸入模塊、輸出模塊、處理模塊設(shè)計(jì)它們的從屬模塊,設(shè)計(jì)下層模塊的順序是任意的。但一般是先設(shè)計(jì)輸入模塊的下層模塊。處理C取B轉(zhuǎn)換B轉(zhuǎn)換D送EDDCCMCICTCOCCDDDCCDBBEE④進(jìn)一步細(xì)化取A轉(zhuǎn)換A轉(zhuǎn)換E送FAABFFEDC中心加工2號加工3號加工1號加工4號加工AB

E

輸入流轉(zhuǎn)換流輸出流轉(zhuǎn)換流F⑤利用啟發(fā)規(guī)則優(yōu)化結(jié)構(gòu)③進(jìn)行二級分解,設(shè)計(jì)中下層模塊處理C取B轉(zhuǎn)換B轉(zhuǎn)換D送ED20第一級分解的方法第二級分解的方法第一級分解的方法第二級分解的方法21第一次分解文件單詞數(shù)目統(tǒng)計(jì)讀取和驗(yàn)證文件名統(tǒng)計(jì)單詞數(shù)目格式化和顯示單詞數(shù)實(shí)例:輸入流邊界輸出流邊界有效的文件名單詞總數(shù)格式化單詞數(shù)驗(yàn)證文件名統(tǒng)計(jì)單詞數(shù)格式化單詞數(shù)讀文件名文件名單詞總數(shù)顯示單詞數(shù)文件名文件單詞數(shù)目統(tǒng)計(jì)讀取和驗(yàn)證文件名統(tǒng)計(jì)單詞數(shù)目格式化和顯示單詞數(shù)格式化單詞數(shù)顯示單詞數(shù)讀文件名驗(yàn)證文件名第二次分解第一次分解文件單詞數(shù)目統(tǒng)計(jì)讀取和驗(yàn)證文件名統(tǒng)計(jì)單詞數(shù)目格式化22事務(wù)流設(shè)計(jì)(事務(wù)分析)事務(wù)流分析設(shè)計(jì)是把事務(wù)流映射成包含一個(gè)接收分支和一個(gè)發(fā)送分支的軟件結(jié)構(gòu)。接收分支的映射方法和變換流設(shè)計(jì)映射出輸入結(jié)構(gòu)的方法相似,即從事務(wù)中心的邊界開始,把沿著接收流通路的處理映射成一個(gè)個(gè)模塊。發(fā)送分支結(jié)構(gòu)包含了一個(gè)分類控制模塊和它下層的各個(gè)動作模塊。數(shù)據(jù)流圖的每一個(gè)事務(wù)動作流路徑應(yīng)映射成與其自身信息流特征相一致的結(jié)構(gòu)。事務(wù)流設(shè)計(jì)(事務(wù)分析)事務(wù)流分析設(shè)計(jì)是把事務(wù)流映射成包含一個(gè)23分類報(bào)名付款注銷查詢復(fù)審

事務(wù)處理型(transaction)—

事務(wù)分析這類數(shù)據(jù)流圖可看成是對一個(gè)數(shù)據(jù)經(jīng)過某種加工后,按加工的結(jié)果選擇一個(gè)輸出數(shù)據(jù)流繼續(xù)執(zhí)行的處理。分類報(bào)名付款注銷查詢復(fù)審事務(wù)處理型(transaction24①確定流界;首先從數(shù)據(jù)流圖中找出事務(wù)流、事務(wù)處理中心和事務(wù)路徑。對應(yīng)模塊圖原始的數(shù)據(jù)流圖IP1P2P3事物流事務(wù)中心事務(wù)處理事務(wù)控制接受事務(wù)發(fā)送事務(wù)P1P2P3②進(jìn)行一級分析,設(shè)計(jì)上層模塊;對事務(wù)中心設(shè)計(jì)“事物控制”模塊;對事物流應(yīng)設(shè)計(jì)“接受事物”模塊;對事務(wù)路徑,應(yīng)設(shè)計(jì)“發(fā)送控制”模塊。③進(jìn)行二級分解,設(shè)計(jì)中下層模塊;接受分支,用類似于變換處理型數(shù)據(jù)流圖中對輸入數(shù)據(jù)流的方法設(shè)計(jì)中下層。對于發(fā)送分支,在發(fā)送控制模塊下為每條事務(wù)路徑設(shè)計(jì)一個(gè)事務(wù)處理模塊,這一層稱為事務(wù)層。

事務(wù)分析技術(shù)事務(wù)分析①確定流界;首先從數(shù)據(jù)流圖中找出事務(wù)流、事務(wù)處理中心和事務(wù)路25事務(wù)分析的映射方法結(jié)構(gòu)化設(shè)計(jì)方法課件26事務(wù)流設(shè)計(jì)事務(wù)選擇確定事務(wù)類型審計(jì)記錄事務(wù)1事務(wù)2事務(wù)3事務(wù)4審計(jì)信息事務(wù)5更新事務(wù)v有效事務(wù)查詢更新事務(wù)w有效事務(wù)存款更新事務(wù)x有效事務(wù)取款更新事務(wù)y有效事務(wù)轉(zhuǎn)賬更新事務(wù)z有效事務(wù)修改密碼ATM機(jī)處理事務(wù)主控調(diào)度器更新文件查詢編輯事務(wù)分析器事務(wù)選擇存款轉(zhuǎn)賬取款修改密碼ATM機(jī)系統(tǒng)結(jié)構(gòu)映射成事務(wù)流設(shè)計(jì)事務(wù)選擇確定事審計(jì)審計(jì)信息更新事務(wù)v有效查詢更新事27混合流設(shè)計(jì)讀入數(shù)據(jù)判別

訂貨處理

訂貨輸入

提貨發(fā)票進(jìn)貨輸入

庫存修改

進(jìn)貨票據(jù)

訂單記錄

分析統(tǒng)計(jì)生成統(tǒng)計(jì)表映射成混合流設(shè)計(jì)讀入數(shù)據(jù)判別訂貨處理訂貨輸入提貨發(fā)票進(jìn)貨輸28

設(shè)計(jì)優(yōu)化應(yīng)該力求做到在有效的模塊化的前提下使用最少量的模塊,以及在能夠滿足信息要求的前提下使用最簡單的數(shù)據(jù)結(jié)構(gòu)。對于時(shí)間是決定性因素的應(yīng)用場合,可能有必要在詳細(xì)設(shè)計(jì)階段,也可能在編寫程序的過程中進(jìn)行優(yōu)化。軟件開發(fā)人員應(yīng)該認(rèn)識到,程序中相對說比較小的部分(典型地,10%~20%),通常占用全部處理時(shí)間的大部分(50%~80%)。設(shè)計(jì)優(yōu)化設(shè)計(jì)優(yōu)化應(yīng)該力求做到在有效的模塊化的前提下使29用下述方法對時(shí)間起決定性作用的軟件進(jìn)行優(yōu)化是合理的:在不考慮時(shí)間因素的前提下開發(fā)并精化軟件結(jié)構(gòu);在詳細(xì)設(shè)計(jì)階段選出最耗費(fèi)時(shí)間的那些模塊,仔細(xì)地設(shè)計(jì)它們的處理過程(算法),以求提高效率;使用高級程序設(shè)計(jì)語言編寫程序;在軟件中孤立出那些大量占用處理機(jī)資源的模塊;必要時(shí)重新設(shè)計(jì)或用依賴于機(jī)器的語言重寫上述大量占用資源的模塊的代碼,以求提高效率。

上述優(yōu)化方法遵守了一句格言:“先使它能工作,然后再使它快起來。”用下述方法對時(shí)間起決定性作用的軟件進(jìn)行優(yōu)化是合理的:309.4面向數(shù)據(jù)的設(shè)計(jì)大多數(shù)軟件本質(zhì)上都是數(shù)據(jù)信息處理系統(tǒng),而數(shù)據(jù)信息都有清楚的層次結(jié)構(gòu),即輸入數(shù)據(jù)、內(nèi)部存儲信息、輸出數(shù)據(jù)都可能有獨(dú)特的數(shù)據(jù)結(jié)構(gòu)。面向數(shù)據(jù)的設(shè)計(jì)原理就是根據(jù)軟件操作的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)軟件。適合于總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)“合而為一”的軟件設(shè)計(jì)。面向數(shù)據(jù)的設(shè)計(jì)技術(shù)最常用的有Jackson方法(JacksonStructuredDesign,JSD)由數(shù)據(jù)結(jié)構(gòu)導(dǎo)出它的程序結(jié)構(gòu)是Jackson方法的基本思想。9.4面向數(shù)據(jù)的設(shè)計(jì)大多數(shù)軟件本質(zhì)上都是數(shù)據(jù)信息處理系統(tǒng),31Jackson圖Jackson圖是Jackson方法分析和設(shè)計(jì)最有效的表達(dá)手段,用它既可以描述問題的數(shù)據(jù)結(jié)構(gòu),也可以描述軟件的程序結(jié)構(gòu)。Jackson圖的優(yōu)點(diǎn)是便于表示層次結(jié)構(gòu),利于結(jié)構(gòu)自頂向下分解,形象直觀、可讀性好。Jackson方法用某種形式的偽碼給出程序的過程性描述。(a)順序結(jié)構(gòu)(b)選擇結(jié)構(gòu)(c)可選結(jié)構(gòu)(d)重復(fù)結(jié)構(gòu)BACDI(j)AB*S(i)BoDoACoBo—oAS(i)Jackson圖Jackson圖是Jackson方法分析和設(shè)32JSD方法設(shè)計(jì)步驟分析并確定問題的輸入和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)。找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。根據(jù)下述三條規(guī)則從數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出程序結(jié)構(gòu)的Jackson圖。為每個(gè)有對應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個(gè)處理框。根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。列出操作和條件,并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。用某種形式的偽碼給出程序結(jié)構(gòu)圖對應(yīng)的過程性描述。JSD方法設(shè)計(jì)步驟分析并確定問題的輸入和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),33JSD舉例分析(Jackson圖)JSD舉例分析(Jackson圖)34JSD舉例分析(Jackson圖)JSD舉例分析(Jackson圖)35輸出數(shù)據(jù)輸出數(shù)據(jù)結(jié)構(gòu)輸出數(shù)據(jù)輸出數(shù)據(jù)結(jié)構(gòu)36程序結(jié)構(gòu)程序結(jié)構(gòu)37三種基本控制結(jié)構(gòu)三種基本控制結(jié)構(gòu)38偽碼

PROCESS_CUST_DATAseq

openPAY_FILE;openCUST_M_FILE;{分別打開支付文件和顧客主文件}

PROCESS_CNO_GROUPiteruntileof:PAY_FILE;{處理顧客號碼組}

readPAY_FILE;{讀支付文件一個(gè)記錄}

PROCESS_CNO;{讀顧客主文件一個(gè)記錄,找老結(jié)余}

PROCESS_PAY_RECORDiteruntilend:CNO_GROUP;

{處理顧客號碼組中每個(gè)支付記錄}

writereportline;{寫出報(bào)告行}

computetotalpayments;{計(jì)算總支付額}

readPAY_FILE;{讀支付文件下一個(gè)記錄}

PROCESS_PAY_RECORDend; {一位顧客數(shù)據(jù)處理完}

COMPUTE_CUST_TOTAL; {計(jì)算顧客總數(shù)}

COMPUTE_BALANCEseq {計(jì)算結(jié)余}

PROCESS_OLD_BALANCE; {處理老結(jié)余}

COMPUTE_NEW_BALANCE;{計(jì)算新結(jié)余)

writereportline;{寫出報(bào)告行}

COMPUTE_BALANCEend;{計(jì)算結(jié)余完畢}

PROCESS_CNO_GROUPend;{支付文件處理完成}

PROCESS_CUST_DATAend;{SubstructurePROCESS_CUST_DATA}偽碼PROCESS_CUST_DATAseq

399.5結(jié)構(gòu)化程序設(shè)計(jì)方法詳細(xì)設(shè)計(jì)階段的任務(wù)是開發(fā)一個(gè)可以直接轉(zhuǎn)換為程序的軟件表示,即對系統(tǒng)中每個(gè)模塊的內(nèi)部過程進(jìn)行設(shè)計(jì)和描述,并使設(shè)計(jì)出的處理過程盡可能簡明易懂。常用的描述工具

-程序流程圖(B-S流程圖)

-盒圖(N-S流程圖)

-PAD圖(問題分析圖)

-HIPO圖(層次加輸入-處理-輸出圖)結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)是詳細(xì)設(shè)計(jì)的邏輯基礎(chǔ)。9.5結(jié)構(gòu)化程序設(shè)計(jì)方法詳細(xì)設(shè)計(jì)階段的任務(wù)是開發(fā)一個(gè)可以直409.5結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)的理念是在20世紀(jì)60年代,由Dijkstra等人提出并加以完善的。結(jié)構(gòu)化的程序一般只需要用三種基本的邏輯結(jié)構(gòu)就能實(shí)現(xiàn)。這三種基本邏輯結(jié)構(gòu)是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。9.5結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)的理念是在20世紀(jì)6413種基本的控制結(jié)構(gòu)1966年Bohm和Jacopini證明了只用3種基本的控制結(jié)構(gòu)就能實(shí)現(xiàn)任何單入口單出口的程序。這3種基本的控制結(jié)構(gòu)是:“順序”、“選擇”和“循環(huán)。為了實(shí)際使用方便起見,常常還允許使用DO-UNTIL和DO-CASE兩種控制結(jié)構(gòu)。其他常用的控制結(jié)構(gòu)3種基本的控制結(jié)構(gòu)1966年Bohm和Jac42結(jié)構(gòu)化程序設(shè)計(jì)優(yōu)點(diǎn)自頂向下逐步求精的方法符合人類解決復(fù)雜問題的普遍規(guī)律,因此可以顯著提高軟件開發(fā)工程的成功率和生產(chǎn)率。用先全局后局部、先整體后細(xì)節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),因此容易閱讀和理解。不使用GOTO語句僅使用單入口單出口的控制結(jié)構(gòu),使得程序的靜態(tài)結(jié)構(gòu)和它的動態(tài)執(zhí)行情況比較一致。因此,程序容易閱讀和理解,開發(fā)時(shí)也比較容易保證程序的正確性,即使出現(xiàn)錯(cuò)誤也比較容易診斷和改正??刂平Y(jié)構(gòu)有確定的邏輯模式,編寫程序代碼只限于使用很少幾種直截了當(dāng)?shù)姆绞?,因此源程序清晰流暢,易讀易懂而且容易測試。程序清晰和模塊化使得在修改和重新設(shè)計(jì)一個(gè)軟件時(shí)可以重用的代碼量最大。程序的邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。結(jié)構(gòu)化程序設(shè)計(jì)優(yōu)點(diǎn)自頂向下逐步求精的方法符合人類解決復(fù)雜問題43結(jié)構(gòu)程序設(shè)計(jì)的經(jīng)典定義如下所述:“如果一個(gè)程序的代碼塊僅僅通過順序、選擇和循環(huán)這3種基本控制結(jié)構(gòu)進(jìn)行連接,并且每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口,則稱這個(gè)程序是結(jié)構(gòu)化的?!鄙鲜鼋?jīng)典定義過于狹隘了,結(jié)構(gòu)程序設(shè)計(jì)本質(zhì)上并不是無GOTO語句的編程方法,而是一種使程序代碼容易閱讀、容易理解的編程方法。結(jié)構(gòu)程序設(shè)計(jì)盡可能少用GOTO語句,最好僅在檢測出錯(cuò)誤時(shí)才使用GOTO語句。結(jié)構(gòu)程序設(shè)計(jì)的經(jīng)典定義如下所述:“如果一個(gè)程序的代碼塊僅僅通44

如果只允許使用順序、IF-THEN-ELSE型分支和DO-WHILE型循環(huán)這3種基本控制結(jié)構(gòu),則稱為經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì)。如果除了上述3種基本控制結(jié)構(gòu)之外,還允許使用DO-CASE型多分支結(jié)構(gòu)和DO-UNTIL型循環(huán)結(jié)構(gòu),則稱為擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì)。如果再加上允許使用LEAVE(或BREAK)結(jié)構(gòu),則稱為修正的結(jié)構(gòu)程序設(shè)計(jì)。如果只允許使用順序、IF-THEN-ELSE型分45abX1X2X7X6X4X3X5higfedcjFTFFFTTT多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)選擇結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)程序流程圖abX1X2X7X6X4X3X5higfedcjFTFFFT46如圖所示的程序流程圖描繪了一個(gè)非結(jié)構(gòu)化的程序。問題:1.為什么說它是非結(jié)構(gòu)化的?2.利用附加變量flag設(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化程序,用盒圖描繪你的設(shè)計(jì)結(jié)果。3.不用附加變量,設(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化程序,用盒圖描繪你的設(shè)計(jì)結(jié)果。答:1.程序的循環(huán)控制結(jié)構(gòu)有兩個(gè)出口,因此是非結(jié)構(gòu)化的程序。2.如圖1

。3.如圖2

。圖1圖2如圖所示的程序流程圖描繪了一個(gè)非結(jié)構(gòu)化的程序。問題:47結(jié)構(gòu)化程序設(shè)計(jì)工具圖形工具:把過程的細(xì)節(jié)表示成一個(gè)圖的組成部分,在這個(gè)圖上,邏輯構(gòu)造用具體的圖形來表示。列表工具:用一個(gè)表來表示過程的細(xì)節(jié),這個(gè)表列出了各種操作及其相應(yīng)的條件。也即,描述了輸入、處理和輸出信息。語言工具:用類語言來表示過程的細(xì)節(jié),這種類語言很接近于編程語言。結(jié)構(gòu)化程序設(shè)計(jì)工具圖形工具:把過程的細(xì)節(jié)表示成一個(gè)圖的組成部481.程序流程圖(

B-S流程圖)程序流程圖又稱為程序框圖,Goldstine于1946年首先采用。從20世紀(jì)40年代末到70年代中期,程序流程圖一直是軟件設(shè)計(jì)的主要工具。它的主要優(yōu)點(diǎn)是對控制流程的描繪很直觀,便于初學(xué)者掌握。程序流程圖的主要缺點(diǎn):程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu);程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制;程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。1.程序流程圖(B-S流程圖)程序流程圖又稱為程序框圖,49程序流程圖符號(a)預(yù)處理(b)選擇(c)多分支(d)循環(huán)上界(e)循環(huán)下界(f)開始/結(jié)束(g)準(zhǔn)備(h)注釋(i)虛線(j)省略(k)并行方式(l)控制流盡管它有種種缺點(diǎn),許多人建議停止使用它,但至今仍在廣泛使用著。不過總的趨勢是越來越多的人不再使用程序流程圖了。程序流程圖符號(a)預(yù)處理(b)選擇502.盒圖(N-S流程圖)盒圖是由Nassi和Shneiderman提出的,所以又稱為N-S圖。每個(gè)處理步驟都用一個(gè)盒子來表示,這些處理步驟可以是語句或語句序列,在需要時(shí),盒子中還可以嵌套另一個(gè)盒子,嵌套深度一般沒有限制。盒圖具有下述特點(diǎn):

—功能域(即,一個(gè)特定控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出來。

—由于只能從上邊進(jìn)入盒子然后從下面走出盒子,除此之外沒有其它的入口和出口,所以盒圖限制了任意的控制轉(zhuǎn)移,保證程序有良好的結(jié)構(gòu)。

—很容易確定局部和全程數(shù)據(jù)的作用域。

—很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。盒圖很容易表示程序結(jié)構(gòu)化的層次結(jié)構(gòu),確定局部和全局?jǐn)?shù)據(jù)的作用域。由于沒有箭頭,因此不允許隨意轉(zhuǎn)移控制。2.盒圖(N-S流程圖)盒圖是由Nassi和Shneide51盒圖的基本符號結(jié)構(gòu)化設(shè)計(jì)方法課件52ab條件1TF

Case

Xi,i=2,3,4X2X3X4當(dāng)條件3成立條件2直到條件4成立直到條件成立cdefghij順序結(jié)構(gòu)選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)FTTFN-S圖舉例ab條件1TFCaseXi,i=2,53

PAD是問題分析圖(problemanalysisdiagram)的英文縮寫,自1973年由日本日立公司發(fā)明以后,已得到一定程度的推廣。它用二維樹形結(jié)構(gòu)的圖來表示程序的控制流,將這種圖翻譯成程序代碼比較容易。

PAD圖的基本原理:采用自頂向下、逐步細(xì)化和結(jié)構(gòu)化設(shè)計(jì)的原則,力求將模糊的問題解的概念逐步轉(zhuǎn)換為確定的和詳盡的過程,使之最終可采用計(jì)算機(jī)直接進(jìn)行處理。3.PAD圖(問題分析圖)PAD是問題分析圖(problemanal54PAD圖的基本符號結(jié)構(gòu)化設(shè)計(jì)方法課件55PAD圖的主要優(yōu)點(diǎn):使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號設(shè)計(jì)出來的程序必然是結(jié)構(gòu)化程序。PAD圖所描繪的程序結(jié)構(gòu)十分清晰。圖中最左邊的豎線是程序的主線,即第一層結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾?,PAD圖逐漸向右延伸,每增加一個(gè)層次,圖形向右擴(kuò)展一條豎線。PAD圖中豎線的總條數(shù)就是程序的層次數(shù)。用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。PAD圖是二維樹形結(jié)構(gòu)的圖形,程序從圖中最左豎線上端的結(jié)點(diǎn)開始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有結(jié)點(diǎn)。容易將PAD圖轉(zhuǎn)換成高級語言源程序,這種轉(zhuǎn)換可用軟件工具自動完成,從而可省去人工編碼的工作,有利于提高軟件可靠性和軟件生產(chǎn)率。既可用于表示程序邏輯,又可用于描繪數(shù)據(jù)結(jié)構(gòu)。PAD圖的主要優(yōu)點(diǎn):使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號設(shè)計(jì)出56使用PAD圖提供的def功能來逐步求精的例子結(jié)構(gòu)化設(shè)計(jì)方法課件574.HIPO圖(層次加輸入-處理-輸出圖)HIPO(HiberarchyPlusInput-Process-Output,層次加輸入-處理-輸出)圖是根據(jù)IBM公司研制的軟件設(shè)計(jì)與文件編制技術(shù)發(fā)展而來的。HIPO圖采用功能框圖和PDL來描述程序邏輯,它由兩部分組成:可視目錄表給出程序的層次關(guān)系體系框圖:又稱層次圖(H圖),是可視目錄表的主體,用它表明各個(gè)功能的隸屬關(guān)系圖例:圖形符號說明描述說明:每一框的補(bǔ)充說明IPO圖則為程序各部分提供具體的工作細(xì)節(jié)4.HIPO圖(層次加輸入-處理-輸出圖)HIPO(Hib58盤存/銷售系統(tǒng)工作流程圖盤存/銷售系統(tǒng)工作流程圖59盤存/銷售系統(tǒng)的可視目錄表盤存/銷售系統(tǒng)的可視目錄表60IPO圖IPO圖61詳細(xì)的IPO圖詳細(xì)的IPO圖62

詳細(xì)設(shè)計(jì)階段設(shè)計(jì)出的模塊質(zhì)量如何呢?

定量度量程序復(fù)雜程度的方法很有價(jià)值:把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯(cuò)誤的數(shù)量以及軟件開發(fā)需要用的工作量。定量度量的結(jié)果可以用來比較兩個(gè)不同的設(shè)計(jì)或兩個(gè)不同算法的優(yōu)劣;程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度。9.6程序復(fù)雜程度的定量度量詳細(xì)設(shè)計(jì)階段設(shè)計(jì)出的模塊質(zhì)量如何呢?9.6631.流圖

McCabe方法根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。為了突出表示程序的控制流,人們通常使用流圖(也稱為程序圖)。所謂流圖實(shí)質(zhì)上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。McCabe方法1.流圖McCabe方法64程序流程圖轉(zhuǎn)化為流圖(程序圖)的一般過程:

(1)在流圖中用圓表示結(jié)點(diǎn),一個(gè)圓代表一條或多條語句。(2)程序流程圖中的一個(gè)順序的處理框序列和一個(gè)菱形判定框,可以映射成流圖中的一個(gè)結(jié)點(diǎn)。(3)流圖中的箭頭線稱為邊,它和程序流程圖中的箭頭線類似,代表控制流。(4)在流圖中一條邊必須終止于一個(gè)結(jié)點(diǎn),即使這個(gè)結(jié)點(diǎn)并不代表任何語句(實(shí)際上相當(dāng)于一個(gè)空語句)。(5)由邊和結(jié)點(diǎn)圍成的面積稱為區(qū)域,當(dāng)計(jì)算區(qū)域數(shù)時(shí)應(yīng)該包括圖外部未被圍起來的那個(gè)區(qū)域。

程序流程圖轉(zhuǎn)化為流圖(程序圖)的一般過程:65例:根據(jù)給出的程序流程圖,畫出它的程序圖(流圖),并計(jì)算它的McCabe復(fù)雜性度量。

例:根據(jù)給出的程序流程圖,畫出它的程序圖(流圖),并計(jì)算它的66

用任何方法表示的過程設(shè)計(jì)結(jié)果,都可以翻譯成流圖。

由PDL翻譯成的流圖用任何方法表示的過程設(shè)計(jì)結(jié)果,都可以翻譯成流67由包含復(fù)合條件的PDL映射成的流圖在條件中包含了一個(gè)或多個(gè)布爾運(yùn)算符(邏輯OR,AND,NAND,NOR)的復(fù)合條件下,應(yīng)該把復(fù)合條件分解為若干個(gè)簡單條件,每個(gè)簡單條件對應(yīng)流圖中一個(gè)結(jié)點(diǎn)。包含條件的結(jié)點(diǎn)稱為判定節(jié)點(diǎn),從每個(gè)判定結(jié)點(diǎn)引出兩條或多條邊。由包含復(fù)合條件的PDL在條件中包含了一個(gè)或多682.計(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,其中,P是流圖中判定結(jié)點(diǎn)的數(shù)目。2.計(jì)算環(huán)形復(fù)雜度的方法693.環(huán)形復(fù)雜度的用途

程序的環(huán)形復(fù)雜度取決于程序控制流的復(fù)雜程度,也即是取決于程序結(jié)構(gòu)的復(fù)雜程度。當(dāng)程序內(nèi)分支數(shù)或循環(huán)個(gè)數(shù)增加時(shí),環(huán)形復(fù)雜度也隨之增加,因此它是對測試難度的一種定量度量,也能對軟件最終的可靠性給出某種預(yù)測。

McCabe研究大量程序后發(fā)現(xiàn),環(huán)形復(fù)雜度高的程序往往是最困難、最容易出問題的程序。實(shí)踐表明,模塊規(guī)模以V(G)≤10為宜,也就是說,V(G)=10是模塊規(guī)模的一個(gè)更科學(xué)更精確的上限。3.環(huán)形復(fù)雜度的用途70出卷系統(tǒng)出卷系統(tǒng)總控模塊讀出用戶命令出卷試題管理試卷管理系統(tǒng)維護(hù)設(shè)置要求手動出卷自動出卷添加試題修改試題刪除試題打印試卷修改試卷刪除試卷課程維護(hù)樣式管理①②③④⑤9.7案例分析①接口:沒有輸入?yún)?shù),輸出參數(shù)為用戶命令。②接口:輸入?yún)?shù)為出卷命令,沒有輸出參數(shù)。③接口:輸入?yún)?shù)為設(shè)置試卷要求,沒有輸出參數(shù)。④接口:輸入?yún)?shù)為手動出卷命令,沒有輸出參數(shù)。⑤接口:輸入?yún)?shù)為自動出卷命令,沒有輸出參數(shù)。出卷系統(tǒng)出卷系統(tǒng)總控模塊讀出用戶命令出卷試題管理試卷管理系統(tǒng)71自動出卷自動出卷讀出試卷要求出卷顯示試卷抽取試題評價(jià)寫入試卷①②③④⑤⑥教師出卷要求試題試題試卷試題試題試卷獲取出卷要求抽取試題評價(jià)出卷要求試卷出卷要求出卷要求分析出卷計(jì)算分值題型試題寫入試卷顯示試卷試題自動出卷自動出卷讀出試卷要求出卷顯示試卷抽取試題評價(jià)寫入試卷72手動出卷手動出卷讀出試卷要求出卷顯示試卷篩選試題評價(jià)寫入試卷選擇試題①②③④⑤⑥⑦分析出卷挑選試題題型試題寫入試卷顯示試卷試題教師出卷要求試題試題試卷試題試題試卷獲取出卷要求篩選試題計(jì)算分值出卷要求試卷出卷要求出卷要求手動出卷手動出卷讀出試卷要求出卷顯示試卷篩選試題評價(jià)寫入試卷73圖書館系統(tǒng)圖書館系統(tǒng)74圖書館系統(tǒng)圖書館系統(tǒng)75維護(hù)管理系統(tǒng)維護(hù)管理系統(tǒng)76小結(jié)概要設(shè)計(jì)就是確定系統(tǒng)的模塊以及模塊之間的結(jié)構(gòu)和關(guān)系,將軟件的功能需求分配給所劃分的最小單元模塊。詳細(xì)設(shè)計(jì)要確定數(shù)據(jù)結(jié)構(gòu)、文件結(jié)構(gòu)、數(shù)據(jù)庫模式以及確定測試方法與策略。在概要設(shè)計(jì)階段主要樹立一個(gè)模塊化的思想。將分析階段的數(shù)據(jù)流圖,將數(shù)據(jù)流進(jìn)行分析。是變換流還是事務(wù)流,或者是兩種的結(jié)合混合流。按照數(shù)據(jù)流到軟件結(jié)構(gòu)圖的映射步驟將數(shù)據(jù)流圖轉(zhuǎn)化為系統(tǒng)的軟件結(jié)構(gòu)圖。再對結(jié)構(gòu)圖進(jìn)行分析、細(xì)化得到合理的軟件模塊結(jié)構(gòu)。在軟件模塊確定后,就需要考慮為軟件結(jié)構(gòu)圖中的每一個(gè)模塊確定相應(yīng)的算法和塊內(nèi)的數(shù)據(jù)結(jié)構(gòu),用結(jié)構(gòu)化程序設(shè)計(jì)工具來描述。結(jié)構(gòu)化程序設(shè)計(jì)工具通常以圖形語言來描述,然后用PDL語言來加工。使得操作的步驟盡可能詳細(xì)和清晰。在詳細(xì)設(shè)計(jì)工具中主要有程序流程圖、盒圖、PAD圖和HIPO圖等。用面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化程序設(shè)計(jì)方法JSD方法來詳細(xì)描述程序的結(jié)構(gòu)。小結(jié)概要設(shè)計(jì)就是確定系統(tǒng)的模塊以及模塊之間的結(jié)構(gòu)和關(guān)系,將軟77引言結(jié)構(gòu)化開發(fā)方法(StructuredDevelopingMethod)

是現(xiàn)有的軟件開發(fā)方法中最成熟,應(yīng)用最廣泛的方法,主要特點(diǎn)是快速、自然和方便。結(jié)構(gòu)化開發(fā)方法由結(jié)構(gòu)化分析方法(SA法)、結(jié)構(gòu)化設(shè)計(jì)方法(SD法)及結(jié)構(gòu)化程序設(shè)計(jì)方法(SP法)構(gòu)成的。

結(jié)構(gòu)化設(shè)計(jì)方法(SD法StructuredDesign)是結(jié)構(gòu)化開發(fā)方法的核心,與SA法,SP法密切聯(lián)系,主要完成軟件系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)。面向數(shù)據(jù)流的設(shè)計(jì)方法又稱結(jié)構(gòu)化設(shè)計(jì)。結(jié)構(gòu)化設(shè)計(jì)方法課件78傳統(tǒng)的結(jié)構(gòu)化軟件設(shè)計(jì)有兩種基本方法:(1)面向行為的設(shè)計(jì)如:面向數(shù)據(jù)流的設(shè)計(jì)方法基于數(shù)據(jù)處理過程建立軟件結(jié)構(gòu),也稱為結(jié)構(gòu)化設(shè)計(jì)方法(SD)。(2)面向數(shù)據(jù)的設(shè)計(jì)如:Jackson(JSD)設(shè)計(jì)方法基于輸入/輸出數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)軟件結(jié)構(gòu)。傳統(tǒng)的結(jié)構(gòu)化軟件設(shè)計(jì)有兩種基本方法:79

結(jié)構(gòu)化設(shè)計(jì)方法概述設(shè)計(jì)先于編碼”,這是軟件工程“推遲實(shí)現(xiàn)”基本原則的又一體現(xiàn)。結(jié)構(gòu)化設(shè)計(jì)方法(StructuredDesign,SD)是基于模塊化、自頂向下細(xì)化、結(jié)構(gòu)化程序設(shè)計(jì)等程序設(shè)計(jì)技術(shù)基礎(chǔ)上發(fā)展起來的。結(jié)構(gòu)化設(shè)計(jì)方法用模塊結(jié)構(gòu)圖來表達(dá)程序模塊之間的關(guān)系。軟件設(shè)計(jì)分為兩個(gè)階段:概要設(shè)計(jì)詳細(xì)設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)方法概述設(shè)計(jì)先于編碼”,這是軟件工程“推遲實(shí)現(xiàn)”80概要設(shè)計(jì)概要設(shè)計(jì)也稱總體設(shè)計(jì),確定軟件的結(jié)構(gòu)以及各組成成分(子系統(tǒng)或模塊)之間的相互關(guān)系。概要設(shè)計(jì)的主要任務(wù)是:將系統(tǒng)劃分成模塊;決定每個(gè)模塊的功能;決定模塊的調(diào)用關(guān)系;決定模塊的界面,即模塊間傳遞的數(shù)據(jù)。概要設(shè)計(jì)階段的主要任務(wù)是通過數(shù)據(jù)流圖來確定系統(tǒng)的結(jié)構(gòu)圖,并且對這些結(jié)構(gòu)圖進(jìn)行分析和細(xì)化。在概要設(shè)計(jì)階段,結(jié)構(gòu)化設(shè)計(jì)主要采用面向數(shù)據(jù)流的設(shè)計(jì)方法。概要設(shè)計(jì)概要設(shè)計(jì)也稱總體設(shè)計(jì),確定軟件的結(jié)構(gòu)以及各組成成分(81詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)就是在概要設(shè)計(jì)的基礎(chǔ)上決定如何具體實(shí)現(xiàn)各模塊的內(nèi)部細(xì)節(jié),直到對系統(tǒng)中的每個(gè)模塊給出足夠詳細(xì)的過程描述。在編碼實(shí)現(xiàn)階段就可以完全按照詳細(xì)設(shè)計(jì)的細(xì)節(jié)過程來映射到代碼,最終實(shí)現(xiàn)整個(gè)系統(tǒng)。一般使用結(jié)構(gòu)化程序設(shè)計(jì)工具來描述,如程序流程圖(B-S流程圖)、盒圖(N-S流程圖)、PAD圖等。詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)就是在概要設(shè)計(jì)的基礎(chǔ)上決定如何具體實(shí)現(xiàn)各模塊82數(shù)據(jù)流類型根據(jù)基本系統(tǒng)模型,數(shù)據(jù)信息必須以“外部”信息形式進(jìn)入軟件系統(tǒng),經(jīng)過內(nèi)部處理以后再以“外部”的形式離開系統(tǒng)?;舅枷耄簩⑾到y(tǒng)設(shè)計(jì)成由相對獨(dú)立、單一功能的模塊組成的結(jié)構(gòu)。有三種數(shù)據(jù)流類型:變換型數(shù)據(jù)流事務(wù)型數(shù)據(jù)流混合型數(shù)據(jù)流數(shù)據(jù)流類型根據(jù)基本系統(tǒng)模型,數(shù)據(jù)信息必須以“外部”信息形式進(jìn)83變換型數(shù)據(jù)流信息可以通過各種路徑進(jìn)入系統(tǒng),信息在“流”入系統(tǒng)的過程中由外部形式變換成內(nèi)部數(shù)據(jù)形式,這被標(biāo)識為輸入流。在軟件的核心,輸入數(shù)據(jù)經(jīng)過一系列加工處理,這被標(biāo)識為變換流。通過變換處理后的輸出數(shù)據(jù),沿各種路徑轉(zhuǎn)換為外部形式“流”出軟件,這被標(biāo)識為輸出流。整個(gè)數(shù)據(jù)流體現(xiàn)了以輸入、變換、輸出的順序方式,沿一定路徑前行的特征,這就是變換型數(shù)據(jù)流,簡稱變換流。變換型數(shù)據(jù)流信息可以通過各種路徑進(jìn)入系統(tǒng),信息在“流”入系統(tǒng)84變換型數(shù)據(jù)流時(shí)間輸入流輸出流變換流信息

信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式;

進(jìn)入系統(tǒng)的信息通過變換中心;經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);

當(dāng)數(shù)據(jù)流圖具有這些特征時(shí),這種信息流就叫作變換流。變換型數(shù)據(jù)流時(shí)間輸入流輸出流變換流信息信息852022/11/1486變換流輸入變換輸出2022/11/119變換流輸入變換輸出86事務(wù)型數(shù)據(jù)流當(dāng)數(shù)據(jù)流經(jīng)過一個(gè)具有“事務(wù)中心”特征的數(shù)據(jù)處理時(shí),它可以根據(jù)事務(wù)類型從多條路徑的數(shù)據(jù)流中選擇一條活動通路。這種具有根據(jù)條件選擇處理不同事務(wù)的數(shù)據(jù)流,就是事務(wù)型數(shù)據(jù)流,簡稱事務(wù)流?!顒油贰聞?wù)中心⊕⊕⊕事務(wù)型數(shù)據(jù)流事務(wù)型數(shù)據(jù)流當(dāng)數(shù)據(jù)流經(jīng)過一個(gè)具有“事務(wù)中心”特征的數(shù)據(jù)處理87事務(wù)流

原則上所有信息流都可以歸結(jié)為變換流。當(dāng)數(shù)據(jù)流圖具有如圖所示的形狀時(shí),這種數(shù)據(jù)流是“以事務(wù)為中心的”。數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動作序列中選出一個(gè)來執(zhí)行。這類特殊的數(shù)據(jù)流,稱為事務(wù)流,處理T稱為事務(wù)中心,它完成下述任務(wù):(1)接收輸入數(shù)據(jù)(事務(wù));(2)分析每個(gè)事務(wù)確定它的類型;(3)根據(jù)事務(wù)類型選取一條活動通路。事務(wù)流原則上所有信息流都可以歸結(jié)為變換流。88混合型數(shù)據(jù)流在一個(gè)大型系統(tǒng)的DFD中,變換流和事務(wù)流往往會同時(shí)出現(xiàn)。例如,在一個(gè)事務(wù)型的DFD中,分支動作路徑上的信息流也可能會體現(xiàn)出變換流的特征。這種具有將事務(wù)流和變換流組合出現(xiàn),就是混合型數(shù)據(jù)流,簡稱混合流?;旌闲蛿?shù)據(jù)流1混合型數(shù)據(jù)流在一個(gè)大型系統(tǒng)的DFD中,變換流和事務(wù)流往往會同89混合型數(shù)據(jù)流2變換3……變換2傳出數(shù)據(jù)傳入數(shù)據(jù)事務(wù)中心變換1結(jié)果混合型數(shù)據(jù)流2變換3……變換2傳出傳入事務(wù)變換1結(jié)果909.3數(shù)據(jù)流設(shè)計(jì)方法面向數(shù)據(jù)流分析(DFA,DataFlowAnalysis)的設(shè)計(jì)是一種結(jié)構(gòu)化的軟件體系結(jié)構(gòu)設(shè)計(jì)方法。面向數(shù)據(jù)流分析的設(shè)計(jì)能與大多數(shù)需求規(guī)格說明技術(shù)配合,可以使模塊達(dá)到高內(nèi)聚性(順序性內(nèi)聚)。這一設(shè)計(jì)技術(shù)是從數(shù)據(jù)流圖(DFD)分析模型映射為軟件模塊組成結(jié)構(gòu)設(shè)計(jì)的描述,所以也稱為結(jié)構(gòu)化設(shè)計(jì)(SD,StructuredDesign)方法。通常所說的結(jié)構(gòu)化設(shè)計(jì)方法(簡稱SD方法),也就是基于數(shù)據(jù)流的設(shè)計(jì)方法。目標(biāo)系統(tǒng)的DFD

SD目標(biāo)系統(tǒng)的SC9.3數(shù)據(jù)流設(shè)計(jì)方法面向數(shù)據(jù)流分析(DFA,DataFl91數(shù)據(jù)流映射步驟復(fù)查基本系統(tǒng)模型,并精化系統(tǒng)數(shù)據(jù)流圖;分析數(shù)據(jù)流類型,確定數(shù)據(jù)流具有變換流特征還是事務(wù)流特征:如果是變換流特征,確定輸入流和輸出流的邊界(也分別稱為最高輸入/輸出抽象點(diǎn)),輸入流邊界和輸出流邊界之間就是變換流,也稱為“變換中心”。變換流加工處理的是某些形式的內(nèi)部數(shù)據(jù);如果是事務(wù)流特征,則可確定一個(gè)接收分支和一個(gè)發(fā)送分支。其中發(fā)送分支包含一個(gè)“事務(wù)中心”和各個(gè)事務(wù)動作流;采用自頂向下、逐步求精的方式完成模塊分解,確定相應(yīng)的軟件組成結(jié)構(gòu);根據(jù)模塊獨(dú)立性原理和運(yùn)用設(shè)計(jì)度量標(biāo)準(zhǔn),對導(dǎo)出的軟件結(jié)構(gòu)進(jìn)行優(yōu)化。數(shù)據(jù)流映射步驟復(fù)查基本系統(tǒng)模型,并精化系統(tǒng)數(shù)據(jù)流圖;92從DFD圖導(dǎo)出SC圖的步驟開始細(xì)化修改SRS中的DFD圖判斷DFD圖的結(jié)構(gòu)類型是變換型嗎?F事務(wù)分析變換分析完善SC圖T對最終的SC圖進(jìn)行評審結(jié)束從DFD圖導(dǎo)出SC圖的步驟開始細(xì)化修改SRS中判斷D93變換流設(shè)計(jì)(變換分析)變換分析是一系列設(shè)計(jì)步驟的總稱,經(jīng)過這些步驟把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。變換流設(shè)計(jì)的要點(diǎn)是分析數(shù)據(jù)流圖,確定輸入流、輸出流邊界,根據(jù)輸入、變換、輸出三個(gè)數(shù)據(jù)流分支將軟件映射成一個(gè)標(biāo)準(zhǔn)的“樹型”體系結(jié)構(gòu)。在有多個(gè)輸入流和多個(gè)輸出流時(shí),應(yīng)分別找出各個(gè)輸入流和輸出流的邊界,即最高抽象點(diǎn),然后分別連接這些輸入流的最高抽象點(diǎn)和輸出流的最高抽象點(diǎn),分別形成輸入邊界和輸出邊界。變換流設(shè)計(jì)(變換分析)變換分析是一系列設(shè)計(jì)步驟的總稱,經(jīng)過這94檢查順序(物理輸入)檢查合理性擴(kuò)充代碼核對檢查和修改壓縮代碼配檢查和(邏輯輸入)(邏輯輸出)輸入主加工輸出卡片舊文件(物理輸出)新文件

中心變換型(transformcenter)—

變換分析其特點(diǎn)是:DFD圖可以明顯分為“輸入-處理-輸出”三部分。檢查(物理輸入)檢查擴(kuò)充核對修改壓縮配(邏輯輸入)(邏輯輸出95①確定主加工及邏輯輸入/輸出主加工—描述了系統(tǒng)的主要功能、特征。其特點(diǎn)是:輸入/輸出數(shù)據(jù)流較多,往往主加工不止一個(gè)。邏輯輸入/輸出—是指輸入/輸出主加工的數(shù)據(jù)流。輸入流—是把物理輸入轉(zhuǎn)換為邏輯輸入的數(shù)據(jù)流。輸出流—是將邏輯輸出轉(zhuǎn)換為物理輸出的數(shù)據(jù)流。②進(jìn)行一級分解,設(shè)計(jì)上層模塊

為每個(gè)輸入設(shè)計(jì)一個(gè)輸入模塊,為每個(gè)輸出設(shè)計(jì)一個(gè)輸出模塊,同時(shí)為每個(gè)主加工設(shè)計(jì)一個(gè)處理模塊。FDC中心加工2號加工3號加工1號加工4號加工ABE

輸入流轉(zhuǎn)換流輸出流

輸入流轉(zhuǎn)換流輸出流MCICTCOCCDDCICTCO

變換分析技術(shù)變換分析①確定主加工及邏輯輸入/輸出②進(jìn)行一級分解,設(shè)計(jì)上層模塊96③進(jìn)行二級分解,設(shè)計(jì)中下層模塊

這一步的工作是自頂向下,逐步細(xì)化,為第一層的每一個(gè)輸入模塊、輸出模塊、處理模塊設(shè)計(jì)它們的從屬模塊,設(shè)計(jì)下層模塊的順序是任意的。但一般是先設(shè)計(jì)輸入模塊的下層模塊。處理C取B轉(zhuǎn)換B轉(zhuǎn)換D送EDDCCMCICTCOCCDDDCCDBBEE④進(jìn)一步細(xì)化取A轉(zhuǎn)換A轉(zhuǎn)換E送FAABFFEDC中心加工2號加工3號加工1號加工4號加工AB

E

輸入流轉(zhuǎn)換流輸出流轉(zhuǎn)換流F⑤利用啟發(fā)規(guī)則優(yōu)化結(jié)構(gòu)③進(jìn)行二級分解,設(shè)計(jì)中下層模塊處理C取B轉(zhuǎn)換B轉(zhuǎn)換D送ED97第一級分解的方法第二級分解的方法第一級分解的方法第二級分解的方法98第一次分解文件單詞數(shù)目統(tǒng)計(jì)讀取和驗(yàn)證文件名統(tǒng)計(jì)單詞數(shù)目格式化和顯示單詞數(shù)實(shí)例:輸入流邊界輸出流邊界有效的文件名單詞總數(shù)格式化單詞數(shù)驗(yàn)證文件名統(tǒng)計(jì)單詞數(shù)格式化單詞數(shù)讀文件名文件名單詞總數(shù)顯示單詞數(shù)文件名文件單詞數(shù)目統(tǒng)計(jì)讀取和驗(yàn)證文件名統(tǒng)計(jì)單詞數(shù)目格式化和顯示單詞數(shù)格式化單詞數(shù)顯示單詞數(shù)讀文件名驗(yàn)證文件名第二次分解第一次分解文件單詞數(shù)目統(tǒng)計(jì)讀取和驗(yàn)證文件名統(tǒng)計(jì)單詞數(shù)目格式化99事務(wù)流設(shè)計(jì)(事務(wù)分析)事務(wù)流分析設(shè)計(jì)是把事務(wù)流映射成包含一個(gè)接收分支和一個(gè)發(fā)送分支的軟件結(jié)構(gòu)。接收分支的映射方法和變換流設(shè)計(jì)映射出輸入結(jié)構(gòu)的方法相似,即從事務(wù)中心的邊界開始,把沿著接收流通路的處理映射成一個(gè)個(gè)模塊。發(fā)送分支結(jié)構(gòu)包含了一個(gè)分類控制模塊和它下層的各個(gè)動作模塊。數(shù)據(jù)流圖的每一個(gè)事務(wù)動作流路徑應(yīng)映射成與其自身信息流特征相一致的結(jié)構(gòu)。事務(wù)流設(shè)計(jì)(事務(wù)分析)事務(wù)流分析設(shè)計(jì)是把事務(wù)流映射成包含一個(gè)100分類報(bào)名付款注銷查詢復(fù)審

事務(wù)處理型(transaction)—

事務(wù)分析這類數(shù)據(jù)流圖可看成是對一個(gè)數(shù)據(jù)經(jīng)過某種加工后,按加工的結(jié)果選擇一個(gè)輸出數(shù)據(jù)流繼續(xù)執(zhí)行的處理。分類報(bào)名付款注銷查詢復(fù)審事務(wù)處理型(transaction101①確定流界;首先從數(shù)據(jù)流圖中找出事務(wù)流、事務(wù)處理中心和事務(wù)路徑。對應(yīng)模塊圖原始的數(shù)據(jù)流圖IP1P2P3事物流事務(wù)中心事務(wù)處理事務(wù)控制接受事務(wù)發(fā)送事務(wù)P1P2P3②進(jìn)行一級分析,設(shè)計(jì)上層模塊;對事務(wù)中心設(shè)計(jì)“事物控制”模塊;對事物流應(yīng)設(shè)計(jì)“接受事物”模塊;對事務(wù)路徑,應(yīng)設(shè)計(jì)“發(fā)送控制”模塊。③進(jìn)行二級分解,設(shè)計(jì)中下層模塊;接受分支,用類似于變換處理型數(shù)據(jù)流圖中對輸入數(shù)據(jù)流的方法設(shè)計(jì)中下層。對于發(fā)送分支,在發(fā)送控制模塊下為每條事務(wù)路徑設(shè)計(jì)一個(gè)事務(wù)處理模塊,這一層稱為事務(wù)層。

事務(wù)分析技術(shù)事務(wù)分析①確定流界;首先從數(shù)據(jù)流圖中找出事務(wù)流、事務(wù)處理中心和事務(wù)路102事務(wù)分析的映射方法結(jié)構(gòu)化設(shè)計(jì)方法課件103事務(wù)流設(shè)計(jì)事務(wù)選擇確定事務(wù)類型審計(jì)記錄事務(wù)1事務(wù)2事務(wù)3事務(wù)4審計(jì)信息事務(wù)5更新事務(wù)v有效事務(wù)查詢更新事務(wù)w有效事務(wù)存款更新事務(wù)x有效事務(wù)取款更新事務(wù)y有效事務(wù)轉(zhuǎn)賬更新事務(wù)z有效事務(wù)修改密碼ATM機(jī)處理事務(wù)主控調(diào)度器更新文件查詢編輯事務(wù)分析器事務(wù)選擇存款轉(zhuǎn)賬取款修改密碼ATM機(jī)系統(tǒng)結(jié)構(gòu)映射成事務(wù)流設(shè)計(jì)事務(wù)選擇確定事審計(jì)審計(jì)信息更新事務(wù)v有效查詢更新事104混合流設(shè)計(jì)讀入數(shù)據(jù)判別

訂貨處理

訂貨輸入

提貨發(fā)票進(jìn)貨輸入

庫存修改

進(jìn)貨票據(jù)

訂單記錄

分析統(tǒng)計(jì)生成統(tǒng)計(jì)表映射成混合流設(shè)計(jì)讀入數(shù)據(jù)判別訂貨處理訂貨輸入提貨發(fā)票進(jìn)貨輸105

設(shè)計(jì)優(yōu)化應(yīng)該力求做到在有效的模塊化的前提下使用最少量的模塊,以及在能夠滿足信息要求的前提下使用最簡單的數(shù)據(jù)結(jié)構(gòu)。對于時(shí)間是決定性因素的應(yīng)用場合,可能有必要在詳細(xì)設(shè)計(jì)階段,也可能在編寫程序的過程中進(jìn)行優(yōu)化。軟件開發(fā)人員應(yīng)該認(rèn)識到,程序中相對說比較小的部分(典型地,10%~20%),通常占用全部處理時(shí)間的大部分(50%~80%)。設(shè)計(jì)優(yōu)化設(shè)計(jì)優(yōu)化應(yīng)該力求做到在有效的模塊化的前提下使106用下述方法對時(shí)間起決定性作用的軟件進(jìn)行優(yōu)化是合理的:在不考慮時(shí)間因素的前提下開發(fā)并精化軟件結(jié)構(gòu);在詳細(xì)設(shè)計(jì)階段選出最耗費(fèi)時(shí)間的那些模塊,仔細(xì)地設(shè)計(jì)它們的處理過程(算法),以求提高效率;使用高級程序設(shè)計(jì)語言編寫程序;在軟件中孤立出那些大量占用處理機(jī)資源的模塊;必要時(shí)重新設(shè)計(jì)或用依賴于機(jī)器的語言重寫上述大量占用資源的模塊的代碼,以求提高效率。

上述優(yōu)化方法遵守了一句格言:“先使它能工作,然后再使它快起來?!庇孟率龇椒▽r(shí)間起決定性作用的軟件進(jìn)行優(yōu)化是合理的:1079.4面向數(shù)據(jù)的設(shè)計(jì)大多數(shù)軟件本質(zhì)上都是數(shù)據(jù)信息處理系統(tǒng),而數(shù)據(jù)信息都有清楚的層次結(jié)構(gòu),即輸入數(shù)據(jù)、內(nèi)部存儲信息、輸出數(shù)據(jù)都可能有獨(dú)特的數(shù)據(jù)結(jié)構(gòu)。面向數(shù)據(jù)的設(shè)計(jì)原理就是根據(jù)軟件操作的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)軟件。適合于總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)“合而為一”的軟件設(shè)計(jì)。面向數(shù)據(jù)的設(shè)計(jì)技術(shù)最常用的有Jackson方法(JacksonStructuredDesign,JSD)由數(shù)據(jù)結(jié)構(gòu)導(dǎo)出它的程序結(jié)構(gòu)是Jackson方法的基本思想。9.4面向數(shù)據(jù)的設(shè)計(jì)大多數(shù)軟件本質(zhì)上都是數(shù)據(jù)信息處理系統(tǒng),108Jackson圖Jackson圖是Jackson方法分析和設(shè)計(jì)最有效的表達(dá)手段,用它既可以描述問題的數(shù)據(jù)結(jié)構(gòu),也可以描述軟件的程序結(jié)構(gòu)。Jackson圖的優(yōu)點(diǎn)是便于表示層次結(jié)構(gòu),利于結(jié)構(gòu)自頂向下分解,形象直觀、可讀性好。Jackson方法用某種形式的偽碼給出程序的過程性描述。(a)順序結(jié)構(gòu)(b)選擇結(jié)構(gòu)(c)可選結(jié)構(gòu)(d)重復(fù)結(jié)構(gòu)BACDI(j)AB*S(i)BoDoACoBo—oAS(i)Jackson圖Jackson圖是Jackson方法分析和設(shè)109JSD方法設(shè)計(jì)步驟分析并確定問題的輸入和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)。找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。根據(jù)下述三條規(guī)則從數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出程序結(jié)構(gòu)的Jackson圖。為每個(gè)有對應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個(gè)處理框。根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。列出操作和條件,并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。用某種形式的偽碼給出程序結(jié)構(gòu)圖對應(yīng)的過程性描述。JSD方法設(shè)計(jì)步驟分析并確定問題的輸入和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),110JSD舉例分析(Jackson圖)JSD舉例分析(Jackson圖)111JSD舉例分析(Jackson圖)JSD舉例分析(Jackson圖)112輸出數(shù)據(jù)輸出數(shù)據(jù)結(jié)構(gòu)輸出數(shù)據(jù)輸出數(shù)據(jù)結(jié)構(gòu)113程序結(jié)構(gòu)程序結(jié)構(gòu)114三種基本控制結(jié)構(gòu)三種基本控制結(jié)構(gòu)115偽碼

PROCESS_CUST_DATAseq

openPAY_FILE;openCUST_M_FILE;{分別打開支付文件和顧客主文件}

PROCESS_CNO_GROUPiteruntileof:PAY_FILE;{處理顧客號碼組}

readPAY_FILE;{讀支付文件一個(gè)記錄}

PROCESS_CNO;{讀顧客主文件一個(gè)記錄,找老結(jié)余}

PROCESS_PAY_RECORDiteruntilend:CNO_GROUP;

{處理顧客號碼組中每個(gè)支付記錄}

writereportline;{寫出報(bào)告行}

computetotalpayments;{計(jì)算總支付額}

readPAY_FILE;{讀支付文件下一個(gè)記錄}

PROCESS_PAY_RECORDend; {一位顧客數(shù)據(jù)處理完}

COMPUTE_CUST_TOTAL; {計(jì)算顧客總數(shù)}

COMPUTE_BALANCEseq {計(jì)算結(jié)余}

PROCESS_OLD_BALANCE; {處理老結(jié)余}

COMPUTE_NEW_BALANCE;{計(jì)算新結(jié)余)

writereportline;{寫出報(bào)告行}

COMPUTE_BALANCEend;{計(jì)算結(jié)余完畢}

PROCESS_CNO_GROUPend;{支付文件處理完成}

PROCESS_CUST_DATAend;{SubstructurePROCESS_CUST_DATA}偽碼PROCESS_CUST_DATAseq

1169.5結(jié)構(gòu)化程序設(shè)計(jì)方法詳細(xì)設(shè)計(jì)階段的任務(wù)是開發(fā)一個(gè)可以直接轉(zhuǎn)換為程序的軟件表示,即對系統(tǒng)中每個(gè)模塊的內(nèi)部過程進(jìn)行設(shè)計(jì)和描述,并使設(shè)計(jì)出的處理過程盡可能簡明易懂。常用的描述工具

-程序流程圖(B-S流程圖)

-盒圖(N-S流程圖)

-PAD圖(問題分析圖)

-HIPO圖(層次加輸入-處理-輸出圖)結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)是詳細(xì)設(shè)計(jì)的邏輯基礎(chǔ)。9.5結(jié)構(gòu)化程序設(shè)計(jì)方法詳細(xì)設(shè)計(jì)階段的任務(wù)是開發(fā)一個(gè)可以直1179.5結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)的理念是在20世紀(jì)60年代,由Dijkstra等人提出并加以完善的。結(jié)構(gòu)化的程序一般只需要用三種基本的邏輯結(jié)構(gòu)就能實(shí)現(xiàn)。這三種基本邏輯結(jié)構(gòu)是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。9.5結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)的理念是在20世紀(jì)61183種基本的控制結(jié)構(gòu)1966年Bohm和Jacopini證明了只用3種基本的控制結(jié)構(gòu)就能實(shí)現(xiàn)任何單入口單出口的程序。這3種基本的控制結(jié)構(gòu)是:“順序”、“選擇”和“循環(huán)。為了實(shí)際使用方便起見,常常還允許使用DO-UNTIL和DO-CASE兩種控制結(jié)構(gòu)。其他常用的控制結(jié)構(gòu)3種基本的控制結(jié)構(gòu)1966年Bohm和Jac119結(jié)構(gòu)化程序設(shè)計(jì)優(yōu)點(diǎn)自頂向下逐步求精的方法符合人類解決復(fù)雜問題的普遍規(guī)律,因此可以顯著提高軟件開發(fā)工程的成功率和生產(chǎn)率。用先全局后局部、先整體后細(xì)節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),因此容易閱讀和理解。不使用GOTO語句僅使用單入口單出口的控制結(jié)構(gòu),使得程序的靜態(tài)結(jié)構(gòu)和它的動態(tài)執(zhí)行情況比較一致。因此,程序容易閱讀和理解,開發(fā)時(shí)也比較容易保證程序的正確性,即使出現(xiàn)錯(cuò)誤也比較容易診斷和改正??刂平Y(jié)構(gòu)有確定的邏輯模式,編寫程序代碼只限于使用很少幾種直截了當(dāng)?shù)姆绞?,因此源程序清晰流暢,易讀易懂而且容易測試。程序清晰和模塊化使得在修改和重新設(shè)計(jì)一個(gè)軟件時(shí)可以重用的代碼量最大。程序的邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。結(jié)構(gòu)化程序設(shè)計(jì)優(yōu)點(diǎn)自頂向下逐步求精的方法符合人類解決復(fù)雜問題120結(jié)構(gòu)程序設(shè)計(jì)的經(jīng)典定義如下所述:“如果一個(gè)程序的代碼塊僅僅通過順序、選擇和循環(huán)這3種基本控制結(jié)構(gòu)進(jìn)行連接,并且每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口,則稱這個(gè)程序是結(jié)構(gòu)化的?!鄙鲜鼋?jīng)典定義過于狹隘了,結(jié)構(gòu)程序設(shè)計(jì)本質(zhì)上并不是無GOTO語句的編程方法,而是一種使程序代碼容易閱讀、容易理解的編程方法。結(jié)構(gòu)程序設(shè)計(jì)盡可能少用GOTO語句,最好僅在檢測出錯(cuò)誤時(shí)才使用GOTO語句。結(jié)構(gòu)程序設(shè)計(jì)的經(jīng)典定義如下所述:“如果一個(gè)程序的代碼塊僅僅通121

如果只允許使用順序、IF-THEN-ELSE型分支和DO-WHILE型循環(huán)這3種基本控制結(jié)構(gòu),則稱為經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì)。如果除了上述3種基本控制結(jié)構(gòu)之外,還允許使用DO-CASE型多分支結(jié)構(gòu)和DO-UNTIL型循環(huán)結(jié)構(gòu),則稱為擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì)。如果再加上允許使用LEAVE(或BREAK)結(jié)構(gòu),則稱為修正的結(jié)構(gòu)程序設(shè)計(jì)。如果只允許使用順序、IF-THEN-ELSE型分122abX1X2X7X6X4X3X5higfedcjFTFFFTTT多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)選擇結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)程序流程圖abX1X2X7X6X4X3X5higfedcjFTFFFT123如圖所示的程序流程圖描繪了一個(gè)非結(jié)構(gòu)化的程序。問題:1.為什么說它是非結(jié)構(gòu)化的?2.利用附加變量flag設(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化程序,用盒圖描繪你的設(shè)計(jì)結(jié)果。3.不用附加變量,設(shè)計(jì)一個(gè)等價(jià)的結(jié)構(gòu)化程序,用盒圖描繪你的設(shè)計(jì)結(jié)果。答:1.程序的循環(huán)控制結(jié)構(gòu)有兩個(gè)出口,因此是非結(jié)構(gòu)化的程序。2.如圖1

。3.如圖2

。圖1圖2如圖所示的程序流程圖描繪了一個(gè)非結(jié)構(gòu)化的程序。問題:124結(jié)構(gòu)化程序設(shè)計(jì)工具圖形工具:把過程的細(xì)節(jié)表示成一個(gè)圖的組成部分,在這個(gè)圖上,邏輯構(gòu)造用具體的圖形來表示。列表工具:用一個(gè)表來表示過程的細(xì)節(jié),這個(gè)表列出了各種操作及其相應(yīng)的條件。也即,描述了輸入、處理和輸出信息。語言工具:用類語言來表示過程的細(xì)節(jié),這種類語言很接近于編程語言。結(jié)構(gòu)化程序設(shè)計(jì)工具圖形工具:把過程的細(xì)節(jié)表示成一個(gè)圖的組成部1251.程序流程圖(

B-S流程圖)程序流程圖又稱為程序框圖,Goldstine于1946年首先采用。從20世紀(jì)40年代末到70年代中期,程序流程圖一直是軟件設(shè)計(jì)的主要工具。它的主要優(yōu)點(diǎn)是對控制流程的描繪很直觀,便于初學(xué)者掌握。程序流程圖的主要缺點(diǎn):程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu);程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制;程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。1.程序流程圖(B-S流程圖)程序流程圖又稱為程序框圖,126程序流程圖符號(a)預(yù)處理(b)選擇(c)多分支(d)循環(huán)上界(e)循環(huán)下界(f)開始/結(jié)束(g)準(zhǔn)備(h)注釋(i)虛線(j)省略(k)并行方式(l)控制流盡管它有種種缺點(diǎn),許多人建議停止使用它,但至今仍在廣泛使用著。不過總的趨勢是越來越多的人不再使用程序流程圖了。程序流程圖符號(a)預(yù)處理(b)選擇1272.盒圖(N-S流程圖)盒圖是由Nassi和Shneiderman提出的,所以又稱為N-S圖。每個(gè)處理步驟都用一個(gè)盒子來表示,這些處理步驟可以是語句或語句序列,在需要時(shí),盒子中還可以嵌套另一個(gè)盒子,嵌套深度一般沒有限制。盒圖具有下述特點(diǎn):

—功能域(即,一個(gè)特定控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出來。

—由于只能從上邊進(jìn)入盒子然后從下面走出盒子,除此之外沒有其它的入口和出口,所以盒圖限制了任意的控制轉(zhuǎn)移,保證程序有良好的結(jié)構(gòu)。

—很容易確定局部和全程數(shù)據(jù)的作用域。

—很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。盒圖很容易表示程序結(jié)構(gòu)化的層次結(jié)構(gòu),確定局部和全局?jǐn)?shù)據(jù)的作用域。由于沒有箭頭,因此不允許隨意轉(zhuǎn)移控制。2.盒圖(N-S流程圖)盒圖是由Nassi和Shneide128盒圖的基本符號結(jié)構(gòu)化設(shè)計(jì)方法課件129ab條件1TF

Case

Xi,i=2,3,4X2X3X4當(dāng)條件3成立條件2直到條件4成立直到條件成立cdefghij順序結(jié)構(gòu)選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)FTTFN-S圖舉例ab條件1TFCaseXi,i=2,130

PAD是問題分析圖(problemanalysisdiagram)的英文縮寫,自1973年由日本日立公司發(fā)明以后,已得到一定程度的推廣。

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論