freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

軟件工程軟件總體設(shè)計(jì)-文庫(kù)吧

2024-10-25 08:41 本頁(yè)面


【正文】 會(huì)帶來(lái)極大好處。因?yàn)榻^大多數(shù)數(shù)據(jù)和過(guò)程對(duì)于軟件的其他部分而言是隱蔽的,也就是看不見的,在修改期間由于疏忽而引入的錯(cuò)誤傳播到軟件的其他部分的機(jī)會(huì)就很少。 模塊獨(dú)立性 模塊獨(dú)立性是 指軟件系統(tǒng)中的每個(gè)模塊只具有軟件要求的具體子功能,而與軟件系統(tǒng)中其他的模塊接口是簡(jiǎn)單的。例如,如果一個(gè)模塊只具有單一的功能,并且與其他的模塊沒有太多的聯(lián)系,那末稱此模塊具有模塊獨(dú)立性。 模塊獨(dú)立性的概念體現(xiàn)了模塊化、抽象、信息隱蔽和局部化概念。開發(fā)具有獨(dú)立功能而且和其他模塊之間沒有過(guò)多的相互作用的模塊,就可以做到模塊獨(dú)立。換句話說(shuō),希望這樣設(shè)計(jì)軟件結(jié)構(gòu),使得每個(gè)模塊完成一個(gè)相對(duì)獨(dú)立的特定子功能,并且與其他模塊之間的關(guān)系很簡(jiǎn)單。 模塊的獨(dú)立程度可以由內(nèi)聚和耦合兩個(gè)標(biāo)準(zhǔn)來(lái)度量。耦合表示不同模塊間互相連接的緊 密程度;內(nèi)聚表示一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。 耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)各個(gè)模塊之間互連程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,調(diào)用模塊的方式,以及通過(guò)接口的信息。 在軟件設(shè)計(jì)中應(yīng)該盡可能采用松散耦合。在松散耦合的系統(tǒng)中測(cè)試或維護(hù)任何一個(gè)模塊,而不影響系統(tǒng)的其他模塊。由于模塊間聯(lián)系簡(jiǎn)單,在一處發(fā)生錯(cuò)誤就很小有可能性傳播到整個(gè)系統(tǒng)。因此,模塊間的耦合程度影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性。 具體區(qū)分模塊間耦合程度的標(biāo)準(zhǔn)如下。 ( 1) 非直接耦合 如果兩個(gè)模塊 中的每一個(gè)都能獨(dú)立地工作而不需要另一個(gè)模塊的存在,那么它們彼此完全獨(dú)立,這表明兩個(gè)模塊間無(wú)任何連接,耦合程度最低。但是,在一個(gè)軟件系統(tǒng)中不可能所有模塊之間都沒有任何連接,因?yàn)槟K之間的聯(lián)系是通過(guò)模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的。 ( 2)數(shù)據(jù)耦合 如果兩個(gè)模塊彼此間通過(guò)參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù),那么這種耦合稱為數(shù)據(jù)耦合。數(shù)據(jù)耦合是低耦合。系統(tǒng)中至少必須存在這種耦合,因?yàn)橹挥挟?dāng)某些模塊的輸出數(shù)據(jù)作為另一些模塊的輸入數(shù)據(jù)時(shí),系統(tǒng)才能完成有價(jià)值的功能。一般說(shuō)來(lái),一個(gè)系統(tǒng)內(nèi)可以只含有數(shù)據(jù)耦合。 ( 3) 控制耦合 如果在模塊間傳遞的信息中含有控制信息(有時(shí)控制信息以數(shù)據(jù)的形式出現(xiàn)),則這種耦合稱為控制耦合,如圖 43 所示??刂岂詈鲜侵械瘸潭鹊鸟?9 合,它增加了系統(tǒng)的復(fù)雜程度。在把模塊分解之后通常可以用數(shù)據(jù)耦合代替控制耦合。 圖 43 控制耦合 ( 4)公共環(huán)境耦合 當(dāng)兩個(gè)或多個(gè)模塊通過(guò)一個(gè)公共數(shù) 據(jù)環(huán)境相互作用時(shí),這種耦合稱為公共環(huán)境耦合。這里的公共環(huán)境可以是全程變量、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)、任何存儲(chǔ)介質(zhì)上的文件、物理設(shè)備等等。 ① 公共環(huán)境耦合的復(fù)雜程度隨耦合的模塊個(gè)數(shù)而變化,當(dāng)耦合的模塊個(gè)數(shù)增加時(shí)復(fù)雜程度顯著增加。如果只有兩個(gè)模塊有公共環(huán)境,那么這種耦合有下述兩種可能,(參閱圖 44)。 ② 一個(gè)模塊往公共環(huán)境送數(shù)據(jù),另一個(gè)模塊從公共環(huán)境取數(shù)據(jù)。這是數(shù)據(jù)耦合的一種形式,是比較松散的耦合。 兩個(gè)模塊都既往公共環(huán)境送數(shù)據(jù)又從里面取數(shù)據(jù),這種耦合比較緊密,介于數(shù)據(jù)耦合和控制耦合之間。如 果兩個(gè)模塊共享的數(shù)據(jù)很多,通過(guò)參數(shù)傳遞可能很不方便,這時(shí)可以利用公共環(huán)境耦合。 圖 44 公共環(huán)境耦合 10 圖 45 內(nèi)容耦合 ( 5)內(nèi)容耦合 最高程度的耦合是內(nèi)容耦合。如果出現(xiàn)下列情況之一(參閱圖 45),兩個(gè)模塊間就發(fā)生了內(nèi)容耦合: ① 一個(gè)模塊訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù); ② 一個(gè)模塊不通過(guò)正常人口而轉(zhuǎn)到另一個(gè)模塊的內(nèi)部; ③ 兩個(gè)模塊有一部分程序代碼重疊(只可能出現(xiàn)在匯編程序中); ④ 一個(gè)模塊有多個(gè)人口(這表明一個(gè)模塊有幾種功能)。 應(yīng)該避免使用內(nèi)容耦合。事實(shí)上許多高級(jí)程序設(shè)計(jì)語(yǔ)言已經(jīng)設(shè)計(jì)成不允許在程序中出現(xiàn)任何形式的內(nèi)容耦合。 ( 6)標(biāo)記耦合 如果一組模塊通過(guò)參數(shù) 表傳遞記錄信息,也就是說(shuō),這組模塊共享了這個(gè)記錄,就是標(biāo)記耦合。在設(shè)計(jì)中避免標(biāo)記耦合。 ( 7)外部耦合 一組模塊都訪問(wèn)同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過(guò)參數(shù)表傳遞該變量的信息,則稱之為外部耦合。 模塊之間的耦合一般分為七種類型,如圖 46 所示??傊?,耦合是影響軟件復(fù)雜程度的一個(gè)重要因素。應(yīng)該采取的原則是:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。 圖 46 七種耦合類型的關(guān)系 11 圖 47 偶然內(nèi)聚 2.內(nèi)聚 內(nèi)聚表示一個(gè)模塊內(nèi)各個(gè)元素間結(jié)合的緊密程度,它是信息隱蔽和局部化概念的自然擴(kuò)展。簡(jiǎn)單地說(shuō),理想內(nèi)聚的模塊只做完成一個(gè)子功能。 設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚,通常中等程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)聚不要使用。 內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合。內(nèi)聚和耦合都是進(jìn)行模塊化設(shè)計(jì)的有力工具,但是實(shí)踐表明內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高模塊的內(nèi)聚程度上。 ( 1)偶然內(nèi)聚 如果一個(gè)模塊完成一組任務(wù),這些任務(wù)間的關(guān)系很松散,這就稱為偶然內(nèi)聚,參閱圖 47。例如在寫完某一個(gè)程序之后,發(fā)現(xiàn)一些語(yǔ)句在兩處或多處出現(xiàn),于是把這些語(yǔ)句作為一個(gè)模塊,這樣模塊為偶然內(nèi)聚的模塊。 ( 2)邏輯內(nèi)聚 如果一個(gè)模塊完成的功能在邏輯上屬于相同或相似的一類,則稱為邏輯內(nèi)聚。例如,一個(gè)模塊的功能是產(chǎn)生各種類型的全部輸出,參閱圖 48。 12 圖 48 邏輯內(nèi)聚 圖 49 通信內(nèi)聚模塊 ( 3)時(shí)間內(nèi)聚 如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行,就叫時(shí)間內(nèi)聚。例如,模塊完成各種初始化工作。 在偶然內(nèi)聚的模塊中.各種元素之間沒有實(shí)質(zhì)性聯(lián)系,很可能在一種應(yīng)用場(chǎng)合需要修改這個(gè)模塊,在另一種應(yīng)用場(chǎng)合又不允許這種修改,從而陷入困境。事實(shí)上,偶然內(nèi)聚的模塊出現(xiàn)修改錯(cuò)誤的概率比其他類型的模塊高得多。 13 在邏輯內(nèi)聚的模塊中,不同功能混在一起,合用部分程序代碼,即使局部功能的修改有時(shí)也會(huì)影響全 局。因此,這類模塊的修改也比較困難。 時(shí)間關(guān)系在一定程度上反映了程序的某些實(shí)質(zhì),所以時(shí)間內(nèi)聚比邏輯內(nèi)聚好一些。 ( 4)過(guò)程內(nèi)聚 如果一個(gè)模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,則稱為過(guò)程內(nèi)聚。使用程序流程圖作為工具設(shè)計(jì)軟件時(shí),常常通過(guò)研究流程圖確定模塊的劃分,這樣得到的往往是過(guò)程內(nèi)聚的模塊。 ( 5)通信內(nèi)聚 如果模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù)和(或)產(chǎn)生同一個(gè)輸出數(shù)據(jù),則稱為通信內(nèi)聚。圖 49 所示的是通信內(nèi)聚模塊的示意圖。 ( 6)信息內(nèi)聚 信息內(nèi)聚模塊能完成多種功能,各個(gè) 功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn),例如圖 410 所示的模塊有 4 個(gè)功能,即這個(gè)模塊將根據(jù)要求,確定該執(zhí)行哪一個(gè)功能。但這個(gè)模塊都基于同一數(shù)據(jù)結(jié)構(gòu),即符號(hào)表。 圖 410 信息內(nèi)聚 圖 411 內(nèi)聚的七種類型 ( 7)功能內(nèi)聚 14 如果模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能,則稱為功能內(nèi)聚。功能內(nèi)聚是最高程度的內(nèi)聚。 內(nèi)聚的七種類型的級(jí)別比較如圖 411 所示。 重要的是設(shè)計(jì)時(shí)力爭(zhēng)做到高內(nèi)聚,并且能夠辨認(rèn)出低內(nèi)聚的模塊,通過(guò)修改設(shè)計(jì)提高模塊的內(nèi)聚程度,并降低模塊間的耦合程度,從而獲得較高的模塊獨(dú)立性。 結(jié)構(gòu)設(shè)計(jì)原則 軟件總體設(shè)計(jì)包括模塊構(gòu) 成的程序結(jié)構(gòu)和輸入輸出數(shù)據(jù)結(jié)構(gòu)。其目標(biāo)是產(chǎn)生一個(gè)模塊化的程序結(jié)構(gòu),并明確模塊間的控制關(guān)系,以及定義界面、說(shuō)明程序的數(shù)據(jù),進(jìn)一步調(diào)整程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。軟件設(shè)計(jì)從需求分析開始,逐步分層的導(dǎo)出程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),如圖 412 所示。 圖 412 結(jié)構(gòu)變化 15 圖 413 對(duì)同一問(wèn)題的多種軟件結(jié)構(gòu) 同一問(wèn)題可有多個(gè)解,如圖 413 所示。提高模塊的內(nèi)聚程度降低模塊間的耦合程度是一個(gè)評(píng)價(jià)的標(biāo)準(zhǔn)。 改進(jìn)軟件設(shè)計(jì)、提高軟件質(zhì)量的原則如下。 1.模塊高獨(dú)立性 設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)該進(jìn)一步分解或合并模塊,力求降低耦合提高內(nèi)聚。例如,多個(gè)模塊公有的一個(gè)子功能可以獨(dú)立定義一個(gè)模塊,由這些模塊調(diào)用;有 時(shí)可以通過(guò)分解或合并模塊以減少控制信息的傳遞及對(duì)全程數(shù)據(jù)的引用,并降低接口的復(fù)雜程度。 2.模塊規(guī)模適中 . 一個(gè)模塊的規(guī)模不應(yīng)過(guò)大,最好能寫在一頁(yè)紙內(nèi)。從心理學(xué)角度研究得知,當(dāng)一個(gè)模塊包含的語(yǔ)句數(shù)超過(guò) 30 以后,模塊的可理解程度迅速下降。 ? 大的模塊往往是由于分解不充分,但是進(jìn)一步分解必須符合問(wèn)題結(jié)構(gòu),一般說(shuō)來(lái),分解后不應(yīng)該降低模塊獨(dú)立性。 ? 過(guò)小的模塊開銷大于有效操作,而且模塊數(shù)目過(guò)多將使系統(tǒng)接口復(fù)雜。因此過(guò)小的模塊有時(shí)不值得單獨(dú)存在,特別是只有一個(gè)模塊調(diào)用它時(shí),通??梢园阉喜⒌缴霞?jí)模塊 中去而不必單獨(dú)存在。 3.深度、寬度、扇出和扇入適當(dāng) ( 1)深度表示軟件結(jié)構(gòu)中控制的層數(shù),能夠粗略地標(biāo)志一個(gè)系統(tǒng)的大小和復(fù)雜程度(參閱圖 414)。它和程序長(zhǎng)度之間應(yīng)該有粗略的對(duì)應(yīng)關(guān)系,當(dāng)然這個(gè)對(duì)應(yīng)關(guān)系是在一定范圍內(nèi)變化的。如果層數(shù)過(guò)多,則應(yīng)該考慮是否有許多管理模塊過(guò)于簡(jiǎn)單,需要適當(dāng)合并。 ( 2)寬度是軟件結(jié)構(gòu)內(nèi)同一個(gè)層次上的模塊總數(shù)的最大值。一般說(shuō)來(lái),寬度越大系統(tǒng)越復(fù)雜。對(duì)寬度影響最大的因素是模塊的扇出。 16 圖 414 程序結(jié)構(gòu)的有關(guān)術(shù)語(yǔ) ( 3)扇出是一個(gè)模塊直接調(diào)用的模塊數(shù)目,扇出過(guò)大意味著模塊過(guò)分復(fù)雜,需要控制和協(xié)調(diào)過(guò)多的下級(jí)模塊;扇出過(guò)小也不好。經(jīng)驗(yàn)表明,一個(gè)設(shè)計(jì)得好的典型系統(tǒng)的平均扇出通常是 3 或 4。 ( 4)扇出太大一般是因?yàn)槿狈χ虚g層次,應(yīng)該適當(dāng)增加中間層次的控制模塊。扇出太小時(shí)可以把下級(jí)模塊進(jìn)一步分解成若干個(gè)子功能模塊,或者合并到它的上級(jí)模塊中去。當(dāng)然分解模塊或合并模塊必 須符合問(wèn)題結(jié)構(gòu),不能違背模塊獨(dú)立原理。 ( 5)一個(gè)模塊的扇入表明有多少個(gè)上級(jí)模塊直接調(diào)用它,扇入越大則共享該模塊的上級(jí)模塊數(shù)目越多,這是有好處的,但是,不能違背模塊獨(dú)立單純追求高扇入。 ( 6)觀察大量軟件系統(tǒng)后發(fā)現(xiàn),設(shè)計(jì)得優(yōu)秀的軟件結(jié)構(gòu)通常頂層扇出比較高,中層扇出較少,底層扇入到公共的實(shí)用模塊中去。 ? 模塊的作用域應(yīng)該在其控制域之內(nèi) 17 圖 415 模塊的作用域和控制域 模塊的作用域定義為受該模塊判定影響的所有模塊的集合。模塊的控制城是這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。例如,在圖 415中模塊 A 的控制域是 A、 B、 C、 D、 E、 F 等模塊的集合。 在一個(gè)設(shè)計(jì)得很好的軟件系統(tǒng)中,所有受判定影響的模塊應(yīng)該都從屬于做出判定的那個(gè)模塊,最好局限于做出判定的那個(gè)模塊本身及它的直屬下級(jí)模塊。例如,如果圖 415 中模塊 A 做出的判定只影響模塊 B,那么是符合這條規(guī)則的。但是,如 果模塊 A 做出的判定同時(shí)還 影響模塊 G 中的處理過(guò)程,這樣的結(jié)構(gòu)使得軟件難于理解。其次,為了使得 A 中的判定能影響 G 中的處理過(guò)程,通常需要在 A 中給一個(gè)標(biāo)記設(shè)置狀態(tài)以指示判定的結(jié)果,并且應(yīng)該把這個(gè)標(biāo)記傳遞給 A 和 G 的公共上級(jí)模塊 M,再由 M 把它傳給 G。這個(gè)標(biāo)記是控制信息而不是數(shù)據(jù),因此將使模塊間出現(xiàn)控制耦合。 可以通過(guò)修改軟件結(jié)構(gòu)能使作用域是控制域的子集,一個(gè)方法是把做判定的點(diǎn)往上移,例如,把判定從模塊 A 中移到模塊 M 中、另一個(gè)方法是把那些在作用域內(nèi)但不在控制域內(nèi)的模塊移到控制域內(nèi),例如,把模塊 G 移到模塊 A的下面, 成為它的直屬下級(jí)模塊。 5.模塊接口的低復(fù)雜度 模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的主要原因之一。應(yīng)該設(shè)計(jì)模塊接口使得信息傳遞簡(jiǎn)單并且和模塊的功能一致。 例如,一元二次方程的根的模塊 QUAD- ROOT( TBL, X),其中用數(shù)組 TBI。傳送方程的系數(shù),用數(shù)組 X 回送求得的根。這種傳遞信息的方法不利于對(duì)這個(gè)模塊的理解,不僅在維護(hù)期間容易引起混淆,在開發(fā)期間也可能發(fā)生錯(cuò)誤。下面這種接口可能是比較簡(jiǎn)單的。 QUAD_ ROOT( A, B, C, ROOTI, ROOT2)其中 A、 B、 C 是方程的系數(shù), ROOTI和 ROOTZ 是算 出的兩個(gè)根。 接口復(fù)雜或者不一致是緊耦合或低內(nèi)聚的原因所致,應(yīng)該重新分析這個(gè)模塊的獨(dú)立性,力爭(zhēng)降低模塊接口的復(fù)雜程度。 6.單入口單出口的模塊 這條啟發(fā)式規(guī)則表明不要使模塊間出現(xiàn)內(nèi)容耦合。在結(jié)構(gòu)上模塊頂部有單入口,模塊底部單出口,這樣的結(jié)構(gòu)比較容易理解、比較容易維護(hù)。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1