版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 第4章 結構化軟件設計6學時武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 引言 設計人員把分析的結果設計圖紙 程序員拿著設計圖紙編寫代碼名字:讀者信息編號:DS01描述:記錄讀者的基本信息定義:讀者信息= 姓名 + 單位 +讀者類型 + 職稱 + 電話位置:數據庫的讀者信息表 模塊模塊 1 1 模塊模塊 2 2 模塊模塊 3 3 模塊模塊4 4 模塊模塊 5 5 模塊模塊 6 6 輸入處理說明輸出讀者輸入讀者DS102備注:需求規(guī)格說明書概要設計概要設計設計圖紙設計圖紙-軟件結構圖軟件結構圖模塊模塊4設計設計詳細設計詳細
2、設計需求分析成果武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 第4章 結構化軟件設計 1)結構化設計的基本概念2)方法和步驟2)詳細設計的方法。3)軟件設計的原則。4)影響軟件設計的主要因素。掌握掌握 掌握理解了解要求要求武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) o 通過軟件設計將用戶的需求變?yōu)閷崿F軟件的“藍圖”。藍圖只描述軟件的整體框架,也叫做概要設計。概要設計之后,就要對軟件進行詳細設計,通過對軟件設計的不斷細化,形成一個可以實施的設計方案。o 軟件設計的最終目標是要取得最佳方案?!白罴选笔侵冈谒泻蜻x方案中,能夠以最低的成本,在最短的時間內,生產出可靠性和
3、可維護性俱佳軟件的方案。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.1 軟件設計的概念4.1.1模塊和模塊化o 一般把用一個名字就可調用的一段程序稱為“模塊”。模塊具有如下三個基本屬性。n 功能:指該模塊要完成的任務。n 邏輯:模塊內部執(zhí)行過程。n 狀態(tài):使用該模塊時的環(huán)境和條件。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.1.1模塊和模塊化(續(xù))o 把整個系統(tǒng)劃分成若干個模塊,每個模塊完成一個子功能,將多個模塊組織起來實現整個系統(tǒng)的功能。o 模塊化設計方法強調清楚地定義每個模塊的功能和它的輸入/輸出參數,而模塊的實現細節(jié)隱藏在各自的模塊之中,與其它模塊
4、之間的關系可以是調用關系,因此模塊化程序易于調試和修改。o 隨著模塊規(guī)模的減小,模塊的開發(fā)成本減少,但是模塊之間的接口變得復雜起來,使得模塊的集成成本增加。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.1.2內聚和耦合內聚和耦合o 在軟件設計中應該保持模塊的獨立性原則。反映模塊獨立性的有兩個標準:內聚和耦合。n 內聚衡量一個模塊內部各個元素彼此結合的緊密程度n 耦合衡量模塊之間彼此依賴的程度。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.1.2內聚和耦合(續(xù))內聚和耦合(續(xù))o 模塊間相互關聯(lián)的程度取決于下面幾點:n 一個模塊對另一個模塊的訪問,比如模塊A可
5、能要調用模塊B來完成一個功能。n 模塊間傳遞的數據量。n 模塊間接口的復雜程度。Great deal of dependenceIndependent Highly coupledLoosely coupledUncoupled 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 7種耦合的獨立性內容耦合公共耦合外部耦合控制耦合數據結構耦合數據耦合非直接耦合模塊獨立性模塊耦合性低高弱強武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.1.2內聚和耦合(續(xù))內聚和耦合(續(xù))內容耦合:如果一個模內容耦合:如果一個模塊直接引用另一個模塊塊直接引用另一個模塊的內容。的內容。例例1
6、:A訪問訪問C的內部數的內部數據或不通過正常入據或不通過正常入口而轉入口而轉入C的內部。的內部。ABCDA:goto C1C:C1: 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 公共耦合公共耦合多個模塊都訪問同一個公共數據環(huán)境,則稱它們是公共耦合。 問題:公共部分的改動將影響所有調用它的模塊;問題:公共部分的改動將影響所有調用它的模塊;公共部分的數據存取無法控制;公共部分的數據存取無法控制;復雜程度隨耦合模塊的個數增加而增加復雜程度隨耦合模塊的個數增加而增加Global:V1, V2A:A1=V1+V2B:V1=B1Global:V1,V2A:V1+B:V2=B1+V1武當山武
7、當山旅游門戶網站旅游門戶網站(http:/ wd) 控制耦合控制耦合模塊A向模塊B傳遞一個控制信息,稱這兩個模塊是控制耦合的。 o B模塊的具體功能取決于控制信息FlagABFlagF2F1FnFlag武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 數據耦合數據耦合如果兩個模塊傳遞的是數據項,則這兩個模塊是數據耦合。A模塊B模塊參數武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 模塊內部各個元素彼此結合的緊密程度模塊內部各個元素彼此結合的緊密程度7種內聚的獨立性武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 內聚和耦合(續(xù))內聚和耦合(續(xù))武當山武當山旅游門
8、戶網站旅游門戶網站(http:/ wd) 內聚和耦合(續(xù))內聚和耦合(續(xù))武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) o通信內聚通信內聚:一個模塊內各功能部分一個模塊內各功能部分都針對相同輸入都針對相同輸入/輸出數據進行處輸出數據進行處理。理。內聚和耦合(續(xù))內聚和耦合(續(xù))武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) o 過程內聚:過程內聚:模塊執(zhí)行的若干動作,相互關聯(lián)并且有順模塊執(zhí)行的若干動作,相互關聯(lián)并且有順序關系。例如,從錄入界面讀取數據,然后更新數據序關系。例如,從錄入界面讀取數據,然后更新數據庫記錄。它仍然是將多個相關的功能放在一個模塊中庫記錄。它仍然
9、是將多個相關的功能放在一個模塊中實現。實現。內聚和耦合(續(xù))內聚和耦合(續(xù))武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) o時間內聚:時間內聚:模塊的各個功能的執(zhí)模塊的各個功能的執(zhí)行與時間有關,通常要求所有功行與時間有關,通常要求所有功能必須在同一時間段內執(zhí)行。例能必須在同一時間段內執(zhí)行。例如初始化模塊和終止模塊。如初始化模塊和終止模塊。內聚和耦合(續(xù))內聚和耦合(續(xù))武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) o 邏輯內聚:邏輯內聚:一個模塊一個模塊完成的任務在邏輯上完成的任務在邏輯上相同相同/相似。相似。A:讀磁盤讀磁盤讀磁帶讀磁帶讀光盤讀光盤from dis
10、kfrom tapefrom 內聚和耦合(續(xù))內聚和耦合(續(xù))武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) o 巧合內聚又稱為偶巧合內聚又稱為偶然內聚。當模塊內然內聚。當模塊內各部分之間沒有聯(lián)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系,這種聯(lián) 系也系也很松散。很松散。內聚和耦合(續(xù))內聚和耦合(續(xù))武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.1.3抽象o 所謂抽象就是將事務的相似方面集中和概括起來,暫時忽略它們之間的差異。或者說,抽象就是抽出事務的本質特性而暫時不考慮它們的細節(jié)。o 在最高的抽象層次上,用自然語言,配合面向問題的專業(yè)術語,概括
11、地描述問題的解法。o 在中間的抽象層次上,采用過程化的描述方法。o 在最底層,使用能夠直接實現的方式來描述問題的解。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.1.4信息隱藏o 核心內容是:一個模塊中所包含的信息,不允許其他不需要這些信息的模塊訪問。o 模塊化可以通過定義一組相互獨立的模塊來實現,這些獨立的模塊彼此間僅僅交換那些為完成相應功能而必須交換的信息。o 信息隱蔽對模塊的過程細節(jié)和局部數據結構進行了屏蔽。o 在設計模塊時采取信息隱藏,使得大多數處理細節(jié)對軟件的其他部分是隱蔽的。在將來修改軟件時偶然引入錯誤所造成的影響就可以局限在一個或幾個模塊內部,不至于波及到軟件其
12、他部分。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.1.5軟件結構圖o Yourdon提出的軟件結構圖非常適合表示軟件的結構。圖中的每個方框代表一個模塊,框內注明模塊的名稱、主要功能,方框之間的箭頭線表示模塊間的調用關系。o 結構圖中還可以標注模塊之間傳遞的數據和控制信息。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 結構圖說明o 模塊的名字應當能夠反映該模塊的功能,如:查詢。o 模塊的調用關系和接口:兩個模塊之間用單向箭頭連接。箭頭從調用模塊指向被調用模塊,當被調用模塊執(zhí)行結束后,控制又返回到調用模塊。o 模塊間的信息傳遞:當一個模塊調用另一個模塊時,調用模
13、塊把數據或控制信息傳送給被調用模塊,以使被調用模塊能夠運行。被調用模塊執(zhí)行過程中又把它產生的數據或控制信息回送給調用模塊。為了區(qū)別在模塊之間傳遞的是數據還是控制信息,用 表示數據信息,用 表示控制信息。通常在短箭頭附近注有信息的名字。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 結構圖說明(續(xù))o 兩個輔助符號:用符號表示一個模塊有條件地調用另一個模塊;用符號表示模塊循環(huán)調用它的各下屬模塊。圖中模塊A下加一個菱形表示控制模塊A按條件選擇調用模塊B、模塊C、模塊D。ACBDACBD武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 結構圖說明(續(xù))o 結構圖的形態(tài)特征:上層
14、模塊調用下層模塊,模塊自上而下“主宰”,自下而上“從屬”。同一層的模塊之間并沒有這種主從關系。o 結構圖的深度:在多層次的結構圖中,模塊結構的層數稱為該結構圖的深度。下面結構圖的深度為7。結構圖的深度在一定意義上反映了程序結構的規(guī)模和復雜程度。對于中等規(guī)模的程序,結構圖的深度約為10左右。對于一個大型程序,深度可以有幾十層。o 結構圖的寬度:結構圖中模塊數最多的那層的模塊個數稱為結構圖的寬度,下圖的寬度為6。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 結構圖說明(續(xù))o 模塊的扇入和扇出:扇出表示一個模塊直接調用的其他模塊數目。扇入則定義為調用一個給定模塊的模塊個數。多扇出意味
15、著需要控制和協(xié)調許多下屬模塊。而多扇入的模塊通常是公用模塊。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.2軟件設計軟件設計原則原則和影響設計的因素和影響設計的因素o設計可回溯到需求。軟件設計中的每個元素都可以對應到需求,保證設計使用戶需要的。o充分利用已有的模塊。一個復雜的軟件通常是由一系列模塊組成,很多模塊可能在以前的系統(tǒng)中已經開發(fā)過了,如果這些模塊設計得好,具有良好的可復用性,那么在設計新軟件時應該盡可能使用已有的模塊。o軟件模塊之間應該遵循高內聚、低耦合和信息隱藏的設計原則。o設計應該表現出一致性和規(guī)范性。在設計開始之前,設計小組應該定義設計風格和設計規(guī)范,保證不同的
16、設計人員設計出風格一致的軟件。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 軟件設計軟件設計原則原則和影響設計的因素(續(xù))和影響設計的因素(續(xù))o 容錯性設計。不管多么完善的軟件都可能有潛在的問題,所以設計人員應該為軟件進行容錯性設計,當軟件遇到異常數據、事件或操作時,軟件不至于徹底崩潰。o 設計的粒度要適當。設計不是編碼,即使在詳細設計階段,設計模型的抽象級別也比源代碼要高,它涉及的是模塊內部的實現算法和數據結構。因此,不要用具體的程序代碼取代設計。o 在設計時就要開始評估軟件的質量。軟件的質量屬性需要在設計時考慮如何實現,不要等全部設計結束之后再考慮軟件的質量。武當山武當山旅
17、游門戶網站旅游門戶網站(http:/ wd) 軟件設計原則和軟件設計原則和影響設計的因素影響設計的因素(續(xù))(續(xù))o 由多人共同設計一個軟件時的協(xié)調問題;o 設計人員的設計經驗、理解力和喜好的差別;o 一致的設計規(guī)范約束;o 設計者的文化背景、信仰、價值觀等其他方面的問題,這些都是影響軟件設計的因素。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.3 結構化設計方法結構化設計方法o 結構化設計方法通常也叫做面向數據流的設計或面向過程的設計。o 結構化設計是基于模塊化的、自頂向下、逐步求精等技術基礎上的設計方法。o 結構化設計與結構化分析和結構化編程方法前后呼應,形成了統(tǒng)一、完整
18、的系列化方法。o 結構化設計方法以需求分析階段獲得的數據流程圖為基礎,通過一系列映射,把數據流程圖變換為軟件結構圖。 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 結構化設計方法4步驟1)分析數據流的類型。數據流的類型有變換型和事)分析數據流的類型。數據流的類型有變換型和事務型兩種,不同類型的數據流程圖映射的軟件結務型兩種,不同類型的數據流程圖映射的軟件結構有所不同。構有所不同。2)將數據流程圖映射為程序結構圖。)將數據流程圖映射為程序結構圖。3)優(yōu)化設計結構。)優(yōu)化設計結構。4)評審軟件結構。)評審軟件結構。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 變換型數據
19、流o 在變換型的數據流程圖上劃分邏輯輸入、中心變換、邏輯輸出的邊界; 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 變換型數據流程軟件結構圖1)重畫數據流程圖,重畫數據流程圖應注意以下幾個要點:n 從物理輸入到物理輸出。n 當數據流進入和離開一個處理時,要仔細地標記它們,不要重名。n 數據流程圖中的數據存儲先略去,造成的數據開鏈視為數據的物理輸入或輸出。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 2)在數據流程圖上區(qū)分系統(tǒng)的邏輯輸入、邏輯輸出和中心變換部分。n從數據流程圖的物理輸入端開始,向系統(tǒng)的中間移動,一直到某個數據流不再被看作是系統(tǒng)的輸入為止,這個數據流的前
20、一個數據流就是系統(tǒng)的邏輯輸入。從物理輸入端到邏輯輸入,構成軟件的輸入部分。n同理從物理輸出端開始,向系統(tǒng)的中間移動,就可以找到軟件的邏輯輸出。n在輸入部分和輸出部分之間的就是中心變換部分。 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 3)設計軟件結構的頂層和第1層。n 設計一個主模塊,并用系統(tǒng)的名字為它命名,做為系統(tǒng)的頂層。n 第1層:為每個邏輯輸入設計一個輸入模塊,它的功能是為主模塊提供數據;為每一個邏輯輸出設計一個輸出模塊,它的功能是將主模塊提供的數據輸出;為中心變換設計一個變換模塊,它的功能是將邏輯輸入轉換成邏輯輸出。n 主模塊控制和協(xié)調第1層的輸入模塊、變換模塊和輸出模
21、塊的工作。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4)設計軟件結構的下層結構。n每個邏輯輸入模塊有兩個下屬模塊:一個接收數據;另一個把數據變換成上級模塊所需要的數據格式。而接收數據模塊又是輸入模塊,又要重復上述工作。如此循環(huán)下去,直到輸入模塊已經涉及到物理輸入端為止。n同樣,每個邏輯輸出模塊有兩個下屬模塊:一個是將上級模塊提供的數據變換成輸出的形式;另一個是將它們輸出。對于每一個邏輯輸出,在數據流程圖上向物理輸出端方向移動,遇到物理輸出為止。n設計中心變換模塊的下層模塊沒有通用的方法,一般應參照數據流程圖的中心變換部分和功能分解的原則來考慮如何對中心變換模塊進行分解。武當山
22、武當山旅游門戶網站旅游門戶網站(http:/ wd) 轉換后的初始軟件結構圖武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 事務型數據流o 在事務型流程圖上劃分接收分支和發(fā)送分支的邊界,見右圖。o 注意:兩種類型的數據流有時會同時出現在一個流程圖中,例如右圖中的路徑L是變換型數據流。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 事務型數據流程軟件結構圖1)重畫數據流程圖,重畫數據流程圖應注意以下幾個要點:n 從物理輸入到物理輸出。n 當數據流進入和離開一個處理時,要仔細地標記它們,不要重名。n 數據流程圖中的數據存儲先略去,造成的數據開鏈視為數據的物理輸入或輸出。武當
23、山武當山旅游門戶網站旅游門戶網站(http:/ wd) 2)標識事務中心、事務接收路徑和事務處理路徑。n通常事務中心位于幾條處理路徑的起點,從數據流程圖上很容易標識出來,因為事務處理中心一般會有“發(fā)射中心”的特征。例如,上圖中的“判斷命令”處理就是一個事務中心,它有三條發(fā)射路徑。n事務中心前面的部分叫做接收路徑,發(fā)射中心后面各條發(fā)散路徑叫做事務處理路徑。對于每條處理路徑來講,還應該確定它們自己的流特征。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 3)設計軟件結構的頂層和第1層。n 軟件結構圖的頂層是系統(tǒng)的事務控制模塊。n 第1層是由事務流輸入分支和事務分類處理分支映射得到的程序
24、結構。也就是說,第1層通常是由兩部分組成:取得事務和處理事務。 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4)設計軟件結構的下層結構。n設計事務流輸入分支的方法與變換分析中輸入流的設計方法類似,從事務中心變換開始,沿輸入路徑向物理輸入端移動。每個接收數據模塊的功能是向調用它的上級模塊提供數據,它需要有兩個下屬模塊:一個接收數據;另一個把這些數據變換成它的上級模塊所需要的數據格式。接收數據模塊又是輸入模塊,也要重復上述工作。如此循環(huán)下去,直到輸入模塊已經涉及到物理輸入端為止。n事務處理分支結構映射成一個分類控制模塊,它控制下層的處理模塊。對每個事務建立一個事務處理模塊。如果發(fā)現
25、在系統(tǒng)中有類似的事務,就可以把這些類似的事務組織成一個公共事務處理模塊。但是,如果組合后的模塊是低內聚的,則應該重新考慮組合問題 。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 轉換后的初始軟件結構圖武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.4 優(yōu)化軟件結構設計 o 數據流程圖轉換為軟件結構圖,應該對軟件結構圖進行優(yōu)化。使其符合高內聚低耦合的、模塊化、信息隱藏的原則。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.4 優(yōu)化軟件結構設計(續(xù))o 規(guī)則一:模塊功能完善化。一個完整的功能模塊,不僅能夠完成指定的功能,而且還應當能夠向調用者返回完成任
26、務的狀態(tài),以及失敗的原因。因此要求功能模塊除了應該執(zhí)行規(guī)定的功能外,還應該具有出錯處理的內容,當模塊不能完成規(guī)定的功能時,必須回送出錯標志,向它的調用者報告失敗的原因。如果模塊正確結束,應該返回正確結束的標志。上述所有內容,都應當看做是一個模塊的有機組成部分,不應分離到其他模塊中去,否則將會增大模塊間的耦合程度。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.4 優(yōu)化軟件結構設計(續(xù))o 規(guī)則二:設計功能單一和結果可預測的模塊。一個功能單一和結果可預測的模塊可以被看成是一個“黑箱”,不論內部處理細節(jié)如何,對于相同的輸入數據,總能產生同樣的結果。但是,如果模塊內部蘊藏有一些特殊的
27、鮮為人知的功能時,其模塊的結果可能無法預測。例如,如果在模塊內部有一個局部控制變量,在運行過程中模塊的處理由這個控制變量確定,由于這個局部控制變量對于調用模塊來說是隱蔽的,所以調用模塊無法控制這個模塊的執(zhí)行,也不能預知將會引起什么后果,有可能造成混亂。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.4 優(yōu)化軟件結構設計(續(xù))o 規(guī)則三:消除重復功能,改善軟件結構。應當認真審查初始的軟件結構圖,如果發(fā)現幾個模塊的功能有相似之處,應該加以改進。例如,當兩個模塊的功能完全相似,而只是所處理的數據類型不一致時,應該合并模塊,同時修改模塊的數據類型和變量定義。但是,如果兩個模塊的功能只是
28、局部相似時,最好不要簡單地合二為一,因為這種簡單的并后會造成模塊內部設置許多判斷開關,模塊的接口參數勢必會傳遞一些控制信息,造成模塊內聚降低。通常的處理辦法是分析兩個相似的模塊,找出相同的部分,然后將相同的部分從分離出去組成一個新的模塊。 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.4 優(yōu)化軟件結構設計(續(xù))o 規(guī)則四:模塊的作用范圍應在控制范圍之內。首先定義一個模塊的控制范圍是:是這個模塊及其所有下屬模塊。例如圖中模塊E的控制范圍是I、H、J。o 一個模塊的作用范圍是:這個模塊內判定的作用范圍,凡是受這個判定影響的模塊都屬于這個判定的作用范圍。例如圖中模塊J的一個判定傳遞
29、給E模塊,然后再傳遞給I和H模塊,這時模塊J的作用范圍是模塊E、I、J。顯然,這種設計是不好的,因為模塊I和H不是模塊J的控制范圍,這樣就導致模塊之間傳遞的是控制參數,使模塊之間的耦合增加。 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) GABCFDEHIIJ武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.4 優(yōu)化軟件結構設計(續(xù))o 如果在設計過程中,發(fā)現作用范圍不在控制范圍內,可采用如下辦法把作用范圍移到控制范圍之內:o )提高控制模塊的層次。將判定所在模塊合并到父模塊中,使判定處于較高層次。o )將受判定影響的模塊下移到控制范圍內;o )將判定上移到層次中較
30、高的位置。但是要注意,判定所在的模塊最好不要太高,模塊之間的控制參數傳遞路徑太長,增加了模塊之間的耦合。比較好的方案是將判定提到模塊E中。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.4 優(yōu)化軟件結構設計(續(xù))o 規(guī)則五:模塊的大小要適中。模塊的大小一般用模塊的源代碼數量來衡量,通常在設計過程中,將模塊的源代碼數量限制在左右,即一頁紙的范圍內,這樣閱讀比較方便。實際上,規(guī)模大的模塊往往是由于分解不充分造成的,應該對其進一步分解,生成一些下級模塊或同層模塊。有些模塊規(guī)模非常小,這種情況下要區(qū)別對待,如果該模塊是公共模塊或者是高內聚模塊,則一定不要把它合并到其他模塊中去;否則可以
31、考慮將規(guī)模很小的模塊合并到其它相關的模塊中。 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.4 優(yōu)化軟件結構設計(續(xù))o 規(guī)則六:盡可能減少高扇出和高扇入的結構。o 規(guī)則七:將模塊中相對變化較大的部分剝離出去。為了加強模塊的可復用性,在設計時將模塊中相對穩(wěn)定的部分與可能變化的部分分離,在分離的兩個模塊之間加一個接口模塊對模塊之間傳遞的參數進行整理,這對保持模塊的穩(wěn)定性和可重用性有很大作用。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.4 優(yōu)化軟件結構設計(續(xù))o 對于有時間要求的軟件結構,在整個設計階段和編碼階段都必須進行優(yōu)化,優(yōu)化的方法如下:n 首先改進軟
32、件的結構。n 在詳細設計時,挑出那些有可能占用過多時間的模塊,為這些模塊精心設計時間效率更高的處理算法。n 檢測軟件,分離出占用大量處理機資源的模塊。如果有必要,用匯編語言或其它較低級的語言重新設計、編碼,以提高軟件的效率。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.5 圖書館圖書信息管理系統(tǒng)設計案例o 仔細研究這些數據流程圖,發(fā)現一個圖書管理信息系統(tǒng)可以分為五個子系統(tǒng)設計,它們是讀者信息管理子系統(tǒng)、借書子系統(tǒng)、還書子系統(tǒng)、采編子系統(tǒng)和系統(tǒng)維護子系統(tǒng)。將一個復雜的系統(tǒng)劃分為多個簡單的子系統(tǒng),有利于系統(tǒng)設計和實現。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) o
33、 進入設計階段后,要從軟件設計的角度重審數據流程圖。首先應該為流通組設計一個方便的工作環(huán)境,在這個工作環(huán)境之中包含了流通組日常要做的所有工作,應該增加一個“還書工作環(huán)境”的處理,編號IPO320。 o “還書工作環(huán)境”處理之后應該是流通組門的業(yè)務分發(fā)處理,所以增加一個“事物分發(fā)”處理,編號為IPO321。在處理完某個具體的還書業(yè)務之后,有可能導致“通知預約”處理的執(zhí)行,而“催還”和“通知預約”兩個處理之中都隱含了一個共同的處理“發(fā)送郵件”,因此,應該將具有相同功能的處理獨立成為一個“發(fā)送郵件”的處理,編號為IPO324。 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) o 在重畫數
34、據流程圖時發(fā)現,處罰操作屬于性質相同的處理,應該將它們歸并在一起。每種處罰的規(guī)則和處理不同,增加了一個“處罰事物分發(fā)”處理,判斷不同的處罰類型,每種處罰處理的用戶界面不同,為三種處罰類型設計不同的用戶界面。最終的處罰結果是保存在一個數據庫表中,因此調用同一個“保存處罰記錄”處理。在整個處罰的處理部分,基本上是按照邏輯輸入、處理、邏輯輸出劃分的。o 另外增加了兩個界面處理,這是為了將用戶界面與業(yè)務處理分開來設計和實現,便于系統(tǒng)的維護和修改。下面是修改后的數據流程圖: 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 還書數據流程圖還書子系統(tǒng)結構圖武當山武當山旅游門戶網站旅游門戶網站(h
35、ttp:/ wd) 走查軟件結構圖 o 軟件結構圖中的模塊關系體現的是調用關系,模塊之間的接口參數在軟件結構圖上表現出來。o 設計者根據調用關系在紙上對系統(tǒng)進行初步的試運行,方法是從軟件結構圖的最頂層按深度優(yōu)先原則調用下級模塊,直到圖的最底層。在紙上試運行過程中,填寫一張功能模塊對照表。 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 數據結構與程序模塊對照表軟件功能需求與程序模塊對照表功能模塊1模塊2模塊n功能需求1Module nameModule name功能需求2Module nameModule name功能需求nModule name第1列是分析階段確定的軟件功能編號,
36、通常一個功能可能需要多個模塊實現,如果模塊超過5個,往往說明該功能太大,應該將其細分。每個功能都應該有一條自上而下的模塊調用通路,如果發(fā)現某條通路走下來不能實現需要的功能,就要重新檢查數據流程圖到軟件結構圖的轉換是否正確。在走查模塊時不要進入模塊內部的具體處理算法,只是檢查接口參數和分配的功能即可武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 用快速原型法修正設計用快速原型法修正設計o 在設計時,有些問題很難確定是否能夠實現,可以先開發(fā)一個原型,通過開發(fā)原型來發(fā)現設計中存在的問題,以便在編碼之前解決很多棘手的問題。另外,原型可以促進開發(fā)人員之間、以及開發(fā)人員與用戶之間的溝通。o 開
37、發(fā)原型時,通常忽略功能上的很多細節(jié),只是將注意力放在系統(tǒng)的某個或某幾個特定方面。例如,界面方面、性能方面、還有安全方面等等,這種原型肯定會存在許多漏洞,但是,如果一個原型僅僅是要證明設計的可行性時,就不必太多的關注這些漏洞。這種原型屬于拋棄型原型,意思是,開發(fā)的原型僅僅是為了證明系統(tǒng)某些特征的可行性,它不是最終的產品。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 關于設計的說明o 在程序結構被設計和優(yōu)化后,應該對設計進行一些必要的說明。每個模塊寫一份處理說明;為模塊之間的接口提供一份接口說明;確定全局數據結構;指出所有的設計約束和限制。o 處理說明應該清楚地描述模塊的主要處理任務
38、、條件抉擇和輸人輸出。注意概要設計階段不要對模塊的內部處理過程進行詳細描述,這項工作是詳細設計的任務。o 接口說明要給出一張表格,列出所有進入模塊和從模塊輸出的數據。接口說明中應包括通過參數表傳遞的信息、對外界的輸入輸出信息、訪問全局數據區(qū)的信息等等。此外還要指出其下屬的模塊和上級模塊。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 模塊說明表模塊名稱:編號:主要功能: 輸入參數及類型: 輸出參數及類型:上級調用模塊: 向下調用模塊: 局部數據結構: 約束條件和設計限制:武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.6設計復查o 采用概要設計復查的方法來檢查在概念
39、上的設計;o 在關鍵設計審查中,向其它開發(fā)者描述關鍵技術上的設計細節(jié);o 進行程序設計的復查,程序設計的復查屬于詳細設計階段。復查的目標是確保軟件設計與實現正是用戶想要的。 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.7數據設計 o 盡量使用簡單的數據結構。簡單的數據結構通常伴隨著簡單的操作,有些人喜歡使用復雜的工具完成一些簡單的事情,這在軟件開發(fā)中是比較忌諱的。o 在設計數據結構時要注意數據之間的關系,特別要平衡數據冗余與數據關聯(lián)的矛盾。有時,為了減少信息的冗余,需要增加更多的關聯(lián),使程序處理比較復雜;如果一味的降低數據之間的關聯(lián),可能會造成大量的數據冗余,難以保證數據的
40、一致性。o 為了加強數據設計的可復用性,應該針對常用的數據結構和復雜的數據結構設計抽象類型,并且將數據結構與操縱數據結構的操作封裝在一起。同時要清楚地描述調用這個抽象數據結構的接口說明。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.7數據設計(續(xù))o 4) 盡量使用經典的數據結構,因為,對它們的討論比較普遍,容易被大多數開發(fā)人員理解,同時,也能夠獲得更多的支持。o 5)在確定數據結構時一般先考慮靜態(tài)結構,如果不能滿足要求,再考慮動態(tài)結構。 武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.7數據設計(續(xù))o 文件設計是指對數據存儲文件的設計,主要工作是根據使用要
41、求、處理方式、存儲的信息量、數據的使用頻率和文件的物理介質等因素,來確定文件的類別、文件的組織方式。設計文件記錄的格式,估計文件的容量。o 文件的設計過程包括文件的邏輯設計和文件的物理設計兩個階段,文件的邏輯設計在概要設計階段進行,文件的物理設計在詳細設計階段進行。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.7數據設計(續(xù))o 整理必須的數據元素:分析文件中要存儲的數據元素,確定每個數據元素的類型、長度,并且給每個數據元素定義一個容易理解的、有意義的名字。o 分析數據間的關系:根據業(yè)務處理邏輯確定數據元素之間的關系,有時一個文件記錄中可能包含多個子數據結構。例如,考生成績文
42、件的記錄中可能包含:考生編號、姓名、學校、(語文、數學、英語、物理、化學)、總成績。其中,括號部分是一個子結構,描述各科的成績,這些數據元素可能需要同時處理。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) o3) 確定文件的存儲介質。目前,文件的存儲介質主要有磁帶、軟盤、磁盤、光盤、可移動快速閃存。選擇文件存儲介質是主要考慮下面一些原則:oa) 數據量ob) 處理方式oc) 存儲時間od) 處理時間oe) 數據結構of) 操作要求og) 費用要求4.7數據設計(續(xù))武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) o 確定文件的記錄格式。文件的記錄格式通常分為無格式的字符
43、流和用戶定義的記錄格式兩種。并且還可以設計為定長記錄和不定長記錄。o 估算記錄的存取時間。根據文件的存儲介質和類型,計算平均訪問時間和最壞情況下的訪問時間。o 估算文件的存儲量。根據一條記錄的大小估算整個文件的存儲量,然后,考慮文件的增長速度,確定文件的存儲介質的規(guī)格型號,以及設計文件備份轉儲的周期 4.7數據設計(續(xù))武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.7數據設計(續(xù))o 數據庫模式設計:模式設計是在物理層和邏輯層面上描述的數據庫設計。o 第三范式形式的實體及關系數據模型是模式設計過程的輸入,模式設計的主要問題是處理具體的數據庫管理系統(tǒng)的結構約束。o 子模式設計:
44、子模式是用戶使用的數據視圖。o 完整性和安全性設計o 優(yōu)化武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.8詳細設計o 詳細設計也叫過程設計,應該在軟件結構設計、數據設計之后進行,主要是設計模塊內的算法實現細節(jié)。o 任務不是編寫程序,而是要為編寫程序代碼設計“圖紙”,由程序員按“圖紙”用某種高級程序設計語言編寫程序代碼。因此,詳細設計的結果基本上決定了最終的程序代碼質量。o 衡量程序代碼的質量不僅要看它的邏輯是否正確,性能是否滿足要求,更主要的要看它是否容易閱讀和理解。因此,詳細設計的目標不僅僅是保證所設計的模塊功能正確,更重要的是保證所設計的處理過程簡明易懂。武當山武當山旅游門戶網站旅游門戶網站(http:/ wd) 4.8詳細設計(續(xù))o 結構化程序的特征:n 程序模塊只有一個入口和一個出口。n 程序中只包含順序、條件和循環(huán)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年商標保護義務協(xié)議
- 2025年健身房特選設備訓練服務協(xié)議
- 2025年基層金融質押協(xié)議
- 2025年連帶責任保證合同(借款)
- 中小企業(yè)2024年期限勞動合同3篇
- 正規(guī)2025年度藝人經紀合同3篇
- 二零二五年度足療技師外出服務安全協(xié)議范本
- 2025年度度假酒店委托運營管理服務合同
- 二零二五年度汽車牌照租賃與車輛抵押貸款服務協(xié)議
- 2025年度門窗行業(yè)產品召回與質量追溯合同電子版
- 江蘇省南京市協(xié)同體七校2024-2025學年高三上學期期中聯(lián)合考試英語試題答案
- 青島版二年級下冊三位數加減三位數豎式計算題200道及答案
- GB/T 12723-2024單位產品能源消耗限額編制通則
- GB/T 16288-2024塑料制品的標志
- 麻風病防治知識課件
- 干部職級晉升積分制管理辦法
- TSG ZF003-2011《爆破片裝置安全技術監(jiān)察規(guī)程》
- 2024年代理記賬工作總結6篇
- 電氣工程預算實例:清單與計價樣本
- VOC廢氣治理工程中電化學氧化技術的研究與應用
- 煤礦機電設備培訓課件
評論
0/150
提交評論