張興華
(黑龍江職業學院 黑龍江 哈爾濱 150800)
軟件體系結構和軟件系統的度量向來受到重視,但在軟件體系結構適應性度量方面,相關研究數量較少,現有的度量方法也存在實用性問題。為更好開展軟件體系結構層次的適應性度量,本文圍繞該課題開展具體研究,具體內容如下。
在開發和維護軟件的過程中,適應特定變化的能力極為關鍵,軟件適應性屬于軟件開發中重要的質量特征,能夠對軟件適應變化能力進行直觀反映。在國內外相關研究中,軟件適應性的研究向來受到重視,如有研究將軟件適應性定義為構件或系統適應環境和業務應用改變進行變化的難易程度,也有研究認為軟件適應環境和需求變化付出的能力為軟件適應性。在對軟件適應性的認識和理解中,近年來軟件設計領域的快速發展發揮著重要作用,這種發展在模塊化設計、結構化設計、軟件體系結構設計、面向對象設計等方面均有著直觀體現,對軟件適應性提升帶來了較為積極影響,軟件設計階段的適應性評價和度量也因此引起業界人士的高度重視。在設計軟件體系結構的過程中,基于連接件、構件等高度抽象概念,軟件體系結構能夠對軟件的頂層設計進行描述,這屬于開發軟件過程的重要環節。結合近年來國內外圍繞軟件體系結構模式開展的研究可以發現,多數軟件體系結構模式會對軟件適應性產生影響,而結合相關經驗可以確定,軟件適應性很大程度上由軟件體系結構設計決定。為明確軟件體系結構層次的適應性度量方法,本文研究圍繞面向方面軟件體系結構適應性度量開展研究,希望研究內容能夠給相關實踐提供啟發[1]。
在軟件適應性通用度量過程中,該過程可細分為度量指標制定、度量數據收集、度量指標計算、度量結果分析、反饋度量信息共5 個環節。在度量指標制定環節,研究引入AC2-ADL 描述語言,面向方面軟件體系結構元素可由此細分為四元組,即:
式(1)中的Com、ACom、Con、ACon 分別為面向方面軟件體系結構中的常規組件集合、方面組件集合、連接件集合、方面連接件集合,常規組件集合中的Ci屬于計算單元或數據單元,Coni→j負責組件間交互,方面連接件在其中負責方面組件間、常規組件與方面組件間的交互[2]。
在度量數據收集環節,需結合具體需求進行研究,適應性場景的創建基于頭腦風暴方法完成,系統各種運行活動可通過場景得到滿足。在創建完成適應性場景后,各場景的權重需要由風險承擔者開展分析,進而針對性完成權值計算,場景的重要程度可基于權值大小明確,場景發生概率也能夠同時明確;在度量指標計算環節,需結合度量數據和度量指標,對面向方面軟件體系結構的適應性進行度量,這一過程使用功能點計算方法,通過針對性計算結構元素各功能點,可確定ADSA 值和IOSA 值;度量結果分析需要結合上一環節計算結果,進而圍繞面向方面軟件體系結構開展全面的適應性程度評估;反饋度量信息環節需要結合上一環節得到的結果,由風險承擔者決策面向方面軟件體系結構的適應性滿足需求情況,面向方面軟件體系結構缺陷可同時發現,進而針對性調整體系結構[3]。
結合上文明確的通用度量過程,研究引入軟件體系結構的適應性度量指標ADSA 和IOSA,IOSA 需同時進行擴展,保證面向方面軟件體系結構中兩種度量指標能夠較好用于適應性度量,具體公式為:
上式中的IA、CSk、PSk、TSk分別為適應性場景下軟件體系結構的影響分析結果、第k 個適應性場景下受影響的組件集合、第k 個適應性場景下的概率、第k 個適應性場景下受影響連接件的集合,CSk值的計算可使用功能點計算方法,TSk值的計算可使用相同方法,進而確定FP(CSk)、FP(TSk)值。基于( ]1,0 的ADSA 取值范圍,此時IOSA 取值范圍為(0 ,∞],為保證存在[ ]1,0 間的ADSA 取值范圍,需保證存在接近1的N取值,結合相關研究,本文確定1.01為N 取值。為實現對面向方面軟件體系結構適應性的度量,結合式(1),可針對性擴展軟件體系結構適應性度量指標IOSA 計算方法,面向方面軟件體系結構的適應性程度度量可得到擴展后的IOSA支持,具體公式為:
在軟件規模的早期階段度量中,功能點計算極為關鍵,這一計算需要聚焦用戶角度,以此劃分系統功能,具體可以劃分為外部接口文件、內部邏輯文件、外部輸出、外部輸入、外部查詢共5 種類型。按照復雜程度,可進一步細分系統功能組件為高、中、低等級[5]。為實現對面向方面軟件體系結構元素復雜程度的度量,結合組件、連接件、方面組件、方面連接件特點,本文研究中的第k 個適應性場景權值計算使用方面交互類型,在這方面交互類型的具體應用中,其公式可表示為:
上式中的Wij代表類型i 權值和類型j 復雜程度,Xij代表面向方面軟件體系結構連接件或組件的類型及復雜程度。對于系統基本特征,技術復雜度因子可估算其影響程度,具體的影響范圍為0 ~5,0、5 分為沒有影響、嚴重影響,所有基本特征影響程度的綜合為總影響程度。在基于功能點的計算過程中,技術復雜程度因子與“未調整的功能點”乘積即可完成功能點計算。結合外部接口文件、內部邏輯文件、外部輸出、外部輸入、外部查詢D 復雜程度計算,可得到“未調整的功能點”,0.65 ~1.35 為技術復雜度因子取值范圍,因此可確定:
上式中的TCF、UFP、FP 分別為技術復雜度因子、未調整的功能點、功能點。
適應性場景Sk中受影響組件、連接件、方面組件、方面連接件的集合可分別表示為Comsk、Consk、Aomsk、Aonsk,受影響的組件可細分為3 類,包括刪除的、增加的、修改的組件,受影響的連接件可細分為刪除的、增加的、修改的連接件,受影響的方面連接件和方面組件均可由此細分,由此可確定面向方面軟件體系結構 適應性直接受到變化的組件、連接件、方面組件、方面連接件影響。結合上述分析,可擴展式(3),得到:
上式中的 FP(Commdi)、 FP(Comdel)、 FP(Comadd)分別代表刪除的、增加的、修改的組件,FP(ACommdi)、 FP(AComdel)、FP(AComadd)分別代表刪除的、增加的、修改的方面組件,FP(Conmdi)、 FP(Condel)、 FP(Conadd)分別代表刪除的、增加的、修改的連接件,FP(AConmdi)、 FP(ACondel)、 FP(AConadd)分別代表刪除的、增加的、修改的方面連接件。
本文以某公司的業務系統作為研究對象,案例公司主要提供3 種業務,包括家庭保險、汽車保險、人壽保險,業務系統需要設法控制業務風險并實時跟蹤保單及客戶的變更情況,通過對保單變更情況的監聽,系統業務正常運行能夠得到保障。
研究采用AC2-ADL描述語言,方面軟件體系結構的組件及方面組件可由此分離,結合功能點計算方法,針對性擴展IOSA 度量指標,系統面向方面軟件體系結構的適應性程度可由此針對性計算。
在面向方面軟件體系結構的設計中,體系結構的橫切行為可基于 AC2 -ADL 描述語言分離,該描述語言在面向方面軟件體系結構和常規體系結構中的應用均能夠發揮預期效果。結合圖1 進行分析可以發現,圖中的虛線框、實線框分別代表面向方面軟件體系結構的方面組件、組件,虛線箭頭、實線箭頭分別代表方面連接件、連接件。
在用于相同文件解決的橫切行為中進行多種影響多個模塊封裝,分散的模塊得以集中,如保單變更監聽器、權限定義、身份認證。設S1、S2、S3、S4、S5、S6、S7、S8、S9、S10 對應的面向方面軟件體系結構適應性場景分別為客戶變更保單、審計日志方面組件增加、界面美化、保單信息分類查找、保單到期提醒、關閉客戶端窗口、保單變更監聽器監聽保單變更情況、客戶查詢參保信息、制定理賠方案、客戶參保多項保單,對應面向方面軟件體系結構的適應性權值分別為0.15、0.20、0.05、0.05、0.05、0.05、0.20、0.05、0.10、0.10,這里的適應性權值基于式(3)估算求得,面向方面軟件體系結構受到的適應性場景影響程度可由此明確[6]。
圍繞系統的體系結構設計方案進行分析可以發現,上文中的“理賠方案”“跟蹤理賠”“身份認證”“保單信息”屬于系統內部邏輯文件,“人壽保單”“家庭保單”“汽車保單”屬于外部輸入,“查詢”“客戶信息”“汽車信息”屬于外部查詢,“顯示保單信息”為外部輸出?;谙到y的通用系統基本特征并進行針對性幅值,可確定系統總影響程度、技術復雜度因子分別為17、0.82,結合式(4)即可對面向方面軟件體系結構的IOSA度量指標大小進行估算,同時可對各個適應性場景下系統體系結構的功能點度量值進行估算。結合每種適應性場景下通過實驗確定的面向方面軟件體系結構影響分析值,結合式(6)計算方法,即可對面向方面軟件體系結構的IOSA度量指標在上述適應性場景下的對應值進行計算,具體可確定面向方面軟件體系結構的IOSA度量指標為41.343,進一步計算可確定ADSA度量指標為0.663。
S1、S2、S3、S4、S5、S6、S7、S8、S9、S10 適應性場景對應的面向方面軟件體系結構適應性權值分別為0.15、0.20、0.05、0.05、0.05、0.05、0.20、0.05、0.10、0.10,在適應性場景的具體變化中,S8、S9、S10 的影響分析值為0,S3、S4、S5、S6 的影響分析值同樣為0,這說明系統的面向方面軟件體系結構能夠適應這類變化場景,面向方面軟件體系結構不會受到影響,但S1、S2、S7 適應性場景對對面向方面軟件體系結構出現適應性變更時,面向方面軟件體系結構會受到較大影響,如S9 存在高達96.31 的適應性場景下影響分析值。在對面向方面軟件體系結構適應性程度的量化中,本文研究選擇度量方法,在早期的體系結構設計過程中,風險承擔者的體系結構早期階段決策能夠獲得充足依據。結合度量結果進行分析不難發現,0.663 的的面向方面軟件體系結構ADSA度量指標距離預期結果存在一定差距,因此需要適當調整系統的面向方面軟件體系結構。
適應性場景S1、S2、S7 的影響分析值分別為79.46、96.31、50.85,適應性場景下影響分析值的高低能夠反映場景變化對面向方面軟件體系結構的適應情況,越低的適應性場景影響分析值說明ADSA 度量指標面向方面軟件體系結構存在越高的值,這說明該場景與面向方面軟件體系結構的適應程度越高。結合適應性場景影響分析值進行分析可以確定,多方面因素會對面向方面軟件體系結構適應性造成影響,主要包括:(1)新的組件、方面組件增加。如新的組件、方面組件需要在面向方面軟件體系結構中增加,這會導致方面組件與組件、組件與組件在體系結構中的交互出現變化;(2)元素的修改或添加。如需要對面向方面軟件體系結構中的元素進行修改或添加,元素將無法對自動Web 等服務進行支持,這源于系統環境自動適應能力缺失;(3)新增元素。對于新增的面向方面軟件體系結構元素,為保證變化能夠由面向方面軟件體系結構較好適應,必須適當修改面向方面軟件體系結構,如需要對保單組件進行修改,連接件也需要進行修改,對應的方面連接件需同時增加;(4)刪除元素。對于面向方面軟件體系結構中的元素來說,這類元素承擔著信息交互功能,這使得其會對面向方面軟件體系結構適應性程度造成影響,結合對影響因素的分析,本文適當調整系統面向方面軟件體系結構連接件和組件,如在場景S2 中,受審計日志方面組件的新增影響,多個保險系統組件被橫切,由此可得到增強的系統耦合度。深入分析可以發現,“保單信息組件”包括“家庭保單”“人壽保單”“汽車保單”,受變更的保單客戶信息影響,“家庭保單”“人壽保單”“汽車保單”不再由審計日志方面組件橫切,審計日志方面組件會對“保單變更監聽器”進行直接調用,這是由于其記錄有對應變更信息,這種情況下新增的審計日志方面組件會對“保單信息”和“保單變更監聽器”產生影響,而非之前的“家庭保單”“人壽保單”“汽車保單”“保單信息”,系統復雜程度因此降低。面向方面軟件體系結構在調整后的適應性場景影響分析值仍使用功能點度量方法進行計算,結合計算得到的結果可以確定,面向方面軟件體系結構在場景S1、S2、S7 時的影響分析值分別為32.43、32.49、34.33,相較于之前求得的結果,適應性場景影響分析值改善顯著。結合上文研究對面向方面軟件體系結構的IOSA度量指標、ADSA 度量指標進行重新計算,可取得二者的結果分別為22.182、0.801。
綜上所述,軟件體系結構層次的適應性度量技術具備較高應用價值。在此基礎上,本文涉及的適應性度量指標擴展、功能點計算方法、適應性度量、度量指標、度量數據、度量結果、度量信息反饋等內容,則直觀展示了適應性度量技術應用路徑。為更好開展軟件體系結構層次的適應性度量,還應關注度量指標的擴展,同時設法提升度量指標的實用性。