洪 蕾,謝 銳
(1. 金陵科技學院軟件工程學院,江蘇 南京 211169;2. 上海交通大學網絡信息中心,上海 200240)
軟件需求分析表示通過非形式的需求陳述變換為完備的需求設定,并將需求設定變換為對應的軟件功能約束條件[1,2]。需求分析是軟件工作的核心要素,是軟件研發的初始階段,一個軟件的成功開發多數取決于軟件需求策略的有效性與全面性[3]。集成化軟件是憑借應用需求將多個軟件合并在一起協同工作的軟件類型,具有巨大的發展空間與研究意義[4,5]。
軟件需求工程的研究較為繁瑣,用戶需求牽涉要素眾多,致使軟件研發存在較多復雜性問題;需求工程涉及人員較多,譬如軟件用戶、問題領域專家、項目管理人員等。此類人員通常擁有不同背景知識,溝通比較困難;用戶對問題的描述不完整,與預期設定的軟件需求相悖。針對上述問題,相關領域進行了大量研究,目前常用的方法主要有基于用例的軟件需求建模方法和基于特征組合的軟件需求建模方法,雖然現有方法均能夠實現軟件需求的分析與響應,但是還存在以下問題:軟件并發事務響應時間較長,軟件執行效率不高以及負載均衡效果不佳,不能有效使集成化軟件更加符合用戶操作需求變化,提升軟件整體的運行質量。
對集成化軟件而言,當前仍舊缺少合適的技術與方式來完成用戶需求與軟件需求間的完美匹配。為此提出一種基于目標驅動的集成化軟件需求建模方法。將負載均衡作為軟件目標驅動,優化軟件的協同能力,采用數據儲存層、中間層與應用層完成集成化軟件需求模型構建。
負載均衡是解決處理器之間公平配發工作,得到最優響應時間、資源利用率與吞吐量的機制,因此,考慮集成化軟件需求時要著重注意負載均衡情況[6]。集成化軟件板塊的初始化問題與裝箱問題的原理相似,將資源大小收斂關系的解析式定義為

(1)
式(1)代表第j個處理器內安置的軟件板塊不高于處理器相對資源剩余數量,xij是第i個軟件板塊處于第j個處理器內部,一個軟件板塊只能存在于某個通用處理器內。
將物理機負載情況描述成
Load(j)=Pj/Rj
(2)
式中,Pj是第j個處理器內安置的軟件板塊個數,Rj是第j個處理器可安置個數的負載最高值。
處理器的負載均衡使用負載資源標準差來定義,構建以下目標函數

(3)


(4)
則負載均衡適應度函數為

(5)
適應度函數值越高,集成化軟件負載均衡度越低,證明處理器資源分布標準差越低,也就是軟件負載分布較為平均,這時的集成化部署策略相對完善。
集成化軟件中協同與分布式系統內的任務分配與調配問題逐步受到多方關注,也就是在多項式時間中不能利用窮舉法探尋最佳解。本文采用遺傳算法來更好地優化目標驅動理念下的軟件負載均衡問題。
2.2.1 種群初始化
種群規模表示隨機一代種群的個體數量,個體數目對遺傳算法多樣性具有重要影響,個數越多,種群多樣性越好,但同時也會增加計算次數,導致運行速率緩慢,倘若個數較少,極易出現早熟問題。早熟就是在遺傳計算初始階段,部分個體適應度很高,遺傳運算時此個體處于下一代的概率較多,減少了交叉與變異操作對多種群的影響,不能確保獲得準確的種群多樣性,丟失了全局最優解。除了要明確種群大小,還要篩查初始化種群:任意生成一條染色體,收斂染色體資源利用率,維持負載處于[Load1,Loadh]之內。設置初始種群染色體數量是S,軟件板塊個數是n。
2.2.2 遺傳算子優化
遺傳算子經過選擇、雜交與突變來實現繁衍新種群的目標,本文從選擇算子、交叉算子與變異算子優化等方面完成遺傳算子優化。選擇機制是遺傳算法內的重要操作項目,其核心是按照相應方式任意挑選個體留存到下一代。憑借個體適應度大小與準則,在第N代群體內擇取出某些擁有良好狀態的遺傳個體迭代至下一代(N+1)群體內。在整個選擇流程中,個體適應度越高,被挑選至下一代的幾率越高。
根據適應度函數大小排序全部染色體,運用精英個體留存模式,挑選匹配程度最大的個體,剔除匹配性差的個體。采用輪盤賭方法[7],若各染色體進入下一代進化的幾率等于適應度值和種群個體適應度總和的比率。設個體k適應度為Fk,種群為NP,那么個體k被選擇的幾率是

(6)
輪盤賭選擇法的計算過程為:
生成一個隨機概率,記作
P=rand(1)Pi
(7)
其中,P表示隨機概率,rand(1)代表輪盤循環周期。如果Pl-1

(8)
交叉算子操作流程中,在種群內任意挑選兩條染色體,同時產生一個任意數值當作時間點,將各個染色體劃分成兩部分,交換處于此時段右邊部分產生全新的種群后代。使用多點交叉形式[8],幫助增強種群多樣性,提升獲得優質染色體的概率,最大限度優化遺傳算法的局部搜尋性能與約束性,詳細過程為:
挑選父代染色體A、B,使用任意數值明確首個交叉方位點o,然后循環交叉;將父代染色體A第Y個基因作為起始點,得到并交換和第Y個基因處于B內方位相對的基因值a,再獲得相對于B內相同方位的基因值b,并實施交換。反復執行此項操作,在染色體A中探尋基因b,直至在B內找出A的首個基因值為止,循環交叉終止。若在全部搜尋流程中,在另外的染色體內沒有找出對應的基因,那么交換處于該方位的基因。
變異操作是把種群內的各條染色體使用概率Pm采取突變。變異概率較低不易生成全新個體,變異概率過高也會擾亂基因遺傳整個流程,破壞原有的優質基因。按照遺傳學定理,基因突變是低概率事件,遺傳算法中的變異算子對種群影響要低于交叉算子,通常設置變異概率低于0.25。變異算子需要處理兩個重要問題:怎樣確立變異方位與怎樣完成基因變異[9,10]。變異算法和基因編碼模式相關。使用單點變異策略,在基因編碼內隨機選擇一個點,使用隨機概率實現變異計算,計算的變量為變異概率Pm然后在rand(1) 利用計算迭代數量終止計算,但在最佳個體適應度為固定臨界值不再產生改變時,也就是最佳個體適應度與群體適應度不再繼續上升,計算也會停止,通常把代數規劃為60~110代。停止迭代后,即可得到最優響應時間、資源利用率與吞吐量結果,實現預期集成化軟件負載均衡目標。 融合負載均衡目標驅動策略,創建一個集成化的軟件需求模型(Integrated Software Requirement Model,ISRM),經過擴充工程項目管理系統(Engineering Project Management System,EPMS),在軟件需求建模過程中引入獲得用戶信息與描述用戶信息的功能,讓所建軟件可以快速有效得到用戶實際需求。該需求建模工具描述了過程模型到需求模型的變換原則,實現二種不同模型間的自主變換。ISRM體系架構共包含三部分:數據儲存層、中間層與應用層,詳情參考圖1。 圖1 ISRM軟件模型體系架構 數據儲存層可實現對工程項目管理系統拓展數據、數據流圖及相關語義數據的保存。中間層能實現對信息的核心操作,也就是實現數據流圖的自主生成和正文屬性編輯等任務。中間層中,SGEG表示結構化圖像編輯工具,具有結構交互式架構化圖像編輯能力。應用層內涵蓋工程項目管理系統與數據流圖編輯兩個程序。工程項目管理系統的關鍵性能是構建過程模型并快速優化過程模型不足,為了最大化實現集成化軟件需求,對需求模型采取拓展操作,增添了面向用戶取向的功能,最終使用Auto-Generator代碼器完成需求轉變任務。 本文使用該工具構造了Auto-Generator代碼生成器,完成對數據流圖的操作,同時把圖形數據自主保存至訂單管理系統。ADO(ActiveX Data Objects)數據對象為Microsoft數據庫程序研發的應用層接口,是一種新型的高層數據庫訪問機制,利用ADO接口即可訪問保存于關聯數據庫內的數據流圖信息。數據流圖組成接口是集成化軟件需求建模的核心要素,能支撐對數據流圖的各類操作控制和邏輯關系梳理。該子板塊運用合成技術,經過調配SGEG、ADO供應的接口實現數據層中的數據庫及正文屬性控制。Auto-Generator代碼器調配數據流圖組成接口實現過程模型向對應數據流圖變換的任務。此項工作過程以COS(Component Object Model,組件對象模型)構件的模式存在,COS是一個進程內構件,通過工程項目管理系統對此構建實施處理,實現需求轉變功能,轉變結果會產生一個數據流圖信息。 數據流圖編輯能夠實現數據流圖的編繪、預覽及屬性定義書寫等工作,自主獲取數據字典等一系列相關需求文本檔案。數據流圖編輯程序的整體結構如圖2所示。 圖2 數據流圖編輯器結構示意圖 集成化軟件需求模型核心技術包含COM構件與合成技術,構件是能夠重復使用的軟件構成部分。前面內容涉及的自主變換工具Auto-Generator代碼器是一個COM構件。融合COM構件與工程項目管理系統的原因在于:工程項目管理系統是一個體積較大的系統,在采取拓展時,若大量修改系統代碼會導致系統運行出現問題,產生錯誤數據。因此,工程項目管理系統僅需調配接口函數就能實現過程模型至需求模型的變換,方便集成化軟件最終的建立與應用。 對所提方法進行仿真分析,仿真環境為體積較小的個人計算機進行測驗,建模環境為VC++6.0編譯器,圖形編制工具為MATLAB。首先分析目標驅動中的集成化軟件負載均衡性能優劣,判斷方法是否完成預期的目標驅動工作。設置原始虛擬機個數為150,物理機個數為25。由前文可知本文目標驅動即為軟件負載均衡優化,因此,驗證負載均衡優化前后集成化軟件資源占用率方差之間的差別,如圖3所示。 圖3 集成化軟件資源負載均衡前后對比 從圖3看出,集成化軟件進行負載均衡優化后,能夠取得良好的負載均衡效果,大幅增強集成化軟件的協同運行能力,可實現軟件與用戶之間良好的交互性。 為驗證所提方法的可靠性,將本文方法與基于用例的軟件需求建模方法和基于特征組合的軟件需求建模方法進行對比分析。首先,比較三種方法響應時間,仿真結果如圖4所示。 圖4 三種方法的軟件并發事務響應時間 從圖4可知,本文方法響應時間要低于兩個傳統方法,響應時間控制在30s上下,符合用戶對集成化軟件反應速度的要求,證明本文方法建立的ISRM需求模型能夠充分融合用戶實際需要,提高了集成化軟件適用性。 分別標記集成化軟件中的四個程序為P1、P2、P3、P4,P1,程序執行時間采用時間計數器記錄下的時間作為基準,其余程序利用硬件周期計數器得到執行基準時間。表1是三種方法對用戶需求執行效率檢測數據。 表1 三種方法下的軟件執行效率對比/s 從表1看出,不論處于何種程序中,本文方法下的集成化軟件執行時間都是最接近最佳執行基準時間的。這是因為方法構建軟件需求模型時,運用Auto-Generator代碼器完成需求轉變任務,有效捕獲用戶實際需要,快速執行對應任務,也表明所提方法優越性,在不同執行程序中均可完成預期用戶操作需求。 為了給用戶提供更加迎合自身操作需求的集成化軟件,設計基于目標驅動的集成化軟件需求建模方法。該方法引入用戶信息并準確描述用戶信息深層含義,將負載均衡作為軟件優化目標,通過數據儲存層、中間層與應用層三層架構得到集成化軟件需求模型。接下來會進一步改進建模語言,讓模型變得更為精簡,具備更強的實用性。2.3 集成化軟件需求建模方法實現


3 仿真研究



4 結論