北京軟件公司在C++應(yīng)用程序中的耦合,重用和維護(hù)的調(diào)查_北京軟件開發(fā)公司
發(fā)表日期:2017-04-13 17:23:44 ?? 文章編輯:宜天信達(dá) ?? 瀏覽次數(shù):
北京軟件公司Coupling因其對軟件設(shè)計(jì)的貢獻(xiàn)而備受好評。它可以對系統(tǒng)集成和維護(hù)成本產(chǎn)生重大影響。理想情況下,交互對象應(yīng)盡可能松散地相互耦合。
Fyson和Boldyreff [1]認(rèn)為,軟件開發(fā)生命周期成本的高達(dá)80%通常在維護(hù)階段消耗。在(a)預(yù)測各種軟件過程成本(如系統(tǒng)集成)時(shí),在維護(hù)期間測量類之間的耦合是重要的; (b)確定哪些預(yù)防性維護(hù)可能適用于在相互作用的類別的系統(tǒng)中的較佳效果;(c)評估變更對軟件系統(tǒng)的影響 - 所謂的影響分析[2]。
類之間的耦合測量提供了一種預(yù)防與影響分析相關(guān)的一些問題的方法。在聯(lián)軸器確定的階段,要做出的精確的改變通常是不知道的。然而,當(dāng)已經(jīng)生成了變更請求時(shí),類之間的精確耦合的知識可以通過突出應(yīng)用的區(qū)域來幫助后續(xù)的影響分析過程,如果必須修改可能導(dǎo)致非常顯著的連鎖效應(yīng)。
本研究中測量的聯(lián)軸器與聚合和關(guān)聯(lián)關(guān)系有關(guān)。沒有考慮繼承關(guān)系。Lindvall [3]已經(jīng)調(diào)查了Ericsson Radio Systems對商業(yè)C ++系統(tǒng)的變化的性質(zhì)。他的研究結(jié)果表明,在維護(hù)階段,“階級和繼承結(jié)構(gòu)是穩(wěn)定的,大體上保持不變”。這個(gè)發(fā)現(xiàn)與我們自己的研究結(jié)果一致[4],例如,Chidamber和Kemerer [5]的繼承深度(DIT)和兒童數(shù)量(NOC)度量分別只改變了兩個(gè)和四個(gè)班,的114套,對于這里研究的應(yīng)用,超過了2 1/2年的維護(hù)期。
測量內(nèi)部系統(tǒng)耦合可以通過多種方式實(shí)現(xiàn)[6]。目前尚不清楚哪些方法可以提供較佳的診斷能力。據(jù)推測,較詳細(xì)的耦合措施將是較好的,但是基本的Chidamber和Kemerer [5]耦合度量CBO的改進(jìn)是否有任何小的改進(jìn)?
耦合的較基本的測量方法是簡單地計(jì)算給定類具有鏈接的其他類的數(shù)量。如果CAR 存儲在 GARAGE中并由 PERSON 擁有,則假設(shè)CAR,PERSON和GARAGE是三個(gè)類,CAR將具有2的耦合值。通過此措施,了解哪些類在系統(tǒng)中較耦合做成
關(guān)于協(xié)會的方向存在一個(gè)問題:只應(yīng)該將雙向關(guān)聯(lián)計(jì)算在內(nèi)或單方向關(guān)聯(lián)?這個(gè)約束在后面的論文中被刪除,所以從一個(gè)類到另一個(gè)類的任何鏈接構(gòu)成一個(gè)耦合,而不管耦合類中是否存在相互引用。在本文中,我們通過單獨(dú)測量前向和后向關(guān)聯(lián)來明確地考慮關(guān)聯(lián)的方向。
Briand等人 [6]建議兩類之間的耦合強(qiáng)度可以從兩個(gè)方面確定:類之間的連接頻率和類之間的連接類型。接下來,對耦合的更徹底的處理可能包括對從一類對象傳遞到所有與之相連的對象的不同消息的數(shù)量的分析。Li和Henry [9]的消息傳遞耦合(MPC)度量解決了這個(gè)問題,參考文獻(xiàn)中提出的CCF度量也是如此。[4]并在此使用。
在這方面,我們還可以計(jì)算每個(gè)類別中給出的消息通過次數(shù)。在關(guān)聯(lián)使用方面的進(jìn)一步分析要求我們從靜態(tài)到動態(tài)分析 - 為給定的執(zhí)行場景測量每個(gè)消息通過的使用頻率。為此,已經(jīng)提出了幾種動態(tài)耦合度量[10]。這些指標(biāo)是測量對象耦合而不是類級耦合[11],超出了本文的范圍。
返回到靜態(tài)耦合度量,進(jìn)一步細(xì)化考慮了消息傳遞中涉及的參數(shù)的數(shù)量和性質(zhì)(無論是只讀還是讀寫)。在C ++的情況下,如果調(diào)用“friend”函數(shù),則會出現(xiàn)耦合中增加的復(fù)雜性。
總結(jié)了可以測量的逐漸更詳細(xì)的耦合處理。因此,可以將多個(gè)級別的細(xì)化和細(xì)節(jié)添加到耦合度量。問題是:需要什么級別的細(xì)化來使耦合度量具有足夠的有用的預(yù)測軟件維護(hù)特性?在本文的上下文中,北京軟件公司調(diào)查了在維修期為2 1/2年的應(yīng)用程序變更引起的商業(yè)C ++應(yīng)用程序中的波動效應(yīng)。在參考文獻(xiàn)。[12],使用了Chidamber和Kemerer CBO度量的基本實(shí)現(xiàn),僅使用類連接計(jì)數(shù)。該文件的結(jié)論是,雖然CBO測量確定了較易發(fā)生變化的課程,但并沒有確定那些較容易受到漣漪效應(yīng)變化的課程。
Fyson和Boldyreff [1]認(rèn)為,軟件開發(fā)生命周期成本的高達(dá)80%通常在維護(hù)階段消耗。在(a)預(yù)測各種軟件過程成本(如系統(tǒng)集成)時(shí),在維護(hù)期間測量類之間的耦合是重要的; (b)確定哪些預(yù)防性維護(hù)可能適用于在相互作用的類別的系統(tǒng)中的較佳效果;(c)評估變更對軟件系統(tǒng)的影響 - 所謂的影響分析[2]。
類之間的耦合測量提供了一種預(yù)防與影響分析相關(guān)的一些問題的方法。在聯(lián)軸器確定的階段,要做出的精確的改變通常是不知道的。然而,當(dāng)已經(jīng)生成了變更請求時(shí),類之間的精確耦合的知識可以通過突出應(yīng)用的區(qū)域來幫助后續(xù)的影響分析過程,如果必須修改可能導(dǎo)致非常顯著的連鎖效應(yīng)。
本研究中測量的聯(lián)軸器與聚合和關(guān)聯(lián)關(guān)系有關(guān)。沒有考慮繼承關(guān)系。Lindvall [3]已經(jīng)調(diào)查了Ericsson Radio Systems對商業(yè)C ++系統(tǒng)的變化的性質(zhì)。他的研究結(jié)果表明,在維護(hù)階段,“階級和繼承結(jié)構(gòu)是穩(wěn)定的,大體上保持不變”。這個(gè)發(fā)現(xiàn)與我們自己的研究結(jié)果一致[4],例如,Chidamber和Kemerer [5]的繼承深度(DIT)和兒童數(shù)量(NOC)度量分別只改變了兩個(gè)和四個(gè)班,的114套,對于這里研究的應(yīng)用,超過了2 1/2年的維護(hù)期。
測量內(nèi)部系統(tǒng)耦合可以通過多種方式實(shí)現(xiàn)[6]。目前尚不清楚哪些方法可以提供較佳的診斷能力。據(jù)推測,較詳細(xì)的耦合措施將是較好的,但是基本的Chidamber和Kemerer [5]耦合度量CBO的改進(jìn)是否有任何小的改進(jìn)?
耦合的較基本的測量方法是簡單地計(jì)算給定類具有鏈接的其他類的數(shù)量。如果CAR 存儲在 GARAGE中并由 PERSON 擁有,則假設(shè)CAR,PERSON和GARAGE是三個(gè)類,CAR將具有2的耦合值。通過此措施,了解哪些類在系統(tǒng)中較耦合做成
關(guān)于協(xié)會的方向存在一個(gè)問題:只應(yīng)該將雙向關(guān)聯(lián)計(jì)算在內(nèi)或單方向關(guān)聯(lián)?這個(gè)約束在后面的論文中被刪除,所以從一個(gè)類到另一個(gè)類的任何鏈接構(gòu)成一個(gè)耦合,而不管耦合類中是否存在相互引用。在本文中,我們通過單獨(dú)測量前向和后向關(guān)聯(lián)來明確地考慮關(guān)聯(lián)的方向。
Briand等人 [6]建議兩類之間的耦合強(qiáng)度可以從兩個(gè)方面確定:類之間的連接頻率和類之間的連接類型。接下來,對耦合的更徹底的處理可能包括對從一類對象傳遞到所有與之相連的對象的不同消息的數(shù)量的分析。Li和Henry [9]的消息傳遞耦合(MPC)度量解決了這個(gè)問題,參考文獻(xiàn)中提出的CCF度量也是如此。[4]并在此使用。
在這方面,我們還可以計(jì)算每個(gè)類別中給出的消息通過次數(shù)。在關(guān)聯(lián)使用方面的進(jìn)一步分析要求我們從靜態(tài)到動態(tài)分析 - 為給定的執(zhí)行場景測量每個(gè)消息通過的使用頻率。為此,已經(jīng)提出了幾種動態(tài)耦合度量[10]。這些指標(biāo)是測量對象耦合而不是類級耦合[11],超出了本文的范圍。
返回到靜態(tài)耦合度量,進(jìn)一步細(xì)化考慮了消息傳遞中涉及的參數(shù)的數(shù)量和性質(zhì)(無論是只讀還是讀寫)。在C ++的情況下,如果調(diào)用“friend”函數(shù),則會出現(xiàn)耦合中增加的復(fù)雜性。
總結(jié)了可以測量的逐漸更詳細(xì)的耦合處理。因此,可以將多個(gè)級別的細(xì)化和細(xì)節(jié)添加到耦合度量。問題是:需要什么級別的細(xì)化來使耦合度量具有足夠的有用的預(yù)測軟件維護(hù)特性?在本文的上下文中,北京軟件公司調(diào)查了在維修期為2 1/2年的應(yīng)用程序變更引起的商業(yè)C ++應(yīng)用程序中的波動效應(yīng)。在參考文獻(xiàn)。[12],使用了Chidamber和Kemerer CBO度量的基本實(shí)現(xiàn),僅使用類連接計(jì)數(shù)。該文件的結(jié)論是,雖然CBO測量確定了較易發(fā)生變化的課程,但并沒有確定那些較容易受到漣漪效應(yīng)變化的課程。