版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7講設(shè)計(jì)概念與原理第7講設(shè)計(jì)概念與原理內(nèi)容提要軟件設(shè)計(jì)的重要性、過程及其基本原則設(shè)計(jì)的相關(guān)概念模塊化設(shè)計(jì)模塊設(shè)計(jì)的啟發(fā)規(guī)則內(nèi)容提要軟件設(shè)計(jì)的重要性、過程及其基本原則概述軟件設(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ì)不同。概述軟件設(shè)計(jì):應(yīng)用各種技術(shù)和原理,對(duì)一個(gè)軟件系統(tǒng)做出足夠詳細(xì)開發(fā)階段的信息流開發(fā)階段的信息流翻譯需求模型到軟件設(shè)計(jì)需求分析模型設(shè)計(jì)模型數(shù)據(jù)對(duì)象描述處理規(guī)格說明控制規(guī)格說明E-RDFDSTDDD過程設(shè)計(jì)接口設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)翻譯需求模型到軟件設(shè)計(jì)需求分析模型設(shè)計(jì)模型數(shù)據(jù)對(duì)象描述處理規(guī)翻譯分析模型到軟件設(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á)。翻譯分析模型到軟件設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)將分析時(shí)創(chuàng)建的信息域模型變換為1.軟件設(shè)計(jì)的重要性軟件設(shè)計(jì)是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。1.軟件設(shè)計(jì)的重要性軟件設(shè)計(jì)是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基設(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ù)的方法。設(shè)計(jì)和軟件質(zhì)量指導(dǎo)性原則2.設(shè)計(jì)過程從項(xiàng)目管理的角度來看,軟件設(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)和算法。2.設(shè)計(jì)過程從項(xiàng)目管理的角度來看,軟件設(shè)計(jì)分兩步完成??傮w設(shè)計(jì)從回答“做什么”到回答“怎樣做”劃分出組成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫(kù)、過程和文檔等等每個(gè)元素還是黑盒子---“全局高度,抽象層次”總體設(shè)計(jì)從回答“做什么”到回答“怎樣做”3.設(shè)計(jì)基本原理1.模塊化:Modularity模塊是數(shù)據(jù)說明、可執(zhí)行語(yǔ)句等程序?qū)ο蟮募希菃为?dú)命名的并且可以通過名字來訪問,例如過程、函數(shù)、子程序、宏、modula等。軟件被劃分成獨(dú)立命名和可獨(dú)立訪問的被稱作模塊的構(gòu)件,每個(gè)構(gòu)件完成一個(gè)子功能,它們集成到一起滿足問題需求。easiertobuild,easiertochange,easiertofix...3.設(shè)計(jì)基本原理1.模塊化:Modularityeasier模塊化模塊化論據(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ù)雜性所掩蓋。模塊化模塊化論據(jù):模塊化模塊化和軟件成本如何確定地預(yù)測(cè)最小成本區(qū)?成本成本/模塊最小成本區(qū)接口成本軟件總成本模塊數(shù)目模塊化模塊化和軟件成本成本成本/模塊最小成本區(qū)接口成本軟模塊化如何確定模塊的大?。耗K可分解性模塊可組裝性模塊可理解性模塊的連續(xù)性模塊的可保護(hù)性模塊化如何確定模塊的大小:設(shè)計(jì)基本原理2.抽象Abstraction:忽略細(xì)節(jié),分層理解問題,自頂向下層層細(xì)化,包括對(duì)過程、數(shù)據(jù)和控制的抽象。過程抽象:一個(gè)命名的指令序列,具有特定和有限的功能。數(shù)據(jù)抽象是命名的數(shù)據(jù)集合,描述一個(gè)數(shù)據(jù)對(duì)象??刂瞥橄箅[含了不必說明的內(nèi)部細(xì)節(jié)的程序控制機(jī)制。是實(shí)現(xiàn)模塊化的手段之一。設(shè)計(jì)基本原理2.抽象Abstraction:過程抽象在這個(gè)抽象層次上,給出了初步的過程表示,所用的術(shù)語(yǔ)都已面向軟件,而且模塊化的工作已經(jīng)開始顯露。逐步細(xì)化和模塊化的概念與抽象緊密相連。過程抽象在這個(gè)抽象層次上,給出了初步的過程表示,所用的術(shù)語(yǔ)都數(shù)據(jù)抽象定義“繪圖drawing”數(shù)據(jù)對(duì)象作為一種抽象數(shù)據(jù)類型。TYPEdrawingISSTRUCTUREDEFINED
numberISSTRINGLENGTH(12)
geometryDEFINED…
notesISSTRINGLENGTH(256)…ENFdrawingTYPE;BlueprintISINSTANCEOFdrawing;SchematicISINSTANCEOFdrawing;數(shù)據(jù)抽象定義“繪圖drawing”數(shù)據(jù)對(duì)象作為一種抽象數(shù)據(jù)設(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設(shè)計(jì)基本原理3.求精Refinementdoorimplem求精設(shè)計(jì)的求精過程與需求分析的劃分類似,只是考慮的細(xì)節(jié)層次不同。求精實(shí)際是一個(gè)詳細(xì)描述的過程。抽象與求精是互補(bǔ)的概念。求精設(shè)計(jì)的求精過程與需求分析的劃分類似,只是考慮的細(xì)節(jié)層次不設(shè)計(jì)基本原理4.信息隱藏informationhiding信息隱藏:在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的信息(過程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來說,是不可訪問的。每個(gè)客戶只能通過接口來了解該模塊,而所有的實(shí)現(xiàn)都隱藏起來。隱藏就是有效的模塊化可以通過定義一組獨(dú)立模塊來實(shí)現(xiàn)。設(shè)計(jì)基本原理4.信息隱藏informationhidin信息隱藏modulecontrolledinterface"secret"?algorithm?datastructure?detailsofexternalinterface?resourceallocationpolicyclientsaspecificdesigndecision“信息隱藏”,更準(zhǔn)確地描述應(yīng)是“細(xì)節(jié)隱藏”,因?yàn)殡[藏的不是信息,而是實(shí)現(xiàn)的細(xì)節(jié)。信息隱藏modulecontrolledinterface"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)鍵。4、模塊化設(shè)計(jì)模塊獨(dú)立性耦合(couple)是度量系統(tǒng)中模塊之間的交互程度。Goal:
模塊之間盡可能獨(dú)立耦合從低到高依次為:非直接耦合(最好),數(shù)據(jù)耦合,標(biāo)記耦合,控制耦合,外部耦合,公共耦合和內(nèi)容耦合(最差)。GreatdealofdependenceIndependent
HighlycoupledLooselycoupledUncoupled
耦合耦合(couple)是度量系統(tǒng)中模塊之間的交互程度。Grea耦合內(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)部。耦合內(nèi)容耦合contentcoupling……ABCDA例2:部分代碼重疊(常出現(xiàn)在匯編程序中)B
A例3:一個(gè)模塊有多個(gè)入口(功能)A:………………………………entry1:………………………………entry2:………………………………耦合例2:部分代碼重疊(常出現(xiàn)在匯編程序中)BA例3:一個(gè)公共耦合
commoncoupling如果兩個(gè)模塊都可以存取相同的全局?jǐn)?shù)據(jù),則它們之間是公共耦合。acommondatastore.Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………耦合公共耦合commoncouplingGlobal:公共耦合存在的問題:公共部分的改動(dòng)將影響所有調(diào)用它的模塊;公共部分的數(shù)據(jù)存取無法控制;復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而增加。解決方法:通過使用信息隱藏來避免公共耦合。耦合公共耦合存在的問題:耦合控制耦合
controlcoupling
如果兩個(gè)模塊中的一個(gè)模塊給另一個(gè)模塊傳遞控制信息,則它們具有控制耦合。Onemodulepassesparameterstocontroltheactivityofanothermodule.ABFlagF2F1Fn…………Flag特點(diǎn):接口單一,但仍然影響被控模塊的內(nèi)部邏輯。耦合控制耦合controlcouplingABFlagF2標(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.耦合標(biāo)記耦合stampcouplingThemost實(shí)現(xiàn)低耦合,采取下列措施:耦合方式采用非直接耦合,不采用內(nèi)容耦合。傳遞信息類型盡量使用數(shù)據(jù)耦合,少采用控制耦合,外部耦合和公共耦合限制使用。耦合數(shù)量模塊間相互調(diào)用時(shí),傳遞參數(shù)最好只有一個(gè)。原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合。耦合實(shí)現(xiàn)低耦合,采取下列措施:耦合內(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)聚最差最好內(nèi)聚內(nèi)聚:cohesion.最差最好低內(nèi)聚偶然內(nèi)聚(Coincidentalcohesion):指一個(gè)模塊內(nèi)的各處理元素之間沒有任何聯(lián)系。例:readdiskfile;calculatecurrentvalues;produceuseroutput;
…嚴(yán)重的缺點(diǎn):產(chǎn)品的可維護(hù)性退化;模塊是不可復(fù)用的,增加軟件成本。解決途徑:將模塊分成更小的模塊,每個(gè)小模塊執(zhí)行一個(gè)操作。低內(nèi)聚偶然內(nèi)聚(Coincidentalcohesion)低內(nèi)聚邏輯內(nèi)聚(Logicalcohesion):邏輯上相關(guān)的功能或數(shù)據(jù)放在一個(gè)模塊中。問題:接口難于理解;完成多個(gè)操作的代碼互相糾纏在一起,導(dǎo)致嚴(yán)重的維護(hù)問題。A:Readinputsfromdiskfromtapefromkeyboard低內(nèi)聚邏輯內(nèi)聚(Logicalcohesion):邏輯上相低內(nèi)聚時(shí)間內(nèi)聚(Temporalcohesion):如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行。例如:系統(tǒng)的初始化
openoldmasterfile;newmasterfile,transactionfileandprintfile;initializesalesregiontable;readfirsttransactionrecordandfirstoldmasterfilerecord;問題:不同的功能混在一個(gè)模塊中,有時(shí)共用部分編碼,使局部功能的修改牽動(dòng)全局。低內(nèi)聚時(shí)間內(nèi)聚(Temporalcohesion):如果中內(nèi)聚過程內(nèi)聚
(Proceduralcohesion):Functionsaregroupedtogetherinamoduletoensureacertainorderofperformance.例子:Readpartnumberfromdatabaseandupdaterepairrecordonmaintenancefile.enterdatacheckdatamanipulatedata中內(nèi)聚過程內(nèi)聚(Proceduralcohesion)中內(nèi)聚通信內(nèi)聚(Communicationalcohesion):Allthefunctionsinamoduleoperateonorproducethesamedataset.例如:從數(shù)據(jù)庫(kù)的操作——可能破壞獨(dú)立性。中內(nèi)聚通信內(nèi)聚(Communicationalcohes高內(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ú)立性。高內(nèi)聚順序內(nèi)聚(Sequentialcohesion1.爭(zhēng)取低耦合、高內(nèi)聚(增加內(nèi)聚>減少耦合)2.模塊規(guī)模適中:過大分解不充分不易理解;太小則開銷過大、接口復(fù)雜。注意分解后不應(yīng)降低模塊的獨(dú)立性。3.適當(dāng)控制——
深度=分層的層數(shù)。過大表示分工過細(xì)。寬度=同一層上模塊數(shù)的最大值。過大表示系統(tǒng)復(fù)雜度大。啟發(fā)性規(guī)則1.爭(zhēng)取低耦合、高內(nèi)聚(增加內(nèi)聚>減少耦合)啟發(fā)性規(guī)則控制層次McbalkedmfgihjnopqrWidth
DepthFan-outFan-in控制層次McbalkedmfgihjnopqrWidthD扇出=一個(gè)模塊直接調(diào)用\控制的模塊數(shù)。3fan-out9AA的扇出AA的扇入
扇入=直接調(diào)用該模塊的模塊數(shù)在不破壞獨(dú)立性的前提下,fan-in
大的比較好。啟發(fā)性規(guī)則扇出=一個(gè)模塊直接調(diào)用\控制的模塊數(shù)。3盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。
如果一個(gè)模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。一般來說,頂層扇出高,中間扇出少,低層高扇入。啟發(fā)性規(guī)則盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。
如果一個(gè)模塊的扇出控制域MACBM的控制域?yàn)閧M,A,B,C}作用域:M中的一個(gè)判定所影響的模塊。作用域是指該模塊中一個(gè)判斷所影響的所有其它模塊;控制域指該模塊本身以及所有直接或間接從屬于它的模塊。4.模塊的作用范圍保持在該模塊的控制范圍內(nèi)啟發(fā)性規(guī)則控制域MACBM的控制域?yàn)閧M,A,B,C}作用域例:A:
…………if……thengotoB1
…………
…………B:
…………
…………B1:
…………
…………作用域在控制域內(nèi)A:
…………if……thengotoM1
…………
…………M:
…………
…………M1:gotoC1
…………
…………作用域超出了控制域上例中A的作用超出了控制域。
改進(jìn)方法之一,可以把A中的if移到M中;改進(jìn)方法之二,可以把C移到A下面。MACB例:A:B:作用域在控制域內(nèi)A:M:作用域超出了控制域5、降低接口的復(fù)雜程度:模塊接口的復(fù)雜性是引起軟件錯(cuò)誤的一個(gè)主要原因。接口設(shè)計(jì)應(yīng)該使得信息傳遞簡(jiǎn)單并且與模塊的功能一致。6、單出單入,避免內(nèi)容耦合,易于理解和維護(hù)。7、模塊功能可預(yù)測(cè)——相同輸入必產(chǎn)生相同輸出。反例:模塊中使用全局變量或靜態(tài)變量,則可能導(dǎo)致不可預(yù)測(cè)。啟發(fā)性規(guī)則5、降低接口的復(fù)雜程度:模塊接口的復(fù)雜性是引起軟件錯(cuò)誤的一個(gè)小結(jié)軟件設(shè)計(jì)的重要性設(shè)計(jì)過程設(shè)計(jì)的基本原理抽象、細(xì)化、模塊化、體系結(jié)構(gòu)、控制層次、數(shù)據(jù)結(jié)構(gòu)、軟件過程、信息隱藏。模塊化設(shè)計(jì)內(nèi)聚、耦合,啟發(fā)規(guī)則。小結(jié)軟件設(shè)計(jì)的重要性第7講設(shè)計(jì)概念與原理第7講設(shè)計(jì)概念與原理內(nèi)容提要軟件設(shè)計(jì)的重要性、過程及其基本原則設(shè)計(jì)的相關(guān)概念模塊化設(shè)計(jì)模塊設(shè)計(jì)的啟發(fā)規(guī)則內(nèi)容提要軟件設(shè)計(jì)的重要性、過程及其基本原則概述軟件設(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ì)不同。概述軟件設(shè)計(jì):應(yīng)用各種技術(shù)和原理,對(duì)一個(gè)軟件系統(tǒng)做出足夠詳細(xì)開發(fā)階段的信息流開發(fā)階段的信息流翻譯需求模型到軟件設(shè)計(jì)需求分析模型設(shè)計(jì)模型數(shù)據(jù)對(duì)象描述處理規(guī)格說明控制規(guī)格說明E-RDFDSTDDD過程設(shè)計(jì)接口設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)翻譯需求模型到軟件設(shè)計(jì)需求分析模型設(shè)計(jì)模型數(shù)據(jù)對(duì)象描述處理規(guī)翻譯分析模型到軟件設(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á)。翻譯分析模型到軟件設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)將分析時(shí)創(chuàng)建的信息域模型變換為1.軟件設(shè)計(jì)的重要性軟件設(shè)計(jì)是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。1.軟件設(shè)計(jì)的重要性軟件設(shè)計(jì)是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基設(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ù)的方法。設(shè)計(jì)和軟件質(zhì)量指導(dǎo)性原則2.設(shè)計(jì)過程從項(xiàng)目管理的角度來看,軟件設(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)和算法。2.設(shè)計(jì)過程從項(xiàng)目管理的角度來看,軟件設(shè)計(jì)分兩步完成。總體設(shè)計(jì)從回答“做什么”到回答“怎樣做”劃分出組成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫(kù)、過程和文檔等等每個(gè)元素還是黑盒子---“全局高度,抽象層次”總體設(shè)計(jì)從回答“做什么”到回答“怎樣做”3.設(shè)計(jì)基本原理1.模塊化:Modularity模塊是數(shù)據(jù)說明、可執(zhí)行語(yǔ)句等程序?qū)ο蟮募希菃为?dú)命名的并且可以通過名字來訪問,例如過程、函數(shù)、子程序、宏、modula等。軟件被劃分成獨(dú)立命名和可獨(dú)立訪問的被稱作模塊的構(gòu)件,每個(gè)構(gòu)件完成一個(gè)子功能,它們集成到一起滿足問題需求。easiertobuild,easiertochange,easiertofix...3.設(shè)計(jì)基本原理1.模塊化:Modularityeasier模塊化模塊化論據(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ù)雜性所掩蓋。模塊化模塊化論據(jù):模塊化模塊化和軟件成本如何確定地預(yù)測(cè)最小成本區(qū)?成本成本/模塊最小成本區(qū)接口成本軟件總成本模塊數(shù)目模塊化模塊化和軟件成本成本成本/模塊最小成本區(qū)接口成本軟模塊化如何確定模塊的大小:模塊可分解性模塊可組裝性模塊可理解性模塊的連續(xù)性模塊的可保護(hù)性模塊化如何確定模塊的大?。涸O(shè)計(jì)基本原理2.抽象Abstraction:忽略細(xì)節(jié),分層理解問題,自頂向下層層細(xì)化,包括對(duì)過程、數(shù)據(jù)和控制的抽象。過程抽象:一個(gè)命名的指令序列,具有特定和有限的功能。數(shù)據(jù)抽象是命名的數(shù)據(jù)集合,描述一個(gè)數(shù)據(jù)對(duì)象??刂瞥橄箅[含了不必說明的內(nèi)部細(xì)節(jié)的程序控制機(jī)制。是實(shí)現(xiàn)模塊化的手段之一。設(shè)計(jì)基本原理2.抽象Abstraction:過程抽象在這個(gè)抽象層次上,給出了初步的過程表示,所用的術(shù)語(yǔ)都已面向軟件,而且模塊化的工作已經(jīng)開始顯露。逐步細(xì)化和模塊化的概念與抽象緊密相連。過程抽象在這個(gè)抽象層次上,給出了初步的過程表示,所用的術(shù)語(yǔ)都數(shù)據(jù)抽象定義“繪圖drawing”數(shù)據(jù)對(duì)象作為一種抽象數(shù)據(jù)類型。TYPEdrawingISSTRUCTUREDEFINED
numberISSTRINGLENGTH(12)
geometryDEFINED…
notesISSTRINGLENGTH(256)…ENFdrawingTYPE;BlueprintISINSTANCEOFdrawing;SchematicISINSTANCEOFdrawing;數(shù)據(jù)抽象定義“繪圖drawing”數(shù)據(jù)對(duì)象作為一種抽象數(shù)據(jù)設(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設(shè)計(jì)基本原理3.求精Refinementdoorimplem求精設(shè)計(jì)的求精過程與需求分析的劃分類似,只是考慮的細(xì)節(jié)層次不同。求精實(shí)際是一個(gè)詳細(xì)描述的過程。抽象與求精是互補(bǔ)的概念。求精設(shè)計(jì)的求精過程與需求分析的劃分類似,只是考慮的細(xì)節(jié)層次不設(shè)計(jì)基本原理4.信息隱藏informationhiding信息隱藏:在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的信息(過程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來說,是不可訪問的。每個(gè)客戶只能通過接口來了解該模塊,而所有的實(shí)現(xiàn)都隱藏起來。隱藏就是有效的模塊化可以通過定義一組獨(dú)立模塊來實(shí)現(xiàn)。設(shè)計(jì)基本原理4.信息隱藏informationhidin信息隱藏modulecontrolledinterface"secret"?algorithm?datastructure?detailsofexternalinterface?resourceallocationpolicyclientsaspecificdesigndecision“信息隱藏”,更準(zhǔn)確地描述應(yīng)是“細(xì)節(jié)隱藏”,因?yàn)殡[藏的不是信息,而是實(shí)現(xiàn)的細(xì)節(jié)。信息隱藏modulecontrolledinterface"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)鍵。4、模塊化設(shè)計(jì)模塊獨(dú)立性耦合(couple)是度量系統(tǒng)中模塊之間的交互程度。Goal:
模塊之間盡可能獨(dú)立耦合從低到高依次為:非直接耦合(最好),數(shù)據(jù)耦合,標(biāo)記耦合,控制耦合,外部耦合,公共耦合和內(nèi)容耦合(最差)。GreatdealofdependenceIndependent
HighlycoupledLooselycoupledUncoupled
耦合耦合(couple)是度量系統(tǒng)中模塊之間的交互程度。Grea耦合內(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)部。耦合內(nèi)容耦合contentcoupling……ABCDA例2:部分代碼重疊(常出現(xiàn)在匯編程序中)B
A例3:一個(gè)模塊有多個(gè)入口(功能)A:………………………………entry1:………………………………entry2:………………………………耦合例2:部分代碼重疊(常出現(xiàn)在匯編程序中)BA例3:一個(gè)公共耦合
commoncoupling如果兩個(gè)模塊都可以存取相同的全局?jǐn)?shù)據(jù),則它們之間是公共耦合。acommondatastore.Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………耦合公共耦合commoncouplingGlobal:公共耦合存在的問題:公共部分的改動(dòng)將影響所有調(diào)用它的模塊;公共部分的數(shù)據(jù)存取無法控制;復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而增加。解決方法:通過使用信息隱藏來避免公共耦合。耦合公共耦合存在的問題:耦合控制耦合
controlcoupling
如果兩個(gè)模塊中的一個(gè)模塊給另一個(gè)模塊傳遞控制信息,則它們具有控制耦合。Onemodulepassesparameterstocontroltheactivityofanothermodule.ABFlagF2F1Fn…………Flag特點(diǎn):接口單一,但仍然影響被控模塊的內(nèi)部邏輯。耦合控制耦合controlcouplingABFlagF2標(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.耦合標(biāo)記耦合stampcouplingThemost實(shí)現(xiàn)低耦合,采取下列措施:耦合方式采用非直接耦合,不采用內(nèi)容耦合。傳遞信息類型盡量使用數(shù)據(jù)耦合,少采用控制耦合,外部耦合和公共耦合限制使用。耦合數(shù)量模塊間相互調(diào)用時(shí),傳遞參數(shù)最好只有一個(gè)。原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合。耦合實(shí)現(xiàn)低耦合,采取下列措施:耦合內(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)聚最差最好內(nèi)聚內(nèi)聚:cohesion.最差最好低內(nèi)聚偶然內(nèi)聚(Coincidentalcohesion):指一個(gè)模塊內(nèi)的各處理元素之間沒有任何聯(lián)系。例:readdiskfile;calculatecurrentvalues;produceuseroutput;
…嚴(yán)重的缺點(diǎn):產(chǎn)品的可維護(hù)性退化;模塊是不可復(fù)用的,增加軟件成本。解決途徑:將模塊分成更小的模塊,每個(gè)小模塊執(zhí)行一個(gè)操作。低內(nèi)聚偶然內(nèi)聚(Coincidentalcohesion)低內(nèi)聚邏輯內(nèi)聚(Logicalcohesion):邏輯上相關(guān)的功能或數(shù)據(jù)放在一個(gè)模塊中。問題:接口難于理解;完成多個(gè)操作的代碼互相糾纏在一起,導(dǎo)致嚴(yán)重的維護(hù)問題。A:Readinputsfromdiskfromtapefromkeyboard低內(nèi)聚邏輯內(nèi)聚(Logicalcohesion):邏輯上相低內(nèi)聚時(shí)間內(nèi)聚(Temporalcohesion):如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行。例如:系統(tǒng)的初始化
openoldmasterfile;newmasterfile,transactionfileandprintfile;initializesalesregiontable;readfirsttransactionrecordandfirstoldmasterfilerecord;問題:不同的功能混在一個(gè)模塊中,有時(shí)共用部分編碼,使局部功能的修改牽動(dòng)全局。低內(nèi)聚時(shí)間內(nèi)聚(Temporalcohesion):如果中內(nèi)聚過程內(nèi)聚
(Proceduralcohesion):Functionsaregroupedtogetherinamoduletoensureacertainorderofperformance.例子:Readpartnumberfromdatabaseandupdaterepairrecordonmaintenancefile.enterdatacheckdatamanipulatedata中內(nèi)聚過程內(nèi)聚(Proceduralcohesion)中內(nèi)聚通信內(nèi)聚(Communicationalcohesion):Allthefunctionsin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度國(guó)際貿(mào)易物流運(yùn)輸合同3篇
- 2024年城市綜合體停車場(chǎng)租賃管理服務(wù)協(xié)議2篇
- 洛陽(yáng)文化旅游職業(yè)學(xué)院《框架開發(fā)》2023-2024學(xué)年第一學(xué)期期末試卷
- 洛陽(yáng)商業(yè)職業(yè)學(xué)院《素描4(油畫方向)》2023-2024學(xué)年第一學(xué)期期末試卷
- 燃?xì)庠O(shè)施安全檢查制度
- 2024年標(biāo)準(zhǔn)商鋪?zhàn)赓U協(xié)議
- 2024年創(chuàng)意版權(quán)轉(zhuǎn)讓3篇
- 游泳池屋面天溝防水施工合同
- 廣西桂林市2024-2025學(xué)年高一上學(xué)期12月聯(lián)合檢測(cè)數(shù)學(xué)試卷(解析版)
- 教育機(jī)構(gòu)教師聘用合同格式
- 福建百校2025屆高三12月聯(lián)考?xì)v史試卷(含答案解析)
- 2023年益陽(yáng)市安化縣招聘鄉(xiāng)鎮(zhèn)衛(wèi)生院護(hù)理人員筆試真題
- 人音版音樂七年級(jí)上冊(cè)《父親的草原母親的河》課件
- 2024年度短視頻內(nèi)容創(chuàng)作服務(wù)合同3篇
- 2024年度拼多多店鋪托管經(jīng)營(yíng)合同2篇
- 2023年北京腫瘤醫(yī)院(含社會(huì)人員)招聘筆試真題
- 能源管理總結(jié)報(bào)告
- 2024年時(shí)事政治試題庫(kù)
- 2024-2025學(xué)年統(tǒng)編版五年級(jí)語(yǔ)文上冊(cè)第七單元達(dá)標(biāo)檢測(cè)卷(原卷+答案)
- 人教版七年級(jí)語(yǔ)文上冊(cè)《課內(nèi)文言文基礎(chǔ)知識(shí) 》專項(xiàng)測(cè)試卷及答案
- 【初中數(shù)學(xué)】基本平面圖形單元測(cè)試 2024-2025學(xué)年北師大版數(shù)學(xué)七年級(jí)上冊(cè)
評(píng)論
0/150
提交評(píng)論