版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件工程第四章軟件設計4.1軟件設計階段的任務與目標
軟件設計是對實現(xiàn)軟件的結構、系統(tǒng)的數(shù)據、系統(tǒng)組件之間的接口以及所用算法的描述。軟件設計是軟件開發(fā)的關鍵步驟,直接影響軟件的質量。在軟件需求分析階段已經完全弄清楚了軟件的各種需求,較好地解決了所開發(fā)的軟件“做什么”的問題,并已在軟件需求說明書中詳盡和充分地闡明了這些需求以后,下一步就要著手實現(xiàn)軟件的需求,即軟件設計階段要解決“怎么做”的問題。4.1軟件設計階段的任務與目標第2頁,共133頁,2024年2月25日,星期天設計過程的一般模型需求描述體系結構設計抽象描述接口設計組件設計數(shù)據結構設計系統(tǒng)體系結構軟件描述接口描述組件描述數(shù)據結構描述算法描述算法設計設計活動設計產品第3頁,共133頁,2024年2月25日,星期天
4.1.1軟件設計在開發(fā)階段中的重要性軟件設計功能與性能需求編碼軟件測試程序模塊已測試軟件系統(tǒng)結構設計過程設計數(shù)據結構設計信息域需求開發(fā)階段信息流
軟件設計階段要解決“如何做”的問題。系統(tǒng)結構設計確定程序有哪些模塊組成,以及這些模塊之間的關系。數(shù)據結構設計主要是進行數(shù)據結構的定義。數(shù)據庫設計要進行數(shù)據庫的概念設計、邏輯設計和物理設計。
過程設計確定每個模塊的處理過程。數(shù)據庫設計第4頁,共133頁,2024年2月25日,星期天
4.1.2軟件設計階段的任務一、軟件設計的任務總體設計(概要設計)和詳細設計。概要設計的主要任務:1.設計軟件結構(1)采用某種設計方法,將一個復雜的系統(tǒng)按功能劃分成模塊(2)確定每個模塊的功能(3)確定模塊之間的調用關系(4)確定模塊之間的接口,即模塊之間傳遞的信息(5)評價模塊結構的質量
2.數(shù)據結構及數(shù)據庫設計
(1)數(shù)據結構的設計:設計抽象的數(shù)據結構(2)數(shù)據庫的概念設計、邏輯設計和物理設計3.編寫概要設計文檔
文檔主要有:
(1)概要設計說明書。
(2)數(shù)據庫設計說明書,主要給出所使用的DBMS簡介、數(shù)據庫的概念模型、邏輯設計、結果。
(3)用戶手冊,對需求分析階段編寫的用戶手冊進行補充。
(4)修訂測試計劃,對測試策略、方法、步驟提出明確要求。
第5頁,共133頁,2024年2月25日,星期天詳細設計:確定模塊內算法;數(shù)據結構詳細設計(JACKSON方法);接口內部的細節(jié)。第6頁,共133頁,2024年2月25日,星期天軟件設計高可靠性高可維護性高可理解性高效率軟件設計的目標二、軟件設計的目標在設計階段應達到的目標是:提高可靠性;提高可維護性;提高可理解性;提高效率。衡量該目標的準則:1、軟件實體有明顯的層次結構,利于軟件元素間控制。2、軟件實體應該是模塊化的,模塊具有獨立功能。3、軟件實體與環(huán)境的界面清晰。4、設計規(guī)格說明清晰、簡潔、完整和無二義性。常用的設計方法有:SD法、Jackson法、HIPO法、Parnas法、Warnier法等。第7頁,共133頁,2024年2月25日,星期天4.2軟件結構與軟件結構圖軟件結構是軟件模塊之間關系的表示,它決定了整個系統(tǒng)的結構,也確定了系統(tǒng)的質量。模塊之間的關系可有多種,但都可以歸結為一種層次關系。軟件結構圖是總體設計階段的主要描述工具,它描述了構成系統(tǒng)的基本元素——模塊及模塊之間的調用關系,模塊之間的數(shù)據傳遞關系。本節(jié)討論如何進行軟件結構的設計,設計的準則以及為了提高軟件系統(tǒng)的質量,如何對軟件結構進行改進的技術。第8頁,共133頁,2024年2月25日,星期天4.2.1軟件結構的基本概念二、模塊化
模塊化就是將系統(tǒng)劃分為若干個模塊,每個模塊完成一個子功能。模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問題的復雜性,使軟件結構清晰,易閱讀、易理解,易于測試和調試,因而也有助于提高軟件的可靠性。
軟件結構表示軟件系統(tǒng)的構成,是軟件模塊間關系的表示,下圖則為軟件結構示意圖。下面先介紹幾個相關的的概念。ABCDEFGHIJKLM一、模塊(Module)
模塊是程序對象有名字的集合。例如,過程、函數(shù)、子程序、宏等,是構成軟件系統(tǒng)結構的基本元素。 軟件結構圖第9頁,共133頁,2024年2月25日,星期天模塊化降低軟件復雜度的簡單證明令: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后,其工作量和復雜度都降低。并非模塊分得越小越好,因為模塊之間接口的復雜度和工作量增加。顯然,每個軟件系統(tǒng)都有一個最佳模塊數(shù)M。注意選擇分解的最佳模塊數(shù)。右上圖描述了模塊化與軟件成本的關系。軟件總成本模塊化與軟件成本的關系成本模塊數(shù)目模塊成本接口成本}最小成本區(qū)M第10頁,共133頁,2024年2月25日,星期天軟件的層次結構頂層1層2層ABCDEFGHIJKLMN深度扇入為2扇出為3扇入為33層4層寬度寬度寬度軟件結構示意圖有關指標:⑴深度:表示軟件結構中從頂層模塊到最底層模塊的層數(shù)。⑵寬度:表示控制的總分布。⑶扇出數(shù):指一個模塊直接控制下屬的模塊個數(shù)。⑷扇入數(shù):指一個模塊的直接上屬模塊個數(shù)。
一個好的軟件結構的形態(tài)準則是:頂部寬度小,中部寬度大,底部寬度次之;在結構頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。
軟件結構圖表示軟件的系統(tǒng)結構,它是軟件模塊間關系的表示,軟件之間的各種關系,均可表示為層次結構。如圖所示。第11頁,共133頁,2024年2月25日,星期天4.2.2軟件的樹狀結構和網狀結構
由模塊連接而得到的軟件結構最普通的形式就是樹狀結構和網狀結構。在樹狀結構中,位于最上層的根部是頂層模塊,它是程序的主模塊。與其聯(lián)系的有若干下屬模塊,各下屬模塊還可以進一步引出更下一層的下屬模塊,如圖所示的樹狀結構。樹狀結構的特點是:整個結構只有一個頂層模塊,而對于任何一個下屬模塊來說,它只有一個上級模塊,而且同一層模塊之間不發(fā)生關系。頂層1層2層3層
軟件的樹狀結構ABCDEFGHIKLM第12頁,共133頁,2024年2月25日,星期天
在網狀結構中,任何兩個模塊間都可以有雙向的關系,不分層次。任何兩個模塊都是平等的,沒有從屬關系。
網狀結構(a)(b)ABCDEFGHABCD
比較兩種結構的特點:對于不加限制的網狀結構,由于模塊間相互關系的任意性,使得整個結構十分復雜,處理起來勢必引起許多麻煩,這與原來劃分模塊為便于處理的意圖相矛盾。所以在軟件開發(fā)的實踐中,人們通常采用樹狀結構,而不采用網狀結構。第13頁,共133頁,2024年2月25日,星期天模塊5模塊5模塊4模塊4模塊1模塊3模塊2valuesvaluesdatadata模塊1模塊2模塊3valuesvaluesdatadata4.2.3軟件結構圖(SC圖)
結構圖(StructureChart,簡稱SC圖)是精確表達軟件結構的圖形表示方法,它以特定的符號表示模塊、模塊間的調用關系和模塊間信息的傳遞。結構圖的主要構成有:⑴模塊(Module):⑶數(shù)據:模塊調用圖⑵調用:data○數(shù)字信息控制信息第14頁,共133頁,2024年2月25日,星期天例:畫出打印報告的軟件結構圖
調用次序為上層調用下層;同層按照數(shù)據傳遞關系確定;一般從左到右執(zhí)行。
執(zhí)行過程即按照數(shù)據流向進行。報告計算獲得編輯確認數(shù)據讀入編輯打印報告頭打印報告尾打印輸入EOF輸入已編輯已編輯已編輯已確認已確認數(shù)據已確認數(shù)據計算結果結果日期總結果行行行打印報告予以確認第15頁,共133頁,2024年2月25日,星期天4.3模塊的獨立性
上一節(jié)討論了關于軟件結構與軟件結構圖的概念,本節(jié)進一步討論影響軟件系統(tǒng)質量的另一個關鍵問題,模塊的獨立性問題。模塊化方法已經為所有工程領域所接受。模塊化的主要優(yōu)點是,模塊化設計降低了軟件系統(tǒng)的復雜性,使得系統(tǒng)容易修改,同時使得系統(tǒng)各個部分可以并行開發(fā),從而提高了軟件的生產率。提高模塊質量在于提高模塊獨立性。模塊的獨立性用耦合性和內聚性來衡量。 第16頁,共133頁,2024年2月25日,星期天4.3.1模塊獨立性(moduleindependence)
“模塊”,又稱“構件”,一般指用一個名字可調用的一段程序。它一般具有如下三個基本屬性:⑴功能即指該模塊實現(xiàn)什么功能,做什么事情。必須注意:模塊功能,應是該模塊本身的功能加上它所調用的所有子模塊的功能。⑵邏輯即描述模塊內部怎么做。⑶狀態(tài)即該模塊使用時的環(huán)境和條件。所謂模塊的獨立性,是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡單的。即功能專一,模塊之間無過多的相互作用的模塊。這種類型的模塊可以并行開發(fā),模塊獨立性越強,開發(fā)越容易。獨立性強的模塊,還能減少錯誤的影響,使模塊容易組合、修改及測試。第17頁,共133頁,2024年2月25日,星期天4.3.1模塊獨立性(moduleindependence)模塊獨立性的度量標準是兩個定性準則:
耦合性用于描述模塊之間聯(lián)系的緊密程度。
內聚性用于描述模塊內部聯(lián)系的緊密程度。模塊獨立性比較強的模塊應該是具有高內聚性和的低耦合度。
第18頁,共133頁,2024年2月25日,星期天在描述一個模塊時,還必須按模塊的外部特性與內部特性分別描述模塊的外部特性模塊的模塊名、參數(shù)表、其中的輸入參數(shù)和輸出參數(shù),以及給程序以至整個系統(tǒng)造成的影響模塊的內部特性完成其功能的程序代碼和僅供該模塊內部使用的數(shù)據第19頁,共133頁,2024年2月25日,星期天模塊間耦合的類型:第20頁,共133頁,2024年2月25日,星期天內容耦合(ContentCoupling)如果發(fā)生下列情形,兩個模塊之間就發(fā)生了內容耦合。(1)一個模塊直接訪問另一個模塊的內部數(shù)據;(2)一個模塊不通過正常入口轉到另一模塊內部;(3)兩個模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語言中);(4)一個模塊有多個入口。最不好的耦合形式
!!!第21頁,共133頁,2024年2月25日,星期天若一組模塊都訪問同一個公共數(shù)據環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據環(huán)境可以是全局數(shù)據結構、共享的通信區(qū)、內存的公共覆蓋區(qū)等。公共耦合(CommonCoupling)第22頁,共133頁,2024年2月25日,星期天公共耦合的復雜程度隨耦合模塊的個數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合。第23頁,共133頁,2024年2月25日,星期天Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………問題:
公共部分的改動將影響所有調用它的模塊;
公共部分的數(shù)據存取無法控制;
復雜程度隨耦合模塊的個數(shù)增加而增加。第24頁,共133頁,2024年2月25日,星期天公共耦合舉例A公共數(shù)據區(qū)CB模塊A、B、C間存在錯綜復雜的聯(lián)系第25頁,共133頁,2024年2月25日,星期天(1)軟件可理解性降低(2)診斷錯誤困難(3)軟件可維護性差,(4)軟件可靠性差(公共數(shù)據區(qū)及全程變量無保護措施)慎用公共數(shù)據區(qū)和全程變量!!!公共耦合存在的問題:第26頁,共133頁,2024年2月25日,星期天外部耦合(ExternalCoupling)一組模塊都訪問同一全局簡單變量而不是同一全局數(shù)據結構,而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。一組模塊均與同一外部環(huán)境關聯(lián)(例如,I/O模塊與特定的設備、格式和通信協(xié)議相關聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應盡量少。第27頁,共133頁,2024年2月25日,星期天控制耦合(ControlCoupling)如果一個模塊通過傳送開關、標志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。第28頁,共133頁,2024年2月25日,星期天控制耦合舉例A計算平均分或最高分B平均/最高(控制信號)成績讀入分數(shù)輸出結果計算平均分計算最高分平均/最高?B第29頁,共133頁,2024年2月25日,星期天控制耦合增加了理解和編程的復雜性,調用模塊必須知道被調模塊的內部邏輯,增加了相互依賴去除模塊間控制耦合的方法:(1)將被調用模塊內的判定上移到調用模塊中進行(2)被調用模塊分解成若干單一功能模塊第30頁,共133頁,2024年2月25日,星期天改控制耦合為數(shù)據耦合舉例A計算平均分B1平均成績最高成績計算最高分B2第31頁,共133頁,2024年2月25日,星期天標記耦合(StampCoupling)一個模塊訪問另一個模塊時,彼此之間是通過簡單數(shù)據參數(shù)
(不是控制參數(shù)、公共數(shù)據結構或外部變量)來交換輸入、輸出信息的。數(shù)據耦合(DataCoupling)一組模塊通過參數(shù)表傳遞記錄信息,就是標記耦合。這個記錄是某一數(shù)據結構的子結構,而不是簡單變量。第32頁,共133頁,2024年2月25日,星期天數(shù)據耦合舉例開發(fā)票計算水費單價數(shù)量金額第33頁,共133頁,2024年2月25日,星期天標記耦合舉例計算水電費計算水費計算電費住戶情況水費電費住戶情況“住戶情況”是一個數(shù)據結構,圖中模塊都與此數(shù)據結構有關.“計算水費”和“計算電費”本無關,由于引用了此數(shù)據結構產生依賴關系,它們之間也是標記偶合.第34頁,共133頁,2024年2月25日,星期天將標記耦合修改為數(shù)據耦合舉例計算水電費計算水費計算電費本月用水量本月用電量水費電費第35頁,共133頁,2024年2月25日,星期天兩個模塊之間沒有直接關系,它們之間的聯(lián)系完全是通過主模塊的控制和調用來實現(xiàn)的。非直接耦合的模塊獨立性最強。非直接耦合(NondirectCoupling)第36頁,共133頁,2024年2月25日,星期天如何降低模塊間耦合度:(1)盡量使用數(shù)據耦合少用控制耦合限制公共耦合的范圍
堅決避免使用內容耦合(2)降低接口的復雜性第37頁,共133頁,2024年2月25日,星期天2.模塊獨立性的度量之二:內聚性
一個模塊內部元素在功能上相互關聯(lián)的強度
設計目標:高內聚
(模塊在軟件過程中完成單一的任務)第38頁,共133頁,2024年2月25日,星期天模塊的內聚性類型:第39頁,共133頁,2024年2月25日,星期天(1)偶然內聚(巧合內聚)
模塊內各部分間無聯(lián)系ABCMMOVEOTORREADFILEFMOVESTOT模塊M中的三個語句沒有任何聯(lián)系缺點:可理解性差,可修改性差例:第40頁,共133頁,2024年2月25日,星期天(2)邏輯內聚(LogicalCohesion)這種模塊把幾種相關的功能組合在一起,每次被調用時,由傳送給模塊的判定參數(shù)來確定該模塊應執(zhí)行哪一種功能。第41頁,共133頁,2024年2月25日,星期天邏輯內聚模塊ABCEFGABCEFGA1B1C1EFG模塊內部邏輯E、F、G邏輯功能相似,組成新模塊EFG缺點:增強了耦合程度(控制耦合)
不易修改,效率低公用代碼段公用代碼段第42頁,共133頁,2024年2月25日,星期天(3)時間內聚(經典內聚)模塊完成的功能必須在同一段時間內執(zhí)行,這些功能只因時間因素關聯(lián)在一起。例如:初始化系統(tǒng)模塊、系統(tǒng)結束模塊、緊急故障處理模塊等均是時間性聚合模塊.第43頁,共133頁,2024年2月25日,星期天使用流程圖做為工具設計程序時,把流程圖中的某一部分劃出組成模塊,就得到過程內聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內聚模塊。模塊內各處理成分相關,且必須以特定次序執(zhí)行(4)過程內聚(ProceduralCohesion)第44頁,共133頁,2024年2月25日,星期天過程內聚模塊讀入成績單審查成績單統(tǒng)計成績打印成績讀入并審查成績單統(tǒng)計并打印成績單第45頁,共133頁,2024年2月25日,星期天如果一個模塊內各功能部分都使用了相同的輸入數(shù)據,或產生了相同的輸出數(shù)據,則稱之為通信內聚模塊。通常,通信內聚模塊是通過數(shù)據流圖來定義的。(5)通信內聚(CommunicationCohesion)第46頁,共133頁,2024年2月25日,星期天通信內聚模塊例產生工資報表計算平均工資職工工資記錄職工工資報表平均工資產生職工工資報表并計算平均工資模塊第47頁,共133頁,2024年2月25日,星期天第48頁,共133頁,2024年2月25日,星期天這種模塊完成多個功能,各個功能都在同一數(shù)據結構上操作,每一項功能有一個唯一的入口點。這個模塊將根據不同的要求,確定該執(zhí)行哪一個功能。由于這個模塊的所有功能都是基于同一個數(shù)據結構(符號表),因此,它是一個信息內聚的模塊。(6)信息內聚(InformationalCohesion)第49頁,共133頁,2024年2月25日,星期天第50頁,共133頁,2024年2月25日,星期天一個模塊中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內聚模塊。模塊僅包括為完成某個功能所必須的所有成分。
(模塊所有成分共同完成一個功能,缺一不可)
內聚性最強(7)功能內聚(FunctionalCohesion)信息內聚模塊可以看成是多個功能內聚模塊的組合,并且達到信息的隱蔽。即把某個數(shù)據結構、資源或設備隱蔽在一個模塊內,不為別的模塊所知曉。第51頁,共133頁,2024年2月25日,星期天內聚與耦合密切相關,同其它模塊強耦合的模塊意味者弱內聚,強內聚模塊意味著與其它模塊間松散耦合.設計目標:力爭強內聚、弱耦合第52頁,共133頁,2024年2月25日,星期天4.4結構化設計方法軟件設計分為兩個階段:(1)概要設計(總體設計)確定軟件的結構以及各組成成分(子系統(tǒng)或模塊)之間的相互關系。(2)詳細設計
確定模塊內部的算法和數(shù)據結構,產生描述各模塊程序過程的詳細文檔。第53頁,共133頁,2024年2月25日,星期天數(shù)據結構是數(shù)據的各個元素之間的邏輯關系的一種表示。數(shù)據結構設計應確定數(shù)據的組織、存取方式、相關程度以及信息的不同處理方法。數(shù)據結構的組織方法和復雜程度可以靈活多樣,但典型的數(shù)據結構種類是有限的,它們是構成一些更復雜結構的基本構件塊。數(shù)據結構第54頁,共133頁,2024年2月25日,星期天第55頁,共133頁,2024年2月25日,星期天軟件過程軟件過程必須提供精確的處理說明,包括事件的順序、正確的判定點、重復的操作直至數(shù)據的組織和結構等等。程序結構與軟件過程是有關系的。對每個模塊的處理必須指明該模塊所在的上下級環(huán)境。軟件過程遵從程序結構的主從關系,因此它也是層次化的。下圖軟件過程側重與描述模塊間的處理細節(jié)。第56頁,共133頁,2024年2月25日,星期天第57頁,共133頁,2024年2月25日,星期天信息隱蔽由parnas方法提倡的信息隱蔽是指,每個模塊的實現(xiàn)細節(jié)對于其它模塊來說是隱蔽的。也就是說,模塊中所包含的信息(包括數(shù)據和過程)不允許其它不需要這些信息的模塊使用。第58頁,共133頁,2024年2月25日,星期天4.5概要設計(總體設計)主要確定:軟件系統(tǒng)的結構各模塊功能及模塊間聯(lián)系(接口)表示軟件結構的圖形工具結構圖層次圖和HIPO圖第59頁,共133頁,2024年2月25日,星期天4.5結構化設計方法首先研究、分析和審查數(shù)據流圖。從軟件的需求規(guī)格說明中弄清數(shù)據流加工的過程,對于發(fā)現(xiàn)的問題及時解決。然后根據數(shù)據流圖決定問題的類型。數(shù)據處理問題典型的類型有兩種:變換型和事務型。針對兩種不同的類型分別進行分析處理。第60頁,共133頁,2024年2月25日,星期天由數(shù)據流圖推導出系統(tǒng)的初始結構圖。利用一些啟發(fā)式原則來改進系統(tǒng)的初始結構圖,直到得到符合要求的結構圖為止。修改和補充數(shù)據詞典。制定測試計劃。基本思想:DFDSystemHierarchy第61頁,共133頁,2024年2月25日,星期天InternalrepresentationInformationTransformflowOutgoingflowIncomingflowExternalrepresentationTime事實上所有信息流都可歸結為變換流⑴變換流(TransformFlow):1、DataFlow的分類第62頁,共133頁,2024年2月25日,星期天⑵事務流(TransactionFlow)
…
…TTransactionrequest
…Actionpaths
…
…T=Calloneoftheseveralsubroutinesdependingonthetypeoftheincomingtransactionrequest.當信息流具有明顯的“發(fā)射中心”時,可歸結為事務流。第63頁,共133頁,2024年2月25日,星期天2系統(tǒng)結構圖中的模塊分類傳入模塊─從下屬模塊取得數(shù)據,經過某些處理,再將其傳送給上級模塊。它傳送的數(shù)據流叫做邏輯輸入數(shù)據流。傳出模塊─從上級模塊獲得數(shù)據,進行某些處理,再將其傳送給下屬模塊。它傳送的數(shù)據流叫做邏輯輸出數(shù)據流。變換模塊─它從上級模塊取得數(shù)據,進行特定的處理,轉換成其它形式,再傳送回上級模塊。它加工的數(shù)據流叫做變換數(shù)據流。協(xié)調模塊─對所有下屬模塊進行協(xié)調和管理的模塊。第64頁,共133頁,2024年2月25日,星期天第65頁,共133頁,2024年2月25日,星期天3變換型系統(tǒng)結構圖變換型數(shù)據處理問題的工作過程大致分為三步,即取得數(shù)據,變換數(shù)據和給出數(shù)據。相應于取得數(shù)據、變換數(shù)據、給出數(shù)據,變換型系統(tǒng)結構圖由輸入、中心變換和輸出等三部分組成。第66頁,共133頁,2024年2月25日,星期天第67頁,共133頁,2024年2月25日,星期天4事務型系統(tǒng)結構圖它接受一項事務,根據事務處理的特點和性質,選擇分派一個適當?shù)奶幚韱卧?,然后給出結果。在事務型系統(tǒng)結構圖中,事務中心模塊按所接受的事務的類型,選擇某一事務處理模塊執(zhí)行。各事務處理模塊并列。每個事務處理模塊可能要調用若干個操作模塊,而操作模塊又可能調用若干個細節(jié)模塊。第68頁,共133頁,2024年2月25日,星期天第69頁,共133頁,2024年2月25日,星期天5變換分析變換分析方法由以下四步組成:審查數(shù)據流圖;區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分;進行一級分解,設計上層模塊;進行二級分解,設計輸入、輸出和中心變換部分的中、下層模塊。第70頁,共133頁,2024年2月25日,星期天第71頁,共133頁,2024年2月25日,星期天①
在選擇模塊設計的次序時,必須對一個模塊的全部直接下屬模塊都設計完成之后,才能轉向另一個模塊的下層模塊的設計。由DFDSC時,應遵循一些原則:第72頁,共133頁,2024年2月25日,星期天②
在設計下層模塊時,應考慮模塊的耦合和內聚問題,以提高初始結構圖的質量。③使用“黑箱”技術:在設計當前模塊時,先把這個模塊的所有下層模塊定義成“黑箱”,在設計中利用它們時,暫時不考慮其內部結構和實現(xiàn)。在這一步定義好的“黑箱”,在下一步就可以對它們進行設計和加工。這樣,又會導致更多的“黑箱”。最后,全部“黑箱”的內容和結構應完全被確定。第73頁,共133頁,2024年2月25日,星期天④在模塊劃分時,一個模塊的直接下屬模塊一般在5個左右。如果直接下屬模塊超過10個,可設立中間層次。⑤如果出現(xiàn)了以下情況,就停止模塊的功能分解:
當模塊不能再細分為明顯的子任務時;
當分解成用戶提供的模塊或程序庫的子程序時;
當模塊的界面是輸入/輸出設備傳送的信息時;
當模塊不宜再分解得過小時。
第74頁,共133頁,2024年2月25日,星期天6事務分析在很多軟件應用中,存在某種作業(yè)數(shù)據流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能。這種數(shù)據流就叫做事務。與變換分析一樣,事務分析也是從分析數(shù)據流圖開始,自頂向下,逐步分解,建立系統(tǒng)結構圖。第75頁,共133頁,2024年2月25日,星期天
第76頁,共133頁,2024年2月25日,星期天7事務分析過程①
識別事務源
利用數(shù)據流圖和數(shù)據詞典,從問題定義和需求分析的結果中,找出各種需要處理的事務。通常,事務來自物理輸入裝置。有時,設計人員還必須區(qū)別系統(tǒng)的輸入、中心加工和輸出中產生的事務。第77頁,共133頁,2024年2月25日,星期天②
規(guī)定適當?shù)氖聞招徒Y構
在確定了該數(shù)據流圖具有事務型特征之后,根據模塊劃分理論,建立適當?shù)氖聞招徒Y構。③
識別各種事務和它們定義的操作。
從問題定義和需求分析中找出的事務及其操作所必需的全部信息,對于系統(tǒng)內部產生的事務,必須仔細地定義它們的操作。第78頁,共133頁,2024年2月25日,星期天④
注意利用公用模塊
在事務分析的過程中,如果不同事務的一些中間模塊可由具有類似的語法和語義的若干個低層模塊組成,則可以把這些低層模塊構造成公用模塊。⑤
對每一事務,或對聯(lián)系密切的一組事務,建立一個事務處理模塊;
如果發(fā)現(xiàn)在系統(tǒng)中有類似的事務,可以把它們組成一個事務處理模塊。第79頁,共133頁,2024年2月25日,星期天⑥
對事務處理模塊規(guī)定它們全部的下層操作模塊⑦對操作模塊規(guī)定它們的全部細節(jié)模塊。
變換分析是軟件系統(tǒng)結構設計的主要方法。一般,一個大型的軟件系統(tǒng)是變換型結構和事務型結構的混合結構。所以,我們通常利用以變換分析為主,事務分析為輔的方式進行軟件結構設計。第80頁,共133頁,2024年2月25日,星期天SD的總體過程:“變換”“事務”精化數(shù)據流圖流類型區(qū)分事務中心和數(shù)據接收通路區(qū)分輸入和輸出分支映射成事務結構映射成變換結構用啟發(fā)式設計規(guī)則精化軟件結構導出接口描述和全程數(shù)據結構復查詳細設計變換分析事務分析優(yōu)化的前題是:“Getittowork,thenmakeitfast.”第81頁,共133頁,2024年2月25日,星期天
第82頁,共133頁,2024年2月25日,星期天8軟件模塊結構的改進(啟發(fā)式原則)模塊功能的完善化
一個完整的模塊應當有以下幾部分:
①執(zhí)行規(guī)定的功能的部分;
②出錯處理部分。當模塊不能完成規(guī)定的功能時,必須回送出錯標志,出現(xiàn)例外情況的原因。
③如果需要返回數(shù)據給它的調用者,在完成數(shù)據加工或結束時,應當給它的調用者返回一個狀態(tài)碼。第83頁,共133頁,2024年2月25日,星期天消除重復功能,改善軟件結構
①
完全相似:在結構上完全相似,可能只是在數(shù)據類型上不一致。此時可以采取完全合并的方法。
②局部相似:找出其相同部分,分離出去,重新定義成一個獨立的下一層模塊。還可以與它的上級模塊合并。第84頁,共133頁,2024年2月25日,星期天如左圖,虛線框部分是相似的。此時,不可把兩者合并為一,如圖(b)所示,因為這樣在合并后的模塊內部必須設置許多開關,如圖(f)所示,勢必把模塊降低到邏輯內聚一級。一般處理辦法是分析R1和R2,找出其相同部分,從R1和R2中分離出去,重新定義成一個獨立的下一層模塊。R1和R2剩余的部分根據情況還可以與它的上級模塊合并,以減少控制的傳遞性、全局數(shù)據的引用和接口的復雜性,這樣就形成了圖中如(c)、(d)、(e)的各種方案。第85頁,共133頁,2024年2月25日,星期天模塊的作用范圍應在控制范圍之內
模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內一個判定的作用范圍,凡是受這個判定影響的所有模塊都屬于這個判定的作用范圍。如果一個判定的作用范圍包含在這個判定所在模塊的控制范圍之內,則這種結構是簡單的,否則,它的結構是不簡單的。
第86頁,共133頁,2024年2月25日,星期天(a),模塊A的控制范圍為模塊A,B,C,D,E,F,G.模塊C的控制范圍為模塊C,F,G.(b)表明作用范圍不在控制范圍之內。模塊G作出一個判定之后,若需要模塊C工作,則必須把信號回送給模塊D,再由D把信號回送給模塊B。這樣就增加了數(shù)據的傳送量和模塊間的耦合,使模塊間出現(xiàn)了控制耦合,這顯然不是一個好的設計。圖中反白框表示判定的作用范圍。(c)雖然表明模塊的作用范圍是在控制范圍之內,可是判定所在模塊TOP所處層次太高,這樣也需要經過不必要的信號傳送,增加了數(shù)據的傳送量。雖然可以用,但不是較好的結構。(d)表明作用范圍在控制范圍之內,只有一個判定分支有一個不必要的穿越,是一個較好的結構。(e)是一個比較理想的結構。解決:判斷點上移或模塊下移!
從以上比較可知,在一個設計的很好的系統(tǒng)模塊結構圖中,所有受一個判定影響的模塊都應該從屬于該判定所在的模塊,最好局限于作出判定的那個模塊本身及它的直接下屬模塊。如圖(e)那樣。第87頁,共133頁,2024年2月25日,星期天控制域MACBM的控制域為{M,A,B,C}
作用域:M中的一個判定所影響的模塊。例如:A:…………if……thengotoB1……………………B:……………………B1:……………………作用域在控制域內A:…………if……thengotoM1……………………M:……………………M1:gotoC1……………………作用域超出了控制域上例中A的作用超出了控制域。改進方法之一,可以把A中的if移到M中;方法之二,可以把C移到A下面。第88頁,共133頁,2024年2月25日,星期天盡可能減少高扇出結構,隨著深度增大扇入。
如果一個模塊的扇出數(shù)過大,就意味著該模塊過分復雜,需要協(xié)調和控制過多的下屬模塊。應當適當增加中間層次的控制模塊。比較適當?shù)纳瘸鰯?shù)為2-5,最多不要超過9.模塊的扇出數(shù)過小,例如總是1,也不好。這樣將使得結構圖的深度大大增加,不但增大了模塊接口的復雜性,而且增加了調用和返回上的時間開銷,降低了工作效率。一個模塊的扇入數(shù)越大,則共享該模塊的上級模塊數(shù)目越多。但如果一個模塊的扇入數(shù)太大,例如超過8,而它又不是公用模塊,說明該模塊可能具有多個功能。在這種情況下應當對它進一步分析并將其功能分解。
(c)所示模塊Q的扇入數(shù)為9,它又不是公用模塊,通過分析得知它是3功能的模塊。對它進行分解,增加3個中間控制模塊Q1,Q2,Q3,而把真正公用部分提取出來留在Q中,使它成為這3個中間模塊的公用模塊,使各模塊的功能單一化,從而改善了模塊結構,如圖(d).
經驗證明,一個設計的很好的軟件模塊結構,通常上層扇出比較高,中間扇出較少,底層扇入到有高扇入的公用模塊中。第89頁,共133頁,2024年2月25日,星期天
避免或減少使用病態(tài)聯(lián)接
應限制使用如下三種病態(tài)聯(lián)接:
①
直接病態(tài)聯(lián)接即模塊A直接從模塊B內部取出某些數(shù)據,或者把某些數(shù)據直接送到模塊B內部。第90頁,共133頁,2024年2月25日,星期天
②
公共數(shù)據域病態(tài)聯(lián)接模塊A和模塊B通過公共數(shù)據域,直接傳送或接受數(shù)據,而不是通過它們的上級模塊。這種方式將使得模塊間的耦合程度劇增。它不僅影響模塊A和模塊B,而且影響與公共數(shù)據域有關聯(lián)的所有模塊。③
通信模塊聯(lián)接即模塊A和模塊B通過通信模塊TABLEIT傳送數(shù)據。從表面看,這不是病態(tài)聯(lián)接,因為模塊A和模塊B都未涉及通信模塊TABLEIT的內部。然而,它們之間的通信(即數(shù)據傳送)沒有通過它們的上級模塊。從這個意義上講,這種聯(lián)接是病態(tài)的。第91頁,共133頁,2024年2月25日,星期天模塊的大小要適中
模塊的大小,可以用模塊中所含語句的數(shù)量的多少來衡量。把模塊的大小限制在一定的范圍之內。通常規(guī)定其語句行數(shù)在50~100左右,保持在一頁紙之內,最多不超過500行。設計功能可預測的模塊,但要避免過分受限制的模塊一個功能可預測的模塊,不論內部處理細節(jié)如何,但對相同的輸入數(shù)據,總能產生同樣的結果。但是,如果模塊內部蘊藏有一些特殊的鮮為人知的功能時,這個模塊就可能是不可預測的。對于這種模塊,如果調用者不小心使用,其結果將不可預測。第92頁,共133頁,2024年2月25日,星期天如果一個模塊的局部數(shù)據結構的大小、控制流的選擇或者與外界(人、硬軟件)的接口模式被限制死了,則很難適應用戶新的要求或環(huán)境的變更。為了能夠適應將來的變更,軟件模塊中局部數(shù)據結構的大小應當是可控制的,控制流的選擇對于調用者來說,應當是可預測的。而與外界的接口應當是靈活的。
第93頁,共133頁,2024年2月25日,星期天層次圖和HIPO圖IBM公司發(fā)明的HIPO圖:層次圖
+
輸入/處理/輸出圖
(H圖)(IPO圖)(HierachyInputProcessOutput)第94頁,共133頁,2024年2月25日,星期天1.層次圖(H圖)
表示軟件的層次結構正文加工系統(tǒng)輸入輸出編輯加標題存儲檢索編目錄添加刪除插入修改合并列表第95頁,共133頁,2024年2月25日,星期天帶編號的層次圖(H圖)
正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標題
4.0存儲5.0檢索6.0編目錄
7.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6第96頁,共133頁,2024年2月25日,星期天2.
HIPO圖
H圖中每一方框(模塊)均有一張IPO圖對應
航線調度系統(tǒng)HIPO圖舉例
H圖:命令監(jiān)控器1.0取得輸入1.1輸入確認
1.2請求確認1.3更新處理
1.4第97頁,共133頁,2024年2月25日,星期天傳統(tǒng)的IPO圖舉例輸入處理輸出讀口令請求口令文件1取得輸入2口令確認3請求確認請求記錄權限文件4更新處理權限記錄狀態(tài)報告響應命令監(jiān)控器(1.0)的IPO圖第98頁,共133頁,2024年2月25日,星期天改進的IPO圖格式IPO圖系統(tǒng):模塊:編號:作者:日期:被調用:調用:輸出:輸入:輸入:局部數(shù)據元素:注釋:第99頁,共133頁,2024年2月25日,星期天§4.6詳細設計(過程設計、模塊設計)主要任務:編寫詳細設計說明書為此,設計人員應:(1)確定每個模塊的算法,用工具表達算法的過程,寫出模塊的詳細過程性描述。(2)確定每一模塊的數(shù)據結構。(3)確定模塊接口細節(jié)。詳細設計是編碼的先導。第100頁,共133頁,2024年2月25日,星期天4.6.1詳細設計的描述方法詳細設計工具:(1)圖形工具(2)表格工具(3)語言工具第101頁,共133頁,2024年2月25日,星期天1.程序流程圖2.盒圖(N-S圖)3.問題分析圖(PAD)4.過程設計語言(PDL)(偽碼)5.判定表第102頁,共133頁,2024年2月25日,星期天1.盒圖(N-S圖)用方框圖代替?zhèn)鹘y(tǒng)的流程圖描述五種基本控制結構的圖形構件(1)順序型ABC第103頁,共133頁,2024年2月25日,星期天(2)選擇型(If–then–else)If–then–elseIf–thenABF條件TAFT條件then–部分then–部分else–部分第104頁,共133頁,2024年2月25日,星期天(3)多分支選擇型(CASE型)A1值1A2An........條件值2值n第105頁,共133頁,2024年2月25日,星期天(4)WHILE重復型(5)UNTIL重復型S(循環(huán)體)DO-WHILEPS(循環(huán)體)REPEATUNTILP(先測試循環(huán))(后測試循環(huán))循環(huán)條件第106頁,共133頁,2024年2月25日,星期天(6)并行結構A1A2An....第107頁,共133頁,2024年2月25日,星期天(7)移出標記ACBFX6TA:D(調用結構)第108頁,共133頁,2024年2月25日,星期天2.問題分析圖(PAD)
(ProblemAnalysisDiagram)基本控制結構:(1)順序結構(2)選擇結構
ABCABTF條件第109頁,共133頁,2024年2月25日,星期天(3)重復結構
WHILE
CSUNTIL
CS(先測試循環(huán))(后測試循環(huán))等價的PASCAL語言:REPEATCUNTILS等價的PASCAL語言:WHILECDOS第110頁,共133頁,2024年2月25日,星期天(4)多分支選擇型(CASE型)
A1值1值2值nA2An......條件第111頁,共133頁,2024年2月25日,星期天3.判定表(決策表)描述多條件、多目標動作的形式化工具判定表舉例(計算機票折扣率)旅游時間訂票量折扣量7-9,12月≤20≤20>20>20
15%
5%
20%
30%條件類別四種條件組合操作條件組合下操作的執(zhí)行1-6,10,11月第112頁,共133頁,2024年2月25日,星期天判定樹(Decision決策樹)條件1條件2
結果計7-9,訂票量>20:15%算12月訂票量≤20:5%折扣1-6,訂票量>20:30%量10,11月訂票量≤20:5%第113頁,共133頁,2024年2月25日,星期天保費計算性別男性別女已婚已婚未婚未婚≤25≤25>25>25≤30≤30>30>30CDABGHEF某保險公司對投保人的汽車保費計算方法如下:單身男,年齡30歲以下(含30歲),計保費標準A,30歲以上計保費標準B;已婚男30歲以下(含30歲),計保費標準C,30歲以上計保費標準D,單身女,年齡25歲以下(含25歲),計保費標準E,25歲以上計保費標準F;已婚女25歲以下(含25歲),計保費標準G,25歲以上計保費標準H,請畫出對應的判定樹。第114頁,共133頁,2024年2月25日,星期天習題:某校的課酬計算方案如下:(l)基本課酬為每節(jié)課10元;(2)如果班級人數(shù)超過40人,課酬增加:基本課酬×0.1;(3)如果班級人數(shù)超過60人,課酬增加:基本課酬×0.2;(4)如果教師是副教授,課酬增加:基本課酬×0.1;(5)如果教師是教授,課酬增加:基本課酬×0.2;(6)講師,課酬不增加;(7)助教,課酬減少:基本課酬×0.1。請用判定表表達上述計算方案。第115頁,共133頁,2024年2月25日,星期天123456789101112人數(shù)≤40TTTT40<人數(shù)≤60TTTT人數(shù)>60TTTT助教TTT講師TTT副教授TTT教授TTT課酬:9元/節(jié)√課酬:10元/節(jié)√√課酬:11元/節(jié)√√√課酬:12元/節(jié)√√√課酬:13元/節(jié)√√課酬:14元/節(jié)√第116頁,共133頁,2024年2月25日,星期天4.PDL(1)關鍵字的固定語法,它提供了結構化控制結構、數(shù)據說明和模塊化的特點。為了使結構清晰和可讀性好,通常在所有可能嵌套使用的控制結構的頭和尾都有關鍵字,例如,if…fi(或endif)等等。(2)自然語言的自由語法,它描述處理特點。(3)數(shù)據說明的手段。應該既包括簡單的數(shù)據結構(例如純量和數(shù)組),又包括復雜的數(shù)據結構(例如,鏈表或層次的數(shù)據結構)。(4)模塊定義和調用的技術,應該提供各種接口描述模式。第117頁,共133頁,2024年2月25日,星期天4.6程序復雜程度的定量度量4.6.1McCabe方法4.6.2Halstead方法第118頁,共133頁,2024年2月25日,星期天
1、可使用性
①使用簡單②用戶界面中所用術語的標準化和一致性③
具有HELP功能④
快速的系統(tǒng)響應和低的系統(tǒng)成本
⑤具有容錯能力
2、靈活性
①考慮用戶的特點、能力、知識水平。②提供不同的系統(tǒng)響應信息。③提供根據用戶需求制定和修改界面。
3、界面的復雜性與可靠性復雜性—界面規(guī)模及組織的復雜程度。應該愈簡單愈好??煽啃浴笩o故障使用的時間間隔。用戶界面應該能夠保證用戶正確、可靠地使用系統(tǒng),及程序、數(shù)據的安全。4.7.1用戶界面應具有的特性4.7用戶界面設計第119頁,共133頁,2024年2月25日,星期天
1、用戶特性分析—
用戶模型了解所有用戶的技能和經驗,針對用戶能力設計或更改界面。從以下方面分析:用戶類型—通常分為:外行型、初學型、熟練型、專家型。用戶特性度量—與用戶使用模式和用戶群體能力有關。包括:用戶使用頻度、用戶用機能力、用戶的知識、思維能力等。4.7.2用戶界面設計的任務這部分工作應該與軟件需求分析同步進行。包括以下內容:2、用戶界面的任務分析—任務模型(DFD圖)是對系統(tǒng)內部活動的分解,不僅要進行功能分解(用DFD圖描述),還要包括與人相關的活動。每個加工即一個功能或任務。3、確定用戶界面類型第120頁,共133頁,2024年2月25日,星期天1、菜單(menu)
按照顯示方式正文菜單、圖標菜單、正文和圖標混合菜單,如:開始菜單。4.7.3用戶界面的基本類型字符界面、GUI界面、無交互界面。設計原則:以人為本,以用戶的體驗為準。GUI界面的主要元素如下:按屏幕位置和操作風格固定位置、浮動位置(彈出)、下拉式、嵌入式混合菜單固定及下拉菜單固定菜單下拉菜單第121頁,共133頁,2024年2月25日,星期天2、圖象在用戶界面中,加入豐富多彩的畫面,將能夠更加行象地為用戶
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO/IEC 18046-5:2025 EN Information technology - Radio frequency identification device performance test methods - Part 5: Test methods for the environmental characteristics
- 2024食品工廠代加工冷鏈配送服務合同范本3篇
- 2024版無人機遙感監(jiān)測服務合同
- 2025年度水庫魚塘智能化養(yǎng)殖技術承包合同4篇
- 出資協(xié)議書范本
- 2024版鋁錠批發(fā)銷售協(xié)議樣本一
- 2025年度生態(tài)環(huán)保打井承包合同標準范本4篇
- 2025年度智慧家居產品銷售與售后服務合同3篇
- 2025年度住宅小區(qū)墻面公共藝術創(chuàng)作租賃合同標的協(xié)議4篇
- 2025年度牙科專業(yè)人才培養(yǎng)與承包服務合同范本4篇
- DL-T1848-2018220kV和110kV變壓器中性點過電壓保護技術規(guī)范
- DZ∕T 0213-2020 礦產地質勘查規(guī)范 石灰?guī)r、水泥配料類(正式版)
- 食品銷售業(yè)務員合同
- (中考試題)2024年浙江省紹興市中考數(shù)學真題試卷解析版
- 國有企業(yè)內部審計實施方案
- 部編版語文一年級下冊全冊大單元整體作業(yè)設計
- 減速機的培訓課件
- 六西格瑪-DMAIC-報告
- 老年人護理風險管理
- 蒸壓加氣混凝土制品課件
- 《根號2有多大》課件
評論
0/150
提交評論