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

正文內(nèi)容

第11章軟件工程課件(編輯修改稿)

2025-03-29 10:15 本頁面
 

【文章內(nèi)容簡介】 提高可重用性 提高軟件的可重用性是面向?qū)ο蠓椒ǖ囊粋€主要目標(biāo)。軟件重用是指在兩次或多次不同的軟件開發(fā)過程中重復(fù)使用相同或相似軟件元素的過程。軟件元素包括程序代碼、測試用例、設(shè)計文檔、設(shè)計過程、需求分析甚至知識領(lǐng)域等多個層次。在編碼階段主要考慮代碼重用的問題,代碼級的重用是最簡單,也是最流行的,是迄今為止研究最深入、應(yīng)用最廣泛的重用技術(shù)。傳統(tǒng)上,代碼級重用部件的主體是子程序 (函數(shù)或過程 )?,F(xiàn)在,由于基于對象和面向?qū)ο蟮某绦蛟O(shè)計語言及相應(yīng)開發(fā)環(huán)境的發(fā)展,代碼級重用部件的內(nèi)容更加豐富,不僅包括結(jié)構(gòu)化程序設(shè)計語言中的函數(shù)或過程,同時也包括面向?qū)ο蟪绦蛟O(shè)計語言中的程序包和類。 第 11章 面向?qū)ο髮?shí)現(xiàn) 一般說來,代碼重用可分為兩種形式,一種是本項目內(nèi)的代碼重用,稱為內(nèi)部重用;另一種是新項目重用已有項目的代碼,稱為外部重用。內(nèi)部重用主要是找出本項目設(shè)計中相同或相似的部分,然后利用繼承機(jī)制共享它們。要做到外部重用,即一個項目重用另一項目的代碼,就要求開發(fā)人員必須具有重用的設(shè)計思想,做到反復(fù)考慮,精心設(shè)計。雖然為實(shí)現(xiàn)外部重用與內(nèi)部重用需要考慮的范圍不同,但是有助于實(shí)現(xiàn)這兩類重用的程序設(shè)計準(zhǔn)則卻是相同的。下面介紹主要的準(zhǔn)則。 第 11章 面向?qū)ο髮?shí)現(xiàn) 1. 提高方法的內(nèi)聚,減小方法的規(guī)模 一個方法 (即服務(wù) )應(yīng)該只完成單個功能,這樣的方法是高內(nèi)聚的。如果某個方法涉及兩個或多個不相關(guān)的功能或規(guī)模大的方法,則應(yīng)該把它分解成幾個更小的方法。 2. 保持方法的一致性 實(shí)現(xiàn)代碼重用的一個重要因素是應(yīng)該保持方法的一致性。一般來說,功能相似的方法應(yīng)該有一致的名字、參數(shù)特征 (包括參數(shù)個數(shù)、類型和次序 )、返回值類型、使用條件及出錯條件等。這樣有助于實(shí)現(xiàn)代碼重用。 第 11章 面向?qū)ο髮?shí)現(xiàn) 3. 把策略與實(shí)現(xiàn)分開 方法從所完成的功能來看有兩種類型:策略方法和實(shí)現(xiàn)方法。策略方法負(fù)責(zé)做出決策,提供變元,并且管理全局資源;實(shí)現(xiàn)方法只負(fù)責(zé)完成具體的操作,但卻沒有執(zhí)行這個操作的決定權(quán),也不知道為什么執(zhí)行這個操作。 策略方法不直接完成計算或?qū)崿F(xiàn)復(fù)雜的算法,只是檢查系統(tǒng)運(yùn)行狀態(tài),并處理出錯情況。該方法通常緊密依賴于具體應(yīng)用,這類方法易編寫、易理解。 第 11章 面向?qū)ο髮?shí)現(xiàn) 實(shí)現(xiàn)方法僅僅針對具體數(shù)據(jù)完成特定處理,通常用于實(shí)現(xiàn)復(fù)雜的算法。實(shí)現(xiàn)方法既不制定決策,也不管理全局資源。實(shí)現(xiàn)方法如果在執(zhí)行過程中發(fā)現(xiàn)錯誤,只返回執(zhí)行狀態(tài)而不處理出錯情況。由于實(shí)現(xiàn)方法是自含式算法,與具體應(yīng)用相對獨(dú)立,因此,容易在其他應(yīng)用系統(tǒng)中重用,具有較高的可重用性。 在編程時分清策略方法和實(shí)現(xiàn)方法,不要把它們放在同一個方法中。應(yīng)該把算法的核心部分放在一個單獨(dú)的具體實(shí)現(xiàn)方法中。為此需要從策略方法中提取出具體參數(shù),作為調(diào)用實(shí)現(xiàn)方法的變元,才能提高方法可重用性。 第 11章 面向?qū)ο髮?shí)現(xiàn) 4. 采用全面覆蓋技術(shù) 在編程時,對系統(tǒng)全面考慮,寫出覆蓋整個系統(tǒng)所有可能的方法。而不能僅僅針對當(dāng)前需要的功能寫方法。例如,如果在當(dāng)前應(yīng)用中需要寫一個獲取表中第一個元素的方法,則至少還應(yīng)該為獲取表中最后一個元素再寫一個方法。一個方法不僅能處理正常值,而且還能夠?qū)Ξ惓G闆r (如空值、極限值及界外值等 )作出有意義的響應(yīng)。 第 11章 面向?qū)ο髮?shí)現(xiàn) 5. 降低方法的耦合度 降低方法與外界的耦合程度的一項主要措施是在方法中盡可能少使用或不使用全局信息。 第 11章 面向?qū)ο髮?shí)現(xiàn) 6. 充分地利用繼承機(jī)制 使用繼承機(jī)制可實(shí)現(xiàn)共享和提高重用性,是面向?qū)ο蟪绦蛟O(shè)計的主要途徑。 (1) 使用子過程。把公共的代碼分離出來,構(gòu)成一個被其他方法調(diào)用的公用方法,是實(shí)現(xiàn)代碼復(fù)用最常用、最簡單的方法。通常可以在基類中定義這個公用方法,供派生類中的方法調(diào)用。 第 11章 面向?qū)ο髮?shí)現(xiàn) (2) 分解因子。提高相似類代碼可重用性的另一個有效途徑,是從不同類的相似方法中分解出公共代碼和不同的代碼 (即因子 )。把公共代碼作為公用方法,定義在一個抽象基類 (額外的 )中;把不同的因子作為名字相同而算法不同的方法,定義在不同類中,并被這個公用方法調(diào)用。把這種分解與面向?qū)ο笳Z言提供的多態(tài)性機(jī)制結(jié)合起來,抽象基類中定義的公用方法可由派生類來繼承,在新子類中只需編寫其特有的代碼,由于增添新子類編寫的代碼減少了,顯然為增添新子類所需付出的工作量也就明顯降低了。 第 11章 面向?qū)ο髮?shí)現(xiàn) (3) 使用委派。當(dāng)確實(shí)存在一般 特殊關(guān)系時,利用繼承關(guān)系,子類可以繼承父類的所有方法和屬性。但是,當(dāng)邏輯上不存在一般 特殊關(guān)系時,為重用已有的代碼,可以利用委派機(jī)制。要恰當(dāng)?shù)厥褂美^承機(jī)制,否則會降低程序的可理解性、可修改性和可擴(kuò)充性。 第 11章 面向?qū)ο髮?shí)現(xiàn) (4) 把重用代碼封裝在類中。解決同一類應(yīng)用問題時,程序員往往希望重用其他方法編寫的程序代碼。那么就將被重用的代碼封裝在類中,這樣使用起來比較安全,也是程序員應(yīng)該提倡的編程風(fēng)格。例如,如果開發(fā)一個應(yīng)用數(shù)學(xué)系統(tǒng)時,發(fā)現(xiàn)有現(xiàn)成的實(shí)現(xiàn)迭代法的商品軟件包,程序員想重用這個算法,于是先定義一個迭代法類,然后把這個商品軟件包的功能封裝在該類中即可。 第 11章 面向?qū)ο髮?shí)現(xiàn) 提高可擴(kuò)充性 前面所述的提高可重用性的準(zhǔn)則,同樣能提高程序的可擴(kuò)充性。下面將介紹有助于提高程序的可擴(kuò)充性的面向?qū)ο蟪绦蛟O(shè)計準(zhǔn)則。 1. 封裝實(shí)現(xiàn)策略 為了提高類中數(shù)據(jù)結(jié)構(gòu)或算法可修改性,應(yīng)該把類中描述屬性的數(shù)據(jù)結(jié)構(gòu)以及修改屬性的算法等實(shí)現(xiàn)策略封裝起來,只提供公有的接口供外界訪問。 第 11章 面向?qū)ο髮?shí)現(xiàn) 2. 方法的功能應(yīng)該單一 一個方法應(yīng)該高內(nèi)聚低耦合,包含對象模型中的有限內(nèi)容。如果用一個方法遍歷多條關(guān)聯(lián)鏈,將使方法過分復(fù)雜,既降低了可理解性,又影響了可修改性和可擴(kuò)充性。 3. 避免使用多分支語句 在實(shí)施系統(tǒng)開發(fā)過程中,可以利用 DOCASE語句測試對象的內(nèi)部狀態(tài),避免使用多分支語句來根據(jù)對象類型選擇應(yīng)有的行為,否則在增添新類時將不得不修改原有的代碼。一般來說,應(yīng)該合理地利用多態(tài)性機(jī)制,根據(jù)對象當(dāng)前類型,自動決定應(yīng)有的行為。 第 11章 面向?qū)ο髮?shí)現(xiàn) 4. 精心選擇和定義公有方法 公有方法是對外公用的接口,私有方法是僅在類內(nèi)使用的方法,通常利用私有方法來實(shí)現(xiàn)公有方法。一般來說,公有方法的修改代價要比私有方法大得多,因?yàn)閷蟹椒ǖ男薷某3鹪S多其他類的修改,而私有方法的刪除、增加或修改所涉及的面要小得多 (僅在類內(nèi) ),因此代價也比較小。為提高可修改性,降低維護(hù)成本,必須精心選擇和定義公有方法。 第 11章 面向?qū)ο髮?shí)現(xiàn) 提高健壯性 提高健壯性,也是程序員在編寫實(shí)現(xiàn)方法的代碼時應(yīng)該考慮的一個重要方面。通常需要在健壯性與效率之間做出適當(dāng)?shù)恼壑浴=研詫θ魏我粋€實(shí)用軟件都是不可忽略的質(zhì)量指標(biāo)。遵守下述準(zhǔn)則將有助于提高健壯性。 1. 增強(qiáng)系統(tǒng)的容錯功能 系統(tǒng)應(yīng)該具備容錯功能,即具有處理用戶操作錯誤的能力。當(dāng)用戶操作失誤或輸入數(shù)據(jù)出錯時,不會引起程序運(yùn)行中斷,更不應(yīng)該造成“死機(jī)”,而應(yīng)該對操作進(jìn)行檢查,發(fā)現(xiàn)了的錯誤,必須給出有關(guān)的提示信息,并允許用戶再次輸入或正常退出。 第 11章 面向?qū)ο髮?shí)現(xiàn) 2. 檢查參數(shù)的合法性 對軟件系統(tǒng)中所使用的方法或過程,尤其是公有方法或過程,應(yīng)該著重檢查其參數(shù)的合法性,不能因?yàn)橛脩粼谑褂霉蟹椒ɑ蜻^程時,違反參數(shù)的約束條件而引發(fā)程序運(yùn)行中斷或造成系統(tǒng)“死機(jī)”現(xiàn)象。 第 11章 面向?qū)ο髮?shí)現(xiàn) 3. 不要預(yù)先確定限制條件 預(yù)先確定限制條件對所開發(fā)的系統(tǒng)往往會產(chǎn)生一些不良的后果。特別是在設(shè)計階段,往往很難準(zhǔn)確地預(yù)測出應(yīng)用系統(tǒng)中使用的數(shù)據(jù)結(jié)構(gòu)的最大容量需求。當(dāng)系統(tǒng)中使用的數(shù)據(jù)結(jié)構(gòu)的容量大于預(yù)先確定的限制條件時,系統(tǒng)有可能引發(fā)一連串的問題。因此不應(yīng)該預(yù)先確定限制條件。如果有必要和可能的條件下,則應(yīng)該使用動態(tài)內(nèi)存分配機(jī)制來創(chuàng)建數(shù)據(jù)結(jié)構(gòu),當(dāng)然,該數(shù)據(jù)結(jié)構(gòu)是未預(yù)先確定限制條件的。 第 11章 面向?qū)ο髮?shí)現(xiàn) 4. 先測試后優(yōu)化 為了提高健壯性,往往需要增加大量的代碼,這就或多或少地影響了系統(tǒng)的執(zhí)行效率。因此,就需要在效率與健壯性之間做出合理的折衷。一般來說,首先根據(jù)應(yīng)用程序的特點(diǎn),確定需要著重測試的部分 (例如,最壞情況出現(xiàn)的次數(shù)及處理時間等 ),進(jìn)行測試。然后為提高性能,確定著重優(yōu)化的關(guān)鍵部分。此外在選擇算法時,要綜合考慮內(nèi)存需求、速度以及實(shí)現(xiàn)的簡易程度等因素,選擇出適當(dāng)?shù)乃惴ā? 第 11章 面向?qū)ο髮?shí)現(xiàn) 面向?qū)ο鬁y試 OO軟件的單元測試 在面向?qū)ο蟮能浖_發(fā)中,“封裝”導(dǎo)致了類和對象的定義,這意味著類和類的實(shí)例 (對象 )包裝了屬性 (數(shù)據(jù) )和處理這些數(shù)據(jù)的操作 (也稱為方法或服務(wù) )。其核心是“對象”,不存在傳統(tǒng)軟件開發(fā)中的“單元” (或者說單元的概念改變了 )。也就是說,封裝起來的類和對象是最小的可測試單元。一個類可以包含一組不同的操作,而一個特定的操作也可能定義在一組不同的類中。因此,面向?qū)ο蟮能浖膯卧獪y試與傳統(tǒng)測試方法不一樣,它的含義發(fā)生了很大變化。 第 11章 面向?qū)ο髮?shí)現(xiàn) 面向?qū)ο蟮能浖膯卧獪y試,不是獨(dú)立地測試單個操作,而是把所有操作都看成類的一部分,全面地測試類和對象所封裝的屬性和操縱這些屬性的操作整體。具體地說,在 OO的單元測試中不僅要發(fā)現(xiàn)類的所有操作中存在的問題,還要考查一個類與其他的類協(xié)同工作時可能出現(xiàn)的錯誤?,F(xiàn)以實(shí)例說明:在一個類層次中,操作 A在超類中定義并被一組子類繼承,每個子類都可使用操作 A,但是 A調(diào)用于類中定義的操作并處理子類的私有屬性。由于在不同的子類中使用操作 A的環(huán)境有所不同,因此有必要在每個子類的語境中測試操作 A。這就是說,當(dāng)測試面向?qū)ο筌浖r,傳統(tǒng)的單元測試方法是不可用的,我們不能再獨(dú)立地對操作 A進(jìn)行測試。 第 11章 面向?qū)ο髮?shí)現(xiàn) OO軟件的集成測試 傳統(tǒng)的集成測試是采用自頂向下或自底向上或二者混合的兩頭逼近策略,通過用漸增方式集
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1