第4章軟件總體設計_第1頁
第4章軟件總體設計_第2頁
第4章軟件總體設計_第3頁
第4章軟件總體設計_第4頁
第4章軟件總體設計_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章軟件總體設計1【本章引言】總體設計過程通常由兩個階段組成:系統(tǒng)設計和結構設計。其中系統(tǒng)設計的任務是確定系統(tǒng)的具體實現(xiàn)方案,結構設計則是確定軟件的模塊結構。這兩個階段是緊密聯(lián)系在一起的,它們執(zhí)行的效果將直接影響到總體設計好壞,乃至整個軟件工程的合理與否。前一個階段是后一個階段的基礎,后一個階段是前一個階段的發(fā)展方向。因此,我們在總體設計的整個過程中必須圍繞系統(tǒng)設計和結構設計這兩個階段展開每一項工作。2/5/20232第四章軟件總體設計第四章軟件總體設計【本章重點】軟件設計的概念與原則;掌握總體設計的步驟和方法;【教學目標】掌握軟件設計的概念與原則;掌握總體設計的步驟和方法;了解總體設計的文檔與評審。2/5/20233第四章軟件總體設計第四章軟件總體設計4.1總體設計概述4.2總體設計的圖形描述工具

4.3模塊化設計4.4面向數(shù)據(jù)流的設計方法4.5小結4.6習題2/5/20234第四章軟件總體設計軟件設計階段的任務與目標

軟件編碼前,必須先進行軟件設計。軟件設計是軟件開發(fā)的關鍵步驟,直接影響軟件的質量。在軟件需求分析階段已經完全弄清楚了軟件的各種需求,較好地解決了所開發(fā)的軟件“做什么”的問題,并已在軟件需求說明書和數(shù)據(jù)要求說明書中詳盡和充分地闡明了這些需求以后,下一步就要著手實現(xiàn)軟件的需求,即軟件設計階段要解決“怎么做”的問題。2/5/20235第四章軟件總體設計

軟件設計在開發(fā)階段中的重要性

軟件設計階段要解決“如何做”的問題。這顯然是整個軟件開發(fā)過程的核心問題,所有的開發(fā)工作都將根據(jù)設計的方案進行。系統(tǒng)的總體結構在該階段決定,因此軟件的總體設計決定了系統(tǒng)的質量。軟件需求確定以后,進入由軟件設計、編碼、測試三個關聯(lián)階段構成的開發(fā)階段。開發(fā)階段的信息流如圖所示。在設計步驟中,根據(jù)軟件的功能和性能需求等,采用某種設計方法進行數(shù)據(jù)設計、系統(tǒng)結構設計和過程設計。

2/5/20236第四章軟件總體設計2/5/20237第四章軟件總體設計數(shù)據(jù)設計側重于軟件數(shù)據(jù)結構的定義系統(tǒng)結構設計定義軟件系統(tǒng)的整體結構,是軟件開發(fā)的核心步驟。在設計步驟中,建立軟件主要成份之間的關系過程設計則是把結構成份轉換成軟件的過程性描述

在編碼步驟中,根據(jù)這種過程性描述,生成源程序代碼,然后通過測試,最終得到完整有效的軟件。2/5/20238第四章軟件總體設計軟件設計是后續(xù)開發(fā)步驟及軟件維護工作的基礎。如果沒有設計,只能建立一個不穩(wěn)定的系統(tǒng)結構2/5/20239第四章軟件總體設計軟件設計階段的任務一、軟件設計的任務將分析階段獲得的需求說明轉換為計算機中可實現(xiàn)的系統(tǒng),完成系統(tǒng)的結構設計,包括數(shù)據(jù)結構和程序結構,最后得到軟件設計說明書。

從工程管理的角度來看,軟件設計分兩步完成;分為總體設計(概要設計)和詳細設計兩個階段。其工作流程如圖所示。首先做概要設計,將軟件需求轉化為數(shù)據(jù)結構和軟件的系統(tǒng)結構。然后是詳細設計,即過程設計。通過對結構表示進行細化,得到軟件詳細的數(shù)據(jù)結構和算法。2/5/202310第四章軟件總體設計把分析模型轉變成軟件2/5/202311第四章軟件總體設計2/5/202312第四章軟件總體設計概要設計的基本目的就是回答“概括地說,系統(tǒng)應該如何實現(xiàn)”劃分組成系統(tǒng)的物理元素-----程序、文件、數(shù)據(jù)庫和文檔等,另一方面要設計軟件的結構,即確定系統(tǒng)中每個程序由哪些模塊組成,以及這些模塊相互間的關系總體設計過程2/5/202313第四章軟件總體設計在詳細設計過程中,需要完成的工作是:

1.確定軟件各個組成部分內的算法以及各部分的內部數(shù)據(jù)組織

2.選定某種過程的表達形式來描述各種算法。

3.進行詳細設計的評審詳細設計2/5/202314第四章軟件總體設計總體設計需求說明書復審軟件結構修改詳細設計可接受模塊描述復審修改

設計說明書軟件設計工作流程

設計階段結束要交付的文檔是設計說明書,根據(jù)設計方法的不同,有不同的設計文檔。每個設計步驟完成后,都應進行復審。2/5/202315第四章軟件總體設計1、劃分模塊,確定軟件結構

開發(fā)方法不同,確定軟件結構的方法也不同。例如SD法,是從分層的DFD圖導出初始的結構圖,再對初始的結構圖進行改進,獲得最終的結構圖。一般包括確定系統(tǒng)的軟件結構,分解模塊,確定系統(tǒng)的模塊層次關系。2、確定系統(tǒng)的數(shù)據(jù)結構要確定數(shù)據(jù)的類型,組織、存取方式,相關程度及處理方式等。3、設計用戶界面

軟件設計階段的任務可分為三部分:2/5/202316第四章軟件總體設計二、軟件設計的目標在設計階段應達到的目標是:提高可靠性;提高可維護性;提高可理解性;提高效率。軟件設計高可靠性高可維護性高可理解性高效率軟件設計的目標2/5/202317第四章軟件總體設計

常用的設計方法有:SD法、Jackson法、HIPO法、Parnas法、Warnier法等。衡量該目標的準則:1、軟件實體有明顯的層次結構,利于軟件元素間控制2、軟件實體應該是模塊化的,模塊具有獨立功能3、軟件實體與環(huán)境的界面清晰4、設計規(guī)格說明清晰、簡潔、完整和無二義性2/5/202318第四章軟件總體設計4.1總體設計概述

4.1.1總體設計的任務確定模塊結構,劃分功能模塊,將軟件功能需求分配給所劃分的最小單元模塊。確定模塊間的聯(lián)系,確定數(shù)據(jù)結構、文件結構、數(shù)據(jù)庫模式,確定測試方法與策略。編寫總體設計說明書,用戶手冊,測試計劃,選用相關的軟件工具來描述軟件結構,結構圖是經常使用的軟件描述工具。選擇分解功能與劃分模塊的設計原則 2/5/202319第四章軟件總體設計4.1總體設計概述

4.1.2總體設計的步驟1.設計系統(tǒng)方案2.選取合理的方案3.推薦最佳方案4.功能分解5.軟件結構設計6.數(shù)據(jù)庫設計、文件結構的設計7.制定測試計劃8.書寫文檔9.審查和復審2/5/202320第四章軟件總體設計軟件結構軟件結構是軟件模塊之間關系的表示,它決定了整個系統(tǒng)的結構,也確定了系統(tǒng)的質量。模塊之間的關系可有多種,但都可以歸結為一種層次關系。軟件結構圖是總體設計階段的主要描述工具,它描述了構成系統(tǒng)的基本元素——模塊及模塊之間的調用關系,模塊之間的數(shù)據(jù)傳遞關系。2/5/202321第四章軟件總體設計2/5/202322第四章軟件總體設計軟件結構的基本概念ABCDEFGHIJKLM模塊(Module)模塊是程序對象有名字的集合。例如,過程、函數(shù)、子程序、宏等,是構成軟件系統(tǒng)結構的基本元素。

軟件結構圖2/5/202323第四章軟件總體設計體系結構設計是軟件設計的第一個階段,該階段側重于系統(tǒng)宏觀結構的設計,而不關心模塊的內部算法。楊叔子院子曾這樣指點其弟子:文學中有科學,音樂中有數(shù)學,漫畫中有現(xiàn)代數(shù)學的拓撲學。漫畫家可以“幾筆”就把一個人畫出來,不管怎么美化或丑化,就是活像。為什么?因為那“幾筆”不是別的,而是拓撲學中的特征不變量,這是事物最本質的東西。體系結構是軟件系統(tǒng)中最本質的東西:軟件系統(tǒng)的體系結構分為集中式的層次結構、客戶機/服務器等。2/5/202324第四章軟件總體設計一、層次結構2/5/202325第四章軟件總體設計2/5/202326第四章軟件總體設計二、客戶-服務器模型(Client/ServerArchitecturalModel)

C/S結構是一種分布式模型,采用發(fā)請求、得結果的模式:客戶機向服務器發(fā)出請求(數(shù)據(jù)請求、網頁請求、文件傳輸請求等)。服務器響應請求,進行相應的操作,將結果回傳給客戶機,客戶機再將格式化后的結果呈現(xiàn)給用戶。C/S結構的應用都由三個相對獨立的邏輯部分組成。用戶界面應用邏輯數(shù)據(jù)訪問三種邏輯之間的關系2/5/202327第四章軟件總體設計兩層客戶-服務器模型

(TwoTierClient/ServerArchitecturalModel)服務器1網絡服務器2服務器M客戶1客戶2客戶N兩層Client/Server結構請求結果請求C/S的工作模式是一種遠程過程調用(RPC,RemoteProcedureCall)模式,允許客戶端和服務器端有不同的軟硬平臺。2/5/202328第四章軟件總體設計client1client2client4client3Wide-bandwidthnetwokCatalogueservercataloguevideoserverFilmclipfilespictureserverdigitisedphotographshypertextserverhypertextweb例:電影圖片庫的系統(tǒng)的體系結構s2/5/202329第四章軟件總體設計

完整的應用包含三個相對獨立的邏輯部分,而兩層的C/S結構只有兩個端應用。應用邏輯應該映射到哪一端上呢?三種情況:網絡用戶界面客戶端邏輯應用服務端邏輯應用客戶端用戶界面邏輯應用數(shù)據(jù)訪問用戶界面邏輯應用數(shù)據(jù)訪問服務器應用邏輯層的映射情況數(shù)據(jù)訪問C/S應用3C/S應用1C/S應用2

兩層C/S架構將數(shù)據(jù)表示和處理邏輯分開,但應用邏輯和兩端之一是緊耦合的,不適宜多用戶、多數(shù)據(jù)庫、非安全的網絡環(huán)境。2/5/202330第四章軟件總體設計2.三層/多層應用模型(Three/MultiTierModel)第一級是數(shù)據(jù)庫管理結點(databasemanagementnode)。第二級或中間級是“商業(yè)邏輯結點”(businesslogicnode),是指具體應用中實施的程序邏輯和法則。第三級是用戶界面級,強調高效、方便易用的用戶界面。Databasemanagementnode(數(shù)據(jù)庫管理結點)businesslogicnode(商業(yè)邏輯結點)Security(安全)Event(事件)Search(搜索)ClientAClientDClientBClientC服務器客戶機第一級第二級第三級2/5/202331第四章軟件總體設計客戶端用戶界面服務器數(shù)據(jù)訪問多層應用模型網絡應用服務器1應用邏輯應用服務器n應用邏輯…

在多層模型中,中間層會用到應用服務,包括事務服務、消息服務等等。常見的事務服務器有MicrosoftTransactionServer,消息服務器有MicrosoftMessageQueue。2/5/202332第四章軟件總體設計三、分布式對象結構(DistributedObjectsArchitecture)

在C/S模型中,客戶和服務器在服務/請求上的差別,在一定程度上限制了系統(tǒng)的靈活性和可擴展性。

采用分布式對象結構:“對象(Object)”——提供服務的系統(tǒng)組件(SystemComponent)。每個對象在邏輯上是平等的,它們可以互相為對方提供所需的服務。提供服務的對象就是服務器,而提出服務請求的對象就是客戶。2/5/202333第四章軟件總體設計

軟件總線(SoftwareBus)的中間件(Middleware)即對象請求代理(ObjectRequestBroker,ORB)分布式對象結構具有很好的開放性和透明性,用戶可以非常方便地在總線上添加、更新或刪除組件對象。軟件總線(ORB)O1S(O1)O2S(O2)OnS(On)…分布式對象結構2/5/202334第四章軟件總體設計4.2總體設計的圖形工具

4.2.1層次圖2/5/202335第四章軟件總體設計4.2總體設計的圖形工具4.2.2HIPO圖2/5/202336第四章軟件總體設計大學教務管理系統(tǒng)H圖2/5/202337第四章軟件總體設計IPO圖的一個例子2/5/202338第四章軟件總體設計

4.2總體設計的圖形工具4.2.3結構圖2/5/202339第四章軟件總體設計軟件結構圖(SC圖)

結構圖(Structure

Chart,SC圖)是精確表達軟件結構的圖形表示方法,它以特定的符號表示模塊、模塊間的調用關系和模塊間信息的傳遞。⑴模塊(Module):用矩形框表示,框中寫有模塊的名字,說明模塊的功能。模塊是程序對象有名字的集合。例如:過程、函數(shù)、子程序、宏等。⑶數(shù)據(jù):調用箭頭邊上的小箭頭表示調用時從一個模塊傳送給另一模塊的數(shù)據(jù)。⑵調用:從一個模塊指向另一個模塊的箭頭表示前一模塊對后一模塊的調用,一般是上層調用下層。2/5/202340第四章軟件總體設計模塊5模塊5模塊4模塊4模塊1模塊3模塊2valuesvaluesdatadata模塊1模塊2模塊3valuesdatadata模塊調用圖2/5/202341第四章軟件總體設計

模塊間接口的表示A查詢學生成績B查找學生記錄○學號查找成功的信息常用尾端帶有空心圓的短箭頭表示數(shù)據(jù)信息,用尾端帶有實心圓的短箭頭表示控制信息。有的結構圖對這兩種信息不加以區(qū)別,一律用注有信息名的短箭頭來表示,如圖所示?!饠?shù)據(jù)信息控制信息2/5/202342第四章軟件總體設計2/5/202343第四章軟件總體設計例:畫出打印報告的軟件結構圖。調用次序為上層調用下層;同層按照數(shù)據(jù)傳遞關系確定;一般從左到右執(zhí)行。

執(zhí)行過程即按照數(shù)據(jù)流向進行。報告計算獲得編輯確認數(shù)據(jù)讀入編輯打印報告頭打印報告尾打印輸入EOF輸入已編輯

已編輯已編輯已確認已確認數(shù)據(jù)已確認數(shù)據(jù)計算結果結果日期總結果行行行打印報告予以確認2/5/202344第四章軟件總體設計結構圖的例子——產生最佳解的一般結構2/5/202345第四章軟件總體設計

4.3模塊化設計4.3.1模塊化與局部化1.模塊化

模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序對象的集合,模塊可以單獨被命名、而且可通過名字來訪問,例如,過程、函數(shù)、子程序、宏等等都可作為模塊。模塊化就是把程序劃分成若干個模塊,每個模塊具有一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能,進而滿足問題的要求。2/5/202346第四章軟件總體設計

“模塊”,又稱“構件”,一般指用一個名字可調用的一段程序。它一般具有如下三個基本屬性:⑴功能即指該模塊實現(xiàn)什么功能,做什么事情⑵邏輯即描述模塊內部怎么做。⑶狀態(tài)即該模塊使用時的環(huán)境和條件。所謂模塊的獨立性,是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡單的。即功能專一,模塊之間無過多的相互作用的模塊。這種類型的模塊可以并行開發(fā),模塊獨立性越強,開發(fā)越容易。獨立性強的模塊,還能減少錯誤的影響,使模塊容易組合、修改及測試。2/5/202347第四章軟件總體設計模塊化

模塊化就是將系統(tǒng)劃分為若干個模塊,每個模塊完成一個子功能。模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問題的復雜性,使軟件結構清晰,易閱讀、易理解,易于測試和調試,因而也有助于提高軟件的可靠性。2/5/202348第四章軟件總體設計模塊化降低軟件復雜度的簡單證明令:C(X)表示問題X的復雜度函數(shù);E(X)解決問題X所需工作量的復雜度函數(shù);若:有問題P1,P2;

C(P1)>C(P2);顯然:E(P1)>E(P2)由經驗:C(P1+P2)>C(P1)+C(P2)于是:E(P1+P2)>E(P1)+E(P2)將問題(P1+P2)劃分為兩個問題P1和P2后,其工作量和復雜度都降低。2/5/202349第四章軟件總體設計

并非模塊分得越小越好,因為模塊之間接口的復雜度和工作量增加。顯然,每個軟件系統(tǒng)都有一個最佳模塊數(shù)M。注意選擇分解的最佳模塊數(shù)。右上圖描述了模塊化與軟件成本的關系。軟件總成本

模塊化與軟件成本的關系成本模塊數(shù)目模塊成本接口成本}最小成本區(qū)M2/5/202350第四章軟件總體設計4.3模塊化設計4.3.1模塊化與局部化

2.局部化

局部化的概念和信息隱蔽概念密切相關。所謂局部化是指把一些關系密切的軟件元素物理地放得彼此靠近。在模塊中使用局部數(shù)據(jù)元素是局部化的一個例子。顯然,局部化有助于實現(xiàn)信息隱蔽。2/5/202351第四章軟件總體設計

4.3模塊化設計4.3.2模塊化獨立性

模塊的獨立性可以用兩個定性的標準來度量:耦合和內聚。耦合是模塊之間互相連接的緊密程度的度量,內聚是一個模塊內部各個元素彼此結合的緊密程度的度量。

2/5/202352第四章軟件總體設計

4.3模塊化設計4.3.2模塊化獨立性1.耦合非直接耦合數(shù)據(jù)耦合標記耦合控制耦合公共耦合內容耦合

2/5/202353第四章軟件總體設計

耦合性是指軟件結構中模塊相互連接的緊密程度,是模塊間相互連接性的度量。模塊分解的一個目標是使塊間聯(lián)系盡可能小,塊間聯(lián)系的大小可從三個方面衡量:數(shù)據(jù)方式作用少多數(shù)量控制混合直接調用過程調用①方式—塊間聯(lián)系方式有“直接引用”或“用過程語句調用”②作用—塊間傳送的共用信息(參數(shù))類型,可為“數(shù)據(jù)型”、“控制型”或“混合型”(數(shù)據(jù)/控制型)③數(shù)量—塊間傳送的共用信息的數(shù)量2/5/202354第四章軟件總體設計模塊分解的一個目標是使塊間聯(lián)系盡可能小,達到這個目標可通過以下措施。⑴每個模塊用過程語句(或函數(shù)方式等)調用其他模塊。⑵模塊間傳送的參數(shù)為數(shù)據(jù)型。⑶模塊間公用的信息(如參數(shù)等)盡量少。2/5/202355第四章軟件總體設計耦合性的幾種類型內容耦合公共耦合控制耦合復合耦合數(shù)據(jù)耦合高耦合性低1、內容耦合(contentcoupling)

一個模塊直接訪問另一模塊的內部數(shù)據(jù) 一個模塊不通過正常入口轉到另一模塊的內部 一個模塊有多個入口 兩個模塊有部分代碼重迭2/5/202356第四章軟件總體設計2、公共耦合(CommonCoupling)若干模塊訪問一個公共的數(shù)據(jù)環(huán)境,公共環(huán)境可為全局數(shù)據(jù)結構、共享的通信區(qū)、內存的公共覆蓋區(qū)等。顯然,公共數(shù)據(jù)區(qū)的變化,將影響所有公共耦合模塊,嚴重影響模塊的可靠性和可適應性,降低軟件的可讀性。2/5/202357第四章軟件總體設計3、控制耦合(ControlCoupling)

一個模塊傳遞給另一模塊的信息是用于控制該模塊內部邏輯的控制信號。顯然,對被控制模塊的任何修改,都會影響控制模塊。A

BFlagf1f2fn...2/5/202358第四章軟件總體設計publicinty;PublicA(stringx){

if(x==”true”){

y=1;}Else{

y=0;}}PublicvoidB(){

if(y==1){

F(

);

//F(

)是系統(tǒng)自定義的函數(shù)}Else{G(

);

//G(

)是系統(tǒng)自定義的函數(shù)}}2/5/202359第四章軟件總體設計4、復合耦合(StampCoupling)一個模塊傳送給另一個模塊的參數(shù)是一個復合的數(shù)據(jù)結構。例如,包含幾個數(shù)據(jù)單項的記錄。5、數(shù)據(jù)耦合(DataCoupling)一個模塊傳送給另一個模塊的參數(shù)是一個單個的數(shù)據(jù)項2/5/202360第四章軟件總體設計

總之,耦合是影響軟件復雜程度的一個重要因素。應該采取下述設計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合的范圍,完全不用內容耦合。2/5/202361第四章軟件總體設計

4.3模塊化設計4.3.2模塊化獨立性2.內聚偶然內聚邏輯內聚時間內聚過程內聚通信內聚順序內聚功能內聚

2/5/202362第四章軟件總體設計塊內聯(lián)系的類型分為七類:內聚性表示一個模塊內部各種數(shù)據(jù)和各種處理之間聯(lián)系的緊密程度,它是從功能的角度來度量模塊間的聯(lián)系。顯然,塊內聯(lián)系愈緊,即內聚性愈強,模塊獨立性愈好。偶然型邏輯型瞬時型過程型通信型弱內聚性強順序型功能型2/5/202363第四章軟件總體設計

模塊T中的三條語句毫無關系,A、B、C、D都不在文件CARD

FILE中。模塊P、Q、R分別與三條語句有關。PQRMOVEATOBREADCARDFILEMOVECTODT

偶然型模塊

1、偶然型(CoincidentalCohesion)又稱為巧合型,為了節(jié)約空間,將毫無關系(或者聯(lián)系不多)的各成分放在一個模塊中。這樣的模塊顯然不易理解,不易修改。2/5/202364第四章軟件總體設計

2、邏輯型(LogicalCohesion)將幾個邏輯上相似的功能放在一個模塊中,調用時由調用模塊傳遞的參數(shù)確定執(zhí)行的功能。由于要進行控制參數(shù)的傳遞,必然要影響模塊的內聚性。調用模塊判定讀一個記錄寫一個記錄邏輯型模塊被調用模塊2/5/202365第四章軟件總體設計

3、瞬時型(TemporalCohesion)將需要同時執(zhí)行的成分放在一個模塊中,因為模塊中的各功能與時間有關,因此又稱為時間內聚或經典內聚。例如,初始化模塊,中止模塊等這類模塊內部結構較簡單,一般較少判定,因此比邏輯內聚強,但是由于將多個功能放在一起,給修改和維護造成困難。2/5/202366第四章軟件總體設計

4、過程型(ProceduralCohesion)

如果一個模塊內的處理是相關的,而且必須以特定次序執(zhí)行,則稱這個模塊為過程內聚模塊。通常通過程序流程圖來確定,例如把流程圖中的循環(huán)部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內聚模塊。2/5/202367第四章軟件總體設計

5、通信型(CommunicationalCohesion)模塊中的成分引用共同的輸入數(shù)據(jù),或者產生相同的輸出數(shù)據(jù),則稱為是通信內聚模塊通信型模塊比瞬時型模塊的內聚性強,因為模塊中包含了許多獨立的功能,但卻引用相同數(shù)據(jù)A打印報告1打印報告2打印報告2B存入打印C修改刪除打?。╝)(b)(c)

通信型模塊2/5/202368第四章軟件總體設計2/5/202369第四章軟件總體設計

6、順序型(SequentialCohesion)

模塊中某個成分的輸出是另一成分的輸入。由于這類模塊無論數(shù)據(jù)還是執(zhí)行順序,模塊中的一部分依賴于另外一部分。

順序型模塊,編輯功能的輸入是讀入功能的輸出,打印功能的輸入是累加功能的輸出。讀入編輯A數(shù)據(jù)累加打印B結果

順序型模塊2/5/202370第四章軟件總體設計

7、功能型(SequentialCohesion)一個模塊包括而且僅包括完成某一具體功能所必須的所有成分?;蛘哒f,模塊的所有成分都是為完成該功能而協(xié)同工作、緊密聯(lián)系、不可分割的。

求解方程的功能模塊求一元二次方程求平方根AB例如僅完成以下功能的模塊為功能模塊: ●求平方根 ●求解一元二次方程 ●計算利息 ●判素數(shù) 2/5/202371第四章軟件總體設計1計算雇員年齡并給出生日的模塊2按給出的生日計算雇員年齡、退休時間的模塊。如果利用所計算的年齡來確定雇員將要退休的時間,是什么內聚;如果分別計算年齡和退休時間,但使用相同生日數(shù)據(jù),是什么內聚3打印季度開支報告、月份開支報告和日開支報告。具體打印哪一個,將由傳入的控制標志決定。如何提高內聚性?功能內聚順序內聚通信內聚邏輯內聚2/5/202372第四章軟件總體設計

4.3模塊化設計4.3.2模塊化獨立性3.設計準則模塊規(guī)模應該適中改進軟件結構提高模塊獨立性深度、寬度、扇入和扇出都應適當模塊的作用范圍應該在控制范圍之內降低模塊接口的復雜程度設計單入口單出口的模塊,避免“病態(tài)連接”模塊功能應該可以預測2/5/202373第四章軟件總體設計1)模塊的大小要適中

模塊的大小,可以用模塊中所含語句的數(shù)量的多少來衡量。把模塊的大小限制在一定的范圍之內。通常規(guī)定其語句行數(shù)在50~100左右,保持在一頁紙之內,最多不超過500行。2/5/202374第四章軟件總體設計消除重復功能(a)(b)(c)(d)Q重復部分XQ1YQ22)改進軟件結構,消除重復功能

若兩模塊含有重復的部分,應設法將重復的功能消去。

如下圖所示,Q1和Q2兩個模塊具有類似的功能,圖(b)、(c)、(d)方案就是可能的解決方案。XYQ’1Q’2QYQ’2XQ’1QXQ’1YQ’22/5/202375第四章軟件總體設計×邏輯內聚√√√2/5/202376第四章軟件總體設計消除重復功能,改善軟件結構

①完全相似:在結構上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時可以采取完全合并的方法。

②局部相似:找出其相同部分,分離出去,重新定義成一個獨立的下一層模塊。還可以與它的上級模塊合并。2/5/202377第四章軟件總體設計有關指標:⑴深度:表示軟件結構中從頂層模塊到最底層模塊的層數(shù)。⑵寬度:表示控制的總分布。⑶扇出數(shù):指一個模塊直接控制下屬的模塊個數(shù)。⑷扇入數(shù):指一個模塊的直接上屬模塊個數(shù)。3)深入、寬度、扇入、扇出2/5/202378第四章軟件總體設計3.2.1軟件結構的基本概念

軟件結構示意圖一個好的軟件結構的形態(tài)準則是:頂部寬度小,中部寬度大,底部寬度次之;在結構頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。2/5/202379第四章軟件總體設計深度、寬度、扇入和扇出都應適當2/5/202380第四章軟件總體設計模塊的扇入扇出數(shù)不宜太多一個模塊調用其他模塊的個數(shù),稱為該模塊的扇出。模塊的扇出不宜過大,一般認為不要超出7個。一個模塊被其他模塊調用的個數(shù),稱為該模塊的扇入。扇入越大,除服務性模塊外,模塊的扇入扇出數(shù)不宜太多,否則塊間聯(lián)系增加。2/5/202381第四章軟件總體設計控制范圍—結構方面的特點,包括模塊及其所有下屬模塊。作用范圍—判斷所涉及到的模塊,是從功能特點考慮的。SD方法認為:當作用范圍為控制范圍的子集時,才能獲得較低的塊間聯(lián)系。如圖(b)中的設計,判定的作用范圍恰好在判定所在模塊的下一層。4)模塊的作用范圍與控制范圍2/5/202382第四章軟件總體設計TOPXTBAB1B2圖(b)中模塊TOP的控制范圍是:

模塊TOP、X、T、B、A、B1、B2;模塊B的控制范圍與作用范圍相同,均為:模塊B、A、B1、B2圖(a)中模塊A的控制范圍:

A、B、C、D、G、E、F如果模塊F的判定涉及到模塊B、E、F則F的的作用范圍:B、E、FABCDGEFFBE(a)(b)2/5/202383第四章軟件總體設計答案顯然,圖(a)不滿足作用范圍應與控制范圍的原則,模塊F的作用范圍不在控制范圍之內。圖(b)中模塊TOP和圖(c)中模塊B雖然滿足上述原則,但其作用范圍所涉及到的模塊不是直接的。圖(d)的模塊設計最合理。應用范圍與作用范圍舉例TOPABCDEF(a)◆TOPABCDEF(d)◆TOPABCDEF(b)◆TOPABCDEF(c)◆比較(a)、(b)、(c)、(d)4種設計方案的優(yōu)劣2/5/202384第四章軟件總體設計5)降低接口復雜度例如:求一元二次方程的跟的模塊,模塊名為Quad_Root,這里有2種接口方式a.Quad_Root(Tbl,X)b.Quad_Root(A,B,C,Root1,Root2)2/5/202385第四章軟件總體設計

一個功能可預測的模塊,不論內部處理細節(jié)如何,但對相同的輸入數(shù)據(jù),總能產生同樣的結果。但是,如果模塊內部蘊藏有一些特殊的鮮為人知的功能時,這個模塊就可能是不可預測的。對于這種模塊,如果調用者不小心使用,其結果將不可預測。6)功能可預測的模塊,但避免過分受限制的模塊2/5/202386第四章軟件總體設計2/5/202387第四章軟件總體設計

4.3模塊化設計4.3.3抽象與信息隱蔽1.抽象抽象是人類認識問題和解決問題的基本工具和方法。在解決復雜的具體問題時,人們往往先忽略其細節(jié)和非本質的方面,而集中注意力去分析問題的本質和主要方面,搞清所要解決的問題的本質。同時人們在總結認識和實驗規(guī)律時,也往往突出各類問題的共性,找出各種客觀事物、狀態(tài)和過程間的聯(lián)系和相似性,加以概括和提取,即抽象。

2/5/202388第四章軟件總體設計

4.3模塊化設計

4.3.3抽象與信息隱蔽2.信息隱蔽

信息隱蔽原理認為:模塊所包含的信息(過程和數(shù)據(jù))對于其他模塊來說應該是隱蔽的。也就是說,模塊應當被這樣規(guī)定和設計,使得包含在模塊中的信息(過程和數(shù)據(jù))對于其他不需要這些信息的模塊來說,是不能訪問的,或者說是“不可見”的。2/5/202389第四章軟件總體設計例如:定義棧(stack)操作模塊Makenull(置空棧);Push(進棧);Pop(出棧);Gettop(取棧頂)Empty(判???其操作均被封裝,無需了解模塊內部的實現(xiàn)過程。2/5/202390第四章軟件總體設計

4.4面向數(shù)據(jù)流的設計方法4.4.1基本概念1.變換流信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內部形式,進入系統(tǒng)的信息通過變換中心,經加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當數(shù)據(jù)流圖具有這些特征時,這種信息流就叫作變換流。

2/5/202391第四章軟件總體設計

4.4面向數(shù)據(jù)流的設計方法4.4.1基本概念1.變換流2/5/202392第四章軟件總體設計

4.4面向數(shù)據(jù)流的設計方法4.4.1基本概念2.事務流

數(shù)據(jù)沿輸入通路到達一個處理T,這個處理根據(jù)輸入數(shù)據(jù)的類型在若干個工作序列中選出一個來執(zhí)行。這類系統(tǒng)的特征是具有在多種事務中選擇執(zhí)行某類事務的能力。事務型結構由至少一條接受路徑、一個事務中心,與若干條動作路徑組成。這類數(shù)據(jù)流應該劃為一類特殊的數(shù)據(jù)流,稱為事務流。2/5/202393第四章軟件總體設計

4.4面向數(shù)據(jù)流的設計方法4.4.1基本概念2.事務流2/5/202394第四章軟件總體設計設計過程⑴變換型系統(tǒng)結構圖通過變換分析技術,將中心變換型的DFD圖轉換而得的SC圖,稱為變換型系統(tǒng)結構圖。相應于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),系統(tǒng)的結構圖由輸入、中心變換和輸出等三部分組成。

2/5/202395第四章軟件總體設計2/5/202396第四章軟件總體設計例:儀表板的功能:通過模數(shù)轉換器實現(xiàn)傳感器和微處理器接口在發(fā)光二極管面板上顯示數(shù)據(jù)指示每小時英里數(shù),行駛的里程,每加侖行駛的英里數(shù)指示加速或減速超速警告:如果超過55英里/小時,則發(fā)出超速警告鈴聲2/5/202397第四章軟件總體設計數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖2/5/202398第四章軟件總體設計具有邊界的數(shù)據(jù)流圖2/5/202399第四章軟件總體設計第一級分解的方法2/5/2023100第四章軟件總體設計數(shù)字儀表板系統(tǒng)的第一級分解2/5/2023101第四章軟件總體設計第二級分解的方法2/5/2023102第四章軟件總體設計圖4.19未經精化的輸入結構2/5/2023103第四章軟件總體設計未經精化的變換結構2/5/2023104第四章軟件總體設計未經精化的輸出結構2/5/2023105第四章軟件總體設計精化后的數(shù)字儀表板系統(tǒng)的軟件結構2/5/2023106第四章軟件總體設計

⑵事務型系統(tǒng)結構圖通過事務分析技術,將事務處理型的DFD圖轉換為的SC圖,稱為事務型的系統(tǒng)結構圖。其中,事務中心模塊按所接受的事務的類型,選擇某一個事務處理模塊執(zhí)行。各個事務處理模塊是并列的,依賴于一定的選擇條件,分別完成不同的事務處理工作。每個事務處理模塊可能要調用若干個操作模塊,而操作模塊又可能調用若干個細節(jié)模塊。某些事務處理模塊可能共享一些操作模塊,而某些操作模塊又可以共享一些細節(jié)模塊。2/5/2023107第四章軟件總體設計T事務數(shù)據(jù)流沿輸入通路到達一個處理T,這個處理根據(jù)輸入數(shù)據(jù)的類型在若干個動作序列中選出一個來執(zhí)行2/5/2023108第四章軟件總體設計2/5/2023109第四章軟件總體設計①確定主加工及邏輯輸入/輸出主加工—描述了系統(tǒng)的主要功能、特征。其特點是:輸入/輸出數(shù)據(jù)流較多,往往主加工不止一個。邏輯輸入/輸出—是指輸入/輸出主加工的數(shù)據(jù)流。輸入流—是把物理輸入轉換為邏輯輸入的數(shù)據(jù)流。輸出流—是將邏輯輸出轉換為物理輸出的數(shù)據(jù)流。FDC中心加工2號加工3號加工1號加工4號加工ABE

輸入流轉換流輸出流

輸入流轉換流輸出流②進行一級分解,設計上層模塊為每個輸入設計一個輸入模塊,為每個輸出設計一個輸出

溫馨提示

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

評論

0/150

提交評論