孫國利,王 遜
(江蘇科技大學 江蘇 鎮江 212003)
隨著Internet技術的發展,軟件系統的規模不斷變大,軟件的復雜度隨著程序的規模的增加呈指數級上升,軟件開發的成本和進度更加難以控制,軟件質量越來越不可靠,軟件危機也隨之而來。為了解決這一危機,M.D.Mcllroy提出了軟件復用、軟件構件、構件工廠等概念,他指出了發展軟件構件產業,通過構件組合和演化來構造軟件系統[3]的思想。基于構件的軟件開發(Component-based Software Development,CBSD)就是用一些已經存在的軟件構件來組裝新的軟件系統,構件被作為封裝的、規范的、可重用的軟件模塊,其實現的信息對用戶來說是透明的,用戶只需了解構件所提供的功能、非功能、部署和使用方法等信息。因此,使用構件可以減少軟件開發成本、縮短軟件開發時間、提高軟件復用率[1]。網構軟件是利用構件實現滿足動態、開放和多變的網絡環境、滿足用戶個性化需求的軟件系統。
然而,隨著構件產業的發展,越來越多的供應商提供相同或相似服務的構件,如何選擇合適的構件成為一個具有挑戰性的問題。人們經過研究發現,可信性評估[5]可作為網構軟件的衡量標準。從過去的研究中我們可以發現,許多不同的評估方法被提出。如:文獻[4]提出一個軟件可信的評估框架并給出了其實現方案;文獻[5]提出了一種基于軟件分級模型的可信性評估的方法;文獻[6]建立了一個可信性過程管理框架,其著重點在于通過提高軟件過程的可信性來提升整個軟件的可信性;文獻[7]的可信證據模型是基于驗證的,其給出的可信性評估方法從一定程度上來說能反映人對軟件的認知程度;文獻[8]的可信性評估對象是開源構件。但是,以上的研究成果或多或少都存在一些不足之處。如:文獻[4]是針對Internet環境下的特定軟件形態的軟件過程進行可信性評估的;文獻[5]對于可信屬性中的安全性等沒有充分的考慮,主要考慮了其可靠性的屬性;文獻[7]沒有給出可信性評估的具體實現方案,僅僅給出了其概念模型;文獻[8]中有的評估結果僅僅是可信或不可信,即二值的,不能充分體現軟件的可信度。
針對以上情況,本文提出了基于貝葉斯網絡的可信性評估模型來計算網構軟件的可信性值,根據得到的結果指導網構軟件的選擇。該模型首先對網構軟件進行結構分析,根據其模塊劃分和結構層次等建立相應的可信性評估體系;其次,采用自底向上的計算的方法確定各個軟件實體的可信性評估值;最后,利用客觀數據對評估指標進行修正,得到統一的可信性評估結果,再根據結果做出最優選擇。
眾所周知,軟件可信性不僅包含軟件可靠性、安全性和生存性等關鍵性質的簡單疊加,它還包括了軟件能力、軟件配置等軟件工程的相關因素。為了反映軟件的靜態和動態特性,并能夠對軟件做出靜態和動態的可信性評估,指標體系的性質研究是軟件可信性評價的基本評價粒度,對能否給出軟件的正確的可信性評估具有重要意義。
本文在軟件可信性評估指標體系的模型結構設計上,采用了層次式體系結構的評價思路,將軟件系統按照一定的規則,分割成若干層面來選取評價維度和指標。而對于搭建的可信性評估指標體系[2]要滿足以下要求:
1)模型是動態的,它能夠反映軟件開發過程中的多個即時狀態。
2)模型需引入一整套完整的評價機制[2],其中包括評價目標、評價屬性和對軟件產品及開發過程的評價標度。
3)模型應易于理解,并且具有一定的實用性。
這對這些要求,本文采用貝葉斯網絡的算法計算各個層次的軟件實體的可信性評估值,該方法不僅能夠計算出各個基層軟件實體的可信性評估值,且這些評估值是相互關聯的,使最終計算出來的評估值更加科學,能更好的指導網構軟件的選擇。
由于網構軟件往往是由底層軟件實體通過一定的規則組合成上層軟件,且底層構件之間往往存在互相影響的可能性,這一特性符合貝葉斯網絡[2]的原理,所以這里將系統滿足可信性指標時提供可信服務的條件概率當作系統的可信性,則可設可信性指標為 P(A)={P(Ai),i=1,2,3,4,…,n},通過貝葉斯公式推理計算可得到系統可信性指標P(Bs|Ai)為:

我們假設某個系統中,各層的軟件實體以及上下層軟件實體具有如下圖所示的關系:
根據貝葉斯推理,我們可以做出如下假定:其中,待考察的量應該遵循某種特定的概率分布,并且可根據這些概率和已經觀察到的數據所做出的推理來獲取最優值,以達到做出最優決策[9]的目的。

圖1 系統結構圖Fig.1 The diagram of system structure
在使用貝葉斯方法時,假設的最終概率不僅僅與觀察數據有關,還要考慮先驗知識在其中的作用。即:1)每個候選假設其自身的先驗概率;2)觀察數據上的各個可能假設的概率分布。對于上層元素,其預測是由多個假設一起通過某種規則做出的,再通過加權算法來計算出上層元素的概率。因此,要計算整個系統的可信性,各可信性指標值的獲取尤為重要。在本文中,初值是通過軟件測試的方式獲取的。
所以,圖1中實體M1的可信性可由其先驗概率計算而得,并通過評估指標進行修正。設M1的可信性為則由(1)式可以得到,

其中,P(BM1)是先驗指標,是對可靠性、可移植性、效率、易用性、功能性、可復用性和維護性等傳統可信指標進行初始評估而得到的指標稱之為評估指標,而通過評估指標可以獲得 P(A|BM1)和 P(A)。 假設各評估指標為 P(Ae)={P(Aei)|i=1,2,3,…,n},各先驗指標為 P(Ap)={P(Api)|i=1,2,3,…,n},則可變換(2)式為:

在網構軟件的系統中,計算上層實體的可信性時,我們還應當考慮到其基礎實體可信性對其自身的影響,即基礎實體由某種規則而組合在一起時的實體間的結構相依性和語義相依性[1]所產生的對上層實體的影響,我們稱之為集成可信性指標。
從圖1中我們可以看出:實體N2在計算自身的實體可信性時,還需使用到M1和M2的條件概率對其可信性進行修正。這里假設實體N2的可信性為P(BN2|A),其依賴的集體可信性指標為 P(BBp)={P(BBpi)|i=1,2,3,…,n}。 由此,實體 N2的可信性為:

則可以計算出實體 M1,M2,M3,N2,N3,Q 的可信性值,如下:
1)底層實體的可信性:

2)第二層實體的可信性:

3)頂層實體的可信性:

可以通過以上的方法對選出來的多種網構軟件的組合進行可信性值的計算,從而選出最優組合。
利用一個地名管理系統中的業務邏輯模塊對上述研究成果進行驗證,該業務邏輯模塊中包含郵件發送服務、地圖服務、天氣預報服務以及GPS定位服務等。對于系統的內部構件,采用網絡服務的形式,業務邏輯模塊之間的交互是通過標準WebService接口[11]進行的。
一是從必要性角度而言,由于《立法法》對于政府規章備案后審查、審查標準和程序、審查結果處理、不同審查主體審查結果沖突協調等均沒有涉及,《法規規章備案條例》對于行政系統與人大系統備案審查工作之間的關系、審查結果的沖突解決以及協調機制等也均沒有涉及,迫切需要從國家層面通過統一的立法來界定明晰。統一的立法安排能夠為限制行政權濫用、保護行政相對人合法權益、協調人大系統監督和行政系統監督關系提供一個較為合理的法制化平臺。
采用自底向上的方式對軟件結構進行分析,本文主要是利用該系統的業務邏輯模塊,所以下面主要對以上提及的4個服務進行分析。
1)郵件發送服務:主要提供主動或被動的郵件發送服務,主動體現在用戶與用戶之間的郵件服務,被動則指系統向用戶發送一些服務類郵件或是提醒用戶。
2)地圖服務:主要提供地圖服務,這里可以利用百度、谷歌或者高德提供的WebService接口。
3)天氣預報服務:主要為用戶提供實時的天氣情況,這里可以選取一些網絡供應商所提供的天氣預報服務。
4)GPS服務:主要提供定位功能,可以調用Internet上提供的免費的API給用戶提供實時準確的定位導航服務。
采用自底向上的方式逐層計算邏輯模塊的可信性,通過檢索的方式獲取多個需要的網構軟件基礎實體,以地圖服務為例,假設獲取基礎實體 K1、K2、K3,其中K1指谷歌地圖服務,K2指百度地圖服務,K3指高德地圖服務。首先計算K1、K2、K3的可信性,它們的可信性是首先通過先驗指標的匯總計算,再經過評估指標對其進行修正而得到。其中,獲取到的先驗指標為可靠性 0.92、可移植性 0.90、功能性 0.94、效率0.92、可復用性0.91。通過對其開發管理情況(包括文檔、測試、開發、編程規范等等)所獲得的事實證據對先驗概率進行修正,建立如表1所示的條件概率表。
表1所示為在不同條件下使用軟件的可信性評估條件概率。表中的值為滿足對應情況的程度,其值域范圍是[0,1]。例如:第1條數據表示軟件在具有系統架構、良好測試、過程管理、熟練員工、規范編程的情況下其可信性可以得到保證的程度。由于篇幅所限,僅僅列出幾條具有代表性的數據。
根據式(3)對地圖服務實體進行可信性計算,公式如下:


表1 可信性評估條件概率表Tab.1 The table of conditional probability of trustworthy assessment
對表1中的數據進行計算得到(其中每一條數據對應一種構件條件情況):
1)第一條數據:P(Ae)=0.31,P(Ae|B)=0.22
則,P(B|A)={0.31×(0.92×0.90×0.94×0.92×0.91)/0.22}=0.918
2)第二條數據:P(Ae)=0.37,P(Ae|B)=0.32
則,P(B|A)={0.37×(0.92×0.90×0.94×0.92×0.91)/0.32}=0.753
3)第三條數據:P(Ae)=0.08,P(Ae|B)=0.12
則,P(B|A)={0.08×(0.92×0.90×0.94×0.92×0.91)/0.12}=0.434
4)第四條數據:P(Ae)=0.41,P(Ae|B)=0.35
則,P(B|A)={0.41×(0.92×0.90×0.94×0.92×0.91)/0.35}=0.763
5)第五條數據:P(Ae)=0.55,P(Ae|B)=0.50
則,P(B|A)={0.55×(0.92×0.90×0.94×0.92×0.91)/0.40}=0.896
由以上數據可比較得出,滿足第一種情況下的構件選擇最優。
從上述數據分析可以得出,構件實體所滿足的評估指標越多,即軟件實體在設計、開發、測試、管理過程中越規范,則實體的可信性值越高,相應的軟件質量水平也就越高,這一點完全符合軟件質量保證理論[10]的思想,而計算結果也證明了這一點。
本文的計算方法使得用戶可以根據軟件實體的現實情況做出正確評估,而不是僅僅依靠網絡構件供應商所提供的數據,該方法能夠更好的指導用戶進行網構軟件的選擇。
本文通過使用貝葉斯網絡的計算方法,對網構軟件的可信性進行評估計算,實驗證明了該方法的可行性,在指導網構軟件選擇方面具有明顯的優勢。
本文還存在不足在之處,條件概率表中數據的取值是通過軟件測試的方式獲取的,如果能設計出一種算法,對初值進行精確量化,將會使整個系統的可信性評估值更加精確,這將是下一步研究努力的方向。
[1]付凌霄,彭鑫,趙文耘.基于Agent的網構軟件需求監控框架[J].計算機研究與發展,2013,50(5):1055-1065.FU Ling-xiao,PENG Xin,ZHAO WEN-yun.An agent-based requirements monitoring framework for internet-ware[J].Journal of Computer Research and Development,2013,50 (5):1055-1065.
[2]司冠南,任宇涵,許靜,等.基于貝葉斯網絡的網構軟件可信性評估模型[J].計算機研究與發展,2012,49(5):1028-1038.SI Guan-nan,REN Yu-han,XU Jing,et al.A dependability evaluation model for internet-ware based on Bayesian Network[J].Journal of Computer Research and Development.2012, 49(5):1028-1038
[3]文志誠,李長云,滿君豐.基于貝葉斯網的分布式軟件行為運行時可信性分析[J].小型微型計算機系統,2012,33(3):505-511.WEN Zhi-cheng,LI Chang-yun,MAN Jun-feng.Analyzing running-time behavioral credibility for distributed software based on Bayesian Network[J].Journal of Chinese Computer Systems,2012,33(3):505-511.
[4]Cai S B,Zou Y Z,Shao L S,et al.Framework supporting software assets evaluation on trustworthiness[J].Journal of Software,2010,21(2):359-372.
[5]Lang B,Liu X D,Wang H M,et al.A classification model for software trustworthiness[J].Journal of Frontiers of Computer Science and Technology,2010,4(3):231-239.
[6]Yang Y,Wang Q,Li M S.Process trustworthiness as a capability indicator for measuring and improving software trustworthiness[C]//Lecture Notes in Computer Science 5543:Proceedings of the International Conference on Software Process,2009:389-401.
[7]Ding X L,Wang H M,Wang Y Y.Verification oriented trustworthiness evidence and trustworthiness evaluation of software[J].Journal of Frontiers of Computer Science and Technology,2010,4(1):46-48.
[8]Immonen A,Palviainen M.Trustworthiness evaluation and testing of open source components[C]//Proceedings of the 7th International Conference on Quality Software (QSIC’07),2007.
[9]田俊峰,李珍,劉玉玲.一種可信軟件設計方法及可信性評價[J].計算機研究與發展,2011,48(8):1447-1451.TIAN Jun-feng,LIZhen,LIU Yu-ling.An design approach of trustworthy software and its trustworthiness evaluation[J].Journal of Computer Research and Development,2011,48(8):1447-1451.
[10]Mei,Hong.Internetware:A Software Paradigm for Internet Computing[J].Computer, EI SCI,2012.
[11]唐佳俊,黃志球,王進.一種Web服務組合的可信評估方法[J].計算機科學,2013,40(2):163-166.TANG Jia-jun,HUANG Zhi-qiu,WANG Jin.Approach for web service composition trustworthiness evaluation[J].Computer Science,2013,40(2):163-166.