北(běi)京軟件(jiàn)公司在C++應用(yòng)程序中的$♥→(de)耦合,重用(yòng)和(hé)維護的(de)調查_北(bě®εi)京軟件(jiàn)開(kāi)發公司
北(běi)京軟件(jiàn)公司Coupling因其對(duì)軟件(jiàn)設計∑(jì)的(de)貢獻而備受好(hǎo)λ≠✘∞評。它可(kě)以對(duì)系統集成和(h¶αé)維護成本産生(shēng)重大(dà)影(yǐng)響。理$Ω♣×(lǐ)想情況下(xià),交互對(duì)象應盡±σ可(kě)能(néng)松散地(dì)相σ≤✘©(xiàng)互耦合。
Fyson和(hé)Boldyreff [1]認£€γ為(wèi),軟件(jiàn)開(kāi)發生(shēng)命周期成γ ↑本的(de)高(gāo)達80%通(tōng)常在維護階段消耗。在(a)預 φ 測各種軟件(jiàn)過程成本(如(rú)α∞∞☆系統集成)時(shí),在維護期間(ji↑γ €ān)測量類之間(jiān)的(de)耦合是(∏πshì)重要(yào)的(de); (b)确定哪些(xiē)預防性φ≤¥ 維護可(kě)能(néng)适用(yòng)于在相(xiàng)互作(zuò) 用(yòng)的(de)類别的(de)系統中的(de)較佳效果;(β∏δc)評估變更對(duì)軟件(jiàn)系統的(de)影(yǐng)響 ±★₹- 所謂的(de)影(yǐng)響分(fēn)析[2$←£↕]。
類之間(jiān)的(de)耦合測量提供了(le)♠>"一(yī)種預防與影(yǐng)響分(fē×€✘n)析相(xiàng)關的(de)一(yī)些(xiē)問(wèn)題的(©$de)方法。在聯軸器(qì)确定的(de)階段,要(₩∞☆§yào)做(zuò)出的(de)精确的(de)改變通(tō∏φ↕ng)常是(shì)不(bù)知(zhī)道(dào)的•≥(de)。然而,當已經生(shēng)成了(le)變更請(qǐng)求時(s≥♥§♣hí),類之間(jiān)的(de)精确耦合的(de)知(zhī←₹)識可(kě)以通(tōng)過突出應用(yòng)的(de)區(≤qū)域來(lái)幫助後續的(de)影(yǐng)響分(fēn)✘<析過程,如(rú)果必須修改可(kě)能(néng)導 σε緻非常顯著(zhe)的(de)連鎖效應。
本研究中測量的(de)聯軸器(qì)與聚合和(hé)關聯關系有(yǒu®¥↑γ)關。沒有(yǒu)考慮繼承關系。Lindva₩★€>ll [3]已經調查了(le)Ericsson Radio Systems對↕₹λ(duì)商業(yè)C ++系統的(de)變★•化(huà)的(de)性質。他(tā)的(de)研究結果表明(míng),在維π§護階段,“階級和(hé)繼承結構是(shì)穩定的(de)α¶δ®,大(dà)體(tǐ)上(shàng)保持不(↔ bù)變”。這(zhè)個(gè)發現☆"₹®(xiàn)與我們自(zì)己的(de)研究結果一(yī)緻[4],例Ω¥如(rú),Chidamber和(hé)Kemerer [5]的( ±↓≤de)繼承深度(DIT)和(hé)兒(ér)童數(shù)量(NOC)度量分(λ©φ∞fēn)别隻改變了(le)兩個(gè)和(hé)四個(gè₹&α)班,的(de)114套,對(duì)于這(zhè)裡(lǐ)研究的☆λ (de)應用(yòng),超過了(le)≥₽2 1/2年(nián)的(de)維護期。
測量內(nèi)部系統耦合可(kě)以通(tōng)過多(duō)種方®<♠π式實現(xiàn)[6]。目前尚不(bù)清楚哪些(xiē)方法↓可(kě)以提供較佳的(de)診斷能(néng)力。據推測,¶¥較詳細的(de)耦合措施将是(shì)較好(hǎo)的£α(de),但(dàn)是(shì)基本的(de)Chida£₽>↔mber和(hé)Kemerer [5]耦合度量CBO的(de)改進是(sh×↕"ì)否有(yǒu)任何小(xiǎo)的(de)改進?
耦合的(de)較基本的(de)測量方法是(sh&★ì)簡單地(dì)計(jì)算(suàn)給定類具有(yǒu)鏈接的(de)其→↕π他(tā)類的(de)數(shù)量。如(rú)果CA €δR 存儲在 GARAGE中并由 PERSON 擁有(yǒ×σφ§u),則假設CAR,PERSON和(hé)GARAGE是(shì)三個(g±≠è)類,CAR将具有(yǒu)2的(de)& 耦合值。通(tōng)過此措施,了(le)解哪些(xiē₹ ")類在系統中較耦合做(zuò)成
關于協會(huì)的(de)方向存在一(yī)個(gè)問∞'∏(wèn)題:隻應該将雙向關聯計(jì)算(suàn)在內(nèi&♥λ)或單方向關聯?這(zhè)個(gè)約束在後面的(®↑de)論文(wén)中被删除,所以從(cóng)"®一(yī)個(gè)類到(dào)另一(yī)個(g∏±☆÷è)類的(de)任何鏈接構成一(yī)個(gè)耦合,而不(bù←✔ε)管耦合類中是(shì)否存在相(xià↕®¥ng)互引用(yòng)。在本文(wén)中,我們通(tōng)過單獨測量δ∑前向和(hé)後向關聯來(lái)明(míng₽≈&)确地(dì)考慮關聯的(de)方向。
Briand等人(rén) [6]建議(yì)兩類之間(jiā¥$n)的(de)耦合強度可(kě)以從(cón§γ"↓g)兩個(gè)方面确定:類之間(jiān¶'≤)的(de)連接頻(pín)率和(hé)類之間(λ'≈♦jiān)的(de)連接類型。接下(xià)來(l♣∞ái),對(duì)耦合的(de)更徹底的(d•☆e)處理(lǐ)可(kě)能(néng)包括對(duì)從(cóπ"ng)一(yī)類對(duì)象傳遞到(dào)所有(yǒu)與之相γΩ≤(xiàng)連的(de)對(duì)象的(de)不(bù)同 消息的(de)數(shù)量的(de)分(fēn)©•析。Li和(hé)Henry [9]的(de)消息傳遞耦合(M☆$¶PC)度量解決了(le)這(zhè)個(gè)問(₩&←←wèn)題,參考文(wén)獻中提出的(de)CCF度量也(yě)是(shì)™<→如(rú)此。[4]并在此使用(yòng)。
在這(zhè)方面,我們還(hái)可(π ♠∑kě)以計(jì)算(suàn)每個(gè)類别中給出的(de)消息通(tō&•δng)過次數(shù)。在關聯使用(yò"✔ng)方面的(de)進一(yī)步分(fēn)析要(yào)求我們從(cóng§≥≠)靜(jìng)态到(dào)動态分(fēn★<β )析 - 為(wèi)給定的(de)執行(xíng)場(chǎng)景測量每λ¶ 個(gè)消息通(tōng)過的(de)使用(yòng)頻(p≤'×ín)率。為(wèi)此,已經提出了(le)幾種動态耦∞£₹合度量[10]。這(zhè)些(xiē)指标是(shì)測量→↓對(duì)象耦合而不(bù)是(shì)類級耦合[11],超出了(le)本文≥®∏(wén)的(de)範圍。
返回到(dào)靜(jìng)态耦合度量,ε 進一(yī)步細化(huà)考慮了(le)消息傳遞中涉及的(de)參數(sh≠↕↑₹ù)的(de)數(shù)量和(hé)性質(無論是(shì)隻讀(dú)♦¶₹→還(hái)是(shì)讀(dú)寫)。在C ++的(de)情況下(xià),→&←如(rú)果調用(yòng)“fr∏≥iend”函數(shù),則會(huìβλ₹)出現(xiàn)耦合中增加的(de)複雜(zá)性。
總結了(le)可(kě)以測量的(de)逐漸更詳細的(d≈±e)耦合處理(lǐ)。因此,可(kě)以将多(duō)個(gè)級别∞∏✘Ω的(de)細化(huà)和(hé)細節添加到(dào)耦合度量。問(α₽↑≈wèn)題是(shì):需要(yào)什(shén)麽級别的(d∞↕♣γe)細化(huà)來(lái)使耦合度量具有(yǒ© α←u)足夠的(de)有(yǒu)用(yòng)的(de)預★ ♠→測軟件(jiàn)維護特性?在本文(wén)的(de)上↓♣✘(shàng)下(xià)文(wén)中,
北(běi)京軟件(jiàn)公司調查了(le)在維修期為(wèi)2 1γ×/2年(nián)的(de)應用(yòng)®↔✔®程序變更引起的(de)商業(yè)C ++應用(yòng)程序中的(de)波動ε↔"效應。在參考文(wén)獻。[12],使用(yòng)了(le∞™♠)Chidamber和(hé)Kemerer ♣÷CBO度量的(de)基本實現(xiàn),&♥僅使用(yòng)類連接計(jì)數(shù)。該文(wén)件(jià♣₩πn)的(de)結論是(shì),雖然CBO測量确定了(le)較易發生(shē≤×♥ng)變化(huà)的(de)課程,但(dàn)并沒♠∞↑有(yǒu)确定那(nà)些(xiē)較容易受到(dào)漣漪效應變化(huà¶¥γ)的(de)課程。