洪 蕾,謝 銳
(1. 金陵科技學(xué)院軟件工程學(xué)院,江蘇 南京 211169;2. 上海交通大學(xué)網(wǎng)絡(luò)信息中心,上海 200240)
軟件需求分析表示通過非形式的需求陳述變換為完備的需求設(shè)定,并將需求設(shè)定變換為對(duì)應(yīng)的軟件功能約束條件[1,2]。需求分析是軟件工作的核心要素,是軟件研發(fā)的初始階段,一個(gè)軟件的成功開發(fā)多數(shù)取決于軟件需求策略的有效性與全面性[3]。集成化軟件是憑借應(yīng)用需求將多個(gè)軟件合并在一起協(xié)同工作的軟件類型,具有巨大的發(fā)展空間與研究意義[4,5]。
軟件需求工程的研究較為繁瑣,用戶需求牽涉要素眾多,致使軟件研發(fā)存在較多復(fù)雜性問題;需求工程涉及人員較多,譬如軟件用戶、問題領(lǐng)域?qū)<?、?xiàng)目管理人員等。此類人員通常擁有不同背景知識(shí),溝通比較困難;用戶對(duì)問題的描述不完整,與預(yù)期設(shè)定的軟件需求相悖。針對(duì)上述問題,相關(guān)領(lǐng)域進(jìn)行了大量研究,目前常用的方法主要有基于用例的軟件需求建模方法和基于特征組合的軟件需求建模方法,雖然現(xiàn)有方法均能夠?qū)崿F(xiàn)軟件需求的分析與響應(yīng),但是還存在以下問題:軟件并發(fā)事務(wù)響應(yīng)時(shí)間較長(zhǎng),軟件執(zhí)行效率不高以及負(fù)載均衡效果不佳,不能有效使集成化軟件更加符合用戶操作需求變化,提升軟件整體的運(yùn)行質(zhì)量。
對(duì)集成化軟件而言,當(dāng)前仍舊缺少合適的技術(shù)與方式來完成用戶需求與軟件需求間的完美匹配。為此提出一種基于目標(biāo)驅(qū)動(dòng)的集成化軟件需求建模方法。將負(fù)載均衡作為軟件目標(biāo)驅(qū)動(dòng),優(yōu)化軟件的協(xié)同能力,采用數(shù)據(jù)儲(chǔ)存層、中間層與應(yīng)用層完成集成化軟件需求模型構(gòu)建。
負(fù)載均衡是解決處理器之間公平配發(fā)工作,得到最優(yōu)響應(yīng)時(shí)間、資源利用率與吞吐量的機(jī)制,因此,考慮集成化軟件需求時(shí)要著重注意負(fù)載均衡情況[6]。集成化軟件板塊的初始化問題與裝箱問題的原理相似,將資源大小收斂關(guān)系的解析式定義為
(1)
式(1)代表第j個(gè)處理器內(nèi)安置的軟件板塊不高于處理器相對(duì)資源剩余數(shù)量,xij是第i個(gè)軟件板塊處于第j個(gè)處理器內(nèi)部,一個(gè)軟件板塊只能存在于某個(gè)通用處理器內(nèi)。
將物理機(jī)負(fù)載情況描述成
Load(j)=Pj/Rj
(2)
式中,Pj是第j個(gè)處理器內(nèi)安置的軟件板塊個(gè)數(shù),Rj是第j個(gè)處理器可安置個(gè)數(shù)的負(fù)載最高值。
處理器的負(fù)載均衡使用負(fù)載資源標(biāo)準(zhǔn)差來定義,構(gòu)建以下目標(biāo)函數(shù)
(3)
(4)
則負(fù)載均衡適應(yīng)度函數(shù)為
(5)
適應(yīng)度函數(shù)值越高,集成化軟件負(fù)載均衡度越低,證明處理器資源分布標(biāo)準(zhǔn)差越低,也就是軟件負(fù)載分布較為平均,這時(shí)的集成化部署策略相對(duì)完善。
集成化軟件中協(xié)同與分布式系統(tǒng)內(nèi)的任務(wù)分配與調(diào)配問題逐步受到多方關(guān)注,也就是在多項(xiàng)式時(shí)間中不能利用窮舉法探尋最佳解。本文采用遺傳算法來更好地優(yōu)化目標(biāo)驅(qū)動(dòng)理念下的軟件負(fù)載均衡問題。
2.2.1 種群初始化
種群規(guī)模表示隨機(jī)一代種群的個(gè)體數(shù)量,個(gè)體數(shù)目對(duì)遺傳算法多樣性具有重要影響,個(gè)數(shù)越多,種群多樣性越好,但同時(shí)也會(huì)增加計(jì)算次數(shù),導(dǎo)致運(yùn)行速率緩慢,倘若個(gè)數(shù)較少,極易出現(xiàn)早熟問題。早熟就是在遺傳計(jì)算初始階段,部分個(gè)體適應(yīng)度很高,遺傳運(yùn)算時(shí)此個(gè)體處于下一代的概率較多,減少了交叉與變異操作對(duì)多種群的影響,不能確保獲得準(zhǔn)確的種群多樣性,丟失了全局最優(yōu)解。除了要明確種群大小,還要篩查初始化種群:任意生成一條染色體,收斂染色體資源利用率,維持負(fù)載處于[Load1,Loadh]之內(nèi)。設(shè)置初始種群染色體數(shù)量是S,軟件板塊個(gè)數(shù)是n。
2.2.2 遺傳算子優(yōu)化
遺傳算子經(jīng)過選擇、雜交與突變來實(shí)現(xiàn)繁衍新種群的目標(biāo),本文從選擇算子、交叉算子與變異算子優(yōu)化等方面完成遺傳算子優(yōu)化。選擇機(jī)制是遺傳算法內(nèi)的重要操作項(xiàng)目,其核心是按照相應(yīng)方式任意挑選個(gè)體留存到下一代。憑借個(gè)體適應(yīng)度大小與準(zhǔn)則,在第N代群體內(nèi)擇取出某些擁有良好狀態(tài)的遺傳個(gè)體迭代至下一代(N+1)群體內(nèi)。在整個(gè)選擇流程中,個(gè)體適應(yīng)度越高,被挑選至下一代的幾率越高。
根據(jù)適應(yīng)度函數(shù)大小排序全部染色體,運(yùn)用精英個(gè)體留存模式,挑選匹配程度最大的個(gè)體,剔除匹配性差的個(gè)體。采用輪盤賭方法[7],若各染色體進(jìn)入下一代進(jìn)化的幾率等于適應(yīng)度值和種群個(gè)體適應(yīng)度總和的比率。設(shè)個(gè)體k適應(yīng)度為Fk,種群為NP,那么個(gè)體k被選擇的幾率是
(6)
輪盤賭選擇法的計(jì)算過程為:
生成一個(gè)隨機(jī)概率,記作
P=rand(1)Pi
(7)
其中,P表示隨機(jī)概率,rand(1)代表輪盤循環(huán)周期。如果Pl-1
(8)
交叉算子操作流程中,在種群內(nèi)任意挑選兩條染色體,同時(shí)產(chǎn)生一個(gè)任意數(shù)值當(dāng)作時(shí)間點(diǎn),將各個(gè)染色體劃分成兩部分,交換處于此時(shí)段右邊部分產(chǎn)生全新的種群后代。使用多點(diǎn)交叉形式[8],幫助增強(qiáng)種群多樣性,提升獲得優(yōu)質(zhì)染色體的概率,最大限度優(yōu)化遺傳算法的局部搜尋性能與約束性,詳細(xì)過程為:
挑選父代染色體A、B,使用任意數(shù)值明確首個(gè)交叉方位點(diǎn)o,然后循環(huán)交叉;將父代染色體A第Y個(gè)基因作為起始點(diǎn),得到并交換和第Y個(gè)基因處于B內(nèi)方位相對(duì)的基因值a,再獲得相對(duì)于B內(nèi)相同方位的基因值b,并實(shí)施交換。反復(fù)執(zhí)行此項(xiàng)操作,在染色體A中探尋基因b,直至在B內(nèi)找出A的首個(gè)基因值為止,循環(huán)交叉終止。若在全部搜尋流程中,在另外的染色體內(nèi)沒有找出對(duì)應(yīng)的基因,那么交換處于該方位的基因。
變異操作是把種群內(nèi)的各條染色體使用概率Pm采取突變。變異概率較低不易生成全新個(gè)體,變異概率過高也會(huì)擾亂基因遺傳整個(gè)流程,破壞原有的優(yōu)質(zhì)基因。按照遺傳學(xué)定理,基因突變是低概率事件,遺傳算法中的變異算子對(duì)種群影響要低于交叉算子,通常設(shè)置變異概率低于0.25。變異算子需要處理兩個(gè)重要問題:怎樣確立變異方位與怎樣完成基因變異[9,10]。變異算法和基因編碼模式相關(guān)。使用單點(diǎn)變異策略,在基因編碼內(nèi)隨機(jī)選擇一個(gè)點(diǎn),使用隨機(jī)概率實(shí)現(xiàn)變異計(jì)算,計(jì)算的變量為變異概率Pm然后在rand(1) 利用計(jì)算迭代數(shù)量終止計(jì)算,但在最佳個(gè)體適應(yīng)度為固定臨界值不再產(chǎn)生改變時(shí),也就是最佳個(gè)體適應(yīng)度與群體適應(yīng)度不再繼續(xù)上升,計(jì)算也會(huì)停止,通常把代數(shù)規(guī)劃為60~110代。停止迭代后,即可得到最優(yōu)響應(yīng)時(shí)間、資源利用率與吞吐量結(jié)果,實(shí)現(xiàn)預(yù)期集成化軟件負(fù)載均衡目標(biāo)。 融合負(fù)載均衡目標(biāo)驅(qū)動(dòng)策略,創(chuàng)建一個(gè)集成化的軟件需求模型(Integrated Software Requirement Model,ISRM),經(jīng)過擴(kuò)充工程項(xiàng)目管理系統(tǒng)(Engineering Project Management System,EPMS),在軟件需求建模過程中引入獲得用戶信息與描述用戶信息的功能,讓所建軟件可以快速有效得到用戶實(shí)際需求。該需求建模工具描述了過程模型到需求模型的變換原則,實(shí)現(xiàn)二種不同模型間的自主變換。ISRM體系架構(gòu)共包含三部分:數(shù)據(jù)儲(chǔ)存層、中間層與應(yīng)用層,詳情參考圖1。 圖1 ISRM軟件模型體系架構(gòu) 數(shù)據(jù)儲(chǔ)存層可實(shí)現(xiàn)對(duì)工程項(xiàng)目管理系統(tǒng)拓展數(shù)據(jù)、數(shù)據(jù)流圖及相關(guān)語義數(shù)據(jù)的保存。中間層能實(shí)現(xiàn)對(duì)信息的核心操作,也就是實(shí)現(xiàn)數(shù)據(jù)流圖的自主生成和正文屬性編輯等任務(wù)。中間層中,SGEG表示結(jié)構(gòu)化圖像編輯工具,具有結(jié)構(gòu)交互式架構(gòu)化圖像編輯能力。應(yīng)用層內(nèi)涵蓋工程項(xiàng)目管理系統(tǒng)與數(shù)據(jù)流圖編輯兩個(gè)程序。工程項(xiàng)目管理系統(tǒng)的關(guān)鍵性能是構(gòu)建過程模型并快速優(yōu)化過程模型不足,為了最大化實(shí)現(xiàn)集成化軟件需求,對(duì)需求模型采取拓展操作,增添了面向用戶取向的功能,最終使用Auto-Generator代碼器完成需求轉(zhuǎn)變?nèi)蝿?wù)。 本文使用該工具構(gòu)造了Auto-Generator代碼生成器,完成對(duì)數(shù)據(jù)流圖的操作,同時(shí)把圖形數(shù)據(jù)自主保存至訂單管理系統(tǒng)。ADO(ActiveX Data Objects)數(shù)據(jù)對(duì)象為Microsoft數(shù)據(jù)庫程序研發(fā)的應(yīng)用層接口,是一種新型的高層數(shù)據(jù)庫訪問機(jī)制,利用ADO接口即可訪問保存于關(guān)聯(lián)數(shù)據(jù)庫內(nèi)的數(shù)據(jù)流圖信息。數(shù)據(jù)流圖組成接口是集成化軟件需求建模的核心要素,能支撐對(duì)數(shù)據(jù)流圖的各類操作控制和邏輯關(guān)系梳理。該子板塊運(yùn)用合成技術(shù),經(jīng)過調(diào)配SGEG、ADO供應(yīng)的接口實(shí)現(xiàn)數(shù)據(jù)層中的數(shù)據(jù)庫及正文屬性控制。Auto-Generator代碼器調(diào)配數(shù)據(jù)流圖組成接口實(shí)現(xiàn)過程模型向?qū)?yīng)數(shù)據(jù)流圖變換的任務(wù)。此項(xiàng)工作過程以COS(Component Object Model,組件對(duì)象模型)構(gòu)件的模式存在,COS是一個(gè)進(jìn)程內(nèi)構(gòu)件,通過工程項(xiàng)目管理系統(tǒng)對(duì)此構(gòu)建實(shí)施處理,實(shí)現(xiàn)需求轉(zhuǎn)變功能,轉(zhuǎn)變結(jié)果會(huì)產(chǎn)生一個(gè)數(shù)據(jù)流圖信息。 數(shù)據(jù)流圖編輯能夠?qū)崿F(xiàn)數(shù)據(jù)流圖的編繪、預(yù)覽及屬性定義書寫等工作,自主獲取數(shù)據(jù)字典等一系列相關(guān)需求文本檔案。數(shù)據(jù)流圖編輯程序的整體結(jié)構(gòu)如圖2所示。 圖2 數(shù)據(jù)流圖編輯器結(jié)構(gòu)示意圖 集成化軟件需求模型核心技術(shù)包含COM構(gòu)件與合成技術(shù),構(gòu)件是能夠重復(fù)使用的軟件構(gòu)成部分。前面內(nèi)容涉及的自主變換工具Auto-Generator代碼器是一個(gè)COM構(gòu)件。融合COM構(gòu)件與工程項(xiàng)目管理系統(tǒng)的原因在于:工程項(xiàng)目管理系統(tǒng)是一個(gè)體積較大的系統(tǒng),在采取拓展時(shí),若大量修改系統(tǒng)代碼會(huì)導(dǎo)致系統(tǒng)運(yùn)行出現(xiàn)問題,產(chǎn)生錯(cuò)誤數(shù)據(jù)。因此,工程項(xiàng)目管理系統(tǒng)僅需調(diào)配接口函數(shù)就能實(shí)現(xiàn)過程模型至需求模型的變換,方便集成化軟件最終的建立與應(yīng)用。 對(duì)所提方法進(jìn)行仿真分析,仿真環(huán)境為體積較小的個(gè)人計(jì)算機(jī)進(jìn)行測(cè)驗(yàn),建模環(huán)境為VC++6.0編譯器,圖形編制工具為MATLAB。首先分析目標(biāo)驅(qū)動(dòng)中的集成化軟件負(fù)載均衡性能優(yōu)劣,判斷方法是否完成預(yù)期的目標(biāo)驅(qū)動(dòng)工作。設(shè)置原始虛擬機(jī)個(gè)數(shù)為150,物理機(jī)個(gè)數(shù)為25。由前文可知本文目標(biāo)驅(qū)動(dòng)即為軟件負(fù)載均衡優(yōu)化,因此,驗(yàn)證負(fù)載均衡優(yōu)化前后集成化軟件資源占用率方差之間的差別,如圖3所示。 圖3 集成化軟件資源負(fù)載均衡前后對(duì)比 從圖3看出,集成化軟件進(jìn)行負(fù)載均衡優(yōu)化后,能夠取得良好的負(fù)載均衡效果,大幅增強(qiáng)集成化軟件的協(xié)同運(yùn)行能力,可實(shí)現(xiàn)軟件與用戶之間良好的交互性。 為驗(yàn)證所提方法的可靠性,將本文方法與基于用例的軟件需求建模方法和基于特征組合的軟件需求建模方法進(jìn)行對(duì)比分析。首先,比較三種方法響應(yīng)時(shí)間,仿真結(jié)果如圖4所示。 圖4 三種方法的軟件并發(fā)事務(wù)響應(yīng)時(shí)間 從圖4可知,本文方法響應(yīng)時(shí)間要低于兩個(gè)傳統(tǒng)方法,響應(yīng)時(shí)間控制在30s上下,符合用戶對(duì)集成化軟件反應(yīng)速度的要求,證明本文方法建立的ISRM需求模型能夠充分融合用戶實(shí)際需要,提高了集成化軟件適用性。 分別標(biāo)記集成化軟件中的四個(gè)程序?yàn)镻1、P2、P3、P4,P1,程序執(zhí)行時(shí)間采用時(shí)間計(jì)數(shù)器記錄下的時(shí)間作為基準(zhǔn),其余程序利用硬件周期計(jì)數(shù)器得到執(zhí)行基準(zhǔn)時(shí)間。表1是三種方法對(duì)用戶需求執(zhí)行效率檢測(cè)數(shù)據(jù)。 表1 三種方法下的軟件執(zhí)行效率對(duì)比/s 從表1看出,不論處于何種程序中,本文方法下的集成化軟件執(zhí)行時(shí)間都是最接近最佳執(zhí)行基準(zhǔn)時(shí)間的。這是因?yàn)榉椒?gòu)建軟件需求模型時(shí),運(yùn)用Auto-Generator代碼器完成需求轉(zhuǎn)變?nèi)蝿?wù),有效捕獲用戶實(shí)際需要,快速執(zhí)行對(duì)應(yīng)任務(wù),也表明所提方法優(yōu)越性,在不同執(zhí)行程序中均可完成預(yù)期用戶操作需求。 為了給用戶提供更加迎合自身操作需求的集成化軟件,設(shè)計(jì)基于目標(biāo)驅(qū)動(dòng)的集成化軟件需求建模方法。該方法引入用戶信息并準(zhǔn)確描述用戶信息深層含義,將負(fù)載均衡作為軟件優(yōu)化目標(biāo),通過數(shù)據(jù)儲(chǔ)存層、中間層與應(yīng)用層三層架構(gòu)得到集成化軟件需求模型。接下來會(huì)進(jìn)一步改進(jìn)建模語言,讓模型變得更為精簡(jiǎn),具備更強(qiáng)的實(shí)用性。2.3 集成化軟件需求建模方法實(shí)現(xiàn)
3 仿真研究
4 結(jié)論