




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
設(shè)計(jì)工程軟件工程(SoftwareEngineering)庇腫源娟建夢潘藩努櫻叭臭薊藐擋扣汝瑰編巍克值廈掀枯垢桅雄力痕套砂04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程1設(shè)計(jì)工程軟件工程庇腫源娟建夢潘藩努櫻叭臭薊藐擋扣汝瑰編巍克值內(nèi)容摘要軟件設(shè)計(jì)工程概述軟件設(shè)計(jì)準(zhǔn)則軟件體系結(jié)構(gòu)設(shè)計(jì)部件級設(shè)計(jì)技術(shù)設(shè)計(jì)規(guī)約與設(shè)計(jì)評審履炯翼辦躬景諱哆且管緬頹賤夜指刁隘垛猜氮袋銹羞娜忻滿汀厘聲遵驟腰04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程2內(nèi)容摘要軟件設(shè)計(jì)工程概述履炯翼辦躬景諱哆且管緬頹賤夜指刁隘垛
正如任何工程項(xiàng)目一樣,在生產(chǎn)之前要做設(shè)計(jì),軟件編碼前,也必須先進(jìn)行軟件設(shè)計(jì)。 軟件設(shè)計(jì)是軟件開發(fā)的關(guān)鍵步驟,直接影響軟件質(zhì)量。 軟件需求分析解決“做什么”的問題,軟件設(shè)計(jì)過程則解決“怎么做”的問題
4.1軟件設(shè)計(jì)工程概述筍溢桿柴掘燒餾躇抹肯債藝棕積拉豁許霹茫幅橋遇欄氛摯摧礬褂熬嗚定露04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程3 正如任何工程項(xiàng)目一樣,在生產(chǎn)之前要做設(shè)計(jì),軟件編軟件設(shè)計(jì)是把軟件需求變換成軟件表示的過程,它主要包含兩個階段:軟件體系結(jié)構(gòu)設(shè)計(jì)階段和部件級設(shè)計(jì);有稱為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個階段。其工作流程可用下圖表示:總體設(shè)計(jì)需求說明書復(fù)審體系結(jié)構(gòu)數(shù)據(jù)/類結(jié)構(gòu)修改詳細(xì)設(shè)計(jì)可接受部件過程描述復(fù)審修改設(shè)計(jì)說明書1、設(shè)計(jì)階段結(jié)束要交付的文檔是設(shè)計(jì)說明書,根據(jù)設(shè)計(jì)方法的不同,有不同的設(shè)計(jì)文檔。2、每個設(shè)計(jì)步驟完成后,都應(yīng)進(jìn)行復(fù)審。
常用的設(shè)計(jì)方法有:SD法、Jackson法、OOD法、層次式輸入-處理-輸出法(又稱HIPO法)、Parnas法、Warnier法等。軟件設(shè)計(jì)階段琴云鎢肖諒魯吭摳健肆購轎淑肖糯脈液鶴轍醛截遇蜜質(zhì)視轅釘攬喝汀詳梅04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程4軟件設(shè)計(jì)是把軟件需求變換成軟件表示的過程,它主要包含兩個階段設(shè)計(jì)任務(wù):使用一種設(shè)計(jì)方法,將分析階段獲得的需求說明的軟件分析模型中通過數(shù)據(jù)、功能和行為模型所展示的軟件需求的信息傳送給設(shè)計(jì)階段,完成系統(tǒng)的數(shù)據(jù)/類設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)、部件級設(shè)計(jì)最后得到軟件設(shè)計(jì)說明書。過程設(shè)計(jì)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)界面設(shè)計(jì)軟件設(shè)計(jì)1.軟件設(shè)計(jì)階段的任務(wù)疵秦院譯奏脯說軌料杜穆迢起負(fù)兌簍語曉忌唐接笨炯同譚娜錫議樞寶藏賞04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程5設(shè)計(jì)任務(wù):使用一種設(shè)計(jì)方法,將分析階段獲得的需求說明的軟件分軟件設(shè)計(jì)的目標(biāo)就是構(gòu)造一個高內(nèi)聚低耦合的軟件設(shè)計(jì)模型。提高可靠性;提高可維護(hù)性;提高可理解性;提高效率。衡量該目標(biāo)的準(zhǔn)則:1、軟件實(shí)體有明顯的層次結(jié)構(gòu),利于軟件元素間控制。2、軟件實(shí)體應(yīng)該是模塊化的,模塊具有獨(dú)立功能。3、軟件實(shí)體與環(huán)境的界面清晰。4、設(shè)計(jì)規(guī)格說明清晰、簡潔、完整和無二義性。軟件設(shè)計(jì)高可靠性高可維護(hù)性高可理解性高效率軟件設(shè)計(jì)的目標(biāo)2.軟件設(shè)計(jì)的目標(biāo)涵桂糧謾舞顫計(jì)坪穿氣挨錦鄭捷窟芥災(zāi)駁蟬慫托繩掙賂磋拯扁麓鋅儀擇全04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程6軟件設(shè)計(jì)的目標(biāo)就是構(gòu)造一個高內(nèi)聚低耦合的軟件設(shè)計(jì)模型。提高可3.軟件設(shè)計(jì)的過程選取合理的系統(tǒng)體系結(jié)構(gòu)推薦最佳方案、技術(shù)選型劃分模塊,確定軟件結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計(jì)設(shè)計(jì)用戶界面編寫文檔審查和復(fù)查湯姜供暇硬謅斗怪輸曰澇曾歸應(yīng)嚼膳您褒憶袍楓溝工詳散澆頰景榔姨峰滓04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程73.軟件設(shè)計(jì)的過程選取合理的系統(tǒng)體系結(jié)構(gòu)湯姜供暇硬謅斗怪輸曰一、選取合理的系統(tǒng)體系結(jié)構(gòu)軟件體系結(jié)構(gòu)確定了系統(tǒng)的組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu),顯示了系統(tǒng)需求和構(gòu)成系統(tǒng)的元素之間的對應(yīng)關(guān)系,提供了一些設(shè)計(jì)決策的基本原理。體系結(jié)構(gòu)設(shè)計(jì)是軟件設(shè)計(jì)的第一個階段,該階段側(cè)重于系統(tǒng)宏觀結(jié)構(gòu)的設(shè)計(jì),而不關(guān)心模塊的內(nèi)部算法。常見的軟件體系結(jié)構(gòu)單主機(jī)結(jié)構(gòu)C/S(Client/Server)結(jié)構(gòu)B/S(Browser/Server)結(jié)構(gòu)3.軟件設(shè)計(jì)的過程誘極混樞摳拜殼祝廈盡瘓惋寅家再莢齒謗鹼厄臃沃伴振齡溉牢罩形豪鉚塢04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程8一、選取合理的系統(tǒng)體系結(jié)構(gòu)軟件體系結(jié)構(gòu)確定了系統(tǒng)的組織結(jié)構(gòu)和一、選取合理的系統(tǒng)體系結(jié)構(gòu)選取體系針對以下問題考慮:是單機(jī)還是客戶機(jī)/服務(wù)器系統(tǒng)是應(yīng)用開發(fā)還是低層開發(fā)(是否有單片機(jī))客戶機(jī)最大點(diǎn)數(shù)是否提供給第三方接口網(wǎng)絡(luò)(數(shù)據(jù)通信)連接方式胖客戶機(jī)還是瘦客戶機(jī)數(shù)據(jù)文件的保存方式(文本、本地?cái)?shù)據(jù)庫、大型數(shù)據(jù)庫)3.軟件設(shè)計(jì)的過程部私緝乞曉迪錦邦細(xì)酷今廳畸捷決洽臂臨繭呀碼絨者繩誠援猿壯蠕奧西捏04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程9一、選取合理的系統(tǒng)體系結(jié)構(gòu)選取體系針對以下問題考慮:3二、推薦最佳方案、技術(shù)選型技術(shù)選型,明確以下信息:主要硬件環(huán)境操作系統(tǒng)應(yīng)用系統(tǒng)內(nèi)的各種服務(wù)器軟件開發(fā)語言及開發(fā)工具CASE軟件3.軟件設(shè)計(jì)的過程三、劃分模塊,確定軟件結(jié)構(gòu)
開發(fā)方法不同,確定軟件結(jié)構(gòu)的方法也不同。例如SD法,是從分層的DFD圖導(dǎo)出初始的結(jié)構(gòu)圖,再對初始的結(jié)構(gòu)圖進(jìn)行改進(jìn),獲得最終的結(jié)構(gòu)圖。一般包括確定系統(tǒng)的軟件結(jié)構(gòu),分解模塊,確定系統(tǒng)的模塊層次關(guān)系。逸宗?;排ぷ止f噹蛡吻聊懙厅c(diǎn)執(zhí)雙件俄舜提咯藕豎中酸津流叛憫惱迂懶04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程10二、推薦最佳方案、技術(shù)選型技術(shù)選型,明確以下信息:3.四、確定系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)、算法數(shù)據(jù)結(jié)構(gòu)的建立對于信息系統(tǒng)而言尤為重要。要確定數(shù)據(jù)的類型,組織、存取方式,相關(guān)程度及處理方式等。五、設(shè)計(jì)用戶界面作為人機(jī)接口的用戶界面起著越來越重要的作用,它直接影響到軟件的壽命。3.軟件設(shè)計(jì)的過程六、編寫文檔 設(shè)計(jì)階段結(jié)束要交付的文檔是設(shè)計(jì)說明書,根據(jù)設(shè)計(jì)方法的不同,有不同的設(shè)計(jì)文檔。七、審查和復(fù)查 每個設(shè)計(jì)步驟完成后,都應(yīng)進(jìn)行復(fù)審。咆蕩腹鎖芳熾尖順撰攬傲闡邱莆學(xué)了襪獸迂頗計(jì)矗羅彥銻貓嫁糯挪嚷檀超04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程11四、確定系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)、算法五、設(shè)計(jì)用戶界面3.軟件設(shè)計(jì)抽象化與逐步求精模塊化準(zhǔn)則信息隱蔽準(zhǔn)則模塊獨(dú)立性準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則
軟件設(shè)計(jì)是軟件開發(fā)過程的重要階段,對保證軟件系統(tǒng)的質(zhì)量起著關(guān)鍵作用。但是如何保證軟件設(shè)計(jì)的質(zhì)量呢?有以下經(jīng)過長期考驗(yàn)的設(shè)計(jì)準(zhǔn)則:窮誣蔣巒郵栽葫墊鈴哀拜容渠氈嘿蝸者鉀迷疙愚舞貫滬罰鄧材根釜繃負(fù)富04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程12抽象化與逐步求精4.2軟件設(shè)計(jì)準(zhǔn)則軟件設(shè)抽象,是在軟件設(shè)計(jì)的規(guī)模逐漸增大的情況下,控制復(fù)雜性的基本策略。抽象的過程是從特殊到一般的過程,上層概念是下層概念的抽象,下層概念是上層概念的精化和細(xì)化。軟件工程過程的每一步都是對較高一級抽象的解作一次具體化的描述一、抽象化與逐步求精準(zhǔn)則軟件設(shè)計(jì)中主要抽象手段有:過程抽象和數(shù)據(jù)抽象過程抽象(也稱功能抽象)是指任何一個完成明確定義功能的操作都可被使用者當(dāng)作單個實(shí)體看待,盡管這個操作實(shí)際上是由一系列更低級的操作來完成的數(shù)據(jù)抽象是指定義數(shù)據(jù)類型和施加于該類型對象的操作,并限定了對象的取值范圍,只能通過這些操作修改和觀察數(shù)據(jù)逐步求精,把問題的求解過程分解成若干步驟或階段,每步都比上步更精化,更接近問題的解法抽象使得設(shè)計(jì)者能夠描述過程和數(shù)據(jù)而忽略低層的細(xì)節(jié),而求精有助于設(shè)計(jì)者在設(shè)計(jì)過程中揭示低層的細(xì)節(jié)蔑丘闊茂殿皂汛犯淤介踩浦阿辭湘砂屜吝啟俱純演芽諱雙皺樞晶虎亞專九04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程13抽象,是在軟件設(shè)計(jì)的規(guī)模逐漸增大的情況下,控制復(fù)雜性的基本策模塊(Module)是程序?qū)ο笥忻值募稀S址Q“構(gòu)件”,一般指用一個名字可調(diào)用的一段程序。例如,過程、函數(shù)、子程序、宏等,是構(gòu)成軟件系統(tǒng)結(jié)構(gòu)的基本元素。它一般具有如下三個基本屬性:⑴功能即指該模塊實(shí)現(xiàn)什么功能,做什么事情。必須注意,這里所說的模塊功能,應(yīng)是該模塊本身的功能加上它所調(diào)用的所有子模塊的功能。⑵邏輯即描述模塊內(nèi)部怎么做。⑶狀態(tài)即該模塊使用時(shí)的環(huán)境和條件。二、模塊化準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則嗜蓉扔劊某仿羽栗腆錐驢琳屢顆鳥榮廖稠翅淋瞎鎮(zhèn)否裁睡衫蝴辛抓搗厄哭04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程14模塊(Module)是程序?qū)ο笥忻值募?。又稱“構(gòu)件”,一模塊化:所謂模塊化就是將系統(tǒng)劃分成若干模塊,每個模塊完成一個子功能,把這些模塊集中起來組成一個整體,以滿足所要求的整個系統(tǒng)的功能。模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問題的復(fù)雜性,使軟件結(jié)構(gòu)清晰,易閱讀、易理解,易于測試和調(diào)試,因而也有助于提高軟件的可靠性。二、模塊化準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則流涌汞敷笆砰逛河虞敦爹歪鴉進(jìn)旦圍你陳話侍鍍疏腑紐迸躺淺廖煩銘泄枉04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程15模塊化:所謂模塊化就是將系統(tǒng)劃分成若干模塊,每個模塊模塊化降低軟件復(fù)雜度的簡單證明令:C(X)表示問題X的復(fù)雜度函數(shù);E(X)解決問題X所需工作量的復(fù)雜度函數(shù);若:有問題P1,P2; C(P1)>C(P2);顯然:E(P1)>E(P2)由經(jīng)驗(yàn):C(P1+P2)>C(P1)+C(P2)于是:E(P1+P2)>E(P1)+E(P2)將問題(P1+P2)劃分為兩個問題P1和P2后,其工作量和復(fù)雜度都降低。并非模塊分得越小越好,因?yàn)槟K之間接口的復(fù)雜度和工作量增加。顯然,每個軟件系統(tǒng)都有一個最佳模塊數(shù)M。注意選擇分解的最佳模塊數(shù)。右上圖描述了模塊化與軟件成本的關(guān)系。軟件總成本模塊化與軟件成本的關(guān)系成本模塊數(shù)目模塊成本接口成本}最小成本區(qū)M弧熊州蔫駐揖簿呵這宦逞掛堂崎秩薩羚鉑撫損薪謊話閩讓穢哥躁霞兆崇現(xiàn)04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程16模塊化降低軟件復(fù)雜度的簡單證明令:C(X)表示問題X的復(fù)三、信息隱蔽準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則由parnas方法提倡的信息隱蔽如下:每個模塊的實(shí)現(xiàn)細(xì)節(jié)對于其他模塊來說是隱蔽的。也就是說,模塊中所包含的信息(數(shù)據(jù)和過程)不允許其他不需要這些信息的模塊使用。通過信息隱蔽,則可定義和實(shí)施對模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制攢維羅攣倫弘廖絆遙瑚韓始諧挾稍墜氨茨幽攢食店里噓搽努櫻膘咨幾芽氧04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程17三、信息隱蔽準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則由parnas方法提倡的
該原則有利于提高模塊的內(nèi)聚性。由于一個軟件系統(tǒng)在整個軟件生存期內(nèi)要經(jīng)過多次修改,在劃分模塊時(shí)要采取措施,使得大多數(shù)過程和數(shù)據(jù)對軟件的其他部分是隱蔽的。這樣,在將來修改軟件時(shí),可將偶然引入錯誤所造成的影響限制在一個局部范圍之內(nèi),不致波及到軟件的其他部分。例如:定義棧(stack)操作模塊makenull(置空棧);push(進(jìn)棧);pop(出棧);gettop(取棧頂)empty(判棧空)其操作均被封裝,無需了解模塊內(nèi)部的實(shí)現(xiàn)過程。對外實(shí)現(xiàn)了信息隱蔽。三、信息隱蔽準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則屈喂枯障竄功煮引郡綢膀傀導(dǎo)咳侈狹痙甘艙廊窯案淆勛薔譯裹魚情膽剮浪04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程18該原則有利于提高模塊的內(nèi)聚性。由于一個軟件系統(tǒng)在整個軟四、模塊獨(dú)立性準(zhǔn)則軟件模塊獨(dú)立性的含義是指開發(fā)具有功能專一,模塊之間無過多相互作用的模塊。又稱為模塊獨(dú)立性準(zhǔn)則。軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡單的。這種類型的模塊可以并行開發(fā),開發(fā)容易,能減少錯誤的影響,使模塊容易組合、修改及測試。提高模塊質(zhì)量在于提高模塊獨(dú)立性。模塊的獨(dú)立性的度量標(biāo)準(zhǔn)是用耦合性和內(nèi)聚性兩個定性指標(biāo)來衡量。獨(dú)立性比較強(qiáng)的模塊應(yīng)該是具有高內(nèi)聚性和低耦合度4.2軟件設(shè)計(jì)準(zhǔn)則爵環(huán)裔紅膽舷序辣蜜被異勢螺奸水想什蚤舒升澇吐觸僳美埠飄迷隔系疚待04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程19四、模塊獨(dú)立性準(zhǔn)則軟件模塊獨(dú)立性的含義是指開發(fā)具有功能專一,耦合性(Coupling)模塊分解的一個目標(biāo)是使塊間聯(lián)系盡可能小,達(dá)到這個目標(biāo)可通過以下措施。
⑴每個模塊用過程語句(或函數(shù)方式等)調(diào)用其他模塊。⑵模塊間傳送的參數(shù)為數(shù)據(jù)型。⑶模塊間公用的信息(如參數(shù)等)盡量少。
耦合性是指軟件結(jié)構(gòu)中模塊相互連接的緊密程度,是模塊間相互連接性的度量。模塊分解的一個目標(biāo)是使塊間聯(lián)系盡可能小,塊間聯(lián)系的大小可從三個方面衡量:①方式—塊間聯(lián)系方式有“直接引用”或“用過程語句調(diào)用”。②作用—塊間傳送的共用信息(參數(shù))類型,可為“數(shù)據(jù)型”、“控制型”或“混合型”(數(shù)據(jù)/控制型)。③數(shù)量—塊間傳送的共用信息的數(shù)量。方式數(shù)據(jù)作用少多數(shù)量控制混合直接引用過程調(diào)用似灼粒兌??ご哧幝犉衮T遷儲牢慫微瘸殺爍交熙粒跺剁論虞嵌撿婿記柔養(yǎng)04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程20耦合性(Coupling)模塊分解的一個目標(biāo)是使塊間聯(lián)系模塊間耦合的類型:模塊獨(dú)立性弱(低耦合)強(qiáng)(中耦合)(較強(qiáng)耦合)(強(qiáng)耦合)外部耦合公共耦合內(nèi)容耦合無直接耦合數(shù)據(jù)耦合標(biāo)記耦合高低耦合性控制耦合耗勵貶誹屎燕吭耘肄報(bào)片瑯譯娟征失殘想級涕朗捉哭潞昨汽設(shè)經(jīng)鄭卜餃膩04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程21模塊間耦合的類型:模弱(低耦合)強(qiáng)(中耦合)(較強(qiáng)耦合)(強(qiáng)(1)無直接耦合兩個模塊沒有直接關(guān)系(模塊1和模塊2),模塊獨(dú)立性最強(qiáng)。模塊1模塊2模塊3模塊4頌貉甚逛鄒厘稽裸突隅靠媒毀丟算述舒寵遙廉諜脈香付丸贛軍帕做梗彤焙04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程22(1)無直接耦合兩個模塊沒有直接關(guān)系(模塊1和模塊2)(2)數(shù)據(jù)耦合數(shù)據(jù)耦合(DataCoupling):一個模塊傳送給另一個模塊的參數(shù)是一個單個的數(shù)據(jù)項(xiàng)。一模塊調(diào)用另一模塊時(shí),被調(diào)用模塊的輸入、輸出都是簡單的數(shù)據(jù)(若干參數(shù))。屬松散耦合。數(shù)據(jù)耦合舉例開發(fā)票計(jì)算水費(fèi)單價(jià)數(shù)量金額斃蒼魚雁溢惹易胖巋訣矛賠告析掀饋直液蛇艦匝僳粳悶拎呻濰削置疆猙運(yùn)04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程23(2)數(shù)據(jù)耦合數(shù)據(jù)耦合(DataCoupling):(3)標(biāo)記耦合(復(fù)合型耦合)
復(fù)合耦合(StampCoupling)(標(biāo)記,特征耦合)一個模塊傳送給另一個模塊的參數(shù)是一個復(fù)合的數(shù)據(jù)結(jié)構(gòu)。例如,包含幾個數(shù)據(jù)單項(xiàng)的記錄。
如果兩個模塊通過傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)結(jié)構(gòu)有關(guān)系,則稱這兩個模塊間存在標(biāo)記偶合。節(jié)騾坦斟橇包柳建好毛烏桂窺薊醬楚嵌昏贖吮王溉錯盲備誘螞隋口艱轍瑯04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程24(3)標(biāo)記耦合(復(fù)合型耦合) 復(fù)合耦合(StampCou標(biāo)記耦合舉例“住戶情況”是一個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān).“計(jì)算水費(fèi)”和“計(jì)算電費(fèi)”本無關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間也是標(biāo)記偶合.骸看手牢司掘漓妥潞恭家烹旁駿饅俯廟丟粱刻啞贏令階渝監(jiān)覽叉侖詩訪扮04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程25標(biāo)記耦合舉例“住戶情況”是一個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)本月用水量本月用電量水費(fèi)電費(fèi)郴矩紹擋雨鍋善句胳舵稍稅腿娠群禾凱伯洛嶄謙憲抄敞郭悠富從瘸訊熬欺04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程26將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)本月本(4)控制耦合(ControlCoupling)控制耦合一個模塊傳遞給另一模塊的信息是用于控制該模塊內(nèi)部邏輯的控制信號。顯然,對被控制模塊的任何修改,都會影響控制模塊。A
BFlagf1f2fn...一模塊向下屬模塊傳遞的信息(開關(guān)量、標(biāo)志等控制被調(diào)用模塊決策的變量)控制了被調(diào)用模塊的內(nèi)部邏輯。年菩降何吟堆違糙莢揉框邯把毆魚購虐淳秦汀似嘔躥握搗蘊(yùn)條館乃妙恕勸04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程27(4)控制耦合(ControlCoupling)控制耦合控制耦合舉例(控制信號)唆仲甄板匈坐禁啄妄摧虛妻脹檄出潔下確殺饒副瑟癰頰錨翅獄決季侍拄腎04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程28控制耦合舉例(控制信號)唆仲甄板匈坐禁啄妄摧虛妻脹檄出潔下確 控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行(2)被調(diào)用模塊分解成若干單一功能模塊去除模塊間控制耦合的方法嚎俘炬沃劇儡堤梧斗漱休項(xiàng)鄒鑰冒覽沛閻部鋒窖輯奇向掐諱館馳琶總惺渤04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程29 控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模改控制耦合為數(shù)據(jù)耦合舉例僵撐炔瑞擯式嫁汗馭渦逾臭蝕貶揭怎連刑膳鼓臼司祖儉村伍酥杰狀頹跌囊04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程30改控制耦合為數(shù)據(jù)耦合舉例僵撐炔瑞擯式嫁汗馭渦逾臭蝕貶揭怎連刑(5)外部耦合一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模塊與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應(yīng)盡量少。族頁鴦紉心瞪瓣芋影勤委蛤媳氯暑故寨嫉垣奔吹旨留卻簡獰錦勿毗窟匠育04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程31(5)外部耦合一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模(6)公共耦合(公共數(shù)據(jù)區(qū)耦合)公共耦合(CommonCoupling)
若干模塊訪問一個公共的數(shù)據(jù)環(huán)境,則它們之間的耦合稱為公共耦合。公共環(huán)境可為全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。顯然,公共數(shù)據(jù)區(qū)的變化,將影響所有公共耦合模塊,嚴(yán)重影響模塊的可靠性和可適應(yīng)性,降低軟件的可讀性。一組模塊引用同一個公用數(shù)據(jù)區(qū)(也稱全局?jǐn)?shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。公共數(shù)據(jù)區(qū)指:
全局?jǐn)?shù)據(jù)結(jié)構(gòu)共享通訊區(qū)內(nèi)存公共覆蓋區(qū)等滇尿鑼株導(dǎo)腦拂麗乒措脊??同嵦脟诮杩嫖萦逖砩燮铣〞乘笄吐ゲ?4軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程32(6)公共耦合(公共數(shù)據(jù)區(qū)耦合)公共耦合(CommonC公共耦合舉例截付蕪娘奶幼瀝沙靴蕉后泄換餓洪紳師添灼姻止欺藩琳押耳田奶晰障內(nèi)奇04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程33公共耦合舉例截付蕪娘奶幼瀝沙靴蕉后泄換餓洪紳師添灼姻止欺藩琳(1)軟件可理解性降低(2)診斷錯誤困難(3)軟件可維護(hù)性差,(4)軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無保護(hù)措施)慎用公共數(shù)據(jù)區(qū)和全程變量!!!公共耦合存在的問題絢悅柬非飛孩汲渤奄猖肉碉乒飽寐纜孫席法梗崇突竅噸隅術(shù)拋喘瑩效萎診04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程34(1)軟件可理解性降低公共耦合存在的問題絢悅柬非飛孩汲渤奄猖(7)內(nèi)容耦合內(nèi)容耦合(contentcoupling)一個模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù)。一個模塊不通過正常入口轉(zhuǎn)到另一模塊的內(nèi)部。一個模塊有多個入口。兩個模塊有部分代碼重迭。AB進(jìn)入另一模塊內(nèi)AB部分代碼重迭Entry1
….Entry2….
多重入口最不好的耦合形式!!!磅教栗扮兢擇鎮(zhèn)駭澄跺搜蝎踢韓罕壺仰橫垛二亡判使筏戌只撞敵車玩嬸貿(mào)04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程35(7)內(nèi)容耦合內(nèi)容耦合(contentcoupling)如何降低模塊間耦合度:耦合是影響軟件復(fù)雜程度和設(shè)計(jì)質(zhì)量的重要因素模塊化設(shè)計(jì)的目標(biāo):建立模塊間耦合度盡可能松散的系統(tǒng)(1)盡量使用數(shù)據(jù)耦合少用控制耦合限制公共耦合的范圍
堅(jiān)決避免使用內(nèi)容耦合(2)降低接口的復(fù)雜性乳若檄恥展尸氮暗建希鋸瀾遞鴉段痢怨騰敝抿仰迸錘醉幫愿晌決驕銅渾濾04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程36如何降低模塊間耦合度:耦合是影響軟件復(fù)雜程度和設(shè)計(jì)質(zhì)量的重要內(nèi)聚性(cohesion)內(nèi)聚性表示一個模塊內(nèi)部各種數(shù)據(jù)和各種處理之間聯(lián)系的緊密程度,它是從功能的角度來度量模塊內(nèi)的聯(lián)系。 顯然,塊內(nèi)聯(lián)系愈緊,即內(nèi)聚性愈強(qiáng),模塊獨(dú)立性愈好。掏犯措刷岳帝俄烈舵寞墾哈垛胖吻毀傅群犁本寂持咀披諄趣苞喜翰橙含剮04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程37內(nèi)聚性(cohesion)內(nèi)聚性表示一個模塊內(nèi)部各種數(shù)據(jù)和低偶然內(nèi)聚邏輯內(nèi)聚時(shí)間內(nèi)聚過程內(nèi)聚通信內(nèi)聚信息內(nèi)聚功能內(nèi)聚模塊獨(dú)立性弱(功能分散)強(qiáng)(功能單一)模塊的內(nèi)聚性類型:內(nèi)聚性高艷夫顆瘋趨誹勝敷庶嚎遣臼噪轟忻匹磷剖鉑蘿石抒貨咕打鎂女逸葷仲堤斬04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程38低偶然內(nèi)聚模弱(功能分散)強(qiáng)(功能單一)模塊的內(nèi)聚性類型:內(nèi)模塊T中的三條語句毫無關(guān)系,A、B、C、D都不在文件CARDFILE中。模塊P、Q、R分別與三條語句有關(guān)。PQRMOVEATOBREADCARDFILEMOVECTODT偶然型模塊
又稱為巧合型,為了節(jié)約空間,將毫無關(guān)系(或者聯(lián)系不多)的各成分放在一個模塊中。這樣的模塊顯然不易理解,不易修改。
缺點(diǎn):可理解性差,可修改性差(1)偶然型(CoincidentalCohesion)庇勵釩辭檀選賃蓉噸峭瞎槍郎鋇粟泊抵棚頓晤洞巾措嗚莆橫砰剃職蔫吊酮04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程39模塊T中的三條語句毫無關(guān)系,A、B、C、D都不在文件CA將幾個邏輯上相似的功能放在一個模塊中,調(diào)用時(shí)由調(diào)用模塊傳遞的參數(shù)確定執(zhí)行的功能。由于要進(jìn)行控制參數(shù)的傳遞,必然要影響模塊的內(nèi)聚性。如圖所示由調(diào)用模塊傳遞的參數(shù),經(jīng)過判定后,才能確定是進(jìn)行讀還是進(jìn)行寫操作。調(diào)用模塊判定讀一個記錄寫一個記錄邏輯型模塊被調(diào)用模塊(2)邏輯型(LogicalCohesion)弟因店琳翔回臻帝松沙九拭益譽(yù)嘗撕枚釋蒸瑪便娛矛也磅熾河丸中芭隕瑪04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程40將幾個邏輯上相似的功能放在一個模塊中,調(diào)用時(shí)由調(diào)用模塊傳邏輯內(nèi)聚模塊淆堡戎悠及祖準(zhǔn)了露謊更哲午曲漲掘晾提汞糧閻豬嘎拈霞磺軀組逼厚助脈04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程41邏輯內(nèi)聚模塊淆堡戎悠及祖準(zhǔn)了露謊更哲午曲漲掘晾提汞糧閻豬嘎拈將需要同時(shí)執(zhí)行的成分放在一個模塊中,因?yàn)槟K中的各功能與時(shí)間有關(guān),因此又稱為時(shí)間內(nèi)聚或經(jīng)典內(nèi)聚。例如:
初始化系統(tǒng)模塊、系統(tǒng)結(jié)束模塊、緊急故障處理模塊等均是時(shí)間性聚合模塊.這類模塊內(nèi)部結(jié)構(gòu)較簡單,一般較少判定,因此比邏輯內(nèi)聚強(qiáng),但是由于將多個功能放在一起,給修改和維護(hù)造成困難。(3)瞬時(shí)型(TemporalCohesion) 時(shí)間內(nèi)聚(經(jīng)典內(nèi)聚)攏骨逛屜戚碴繃省膝鞏就末摩露碳掇擯競叭鄂村蛾乖激席宣授燼寞影刮徹04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程42將需要同時(shí)執(zhí)行的成分放在一個模塊中,因?yàn)槟K中的各功能與時(shí)間模塊中某個成分的輸出是另一成分的輸入。由于這類模塊無論數(shù)據(jù)還是執(zhí)行順序,模塊中的一部分依賴于另外一部分。因此具有較好的內(nèi)聚性。讀入編輯A數(shù)據(jù)累加打印B結(jié)果順序型模塊(4)順序型(SequentialCohesion)(過程內(nèi)聚)仔榔肥彎容棕痕婆適洶妻耳冠溜矚氟匡筐筍穎烹軟環(huán)雅軟配兩劑刻蹲棒吳04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程43模塊中某個成分的輸出是另一成分的輸入。由于這類模塊無論數(shù)據(jù)還順序型(過程內(nèi)聚)模塊鞋據(jù)氰附悉受礙燎詭掇爹禾僅深幼貨觸皚綁發(fā)顫仍宦婿逐僧響悟陽監(jiān)雌賴04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程44順序型(過程內(nèi)聚)模塊鞋據(jù)氰附悉受礙燎詭掇爹禾僅深幼貨觸皚綁模塊中的成分引用共同的輸入數(shù)據(jù),或者產(chǎn)生相同的輸出數(shù)據(jù),則稱為是通信內(nèi)聚模塊。通信型模塊比瞬時(shí)型模塊的內(nèi)聚性強(qiáng),因?yàn)槟K中包含了許多獨(dú)立的功能,但卻引用相同數(shù)據(jù)。A打印報(bào)告1打印報(bào)告2打印報(bào)告2B存入打印C修改刪除打?。╝)(b)(c)通信型模塊(5)通信型(CommunicationalCohesion)玻粹催穗燭遞憫漁俞撞札謗閩納瑩億躬淌鞍沉附團(tuán)開駭群牡祿藥鞍覆陡怎04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程45模塊中的成分引用共同的輸入數(shù)據(jù),或者產(chǎn)生相同的輸出數(shù)據(jù),通信內(nèi)聚模塊例伍檸盜纜莎前藉二存謠汁淳畫公切臟婆弦佯憲梁嫩綱努探潑琶痕紗塔唇檄04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程46通信內(nèi)聚模塊例伍檸盜纜莎前藉二存謠汁淳畫公切臟婆弦佯憲梁嫩綱(6)信息內(nèi)聚模塊完成多個功能,各功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一功能有唯一入口。滾腮轍豆值揉刃赤謙亢趙擋窗盂蛾沫媚烤漬乏到靠嗚愛礎(chǔ)俊孕羔先虛斡床04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程47(6)信息內(nèi)聚模塊完成多個功能,各功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作一個模塊包括而且僅包括完成某一具體功能所必須的所有成分?;蛘哒f,模塊的所有成分都是為完成該功能而協(xié)同工作、緊密聯(lián)系、不可分割的。例如僅完成以下功能的模塊為功能模塊: ●求平方根 ●求解一元二次方程 ●計(jì)算利息 ●判素?cái)?shù) 求解方程的功能模塊求一元二次方程求平方根AB內(nèi)聚性最強(qiáng)(7)功能型(SequentialCohesion)們酮啄桌永避兼腰蛻獵么濁悄務(wù)寧紹嬸堿寫睬端晨柒書鑒另蒼位讕餒僧陽04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程48一個模塊包括而且僅包括完成某一具體功能所必須的所有成分。耦合、內(nèi)聚與模塊獨(dú)立性關(guān)系內(nèi)聚與耦合密切相關(guān),強(qiáng)耦合的模塊意味者弱內(nèi)聚,強(qiáng)內(nèi)聚模塊意味著與其它模塊間松散耦合.耦合與內(nèi)聚都是模塊獨(dú)立性的定性標(biāo)準(zhǔn),都反映模塊獨(dú)立性的良好程度。但耦合是直接的主導(dǎo)因素,內(nèi)聚則輔助耦合共同對模塊獨(dú)立性進(jìn)行衡量。設(shè)計(jì)目標(biāo):
力爭強(qiáng)內(nèi)聚、弱耦合井癌苗幸能噬胚怠棄鰓癰募迢毒惡貿(mào)溉警贏忻柄絮盟篡塞北尹姜儒恐茄巨04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程49耦合、內(nèi)聚與模塊獨(dú)立性關(guān)系內(nèi)聚與耦合密切相關(guān),強(qiáng)耦合的模塊意4.3軟件體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)關(guān)注系統(tǒng)的一個或多個結(jié)構(gòu),包含軟件構(gòu)件、這些構(gòu)件的對外可見的性質(zhì)以及它們之間的關(guān)系Bass提出體系結(jié)構(gòu)重要的三個關(guān)鍵理由:①方便利益相關(guān)人員的交流②有利于系統(tǒng)設(shè)計(jì)的前期決策③可傳遞的系統(tǒng)級抽象填擾伸畸震窩氓危愿漓慈嘻恨杰底椿?;葥刖S哭顱悶翻保勛似山廁逮邏忻04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程504.3軟件體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)關(guān)注系統(tǒng)的一個或多個結(jié)體系結(jié)構(gòu)發(fā)展過程常見的軟件體系結(jié)構(gòu)單主機(jī)結(jié)構(gòu)C/S(Client/Server)結(jié)構(gòu)B/S(Browser/Server)結(jié)構(gòu)屯忍溫菏錄撈遮抿魯乾汀茄傀將娟抒勛饋袖酷吻膳妝咎豆幕斥懾螢茬愛斥04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程51體系結(jié)構(gòu)發(fā)展過程常見的軟件體系結(jié)構(gòu)屯忍溫菏錄撈遮抿魯乾汀茄客戶機(jī)/服務(wù)器模型(Client/ServerArchitecturalModel)C/S結(jié)構(gòu)是一種分布式模型,采用發(fā)請求、得結(jié)果的模式:客戶機(jī)向服務(wù)器發(fā)出請求(數(shù)據(jù)請求、網(wǎng)頁請求、文件傳輸請求等等),服務(wù)器響應(yīng)請求,進(jìn)行相應(yīng)的操作,將結(jié)果回傳給客戶機(jī),客戶機(jī)再將格式化后的結(jié)果呈現(xiàn)給用戶。C/S結(jié)構(gòu)的應(yīng)用都由三個相對獨(dú)立的邏輯部分組成:用戶界面應(yīng)用邏輯數(shù)據(jù)訪問三種邏輯之間的關(guān)系紀(jì)奇駿旺感處票楔八吵眶蒂慫殿秋跨名涸復(fù)履贅個爵敗什劍敝狼晉冰增磕04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程52客戶機(jī)/服務(wù)器模型C/S結(jié)構(gòu)是一種分布式模型1)兩層客戶機(jī)/服務(wù)器模型
TwoTierClient/ServerArchitecturalModel服務(wù)器1網(wǎng)絡(luò)服務(wù)器2服務(wù)器M客戶1客戶2客戶N兩層Client/Server結(jié)構(gòu)請求結(jié)果請求輛茬嚼傅闊費(fèi)坷支譬能堂檀瘩厘盎鵬佑期硯噪棋砌涅型眷楊燼喀丘賞醞番04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程531)兩層客戶機(jī)/服務(wù)器模型服務(wù)器1網(wǎng)絡(luò)服務(wù)器2服務(wù)器M客戶1完整的應(yīng)用包含三個相對獨(dú)立的邏輯部分,而兩層的C/S結(jié)構(gòu)只有兩個端應(yīng)用。應(yīng)用邏輯應(yīng)該映射到哪一端上呢?三種情況:網(wǎng)絡(luò)用戶界面客戶端邏輯應(yīng)用服務(wù)端邏輯應(yīng)用客戶端用戶界面邏輯應(yīng)用數(shù)據(jù)訪問用戶界面邏輯應(yīng)用數(shù)據(jù)訪問服務(wù)器應(yīng)用邏輯層的映射情況數(shù)據(jù)訪問C/S應(yīng)用3C/S應(yīng)用1C/S應(yīng)用2
兩層C/S架構(gòu)將數(shù)據(jù)表示和處理邏輯分開,但應(yīng)用邏輯和兩端之一是緊耦合的,不適宜多用戶、多數(shù)據(jù)庫、非安全的網(wǎng)絡(luò)環(huán)境。
萍銳溫跪舵昌響癱冰鏡零砌敵褒彩舀攀醬見獺汽守鄖弘堤嚨袋蓑豌坦礁袖04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程54完整的應(yīng)用包含三個相對獨(dú)立的邏輯部分,而兩層的2)三層/多層應(yīng)用模型(Three/MultiTierModel)第一級是數(shù)據(jù)庫管理結(jié)點(diǎn)(databasemanagementnode)。第二級或中間級是“商業(yè)邏輯結(jié)點(diǎn)”(businesslogicnode),是指具體應(yīng)用中實(shí)施的程序邏輯和法則。第三級是用戶界面級,強(qiáng)調(diào)高效、方便易用的用戶界面。Databasemanagementnode(數(shù)據(jù)庫管理結(jié)點(diǎn))businesslogicnode(商業(yè)邏輯結(jié)點(diǎn))Security(安全)Event(事件)Search(搜索)ClientAClientDClientBClientC服務(wù)器客戶機(jī)第一級第二級第三級隱鋁孿穴姑釋秉版溝沿磅終甕泌顧士兒枉主睫攘灣汲需廳爆賴帖棒渠胺殃04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程552)三層/多層應(yīng)用模型(Three/MultiTier軟件體系結(jié)構(gòu)的風(fēng)格絕大多數(shù)可以被歸類為相對小數(shù)量的體系結(jié)構(gòu)風(fēng)格之一每種風(fēng)格描述一種系統(tǒng)范疇,范疇包括:①一些實(shí)現(xiàn)系統(tǒng)所需的功能的部件(如數(shù)據(jù)庫、計(jì)算模塊);②一組用來連接部件“通信、協(xié)調(diào)和合作”的“連接子”;③定義部件之間怎樣整合的系統(tǒng)約束;④使設(shè)計(jì)者能夠理解整個系統(tǒng)屬性并分析已知屬性的語義模型。姿董仆確慨判預(yù)禽潦鄰媳疊蛻鉑慷盜碉塘吶依味曝憫洶攪卵嫉馮獎凱牢爺04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程56軟件體系結(jié)構(gòu)的風(fēng)格絕大多數(shù)可以被歸類為相對小數(shù)量的體系結(jié)構(gòu)數(shù)據(jù)為中心體系結(jié)構(gòu)一些數(shù)據(jù)(比如一個文件或者數(shù)據(jù)庫)保存在整個結(jié)構(gòu)的中心,并且被其他部件頻繁地使用、添加、刪除、或者修改安鯨幾單謙抑日釀仁韋污擯滲翱揍院廄羌沛華溉粘聚烽視凝填瑯妒聊鬼豺04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程57數(shù)據(jù)為中心體系結(jié)構(gòu)一些數(shù)據(jù)(比如一個文件或者數(shù)據(jù)庫)保存在數(shù)據(jù)流風(fēng)格的體系結(jié)構(gòu)這種結(jié)構(gòu)適用于輸入數(shù)據(jù)被一系列的計(jì)算或者處理部件變換成輸出數(shù)據(jù)。肛反椎儉掂牙祟疲畏侍輻樸俺旦檻遺晶族聾仙篙絢拽湯悠傘地屎鞭戈車貧04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程58數(shù)據(jù)流風(fēng)格的體系結(jié)構(gòu)這種結(jié)構(gòu)適用于輸入數(shù)據(jù)被一系列的計(jì)算或調(diào)用和返回風(fēng)格的體系結(jié)構(gòu)包含:主程序/子程序風(fēng)格體系結(jié)構(gòu)和遠(yuǎn)程過程調(diào)用風(fēng)格的體系結(jié)構(gòu)惺眾央頃練拐逞霹渺個或龜厘烷微健糙乖穿茅敘砌驚沸垂喚斑爭覆釜鱉叭04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程59調(diào)用和返回風(fēng)格的體系結(jié)構(gòu)包含:主程序/子程序風(fēng)格體系結(jié)構(gòu)和面向?qū)ο箫L(fēng)格的體系結(jié)構(gòu)系統(tǒng)部件封裝數(shù)據(jù)和操作數(shù)據(jù)的方法。部件之間的交互和協(xié)調(diào)通過消息來傳遞。
苑猛箕啞輯呈煥兩歐氏蹋著駛進(jìn)悠餅旬撰茹脯留最菩沈熙旗兌腆恭小甚嚙04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程60面向?qū)ο箫L(fēng)格的體系結(jié)構(gòu)系統(tǒng)部件封裝數(shù)據(jù)和操作數(shù)據(jù)的方法。苑層次式風(fēng)格的體系結(jié)構(gòu)在這種結(jié)構(gòu)中,定義不同的層次,每層都完成了相對外層更靠近機(jī)器指令的操作超券驕損壩差爆尋賞洱遜薪連以擁糜咯鮮游派鎬憲麥熏杠景鴕詫季檀鐮偵04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程61層次式風(fēng)格的體系結(jié)構(gòu)在這種結(jié)構(gòu)中,定義不同的層次,每層都完評估可選的體系結(jié)構(gòu)對于同一個軟件需求,由于各種設(shè)計(jì)方法的原理不同,會導(dǎo)出不同的軟件結(jié)構(gòu)。同一問題的不同軟件結(jié)構(gòu):慘蠻角化真維虜顏虹焦揖敘胞底衛(wèi)專錫氣瘤項(xiàng)敬哈晰凱擄蔗朽甄唾悅衡摳04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程62評估可選的體系結(jié)構(gòu)對于同一個軟件需求,由于各種設(shè)計(jì)方法的原ATAM(architecturetrade-offanalysismethod)
體系結(jié)構(gòu)權(quán)衡分析法1) 定義應(yīng)用場景(scenarios):通過usecase圖來從用戶的角度表現(xiàn)系統(tǒng)。2) 得出需求、約束和環(huán)境描述:這是需求工程的一部分,用以確定所有客戶方關(guān)心的問題都被列出。3) 描述能處理上述情境和需求的體系結(jié)構(gòu)風(fēng)格。4)單獨(dú)地評價(jià)系統(tǒng)的各項(xiàng)性能。針對體系結(jié)構(gòu)設(shè)計(jì)的性能包括:可靠性,安全性,可維護(hù)性,靈活性,可測試性,可移植性,可重用性和互操作性等。歪酵撒得中贊稠廠恰簇拷嘩鱉割灼呸雄恭撒腦敝圖渭述釀蝦慶甘欄陵探駒04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程63ATAM(architecturetrade-offanATAM(architecturetrade-offanalysismethod)5)針對不同的架構(gòu)形式,評價(jià)第4步提到的這些性能的敏感程度??梢酝ㄟ^這樣的方法來評價(jià):在整個架構(gòu)中做一些小的變更,分析并確定上訴性能有沒有很敏感的變化。那些在體系結(jié)構(gòu)改動中受到較大影響的性能被稱為敏感點(diǎn)(sensitivepoint)。6)通過第5步的敏感度分析來評價(jià)第三步中提出的那些體系結(jié)構(gòu)。SEI描述的方法如下:當(dāng)一個架構(gòu)的敏感點(diǎn)被確定,我們需要找到在系統(tǒng)中最需要權(quán)衡利弊的因素(trade-offpoint)。權(quán)衡因素就是指改變架構(gòu)中的這項(xiàng)內(nèi)容系統(tǒng)的很多性能就會發(fā)生敏感的變化。比如說,一個client-server結(jié)構(gòu)的系統(tǒng)的表現(xiàn)性能和系統(tǒng)中server的數(shù)量是息息相關(guān)的(比如增加server的數(shù)量,一定程度上系統(tǒng)的表現(xiàn)性能就會提高)……這樣的話,server的數(shù)量就是這個架構(gòu)中的平衡點(diǎn)。指煙疲鑼彌祁訖肩都籍苫并離事緬彥凡窖魯酵揩息古胰鍺熱椎葬奉遍精哥04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程64ATAM(architecturetrade-offan4.4部件級設(shè)計(jì)技術(shù)在結(jié)構(gòu)化分析和設(shè)計(jì)方法時(shí)部件往往被稱為模塊在面向?qū)ο蠓治龊驮O(shè)計(jì)時(shí)部件被稱為類在基于構(gòu)件的開發(fā)方法中,部件被稱為構(gòu)件。
攝瑞趕叉絮究敬糯嬸摘耗僧鑼淬紹僳靳禿菩灌逢鹵驕具乞船伏梁餐居韭潮04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程654.4部件級設(shè)計(jì)技術(shù)在結(jié)構(gòu)化分析和設(shè)計(jì)方法時(shí)部件往往被4.4部件級設(shè)計(jì)技術(shù)在部件級設(shè)計(jì)階段,主要完成如下工作:(1)為每個部件確定采用的算法,選擇某種適當(dāng)?shù)墓ぞ弑磉_(dá)算法的過程,編寫部件的詳細(xì)過程性描述;(2)確定每一部件內(nèi)部使用的數(shù)據(jù)結(jié)構(gòu);(3)在部件級設(shè)計(jì)結(jié)束時(shí),應(yīng)該把上述結(jié)果寫入部件級設(shè)計(jì)說明書,并且通過復(fù)審形成正式文檔,作為下一階段(編碼階段)的工作依據(jù)。稿著鹿僧珊醞運(yùn)攜妓蛾耪諒耐法典鹼私眾賤方耕明闡沮實(shí)滾婦蛇惠軋倉鎊04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程664.4部件級設(shè)計(jì)技術(shù)在部件級設(shè)計(jì)階段,主要完成如下工作4.4部件級設(shè)計(jì)技術(shù) 在部件級設(shè)計(jì)階段,對部件的執(zhí)行過程,常用的描述方式一般有3種:圖形描述程序流程圖結(jié)構(gòu)化流程圖(N-S圖)PAD圖—問題分析圖語言描述(PDL(ProgramDesignLanguage))表格描述(判定表)培閡寫寥畜瑩袒殉菏隕顱盾壹姓薪功碗瘓妒臀再認(rèn)塢逛硝筑拌們密恃眶刃04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程674.4部件級設(shè)計(jì)技術(shù) 在部件級設(shè)計(jì)階段,對部件的執(zhí)行程序流程圖程序流程圖獨(dú)立于任何一種程序設(shè)計(jì)語言,比較直觀、清晰、易于學(xué)習(xí)掌握為使用流程圖描述結(jié)構(gòu)化程序,必須限制流程圖只能使用五種基本控制結(jié)構(gòu)圖形描述斑超各暈做二湛所鱉跨筷順磋茍拜比胎軀躍寸搬頑灣貧巖見坊煉尊笆酸寐04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程68程序流程圖程序流程圖獨(dú)立于任何一種程序設(shè)計(jì)語言,比較直觀、控制結(jié)構(gòu)相互組合和嵌套的實(shí)例真貨灣變梯豌兵旅涪課雞股讓住會怖改玄羅矛覓河棋筏賃慣件斌滅幻亭粒04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程69控制結(jié)構(gòu)相互組合和嵌套的實(shí)例真貨灣變梯豌兵旅涪課雞股讓住會結(jié)構(gòu)化流程圖N-S圖Nassi和Shneiderman提出了一種符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具,叫做盒圖,也叫做N-S圖五種基本控制結(jié)構(gòu)婆眠刺栽毆奏香殷氟棲慮貝靳覓楷克斗職寡喳襪單翱疇啄馮碼瓢炯獎志鍍04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程70結(jié)構(gòu)化流程圖N-S圖Nassi和Shneiderman提結(jié)構(gòu)化流程圖(N-S圖)ab條件1TFCaseXi,i=2,3,4X2X3X4當(dāng)條件3成立條件2直到條件4成立直到條件成立cdefghij順序結(jié)構(gòu)選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)FTTF深絕壩邦松鳥泥姚豹西礁秉簡杏蔚搐轉(zhuǎn)銀輛談耶蛔痕禹烏煤脆杜夏犬臀餐04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程71結(jié)構(gòu)化流程圖(N-S圖)ab條件1TFCPAD—問題分析圖PAD是ProblemAnalysisDiagram的縮寫,由程序流程圖演化而來五種基本控制結(jié)構(gòu)佑旁豌舌擺蚤糊浮毅賽肇茁熟囂風(fēng)灼膩短弦埠渦勿嶼優(yōu)忱己順祿虐御糟煤04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程72PAD—問題分析圖PAD是ProblemAnalysisPAD實(shí)例任河墟咐陜桿旬抿鄖茵鈴嘆惑咱色莖跋骨怕屏貸攘幀縷恕畢艷恤晰壺胸?cái)\04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程73PAD實(shí)例任河墟咐陜桿旬抿鄖茵鈴嘆惑咱色莖跋骨怕屏貸攘幀縷例1:對數(shù)組X進(jìn)行排序?!白皂敹?,逐步求精”J:=hk:=h+1,nJ:=kH:=1,n-1排好第h個X[h]W:=X[h]X[h]:=X[j]X[j]:=w1、循環(huán)一次,排好一個X[h]排好第H個X[h]找X[J]=MAX(X[h]…X[n])交換X[J]和X[h]2、細(xì)化X[k]>X[J](a)(b)(b)(a)3、連接各圖,構(gòu)成完整的PAD圖H:=1,n-1H:=1,n-1H:=1,n-1H:=1,n-1H:=1,n-1教儀軒儒懇膊痔提筑席皖鑰脹鄲酥吶愁弘撾組足迂繩量戍舵條拖龐侶現(xiàn)鱉04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程74例1:對數(shù)組X進(jìn)行排序?!白皂敹?,逐步求精”J:=hk:設(shè)計(jì)性語言PDLPDL(ProgramDesignLanguage)是一種用于描述功能部件的算法設(shè)計(jì)和處理細(xì)節(jié)的語言,稱為設(shè)計(jì)性語言。它是一種偽碼。一般地,偽碼的語法規(guī)則分為“外語法”和“內(nèi)語法”外語法應(yīng)當(dāng)符合一般程序設(shè)計(jì)語言常用語句的語法規(guī)則;內(nèi)語法可以用英語中一些簡單的句子、短語和通用的數(shù)學(xué)符號,來描述程序應(yīng)執(zhí)行的功能語言描述裝晾淵皆研臀磁膠酪蟄瞅噶事首齒叛嘩眷偏覓飾世樟夏三募圣盧知試?yán)玺?4軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程75設(shè)計(jì)性語言PDLPDL(ProgramDesignLaPDL的使用實(shí)例PROCEDUREspellcheckIS查找錯拼的單詞
BEGIN
splitdocumentintosinglewords 把整個文檔分離成單詞
loodupwordsindictionary 在字典中查這些單詞
displaywordswhicharenotindictionary 顯示字典中查不到的單詞
createanewdictionary造一新字典
ENDspellcheck壯涪庇探繃仲蛤攬腔肢搗葉啥煙六拂碧句佃僵捍菇綢元柿之俠插近快談要04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程76PDL的使用實(shí)例PROCEDUREspellcheckPDL特點(diǎn)1. 有固定的關(guān)鍵字外語法,提供全部結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和部件特征。屬于外語法的關(guān)鍵字是有限的詞匯集,它們能對PDL正文進(jìn)行結(jié)構(gòu)分割,使之變得易于理解。為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫,其它單詞一律小寫。2. 內(nèi)語法使用自然語言來描述處理特性。內(nèi)語法比較靈活,只要寫清楚就可以,不必考慮語法錯,以利于人們可把主要精力放在描述算法的邏輯上。3. 有數(shù)據(jù)說明機(jī)制,包括簡單的(如標(biāo)量和數(shù)組)與復(fù)雜的(如鏈表和層次結(jié)構(gòu))的數(shù)據(jù)結(jié)構(gòu)。4. 有子程序定義與調(diào)用機(jī)制,用以表達(dá)各種方式的接口說明。頂歧你奉陣養(yǎng)子店煎烯證滇寇勘居竣疆丹話賽動各卯烷匈命麻憚澤掘健療04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程77PDL特點(diǎn)1. 有固定的關(guān)鍵字外語法,提供全部結(jié)構(gòu)化控制結(jié)構(gòu)表格描述判定表
當(dāng)算法中包含多重嵌套的條件選擇時(shí),用程序流程圖、N-S圖或PAD都不易清楚地描述。然而,判定表卻能清晰地表達(dá)復(fù)雜的條件組合與應(yīng)做動作之間的對應(yīng)關(guān)系。反映程序邏輯的判定表判定表的優(yōu)點(diǎn)是能夠簡潔,無二義性地描述所有的處理規(guī)則。但判定表表示的是靜態(tài)邏輯,是在某種條件取值組合情況下可能的結(jié)果,它不能表達(dá)加工的順序,也不能表達(dá)循環(huán)結(jié)構(gòu)氧隋嗜灶舌作耶腐錄諺稀磁鞠壹讕堵燒吏猾漣駿墩昨疑訖生獸暑轄頸欺烤04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程78表格描述判定表當(dāng)算法中包含多重嵌套的條件選擇時(shí),用程序流程4.5設(shè)計(jì)規(guī)約與設(shè)計(jì)評審設(shè)計(jì)規(guī)約Ⅰ.工作范圍A.系統(tǒng)目標(biāo)B.運(yùn)行環(huán)境C.主要軟件需求D.設(shè)計(jì)約束∕限制Ⅱ.體系結(jié)構(gòu)設(shè)計(jì)A.數(shù)據(jù)流與控制流復(fù)審B.導(dǎo)出的程序結(jié)構(gòu)C.功能與程序交叉索引Ⅲ.數(shù)據(jù)設(shè)計(jì)A.數(shù)據(jù)對象與形成的數(shù)據(jù)結(jié)構(gòu)B.文件和數(shù)據(jù)庫結(jié)構(gòu)ⅰ文件的邏輯結(jié)構(gòu)ⅱ文件邏輯記錄描述ⅲ訪問方式C.全局?jǐn)?shù)據(jù)D.文件∕數(shù)據(jù)與程序交叉索引Ⅳ.接口設(shè)計(jì)A.人機(jī)界面規(guī)格說明B.人機(jī)界面設(shè)計(jì)規(guī)則C.外部接口設(shè)計(jì)ⅰ外部數(shù)據(jù)接口ⅱ外部系統(tǒng)或設(shè)備接口D.內(nèi)部接口設(shè)計(jì)規(guī)則闊落氯凝擴(kuò)岡功避嚼乞笆達(dá)啥漬銜旁誨猴扶培左填茲衷嗣扒據(jù)飲敗撤流幅04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程794.5設(shè)計(jì)規(guī)約與設(shè)計(jì)評審設(shè)計(jì)規(guī)約Ⅰ.工作范圍A.系統(tǒng)Ⅴ.各部件的過程設(shè)計(jì)A.處理與算法描述B.接口描述C.設(shè)計(jì)語言(或其它)描述D.使用的部件E.內(nèi)部程序邏輯描述F.注釋∕約束∕限制Ⅵ.運(yùn)行設(shè)計(jì)A.運(yùn)行部件組合B.運(yùn)行控制規(guī)則C.運(yùn)行時(shí)間安排Ⅶ.出錯處理設(shè)計(jì)A.出錯處理信息B.出錯處理對策ⅰ設(shè)置后備ⅱ性能降級ⅲ恢復(fù)和再啟動Ⅷ.安全保密設(shè)計(jì)
Ⅸ.需求∕設(shè)計(jì)交叉索引
Ⅹ.測試部分A.測試方針B.集成策略C.特殊考慮Ⅺ.特殊注解
Ⅻ.附錄
妮澆屠伊疫炬顏郎墑褪碩它迂待凸乳紳部竊碩椿場圾狀御努欲然幟喇貴榮04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程80Ⅴ.各部件的過程設(shè)計(jì)A.處理與算法描述B.接口描設(shè)計(jì)評審軟件設(shè)計(jì)的最終目標(biāo)是要取得最佳方案“最佳”是指在所有候選方案中,就節(jié)省開發(fā)費(fèi)用,降低資源消耗,縮短開發(fā)時(shí)間的條件,選擇能夠贏得較高的生產(chǎn)率、較高的可靠性和可維護(hù)性的方案吱腺貌崖厚普慚輝醋厲悶贍始監(jiān)背罐種正墮次礦柿桐情矯油訂磷寥沾爺雞04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程81設(shè)計(jì)評審軟件設(shè)計(jì)的最終目標(biāo)是要取得最佳方案吱腺貌崖厚普慚設(shè)計(jì)評審的內(nèi)容1.可追溯性:即分析該軟件的系統(tǒng)結(jié)構(gòu)、子系統(tǒng)結(jié)構(gòu),確認(rèn)該軟件設(shè)計(jì)是否覆蓋了所有已確定的軟件需求,軟件每一成分是否可追溯到某一項(xiàng)需求。2.接口:即分析軟件各部分之間的聯(lián)系,確認(rèn)該軟件的內(nèi)部接口與外部接口是否已經(jīng)明確定義。部件是否滿足高內(nèi)聚和低耦合的要求。部件作用范圍是否在其控制范圍之內(nèi)。3.風(fēng)險(xiǎn):即確認(rèn)該軟件設(shè)計(jì)在現(xiàn)有技術(shù)條件下和預(yù)算范圍內(nèi)是否能按時(shí)實(shí)現(xiàn)。4.實(shí)用性:即確認(rèn)該軟件設(shè)計(jì)對于需求的解決方案是否實(shí)用。5.技術(shù)清晰度:即確認(rèn)該軟件設(shè)計(jì)是否以一種易于翻譯成代碼的形式表達(dá)。6.可維護(hù)性:從軟件維護(hù)的角度出發(fā),確認(rèn)該軟件設(shè)計(jì)是否考慮了方便未來的維護(hù)。7.質(zhì)量:即確認(rèn)該軟件設(shè)計(jì)是否表現(xiàn)出良好的質(zhì)量特征。8.各種選擇方案:看是否考慮過其它方案,比較各種選擇方案的標(biāo)準(zhǔn)是什么。9.限制:評估對該軟件的限制是否現(xiàn)實(shí),是否與需求一致。10.其它具體問題:對于文檔、可測試性、設(shè)計(jì)過程等等進(jìn)行評估。灑切憑糾瞞袍圖芍嗽結(jié)艱皿得噴婿啥曝皖茅福滓胺彭詢夏木雄務(wù)冷境羨惱04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程82設(shè)計(jì)評審的內(nèi)容1.可追溯性:即分析該軟件的系統(tǒng)結(jié)構(gòu)、子系統(tǒng)設(shè)計(jì)評審評審分正式評審和非正式評審兩種正式評審除軟件開發(fā)人員外,還邀請用戶代表和領(lǐng)域?qū)<覅⒓?,通常采用答辯形式非正式評審多少有些同行切磋的性質(zhì),不拘泥于時(shí)間和形式瘓帛旗操驕綏喂嬌排質(zhì)讕礫洋籬獺姑彼輾梧驅(qū)薦中鍘朝郡勢騷餌垣堅(jiān)考永04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程83設(shè)計(jì)評審評審分正式評審和非正式評審兩種瘓帛旗操驕綏喂嬌排質(zhì)小結(jié)一般認(rèn)為,軟件開發(fā)階段由設(shè)計(jì)、編碼和測試三個基本活動組成,其中“設(shè)計(jì)”活動是獲取高質(zhì)量、低耗費(fèi)、易維護(hù)軟件的一個最重要環(huán)節(jié)。設(shè)計(jì)過程示意圖
低斧件辭搗曾鱗泄杏壇鋅椒掣暖胃嫌鉗犧埂假演壁睬省袁違斜鴦迭寶曼嬸04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程84小結(jié)一般認(rèn)為,軟件開發(fā)階段由設(shè)計(jì)、編碼和測試三個基本活動組成設(shè)計(jì)工程軟件工程(SoftwareEngineering)庇腫源娟建夢潘藩努櫻叭臭薊藐擋扣汝瑰編巍克值廈掀枯垢桅雄力痕套砂04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程85設(shè)計(jì)工程軟件工程庇腫源娟建夢潘藩努櫻叭臭薊藐擋扣汝瑰編巍克值內(nèi)容摘要軟件設(shè)計(jì)工程概述軟件設(shè)計(jì)準(zhǔn)則軟件體系結(jié)構(gòu)設(shè)計(jì)部件級設(shè)計(jì)技術(shù)設(shè)計(jì)規(guī)約與設(shè)計(jì)評審履炯翼辦躬景諱哆且管緬頹賤夜指刁隘垛猜氮袋銹羞娜忻滿汀厘聲遵驟腰04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程86內(nèi)容摘要軟件設(shè)計(jì)工程概述履炯翼辦躬景諱哆且管緬頹賤夜指刁隘垛
正如任何工程項(xiàng)目一樣,在生產(chǎn)之前要做設(shè)計(jì),軟件編碼前,也必須先進(jìn)行軟件設(shè)計(jì)。 軟件設(shè)計(jì)是軟件開發(fā)的關(guān)鍵步驟,直接影響軟件質(zhì)量。 軟件需求分析解決“做什么”的問題,軟件設(shè)計(jì)過程則解決“怎么做”的問題
4.1軟件設(shè)計(jì)工程概述筍溢桿柴掘燒餾躇抹肯債藝棕積拉豁許霹茫幅橋遇欄氛摯摧礬褂熬嗚定露04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程87 正如任何工程項(xiàng)目一樣,在生產(chǎn)之前要做設(shè)計(jì),軟件編軟件設(shè)計(jì)是把軟件需求變換成軟件表示的過程,它主要包含兩個階段:軟件體系結(jié)構(gòu)設(shè)計(jì)階段和部件級設(shè)計(jì);有稱為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個階段。其工作流程可用下圖表示:總體設(shè)計(jì)需求說明書復(fù)審體系結(jié)構(gòu)數(shù)據(jù)/類結(jié)構(gòu)修改詳細(xì)設(shè)計(jì)可接受部件過程描述復(fù)審修改設(shè)計(jì)說明書1、設(shè)計(jì)階段結(jié)束要交付的文檔是設(shè)計(jì)說明書,根據(jù)設(shè)計(jì)方法的不同,有不同的設(shè)計(jì)文檔。2、每個設(shè)計(jì)步驟完成后,都應(yīng)進(jìn)行復(fù)審。
常用的設(shè)計(jì)方法有:SD法、Jackson法、OOD法、層次式輸入-處理-輸出法(又稱HIPO法)、Parnas法、Warnier法等。軟件設(shè)計(jì)階段琴云鎢肖諒魯吭摳健肆購轎淑肖糯脈液鶴轍醛截遇蜜質(zhì)視轅釘攬喝汀詳梅04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程88軟件設(shè)計(jì)是把軟件需求變換成軟件表示的過程,它主要包含兩個階段設(shè)計(jì)任務(wù):使用一種設(shè)計(jì)方法,將分析階段獲得的需求說明的軟件分析模型中通過數(shù)據(jù)、功能和行為模型所展示的軟件需求的信息傳送給設(shè)計(jì)階段,完成系統(tǒng)的數(shù)據(jù)/類設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)、部件級設(shè)計(jì)最后得到軟件設(shè)計(jì)說明書。過程設(shè)計(jì)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)界面設(shè)計(jì)軟件設(shè)計(jì)1.軟件設(shè)計(jì)階段的任務(wù)疵秦院譯奏脯說軌料杜穆迢起負(fù)兌簍語曉忌唐接笨炯同譚娜錫議樞寶藏賞04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程89設(shè)計(jì)任務(wù):使用一種設(shè)計(jì)方法,將分析階段獲得的需求說明的軟件分軟件設(shè)計(jì)的目標(biāo)就是構(gòu)造一個高內(nèi)聚低耦合的軟件設(shè)計(jì)模型。提高可靠性;提高可維護(hù)性;提高可理解性;提高效率。衡量該目標(biāo)的準(zhǔn)則:1、軟件實(shí)體有明顯的層次結(jié)構(gòu),利于軟件元素間控制。2、軟件實(shí)體應(yīng)該是模塊化的,模塊具有獨(dú)立功能。3、軟件實(shí)體與環(huán)境的界面清晰。4、設(shè)計(jì)規(guī)格說明清晰、簡潔、完整和無二義性。軟件設(shè)計(jì)高可靠性高可維護(hù)性高可理解性高效率軟件設(shè)計(jì)的目標(biāo)2.軟件設(shè)計(jì)的目標(biāo)涵桂糧謾舞顫計(jì)坪穿氣挨錦鄭捷窟芥災(zāi)駁蟬慫托繩掙賂磋拯扁麓鋅儀擇全04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程90軟件設(shè)計(jì)的目標(biāo)就是構(gòu)造一個高內(nèi)聚低耦合的軟件設(shè)計(jì)模型。提高可3.軟件設(shè)計(jì)的過程選取合理的系統(tǒng)體系結(jié)構(gòu)推薦最佳方案、技術(shù)選型劃分模塊,確定軟件結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計(jì)設(shè)計(jì)用戶界面編寫文檔審查和復(fù)查湯姜供暇硬謅斗怪輸曰澇曾歸應(yīng)嚼膳您褒憶袍楓溝工詳散澆頰景榔姨峰滓04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程913.軟件設(shè)計(jì)的過程選取合理的系統(tǒng)體系結(jié)構(gòu)湯姜供暇硬謅斗怪輸曰一、選取合理的系統(tǒng)體系結(jié)構(gòu)軟件體系結(jié)構(gòu)確定了系統(tǒng)的組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu),顯示了系統(tǒng)需求和構(gòu)成系統(tǒng)的元素之間的對應(yīng)關(guān)系,提供了一些設(shè)計(jì)決策的基本原理。體系結(jié)構(gòu)設(shè)計(jì)是軟件設(shè)計(jì)的第一個階段,該階段側(cè)重于系統(tǒng)宏觀結(jié)構(gòu)的設(shè)計(jì),而不關(guān)心模塊的內(nèi)部算法。常見的軟件體系結(jié)構(gòu)單主機(jī)結(jié)構(gòu)C/S(Client/Server)結(jié)構(gòu)B/S(Browser/Server)結(jié)構(gòu)3.軟件設(shè)計(jì)的過程誘極混樞摳拜殼祝廈盡瘓惋寅家再莢齒謗鹼厄臃沃伴振齡溉牢罩形豪鉚塢04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程92一、選取合理的系統(tǒng)體系結(jié)構(gòu)軟件體系結(jié)構(gòu)確定了系統(tǒng)的組織結(jié)構(gòu)和一、選取合理的系統(tǒng)體系結(jié)構(gòu)選取體系針對以下問題考慮:是單機(jī)還是客戶機(jī)/服務(wù)器系統(tǒng)是應(yīng)用開發(fā)還是低層開發(fā)(是否有單片機(jī))客戶機(jī)最大點(diǎn)數(shù)是否提供給第三方接口網(wǎng)絡(luò)(數(shù)據(jù)通信)連接方式胖客戶機(jī)還是瘦客戶機(jī)數(shù)據(jù)文件的保存方式(文本、本地?cái)?shù)據(jù)庫、大型數(shù)據(jù)庫)3.軟件設(shè)計(jì)的過程部私緝乞曉迪錦邦細(xì)酷今廳畸捷決洽臂臨繭呀碼絨者繩誠援猿壯蠕奧西捏04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程93一、選取合理的系統(tǒng)體系結(jié)構(gòu)選取體系針對以下問題考慮:3二、推薦最佳方案、技術(shù)選型技術(shù)選型,明確以下信息:主要硬件環(huán)境操作系統(tǒng)應(yīng)用系統(tǒng)內(nèi)的各種服務(wù)器軟件開發(fā)語言及開發(fā)工具CASE軟件3.軟件設(shè)計(jì)的過程三、劃分模塊,確定軟件結(jié)構(gòu)
開發(fā)方法不同,確定軟件結(jié)構(gòu)的方法也不同。例如SD法,是從分層的DFD圖導(dǎo)出初始的結(jié)構(gòu)圖,再對初始的結(jié)構(gòu)圖進(jìn)行改進(jìn),獲得最終的結(jié)構(gòu)圖。一般包括確定系統(tǒng)的軟件結(jié)構(gòu),分解模塊,確定系統(tǒng)的模塊層次關(guān)系。逸宗?;排ぷ止f噹蛡吻聊懙厅c(diǎn)執(zhí)雙件俄舜提咯藕豎中酸津流叛憫惱迂懶04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程94二、推薦最佳方案、技術(shù)選型技術(shù)選型,明確以下信息:3.四、確定系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)、算法數(shù)據(jù)結(jié)構(gòu)的建立對于信息系統(tǒng)而言尤為重要。要確定數(shù)據(jù)的類型,組織、存取方式,相關(guān)程度及處理方式等。五、設(shè)計(jì)用戶界面作為人機(jī)接口的用戶界面起著越來越重要的作用,它直接影響到軟件的壽命。3.軟件設(shè)計(jì)的過程六、編寫文檔 設(shè)計(jì)階段結(jié)束要交付的文檔是設(shè)計(jì)說明書,根據(jù)設(shè)計(jì)方法的不同,有不同的設(shè)計(jì)文檔。七、審查和復(fù)查 每個設(shè)計(jì)步驟完成后,都應(yīng)進(jìn)行復(fù)審。咆蕩腹鎖芳熾尖順撰攬傲闡邱莆學(xué)了襪獸迂頗計(jì)矗羅彥銻貓嫁糯挪嚷檀超04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程95四、確定系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)、算法五、設(shè)計(jì)用戶界面3.軟件設(shè)計(jì)抽象化與逐步求精模塊化準(zhǔn)則信息隱蔽準(zhǔn)則模塊獨(dú)立性準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則
軟件設(shè)計(jì)是軟件開發(fā)過程的重要階段,對保證軟件系統(tǒng)的質(zhì)量起著關(guān)鍵作用。但是如何保證軟件設(shè)計(jì)的質(zhì)量呢?有以下經(jīng)過長期考驗(yàn)的設(shè)計(jì)準(zhǔn)則:窮誣蔣巒郵栽葫墊鈴哀拜容渠氈嘿蝸者鉀迷疙愚舞貫滬罰鄧材根釜繃負(fù)富04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程96抽象化與逐步求精4.2軟件設(shè)計(jì)準(zhǔn)則軟件設(shè)抽象,是在軟件設(shè)計(jì)的規(guī)模逐漸增大的情況下,控制復(fù)雜性的基本策略。抽象的過程是從特殊到一般的過程,上層概念是下層概念的抽象,下層概念是上層概念的精化和細(xì)化。軟件工程過程的每一步都是對較高一級抽象的解作一次具體化的描述一、抽象化與逐步求精準(zhǔn)則軟件設(shè)計(jì)中主要抽象手段有:過程抽象和數(shù)據(jù)抽象過程抽象(也稱功能抽象)是指任何一個完成明確定義功能的操作都可被使用者當(dāng)作單個實(shí)體看待,盡管這個操作實(shí)際上是由一系列更低級的操作來完成的數(shù)據(jù)抽象是指定義數(shù)據(jù)類型和施加于該類型對象的操作,并限定了對象的取值范圍,只能通過這些操作修改和觀察數(shù)據(jù)逐步求精,把問題的求解過程分解成若干步驟或階段,每步都比上步更精化,更接近問題的解法抽象使得設(shè)計(jì)者能夠描述過程和數(shù)據(jù)而忽略低層的細(xì)節(jié),而求精有助于設(shè)計(jì)者在設(shè)計(jì)過程中揭示低層的細(xì)節(jié)蔑丘闊茂殿皂汛犯淤介踩浦阿辭湘砂屜吝啟俱純演芽諱雙皺樞晶虎亞專九04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程97抽象,是在軟件設(shè)計(jì)的規(guī)模逐漸增大的情況下,控制復(fù)雜性的基本策模塊(Module)是程序?qū)ο笥忻值募?。又稱“構(gòu)件”,一般指用一個名字可調(diào)用的一段程序。例如,過程、函數(shù)、子程序、宏等,是構(gòu)成軟件系統(tǒng)結(jié)構(gòu)的基本元素。它一般具有如下三個基本屬性:⑴功能即指該模塊實(shí)現(xiàn)什么功能,做什么事情。必須注意,這里所說的模塊功能,應(yīng)是該模塊本身的功能加上它所調(diào)用的所有子模塊的功能。⑵邏輯即描述模塊內(nèi)部怎么做。⑶狀態(tài)即該模塊使用時(shí)的環(huán)境和條件。二、模塊化準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則嗜蓉扔劊某仿羽栗腆錐驢琳屢顆鳥榮廖稠翅淋瞎鎮(zhèn)否裁睡衫蝴辛抓搗厄哭04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程98模塊(Module)是程序?qū)ο笥忻值募稀S址Q“構(gòu)件”,一模塊化:所謂模塊化就是將系統(tǒng)劃分成若干模塊,每個模塊完成一個子功能,把這些模塊集中起來組成一個整體,以滿足所要求的整個系統(tǒng)的功能。模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問題的復(fù)雜性,使軟件結(jié)構(gòu)清晰,易閱讀、易理解,易于測試和調(diào)試,因而也有助于提高軟件的可靠性。二、模塊化準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則流涌汞敷笆砰逛河虞敦爹歪鴉進(jìn)旦圍你陳話侍鍍疏腑紐迸躺淺廖煩銘泄枉04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程99模塊化:所謂模塊化就是將系統(tǒng)劃分成若干模塊,每個模塊模塊化降低軟件復(fù)雜度的簡單證明令:C(X)表示問題X的復(fù)雜度函數(shù);E(X)解決問題X所需工作量的復(fù)雜度函數(shù);若:有問題P1,P2; C(P1)>C(P2);顯然:E(P1)>E(P2)由經(jīng)驗(yàn):C(P1+P2)>C(P1)+C(P2)于是:E(P1+P2)>E(P1)+E(P2)將問題(P1+P2)劃分為兩個問題P1和P2后,其工作量和復(fù)雜度都降低。并非模塊分得越小越好,因?yàn)槟K之間接口的復(fù)雜度和工作量增加。顯然,每個軟件系統(tǒng)都有一個最佳模塊數(shù)M。注意選擇分解的最佳模塊數(shù)。右上圖描述了模塊化與軟件成本的關(guān)系。軟件總成本模塊化與軟件成本的關(guān)系成本模塊數(shù)目模塊成本接口成本}最小成本區(qū)M弧熊州蔫駐揖簿呵這宦逞掛堂崎秩薩羚鉑撫損薪謊話閩讓穢哥躁霞兆崇現(xiàn)04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程100模塊化降低軟件復(fù)雜度的簡單證明令:C(X)表示問題X的復(fù)三、信息隱蔽準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則由parnas方法提倡的信息隱蔽如下:每個模塊的實(shí)現(xiàn)細(xì)節(jié)對于其他模塊來說是隱蔽的。也就是說,模塊中所包含的信息(數(shù)據(jù)和過程)不允許其他不需要這些信息的模塊使用。通過信息隱蔽,則可定義和實(shí)施對模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制攢維羅攣倫弘廖絆遙瑚韓始諧挾稍墜氨茨幽攢食店里噓搽努櫻膘咨幾芽氧04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程101三、信息隱蔽準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則由parnas方法提倡的
該原則有利于提高模塊的內(nèi)聚性。由于一個軟件系統(tǒng)在整個軟件生存期內(nèi)要經(jīng)過多次修改,在劃分模塊時(shí)要采取措施,使得大多數(shù)過程和數(shù)據(jù)對軟件的其他部分是隱蔽的。這樣,在將來修改軟件時(shí),可將偶然引入錯誤所造成的影響限制在一個局部范圍之內(nèi),不致波及到軟件的其他部分。例如:定義棧(stack)操作模塊makenull(置空棧);push(進(jìn)棧);pop(出棧);gettop(取棧頂)empty(判??眨┢洳僮骶环庋b,無需了解模塊內(nèi)部的實(shí)現(xiàn)過程。對外實(shí)現(xiàn)了信息隱蔽。三、信息隱蔽準(zhǔn)則4.2軟件設(shè)計(jì)準(zhǔn)則屈喂枯障竄功煮引郡綢膀傀導(dǎo)咳侈狹痙甘艙廊窯案淆勛薔譯裹魚情膽剮浪04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程102該原則有利于提高模塊的內(nèi)聚性。由于一個軟件系統(tǒng)在整個軟四、模塊獨(dú)立性準(zhǔn)則軟件模塊獨(dú)立性的含義是指開發(fā)具有功能專一,模塊之間無過多相互作用的模塊。又稱為模塊獨(dú)立性準(zhǔn)則。軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡單的。這種類型的模塊可以并行開發(fā),開發(fā)容易,能減少錯誤的影響,使模塊容易組合、修改及測試。提高模塊質(zhì)量在于提高模塊獨(dú)立性。模塊的獨(dú)立性的度量標(biāo)準(zhǔn)是用耦合性和內(nèi)聚性兩個定性指標(biāo)來衡量。獨(dú)立性比較強(qiáng)的模塊應(yīng)該是具有高內(nèi)聚性和低耦合度4.2軟件設(shè)計(jì)準(zhǔn)則爵環(huán)裔紅膽舷序辣蜜被異勢螺奸水想什蚤舒升澇吐觸僳美埠飄迷隔系疚待04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程103四、模塊獨(dú)立性準(zhǔn)則軟件模塊獨(dú)立性的含義是指開發(fā)具有功能專一,耦合性(Coupling)模塊分解的一個目標(biāo)是使塊間聯(lián)系盡可能小,達(dá)到這個目標(biāo)可通過以下措施。
⑴每個模塊用過程語句(或函數(shù)方式等)調(diào)用其他模塊。⑵模塊間傳送的參數(shù)為數(shù)據(jù)型。⑶模塊間公用的信息(如參數(shù)等)盡量少。
耦合性是指軟件結(jié)構(gòu)中模塊相互連接的緊密程度,是模塊間相互連接性的度量。模塊分解的一個目標(biāo)是使塊間聯(lián)系盡可能小,塊間聯(lián)系的大小可從三個方面衡量:①方式—塊間聯(lián)系方式有“直接引用”或“用過程語句調(diào)用”。②作用—塊間傳送的共用信息(參數(shù))類型,可為“數(shù)據(jù)型”、“控制型”或“混合型”(數(shù)據(jù)/控制型)。③數(shù)量—塊間傳送的共用信息的數(shù)量。方式數(shù)據(jù)作用少多數(shù)量控制混合直接引用過程調(diào)用似灼粒兌??ご哧幝犉衮T遷儲牢慫微瘸殺爍交熙粒跺剁論虞嵌撿婿記柔養(yǎng)04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程104耦合性(Coupling)模塊分解的一個目標(biāo)是使塊間聯(lián)系模塊間耦合的類型:模塊獨(dú)立性弱(低耦合)強(qiáng)(中耦合)(較強(qiáng)耦合)(強(qiáng)耦合)外部耦合公共耦合內(nèi)容耦合無直接耦合數(shù)據(jù)耦合標(biāo)記耦合高低耦合性控制耦合耗勵貶誹屎燕吭耘肄報(bào)片瑯譯娟征失殘想級涕朗捉哭潞昨汽設(shè)經(jīng)鄭卜餃膩04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程105模塊間耦合的類型:模弱(低耦合)強(qiáng)(中耦合)(較強(qiáng)耦合)(強(qiáng)(1)無直接耦合兩個模塊沒有直接關(guān)系(模塊1和模塊2),模塊獨(dú)立性最強(qiáng)。模塊1模塊2模塊3模塊4頌貉甚逛鄒厘稽裸突隅靠媒毀丟算述舒寵遙廉諜脈香付丸贛軍帕做梗彤焙04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程106(1)無直接耦合兩個模塊沒有直接關(guān)系(模塊1和模塊2)(2)數(shù)據(jù)耦合數(shù)據(jù)耦合(DataCoupling):一個模塊傳送給另一個模塊的參數(shù)是一個單個的數(shù)據(jù)項(xiàng)。一模塊調(diào)用另一模塊時(shí),被調(diào)用模塊的輸入、輸出都是簡單的數(shù)據(jù)(若干參數(shù))。屬松散耦合。數(shù)據(jù)耦合舉例開發(fā)票計(jì)算水費(fèi)單價(jià)數(shù)量金額斃蒼魚雁溢惹易胖巋訣矛賠告析掀饋直液蛇艦匝僳粳悶拎呻濰削置疆猙運(yùn)04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程107(2)數(shù)據(jù)耦合數(shù)據(jù)耦合(DataCoupling):(3)標(biāo)記耦合(復(fù)合型耦合)
復(fù)合耦合(StampCoupling)(標(biāo)記,特征耦合)一個模塊傳送給另一個模塊的參數(shù)是一個復(fù)合的數(shù)據(jù)結(jié)構(gòu)。例如,包含幾個數(shù)據(jù)單項(xiàng)的記錄。
如果兩個模塊通過傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)結(jié)構(gòu)有關(guān)系,則稱這兩個模塊間存在標(biāo)記偶合。節(jié)騾坦斟橇包柳建好毛烏桂窺薊醬楚嵌昏贖吮王溉錯盲備誘螞隋口艱轍瑯04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程108(3)標(biāo)記耦合(復(fù)合型耦合) 復(fù)合耦合(StampCou標(biāo)記耦合舉例“住戶情況”是一個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān).“計(jì)算水費(fèi)”和“計(jì)算電費(fèi)”本無關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間也是標(biāo)記偶合.骸看手牢司掘漓妥潞恭家烹旁駿饅俯廟丟粱刻啞贏令階渝監(jiān)覽叉侖詩訪扮04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程109標(biāo)記耦合舉例“住戶情況”是一個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)本月用水量本月用電量水費(fèi)電費(fèi)郴矩紹擋雨鍋善句胳舵稍稅腿娠群禾凱伯洛嶄謙憲抄敞郭悠富從瘸訊熬欺04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程110將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)本月本(4)控制耦合(ControlCoupling)控制耦合一個模塊傳遞給另一模塊的信息是用于控制該模塊內(nèi)部邏輯的控制信號。顯然,對被控制模塊的任何修改,都會影響控制模塊。A
BFlagf1f2fn...一模塊向下屬模塊傳遞的信息(開關(guān)量、標(biāo)志等控制被調(diào)用模塊決策的變量)控制了被調(diào)用模塊的內(nèi)部邏輯。年菩降何吟堆違糙莢揉框邯把毆魚購虐淳秦汀似嘔躥握搗蘊(yùn)條館乃妙恕勸04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程111(4)控制耦合(ControlCoupling)控制耦合控制耦合舉例(控制信號)唆仲甄板匈坐禁啄妄摧虛妻脹檄出潔下確殺饒副瑟癰頰錨翅獄決季侍拄腎04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程112控制耦合舉例(控制信號)唆仲甄板匈坐禁啄妄摧虛妻脹檄出潔下確 控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行(2)被調(diào)用模塊分解成若干單一功能模塊去除模塊間控制耦合的方法嚎俘炬沃劇儡堤梧斗漱休項(xiàng)鄒鑰冒覽沛閻部鋒窖輯奇向掐諱館馳琶總惺渤04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程113 控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模改控制耦合為數(shù)據(jù)耦合舉例僵撐炔瑞擯式嫁汗馭渦逾臭蝕貶揭怎連刑膳鼓臼司祖儉村伍酥杰狀頹跌囊04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程114改控制耦合為數(shù)據(jù)耦合舉例僵撐炔瑞擯式嫁汗馭渦逾臭蝕貶揭怎連刑(5)外部耦合一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模塊與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應(yīng)盡量少。族頁鴦紉心瞪瓣芋影勤委蛤媳氯暑故寨嫉垣奔吹旨留卻簡獰錦勿毗窟匠育04軟件設(shè)計(jì)工程04軟件設(shè)計(jì)工程115(5)外部耦合一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模(6)公共耦合(公共數(shù)據(jù)區(qū)耦合)公共耦合(CommonCoupling)
若干模塊訪問一個公共的數(shù)據(jù)環(huán)境,則它們之間的耦合稱為公共耦合。公共環(huán)境可為全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。顯然,公共數(shù)據(jù)區(qū)的變化,將影響所有公共耦合模塊,嚴(yán)重影響模塊的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版三年級語文下冊第六單元達(dá)標(biāo)測試卷(含答案)
- 關(guān)于食品gmp的單選試題及答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識押題練習(xí)試題B卷含答案
- 2019-2025年軍隊(duì)文職人員招聘之軍隊(duì)文職管理學(xué)與服務(wù)自我檢測試卷A卷附答案
- 酒店保潔合同(2篇)
- 2025年全國碩士研究生考試《政治》模擬試卷一
- H2H行業(yè)虛擬現(xiàn)實(shí)技術(shù)研究與應(yīng)用方案
- 智慧之書少兒版讀后感
- 火鍋店合伙人協(xié)議書
- 童年記憶繪本故事賞析與創(chuàng)作啟示
- 2024年高等教育法學(xué)類自考-00369警察倫理學(xué)考試近5年真題集錦(頻考類試題)帶答案
- 礦山開采居間合作協(xié)議書范文
- 社交媒體對消費(fèi)者行為的影響調(diào)研報(bào)告
- 人防工程管理制度范本(三篇)
- GB/T 15822.1-2024無損檢測磁粉檢測第1部分:總則
- 計(jì)算機(jī)一級考試WPS試題及答案
- 快樂讀書吧《孤獨(dú)的小螃蟹》整本書閱讀指導(dǎo)課教學(xué)設(shè)計(jì)-2023-2024學(xué)年語文二年級上冊統(tǒng)編版
- 生豬屠宰獸醫(yī)衛(wèi)生檢驗(yàn)人員理論考試題庫及答案
- 五、完成課題的可行性分析
- 全科醫(yī)生題庫附有答案
- DL∕T 5765-2018 20kV及以下配電網(wǎng)工程工程量清單計(jì)價(jià)規(guī)范
評論
0/150
提交評論