




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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ì)的重要性、過(guò)程及其基本原則設(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)的過(guò)程。軟件設(shè)計(jì)是一個(gè)迭代的過(guò)程。設(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ù)、過(guò)程和界面設(shè)計(jì)模型。評(píng)審:清晰性、正確性、完整性。軟件設(shè)計(jì)與程序設(shè)計(jì)不同。第三頁(yè),共四十五頁(yè),2022年,8月28日開(kāi)發(fā)階段的信息流第四頁(yè),共四十五頁(yè),2022年,8月28日翻譯需求模型到軟件設(shè)計(jì)需求分析模型設(shè)計(jì)模型數(shù)據(jù)對(duì)象描述處理規(guī)格說(shuō)明控制規(guī)格說(shuō)明E-RDFDSTDDD過(guò)程設(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)系。過(guò)程設(shè)計(jì)則是把結(jié)構(gòu)構(gòu)件轉(zhuǎn)換成軟件的過(guò)程性描述。在編碼步驟,根據(jù)這種過(guò)程性描述,生成源程序代碼,然后通過(guò)測(cè)試最終得到完整有效的軟件。接口設(shè)計(jì)是建立軟件內(nèi)部的關(guān)系以及軟件人-機(jī)之間的交互機(jī)制。軟件設(shè)計(jì)的重要性可以用“質(zhì)量”表達(dá)。第六頁(yè),共四十五頁(yè),2022年,8月28日1.軟件設(shè)計(jì)的重要性軟件設(shè)計(jì)是后續(xù)開(kāi)發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒(méi)有設(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)和過(guò)程。設(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ì)過(guò)程從項(xiàng)目管理的角度來(lái)看,軟件設(shè)計(jì)分兩步完成。概要設(shè)計(jì),將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件體系結(jié)構(gòu)。詳細(xì)設(shè)計(jì),即過(guò)程設(shè)計(jì)。通過(guò)對(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ù)、過(guò)程和文檔等等每個(gè)元素還是黑盒子---“全局高度,抽象層次”第十頁(yè),共四十五頁(yè),2022年,8月28日3.設(shè)計(jì)基本原理1.模塊化:Modularity模塊是數(shù)據(jù)說(shuō)明、可執(zhí)行語(yǔ)句等程序?qū)ο蟮募希菃为?dú)命名的并且可以通過(guò)名字來(lái)訪(fǎng)問(wèn),例如過(guò)程、函數(shù)、子程序、宏、modula等。軟件被劃分成獨(dú)立命名和可獨(dú)立訪(fǎng)問(wèn)的被稱(chēng)作模塊的構(gòu)件,每個(gè)構(gòu)件完成一個(gè)子功能,它們集成到一起滿(mǎn)足問(wèn)題需求。easiertobuild,easiertochange,easiertofix...第十一頁(yè),共四十五頁(yè),2022年,8月28日模塊化模塊化論據(jù):C(x)定義為問(wèn)題x的復(fù)雜性E(x)定義為解決問(wèn)題x所需要的工作量對(duì)p1和p2兩個(gè)問(wèn)題,若C(p1)>C(p2),則E(p1)>E(p2)C(p1+p2)>C(p1)+C(p2)E(p1+p2)>E(p1)+E(p2)不要過(guò)度模塊化!每個(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é),分層理解問(wèn)題,自頂向下層層細(xì)化,包括對(duì)過(guò)程、數(shù)據(jù)和控制的抽象。過(guò)程抽象:一個(gè)命名的指令序列,具有特定和有限的功能。數(shù)據(jù)抽象是命名的數(shù)據(jù)集合,描述一個(gè)數(shù)據(jù)對(duì)象??刂瞥橄箅[含了不必說(shuō)明的內(nèi)部細(xì)節(jié)的程序控制機(jī)制。是實(shí)現(xiàn)模塊化的手段之一。第十五頁(yè),共四十五頁(yè),2022年,8月28日過(guò)程抽象在這個(gè)抽象層次上,給出了初步的過(guò)程表示,所用的術(shù)語(yǔ)都已面向軟件,而且模塊化的工作已經(jīng)開(kāi)始顯露。逐步細(xì)化和模塊化的概念與抽象緊密相連。第十六頁(yè),共四十五頁(yè),2022年,8月28日數(shù)據(jù)抽象定義“繪圖drawing”數(shù)據(jù)對(duì)象作為一種抽象數(shù)據(jù)類(lèi)型。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ì)的求精過(guò)程與需求分析的劃分類(lèi)似,只是考慮的細(xì)節(jié)層次不同。求精實(shí)際是一個(gè)詳細(xì)描述的過(guò)程。抽象與求精是互補(bǔ)的概念。第十九頁(yè),共四十五頁(yè),2022年,8月28日設(shè)計(jì)基本原理4.信息隱藏informationhiding信息隱藏:在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的信息(過(guò)程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來(lái)說(shuō),是不可訪(fǎng)問(wèn)的。每個(gè)客戶(hù)只能通過(guò)接口來(lái)了解該模塊,而所有的實(shí)現(xiàn)都隱藏起來(lái)。隱藏就是有效的模塊化可以通過(guò)定義一組獨(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)部的交互程度;耦合是模塊之間交互的程度。好處:更有利于開(kā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訪(fǎng)問(wèn)C的內(nèi)部數(shù)據(jù)或不通過(guò)正常入口而轉(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日公共耦合存在的問(wèn)題:公共部分的改動(dòng)將影響所有調(diào)用它的模塊;公共部分的數(shù)據(jù)存取無(wú)法控制;復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而增加。解決方法:通過(guò)使用信息隱藏來(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ū)共享,而是通過(guò)模塊結(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è)模塊之間沒(méi)有聯(lián)系,則它們之間為非直接耦合。Themostdesirable.耦合第二十九頁(yè),共四十五頁(yè),2022年,8月28日實(shí)現(xiàn)低耦合,采取下列措施:耦合方式采用非直接耦合,不采用內(nèi)容耦合。傳遞信息類(lè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)聚
過(guò)程內(nèi)聚
通信內(nèi)聚順序內(nèi)聚功能內(nèi)聚最差最好第三十一頁(yè),共四十五頁(yè),2022年,8月28日低內(nèi)聚偶然內(nèi)聚(Coincidentalcohesion):指一個(gè)模塊內(nèi)的各處理元素之間沒(mé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è)模塊中。問(wèn)題:接口難于理解;完成多個(gè)操作的代碼互相糾纏在一起,導(dǎo)致嚴(yán)重的維護(hù)問(wèn)題。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;問(wèn)題:不同的功能混在一個(gè)模塊中,有時(shí)共用部分編碼,使局部功能的修改牽動(dòng)全局。第三十四頁(yè),共四十五頁(yè),2022年,8月28日中內(nèi)聚過(guò)程內(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ī)模適中:過(guò)大分解不充分不易理解;太小則開(kāi)銷(xiāo)過(guò)大、接口復(fù)雜。注意分解后不應(yīng)降低模塊的獨(dú)立性。3.適當(dāng)控制——
深度=分層的層數(shù)。過(guò)大表示分工過(guò)細(xì)。寬度=同一層上模塊數(shù)的最大值。過(guò)大表示系統(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ù)過(guò)大,就意味著該模塊過(guò)分復(fù)雜,需要協(xié)調(diào)和控制過(guò)多
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 自建樓房買(mǎi)賣(mài)合同
- 房產(chǎn)抵押反擔(dān)保合同
- 企業(yè)信息化管理系統(tǒng)建設(shè)與維護(hù)合同
- 體育賽事活動(dòng)策劃與執(zhí)行合同
- 養(yǎng)豬場(chǎng)生產(chǎn)經(jīng)營(yíng)合同
- 重慶護(hù)理職業(yè)學(xué)院《化工儀表自動(dòng)化》2023-2024學(xué)年第二學(xué)期期末試卷
- Unit 2 Topic 1 Section C 教學(xué)設(shè)計(jì) 2024-2025學(xué)年仁愛(ài)科普版八年級(jí)英語(yǔ)上冊(cè)
- 沈陽(yáng)科技學(xué)院《漆畫(huà)創(chuàng)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 《人的正確的思想從哪里來(lái)》教學(xué)設(shè)計(jì)
- 哈爾濱學(xué)院《文化創(chuàng)意理論與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 供電所安全第一課
- 新能源汽車(chē)底盤(pán)概論課件
- 全腦血管造影術(shù)的護(hù)理查房
- 學(xué)習(xí)弘揚(yáng)紅船精神課件
- 消防工程施工組織設(shè)計(jì)方案
- 敦刻爾克大撤退課件
- 農(nóng)藥殘留監(jiān)測(cè)
- 新生兒敗血癥(共22張課件)
- 頌缽療愈師培訓(xùn)
- 2025蛇年春節(jié)習(xí)俗大賞體驗(yàn)感受家的溫馨課件
- 投資居間協(xié)議合同模板
評(píng)論
0/150
提交評(píng)論