版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第五章軟件設(shè)計主要內(nèi)容:▲軟件設(shè)計的目標和任務▲軟件設(shè)計基礎(chǔ)▲模塊的獨立性▲結(jié)構(gòu)化設(shè)計方法▲數(shù)據(jù)設(shè)計及文件設(shè)計▲過程設(shè)計討論要點:(1)如何將分析模型轉(zhuǎn)換為軟件設(shè)計?(2)作為軟件工程師在軟件設(shè)計方面應使用哪些基本原則和概念?§5.1軟件設(shè)計的目標和目的
軟件需求:解決“做什么”軟件設(shè)計:解決“怎么做”5.1.1軟件設(shè)計的任務問題結(jié)構(gòu)(軟件需求)軟件結(jié)構(gòu)
從軟件需求規(guī)格說明書出發(fā),形成軟件的具體設(shè)計方案。映射將分析模型轉(zhuǎn)換為軟件設(shè)計數(shù)據(jù)字典數(shù)據(jù)流圖E-R圖狀態(tài)變遷圖加工規(guī)約控制規(guī)約數(shù)據(jù)對描述象數(shù)據(jù)設(shè)計體系結(jié)構(gòu)設(shè)計接口設(shè)計過程設(shè)計分析模型設(shè)計模型1.軟件的總體結(jié)構(gòu)主要回答的問題軟件的組成部分軟件的層次關(guān)系模塊的內(nèi)部處理邏輯模塊之間的界面2.軟件設(shè)計的問題
工具—如何描述軟件的總體結(jié)構(gòu)方法—用什么方法由問題結(jié)構(gòu)導出軟件結(jié)構(gòu)評估準則—什么樣的軟件結(jié)構(gòu)是“最/更優(yōu)的”3.軟件設(shè)計方法結(jié)構(gòu)化設(shè)計方法(SD)面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法(JSD方法)面向?qū)ο蟮脑O(shè)計方法(OOD)4.軟件設(shè)計分為兩個階段:(1)概要設(shè)計(總體設(shè)計)
確定軟件的結(jié)構(gòu)以及各組成成分(子系統(tǒng)或模塊)之間的相互關(guān)系。(2)詳細設(shè)計
確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構(gòu),
產(chǎn)生描述各模塊程序過程的詳細文檔。5.1.2軟件設(shè)計的原則Davis提出的軟件設(shè)計原則:Thedesignprocessshouldnotsufferfrom“tunnelvision.”Thedesignshouldbetraceabletotheanalysismodel.Thedesignshouldnotreinventthewheel.Thedesignshould“minimizetheintellectualdistance”betweenthesoftwareandtheproblematitexistsintherealworld.Thedesignshouldexhibituniformityandintegration.Thedesignshouldbestructuredtoaccommodatechange.Thedesignshouldbestructuredtodegradegentle,evenwhenaberrantdata,evens,oroperatingconditionsareencountered.Designisnotcoding,codingisnotdesign.Thedesignshouldbeassessedforqualityasitisbeingcreated,notafterthefact.Thedesignshouldbereviewedtominimizeconceptual(semantic)errors.§5.2軟件設(shè)計的概念和原理1.軟件結(jié)構(gòu)2.軟件過程3.模塊化4.抽象5.信息隱蔽6.信息局部化5.2.1軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)包括兩部分:(1)過程構(gòu)件(模塊)的層次結(jié)構(gòu)(2)數(shù)據(jù)構(gòu)件控制結(jié)構(gòu)(程序結(jié)構(gòu))控制結(jié)構(gòu)是軟件模塊間關(guān)系的表示控制結(jié)構(gòu)圖示:1.控制結(jié)構(gòu)的層次規(guī)則
只有一個頂層(0層)模塊0層外任一模塊都會在它的鄰層存在一模塊與它有關(guān)同層模塊間不發(fā)生聯(lián)系2.軟件結(jié)構(gòu)度量術(shù)語深度寬度扇出扇入(模塊的層數(shù))(同一層最大模塊數(shù))(一個模塊直接調(diào)用的模塊數(shù))(調(diào)用一個給定模塊的模塊個數(shù))5.2.2軟件過程軟件過程用以描述各模塊的處理細節(jié)(算法的詳細描述),包括對下層模塊控制的操作細節(jié)。軟件過程:
程序結(jié)構(gòu)定義了控制層次,而不管處理和決策的順序。
軟件過程著重每個模塊單個處理細節(jié),過程必須提供處理的精確定義,包括事件的順序,準確的決策點,循環(huán)操作,甚至還有數(shù)據(jù)組織/結(jié)構(gòu)。軟件過程表示是分層的,如右圖所示。5.2.3模塊化(Modularity)模塊化是好的軟件設(shè)計的一個基本準則;
高層模塊從整體上把握問題,隱蔽細節(jié)
復雜問題較小問題
分解可減小解題所需的總的工作分解例:將問題(P1+P2)分解為P1,P2,設(shè):函數(shù)C(x)定義問題
x
的復雜程度,函數(shù)E(x)解決問題
x
需要的工作量,對問題P1和P2:如果
C(P1)>C(P2)顯然:E(P1)>E(P2)有規(guī)律:C(P1+P2)>C(P1)+C(P2)
E(P1+P2)>E(P1)+E(P2)
"各個擊破"理論模塊化和軟件成本成本或工作量模塊數(shù)量軟件總成本集成成本成本/模塊M最小成本區(qū)域5.2.4抽象(Abstraction)抽象原則應用舉例WindowsNT一體化的I/O系統(tǒng)設(shè)計文件管理網(wǎng)絡(luò)管理設(shè)備管理高速緩沖存儲器OS對虛擬文件的字節(jié)流,虛擬文件可為任何設(shè)備和實體。抽象5.2.5信息隱蔽(InformationHiding)
模塊所包含的信息,不允許其它不需要這些信息的模塊訪問,獨立的模塊間僅僅交換為完成系統(tǒng)功能而必須交換的信息。軟件質(zhì)量因素:
可維護性可靠性可理解性效率信息隱蔽的目的:
提高模塊的獨立性,減少修改或維護時的影響面。5.2.6信息局部化
把關(guān)系密切的軟件元素物理地放得彼此靠近。優(yōu)點:可維護性好可靠性好可理解性好§5.3模塊的獨立性5.3.1模塊獨立性的概念模塊獨立的含義:模塊完成獨立的功能符合信息隱蔽和信息局部化原則模塊間關(guān)連和依賴程度盡量小模塊獨立的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結(jié)果。模塊獨立重要性:
1有效的模塊化軟件比較容易開發(fā)2模塊容易測試和維護5.3.2模塊獨立性的度量
模塊獨立性取決于模塊的內(nèi)部和外部特征。SD方法提出的定性的度量標準:
模塊之間的耦合性衡量不同模塊彼此間互相依賴(連接)的緊密程度。模塊自身的內(nèi)聚性衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。
用三個封裝級別表示的軟件結(jié)構(gòu)原始代碼行0級程序模型(子程序或過程)1級2級類/對象結(jié)構(gòu)
結(jié)構(gòu)設(shè)計(或1級)標準,用以管理每一對封裝級別的元素之間的相互關(guān)系內(nèi)聚結(jié)構(gòu)化設(shè)計0級結(jié)構(gòu)體(代碼行)1級結(jié)構(gòu)體(程序)TO:FROM:0級結(jié)構(gòu)體(代碼行)1級結(jié)構(gòu)體(程序)輸出端耦合性內(nèi)聚是指度量一個給定的程序內(nèi)的多行代碼的單一功能性,以確定是否達到該程序所要實現(xiàn)的目的。耦合性用來度量程序之間聯(lián)系的次數(shù)和強度。上表的擴展:包括2級封裝(所有的類)內(nèi)聚結(jié)構(gòu)化設(shè)計0級結(jié)構(gòu)體(代碼行)1級結(jié)構(gòu)體(程序)TO:FROM:0級結(jié)構(gòu)體(代碼行)1級結(jié)構(gòu)體(程序)輸出端耦合性—2級結(jié)構(gòu)體(類)——類的耦合2級結(jié)構(gòu)體(類)類的內(nèi)聚
類的內(nèi)聚是模仿了一個程序的內(nèi)聚。
類的耦合性是一種度量類之間聯(lián)系的次數(shù)和強度的方法。1.模塊獨立性的度量之一:耦合性模塊間相對獨立性(相互依賴程度)的度量耦合性越高,模塊獨立性越弱無耦合-沒有依賴關(guān)系松散耦合-有少量依賴關(guān)系緊密耦合-有很多依賴關(guān)系耦合強度依賴的因素:一模塊對另一模塊的引用一模塊向另一模塊傳遞的數(shù)據(jù)量一模塊施加到另一模塊的控制的數(shù)量模塊間接口的復雜程度模塊間耦合的類型
低
無直接耦合耦數(shù)據(jù)耦合合標記耦合性控制耦合外部耦合公共耦合
高內(nèi)容耦合模塊獨立性弱(低耦合)強(中耦合)(較強耦合)(強耦合)(1)無直接耦合兩個模塊沒有直接關(guān)系(模塊1和模塊2),模塊獨立性最強。模塊1模塊2模塊3模塊4(2)數(shù)據(jù)耦合一模塊調(diào)用另一模塊時,被調(diào)用模塊的輸入、輸出都是簡單的數(shù)據(jù)(若干參數(shù))。屬松散耦合。數(shù)據(jù)耦合舉例開發(fā)票計算水費單價數(shù)量金額(3)標記耦合(特征耦合)如兩個模塊通過傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)結(jié)構(gòu)有關(guān)系,則稱這兩個模塊間存在標記偶合。標記耦合舉例計算水電費計算水費計算電費住戶情況水費電費住戶情況“住戶情況”是一個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān).“計算水費”和“計算電費”本無關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間也是標記偶合.將標記耦合修改為數(shù)據(jù)耦合舉例計算水電費計算水費計算電費本月用水量本月用電量水費電費(4)控制耦合一模塊向下屬模塊傳遞的信息(開關(guān)量、標志等控制被調(diào)用模塊決策的變量)控制了被調(diào)用模塊的內(nèi)部邏輯。控制耦合舉例A計算平均分或最高分B平均/最高(控制信號)成績讀入分數(shù)輸出結(jié)果計算平均分計算最高分平均/最高?B控制耦合增加了理解和編程的復雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴去除模塊間控制耦合的方法:(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進行(2)被調(diào)用模塊分解成若干單一功能模塊改控制耦合為數(shù)據(jù)耦合舉例A計算平均分B1平均成績最高成績計算最高分B2(5)外部耦合一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模塊與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應盡量少。(6)公共耦合(公共數(shù)據(jù)區(qū)耦合)一組模塊引用同一個公用數(shù)據(jù)區(qū)(也稱全局數(shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。公共數(shù)據(jù)區(qū)指:
全局數(shù)據(jù)結(jié)構(gòu)共享通訊區(qū)內(nèi)存公共覆蓋區(qū)等公共耦合舉例A公共數(shù)據(jù)區(qū)CB模塊A、B、C間存在錯綜復雜的聯(lián)系(1)軟件可理解性降低(2)診斷錯誤困難(3)軟件可維護性差,(4)軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無保護措施)慎用公共數(shù)據(jù)區(qū)和全程變量!!!公共耦合存在的問題:(7)內(nèi)容耦合最不好的耦合形式
!!!一模塊直接訪問另一模塊的內(nèi)部信息(程序代碼或數(shù)據(jù))ABAB模塊代碼重疊Entry1……Entry1……多入口模塊模塊化設(shè)計的原則和目標耦合是影響軟件復雜程度和設(shè)計質(zhì)量的重要因素目標:建立模塊間耦合度盡可能松散的系統(tǒng)如何降低模塊間耦合度:(1)盡量使用數(shù)據(jù)耦合少用控制耦合限制公共耦合的范圍
堅決避免使用內(nèi)容耦合(2)降低接口的復雜性2.模塊獨立性的度量之二:內(nèi)聚性一個模塊內(nèi)部元素在功能上相互關(guān)聯(lián)的強度設(shè)計目標:高內(nèi)聚
(模塊在軟件過程中完成單一的任務)模塊的內(nèi)聚性類型
低偶然內(nèi)聚
0分邏輯內(nèi)聚
1分內(nèi)時間內(nèi)聚
3分聚過程內(nèi)聚
5分性通信內(nèi)聚
7分信息內(nèi)聚9分高功能內(nèi)聚10分模塊獨立性弱(功能分散)強(功能單一)低內(nèi)聚模塊舉例
為工程分析包執(zhí)行錯誤處理的模塊,當計算的數(shù)據(jù)超出預定義的邊界時調(diào)用該模塊,它完成下列任務:
(1)根據(jù)初始計算的數(shù)據(jù)計算補充數(shù)據(jù);(2)在用戶的工作站上生成錯誤報告;(3)執(zhí)行用戶要求的跟蹤計算;(4)更新數(shù)據(jù)庫;(5)使選擇后續(xù)處理的菜單有效。
雖然上述任務是松散相關(guān)的,但每一項都是獨立的功能實體,最好作為獨立的模塊完成。(1)偶然內(nèi)聚(巧合內(nèi)聚)
模塊內(nèi)各部分間無聯(lián)系A(chǔ)BCMMOVEOTORREADFILEFMOVESTOT模塊M中的三個語句沒有任何聯(lián)系缺點:可理解性差,可修改性差例:(2)邏輯內(nèi)聚把幾種相關(guān)功能(邏輯上相似的功能)組合在一模塊內(nèi),每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行哪種功能。缺點:增強了耦合程度(控制耦合)不易修改,效率低邏輯內(nèi)聚模塊ABCEFGABCEFGA1B1C1EFG模塊內(nèi)部邏輯E、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度租車行業(yè)信用體系建設(shè)合同2篇
- 二零二五年度餐廳裝修與品牌推廣合作合同3篇
- 二零二五年度電子產(chǎn)品組裝加工合同范本3篇
- 二零二五版電商平臺法律風險防范與合規(guī)管理合同3篇
- 二零二五版城市核心區(qū)二手房交易中介合同2篇
- 封窗合同范本(2篇)
- 展會參展商培訓合同(2篇)
- 二零二五版高新技術(shù)產(chǎn)業(yè)勞動合同標準文本3篇
- 二零二五版建筑工程合同管理與索賠爭議調(diào)解服務協(xié)議3篇
- 二零二五版房地產(chǎn)項目股權(quán)出資轉(zhuǎn)讓合同樣本3篇
- 資本金管理制度文件模板
- 2025年急診科護理工作計劃
- 高中家長會 高二寒假線上家長會課件
- 2024-2025學年山東省聊城市高一上學期期末數(shù)學教學質(zhì)量檢測試題(附解析)
- 違規(guī)行為與處罰管理制度
- 個人教師述職報告錦集10篇
- 四川省等八省2025年普通高中學業(yè)水平選擇性考試適應性演練歷史試題(含答案)
- 《內(nèi)部培訓師培訓》課件
- 《雷達原理》課件-3.3.3教學課件:相控陣雷達
- 西方史學史課件3教學
- 2024年中國醫(yī)藥研發(fā)藍皮書
評論
0/150
提交評論