版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
結(jié)構(gòu)化設(shè)計(jì)概念和原理第一頁(yè),共四十五頁(yè),2022年,8月28日內(nèi)容提要軟件設(shè)計(jì)的重要性、過程及其基本原則設(shè)計(jì)的相關(guān)概念模塊化設(shè)計(jì)模塊設(shè)計(jì)的啟發(fā)規(guī)則第二頁(yè),共四十五頁(yè),2022年,8月28日概述軟件設(shè)計(jì):應(yīng)用各種技術(shù)和原理,對(duì)一個(gè)軟件系統(tǒng)做出足夠詳細(xì)的決策,使之有可能在物理上得以實(shí)現(xiàn)的過程。軟件設(shè)計(jì)是一個(gè)迭代的過程。設(shè)計(jì)目標(biāo):將需求分析的結(jié)果(分析模型與需求分析規(guī)約)轉(zhuǎn)化為實(shí)際軟件系統(tǒng)的一個(gè)模型或軟件表達(dá)式,即用于構(gòu)造軟件的“藍(lán)圖”。最終產(chǎn)品:設(shè)計(jì)規(guī)約,包括描述體系結(jié)構(gòu)、數(shù)據(jù)、過程和界面設(shè)計(jì)模型。評(píng)審:清晰性、正確性、完整性。軟件設(shè)計(jì)與程序設(shè)計(jì)不同。第三頁(yè),共四十五頁(yè),2022年,8月28日開發(fā)階段的信息流第四頁(yè),共四十五頁(yè),2022年,8月28日翻譯需求模型到軟件設(shè)計(jì)需求分析模型設(shè)計(jì)模型數(shù)據(jù)對(duì)象描述處理規(guī)格說(shuō)明控制規(guī)格說(shuō)明E-RDFDSTDDD過程設(shè)計(jì)接口設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)第五頁(yè),共四十五頁(yè),2022年,8月28日翻譯分析模型到軟件設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)將分析時(shí)創(chuàng)建的信息域模型變換為軟件所需的數(shù)據(jù)結(jié)構(gòu),側(cè)重于數(shù)據(jù)結(jié)構(gòu)的定義。體系結(jié)構(gòu)設(shè)計(jì)定義軟件系統(tǒng)各主要結(jié)構(gòu)構(gòu)件之間的關(guān)系。過程設(shè)計(jì)則是把結(jié)構(gòu)構(gòu)件轉(zhuǎn)換成軟件的過程性描述。在編碼步驟,根據(jù)這種過程性描述,生成源程序代碼,然后通過測(cè)試最終得到完整有效的軟件。接口設(shè)計(jì)是建立軟件內(nèi)部的關(guān)系以及軟件人-機(jī)之間的交互機(jī)制。軟件設(shè)計(jì)的重要性可以用“質(zhì)量”表達(dá)。第六頁(yè),共四十五頁(yè),2022年,8月28日1.軟件設(shè)計(jì)的重要性軟件設(shè)計(jì)是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。第七頁(yè),共四十五頁(yè),2022年,8月28日設(shè)計(jì)和軟件質(zhì)量指導(dǎo)性原則設(shè)計(jì)應(yīng)該展示一種層次性結(jié)構(gòu)。設(shè)計(jì)應(yīng)該模塊化。設(shè)計(jì)應(yīng)該包括數(shù)據(jù)、體系結(jié)構(gòu)、接口和模塊(構(gòu)件)的清楚的表示。設(shè)計(jì)應(yīng)有性質(zhì)不同的可區(qū)分的數(shù)據(jù)結(jié)構(gòu)和過程。設(shè)計(jì)應(yīng)該具有獨(dú)立功能特征的模塊。設(shè)計(jì)應(yīng)該降低模塊和外部環(huán)境之間接口的復(fù)雜性。設(shè)計(jì)應(yīng)該利用需求分析中獲得的信息和可重復(fù)的方法。第八頁(yè),共四十五頁(yè),2022年,8月28日2.設(shè)計(jì)過程從項(xiàng)目管理的角度來(lái)看,軟件設(shè)計(jì)分兩步完成。概要設(shè)計(jì),將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件體系結(jié)構(gòu)。詳細(xì)設(shè)計(jì),即過程設(shè)計(jì)。通過對(duì)體系結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。第九頁(yè),共四十五頁(yè),2022年,8月28日總體設(shè)計(jì)從回答“做什么”到回答“怎樣做”劃分出組成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫(kù)、過程和文檔等等每個(gè)元素還是黑盒子---“全局高度,抽象層次”第十頁(yè),共四十五頁(yè),2022年,8月28日3.設(shè)計(jì)基本原理1.模塊化:Modularity模塊是數(shù)據(jù)說(shuō)明、可執(zhí)行語(yǔ)句等程序?qū)ο蟮募希菃为?dú)命名的并且可以通過名字來(lái)訪問,例如過程、函數(shù)、子程序、宏、modula等。軟件被劃分成獨(dú)立命名和可獨(dú)立訪問的被稱作模塊的構(gòu)件,每個(gè)構(gòu)件完成一個(gè)子功能,它們集成到一起滿足問題需求。easiertobuild,easiertochange,easiertofix...第十一頁(yè),共四十五頁(yè),2022年,8月28日模塊化模塊化論據(jù):C(x)定義為問題x的復(fù)雜性E(x)定義為解決問題x所需要的工作量對(duì)p1和p2兩個(gè)問題,若C(p1)>C(p2),則E(p1)>E(p2)C(p1+p2)>C(p1)+C(p2)E(p1+p2)>E(p1)+E(p2)不要過度模塊化!每個(gè)模塊的簡(jiǎn)單性將被集成的復(fù)雜性所掩蓋。第十二頁(yè),共四十五頁(yè),2022年,8月28日模塊化模塊化和軟件成本如何確定地預(yù)測(cè)最小成本區(qū)?成本成本/模塊最小成本區(qū)接口成本軟件總成本模塊數(shù)目第十三頁(yè),共四十五頁(yè),2022年,8月28日模塊化如何確定模塊的大?。耗K可分解性模塊可組裝性模塊可理解性模塊的連續(xù)性模塊的可保護(hù)性第十四頁(yè),共四十五頁(yè),2022年,8月28日設(shè)計(jì)基本原理2.抽象Abstraction:忽略細(xì)節(jié),分層理解問題,自頂向下層層細(xì)化,包括對(duì)過程、數(shù)據(jù)和控制的抽象。過程抽象:一個(gè)命名的指令序列,具有特定和有限的功能。數(shù)據(jù)抽象是命名的數(shù)據(jù)集合,描述一個(gè)數(shù)據(jù)對(duì)象??刂瞥橄箅[含了不必說(shuō)明的內(nèi)部細(xì)節(jié)的程序控制機(jī)制。是實(shí)現(xiàn)模塊化的手段之一。第十五頁(yè),共四十五頁(yè),2022年,8月28日過程抽象在這個(gè)抽象層次上,給出了初步的過程表示,所用的術(shù)語(yǔ)都已面向軟件,而且模塊化的工作已經(jīng)開始顯露。逐步細(xì)化和模塊化的概念與抽象緊密相連。第十六頁(yè),共四十五頁(yè),2022年,8月28日數(shù)據(jù)抽象定義“繪圖drawing”數(shù)據(jù)對(duì)象作為一種抽象數(shù)據(jù)類型。TYPEdrawingISSTRUCTUREDEFINED
numberISSTRINGLENGTH(12)
geometryDEFINED…
notesISSTRINGLENGTH(256)…ENFdrawingTYPE;BlueprintISINSTANCEOFdrawing;SchematicISINSTANCEOFdrawing;第十七頁(yè),共四十五頁(yè),2022年,8月28日設(shè)計(jì)基本原理3.求精Refinement自頂向下的設(shè)計(jì)策略。doorimplementedasadatastructuremanufacturermodelnumbertypeswingdirectioninsertslights
type
numberweightopeningmechanismopenimplementedwitha"knowledge"oftheobjectthatisassociatedwithenterdetailsofenteralgorithmwalktodoor;reachforknob;Switchtheknob;opendoor;walkthrough;closedoor.repeatuntildooropensturnknobclockwise;ifknobdoesn'tturn,then
takekeyout;
findcorrectkey;
insertinlock;endifpull/pushdoormoveoutofway;endrepeat第十八頁(yè),共四十五頁(yè),2022年,8月28日求精設(shè)計(jì)的求精過程與需求分析的劃分類似,只是考慮的細(xì)節(jié)層次不同。求精實(shí)際是一個(gè)詳細(xì)描述的過程。抽象與求精是互補(bǔ)的概念。第十九頁(yè),共四十五頁(yè),2022年,8月28日設(shè)計(jì)基本原理4.信息隱藏informationhiding信息隱藏:在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的信息(過程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來(lái)說(shuō),是不可訪問的。每個(gè)客戶只能通過接口來(lái)了解該模塊,而所有的實(shí)現(xiàn)都隱藏起來(lái)。隱藏就是有效的模塊化可以通過定義一組獨(dú)立模塊來(lái)實(shí)現(xiàn)。第二十頁(yè),共四十五頁(yè),2022年,8月28日信息隱藏modulecontrolledinterface"secret"?algorithm?datastructure?detailsofexternalinterface?resourceallocationpolicyclientsaspecificdesigndecision“信息隱藏”,更準(zhǔn)確地描述應(yīng)是“細(xì)節(jié)隱藏”,因?yàn)殡[藏的不是信息,而是實(shí)現(xiàn)的細(xì)節(jié)。第二十一頁(yè),共四十五頁(yè),2022年,8月28日4、模塊化設(shè)計(jì)模塊獨(dú)立性度量標(biāo)準(zhǔn):內(nèi)聚
cohesion和耦合
coupling內(nèi)聚是一個(gè)模塊內(nèi)部的交互程度;耦合是模塊之間交互的程度。好處:更有利于開發(fā)、設(shè)計(jì)/編碼修改的副作用減小、模塊的復(fù)用可能。功能獨(dú)立性是良好設(shè)計(jì)的關(guān)鍵,設(shè)計(jì)又是軟件質(zhì)量的關(guān)鍵。第二十二頁(yè),共四十五頁(yè),2022年,8月28日耦合(couple)是度量系統(tǒng)中模塊之間的交互程度。Goal:
模塊之間盡可能獨(dú)立耦合從低到高依次為:非直接耦合(最好),數(shù)據(jù)耦合,標(biāo)記耦合,控制耦合,外部耦合,公共耦合和內(nèi)容耦合(最差)。GreatdealofdependenceIndependent
HighlycoupledLooselycoupledUncoupled
耦合第二十三頁(yè),共四十五頁(yè),2022年,8月28日耦合內(nèi)容耦合
contentcoupling如果兩個(gè)模塊中的一個(gè)直接引用了另一個(gè)模塊的內(nèi)容,則它們之間是內(nèi)容耦合。Onemodulemodifiesanother.……ABCDA:……………………gotoC1……………………C:……………………C1:…………例1:A訪問C的內(nèi)部數(shù)據(jù)或不通過正常入口而轉(zhuǎn)入C的內(nèi)部。第二十四頁(yè),共四十五頁(yè),2022年,8月28日例2:部分代碼重疊(常出現(xiàn)在匯編程序中)B
A例3:一個(gè)模塊有多個(gè)入口(功能)A:………………………………entry1:………………………………entry2:………………………………耦合第二十五頁(yè),共四十五頁(yè),2022年,8月28日公共耦合
commoncoupling如果兩個(gè)模塊都可以存取相同的全局?jǐn)?shù)據(jù),則它們之間是公共耦合。acommondatastore.Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………耦合第二十六頁(yè),共四十五頁(yè),2022年,8月28日公共耦合存在的問題:公共部分的改動(dòng)將影響所有調(diào)用它的模塊;公共部分的數(shù)據(jù)存取無(wú)法控制;復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而增加。解決方法:通過使用信息隱藏來(lái)避免公共耦合。耦合第二十七頁(yè),共四十五頁(yè),2022年,8月28日控制耦合
controlcoupling
如果兩個(gè)模塊中的一個(gè)模塊給另一個(gè)模塊傳遞控制信息,則它們具有控制耦合。Onemodulepassesparameterstocontroltheactivityofanothermodule.ABFlagF2F1Fn…………Flag特點(diǎn):接口單一,但仍然影響被控模塊的內(nèi)部邏輯。耦合第二十八頁(yè),共四十五頁(yè),2022年,8月28日標(biāo)記耦合stampcoupling如果兩個(gè)模塊都要使用同一數(shù)據(jù)結(jié)構(gòu)的一部分,不是采用全局公共數(shù)據(jù)區(qū)共享,而是通過模塊結(jié)構(gòu)傳遞數(shù)據(jù)結(jié)構(gòu)的一部分,則它們之間為標(biāo)記耦合。數(shù)據(jù)耦合datacoupling被調(diào)用模塊的輸入與輸出是簡(jiǎn)單的參數(shù)或者是數(shù)據(jù)結(jié)構(gòu)(該數(shù)據(jù)結(jié)構(gòu)中的所有元素為被調(diào)用的模塊使用),則它們之間為數(shù)據(jù)耦合。非直接耦合nodirectcoupling兩個(gè)模塊之間沒有聯(lián)系,則它們之間為非直接耦合。Themostdesirable.耦合第二十九頁(yè),共四十五頁(yè),2022年,8月28日實(shí)現(xiàn)低耦合,采取下列措施:耦合方式采用非直接耦合,不采用內(nèi)容耦合。傳遞信息類型盡量使用數(shù)據(jù)耦合,少采用控制耦合,外部耦合和公共耦合限制使用。耦合數(shù)量模塊間相互調(diào)用時(shí),傳遞參數(shù)最好只有一個(gè)。原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合。耦合第三十頁(yè),共四十五頁(yè),2022年,8月28日內(nèi)聚內(nèi)聚:cohesion.Goal:
盡可能高內(nèi)聚.內(nèi)聚級(jí)別:偶然內(nèi)聚邏輯內(nèi)聚時(shí)間內(nèi)聚
過程內(nèi)聚
通信內(nèi)聚順序內(nèi)聚功能內(nèi)聚最差最好第三十一頁(yè),共四十五頁(yè),2022年,8月28日低內(nèi)聚偶然內(nèi)聚(Coincidentalcohesion):指一個(gè)模塊內(nèi)的各處理元素之間沒有任何聯(lián)系。例:readdiskfile;calculatecurrentvalues;produceuseroutput;…嚴(yán)重的缺點(diǎn):產(chǎn)品的可維護(hù)性退化;模塊是不可復(fù)用的,增加軟件成本。解決途徑:將模塊分成更小的模塊,每個(gè)小模塊執(zhí)行一個(gè)操作。第三十二頁(yè),共四十五頁(yè),2022年,8月28日低內(nèi)聚邏輯內(nèi)聚(Logicalcohesion):邏輯上相關(guān)的功能或數(shù)據(jù)放在一個(gè)模塊中。問題:接口難于理解;完成多個(gè)操作的代碼互相糾纏在一起,導(dǎo)致嚴(yán)重的維護(hù)問題。A:Readinputsfromdiskfromtapefromkeyboard第三十三頁(yè),共四十五頁(yè),2022年,8月28日低內(nèi)聚時(shí)間內(nèi)聚(Temporalcohesion):如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行。例如:系統(tǒng)的初始化
openoldmasterfile;newmasterfile,transactionfileandprintfile;initializesalesregiontable;readfirsttransactionrecordandfirstoldmasterfilerecord;問題:不同的功能混在一個(gè)模塊中,有時(shí)共用部分編碼,使局部功能的修改牽動(dòng)全局。第三十四頁(yè),共四十五頁(yè),2022年,8月28日中內(nèi)聚過程內(nèi)聚
(Proceduralcohesion):Functionsaregroupedtogetherinamoduletoensureacertainorderofperformance.例子:Readpartnumberfromdatabaseandupdaterepairrecordonmaintenancefile.enterdatacheckdatamanipulatedata第三十五頁(yè),共四十五頁(yè),2022年,8月28日中內(nèi)聚通信內(nèi)聚(Communicationalcohesion):Allthefunctionsinamoduleoperateonorproducethesamedataset.
例如:從數(shù)據(jù)庫(kù)的操作——可能破壞獨(dú)立性。第三十六頁(yè),共四十五頁(yè),2022年,8月28日高內(nèi)聚順序內(nèi)聚
(Sequentialcohesion):一個(gè)處理元素的輸出數(shù)據(jù)作為下一個(gè)處理元素的輸入數(shù)據(jù)。
功能內(nèi)聚
(Functionalcohesion):模塊內(nèi)的所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能。
原則:在實(shí)際工作中,確定內(nèi)聚的精確級(jí)別是不必要的,重要的是力爭(zhēng)高內(nèi)聚和識(shí)別低內(nèi)聚,可以使得設(shè)計(jì)的軟件具有較高的功能獨(dú)立性。第三十七頁(yè),共四十五頁(yè),2022年,8月28日1.爭(zhēng)取低耦合、高內(nèi)聚(增加內(nèi)聚>減少耦合)2.模塊規(guī)模適中:過大分解不充分不易理解;太小則開銷過大、接口復(fù)雜。注意分解后不應(yīng)降低模塊的獨(dú)立性。3.適當(dāng)控制——
深度=分層的層數(shù)。過大表示分工過細(xì)。寬度=同一層上模塊數(shù)的最大值。過大表示系統(tǒng)復(fù)雜度大。啟發(fā)性規(guī)則第三十八頁(yè),共四十五頁(yè),2022年,8月28日控制層次McbalkedmfgihjnopqrWidth
DepthFan-outFan-in第三十九頁(yè),共四十五頁(yè),2022年,8月28日扇出=一個(gè)模塊直接調(diào)用\控制的模塊數(shù)。3fan-out9AA的扇出AA的扇入
扇入=直接調(diào)用該模塊的模塊數(shù)在不破壞獨(dú)立性的前提下,fan-in
大的比較好。啟發(fā)性規(guī)則第四十頁(yè),共四十五頁(yè),2022年,8月28日盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。
如果一個(gè)模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色出行解決方案民間擔(dān)保借款合同4篇
- 男方協(xié)議離婚書2025年度電子版制作與版權(quán)保護(hù)合同3篇
- 二零二五年度智能電網(wǎng)設(shè)備研發(fā)與銷售合同范本4篇
- 二零二五版內(nèi)資股協(xié)議轉(zhuǎn)讓知識(shí)產(chǎn)權(quán)保護(hù)合同4篇
- 二零二五年度爬架租賃與施工現(xiàn)場(chǎng)環(huán)境保護(hù)合同2篇
- 2025年度城市公園綠地日常養(yǎng)護(hù)維修服務(wù)合同規(guī)范3篇
- 二零二五年度名筑印象住宅電梯品牌代理銷售合同4篇
- 二零二五年內(nèi)蒙古文化旅游融合發(fā)展合同規(guī)范4篇
- 2025年度瓷磚鋪貼與新型建筑材料研發(fā)合同4篇
- 二零二五年度山莊生態(tài)旅游合作開發(fā)合同范本2篇
- 二零二五年度無(wú)人駕駛車輛測(cè)試合同免責(zé)協(xié)議書
- 2025年湖北華中科技大學(xué)招聘實(shí)驗(yàn)技術(shù)人員52名歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 高三日語(yǔ)一輪復(fù)習(xí)助詞「と」的用法課件
- 毛渣采購(gòu)合同范例
- 無(wú)子女離婚協(xié)議書范文百度網(wǎng)盤
- 2023中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)-注射相關(guān)感染預(yù)防與控制
- 五年級(jí)上冊(cè)小數(shù)遞等式計(jì)算200道及答案
- 2024年廣東高考政治真題考點(diǎn)分布匯 總- 高考政治一輪復(fù)習(xí)
- 燃?xì)夤艿滥甓葯z驗(yàn)報(bào)告
- GB/T 44052-2024液壓傳動(dòng)過濾器性能特性的標(biāo)識(shí)
- 國(guó)際市場(chǎng)營(yíng)銷環(huán)境案例分析
評(píng)論
0/150
提交評(píng)論