第四章 結構化設計方法_第1頁
第四章 結構化設計方法_第2頁
第四章 結構化設計方法_第3頁
第四章 結構化設計方法_第4頁
第四章 結構化設計方法_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章結構化設計方法第1頁,共121頁,2023年,2月20日,星期三第4章結構化設計方法軟件設計的概念及原則結構化設計體系結構設計接口設計數(shù)據(jù)設計過程設計軟件設計規(guī)格說明第2頁,共121頁,2023年,2月20日,星期三4.1軟件設計的概念及原則軟件設計的概念

設計是一項核心的工程活動。在20世紀90年代早期,Lotus1-2-3的發(fā)明人MitchKapor在Dr.Dobbs雜志上發(fā)表了“軟件設計宣言”,其中指出:“什么是設計?設計是你站在兩個世界——技術世界和人類的目標世界——而你嘗試將這兩個世界結合在一起……”。第3頁,共121頁,2023年,2月20日,星期三4.1軟件設計的概念及原則軟件設計的概念

羅馬建筑批評家Vitruvius提出了這樣一個觀念:“設計良好的建筑應該展示出堅固、適用和令人賞心悅目”。第4頁,共121頁,2023年,2月20日,星期三4.1軟件設計的概念及原則軟件設計的原則

(1)分而治之分而治之是人們解決大型復雜問題時通常采用的策略。將大型復雜的問題分解為許多容易解決的小問題,原來的問題也就容易解決了。軟件的體系結構設計、模塊化設計都是分而治之策略的具體表現(xiàn)。第5頁,共121頁,2023年,2月20日,星期三分而治之盡管模塊分解可以簡化要解決的問題,但模塊分解并不是越小越好。模塊規(guī)模的減小,雖然可使開發(fā)單個模塊的成本減少,但隨著模塊數(shù)目增加,模塊之間關系的復雜程度也會增加,設計模塊間接口所需要的工作量也將增加,如圖所示:第6頁,共121頁,2023年,2月20日,星期三4.1軟件設計的概念及原則(2)模塊獨立性模塊的獨立性是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他的模塊的接口是簡單的。例如,一個模塊只具有單一的功能且與其他模塊沒有太多的聯(lián)系,那么,我們則稱此模塊具有模塊獨立性。一般采用兩個準則度量模塊獨立性。即模塊間的耦合和模塊的內(nèi)聚。第7頁,共121頁,2023年,2月20日,星期三耦合與內(nèi)聚耦合:是模塊間相對獨立性(互相連接的緊密程度)的度量。模塊之間連接越緊密、聯(lián)系越多,耦合性就越高,則獨立性就越弱。內(nèi)聚:是模塊功能強度(模塊內(nèi)部元素彼此結合的緊密程度)的度量。一般,模塊內(nèi)部各元素間內(nèi)聚性越高,相對與其它模塊的耦合性就會降低,而獨立性就越強。問題:模塊和包是什么關系?第8頁,共121頁,2023年,2月20日,星期三4.1軟件設計的概念及原則(3)提高抽象層次抽象是指忽視一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。當我們進行軟件設計時,設計開始時應盡量提高軟件的抽象層次,按抽象級別從高到低進行軟件設計。第9頁,共121頁,2023年,2月20日,星期三4.1軟件設計的概念及原則(4)復用性設計復用是指同一事物不做修改或稍加修改就可以多次重復使用。將復用的思想用于軟件開發(fā),稱為軟件復用。我們將軟件的可重用部分稱為軟件構件。構造新的軟件系統(tǒng)時不必從零做起,可以直接使用已有的軟構件即可組裝(或加以合理修改)成新的系統(tǒng)。第10頁,共121頁,2023年,2月20日,星期三4.1軟件設計的概念及原則(5)靈活性設計保證軟件靈活性設計的關鍵是抽象。面向?qū)ο笙到y(tǒng)中的類結構類似一座金字塔,越接近金字塔的頂端,抽象程度就越高。“抽象”的反義詞是“具體”。理想情況下,一個系統(tǒng)的任何代碼、邏緝、概念在這個系統(tǒng)中都應該是唯一的,也就是說不存在重復的代碼。第11頁,共121頁,2023年,2月20日,星期三4.1軟件設計的概念及原則在設計中引入靈活性的方法有:降低耦合并提高內(nèi)聚(易于提高替換能力);建立抽象(創(chuàng)建有多態(tài)操作的接口和父類);不要將代碼寫死(消除代碼中的常數(shù));拋出異常(由操作的調(diào)用者處理異常);使用并創(chuàng)建可復用的代碼。第12頁,共121頁,2023年,2月20日,星期三4.2結構化設計結構化設計的任務結構化設計與結構化分析的關系模塊結構及表示數(shù)據(jù)結構及表示第13頁,共121頁,2023年,2月20日,星期三4.2.1軟件設計的任務軟件設計的主要任務是要解決如何做的問題。在需求分析的基礎上,建立各種設計模型,并通過對設計模型的分析和評估,來確定這些模型是否能夠滿足需求。軟件設計是將用戶需求準確地轉(zhuǎn)化成為最終的軟件產(chǎn)品的唯一途徑,在需求到構造之間起到了橋梁作用。在設計階段,往往存在多種設計方案,通常需要在多種設計方案之中進行決策和折中。第14頁,共121頁,2023年,2月20日,星期三4.2.1軟件設計的任務軟件設計的階段與任務從工程管理的角度,可以將軟件設計分為概要設計階段和詳細設計階段。從技術的角度,傳統(tǒng)的結構化方法將軟件設計劃分為體系結構設計、數(shù)據(jù)設計、接口設計和過程設計4部分;面向?qū)ο蠓椒▌t將軟件設計劃分為體系結構設計、類設計/數(shù)據(jù)設計、接口設計和構件級設計4部分。第15頁,共121頁,2023年,2月20日,星期三4.2.1軟件設計的任務軟件設計的階段與任務從管理和技術兩個不同的角度對設計的認識。

第16頁,共121頁,2023年,2月20日,星期三4.2.1軟件設計的任務軟件設計的階段與任務體系結構設計:體系結構設計定義軟件的主要結構元素及其之間的關系。接口設計:接口設計描述用戶界面,軟件和其他硬件設備、其他軟件系統(tǒng)及使用人員的外部接口,以及各種構件之間的內(nèi)部接口。數(shù)據(jù)設計:傳統(tǒng)方法主要根據(jù)需求階段所建立的實體—關系圖(ER圖)來確定軟件涉及的文件系統(tǒng)的結構及數(shù)據(jù)庫的表結構。第17頁,共121頁,2023年,2月20日,星期三4.2.1軟件設計的任務軟件設計的階段與任務過程設計:過程設計的主要工作是確定軟件各個組成部分內(nèi)的算法及內(nèi)部數(shù)據(jù)結構,并選定某種過程的表達形式來描述各種算法。第18頁,共121頁,2023年,2月20日,星期三4.2.2結構化設計與結構化分析的關系結構化分析的結果為結構化設計提供了最基本的輸入信息。兩者的關系如圖所示。第19頁,共121頁,2023年,2月20日,星期三4.2.2結構化設計與結構化分析的關系結構化設計方法的實施要點(1)研究、分析和審查數(shù)據(jù)流圖。(2)根據(jù)數(shù)據(jù)流圖決定問題的類型:變換型和事務型。針對兩種不同的類型分別進行分析處理。(3)由數(shù)據(jù)流圖推導出系統(tǒng)的初始結構圖。(4)利用一些啟發(fā)式原則來改進系統(tǒng)的初始結構圖,直到得到符合要求的結構圖為止。(5)根據(jù)分析模型中的實體關系圖和數(shù)據(jù)字典進行數(shù)據(jù)設計,包括數(shù)據(jù)庫設計或數(shù)據(jù)文件的設計。(6)在上面設計的基礎上,并依據(jù)分析模型中的加工規(guī)格說明、狀態(tài)轉(zhuǎn)換圖進行過程設計。(7)制定測試計劃。第20頁,共121頁,2023年,2月20日,星期三4.2.3模塊結構及表示一般通過功能劃分過程來完成軟件結構設計。功能劃分過程從需求分析確立的目標系統(tǒng)的模型出發(fā),對整個問題進行分割,使其每一部分用一個或幾個軟件模塊加以解決,整個問題就解決了。第21頁,共121頁,2023年,2月20日,星期三4.2.3模塊結構及表示模塊一個軟件系統(tǒng)通常由很多模塊組成,結構化程序設計中的函數(shù)和子程序都可稱為模塊,它是程序語句按邏輯關系建立起來的組合體。模塊用矩形框表示,并用模塊的名字標記它。第22頁,共121頁,2023年,2月20日,星期三4.2.3模塊結構及表示模塊的分類第23頁,共121頁,2023年,2月20日,星期三4.2.3模塊結構及表示模塊的結構模塊結構最普通的形式就是樹狀結構和網(wǎng)狀結構,如圖所示。第24頁,共121頁,2023年,2月20日,星期三4.2.3模塊結構及表示結構圖結構圖(structurechart,SC)是精確表達模塊結構的圖形表示工具。

(1)模塊的調(diào)用關系和接口:在結構圖中,兩個模塊之間用單向箭頭連接。(2)模塊間的信息傳遞:當一個模塊調(diào)用另一個模塊時,調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運行。

第25頁,共121頁,2023年,2月20日,星期三4.2.3模塊結構及表示結構圖模塊間的調(diào)用關系和接口表示第26頁,共121頁,2023年,2月20日,星期三4.2.3模塊結構及表示結構圖(3)條件調(diào)用和循環(huán)調(diào)用:當模塊A有條件地調(diào)用另一個模塊B時,在模塊A的箭頭尾部標以一個菱形符號;當一個模塊A反復地調(diào)用模塊C和模塊D時,在調(diào)用箭頭尾部則標以一個弧形符號。

第27頁,共121頁,2023年,2月20日,星期三4.2.3模塊結構及表示結構圖(4)結構圖的形態(tài)特征。在圖中,上級模塊調(diào)用下級模塊,它們之間存在主從關系。相關概念:寬度、深度、扇入、扇出。深度:模塊層次數(shù),此圖深度為5寬度:同一層最大模塊數(shù),此圖寬度為7扇出:模塊直接調(diào)用下屬模塊的數(shù)量。扇入:調(diào)用某一模塊的調(diào)用模塊數(shù)量。第28頁,共121頁,2023年,2月20日,星期三4.2.4數(shù)據(jù)結構及表示數(shù)據(jù)結構是數(shù)據(jù)的各個元素之間邏輯關系的一種表示。

數(shù)據(jù)結構設計應確定數(shù)據(jù)的組織、存取方式、相關程度,以及信息的不同處理方法。數(shù)據(jù)結構的組織方法和復雜程度可以靈活多樣,但典型的數(shù)據(jù)結構種類是有限的,它們是構成一些更復雜結構的基本構件塊。第29頁,共121頁,2023年,2月20日,星期三4.2.4數(shù)據(jù)結構及表示典型的數(shù)據(jù)結構第30頁,共121頁,2023年,2月20日,星期三4.3體系結構設計基于數(shù)據(jù)流方法的設計過程典型的數(shù)據(jù)流類型和系統(tǒng)結構變換型映射方法事務型映射方法軟件模塊結構的改進方法第31頁,共121頁,2023年,2月20日,星期三4.3.1基于數(shù)據(jù)流方法的設計過程基于數(shù)據(jù)流的設計方法也稱為過程驅(qū)動的設計方法;這種方法與軟件需求分析階段的結構化分析方法相銜接,可以很方便地將用數(shù)據(jù)流圖表示的信息轉(zhuǎn)換成程序結構的設計描述;這種方法還能和編碼階段的“結構化程序設計方法”相適應,成為常用的結構化設計方法。第32頁,共121頁,2023年,2月20日,星期三4.3.1基于數(shù)據(jù)流方法的設計過程設計過程基于數(shù)據(jù)流方法的設計過程第33頁,共121頁,2023年,2月20日,星期三4.3.2典型的數(shù)據(jù)流類型和系統(tǒng)結構典型的數(shù)據(jù)流類型有變換型數(shù)據(jù)流和事務型數(shù)據(jù)流,數(shù)據(jù)流的類型不同,得到的系統(tǒng)結構也不同。通常,一個系統(tǒng)中的所有數(shù)據(jù)流都可以認為是變換流。但是,當遇到有明顯事務特性的數(shù)據(jù)流時,建議采用事務型映射方法進行設計。第34頁,共121頁,2023年,2月20日,星期三4.3.2典型的數(shù)據(jù)流類型和系統(tǒng)結構變換型數(shù)據(jù)流變換型數(shù)據(jù)處理問題的工作過程大致分為3步,即取得數(shù)據(jù)、變換數(shù)據(jù)和給出數(shù)據(jù),如圖所示。第35頁,共121頁,2023年,2月20日,星期三4.3.2典型的數(shù)據(jù)流類型和系統(tǒng)結構變換型系統(tǒng)結構圖變換型系統(tǒng)的結構圖由輸入、中心變換和輸出3部分組成。

第36頁,共121頁,2023年,2月20日,星期三4.3.2典型的數(shù)據(jù)流類型和系統(tǒng)結構事務型數(shù)據(jù)流通常接受一項事務,根據(jù)事務處理的特點和性質(zhì),選擇分派一個適當?shù)奶幚韱卧?,然后給出結果。完成選擇分派任務的部分稱為事務處理中心,或分派部件。

第37頁,共121頁,2023年,2月20日,星期三4.3.2典型的數(shù)據(jù)流類型和系統(tǒng)結構事務型系統(tǒng)結構圖第38頁,共121頁,2023年,2月20日,星期三4.3.2典型的數(shù)據(jù)流類型和系統(tǒng)結構簡化的事務型系統(tǒng)結構圖事務型系統(tǒng)的結構圖可以有多種不同的形式,如有多層操作層或沒有操作層。如果調(diào)度模塊并不復雜,可將其歸入事務中心模塊。第39頁,共121頁,2023年,2月20日,星期三4.3.3變換型映射方法系統(tǒng)數(shù)據(jù)處理問題的處理流程總能表示為變換型數(shù)據(jù)流圖,進一步可采用變換型映射方法建立系統(tǒng)的結構圖。也可能遇到明顯的事務數(shù)據(jù)處理問題,這時可采用事務型映射方法。第40頁,共121頁,2023年,2月20日,星期三4.3.3變換型映射方法變換分析方法的步驟(1)重畫數(shù)據(jù)流圖:在需求分析階段得到的數(shù)據(jù)流圖側(cè)重于描述系統(tǒng)如何加工數(shù)據(jù),而重畫數(shù)據(jù)流圖的出發(fā)點是描述系統(tǒng)中的數(shù)據(jù)是如何流動的。(2)在數(shù)據(jù)流圖上區(qū)分系統(tǒng)的邏輯輸入、邏輯輸出和中心變換部分。

第41頁,共121頁,2023年,2月20日,星期三4.3.3變換型映射方法變換分析方法的步驟(3)進行一級分解:設計系統(tǒng)模塊結構的頂層和第一層。自頂向下設計的關鍵是找出系統(tǒng)樹形結構圖的根或頂層模塊。首先設計一個主模塊,并用程序的名字為它命名,然后將它畫在與中心變換相對應的位置上。第1層設計:為每個邏輯輸入設計一個輸入模塊,它的功能是為主模塊提供數(shù)據(jù);為每個邏輯輸出設計一個輸出模塊,它的功能是將主模塊提供的數(shù)據(jù)輸出;為中心變換設計一個變換模塊,它的功能是將邏輯輸入轉(zhuǎn)換成邏輯輸出。第42頁,共121頁,2023年,2月20日,星期三4.3.3變換型映射方法變換分析方法的步驟第一層模塊與主模塊之間傳送的數(shù)據(jù)應與數(shù)據(jù)流圖相對應。第43頁,共121頁,2023年,2月20日,星期三4.3.3變換型映射方法變換分析方法的步驟(4)進行二級分解,設計中、下層模塊。這一步工作是自頂向下,逐層細化,為每一個輸入模塊、輸出模塊、變換模塊設計它們的從屬模塊。設計下層模塊的順序是任意的。但一般是先設計輸入模塊的下層模塊。第44頁,共121頁,2023年,2月20日,星期三4.3.4事務型映射方法事務分析也是從分析數(shù)據(jù)流圖開始,自頂向下,逐步分解,建立系統(tǒng)的結構圖。

第45頁,共121頁,2023年,2月20日,星期三4.3.4事務型映射方法事務分析方法的步驟(1)識別事務源。利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問題定義和需求分析的結果中,找出各種需要處理的事務。(2)規(guī)定適當?shù)氖聞招徒Y構。在確定了該數(shù)據(jù)流圖具有事務型特征之后,根據(jù)模塊劃分理論,建立適當?shù)氖聞招徒Y構。(3)識別各種事務和它們定義的操作。

(4)注意利用公用模塊。

第46頁,共121頁,2023年,2月20日,星期三4.3.4事務型映射方法事務分析方法的步驟(5)建立事務處理模塊。對每一事務,或?qū)β?lián)系密切的一組事務,建立一個事務處理模塊。(6)對事務處理模塊規(guī)定它們?nèi)康南聦硬僮髂K。(7)對操作模塊規(guī)定它們的全部細節(jié)模塊。

大型的軟件系統(tǒng)通常是變換型結構和事務型結構的混合結構,所以,我們通常利用以變換分析為主,事務分析為輔的方式進行軟件結構設計。第47頁,共121頁,2023年,2月20日,星期三4.3.4事務型映射方法混合結構的例子第48頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(1)模塊功能的完善化。一個完整的功能模塊,不僅能夠完成指定的功能,而且還應當能夠告訴使用者完成任務的狀態(tài),以及不能完成的原因。也就是說,一個完整的模塊應當有以下幾部分。①執(zhí)行規(guī)定的功能的部分。②出錯處理的部分。當模塊不能完成規(guī)定的功能時,必須回送出錯標志,向它的調(diào)用者報告出現(xiàn)這種例外情況的原因。③如果需要返回一系列數(shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結束時,應當給它的調(diào)用者返回一個“結束標志”。第49頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(2)消除重復功能,改善軟件結構。①完全相似。在結構上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時可以采取完全合并的方法。②局部相似。第50頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法②局部相似:此時,不可以把兩者合并為一,如圖(b)所示,因為這樣在合并后的模塊內(nèi)部必須設置許多查詢開關,如圖(f)所示。第51頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(3)模塊的作用范圍應在控制范圍之內(nèi)。模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個判定的作用范圍,凡是受這個判定影響的所有模塊都屬于這個判定的作用范圍。如果一個判定的作用范圍包含在這個判定所在模塊的控制范圍之內(nèi),則這種結構是簡單的。第52頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(3)模塊的作用范圍應在控制范圍之內(nèi)。圖(b)表明作用范圍不在控制范圍之內(nèi)。模塊G做出一個判定之后,若需要模塊C工作,則必須把信號回送給模塊D,再由D把信號回送給模塊B。圖中加黑框表示判定的作用范圍。(b)第53頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(3)模塊的作用范圍應在控制范圍之內(nèi)。圖(c)雖然表明模塊的作用范圍是在控制范圍之內(nèi),可是判定所在模塊TOP所處層次太高,這樣也需要經(jīng)過不必要的信號傳送,增加了數(shù)據(jù)的傳送量。(c)第54頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(3)模塊的作用范圍應在控制范圍之內(nèi)。圖(d)表明作用范圍在控制范圍之內(nèi),只有一個判定分支有一個不必要的穿越,是一個較好的結構;圖(e)所示為一個比較理想的結構。

(d)(e)第55頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(3)模塊的作用范圍應在控制范圍之內(nèi)。如果在設計過程中,發(fā)現(xiàn)作用范圍不在控制范圍內(nèi),可采用如下辦法把作用范圍移到控制范圍之內(nèi):①將判定所在模塊合并到父模塊中,使判定處于較高層次。②將受判定影響的模塊下移到控制范圍內(nèi)。③將判定上移到層次中較高的位置。第56頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(4)盡可能減少高扇出結構,隨著深度增大扇入。

模塊的扇出數(shù)是指模塊調(diào)用子模塊的個數(shù)。如果一個模塊的扇出數(shù)過大,就意味著該模塊過分復雜,需要協(xié)調(diào)和控制過多的下屬模塊。出現(xiàn)這種情況是由于缺乏中間層次,所以應當適當增加中間層次的控制模塊。第57頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(4)盡可能減少高扇出結構,隨著深度增大扇入。

一個模塊的扇入數(shù)越大,則共享該模塊的上級模塊數(shù)目越多。扇入大,是有好處的。但如果一個模塊的扇入數(shù)太大,如超過8,而它又不是公用模塊,說明該模塊可能具有多個功能。在這種情況下應當對它進一步分析并將其功能分解。第58頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(5)避免或減少使用病態(tài)連接。應限制使用如下3種病態(tài)連接,通常會增加耦合度。(a)直接訪問內(nèi)部數(shù)據(jù);(b)模塊直接通過公共數(shù)據(jù)域傳遞數(shù)據(jù),增加耦合度;(c)

通過通信模塊傳遞數(shù)據(jù)第59頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(6)模塊的大小要適中。

模塊的大小,可以用模塊中所含語句的數(shù)量的多少來衡量。通常規(guī)定其語句行數(shù)為50~100,保持在一頁紙之內(nèi),最多不超過500行。

第60頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法實例研究針對銀行儲蓄系統(tǒng),開發(fā)軟件的結構圖。第1步:對系統(tǒng)的數(shù)據(jù)流圖進行復查并精化,得到如圖所示數(shù)據(jù)流圖。第61頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法第2步:確定數(shù)據(jù)流圖具有變換特性還是事務特性。通過對精化后的數(shù)據(jù)流圖進行分析,可以看到整個系統(tǒng)是對存款及取款兩種不同的事務進行處理,因此具有事務特性。第62頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法第3步:確定輸入流和輸出流的邊界,如圖所示:第63頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法第4步:完成第一級分解。分解后的結構圖如圖所示。第64頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法第5步:完成第二級分解。對“輸入數(shù)據(jù)”、“輸出數(shù)據(jù)”和“調(diào)度”模塊進行分解,得到未經(jīng)精化的輸入、輸出結構和事務結構,分別如圖(a)、(b)和(c)所示。(b)未經(jīng)精化的輸出結構(a)未經(jīng)精化的輸入結構

(c)未經(jīng)精化的事務結構第65頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法第5步:完成第二級分解。將上面的3部分合在一起,得到初始的軟件結構,如圖所示。第66頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法第6步:對軟件結構進行精化。(1)由于調(diào)度模塊下只有兩種事務,因此,可以將調(diào)度模塊合并到上級模塊中,如圖所示。第67頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(2)“檢查密碼”模塊的作用范圍不在其控制范圍之內(nèi)(即“輸入密碼”模塊不在“檢查密碼”模塊的控制范圍之內(nèi)),需對其進行調(diào)整,如圖所示。第68頁,共121頁,2023年,2月20日,星期三4.3.5軟件模塊結構的改進方法(3)提高模塊的獨立性,并對“輸入事務”模塊進行細化。也可以將“檢查密碼”功能合并到其上級模塊中。

第69頁,共121頁,2023年,2月20日,星期三4.4接口設計接口設計概述

接口設計的依據(jù)是數(shù)據(jù)流圖中的自動化系統(tǒng)邊界。接口設計主要包括3個方面:模塊或軟件構件間的接口設計;與其他軟硬件系統(tǒng)之間的接口設計;軟件與人(用戶)之間的交互設計。人機交互(用戶)界面是人機交互的主要方式第70頁,共121頁,2023年,2月20日,星期三4.4接口設計人機交互界面為了設計好人機交互界面,設計者需要了解用戶界面應具有的特性;還應該認真研究使用軟件的用戶,包括用戶是什么人?用戶怎樣學習與新的計算機系統(tǒng)進行交互?用戶需要完成哪些工作?等等。第71頁,共121頁,2023年,2月20日,星期三4.4接口設計用戶界面應具備的特性可使用性:包括使用簡單、界面一致、擁有HELP功能、快速的系統(tǒng)響應和低的系統(tǒng)成本、具有容錯能力等。靈活性:考慮到用戶的特點、能力和知識水平,應當使用戶接口滿足不同用戶的要求??煽啃裕河脩艚缑娴目煽啃允侵笩o故障使用的間隔時間。用戶界面應能保證用戶正確、可靠地使用系統(tǒng),保證有關程序和數(shù)據(jù)的安全性。第72頁,共121頁,2023年,2月20日,星期三4.4接口設計用戶類型

外行型:以前從未使用過計算機系統(tǒng)的用戶。初學型:盡管對新的系統(tǒng)不熟悉,但對計算機還有一些使用經(jīng)驗的用戶。熟練型:對一個系統(tǒng)有相當多的經(jīng)驗,能夠熟練操作的用戶。專家型:這一類用戶了解系統(tǒng)內(nèi)部的構造,有關于系統(tǒng)工作機制的專業(yè)知識,具有維護和修改基本系統(tǒng)的能力。專家型需要為他們提供能夠修改和擴充系統(tǒng)能力的復雜界面。第73頁,共121頁,2023年,2月20日,星期三4.4接口設計界面設計類型

第74頁,共121頁,2023年,2月20日,星期三4.4接口設計界面設計類型

在選用界面形式的時候,應當考慮每種類型的優(yōu)點和限制,可以從以下幾個方面來考察:(1)使用的難易程度:對于沒有經(jīng)驗的用戶,該界面使用的難度有多大。(2)學習的難易程度:學習該界面的命令和功能的難度有多大。(3)操作速度:在完成一個指定操作時,在操作步驟、擊鍵和反應時間等方面效率有多高。第75頁,共121頁,2023年,2月20日,星期三4.4接口設計界面設計類型

(4)復雜程度:該界面提供了什么功能、能否用新的方式組合這些功能以增強界面的功能。(5)控制:人機交互時,是由計算機還是由人發(fā)起和控制對話。(6)開發(fā)的難易程度:該界面設計是否有難度、開發(fā)工作量有多大。第76頁,共121頁,2023年,2月20日,星期三4.4接口設計設計詳細的交互人機交互的設計有若干準則,包括以下內(nèi)容:(1)一致性。采用一致的術語、一致的步驟和一致的活動。(2)操作步驟少。使擊鍵或點擊鼠標的次數(shù)減到最少,甚至要減少做某些事所需的下拉菜單的距離。(3)不要“啞播放”。(4)提供Undo功能。(5)減少人腦的記憶負擔。不應該要求人從一個窗口中記住某些信息,然后在另一個窗口中使用。(6)提高學習效率。為高級特性提供聯(lián)機幫助,以便用戶在需要時容易找到。第77頁,共121頁,2023年,2月20日,星期三4.5數(shù)據(jù)設計文件設計

以下幾種情況適合于選擇文件存儲。(1)數(shù)據(jù)量較大的非結構化數(shù)據(jù),如多媒體信息。(2)數(shù)據(jù)量大,信息松散,如歷史記錄、檔案文件等。(3)非關系層次化數(shù)據(jù),如系統(tǒng)配置文件。(4)對數(shù)據(jù)的存取速度要求極高的情況。(5)臨時存放的數(shù)據(jù)。第78頁,共121頁,2023年,2月20日,星期三4.5數(shù)據(jù)設計文件設計

要根據(jù)文件的特性,來確定文件的組織方式。(1)順序文件:這類文件分兩種,一種是連續(xù)文件,另一種是串聯(lián)文件。

(2)直接存取文件:可根據(jù)記錄關鍵字的值,通過計算直接得到記錄的存放地址。(3)索引順序文件:其基本數(shù)據(jù)記錄按順序文件組織,記錄排列順序必須按關鍵字值升序或降序安排,且具有索引部分,索引部分也按同一關鍵字進行索引。

第79頁,共121頁,2023年,2月20日,星期三4.5數(shù)據(jù)設計文件設計

(4)分區(qū)文件:這類文件主要用于存放程序。它由若干稱為成員的順序組織的記錄組和索引組成。每一個成員就是一個程序,由于各個程序的長度不同,所以各個成員的大小也不同,需要利用索引給出各個成員的程序名、開始存放位置和長度。(5)虛擬存儲文件:這是基于操作系統(tǒng)的請求頁式存儲管理功能而建立的索引順序文件。

第80頁,共121頁,2023年,2月20日,星期三4.5數(shù)據(jù)設計數(shù)據(jù)庫設計

根據(jù)數(shù)據(jù)庫的組織,可以將數(shù)據(jù)庫分為網(wǎng)狀數(shù)據(jù)庫、層次數(shù)據(jù)庫、關系數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫、文檔數(shù)據(jù)庫、多維數(shù)據(jù)庫等。關系數(shù)據(jù)庫最成熟,應用也最廣泛,一般情況下,大多數(shù)設計者都會選擇關系數(shù)據(jù)庫。在結構化設計方法中,很容易將結構化分析階段建立的實體—關系模型映射到關系數(shù)據(jù)庫中。

第81頁,共121頁,2023年,2月20日,星期三4.5數(shù)據(jù)設計數(shù)據(jù)對象實體的映射一個數(shù)據(jù)對象(實體)可以映射為一個表或多個表,當分解為多個表時,可以采用橫切和豎切的方法。豎切常用于實例較少而屬性很多的對象。通常將經(jīng)常使用的屬性放在主表中,而將其他一些次要的屬性放到其他表中。橫切常常用于記錄與時間相關的對象。往往在主表中只記錄最近的對象,而將以前的記錄轉(zhuǎn)到對應的歷史表中。第82頁,共121頁,2023年,2月20日,星期三4.5數(shù)據(jù)設計關系的映射

一對一關系的映射:可以在兩個表中都引入外鍵,進行雙向?qū)Ш健R部梢詫蓚€數(shù)據(jù)對象組合成一張單獨的表。一對多關系的映射:可以將關聯(lián)中的“一”端毫無變化地映射到一張表,將關聯(lián)中表示“多”的端上的數(shù)據(jù)對象映射到帶有外鍵的另一張表,使外鍵滿足關系引用的完整性。多對多關系的映射:為了表示多對多關系,關系模型必須引入一個關聯(lián)表,將兩個數(shù)據(jù)實體之間的多對多關系轉(zhuǎn)換成兩個一對多關系。第83頁,共121頁,2023年,2月20日,星期三4.6過程設計概要設計的任務完成后,就進入詳細設計階段,也就是過程設計階段。在這個階段,要決定各個模塊的實現(xiàn)算法,并使用過程描述工具精確地描述這些算法。第84頁,共121頁,2023年,2月20日,星期三4.6過程設計表達過程規(guī)格說明的工具稱為過程描述工具,可以將過程描述工具分為以下3類。(1)圖形工具:把過程的細節(jié)用圖形方式描述,如程序流程圖、N-S圖、PAD圖、決策樹等。(2)表格工具:用一張表來表達過程的細節(jié)。列出各種可能的操作及其相應的條件,即描述了輸入、處理和輸出信息,如決策表。(3)語言工具:用某種類高級語言(稱為偽代碼)來描述過程的細節(jié),如很多數(shù)據(jù)結構教材中使用類Pascal、類C語言來描述算法。第85頁,共121頁,2023年,2月20日,星期三4.6.1結構化程序設計結構化程序設計的概念與原則最早由E.W.Dijkstra提出;建議從高級語言中取消GOTO語句;1966年,Bohm和Jacopini證明:只用三種基本的控制結構“順序”、“選擇”和“循環(huán)”就能實現(xiàn)任何單入口和單出口的沒有“死循環(huán)”的程序。第86頁,共121頁,2023年,2月20日,星期三4.6.1結構化程序設計結構程序設計的概念如果一個程序的代碼塊僅僅通過順序、選擇和循環(huán)這三種基本控制結構進行連接,并且每個代碼塊只有一個入口和一個出口,則稱這個程序是結構化的。第87頁,共121頁,2023年,2月20日,星期三4.6.1結構化程序設計結構程序設計的主要原則(1)使用語言中的順序、選擇、重復等有限的基本控制結構表示程序邏輯。(2)控制結構只準許有一個入口和一個出口。(3)程序語句組成容易識別的塊(Block),每塊只有一個入口和一個出口。(4)復雜結構應該用基本控制結構進行組合嵌套來實現(xiàn)。(5)語言中沒有的控制結構,可用一段等價的程序段模擬。第88頁,共121頁,2023年,2月20日,星期三4.6.1結構化程序設計結構程序設計的主要原則(6)嚴格控制GOTO語句,僅在下列情形使用:用非結構化的程序設計語言去實現(xiàn)結構化的構造。若不使用GOTO語句就會使程序功能模糊。在某種可以改善而不是損害程序可讀性的情況下。例如,出現(xiàn)錯誤情況要從循環(huán)中轉(zhuǎn)出時。第89頁,共121頁,2023年,2月20日,星期三4.6.1結構化程序設計結構程序設計的主要原則(7)在程序設計過程中,盡量采用自頂向下(Top-Down)、逐步細化(StepwiseRefinement)的原則,由粗到細,一步步展開。第90頁,共121頁,2023年,2月20日,星期三4.6.2程序流程圖程序流程圖也稱為程序框圖,是軟件開發(fā)者最熟悉的算法表達工具。早期的流程圖也存在一些缺點。特別是表示程序控制流程的箭頭,使用的靈活性極大,程序員可以不受任何約束,隨意轉(zhuǎn)移控制,這將不符合結構化程序設計的思想。為使用流程圖描述結構化程序,必須對流程圖加以限制。第91頁,共121頁,2023年,2月20日,星期三4.6.2程序流程圖程序流程圖的基本控制結構

(1)順序型:幾個連續(xù)的加工步驟依次排列構成。(2)選擇型:由某個邏輯判斷式的取值決定選擇兩個加工中的一個。(3)先判定(while)型循環(huán):在循環(huán)控制條件成立時,重復執(zhí)行特定的加工。(4)后判定(until)型循環(huán):重復執(zhí)行某些特定的加工,直至控制條件成立。(5)多情況(case)型選擇:列舉多種加工情況,根據(jù)控制變量的取值,選擇執(zhí)行其一。第92頁,共121頁,2023年,2月20日,星期三4.6.2程序流程圖程序流程圖的基本控制結構第93頁,共121頁,2023年,2月20日,星期三4.6.2程序流程圖程序流程圖實例第94頁,共121頁,2023年,2月20日,星期三4.6.2程序流程圖程序流程圖的標準符號(國家標準)第95頁,共121頁,2023年,2月20日,星期三4.6.2程序流程圖循環(huán)的標準符號第96頁,共121頁,2023年,2月20日,星期三4.6.2程序流程圖注解符的使用第97頁,共121頁,2023年,2月20日,星期三4.6.2程序流程圖多選擇判斷第98頁,共121頁,2023年,2月20日,星期三4.6.3N-S圖Nassi和Shneiderman提出了一種符合結構化程序設計原則的圖形描述工具,叫做盒圖(box-diagram),也叫做N-S圖。在N-S圖中,為了表示5種基本控制結構,規(guī)定了5種圖形構件。第99頁,共121頁,2023年,2月20日,星期三4.6.3N-S圖N-S圖的基本控制結構第100頁,共121頁,2023年,2月20日,星期三4.6.3N-S圖N-S圖的實例第101頁,共121頁,2023年,2月20日,星期三4.6.3N-S圖N-S圖的特點(1)圖中每個矩形框(除CASE構造中表示條件取值的矩形框外)都是明確定義了的功能域(即一個特定控制結構的作用域),以圖形表示,清晰可見。(2)它的控制轉(zhuǎn)移不能任意規(guī)定,必須遵守結構化程序設計的要求。(3)很容易確定局部數(shù)據(jù)、全局數(shù)據(jù)的作用域。(4)很容易表現(xiàn)嵌套關系,也可以表示模塊的層次結構。第102頁,共121頁,2023年,2月20日,星期三4.6.3N-S圖N-S圖的擴展表示第103頁,共121頁,2023年,2月20日,星期三4.6.4PAD圖PAD(problemanalysisdiagram)是日本日立公司提出,由程序流程圖演化來的,用結構化程序設計思想表現(xiàn)程序邏輯結構的圖形工具。PAD也設置了5種基本控制結構的圖式,并允許遞歸使用。第104頁,共121頁,2023年,2月20日,星期三4.6.4PAD圖PAD圖的基本控制結構第105頁,共121頁,2023年,2月20日,星期三4.6.4PAD圖PAD圖的實例第106頁,共121頁,2023年,2月20日,星期三4.6.4PAD圖PAD的擴充控制結構第107頁,共121頁,2023年,2月20日,星期三4.6.4PAD圖PAD的優(yōu)點使用PAD符號所設計出來的程序必然是結構化程序。PAD圖描繪程序結構清晰,圖中豎線的總條數(shù)就是程序的層次數(shù)。用PAD圖表現(xiàn)程序邏輯易讀、易懂、易記。容易將PAD圖自動轉(zhuǎn)換為高級語言源程序。PAD圖既可以表示程序邏輯,也可用于描繪數(shù)據(jù)結構。PAD圖的符號支持自頂向下、逐步求精方法的使用。第108頁,共121頁,2023年,2月20日,星期三4.6.5偽代碼偽代碼是一種介于自然語言和形式化語言之間的半形式化語言,是一種用于描述功能模塊的算法設計和加工細節(jié)的語言,也稱為程序設計語言(ProgramDesignLanguage,PDL)。偽碼的語法規(guī)則分為“外語法”和“內(nèi)語法”。外語法應當符合一般程序設計語言常用語句的語法規(guī)則;內(nèi)語法可以用英語中一些簡單的句子、短語和通用的數(shù)學符號來描述程序應執(zhí)行的功能。第109頁,共121頁,2023年,2月20日,星期三4.6.5偽代碼偽代碼的基本控制結構簡單陳述句結構:避免復合語句。判定結構:IF_THEN_ELSE或CASE_OF結構。重復結構:WHILE_DO或REPEAT_UNTIL結構。第110頁,共121頁,2023年,2月20日,星期三4.6.5偽代碼偽代碼實例:“檢查訂貨單”例子第111頁,共121頁,2023年,2月20日,星期三4.6.5偽代碼偽代碼的特點(1)有固定的關鍵字外語法,提供全部結構化控制結構、數(shù)據(jù)說明和模塊特征。外語法的關鍵字是有限的詞匯集,它們能對偽代碼正文進行結構分割,使之變得易于理解。(2)內(nèi)語法使用自然語言來描述處理特性,為開發(fā)者提供方便,提高可讀性。(3)有數(shù)據(jù)說明機制,包括簡單的(如標量和數(shù)組)與復雜的(如鏈表和層次結構)的數(shù)據(jù)結構。(4)有子程序定義與調(diào)用機制,用以表達各種方式的接口說明。第112頁,共121頁,2023年,2月20日,星期三4.6.6自頂向下、逐步細化的設計過程主要包括兩個方面:一是將復雜問題的解法分解和細化成由若干個模塊組成的層次結構;二是將每個模塊的功能逐步分解細化為一系列的處理。第113頁,共121頁,2023年,2月20日,星期三4.6.6自頂向下、逐步細化的設計過程在處理較大的復雜任務時,常采取“模塊化”的方法,即在程序設計時不是將全部內(nèi)容都放在同一個模塊中,而是分成

溫馨提示

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

評論

0/150

提交評論