張春陽, 陳 卓, 吳慶濤
(河南科技大學(xué)電子信息工程學(xué)院,河南 洛陽 471003)
基于組件的軟件復(fù)用被認(rèn)為是提高軟件生產(chǎn)率的有效途徑之一?;诮M件的開發(fā)成為近年來軟件工程領(lǐng)域研究的最新熱點(diǎn)。其主要貢獻(xiàn)在于提高生產(chǎn)率,縮短上市時(shí)間,提高軟件的質(zhì)量,減少維護(hù)的成本,允許不同應(yīng)用之間的相互操作,同時(shí)也意味著降低了風(fēng)險(xiǎn)的程度提高系統(tǒng)功能性。上述前提是組件最優(yōu)復(fù)用和最優(yōu)組合。在進(jìn)行基于組件的軟件開發(fā)中產(chǎn)生諸多問題,怎樣才能進(jìn)行組件最優(yōu)組合,發(fā)揮出組合后最大的優(yōu)勢(shì)。目前狀況是,商業(yè)市場(chǎng)是組件的主要來源,這給項(xiàng)目開發(fā)人員帶來很多不便,諸如,開發(fā)人員對(duì)組件信息掌握不全,不能全面理解,不同組件之間信息交流的問題,組成一個(gè)系統(tǒng)后可能會(huì)產(chǎn)生沖突等。組件的最優(yōu)化組合是影響項(xiàng)目開發(fā)成功的關(guān)鍵技術(shù)之一。本文就詳細(xì)討論了組件組合的最優(yōu)化方法。用構(gòu)件進(jìn)行組合的思想早在70年代就已提出了[1],從80年代開始又產(chǎn)生出了新的生命力。構(gòu)件技術(shù)是90年代軟件技術(shù)的一個(gè)重要進(jìn)展,獨(dú)立于語言的。它只規(guī)定構(gòu)件的外在表現(xiàn)形式,而不關(guān)心其內(nèi)部實(shí)現(xiàn)方法;它既可用面向編程語言實(shí)現(xiàn),也可用非面向?qū)ο蟮倪^程語言實(shí)現(xiàn)。
基于構(gòu)件的組合技術(shù)在國(guó)際上正以迅猛的勢(shì)頭發(fā)展,它已成為新一代軟件技術(shù)發(fā)展的標(biāo)志,有數(shù)據(jù)顯示2008年[2],所有軟件解決方案中有70%是使用構(gòu)件和模板這樣的“積木”來建造的。當(dāng)然大型的軟件公司及軟件組織機(jī)構(gòu)都推出了支持構(gòu)件技術(shù)的軟件平臺(tái)。中國(guó)軟件業(yè)對(duì)構(gòu)件技術(shù)的研究機(jī)構(gòu)有北京大學(xué)軟件工程研究所,上海普元等。組件組合涉及其他相關(guān)決策,開發(fā)人員往往對(duì)被選擇的組件特性和行為細(xì)節(jié)缺乏足夠了解,因此組件選擇成為影響項(xiàng)目成功的決定性因素之一。目前,組合這方面技術(shù)的研究還不多,效用函數(shù)法發(fā)揮出了很大的優(yōu)勢(shì)。此法運(yùn)用實(shí)驗(yàn)心理學(xué)原理,將不可公度的目標(biāo)函數(shù)或準(zhǔn)則轉(zhuǎn)化為單一的目標(biāo)函數(shù),提高決策的準(zhǔn)確性。接下來要做的工作為運(yùn)用基于效用函數(shù)的多屬性分析方法和AHP方法進(jìn)行組件的最優(yōu)化組合。
多屬性效用函數(shù)法是多目標(biāo)決策的主要方法之一[3],它是運(yùn)用了試驗(yàn)心理學(xué)原理,將不可公度的目標(biāo)函數(shù)或準(zhǔn)則轉(zhuǎn)化為單一的目標(biāo)函數(shù)。它主要是用于提高決策的準(zhǔn)確性,使每一個(gè)方面都得到最佳的狀態(tài),避免沖突的發(fā)生。多屬性效用函數(shù)分析法最大的好處是它能用來比較兩個(gè)根本不具備可比性的物體,類似于“蘋果和香蕉”哪個(gè)更好這類問題。對(duì)于分析這類問題,基于效用函數(shù)分析法是非常有價(jià)值的。
定義1 目標(biāo)(Objective):目標(biāo)是主體對(duì)客體的需求在概念上的反映。決策的目標(biāo)只有兩個(gè)方向:極大或是極小。
定義2 屬性(Attribute):屬性是影響決策問題的一個(gè)或一組變量。
定義 3 準(zhǔn)則(Criteria):準(zhǔn)則是衡量判斷事務(wù)對(duì)主體有效性的標(biāo)度,是比較,評(píng)價(jià)的基準(zhǔn)。準(zhǔn)則通常表現(xiàn)為屬性或目標(biāo)。
設(shè)n個(gè)屬性 f1, f2,… ,fn,對(duì)于這些指標(biāo)分別給一定的功效函數(shù)(即評(píng)分) di(0 ≤ di≤ 1 )用來描述 di與指標(biāo)值 fi之間的關(guān)系稱為功效函數(shù),即 d1= F ( f1)。
具體的方法與步驟如下:
①定性技術(shù)經(jīng)濟(jì)指進(jìn)行量化處理,得到相應(yīng)的定量數(shù)據(jù);
②將①處理后的數(shù)據(jù)與原始數(shù)據(jù)按對(duì)應(yīng)的方案組成指標(biāo)矩陣;
③無量綱處理:
通過公式可得到新的無量綱矩陣;
④求功效函數(shù)值指標(biāo)矩陣。按式(1)、(2)、(3)進(jìn)行規(guī)范化處理,求得所有指標(biāo)的功效函數(shù)值(0 ≤≤ 1)。得到功效函數(shù)值 D = ();
⑤計(jì)算各指標(biāo)權(quán)重。通過專家打分,求得各指標(biāo)權(quán)重w = ( w1, w2,… ,wn);
⑥計(jì)算各方案綜合權(quán)重 c(Ai),并根據(jù)各方案綜合權(quán)重值的大小進(jìn)行排序。取權(quán)重值大的為最優(yōu)方案。
層次分析法是美國(guó)匹茲堡大學(xué)T.L.Saaty 教授與20世紀(jì)70年代創(chuàng)立的,簡(jiǎn)稱為AHP(Analytic Hierarchy Process)[4],主要用于多目標(biāo)的復(fù)雜決策問題。決策者將復(fù)雜問題分成若干層次和若干因素,進(jìn)行簡(jiǎn)單的比較和計(jì)算。層次分析法的過程基本如下[5]:
①AHP層次的確定;
②每個(gè)層次依次進(jìn)行層次單排序,這樣做的目的是確定本層次與上層次中的某元素有聯(lián)系的各個(gè)元素重要性次序的權(quán)值。具體的做法為創(chuàng)建一個(gè)判斷矩陣其中ija是元素iA與jA相比的重要程度,,計(jì)算這個(gè)矩陣的最大特征值及相對(duì)應(yīng)的特征向量,特征向量為單排序的權(quán)重值,下一步是判斷矩陣的一致性,最后為合成權(quán)重。利用同一層次所有層次單排序的結(jié)果,就可以計(jì)算針對(duì)上一層次而言的本層次所有元素的重要性權(quán)重值。最后得到一組值,選擇這組數(shù)值當(dāng)中最大的即可。
這兩種方法都是多目標(biāo)情況下的決策分析法,每種方法都是有利有弊。將這兩種方法進(jìn)行結(jié)合,目的是想發(fā)揮最大的優(yōu)勢(shì),有效的避免弊端。確定每一類參與者的相對(duì)重要性和屬性對(duì)于每一類參與者的相對(duì)影響這兩個(gè)步驟,使用AHP法來做。
隨著企業(yè)信息化的發(fā)展,中小企業(yè)需要公司的內(nèi)部網(wǎng)絡(luò)平臺(tái),由于很多因素,他們沒有獨(dú)立開發(fā)所需要的軟件或平臺(tái)的能力,只能依靠從第三方的組件庫(kù)中挑選適合自己情況的組件進(jìn)行相互組合來滿足需要。我們總體的目標(biāo)為:滿足我們要求的最小成本,如圖1成本分析圖所示。
圖1 成本分析
根據(jù)該結(jié)構(gòu)圖,分步驟給出屬性對(duì)目標(biāo)的優(yōu)先序:
確定每一類參與者的相對(duì)重要性;確定屬性對(duì)于每一類參與者的相對(duì)影響;確定屬性相對(duì)于目標(biāo)的優(yōu)先序。前兩步通過AHP來實(shí)現(xiàn),判斷矩陣計(jì)算結(jié)果如表1所示。
表1 判斷矩陣計(jì)算結(jié)果
求出矩陣的最大特征值,及這個(gè)最大特征值對(duì)應(yīng)的特征向量,計(jì)算過程就不在此詳細(xì)的列出來了,最后得到一組權(quán)重值(0.5568,0.0798,0.2560)。由表2,表3中數(shù)據(jù)可知第2種組合方案是這三種方案中最優(yōu)的。
表2 屬性的備選方案進(jìn)行優(yōu)劣排序
表3 各個(gè)方案的屬性的效用值
構(gòu)造效用函數(shù)法是一種比較直觀的分析法,好處為它能把兩個(gè)根本不具備可比性的指標(biāo)拿到一起進(jìn)行比較。按照某種規(guī)則,稱為相互可比的量化指標(biāo)。這種方法可評(píng)判更多技術(shù)及經(jīng)濟(jì)指標(biāo)的多個(gè)方案。AHP及效用函數(shù)法已經(jīng)在經(jīng)濟(jì)上和運(yùn)籌學(xué)方面發(fā)揮了很大的作用。在計(jì)算機(jī)的領(lǐng)域中,用到的地方還不是很多。由于是初始階段,研究人員剛剛把這種數(shù)學(xué)方法應(yīng)用到基于組件的軟件開發(fā)中。這種方法在選擇最優(yōu)化的任何問題上,提供了理論的保證,以便我們挑選出的組件組合成的新系統(tǒng)功能更強(qiáng)大,穩(wěn)定性更好。
[1] 錢航煒,項(xiàng)凱.軟件組件獲取方法的研究[J].計(jì)算機(jī)工程與應(yīng)用,2005,11(10): 90-91.
[2] 李孝明,曹萬華.一種軟件構(gòu)件的分類與檢索的實(shí)現(xiàn)技術(shù)[J].計(jì)算機(jī)與數(shù)字工程,2004,21(03):73-75.
[3] 曾紅衛(wèi),繆淮扣.構(gòu)件組合的抽象精化驗(yàn)證[J].軟件學(xué)報(bào),2008,17(09):26-28.
[4] 吳建玉,胡文紅,張運(yùn)濤.基于J2EE架構(gòu)的大壩安全信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].通信技術(shù),2008,41(12):319-320.
[5] 孫莉.基于構(gòu)件的軟件測(cè)試中測(cè)試用例分配優(yōu)化研究[J].通信技術(shù),2008,41(10):193-194.