論文格式
            電氣工程 會計(jì)論文 金融論文 國際貿(mào)易 財(cái)務(wù)管理 人力資源 輕化工程 德語論文 工程管理 文化產(chǎn)業(yè)管理 信息計(jì)算科學(xué) 電氣自動化 歷史論文
            機(jī)械設(shè)計(jì) 電子通信 英語論文 物流論文 電子商務(wù) 法律論文 工商管理 旅游管理 市場營銷 電視制片管理 材料科學(xué)工程 漢語言文學(xué) 免費(fèi)獲取
            制藥工程 生物工程 包裝工程 模具設(shè)計(jì) 測控專業(yè) 工業(yè)工程 教育管理 行政管理 應(yīng)用物理 電子信息工程 服裝設(shè)計(jì)工程 教育技術(shù)學(xué) 論文降重
            通信工程 電子機(jī)電 印刷工程 土木工程 交通工程 食品科學(xué) 藝術(shù)設(shè)計(jì) 新聞專業(yè) 信息管理 給水排水工程 化學(xué)工程工藝 推廣賺積分 付款方式
            • 首頁 |
            • 畢業(yè)論文 |
            • 論文格式 |
            • 個人簡歷 |
            • 工作總結(jié) |
            • 入黨申請書 |
            • 求職信 |
            • 入團(tuán)申請書 |
            • 工作計(jì)劃 |
            • 免費(fèi)論文 |
            • 現(xiàn)成論文 |
            • 論文同學(xué)網(wǎng) |
            搜索 高級搜索

            當(dāng)前位置:論文格式網(wǎng) -> 免費(fèi)論文 -> 其他論文

            一種基于度量的重構(gòu)定位方法的研究與應(yīng)用

            本論文在其他論文欄目,由論文格式網(wǎng)整理,轉(zhuǎn)載請注明來源www.donglienglish.cn,更多論文,請點(diǎn)論文格式范文查看 一種基于度量的重構(gòu)定位方法的研究與應(yīng)用
            1.選題意義
             Martin Flower在其著作中是這樣定義重構(gòu)的:是對軟件的內(nèi)部結(jié)構(gòu)所作的一種改變,這種改變在可觀察行為(Observable behaviour)不變的條件下使軟件更容易理解,而且修改更廉價。熟練地掌握重構(gòu)技術(shù),具有十分重要的意義,它是編程的基本準(zhǔn)則,是每個程序員能夠并且應(yīng)該依靠的一項(xiàng)基本技術(shù),是極限編程的基本組成部分。
             “壞味道”是指示程序代碼的某一部分必須重寫的一種隱喻。它的鑒別始終是程序員面臨的主要問題之一,他們必須手工復(fù)查程序源代碼以發(fā)現(xiàn)代碼中有潛在錯誤的地方。因而,似乎覺得沒有任何度量規(guī)矩比得上一個見識廣博者的直覺。但是,對于成千上萬條代碼行的大程序而言,如果有自動探測代碼“壞味道”的工具支持,那么程序員就可以克服上述障礙。然而“在哪使用哪種重構(gòu)方法”是始終是重構(gòu)技術(shù)面臨的主要問題之一。因此要自動探測代碼“壞味道”必須有一個好的重構(gòu)定位的數(shù)學(xué)理論。我們提出的基于度量的重構(gòu)定位方法,為自動重構(gòu)的定位奠定了理論基礎(chǔ)。
             此方法一旦應(yīng)用于自動重構(gòu),就能加快“壞味道”的定位速度和精確度,可以彌補(bǔ)“人的直覺”的缺陷,從而更有效地運(yùn)用重構(gòu)技術(shù)。
             綜上所述,此課題具有一定的研究價值。
            2.選題背景
             在軟件開發(fā)與維護(hù)的長期實(shí)踐中,人們普遍認(rèn)識到的一個事實(shí)是代碼太容易變壞。壞的代碼總是趨向于有更大的類、更長的方法、更多的開關(guān)語句和更深的條件嵌套。實(shí)際上這些大的類看上去更象傳統(tǒng)的過程性方法,做得有過之而無不及。到處可以看到在大的開關(guān)語句和復(fù)雜條件語句中遍布著重復(fù)的代碼,特別是那些初看相似細(xì)看又不同的代碼泛濫于整個系統(tǒng):條件表達(dá)式,循環(huán)結(jié)構(gòu)、集合枚舉。信息被共享于系統(tǒng)一些關(guān)系甚少的組成部分之間,通常,這使得系統(tǒng)中幾乎所有的重要信息都變成全局或者重復(fù)。全部代碼都以非常密集的樣式被書寫,要么缺乏注釋,要么帶有許多無用的或者過時的注解。你根本看不到這種代碼還有什么良好的設(shè)計(jì)。除了現(xiàn)實(shí)是這樣以外,當(dāng)項(xiàng)目進(jìn)行或者完成之后,保持代碼與最初系統(tǒng)設(shè)計(jì)的一致性是非常困難的。需求被改變,功能被增加,程序員改變代碼,所有這些情形都傾向于在非常緊的工期下發(fā)生。這些因素意味著代碼不被維護(hù),只是被擴(kuò)展,導(dǎo)致難于閱讀和理解的復(fù)雜代碼。隨著時間的漂移,代碼中只有很少的一部分代表了系統(tǒng)的設(shè)計(jì)。
             如果要在這樣一種系統(tǒng)上添加功能,第一個反應(yīng)應(yīng)該是拒絕。因?yàn)檫@樣的代碼難以理解,更不要說對它加以修改。存在的第二種可能性是拋棄現(xiàn)在的系統(tǒng),然后從頭編寫。我們經(jīng)常聽到程序員說“要我閱讀修改別人的程序,不如讓我重新編寫”。如果項(xiàng)目的規(guī)模較大,或者系統(tǒng)已經(jīng)在運(yùn)行,不可能進(jìn)行重新編寫,這時人們就得面對第三種選擇,硬著頭皮進(jìn)行維護(hù),進(jìn)行修改和擴(kuò)充。
             由于維護(hù)工作并不被大多數(shù)程序員視為一種富于創(chuàng)造性的工作,所以維護(hù)人員通常采取一種快速和消極的方法。如果系統(tǒng)有問題,那么就盡快地找到問題,直接修改它。如果要增加一項(xiàng)新功能,就會從原來的系統(tǒng)中找到一塊相近的代碼,拷貝出來,作些修改,再粘貼進(jìn)去。絕大多數(shù)的人都認(rèn)為,對于原來的系統(tǒng),既然不能重頭寫,而且它們已經(jīng)在運(yùn)行,讓它去吧。于是,一個程序員增加的代碼變成了下一個程序員咒罵的對象。系統(tǒng)變得越來越難以理解,維護(hù)越來越困難、越來越昂貴。系統(tǒng)變成了一個十足的大泥潭。每個人都不愿意看 到這種情況,但奇怪的是,這樣的情形卻一次又一次地在現(xiàn)實(shí)中不斷地出現(xiàn)。
             這是長期以來一直困擾人們而必須加以解決的問題。實(shí)際上,這就是在軟件維護(hù)研究中提出的軟件熵(software entropy)的概念。軟件熵是軟件的結(jié)構(gòu)隨著時間而變壞的現(xiàn)象。Fred Brooks 說:所有維修都傾向于破壞結(jié)構(gòu),增加了系統(tǒng)的熵和凌亂。在修理原始設(shè)計(jì)缺陷上所花的時間越來越少,越來越多的時間是花在修理由早期修理所引入的錯誤上。隨著時間的流逝,系統(tǒng)變得越來越混亂。遲早修理變得不可能而停止下來。
             解決這個問題的最好方法當(dāng)然是不讓它發(fā)生,即使發(fā)生了,我們也應(yīng)該有辦法來對付。由此引發(fā)了軟件重構(gòu)技術(shù)(software refactoring technology)的研究。如果編碼時小心,代碼的結(jié)構(gòu)和設(shè)計(jì)應(yīng)沒有機(jī)會變壞。每次在修改或者增加代碼之前,通過查看代碼,如果代碼具有良好形狀和味道(code smell),那么添加功能就應(yīng)該沒問題;如果理解代碼要很多時間,代碼應(yīng)該先被重構(gòu)(重新組織修改)以獲得易維護(hù)屬性,然后才能夠容易擴(kuò)展代碼。當(dāng)然,要阻止代碼的腐化,人們也需要付出額外的代價。
             軟件重構(gòu)技術(shù)是軟件工程近十年來非常活躍的一個研究領(lǐng)域。重構(gòu)研究的動機(jī)是由某些有關(guān)的研究所激發(fā)的。這些研究主要包括軟件重用、軟件維護(hù)、和軟件的重新組織(Software Restructuring)。
            1) 軟件重用(Software Reuse)
             為了降低開發(fā)軟件的高成本,軟件重用的研究是為了使一個系統(tǒng)開發(fā)的知識再次容易地用于另一個軟件系統(tǒng)的開發(fā)。然而,可重用軟件經(jīng)常需要很多設(shè)計(jì)迭代。使軟件更容易改變將使設(shè)計(jì)迭代更簡單。這樣的軟件將更可重用。
             抽象、封裝、繼承、多態(tài)和模塊性這樣的面向?qū)ο蟪绦蛟O(shè)計(jì)特性給軟件再利用提供了基礎(chǔ)結(jié)構(gòu)。在Smalltalk 和其它的一些面向?qū)ο笳Z言中提供了這些特性的結(jié)合,以鼓勵再利用現(xiàn)有的代碼,而不是從頭開始編碼。這樣,通過添加新類或者在現(xiàn)存類上添加操作能對軟件作出某些改變,而使軟件的大部分保持不變。然而,大部分的改變涉及類似改變類間關(guān)系,移動類間的變量和函數(shù)這樣的結(jié)構(gòu)上的變化。用手工進(jìn)行這些改變是費(fèi)時、困難并易于出錯的。
             除代碼級再利用之外,設(shè)計(jì)級的再利用也是研究的內(nèi)容。而且,從長期的觀點(diǎn)來看,人們認(rèn)識到設(shè)計(jì)級的再利用更為重要。面向?qū)ο髴?yīng)用框架(framework)是這種研究努力的結(jié)果。框架是抽象和具體類的集合。從而,能夠添加新的子類對它進(jìn)行重定義。因此,框架支持抽象級,并允許部分的規(guī)范說明。不過,好的框架需要多次的設(shè)計(jì)迭代,涉及很多結(jié)構(gòu)上的變化。
            2) 軟件維護(hù)(Software Maintenance)
             軟件重用與軟件維護(hù)緊密相關(guān)。維護(hù)是軟件生產(chǎn)所有方面中最為困難的。主要的理由在于維護(hù)包容了軟件過程所有其他階段的各個方面內(nèi)容。在軟件生命周期中,在維護(hù)上所花的時間比任何其它階段都更多。實(shí)際上,現(xiàn)行軟件的維護(hù)工作量能占到全部開發(fā)工作量的60 %以上。軟件維護(hù)經(jīng)常需要重新組織軟件。
            3) 軟件重新組織(Software Restructuring)
             Arnold 把軟件重新組織定義為“使軟件更容易理解、更容易改動、或者以后修改時更少出錯,而對軟件的更改。
             不適當(dāng)?shù)脑O(shè)計(jì)方法學(xué),缺乏開發(fā)和維護(hù)標(biāo)準(zhǔn)等諸如此類的很多因素都能導(dǎo)致拙劣的軟件結(jié)構(gòu)。很多軟件重組方法集中于諸如用結(jié)構(gòu)注入代碼使程序中的控制流更為明顯這樣的代碼變化。可是,只存在一些不對代碼進(jìn)行更改的方法。例如,人們能夠在軟件再工程期間從代碼和現(xiàn)有的文檔出發(fā)重新創(chuàng)建軟件的結(jié)構(gòu)。
             對這個課題的研究我們還出于另外兩個動機(jī):一是國內(nèi)缺少對重構(gòu)技術(shù)的研究,尤其是重構(gòu)定位方法;二是我們認(rèn)為Frank Simon的方法有兩個需要改進(jìn)的地方。(1)他們呈遞的重構(gòu)定位工具,雖然具有計(jì)算簡單,直觀,易操作的優(yōu)點(diǎn);但是由于采用了三維VRML Browse來顯示度量結(jié)果,當(dāng)顯示過多成員時,系統(tǒng)開銷大、各成員容易出現(xiàn)混亂,這樣顯然會影響重構(gòu)效率;(2)“壞味道”不能直接被量化,在一定程度上,還需要借助“人的直覺”(human intuition)在VRML Browse中進(jìn)行判斷,經(jīng)常會出現(xiàn)重構(gòu)操作“做與不做”的尷尬局面。
            3.課題內(nèi)容
            3.1 重構(gòu)定位方法的理論基礎(chǔ)
            3.1.1度量理論(Theory of Metrics)
             軟件度量若缺乏理論基礎(chǔ),沒有合理的數(shù)學(xué)性質(zhì)來支持。將不能揭示正常的預(yù)示行為。從度量的定義可知,任意一個度量都必須具備如下四大要素:
             1)被度量的客體或事件;
             2)所欲度量的屬性;
             3)賦予客體或事件的數(shù)值或符號;
             4)使客體與數(shù)值相聯(lián)系的映射。
             Zues和Fenton等人認(rèn)為度量準(zhǔn)則應(yīng)建立在度量理論基礎(chǔ)之上,并運(yùn)用度量理論檢驗(yàn)給定的度量準(zhǔn)則是否適合特定的環(huán)境。Baker和Fenton等人認(rèn)為度量涉及以下四項(xiàng)活動,度量理論的研究需要為這些活動提供理論基礎(chǔ):
             1)確認(rèn)所關(guān)心的軟件屬性:軟件屬性可分為內(nèi)部屬性和外部屬性。
             內(nèi)部屬性,是指能夠純粹用過程或產(chǎn)品或資源其自身來度量的屬性,如軟件大小、控制流、耦合度等,通常描述軟件結(jié)構(gòu)上的復(fù)雜性。內(nèi)部屬性一般有清晰的定義并能進(jìn)行客觀的度量。
             外部屬性,是指由過程或產(chǎn)品或資源及其相關(guān)的環(huán)境一起共同才能度量的屬性,如復(fù)雜性、可維護(hù)性、可讀性等,涉及到人和環(huán)境等外部因素,外部屬性的度量才能真正給出人們所需的可靠數(shù)據(jù)并預(yù)示軟件開發(fā)行為。
             不幸的是,外部屬性常缺乏清晰的定義,也無法進(jìn)行直接的客觀度量,只能通過內(nèi)部屬性進(jìn)行推測性的度量。
             度量研究的任務(wù)之一就是建立外部屬性和內(nèi)部屬性之間的合理聯(lián)系。
             2)建立軟件屬性的經(jīng)驗(yàn)關(guān)系系統(tǒng):經(jīng)驗(yàn)關(guān)系系統(tǒng)捕捉了軟件屬性直覺(經(jīng)驗(yàn))上的概念,譬如,設(shè)計(jì)者通常認(rèn)為有15個方法的類比另一個只有10個方法的類復(fù)雜。
             經(jīng)驗(yàn)關(guān)系系統(tǒng)可以表示為:
                      
             其中:A是非空的軟件屬性集合;Rj是A元素之間的經(jīng)驗(yàn)關(guān)系,如大于、更復(fù)雜等;Ok是A元素之間的二元操作。
             3)通過度量準(zhǔn)則把經(jīng)驗(yàn)關(guān)系系統(tǒng)映射到形式關(guān)系系統(tǒng)。
             形式關(guān)系系統(tǒng)可以定義為:
                      
             其中:C是非空集,如實(shí)數(shù)集;Sj是C元素之間的形式關(guān)系,如>、<、二等;Bk是C元素之間的二元形式操作。如+、一、*等。
             4)評估度量準(zhǔn)則:度量準(zhǔn)則M是D到F的同構(gòu)映射,滿足:
             ;;
             。
            3.1.2測距理論(Theory of Distance Measurement)
             經(jīng)過近年來的研究,人們已經(jīng)根據(jù)面向?qū)ο笙到y(tǒng)的特點(diǎn)提出了一系列面向?qū)ο蠖攘浚渲袃?nèi)聚性度量是軟件度量學(xué)中一個重要的研究領(lǐng)域。在多次軟件工程會議和一些軟件工程雜志上不斷有這方面的研究成果。
            1)分組與相似性
             “把相似的對象組成一類”是軟件工程中的主要原則之一。這種設(shè)計(jì)風(fēng)格對結(jié)構(gòu)化分析(如層次數(shù)據(jù)流圖)和面向?qū)ο笙到y(tǒng)開發(fā)都是非常有效的。使用此原則我們可以把復(fù)雜的系統(tǒng)分成若干個子系統(tǒng):一個包含若干子系統(tǒng)的復(fù)雜系統(tǒng)具有如下特征:以某種方式存在于子系統(tǒng)的“東西”存在共性(比如它們作用于相同的數(shù)據(jù))。
             因?yàn)槊總問題域中的對象都應(yīng)該有一個在軟件系統(tǒng)中易定位的對象,所以把依賴分組的問題映射成計(jì)算機(jī)編程語言(如類或者包)能提高系統(tǒng)的可理解性。可見,在系統(tǒng)中良好選擇的分組是一個非常重要的質(zhì)量因素。
             不同的標(biāo)準(zhǔn)有不同的分組,而且標(biāo)準(zhǔn)不存在“對”或者“錯”。他們的正確性依賴于特定目標(biāo)的可用性。比如說,基于功能的分組適用于修改系統(tǒng)中的工作流,而面向數(shù)據(jù)的分組適于于修改某些特殊的數(shù)據(jù)結(jié)構(gòu)。
             分析既定系統(tǒng)應(yīng)將分組用作一個重要的因素。因而,精巧的分組使系統(tǒng)更容易分析。
             分組操作與相似性/不相似性具有非常緊密的聯(lián)系:分組的重要特征之一是組內(nèi)所有的東西都相似,而組間所有的元素都不相似。為了能定量的分析事物的相似性,引入相似度是非常必要的。
            2)相似度(Degree of Similarity)
             定義1 相似度(Degree of Similarity) 若給實(shí)體的所有屬性賦予相同的權(quán)重,且B是屬性集{Pi}的有限子集,則兩個實(shí)體x,y間的相似度為:                               
              其中 ……………………①
             從定義中可知:
             1)相似性很大程度上依賴于視點(diǎn)(Point of View):通過計(jì)算兩個不同屬性集的相似度可得到既定實(shí)體對從“相同”到“相對”的結(jié)果;
             相似性不是自身的屬性:如果不論及既定屬性,相似性描述就無從談起;
             相似性只存在于實(shí)體對,它不可歸屬于單個實(shí)體;
             4)與“不相容”屬性集B相關(guān)的實(shí)體間相似性沒有被定義。如果實(shí)體對在集合B中都不存在屬性,則B是實(shí)體對的相似性不相容(Similarity Incompatible)。這個觀點(diǎn)只是在理論上成立,因?yàn)椴⒉淮嬖谙鄬Φ膶?shí)體。然而它對后面的提煉非常重要。
             定義2集值距離函數(shù)(Set-valued Distance Function) 若{Pi}是所有屬性集,則:
                ………………………………………②
             上述定義滿足:
             1);
             2);
             3) 是對稱的;
             4) 對稱或者布爾差分;
             定義3 實(shí)值度量(Real-valued Metric) 若給所有的實(shí)體屬性賦予相同的權(quán)重,則:                         
               …………………………………………③
             度量公式③滿足:
             1);
             2);
             3);
             4)
             實(shí)際上,度量公式③是不可行的,其原因是度量時會有太多的屬性。大多數(shù)情況下要設(shè)定一個特定視點(diǎn)下的屬性子集B。
             定義4 相似性測量 若B是兩實(shí)體的屬性子集,則兩實(shí)體x,y間的相似性測量公式為:      
              …………………④
            3)測距(Distance Measurement)
             由公式④很容易得到測距的形式化定義:
             定義2.5 測距
             ………………………………………………………………⑤
             從測距定義可得如下結(jié)論:
             1)測距越小,相似性越大;測距越大,相似性越小;
             2)如果兩實(shí)體間的既定屬性集相等,那么測距為0;
             3)兩實(shí)體的相似性不相容屬性集在測距中沒有被定義,原因是“不能用蘋果和梨相比較”,至于不相容屬性集在兩實(shí)體間的測距中將無從談起。
             4)。
             上面定義的測距同樣支持內(nèi)聚性度量,Bieman和Byung-Kyoo把內(nèi)聚性定義為:內(nèi)聚性是指模塊組件聚合的程度。在早期的內(nèi)聚性概念中,只是把內(nèi)聚性賦予單個的實(shí)體,而此測距的引入,我們可深入觀察單個實(shí)體,進(jìn)而尋找引起內(nèi)聚性的所有“吸力”(Attraction)。
             在這里可我們可以用前一節(jié)中定義的度量的數(shù)學(xué)理論把測距描述成:
             1)要計(jì)算實(shí)體間的距離必須簡化既定屬性,并抽象成實(shí)體模型(Entity Model)。實(shí)體模型的視點(diǎn)必須通過描述實(shí)體的所有屬性的子集B被清晰地說明(比如一個函數(shù)只有唯一的屬性“使用了同類中的值域x”,但是不函數(shù)不長也不復(fù)雜)。屬性在這種場景下二進(jìn)制的,即實(shí)體有或者沒有屬性;
             2)經(jīng)驗(yàn)關(guān)系系統(tǒng)(Empirical Relation System, ERS)包含實(shí)體模型對,這些實(shí)體模型對之間的測距可用公式⑤計(jì)算出。如果有n個實(shí)體模型,那么經(jīng)驗(yàn)關(guān)系系統(tǒng)就有n2個實(shí)體模型對;
             3)在經(jīng)驗(yàn)關(guān)系系統(tǒng)中,為了達(dá)到順序量表(Ordinal Scale),在兩實(shí)體模型對之間至少存在一個關(guān)系“”——它是連接的(Connex)、反對稱的(Antisymmetric)、傳遞的(Transitive)。
            3.2 軟件重構(gòu)技術(shù)
             最早對重構(gòu)進(jìn)行理論研究的Ralon Jahnson這樣描述重構(gòu):重構(gòu)是使用各種手段重新整理一個對象設(shè)計(jì)的過程。目的是為了讓設(shè)計(jì)更加靈活,更可重用。你可能有幾個理由來做這件事情.其中效率和可維護(hù)性可能是最重要的原因。
             Martin Fowler在他的著作《Refactoring: Improving the Design of Existing Code》中這樣定義重構(gòu):在不改變可觀察行為的前提下,對軟件內(nèi)部結(jié)構(gòu)的改變,目的是使它更易于理解并且能夠更廉價地進(jìn)行改變。
            軟件結(jié)構(gòu)可以因?yàn)楦鞣N各樣的原因而被改變.但只有出于可理解性、可修改、可維護(hù)目的的改變才是重構(gòu),如性能調(diào)優(yōu),它往往把代碼改得更讓人難以理解,雖然它并不改變可觀察的行為,所謂保持可觀察的行為,就是重構(gòu)之前軟件實(shí)現(xiàn)什么功能,之后照樣實(shí)現(xiàn)什么功能。任何用戶,不管是終端用戶還是其他的程序員,都不需要知道某些東西發(fā)生了變化。
             為了論證度量在重構(gòu)中對人的“直覺”的輔助作用,我們重點(diǎn)研究了兩種重構(gòu)方法。
            3.2.1重構(gòu)方法
             移動方法(Move Method):是指把方法m從類A中移到使用此方法最多的類B中,而類A中的方法m則變換成一個簡單的委托(delegation),或者完全移去它。
             移動屬性(Move Attribute):是指把屬性a從類A中移到使用此屬性最多的類B中,同時修改屬性a的所有使用者。
             上述兩種重構(gòu)方法都是基于下列使用關(guān)系(use relation):相互間大量使用的特性應(yīng)聚集在同一個類中。而驅(qū)使這兩種重構(gòu)方法的“壞味道”:一是某類中定義的方法或?qū)傩员黄渌愡^多的使用著;二是某類中定義的方法過多的使用其他類中定義的方法。
            3.2.2 壞味道(Bad Smell)
             在我們進(jìn)行重構(gòu)之前,必須明白“重構(gòu)什么”和“怎樣重構(gòu)”。這些工作是通過探測代代碼中“壞味道”來進(jìn)行的,Martin Fowler在他的書中引用Kent Beck對“壞味道”隱喻,描述如何識別一種早期的警示信號,它們指示程序代碼的某一部分必須重構(gòu)。雖然Martin Fowler認(rèn)為在實(shí)踐中沒有一套好的度量方法勝過人的直覺,但是在研究中我們發(fā)現(xiàn)部分“壞味道”是可以量化的。這樣的“壞味道”有:
             彈散式的外科手術(shù)(Shotgun Surgery):對系統(tǒng)一個地方的改變涉及到其他許多地方的相關(guān)改變。這些變化率和變化內(nèi)容相似的狀態(tài)和行為通常應(yīng)當(dāng)放在同一個類中。
             特性的羨慕(Feature Envy):對象的目的就是封裝狀態(tài)以及與這些狀態(tài)緊密相關(guān)的行為。如果一個類的方法頻繁用 Get方法存取其他類的狀態(tài)進(jìn)行計(jì)算,那么就要考慮把行為移到涉及狀態(tài)數(shù)目最多的那個類。
             不當(dāng)?shù)挠H密關(guān)系(Inappropriate Intimacy):當(dāng)類過度訪問其他類的私有部分,代表這個類有不當(dāng)?shù)挠H密關(guān)系。使用移動方法及移動屬性來降低親密關(guān)系。
             數(shù)據(jù)類(Data Class ):數(shù)據(jù)類中除了屬性及存取這些屬性的Set及Get方法外別無它物。這種類一般多是為其它對象操作。如果其它類中常常使用到Set及Get方法,就要將這些行為以移動方法移到數(shù)據(jù)類中。
            3.2.3 工具支持
             雖然可以采用手工方式進(jìn)行重構(gòu),但一般認(rèn)為采用支持重構(gòu)的工具進(jìn)行重構(gòu)工作是非常必要的。目前,在重構(gòu)包含的各個方面都有相當(dāng)數(shù)量的支持工具。從工具和它能夠提供的支持種類來看,自動化的程度有相當(dāng)大的差別。諸如Refactoring Browser , XRefactory , jFactor這類的工具提供半自動方法實(shí)現(xiàn)重構(gòu)。一些研究人員提供了實(shí)現(xiàn)全自動重構(gòu)工具的可能性。例如,Guru 能夠?qū)崿F(xiàn)SELF 程序的重建繼承層次和重構(gòu)方法的自動化。當(dāng)前關(guān)于重構(gòu)工具的一種趨勢是將它們直接集成到商業(yè)軟件開發(fā)環(huán)境中。例如SmallTalk的VisualWorks、Eclipse 、Together ControlCenter、Intellij IDEA 、Borland JBuilder等等。這些工具的應(yīng)用的焦點(diǎn)是滿足用戶對重構(gòu)的需要。但是這些工具對于在何時、何處需要應(yīng)用重構(gòu)幾乎沒有提供什么支持。Simon提出解決該問題的一些方式,Kataoka指出如何通過使用Daikon工具檢測程序不變量的方法自動地應(yīng)用重構(gòu)方法。該方法基于對程序運(yùn)行的行為的動態(tài)分析實(shí)現(xiàn),可以將其視為其它方法的補(bǔ)充。
            4.課題時間安排
            2002.09 ---- 2003.02    調(diào)研并閱讀相關(guān)文獻(xiàn)
            2003.03 ---- 2003.10    進(jìn)行理論研究
            2003.10 ---- 2003.12    寫畢業(yè)論文
            2004.3               答辯
             參考文獻(xiàn)
            Roberts, F. S., Measurement theory, in Encyclopedia of Mathematics and Its Applications, Vol. 7, Addison-Wesley, 1979.
            Krantz, D.H., Luce, R. D., Suppes, P. and Tversky, A. , Foundations of Measurement, Vol.1 : Additive and Polynomial Representations, Academic Press, 1971.
            Suppes, P. Krantz, D. H., Luce, R. D and Tversky, A. , Foundations of Measurement, Vol.2: Geometrical, Threshold and Probabilistic Representations, Academic Press, 1989.
            Luce, R. D., Krantz, D. H. ,Suppes, P. and Tversky , A. , Foundations of Measurement, Vol.3: Respresentation, Axiomatization and Invariance, Academic Press, 1990.
            Roger S. Pressman, Software Engineering: A Practitioner’s Approach (Fifth Edition), Mc Graw Hill, 2001.
            Shyam R. Chidamber and Chris F. Kemerer, A Metrics Suite for Object-Oriented Design, IEEE Trans. on SE, Vol. 20, No. 6, June 1994.
            Norman E Fenton, Software Metrics: A Rigorous Approach, Chapman&Hall, 1991.
            E.J.  Weyuker, eva luating Software Complexity Measures, IEEE Trans. Software Eng., September, 1988:1357- 1365.
            Pfleeger, Status Report on Software Measurement, IEEE Software, 1997,33-43.
            Berard, Metrics for Object-Oriented Software Engineering, an Internet posting on comp. Software-eng, Jauary 28, 1995.
            Whitmire, S., Object-Oriented Design Measurement, Wiley, 1997.
            Frank Simon, Silvio Löffler, Claus Lewerentz. Distance based cohesion measuring, in proceeding of the 2nd European Software Measurement Conference (FESMA) 99, Technologist Institute Amsterdam, 1999.
            James M. Bieman and Linda M. Ott. ,  Measuring functional cohesion, Technical Report CS-93-109, Michigan Technological University, 1993.
            James M. Bieman and Byung-Kyoo, Measuring Design-Level Cohesion, IEEE Transactions on Software Engineering, Vol 24, Nr. 2, February 1998.
            Martin Fowler. Refactoring: Improving the design of existing code. Addison Wesley Longman, Inc., Reading, Massachusetts, 1999;
            Dave Astels.  Refactoring with UML;
            Frank Simon, Frank Steinbruckner, Claus Lewerentz.  Metrics based refactoring,2001;
            Mario Bunge. Treatise on basic philosophy, Volume 3: Ontology I, The furniture of the world”, D. Reidel Publishing Company, Dordrecht-Holland 1977;
            Yoshio Kataoka, Michael D.Ernst, Willian G.Griswold and David Notkin. Antomated support for program refactoring using Invariants;
            Agile Modeling website, www.agilemodeling.com;
            朱鴻、金凌紫,軟件質(zhì)量保障和測試,科學(xué)出版社,1997.8
            邢大紅、曹佳冬、汪和才、劉宗田,軟件度量學(xué)綜述,計(jì)算機(jī)工程與應(yīng)用,2001.1
            弓惠生。模塊內(nèi)聚性的度量方法,計(jì)算機(jī)研究與發(fā)展,1997,349(8)
            吳源俊,軟件工程中的度量問題,信息技術(shù)與標(biāo)準(zhǔn)化,2002.11
            蔡希堯,軟件質(zhì)量的度量問題,計(jì)算機(jī)工程與科學(xué),1996.1


            相關(guān)論文
            上一篇:地理信息系統(tǒng)項(xiàng)目管理初探 下一篇:谷氨酰胺轉(zhuǎn)胺酶生產(chǎn)與應(yīng)用
            Tags:基于 度量 重構(gòu) 定位 方法 研究 應(yīng)用 【收藏】 【返回頂部】
            人力資源論文
            金融論文
            會計(jì)論文
            財(cái)務(wù)論文
            法律論文
            物流論文
            工商管理論文
            其他論文
            保險學(xué)免費(fèi)論文
            財(cái)政學(xué)免費(fèi)論文
            工程管理免費(fèi)論文
            經(jīng)濟(jì)學(xué)免費(fèi)論文
            市場營銷免費(fèi)論文
            投資學(xué)免費(fèi)論文
            信息管理免費(fèi)論文
            行政管理免費(fèi)論文
            財(cái)務(wù)會計(jì)論文格式
            數(shù)學(xué)教育論文格式
            數(shù)學(xué)與應(yīng)用數(shù)學(xué)論文
            物流論文格式范文
            財(cái)務(wù)管理論文格式
            營銷論文格式范文
            人力資源論文格式
            電子商務(wù)畢業(yè)論文
            法律專業(yè)畢業(yè)論文
            工商管理畢業(yè)論文
            漢語言文學(xué)論文
            計(jì)算機(jī)畢業(yè)論文
            教育管理畢業(yè)論文
            現(xiàn)代教育技術(shù)論文
            小學(xué)教育畢業(yè)論文
            心理學(xué)畢業(yè)論文
            學(xué)前教育畢業(yè)論文
            中文系文學(xué)論文
            最新文章
            熱門文章
            計(jì)算機(jī)論文
            推薦文章

            本站部分文章來自網(wǎng)絡(luò),如發(fā)現(xiàn)侵犯了您的權(quán)益,請聯(lián)系指出,本站及時確認(rèn)刪除 E-mail:349991040@qq.com

            論文格式網(wǎng)(www.donglienglish.cn--論文格式網(wǎng)拼音首字母組合)提供其他論文畢業(yè)論文格式,論文格式范文,畢業(yè)論文范文

            Copyright@ 2010-2018 LWGSW.com 論文格式網(wǎng) 版權(quán)所有

            感谢您访问我们的网站,您可能还对以下资源感兴趣:

            论文格式网:毕业论文格式范文