




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第四章軟件設計主要內(nèi)容:(1)如何將分析模型轉(zhuǎn)換為軟件設計?(2)作為軟件工程師在軟件設計方面應使用哪些基本原則和概念?軟件結構設計人們不能在沒有設計圖的情況下建造房子,否則房子將難以建成,就算建成了也很難保證房子的質(zhì)量。計算機軟件比房子復雜的多,因此在開發(fā)軟件時更需要一個”設計圖”來指導軟件的開發(fā)。經(jīng)過了需求分析階段的工作,開發(fā)人員已經(jīng)正確理解了系統(tǒng)的需求并以需求規(guī)格說明書的文檔形式表達了系統(tǒng)“做什么”的問題。軟件設計階段的任務是應用一組原理與方法并遵循質(zhì)量的評價原則根據(jù)軟件的需求對軟件進行設計,解決“如何做”的問題。
正確的軟件設計軟件設計是后續(xù)開發(fā)步驟及軟件維護工作的基礎。如果沒有設計,只能建立一個不穩(wěn)定的系統(tǒng)結構§4.1軟件設計的目標和目的
軟件需求:解決“做什么”
軟件設計:解決“怎么做”
4.2軟件設計的任務問題結構(軟件需求)軟件結構,從軟件需求規(guī)格說明書出發(fā),形成軟件的具體設計方案。映射將分析模型轉(zhuǎn)換為軟件設計數(shù)據(jù)字典數(shù)據(jù)流圖E-R圖狀態(tài)變遷圖加工規(guī)約控制規(guī)約數(shù)據(jù)對描述象數(shù)據(jù)設計體系結構設計接口設計過程設計分析模型設計模型1.軟件設計分為兩個階段:(1)概要設計(總體設計)
將軟件需求轉(zhuǎn)化為數(shù)據(jù)結構和軟件的系統(tǒng)結構。確定軟件的結構以及各組成成分(子系統(tǒng)或模塊)之間的相互關系。(2)詳細設計
即過程設計,通過對軟件的結構表示進行細化,確定模塊內(nèi)部的詳細的數(shù)據(jù)結構和算法,產(chǎn)生描述各模塊程序過程的詳細文檔。2軟件設計過程1)制定規(guī)范在進入軟件開發(fā)階段之初,首先應為軟件開發(fā)組制定在設計時應該共同遵守的標準,以便協(xié)調(diào)組內(nèi)各成員的工作。⑴閱讀和理解軟件需求說明,確認用戶要求是否可行⑵確定最合適的設計方法。⑶規(guī)定設計文檔的編制標準。⑷規(guī)定編碼的信息形式(代碼體系),與硬件、操作系統(tǒng)的接口規(guī)約,命名規(guī)則等。
2)概要設計(軟件系統(tǒng)結構的總體設計)基于功能層次結構建立系統(tǒng)?!畲_定每個模塊的功能☆建立與已確定的軟件需求的對應關系☆確定模塊間的調(diào)用關系☆確定模塊間的接口☆評估模塊劃分的質(zhì)量
主要任務:設計軟件的結構,也就是要確定需求分析的每個需求要分配給哪些模塊,以及這些模塊相互間的組成關系。必要性:可以站在全局高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結構,從中選出最佳方案和最合理的軟件結構,從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。3)詳細設計(處理方式設計)確定為實現(xiàn)系統(tǒng)的功能需求所必需的算法,評估算法的性能確定為滿足系統(tǒng)的性能需求所必需的算法和模塊間的控制方式4)數(shù)據(jù)結構設計確定軟件涉及的文件系統(tǒng)的結構以及數(shù)據(jù)庫的模式、子模式,進行數(shù)據(jù)完整性和安全性的設計確定輸入,輸出文件的詳細的數(shù)據(jù)結構結合算法設計,確定算法所必需的邏輯數(shù)據(jù)結構及其操作5)編寫概要設計階段的文檔概要設計階段完成時應編寫以下文檔:概要設計說明書數(shù)據(jù)庫設計說明書用戶手冊制定初步的測試計劃§4.3軟件設計遵循的原則
1.軟件采用層次結構2.自頂向下,逐步細化3.模塊化4.抽象5.信息隱蔽6.信息局部化4.3.1軟件體系結構軟件的體系結構通過一個劃分過程來完成。該劃分過程從需求分析確立的目標系統(tǒng)的模型出發(fā),對整個問題進行分割,使其每個部分用一個或幾個軟件成份即模塊加以解決,整個問題就解決了1.控制結構(程序結構)控制結構是軟件模塊間關系的表示對模塊結構圖的說明模塊是指整個系統(tǒng)中一些相對獨立的程序單元,每個程序單元完成和實現(xiàn)一個相對獨立的軟件功能。模塊被視為一個黑盒子,模塊通過其外部特征(名字,輸入/輸出信息)來標識和調(diào)用。在模塊結構圖中,矩形表示相對獨立的功能單元,稱為“模塊”。連接上下層模塊的線段表示它們之間的調(diào)用關系。一個控制模塊可以調(diào)用一個或多個下屬模塊;同時一個下屬模塊也可以被多個控制模塊所調(diào)用。2.控制結構的層次規(guī)則
只有一個頂層(0層)模塊0層外任一模塊都會在它的鄰層存在一模塊與它有關同層模塊間不發(fā)生聯(lián)系3.軟件結構度量術語深度寬度扇出扇入(模塊的層數(shù))(同一層最大模塊數(shù))(一個模塊直接調(diào)用的模塊數(shù))(調(diào)用一個給定模塊的模塊個數(shù))4.3.2自頂向下,逐步細化將軟件的體系結構按自頂向下方式,對各個層次的過程細節(jié)和數(shù)據(jù)細節(jié)逐層細化,直到用程序設計語言的語句能夠?qū)崿F(xiàn)為止,從而最后確立整個的體系結構。編外人員工資取得工資數(shù)據(jù)計時制工資額薪金制工資額編外人員稅款編外人員扣款常規(guī)扣款稅收扣款計算實發(fā)工資計時工人實發(fā)工資計薪工人實發(fā)工資編外人員實發(fā)工資4.3.3模塊化模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο髽嫵刹?zhí)行相對獨立功能的邏輯實體,它可以單獨命名而且可以實現(xiàn)按名訪問。例如,過程、函數(shù)、子程序、宏等等都可以看作模塊。模塊化是指把大型軟件按照規(guī)定的原則劃分為一個個較小的,相對獨立但又相關的模塊。模塊化是一種“分而治之,各個擊破”式的問題求解方式,它降低了問題的復雜程度,簡化了軟件的設計過程。模塊化的基礎是下面介紹的軟件工程設計原理。1、軟件工程設計原理C(P)是表示問題P的復雜性程度的函數(shù),E(P)表示解決問題P的工作量。(人—年,人—月計)規(guī)律證明:如果有兩個問題P1,P2,其復雜性滿足:C(P1)>C(P2)則其工作量滿足:E(P1)>E(P2)規(guī)律還證明:一個復雜問題P分解為兩個問題P1+P2,則C(P)>C(P1)+C(P2)如果忽略因分解問題而增加的工作量,即P1與P2是互相獨立的,則E(P)>E(P1)+(P2)
上面的原理說明把一個復雜的問題分解為若干獨立的問題,不僅能降低復雜性C(P),使問題變得簡單,而且還可以降低工作量E(P),從而降低開發(fā)成本。因此在設計中采用“分而治之,各個擊破”的原理。如果繼續(xù)分解,總復雜度和工作量會繼續(xù)減少,但是,能否無限地分解下去,以至大事化小,小事化了呢?
否?。∫驗榉纸庖黾咏涌诘墓ぷ髁?。
模塊化和軟件成本成本或工作量模塊數(shù)量軟件總成本集成成本成本/模塊M最小成本區(qū)域4.3.4抽象化軟件系統(tǒng)進行模塊設計時,可有不同的抽象層次。抽象和分解抽象是人類特有的一種思維方法,其原理是從事物的共性中抽取出所關注的本質(zhì)特征而暫時忽略事物的有關細節(jié)。抽象的過程是自底向上的,越在高層,抽象的程度越高,就越容易分析、弄清事物之間的關系。抽象舉例:數(shù)列2、4、6… 其本質(zhì):能被2整除,抽象為“偶數(shù)”。數(shù)列1、3、5… 其本質(zhì):不能被2整除,抽象為“奇數(shù)”。踢足球、長跑、游泳……抽象為“體育運動”?!@些都是抽象的過程。抽象與分解是軟件工程中的應用示意圖需求分析數(shù)據(jù)流圖結構設計軟件結構圖procedureSPELLCHECK
begin
loopgetnextwordaddwordtowordlistinsortorder計算機儲蓄系統(tǒng)某銀行欲開發(fā)一個計算機儲蓄系統(tǒng)。業(yè)務活動描述如下,儲戶填寫的存款單或取款單由業(yè)務員鍵入系統(tǒng),如果是存款,……抽象抽象抽象分解分解分解Mapsinto結構化設計方法示意圖需求分析數(shù)據(jù)流圖結構設計軟件結構圖遵循自頂向下的系統(tǒng)化分解的思想,應用一組轉(zhuǎn)化規(guī)則將軟件的數(shù)據(jù)流圖逐步轉(zhuǎn)化為一組程序模塊的層次結構。4.3.5信息隱蔽
(InformationHiding)
模塊所包含的信息,不允許其它不需要這些信息的模塊訪問,獨立的模塊間僅僅交換為完成系統(tǒng)功能而必須交換的信息。信息隱蔽的目的:
提高模塊的獨立性,減少修改或維護時的影響面。信息隱藏的圖示說明模塊控制接口"secret"?算法?數(shù)據(jù)結構?外部接口的細節(jié)?資源分配策略用戶模塊的詳細設計4.3.6信息局部化
把關系密切的軟件元素物理地放得彼此靠近。優(yōu)點:可維護性好可靠性好可理解性好§4.4模塊的獨立性4.4.1模塊獨立性的概念模塊獨立的含義:模塊完成獨立的功能符合信息隱蔽和信息局部化原則模塊間關聯(lián)和依賴程度盡量小所謂模塊獨立性是指模塊完成它自身規(guī)定的功能而與系統(tǒng)中其它的模塊保持一定的相對獨立。模塊的獨立性是評價模塊化設計的重要指標,也是評價軟件結構設計的重要指標。一個好的軟件結構設計,其模塊的獨立性也較好。這是因為:第一,獨立性好的模塊,模塊之間的相關因子較小導致模塊之間的接口也較簡單。第二,獨立的模塊比較容易測試和維護。因為局部性好的模塊,錯誤局部于模塊內(nèi)部,傳播范圍小,修改設計和程序需要的工作量比較小。模塊的獨立性可以使用內(nèi)聚和耦合這兩個定性的指標來度量。4.4.2模塊獨立性的度量
模塊獨立性取決于模塊的內(nèi)部和外部特征。SD方法提出的定性的度量標準:
模塊之間的耦合性模塊自身的內(nèi)聚性
耦合是模塊之間的互相連接的緊密程度的度量。
內(nèi)聚是模塊功能強度(一個模塊內(nèi)部各個元素彼此結合的緊密程度)的度量。
模塊獨立性比較強的模塊應是高內(nèi)聚低耦合的模塊。1.模塊獨立性的度量之一:耦合性
模塊間相對獨立性(相互依賴程度)的度量
耦合性越高,模塊獨立性越弱無耦合-沒有依賴關系松散耦合-有少量依賴關系緊密耦合-有很多依賴關系
耦合強度依賴的因素:一模塊對另一模塊的引用一模塊向另一模塊傳遞的數(shù)據(jù)量一模塊施加到另一模塊的控制的數(shù)量模塊間接口的復雜程度模塊間耦合的類型
低
無直接耦合耦數(shù)據(jù)耦合合標記耦合性控制耦合外部耦合公共耦合高
內(nèi)容耦合模塊獨立性弱(低耦合)強(中耦合)(較強耦合)(強耦合)(1)無直接耦合兩個模塊沒有直接關系(模塊1和模塊2),模塊獨立性最強。模塊1模塊2模塊3模塊4(2)數(shù)據(jù)耦合一模塊調(diào)用另一模塊時,被調(diào)用模塊的輸入、輸出都是簡單的數(shù)據(jù)(若干參數(shù))。屬松散耦合。數(shù)據(jù)耦合舉例開發(fā)票計算水費單價數(shù)量金額(3)標記耦合(特征耦合)如兩個模塊通過傳遞數(shù)據(jù)結構(不是簡單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)結構有關系,則稱這兩個模塊間存在標記偶合。標記耦合舉例計算水電費計算水費計算電費住戶情況水費電費住戶情況“住戶情況”是一個數(shù)據(jù)結構,圖中模塊都與此數(shù)據(jù)結構有關.將標記耦合修改為數(shù)據(jù)耦合舉例計算水電費計算水費計算電費本月用水量本月用電量水費電費(4)控制耦合一模塊向下屬模塊傳遞的信息(開關量、標志等控制被調(diào)用模塊決策的變量)控制了被調(diào)用模塊的內(nèi)部邏輯??刂岂詈吓e例A計算平均分或最高分B平均/最高(控制信號)成績讀入分數(shù)輸出結果計算平均分計算最高分平均/最高?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)境關聯(lián)(例如,I/O模塊與特定的設備、格式和通信協(xié)議相關聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應盡量少。(6)公共耦合(公共數(shù)據(jù)區(qū)耦合)一組模塊引用同一個公用數(shù)據(jù)區(qū)(也稱全局數(shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。公共數(shù)據(jù)區(qū)指:
全局數(shù)據(jù)結構共享通訊區(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……多入口模塊(8)模塊化設計的原則和目標耦合是影響軟件復雜程度和設計質(zhì)量的重要因素目標:建立模塊間耦合度盡可能松散的系統(tǒng)(9)如何降低模塊間耦合度:(1)盡量使用數(shù)據(jù)耦合少用控制耦合限制公共耦合的范圍堅決避免使用內(nèi)容耦合!!(2)降低接口的復雜性2.模塊獨立性的度量之二:內(nèi)聚性
一個模塊內(nèi)部元素在功能上相互關聯(lián)的強度設計目標:高內(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分模塊獨立性弱(功能分散)強(功能單一)(1)偶然內(nèi)聚(巧合內(nèi)聚)
模塊內(nèi)各部分間無聯(lián)系ABCMMOVEOTORREADFILEFMOVESTOT模塊M中的三個語句沒有任何聯(lián)系缺點:可理解性差,可修改性差例:(2)邏輯內(nèi)聚把幾種相關功能(邏輯上相似的功能)組合在一模塊內(nèi),每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行哪
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024爐能力考試題焊工復習試題附答案
- 軟件設計師關鍵能力分析試題及答案
- 軟件設計師心里準備試題及答案
- 知識產(chǎn)權政策的公共利益保障試題及答案
- 軟考網(wǎng)絡工程師考試技戰(zhàn)術建議與試題及答案
- 教育政策與科技發(fā)展的互動試題及答案
- 機電工程課程復習試題及答案
- 公共政策的調(diào)研方法試題及答案
- 西方政治與文化政策的相互影響試題及答案
- 公共事項的政治決策模型試題及答案
- 2025年基金與投資管理考試試卷及答案
- 書畫培訓合作合同范本
- 2025年河北省中考乾坤押題卷物理試卷B及答案
- 馬幫運輸安全協(xié)議書
- 2025年安全生產(chǎn)考試題庫(礦業(yè)行業(yè)安全規(guī)范)試卷
- 中職數(shù)學拓展模塊課件-正弦型函數(shù)的圖像和性質(zhì)
- GB/T 7759.2-2014硫化橡膠或熱塑性橡膠壓縮永久變形的測定第2部分:在低溫條件下
- 2023年中原農(nóng)業(yè)保險股份有限公司招聘筆試題庫及答案解析
- GB/T 24782-2009持久性、生物累積性和毒性物質(zhì)及高持久性和高生物累積性物質(zhì)的判定方法
- 微創(chuàng)冠狀動脈搭橋手術方法及圍術期處理原則微創(chuàng)冠脈搭橋進展課件
- 住院患者出院后的隨訪與指導流程圖
評論
0/150
提交評論