![第四章 結(jié)構(gòu)化設(shè)計(jì)方法_第1頁(yè)](http://file4.renrendoc.com/view/f249783ef61ff091dfe0d650d52b1da7/f249783ef61ff091dfe0d650d52b1da71.gif)
![第四章 結(jié)構(gòu)化設(shè)計(jì)方法_第2頁(yè)](http://file4.renrendoc.com/view/f249783ef61ff091dfe0d650d52b1da7/f249783ef61ff091dfe0d650d52b1da72.gif)
![第四章 結(jié)構(gòu)化設(shè)計(jì)方法_第3頁(yè)](http://file4.renrendoc.com/view/f249783ef61ff091dfe0d650d52b1da7/f249783ef61ff091dfe0d650d52b1da73.gif)
![第四章 結(jié)構(gòu)化設(shè)計(jì)方法_第4頁(yè)](http://file4.renrendoc.com/view/f249783ef61ff091dfe0d650d52b1da7/f249783ef61ff091dfe0d650d52b1da74.gif)
![第四章 結(jié)構(gòu)化設(shè)計(jì)方法_第5頁(yè)](http://file4.renrendoc.com/view/f249783ef61ff091dfe0d650d52b1da7/f249783ef61ff091dfe0d650d52b1da75.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章結(jié)構(gòu)化設(shè)計(jì)方法第一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五第4章結(jié)構(gòu)化設(shè)計(jì)方法軟件設(shè)計(jì)的概念及原則結(jié)構(gòu)化設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)接口設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)過(guò)程設(shè)計(jì)軟件設(shè)計(jì)規(guī)格說(shuō)明第二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.1軟件設(shè)計(jì)的概念及原則軟件設(shè)計(jì)的概念
設(shè)計(jì)是一項(xiàng)核心的工程活動(dòng)。在20世紀(jì)90年代早期,Lotus1-2-3的發(fā)明人MitchKapor在Dr.Dobbs雜志上發(fā)表了“軟件設(shè)計(jì)宣言”,其中指出:“什么是設(shè)計(jì)?設(shè)計(jì)是你站在兩個(gè)世界——技術(shù)世界和人類(lèi)的目標(biāo)世界——而你嘗試將這兩個(gè)世界結(jié)合在一起……”。第三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.1軟件設(shè)計(jì)的概念及原則軟件設(shè)計(jì)的概念
羅馬建筑批評(píng)家Vitruvius提出了這樣一個(gè)觀念:“設(shè)計(jì)良好的建筑應(yīng)該展示出堅(jiān)固、適用和令人賞心悅目”。第四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.1軟件設(shè)計(jì)的概念及原則軟件設(shè)計(jì)的原則
(1)分而治之分而治之是人們解決大型復(fù)雜問(wèn)題時(shí)通常采用的策略。將大型復(fù)雜的問(wèn)題分解為許多容易解決的小問(wèn)題,原來(lái)的問(wèn)題也就容易解決了。軟件的體系結(jié)構(gòu)設(shè)計(jì)、模塊化設(shè)計(jì)都是分而治之策略的具體表現(xiàn)。第五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五分而治之盡管模塊分解可以簡(jiǎn)化要解決的問(wèn)題,但模塊分解并不是越小越好。模塊規(guī)模的減小,雖然可使開(kāi)發(fā)單個(gè)模塊的成本減少,但隨著模塊數(shù)目增加,模塊之間關(guān)系的復(fù)雜程度也會(huì)增加,設(shè)計(jì)模塊間接口所需要的工作量也將增加,如圖所示:第六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.1軟件設(shè)計(jì)的概念及原則(2)模塊獨(dú)立性模塊的獨(dú)立性是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他的模塊的接口是簡(jiǎn)單的。例如,一個(gè)模塊只具有單一的功能且與其他模塊沒(méi)有太多的聯(lián)系,那么,我們則稱(chēng)此模塊具有模塊獨(dú)立性。一般采用兩個(gè)準(zhǔn)則度量模塊獨(dú)立性。即模塊間的耦合和模塊的內(nèi)聚。第七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五耦合與內(nèi)聚耦合:是模塊間相對(duì)獨(dú)立性(互相連接的緊密程度)的度量。模塊之間連接越緊密、聯(lián)系越多,耦合性就越高,則獨(dú)立性就越弱。內(nèi)聚:是模塊功能強(qiáng)度(模塊內(nèi)部元素彼此結(jié)合的緊密程度)的度量。一般,模塊內(nèi)部各元素間內(nèi)聚性越高,相對(duì)與其它模塊的耦合性就會(huì)降低,而獨(dú)立性就越強(qiáng)。問(wèn)題:模塊和包是什么關(guān)系?第八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.1軟件設(shè)計(jì)的概念及原則(3)提高抽象層次抽象是指忽視一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。當(dāng)我們進(jìn)行軟件設(shè)計(jì)時(shí),設(shè)計(jì)開(kāi)始時(shí)應(yīng)盡量提高軟件的抽象層次,按抽象級(jí)別從高到低進(jìn)行軟件設(shè)計(jì)。第九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.1軟件設(shè)計(jì)的概念及原則(4)復(fù)用性設(shè)計(jì)復(fù)用是指同一事物不做修改或稍加修改就可以多次重復(fù)使用。將復(fù)用的思想用于軟件開(kāi)發(fā),稱(chēng)為軟件復(fù)用。我們將軟件的可重用部分稱(chēng)為軟件構(gòu)件。構(gòu)造新的軟件系統(tǒng)時(shí)不必從零做起,可以直接使用已有的軟構(gòu)件即可組裝(或加以合理修改)成新的系統(tǒng)。第十頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.1軟件設(shè)計(jì)的概念及原則(5)靈活性設(shè)計(jì)保證軟件靈活性設(shè)計(jì)的關(guān)鍵是抽象。面向?qū)ο笙到y(tǒng)中的類(lèi)結(jié)構(gòu)類(lèi)似一座金字塔,越接近金字塔的頂端,抽象程度就越高?!俺橄蟆钡姆戳x詞是“具體”。理想情況下,一個(gè)系統(tǒng)的任何代碼、邏緝、概念在這個(gè)系統(tǒng)中都應(yīng)該是唯一的,也就是說(shuō)不存在重復(fù)的代碼。第十一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.1軟件設(shè)計(jì)的概念及原則在設(shè)計(jì)中引入靈活性的方法有:降低耦合并提高內(nèi)聚(易于提高替換能力);建立抽象(創(chuàng)建有多態(tài)操作的接口和父類(lèi));不要將代碼寫(xiě)死(消除代碼中的常數(shù));拋出異常(由操作的調(diào)用者處理異常);使用并創(chuàng)建可復(fù)用的代碼。第十二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)的任務(wù)結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系模塊結(jié)構(gòu)及表示數(shù)據(jù)結(jié)構(gòu)及表示第十三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.1軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的主要任務(wù)是要解決如何做的問(wèn)題。在需求分析的基礎(chǔ)上,建立各種設(shè)計(jì)模型,并通過(guò)對(duì)設(shè)計(jì)模型的分析和評(píng)估,來(lái)確定這些模型是否能夠滿足需求。軟件設(shè)計(jì)是將用戶需求準(zhǔn)確地轉(zhuǎn)化成為最終的軟件產(chǎn)品的唯一途徑,在需求到構(gòu)造之間起到了橋梁作用。在設(shè)計(jì)階段,往往存在多種設(shè)計(jì)方案,通常需要在多種設(shè)計(jì)方案之中進(jìn)行決策和折中。第十四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.1軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)從工程管理的角度,可以將軟件設(shè)計(jì)分為概要設(shè)計(jì)階段和詳細(xì)設(shè)計(jì)階段。從技術(shù)的角度,傳統(tǒng)的結(jié)構(gòu)化方法將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和過(guò)程設(shè)計(jì)4部分;面向?qū)ο蠓椒▌t將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、類(lèi)設(shè)計(jì)/數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和構(gòu)件級(jí)設(shè)計(jì)4部分。第十五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.1軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)從管理和技術(shù)兩個(gè)不同的角度對(duì)設(shè)計(jì)的認(rèn)識(shí)。
第十六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.1軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)體系結(jié)構(gòu)設(shè)計(jì):體系結(jié)構(gòu)設(shè)計(jì)定義軟件的主要結(jié)構(gòu)元素及其之間的關(guān)系。接口設(shè)計(jì):接口設(shè)計(jì)描述用戶界面,軟件和其他硬件設(shè)備、其他軟件系統(tǒng)及使用人員的外部接口,以及各種構(gòu)件之間的內(nèi)部接口。數(shù)據(jù)設(shè)計(jì):傳統(tǒng)方法主要根據(jù)需求階段所建立的實(shí)體—關(guān)系圖(ER圖)來(lái)確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)及數(shù)據(jù)庫(kù)的表結(jié)構(gòu)。第十七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.1軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的階段與任務(wù)過(guò)程設(shè)計(jì):過(guò)程設(shè)計(jì)的主要工作是確定軟件各個(gè)組成部分內(nèi)的算法及內(nèi)部數(shù)據(jù)結(jié)構(gòu),并選定某種過(guò)程的表達(dá)形式來(lái)描述各種算法。第十八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.2結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系結(jié)構(gòu)化分析的結(jié)果為結(jié)構(gòu)化設(shè)計(jì)提供了最基本的輸入信息。兩者的關(guān)系如圖所示。第十九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.2結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系結(jié)構(gòu)化設(shè)計(jì)方法的實(shí)施要點(diǎn)(1)研究、分析和審查數(shù)據(jù)流圖。(2)根據(jù)數(shù)據(jù)流圖決定問(wèn)題的類(lèi)型:變換型和事務(wù)型。針對(duì)兩種不同的類(lèi)型分別進(jìn)行分析處理。(3)由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。(4)利用一些啟發(fā)式原則來(lái)改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。(5)根據(jù)分析模型中的實(shí)體關(guān)系圖和數(shù)據(jù)字典進(jìn)行數(shù)據(jù)設(shè)計(jì),包括數(shù)據(jù)庫(kù)設(shè)計(jì)或數(shù)據(jù)文件的設(shè)計(jì)。(6)在上面設(shè)計(jì)的基礎(chǔ)上,并依據(jù)分析模型中的加工規(guī)格說(shuō)明、狀態(tài)轉(zhuǎn)換圖進(jìn)行過(guò)程設(shè)計(jì)。(7)制定測(cè)試計(jì)劃。第二十頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.3模塊結(jié)構(gòu)及表示一般通過(guò)功能劃分過(guò)程來(lái)完成軟件結(jié)構(gòu)設(shè)計(jì)。功能劃分過(guò)程從需求分析確立的目標(biāo)系統(tǒng)的模型出發(fā),對(duì)整個(gè)問(wèn)題進(jìn)行分割,使其每一部分用一個(gè)或幾個(gè)軟件模塊加以解決,整個(gè)問(wèn)題就解決了。第二十一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.3模塊結(jié)構(gòu)及表示模塊一個(gè)軟件系統(tǒng)通常由很多模塊組成,結(jié)構(gòu)化程序設(shè)計(jì)中的函數(shù)和子程序都可稱(chēng)為模塊,它是程序語(yǔ)句按邏輯關(guān)系建立起來(lái)的組合體。模塊用矩形框表示,并用模塊的名字標(biāo)記它。第二十二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.3模塊結(jié)構(gòu)及表示模塊的分類(lèi)第二十三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.3模塊結(jié)構(gòu)及表示模塊的結(jié)構(gòu)模塊結(jié)構(gòu)最普通的形式就是樹(shù)狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu),如圖所示。第二十四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.3模塊結(jié)構(gòu)及表示結(jié)構(gòu)圖結(jié)構(gòu)圖(structurechart,SC)是精確表達(dá)模塊結(jié)構(gòu)的圖形表示工具。
(1)模塊的調(diào)用關(guān)系和接口:在結(jié)構(gòu)圖中,兩個(gè)模塊之間用單向箭頭連接。(2)模塊間的信息傳遞:當(dāng)一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運(yùn)行。
第二十五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.3模塊結(jié)構(gòu)及表示結(jié)構(gòu)圖模塊間的調(diào)用關(guān)系和接口表示第二十六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.3模塊結(jié)構(gòu)及表示結(jié)構(gòu)圖(3)條件調(diào)用和循環(huán)調(diào)用:當(dāng)模塊A有條件地調(diào)用另一個(gè)模塊B時(shí),在模塊A的箭頭尾部標(biāo)以一個(gè)菱形符號(hào);當(dāng)一個(gè)模塊A反復(fù)地調(diào)用模塊C和模塊D時(shí),在調(diào)用箭頭尾部則標(biāo)以一個(gè)弧形符號(hào)。
第二十七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.3模塊結(jié)構(gòu)及表示結(jié)構(gòu)圖(4)結(jié)構(gòu)圖的形態(tài)特征。在圖中,上級(jí)模塊調(diào)用下級(jí)模塊,它們之間存在主從關(guān)系。相關(guān)概念:寬度、深度、扇入、扇出。深度:模塊層次數(shù),此圖深度為5寬度:同一層最大模塊數(shù),此圖寬度為7扇出:模塊直接調(diào)用下屬模塊的數(shù)量。扇入:調(diào)用某一模塊的調(diào)用模塊數(shù)量。第二十八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.4數(shù)據(jù)結(jié)構(gòu)及表示數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的各個(gè)元素之間邏輯關(guān)系的一種表示。
數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)應(yīng)確定數(shù)據(jù)的組織、存取方式、相關(guān)程度,以及信息的不同處理方法。數(shù)據(jù)結(jié)構(gòu)的組織方法和復(fù)雜程度可以靈活多樣,但典型的數(shù)據(jù)結(jié)構(gòu)種類(lèi)是有限的,它們是構(gòu)成一些更復(fù)雜結(jié)構(gòu)的基本構(gòu)件塊。第二十九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.2.4數(shù)據(jù)結(jié)構(gòu)及表示典型的數(shù)據(jù)結(jié)構(gòu)第三十頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3體系結(jié)構(gòu)設(shè)計(jì)基于數(shù)據(jù)流方法的設(shè)計(jì)過(guò)程典型的數(shù)據(jù)流類(lèi)型和系統(tǒng)結(jié)構(gòu)變換型映射方法事務(wù)型映射方法軟件模塊結(jié)構(gòu)的改進(jìn)方法第三十一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.1基于數(shù)據(jù)流方法的設(shè)計(jì)過(guò)程基于數(shù)據(jù)流的設(shè)計(jì)方法也稱(chēng)為過(guò)程驅(qū)動(dòng)的設(shè)計(jì)方法;這種方法與軟件需求分析階段的結(jié)構(gòu)化分析方法相銜接,可以很方便地將用數(shù)據(jù)流圖表示的信息轉(zhuǎn)換成程序結(jié)構(gòu)的設(shè)計(jì)描述;這種方法還能和編碼階段的“結(jié)構(gòu)化程序設(shè)計(jì)方法”相適應(yīng),成為常用的結(jié)構(gòu)化設(shè)計(jì)方法。第三十二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.1基于數(shù)據(jù)流方法的設(shè)計(jì)過(guò)程設(shè)計(jì)過(guò)程基于數(shù)據(jù)流方法的設(shè)計(jì)過(guò)程第三十三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.2典型的數(shù)據(jù)流類(lèi)型和系統(tǒng)結(jié)構(gòu)典型的數(shù)據(jù)流類(lèi)型有變換型數(shù)據(jù)流和事務(wù)型數(shù)據(jù)流,數(shù)據(jù)流的類(lèi)型不同,得到的系統(tǒng)結(jié)構(gòu)也不同。通常,一個(gè)系統(tǒng)中的所有數(shù)據(jù)流都可以認(rèn)為是變換流。但是,當(dāng)遇到有明顯事務(wù)特性的數(shù)據(jù)流時(shí),建議采用事務(wù)型映射方法進(jìn)行設(shè)計(jì)。第三十四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.2典型的數(shù)據(jù)流類(lèi)型和系統(tǒng)結(jié)構(gòu)變換型數(shù)據(jù)流變換型數(shù)據(jù)處理問(wèn)題的工作過(guò)程大致分為3步,即取得數(shù)據(jù)、變換數(shù)據(jù)和給出數(shù)據(jù),如圖所示。第三十五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.2典型的數(shù)據(jù)流類(lèi)型和系統(tǒng)結(jié)構(gòu)變換型系統(tǒng)結(jié)構(gòu)圖變換型系統(tǒng)的結(jié)構(gòu)圖由輸入、中心變換和輸出3部分組成。
第三十六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.2典型的數(shù)據(jù)流類(lèi)型和系統(tǒng)結(jié)構(gòu)事務(wù)型數(shù)據(jù)流通常接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。完成選擇分派任務(wù)的部分稱(chēng)為事務(wù)處理中心,或分派部件。
第三十七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.2典型的數(shù)據(jù)流類(lèi)型和系統(tǒng)結(jié)構(gòu)事務(wù)型系統(tǒng)結(jié)構(gòu)圖第三十八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.2典型的數(shù)據(jù)流類(lèi)型和系統(tǒng)結(jié)構(gòu)簡(jiǎn)化的事務(wù)型系統(tǒng)結(jié)構(gòu)圖事務(wù)型系統(tǒng)的結(jié)構(gòu)圖可以有多種不同的形式,如有多層操作層或沒(méi)有操作層。如果調(diào)度模塊并不復(fù)雜,可將其歸入事務(wù)中心模塊。第三十九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.3變換型映射方法系統(tǒng)數(shù)據(jù)處理問(wèn)題的處理流程總能表示為變換型數(shù)據(jù)流圖,進(jìn)一步可采用變換型映射方法建立系統(tǒng)的結(jié)構(gòu)圖。也可能遇到明顯的事務(wù)數(shù)據(jù)處理問(wèn)題,這時(shí)可采用事務(wù)型映射方法。第四十頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.3變換型映射方法變換分析方法的步驟(1)重畫(huà)數(shù)據(jù)流圖:在需求分析階段得到的數(shù)據(jù)流圖側(cè)重于描述系統(tǒng)如何加工數(shù)據(jù),而重畫(huà)數(shù)據(jù)流圖的出發(fā)點(diǎn)是描述系統(tǒng)中的數(shù)據(jù)是如何流動(dòng)的。(2)在數(shù)據(jù)流圖上區(qū)分系統(tǒng)的邏輯輸入、邏輯輸出和中心變換部分。
第四十一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.3變換型映射方法變換分析方法的步驟(3)進(jìn)行一級(jí)分解:設(shè)計(jì)系統(tǒng)模塊結(jié)構(gòu)的頂層和第一層。自頂向下設(shè)計(jì)的關(guān)鍵是找出系統(tǒng)樹(shù)形結(jié)構(gòu)圖的根或頂層模塊。首先設(shè)計(jì)一個(gè)主模塊,并用程序的名字為它命名,然后將它畫(huà)在與中心變換相對(duì)應(yīng)的位置上。第1層設(shè)計(jì):為每個(gè)邏輯輸入設(shè)計(jì)一個(gè)輸入模塊,它的功能是為主模塊提供數(shù)據(jù);為每個(gè)邏輯輸出設(shè)計(jì)一個(gè)輸出模塊,它的功能是將主模塊提供的數(shù)據(jù)輸出;為中心變換設(shè)計(jì)一個(gè)變換模塊,它的功能是將邏輯輸入轉(zhuǎn)換成邏輯輸出。第四十二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.3變換型映射方法變換分析方法的步驟第一層模塊與主模塊之間傳送的數(shù)據(jù)應(yīng)與數(shù)據(jù)流圖相對(duì)應(yīng)。第四十三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.3變換型映射方法變換分析方法的步驟(4)進(jìn)行二級(jí)分解,設(shè)計(jì)中、下層模塊。這一步工作是自頂向下,逐層細(xì)化,為每一個(gè)輸入模塊、輸出模塊、變換模塊設(shè)計(jì)它們的從屬模塊。設(shè)計(jì)下層模塊的順序是任意的。但一般是先設(shè)計(jì)輸入模塊的下層模塊。第四十四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.4事務(wù)型映射方法事務(wù)分析也是從分析數(shù)據(jù)流圖開(kāi)始,自頂向下,逐步分解,建立系統(tǒng)的結(jié)構(gòu)圖。
第四十五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.4事務(wù)型映射方法事務(wù)分析方法的步驟(1)識(shí)別事務(wù)源。利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問(wèn)題定義和需求分析的結(jié)果中,找出各種需要處理的事務(wù)。(2)規(guī)定適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。在確定了該數(shù)據(jù)流圖具有事務(wù)型特征之后,根據(jù)模塊劃分理論,建立適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。(3)識(shí)別各種事務(wù)和它們定義的操作。
(4)注意利用公用模塊。
第四十六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.4事務(wù)型映射方法事務(wù)分析方法的步驟(5)建立事務(wù)處理模塊。對(duì)每一事務(wù),或?qū)β?lián)系密切的一組事務(wù),建立一個(gè)事務(wù)處理模塊。(6)對(duì)事務(wù)處理模塊規(guī)定它們?nèi)康南聦硬僮髂K。(7)對(duì)操作模塊規(guī)定它們的全部細(xì)節(jié)模塊。
大型的軟件系統(tǒng)通常是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu),所以,我們通常利用以變換分析為主,事務(wù)分析為輔的方式進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。第四十七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.4事務(wù)型映射方法混合結(jié)構(gòu)的例子第四十八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(1)模塊功能的完善化。一個(gè)完整的功能模塊,不僅能夠完成指定的功能,而且還應(yīng)當(dāng)能夠告訴使用者完成任務(wù)的狀態(tài),以及不能完成的原因。也就是說(shuō),一個(gè)完整的模塊應(yīng)當(dāng)有以下幾部分。①執(zhí)行規(guī)定的功能的部分。②出錯(cuò)處理的部分。當(dāng)模塊不能完成規(guī)定的功能時(shí),必須回送出錯(cuò)標(biāo)志,向它的調(diào)用者報(bào)告出現(xiàn)這種例外情況的原因。③如果需要返回一系列數(shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時(shí),應(yīng)當(dāng)給它的調(diào)用者返回一個(gè)“結(jié)束標(biāo)志”。第四十九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(2)消除重復(fù)功能,改善軟件結(jié)構(gòu)。①完全相似。在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類(lèi)型上不一致。此時(shí)可以采取完全合并的方法。②局部相似。第五十頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法②局部相似:此時(shí),不可以把兩者合并為一,如圖(b)所示,因?yàn)檫@樣在合并后的模塊內(nèi)部必須設(shè)置許多查詢(xún)開(kāi)關(guān),如圖(f)所示。第五十一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(3)模塊的作用范圍應(yīng)在控制范圍之內(nèi)。模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍。如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡(jiǎn)單的。第五十二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(3)模塊的作用范圍應(yīng)在控制范圍之內(nèi)。圖(b)表明作用范圍不在控制范圍之內(nèi)。模塊G做出一個(gè)判定之后,若需要模塊C工作,則必須把信號(hào)回送給模塊D,再由D把信號(hào)回送給模塊B。圖中加黑框表示判定的作用范圍。(b)第五十三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(3)模塊的作用范圍應(yīng)在控制范圍之內(nèi)。圖(c)雖然表明模塊的作用范圍是在控制范圍之內(nèi),可是判定所在模塊TOP所處層次太高,這樣也需要經(jīng)過(guò)不必要的信號(hào)傳送,增加了數(shù)據(jù)的傳送量。(c)第五十四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(3)模塊的作用范圍應(yīng)在控制范圍之內(nèi)。圖(d)表明作用范圍在控制范圍之內(nèi),只有一個(gè)判定分支有一個(gè)不必要的穿越,是一個(gè)較好的結(jié)構(gòu);圖(e)所示為一個(gè)比較理想的結(jié)構(gòu)。
(d)(e)第五十五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(3)模塊的作用范圍應(yīng)在控制范圍之內(nèi)。如果在設(shè)計(jì)過(guò)程中,發(fā)現(xiàn)作用范圍不在控制范圍內(nèi),可采用如下辦法把作用范圍移到控制范圍之內(nèi):①將判定所在模塊合并到父模塊中,使判定處于較高層次。②將受判定影響的模塊下移到控制范圍內(nèi)。③將判定上移到層次中較高的位置。第五十六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(4)盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。
模塊的扇出數(shù)是指模塊調(diào)用子模塊的個(gè)數(shù)。如果一個(gè)模塊的扇出數(shù)過(guò)大,就意味著該模塊過(guò)分復(fù)雜,需要協(xié)調(diào)和控制過(guò)多的下屬模塊。出現(xiàn)這種情況是由于缺乏中間層次,所以應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。第五十七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(4)盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。
一個(gè)模塊的扇入數(shù)越大,則共享該模塊的上級(jí)模塊數(shù)目越多。扇入大,是有好處的。但如果一個(gè)模塊的扇入數(shù)太大,如超過(guò)8,而它又不是公用模塊,說(shuō)明該模塊可能具有多個(gè)功能。在這種情況下應(yīng)當(dāng)對(duì)它進(jìn)一步分析并將其功能分解。第五十八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(5)避免或減少使用病態(tài)連接。應(yīng)限制使用如下3種病態(tài)連接,通常會(huì)增加耦合度。(a)直接訪問(wèn)內(nèi)部數(shù)據(jù);(b)模塊直接通過(guò)公共數(shù)據(jù)域傳遞數(shù)據(jù),增加耦合度;(c)
通過(guò)通信模塊傳遞數(shù)據(jù)第五十九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(6)模塊的大小要適中。
模塊的大小,可以用模塊中所含語(yǔ)句的數(shù)量的多少來(lái)衡量。通常規(guī)定其語(yǔ)句行數(shù)為50~100,保持在一頁(yè)紙之內(nèi),最多不超過(guò)500行。
第六十頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法實(shí)例研究針對(duì)銀行儲(chǔ)蓄系統(tǒng),開(kāi)發(fā)軟件的結(jié)構(gòu)圖。第1步:對(duì)系統(tǒng)的數(shù)據(jù)流圖進(jìn)行復(fù)查并精化,得到如圖所示數(shù)據(jù)流圖。第六十一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法第2步:確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。通過(guò)對(duì)精化后的數(shù)據(jù)流圖進(jìn)行分析,可以看到整個(gè)系統(tǒng)是對(duì)存款及取款兩種不同的事務(wù)進(jìn)行處理,因此具有事務(wù)特性。第六十二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法第3步:確定輸入流和輸出流的邊界,如圖所示:第六十三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法第4步:完成第一級(jí)分解。分解后的結(jié)構(gòu)圖如圖所示。第六十四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法第5步:完成第二級(jí)分解。對(duì)“輸入數(shù)據(jù)”、“輸出數(shù)據(jù)”和“調(diào)度”模塊進(jìn)行分解,得到未經(jīng)精化的輸入、輸出結(jié)構(gòu)和事務(wù)結(jié)構(gòu),分別如圖(a)、(b)和(c)所示。(b)未經(jīng)精化的輸出結(jié)構(gòu)(a)未經(jīng)精化的輸入結(jié)構(gòu)
(c)未經(jīng)精化的事務(wù)結(jié)構(gòu)第六十五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法第5步:完成第二級(jí)分解。將上面的3部分合在一起,得到初始的軟件結(jié)構(gòu),如圖所示。第六十六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法第6步:對(duì)軟件結(jié)構(gòu)進(jìn)行精化。(1)由于調(diào)度模塊下只有兩種事務(wù),因此,可以將調(diào)度模塊合并到上級(jí)模塊中,如圖所示。第六十七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(2)“檢查密碼”模塊的作用范圍不在其控制范圍之內(nèi)(即“輸入密碼”模塊不在“檢查密碼”模塊的控制范圍之內(nèi)),需對(duì)其進(jìn)行調(diào)整,如圖所示。第六十八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.3.5軟件模塊結(jié)構(gòu)的改進(jìn)方法(3)提高模塊的獨(dú)立性,并對(duì)“輸入事務(wù)”模塊進(jìn)行細(xì)化。也可以將“檢查密碼”功能合并到其上級(jí)模塊中。
第六十九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.4接口設(shè)計(jì)接口設(shè)計(jì)概述
接口設(shè)計(jì)的依據(jù)是數(shù)據(jù)流圖中的自動(dòng)化系統(tǒng)邊界。接口設(shè)計(jì)主要包括3個(gè)方面:模塊或軟件構(gòu)件間的接口設(shè)計(jì);與其他軟硬件系統(tǒng)之間的接口設(shè)計(jì);軟件與人(用戶)之間的交互設(shè)計(jì)。人機(jī)交互(用戶)界面是人機(jī)交互的主要方式第七十頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.4接口設(shè)計(jì)人機(jī)交互界面為了設(shè)計(jì)好人機(jī)交互界面,設(shè)計(jì)者需要了解用戶界面應(yīng)具有的特性;還應(yīng)該認(rèn)真研究使用軟件的用戶,包括用戶是什么人?用戶怎樣學(xué)習(xí)與新的計(jì)算機(jī)系統(tǒng)進(jìn)行交互?用戶需要完成哪些工作?等等。第七十一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.4接口設(shè)計(jì)用戶界面應(yīng)具備的特性可使用性:包括使用簡(jiǎn)單、界面一致、擁有HELP功能、快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本、具有容錯(cuò)能力等。靈活性:考慮到用戶的特點(diǎn)、能力和知識(shí)水平,應(yīng)當(dāng)使用戶接口滿足不同用戶的要求??煽啃裕河脩艚缑娴目煽啃允侵笩o(wú)故障使用的間隔時(shí)間。用戶界面應(yīng)能保證用戶正確、可靠地使用系統(tǒng),保證有關(guān)程序和數(shù)據(jù)的安全性。第七十二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.4接口設(shè)計(jì)用戶類(lèi)型
外行型:以前從未使用過(guò)計(jì)算機(jī)系統(tǒng)的用戶。初學(xué)型:盡管對(duì)新的系統(tǒng)不熟悉,但對(duì)計(jì)算機(jī)還有一些使用經(jīng)驗(yàn)的用戶。熟練型:對(duì)一個(gè)系統(tǒng)有相當(dāng)多的經(jīng)驗(yàn),能夠熟練操作的用戶。專(zhuān)家型:這一類(lèi)用戶了解系統(tǒng)內(nèi)部的構(gòu)造,有關(guān)于系統(tǒng)工作機(jī)制的專(zhuān)業(yè)知識(shí),具有維護(hù)和修改基本系統(tǒng)的能力。專(zhuān)家型需要為他們提供能夠修改和擴(kuò)充系統(tǒng)能力的復(fù)雜界面。第七十三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.4接口設(shè)計(jì)界面設(shè)計(jì)類(lèi)型
第七十四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.4接口設(shè)計(jì)界面設(shè)計(jì)類(lèi)型
在選用界面形式的時(shí)候,應(yīng)當(dāng)考慮每種類(lèi)型的優(yōu)點(diǎn)和限制,可以從以下幾個(gè)方面來(lái)考察:(1)使用的難易程度:對(duì)于沒(méi)有經(jīng)驗(yàn)的用戶,該界面使用的難度有多大。(2)學(xué)習(xí)的難易程度:學(xué)習(xí)該界面的命令和功能的難度有多大。(3)操作速度:在完成一個(gè)指定操作時(shí),在操作步驟、擊鍵和反應(yīng)時(shí)間等方面效率有多高。第七十五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.4接口設(shè)計(jì)界面設(shè)計(jì)類(lèi)型
(4)復(fù)雜程度:該界面提供了什么功能、能否用新的方式組合這些功能以增強(qiáng)界面的功能。(5)控制:人機(jī)交互時(shí),是由計(jì)算機(jī)還是由人發(fā)起和控制對(duì)話。(6)開(kāi)發(fā)的難易程度:該界面設(shè)計(jì)是否有難度、開(kāi)發(fā)工作量有多大。第七十六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.4接口設(shè)計(jì)設(shè)計(jì)詳細(xì)的交互人機(jī)交互的設(shè)計(jì)有若干準(zhǔn)則,包括以下內(nèi)容:(1)一致性。采用一致的術(shù)語(yǔ)、一致的步驟和一致的活動(dòng)。(2)操作步驟少。使擊鍵或點(diǎn)擊鼠標(biāo)的次數(shù)減到最少,甚至要減少做某些事所需的下拉菜單的距離。(3)不要“啞播放”。(4)提供Undo功能。(5)減少人腦的記憶負(fù)擔(dān)。不應(yīng)該要求人從一個(gè)窗口中記住某些信息,然后在另一個(gè)窗口中使用。(6)提高學(xué)習(xí)效率。為高級(jí)特性提供聯(lián)機(jī)幫助,以便用戶在需要時(shí)容易找到。第七十七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.5數(shù)據(jù)設(shè)計(jì)文件設(shè)計(jì)
以下幾種情況適合于選擇文件存儲(chǔ)。(1)數(shù)據(jù)量較大的非結(jié)構(gòu)化數(shù)據(jù),如多媒體信息。(2)數(shù)據(jù)量大,信息松散,如歷史記錄、檔案文件等。(3)非關(guān)系層次化數(shù)據(jù),如系統(tǒng)配置文件。(4)對(duì)數(shù)據(jù)的存取速度要求極高的情況。(5)臨時(shí)存放的數(shù)據(jù)。第七十八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.5數(shù)據(jù)設(shè)計(jì)文件設(shè)計(jì)
要根據(jù)文件的特性,來(lái)確定文件的組織方式。(1)順序文件:這類(lèi)文件分兩種,一種是連續(xù)文件,另一種是串聯(lián)文件。
(2)直接存取文件:可根據(jù)記錄關(guān)鍵字的值,通過(guò)計(jì)算直接得到記錄的存放地址。(3)索引順序文件:其基本數(shù)據(jù)記錄按順序文件組織,記錄排列順序必須按關(guān)鍵字值升序或降序安排,且具有索引部分,索引部分也按同一關(guān)鍵字進(jìn)行索引。
第七十九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.5數(shù)據(jù)設(shè)計(jì)文件設(shè)計(jì)
(4)分區(qū)文件:這類(lèi)文件主要用于存放程序。它由若干稱(chēng)為成員的順序組織的記錄組和索引組成。每一個(gè)成員就是一個(gè)程序,由于各個(gè)程序的長(zhǎng)度不同,所以各個(gè)成員的大小也不同,需要利用索引給出各個(gè)成員的程序名、開(kāi)始存放位置和長(zhǎng)度。(5)虛擬存儲(chǔ)文件:這是基于操作系統(tǒng)的請(qǐng)求頁(yè)式存儲(chǔ)管理功能而建立的索引順序文件。
第八十頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.5數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)
根據(jù)數(shù)據(jù)庫(kù)的組織,可以將數(shù)據(jù)庫(kù)分為網(wǎng)狀數(shù)據(jù)庫(kù)、層次數(shù)據(jù)庫(kù)、關(guān)系數(shù)據(jù)庫(kù)、面向?qū)ο髷?shù)據(jù)庫(kù)、文檔數(shù)據(jù)庫(kù)、多維數(shù)據(jù)庫(kù)等。關(guān)系數(shù)據(jù)庫(kù)最成熟,應(yīng)用也最廣泛,一般情況下,大多數(shù)設(shè)計(jì)者都會(huì)選擇關(guān)系數(shù)據(jù)庫(kù)。在結(jié)構(gòu)化設(shè)計(jì)方法中,很容易將結(jié)構(gòu)化分析階段建立的實(shí)體—關(guān)系模型映射到關(guān)系數(shù)據(jù)庫(kù)中。
第八十一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.5數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)對(duì)象實(shí)體的映射一個(gè)數(shù)據(jù)對(duì)象(實(shí)體)可以映射為一個(gè)表或多個(gè)表,當(dāng)分解為多個(gè)表時(shí),可以采用橫切和豎切的方法。豎切常用于實(shí)例較少而屬性很多的對(duì)象。通常將經(jīng)常使用的屬性放在主表中,而將其他一些次要的屬性放到其他表中。橫切常常用于記錄與時(shí)間相關(guān)的對(duì)象。往往在主表中只記錄最近的對(duì)象,而將以前的記錄轉(zhuǎn)到對(duì)應(yīng)的歷史表中。第八十二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.5數(shù)據(jù)設(shè)計(jì)關(guān)系的映射
一對(duì)一關(guān)系的映射:可以在兩個(gè)表中都引入外鍵,進(jìn)行雙向?qū)Ш健R部梢詫蓚€(gè)數(shù)據(jù)對(duì)象組合成一張單獨(dú)的表。一對(duì)多關(guān)系的映射:可以將關(guān)聯(lián)中的“一”端毫無(wú)變化地映射到一張表,將關(guān)聯(lián)中表示“多”的端上的數(shù)據(jù)對(duì)象映射到帶有外鍵的另一張表,使外鍵滿足關(guān)系引用的完整性。多對(duì)多關(guān)系的映射:為了表示多對(duì)多關(guān)系,關(guān)系模型必須引入一個(gè)關(guān)聯(lián)表,將兩個(gè)數(shù)據(jù)實(shí)體之間的多對(duì)多關(guān)系轉(zhuǎn)換成兩個(gè)一對(duì)多關(guān)系。第八十三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6過(guò)程設(shè)計(jì)概要設(shè)計(jì)的任務(wù)完成后,就進(jìn)入詳細(xì)設(shè)計(jì)階段,也就是過(guò)程設(shè)計(jì)階段。在這個(gè)階段,要決定各個(gè)模塊的實(shí)現(xiàn)算法,并使用過(guò)程描述工具精確地描述這些算法。第八十四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6過(guò)程設(shè)計(jì)表達(dá)過(guò)程規(guī)格說(shuō)明的工具稱(chēng)為過(guò)程描述工具,可以將過(guò)程描述工具分為以下3類(lèi)。(1)圖形工具:把過(guò)程的細(xì)節(jié)用圖形方式描述,如程序流程圖、N-S圖、PAD圖、決策樹(shù)等。(2)表格工具:用一張表來(lái)表達(dá)過(guò)程的細(xì)節(jié)。列出各種可能的操作及其相應(yīng)的條件,即描述了輸入、處理和輸出信息,如決策表。(3)語(yǔ)言工具:用某種類(lèi)高級(jí)語(yǔ)言(稱(chēng)為偽代碼)來(lái)描述過(guò)程的細(xì)節(jié),如很多數(shù)據(jù)結(jié)構(gòu)教材中使用類(lèi)Pascal、類(lèi)C語(yǔ)言來(lái)描述算法。第八十五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.1結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)的概念與原則最早由E.W.Dijkstra提出;建議從高級(jí)語(yǔ)言中取消GOTO語(yǔ)句;1966年,Bohm和Jacopini證明:只用三種基本的控制結(jié)構(gòu)“順序”、“選擇”和“循環(huán)”就能實(shí)現(xiàn)任何單入口和單出口的沒(méi)有“死循環(huán)”的程序。第八十六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.1結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的概念如果一個(gè)程序的代碼塊僅僅通過(guò)順序、選擇和循環(huán)這三種基本控制結(jié)構(gòu)進(jìn)行連接,并且每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口,則稱(chēng)這個(gè)程序是結(jié)構(gòu)化的。第八十七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.1結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的主要原則(1)使用語(yǔ)言中的順序、選擇、重復(fù)等有限的基本控制結(jié)構(gòu)表示程序邏輯。(2)控制結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口。(3)程序語(yǔ)句組成容易識(shí)別的塊(Block),每塊只有一個(gè)入口和一個(gè)出口。(4)復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進(jìn)行組合嵌套來(lái)實(shí)現(xiàn)。(5)語(yǔ)言中沒(méi)有的控制結(jié)構(gòu),可用一段等價(jià)的程序段模擬。第八十八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.1結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的主要原則(6)嚴(yán)格控制GOTO語(yǔ)句,僅在下列情形使用:用非結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言去實(shí)現(xiàn)結(jié)構(gòu)化的構(gòu)造。若不使用GOTO語(yǔ)句就會(huì)使程序功能模糊。在某種可以改善而不是損害程序可讀性的情況下。例如,出現(xiàn)錯(cuò)誤情況要從循環(huán)中轉(zhuǎn)出時(shí)。第八十九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.1結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的主要原則(7)在程序設(shè)計(jì)過(guò)程中,盡量采用自頂向下(Top-Down)、逐步細(xì)化(StepwiseRefinement)的原則,由粗到細(xì),一步步展開(kāi)。第九十頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.2程序流程圖程序流程圖也稱(chēng)為程序框圖,是軟件開(kāi)發(fā)者最熟悉的算法表達(dá)工具。早期的流程圖也存在一些缺點(diǎn)。特別是表示程序控制流程的箭頭,使用的靈活性極大,程序員可以不受任何約束,隨意轉(zhuǎn)移控制,這將不符合結(jié)構(gòu)化程序設(shè)計(jì)的思想。為使用流程圖描述結(jié)構(gòu)化程序,必須對(duì)流程圖加以限制。第九十一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.2程序流程圖程序流程圖的基本控制結(jié)構(gòu)
(1)順序型:幾個(gè)連續(xù)的加工步驟依次排列構(gòu)成。(2)選擇型:由某個(gè)邏輯判斷式的取值決定選擇兩個(gè)加工中的一個(gè)。(3)先判定(while)型循環(huán):在循環(huán)控制條件成立時(shí),重復(fù)執(zhí)行特定的加工。(4)后判定(until)型循環(huán):重復(fù)執(zhí)行某些特定的加工,直至控制條件成立。(5)多情況(case)型選擇:列舉多種加工情況,根據(jù)控制變量的取值,選擇執(zhí)行其一。第九十二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.2程序流程圖程序流程圖的基本控制結(jié)構(gòu)第九十三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.2程序流程圖程序流程圖實(shí)例第九十四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.2程序流程圖程序流程圖的標(biāo)準(zhǔn)符號(hào)(國(guó)家標(biāo)準(zhǔn))第九十五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.2程序流程圖循環(huán)的標(biāo)準(zhǔn)符號(hào)第九十六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.2程序流程圖注解符的使用第九十七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.2程序流程圖多選擇判斷第九十八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.3N-S圖Nassi和Shneiderman提出了一種符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具,叫做盒圖(box-diagram),也叫做N-S圖。在N-S圖中,為了表示5種基本控制結(jié)構(gòu),規(guī)定了5種圖形構(gòu)件。第九十九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.3N-S圖N-S圖的基本控制結(jié)構(gòu)第一百頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.3N-S圖N-S圖的實(shí)例第一百零一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.3N-S圖N-S圖的特點(diǎn)(1)圖中每個(gè)矩形框(除CASE構(gòu)造中表示條件取值的矩形框外)都是明確定義了的功能域(即一個(gè)特定控制結(jié)構(gòu)的作用域),以圖形表示,清晰可見(jiàn)。(2)它的控制轉(zhuǎn)移不能任意規(guī)定,必須遵守結(jié)構(gòu)化程序設(shè)計(jì)的要求。(3)很容易確定局部數(shù)據(jù)、全局?jǐn)?shù)據(jù)的作用域。(4)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。第一百零二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.3N-S圖N-S圖的擴(kuò)展表示第一百零三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.4PAD圖PAD(problemanalysisdiagram)是日本日立公司提出,由程序流程圖演化來(lái)的,用結(jié)構(gòu)化程序設(shè)計(jì)思想表現(xiàn)程序邏輯結(jié)構(gòu)的圖形工具。PAD也設(shè)置了5種基本控制結(jié)構(gòu)的圖式,并允許遞歸使用。第一百零四頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.4PAD圖PAD圖的基本控制結(jié)構(gòu)第一百零五頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.4PAD圖PAD圖的實(shí)例第一百零六頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.4PAD圖PAD的擴(kuò)充控制結(jié)構(gòu)第一百零七頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.4PAD圖PAD的優(yōu)點(diǎn)使用PAD符號(hào)所設(shè)計(jì)出來(lái)的程序必然是結(jié)構(gòu)化程序。PAD圖描繪程序結(jié)構(gòu)清晰,圖中豎線的總條數(shù)就是程序的層次數(shù)。用PAD圖表現(xiàn)程序邏輯易讀、易懂、易記。容易將PAD圖自動(dòng)轉(zhuǎn)換為高級(jí)語(yǔ)言源程序。PAD圖既可以表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu)。PAD圖的符號(hào)支持自頂向下、逐步求精方法的使用。第一百零八頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.5偽代碼偽代碼是一種介于自然語(yǔ)言和形式化語(yǔ)言之間的半形式化語(yǔ)言,是一種用于描述功能模塊的算法設(shè)計(jì)和加工細(xì)節(jié)的語(yǔ)言,也稱(chēng)為程序設(shè)計(jì)語(yǔ)言(ProgramDesignLanguage,PDL)。偽碼的語(yǔ)法規(guī)則分為“外語(yǔ)法”和“內(nèi)語(yǔ)法”。外語(yǔ)法應(yīng)當(dāng)符合一般程序設(shè)計(jì)語(yǔ)言常用語(yǔ)句的語(yǔ)法規(guī)則;內(nèi)語(yǔ)法可以用英語(yǔ)中一些簡(jiǎn)單的句子、短語(yǔ)和通用的數(shù)學(xué)符號(hào)來(lái)描述程序應(yīng)執(zhí)行的功能。第一百零九頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.5偽代碼偽代碼的基本控制結(jié)構(gòu)簡(jiǎn)單陳述句結(jié)構(gòu):避免復(fù)合語(yǔ)句。判定結(jié)構(gòu):IF_THEN_ELSE或CASE_OF結(jié)構(gòu)。重復(fù)結(jié)構(gòu):WHILE_DO或REPEAT_UNTIL結(jié)構(gòu)。第一百一十頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.5偽代碼偽代碼實(shí)例:“檢查訂貨單”例子第一百一十一頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.5偽代碼偽代碼的特點(diǎn)(1)有固定的關(guān)鍵字外語(yǔ)法,提供全部結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說(shuō)明和模塊特征。外語(yǔ)法的關(guān)鍵字是有限的詞匯集,它們能對(duì)偽代碼正文進(jìn)行結(jié)構(gòu)分割,使之變得易于理解。(2)內(nèi)語(yǔ)法使用自然語(yǔ)言來(lái)描述處理特性,為開(kāi)發(fā)者提供方便,提高可讀性。(3)有數(shù)據(jù)說(shuō)明機(jī)制,包括簡(jiǎn)單的(如標(biāo)量和數(shù)組)與復(fù)雜的(如鏈表和層次結(jié)構(gòu))的數(shù)據(jù)結(jié)構(gòu)。(4)有子程序定義與調(diào)用機(jī)制,用以表達(dá)各種方式的接口說(shuō)明。第一百一十二頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.6自頂向下、逐步細(xì)化的設(shè)計(jì)過(guò)程主要包括兩個(gè)方面:一是將復(fù)雜問(wèn)題的解法分解和細(xì)化成由若干個(gè)模塊組成的層次結(jié)構(gòu);二是將每個(gè)模塊的功能逐步分解細(xì)化為一系列的處理。第一百一十三頁(yè),共一百二十一頁(yè),編輯于2023年,星期五4.6.6自頂向下、逐步細(xì)化的設(shè)計(jì)過(guò)程在處理較大的復(fù)雜任務(wù)時(shí),常采取“模塊化”的方法,即在程序設(shè)計(jì)時(shí)不是將全部?jī)?nèi)容都放在同一個(gè)模塊中,而是分成若干個(gè)模塊,每個(gè)模
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)魚(yú)殖合同范本
- 分包單位用工合同范本
- fidic標(biāo)準(zhǔn)合同范本
- 城市軌道交通的學(xué)術(shù)研究與學(xué)科發(fā)展考核試卷
- 呼叫中心客戶服務(wù)質(zhì)量管理工具應(yīng)用考核試卷
- 臨時(shí)設(shè)施轉(zhuǎn)讓合同范本
- 100萬(wàn)買(mǎi)商鋪合同范本
- 家紡產(chǎn)品售后服務(wù)與客戶關(guān)系管理考核試卷
- 2025-2030年廚房垃圾粉碎機(jī)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025-2030年戶外瑜伽墊收納袋行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 《新能源汽車(chē)技術(shù)》課件-第二章 動(dòng)力電池
- 拘留所被拘留人員管理教育
- 河南省天一大聯(lián)考2024-2025學(xué)年高三上學(xué)期1月期末地理含答案
- 2024-2025學(xué)年成都市高一上英語(yǔ)期末考試題(含答案和音頻)
- NB-T 10609-2021 水電工程攔漂排設(shè)計(jì)規(guī)范
- 藝術(shù)課程標(biāo)準(zhǔn)(2022年版)
- 衛(wèi)生部手術(shù)分級(jí)目錄(2023年1月份修訂)
- 即興口語(yǔ)(姜燕)-課件-即興口語(yǔ)第一章PPT-中國(guó)傳媒大學(xué)
- 環(huán)境因素多因子評(píng)價(jià)方法
- 冷卻水路設(shè)計(jì)原則與優(yōu)化實(shí)例
- 門(mén)窗類(lèi)英語(yǔ)匯總
評(píng)論
0/150
提交評(píng)論