文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)04-0040-05
現(xiàn)有的軟件系統(tǒng)多采用傳統(tǒng)開(kāi)發(fā)方法且只針對(duì)某個(gè)具體應(yīng)用開(kāi)發(fā),軟件與設(shè)備及軟件內(nèi)部各模塊間耦合緊密,軟件可復(fù)用性低、可擴(kuò)展性差。
基于構(gòu)件的軟件開(kāi)發(fā)方法[1],其思想是使軟件能夠像硬件那樣,通過(guò)各部分的動(dòng)態(tài)組裝完成整個(gè)應(yīng)用系統(tǒng)的功能?;跇?gòu)件的軟件工程CBSE(Component Based Software Engineering)逐漸成為軟件開(kāi)發(fā)的主流模式[2],已成為近幾年學(xué)術(shù)界和產(chǎn)業(yè)界共同關(guān)注和研究的熱點(diǎn)。
1 構(gòu)件模型
相對(duì)于傳統(tǒng)對(duì)象而言,構(gòu)件將抽象程度提到一個(gè)更高的層次,整個(gè)構(gòu)件隱藏了具體的實(shí)現(xiàn),只用接口提供服務(wù)。這樣,構(gòu)件可以將底層的多個(gè)邏輯組合成高層次上的粒度更大的新構(gòu)件,甚至直接封裝到一個(gè)系統(tǒng)中,使模塊的重用從代碼級(jí)、對(duì)象級(jí)、架構(gòu)級(jí)到系統(tǒng)級(jí)都可能實(shí)現(xiàn)[3-5]。
1.1 構(gòu)件模型
為了在后期使用構(gòu)件時(shí)能夠快速檢索到需要的構(gòu)件,必須對(duì)構(gòu)件進(jìn)行分類。構(gòu)件可以使用多種分類方法。本系統(tǒng)先將構(gòu)件分為原子構(gòu)件Ca和復(fù)合構(gòu)件Cc兩大類,原子構(gòu)件是不能再分的構(gòu)件,復(fù)合構(gòu)件是由原子構(gòu)件或復(fù)合構(gòu)件組成的構(gòu)件。
原子構(gòu)件可表示為Ca=(IDa,Na,Ta,Ia,Oa,Ma,Da),其中,IDa為原子構(gòu)件唯一標(biāo)識(shí);Na為原子構(gòu)件名稱;Ta為原子構(gòu)件類型集合(包括子類型集合),父類型和子類型用樹(shù)形結(jié)構(gòu)表示;Ia為原子構(gòu)件輸入接口集合(包括各接口的名稱、參數(shù)、參數(shù)類型);Oa為原子構(gòu)件輸出接口集合(包括各接口的名稱、參數(shù)、參數(shù)類型);Ma為原子構(gòu)件消息集合;Da為原子構(gòu)件描述信息(包括構(gòu)件存儲(chǔ)路徑、索引關(guān)鍵字、功能描述、編寫語(yǔ)言、作者、制作日期、版本)。
復(fù)合構(gòu)件可表示為Cc=(IDc,Nc,Tc,Ic,Oc,Mc,Dc,IDas,Ras),其中,IDc為復(fù)合構(gòu)件唯一標(biāo)識(shí);Nc為復(fù)合構(gòu)件名稱;Tc為復(fù)合構(gòu)件類型集合(包括子類型集合),父類型和子類用樹(shù)形結(jié)構(gòu)表示;Ic為復(fù)合構(gòu)件輸入接口指針集合,該指針指向組成復(fù)合構(gòu)件的原子構(gòu)件對(duì)應(yīng)輸入接口;Oc為復(fù)合構(gòu)件輸出接口指針集合,該指針指向組成復(fù)合構(gòu)件的原子構(gòu)件對(duì)應(yīng)輸出接口;Mc為復(fù)合構(gòu)件消息集合;Dc為復(fù)合構(gòu)件描述信息(包括構(gòu)件存儲(chǔ)路徑、索引關(guān)鍵字、功能描述、編寫語(yǔ)言、作者、制作日期、版本);IDas為組成復(fù)合構(gòu)件的原子構(gòu)件IDa集合;Ras為組成復(fù)合構(gòu)件的原子構(gòu)件的連接關(guān)系。
原子構(gòu)件和復(fù)合構(gòu)件又可以根據(jù)功能劃分為界面構(gòu)件、通信構(gòu)件、數(shù)據(jù)庫(kù)構(gòu)件、業(yè)務(wù)構(gòu)件等。其中,每一類構(gòu)件又可細(xì)分為很多子類。構(gòu)件粒度越小,復(fù)用度越高,構(gòu)件耦合度越低,但構(gòu)件庫(kù)中構(gòu)件的數(shù)量也會(huì)隨著粒度的變小而劇增,這會(huì)給構(gòu)件的檢索帶來(lái)不便。因此,應(yīng)根據(jù)具體需求,把握好構(gòu)件的粒度??蓞⒖际?1)[6]:
1.2 基于構(gòu)件的軟件開(kāi)發(fā)過(guò)程
面向構(gòu)件的軟件開(kāi)發(fā)過(guò)程如圖1所示。具體描述如下:
(1)總體設(shè)計(jì)者對(duì)業(yè)務(wù)系統(tǒng)進(jìn)行需求分析后得到功能需求和框架需求。
(2)構(gòu)件分析者根據(jù)功能需求進(jìn)行構(gòu)件需求分析后得到構(gòu)件需求;同時(shí)框架實(shí)現(xiàn)者根據(jù)框架需求對(duì)系統(tǒng)框架進(jìn)行實(shí)現(xiàn)。
(3)構(gòu)件實(shí)現(xiàn)者根據(jù)構(gòu)件需求對(duì)構(gòu)件進(jìn)行實(shí)現(xiàn),并經(jīng)過(guò)嚴(yán)格測(cè)試和修改后得到合格的構(gòu)件。
(4)構(gòu)件庫(kù)管理者可以將新制作的構(gòu)件注冊(cè)入庫(kù),為了能快速檢索到構(gòu)件,構(gòu)件入庫(kù)時(shí)必須對(duì)其信息進(jìn)行精確全面的描述。本文使用XML描述構(gòu)件信息,并使用XML Schema對(duì)構(gòu)件描述文檔進(jìn)行合法性檢驗(yàn),只有描述合法的構(gòu)件才可以入庫(kù),從而確保構(gòu)件描述信息的一致性和完整性。構(gòu)件庫(kù)管理者可以對(duì)構(gòu)件庫(kù)中的構(gòu)件進(jìn)行刪除、注銷、檢索等操作。
(5)構(gòu)件組裝者根據(jù)具體需要從構(gòu)件庫(kù)中檢索需要的構(gòu)件,并在系統(tǒng)框架下進(jìn)行組裝后形成應(yīng)用系統(tǒng),構(gòu)件組裝者還負(fù)責(zé)對(duì)應(yīng)用系統(tǒng)的測(cè)試與維護(hù)。
(6)應(yīng)用系統(tǒng)交付用戶使用并提出修改意見(jiàn)與建議,構(gòu)件組裝者再根據(jù)用戶需求進(jìn)行修改。
2 基于構(gòu)件的軟件框架
面向構(gòu)件的軟件開(kāi)發(fā)過(guò)程中,構(gòu)件組裝和運(yùn)行需要特殊的環(huán)境,這種特殊的運(yùn)行環(huán)境稱為框架。一個(gè)框架由一些規(guī)則、建議和習(xí)慣組成,它們從構(gòu)件的角度定義了一個(gè)系統(tǒng)結(jié)構(gòu),并定義了系統(tǒng)的各組成部分之間是如何通信和實(shí)現(xiàn)互操作的。因此,設(shè)計(jì)框架時(shí),必須自己定義構(gòu)件及框架的規(guī)范,使用者只有遵循這些規(guī)范,才能將構(gòu)件集成到框架中。本系統(tǒng)框架包括構(gòu)件組裝框架和構(gòu)件運(yùn)行框架兩部分,這兩個(gè)框架由系統(tǒng)框架管理器管理,以確保系統(tǒng)在某一時(shí)刻,只能處于其中一個(gè)框架下。系統(tǒng)處于構(gòu)件組裝框架時(shí),可實(shí)現(xiàn)構(gòu)件組裝、功能模塊組裝、應(yīng)用系統(tǒng)集成、應(yīng)用系統(tǒng)修改、應(yīng)用系統(tǒng)功能擴(kuò)展等功能。系統(tǒng)處于運(yùn)行框架時(shí),能夠完成相應(yīng)的業(yè)務(wù)處理功能,但不能對(duì)其進(jìn)行配置?;跇?gòu)件的軟件框架結(jié)構(gòu)如圖2所示。
2.1 構(gòu)件組裝框架
傳統(tǒng)的構(gòu)件組裝大多使用代碼方式調(diào)用構(gòu)件接口,此方式比較復(fù)雜。本框架提供一種圖形化的構(gòu)件組裝界面,開(kāi)發(fā)者可以輕松高效地集成新的應(yīng)用系統(tǒng)或?qū)σ延邢到y(tǒng)進(jìn)行擴(kuò)展。
如圖2所示,構(gòu)件組裝框架主要包括構(gòu)件制作工具、構(gòu)件測(cè)試工具、構(gòu)件庫(kù)管理工具、構(gòu)件組裝工具、模塊管理工具、模塊組裝工具。其中,制作工具、構(gòu)件測(cè)試工具只提供簡(jiǎn)單的構(gòu)件制作和測(cè)試功能,構(gòu)件實(shí)現(xiàn)者可以選擇市場(chǎng)上其他工具進(jìn)行構(gòu)件制作及測(cè)試;構(gòu)件庫(kù)管理工具具有構(gòu)件注冊(cè)、注銷、刪除、檢索等功能,模塊管理工具具有模塊注冊(cè)、修改、刪除、檢索等功能,這兩個(gè)工具實(shí)現(xiàn)起來(lái)相對(duì)簡(jiǎn)單;構(gòu)件組裝和模塊組裝時(shí)生成對(duì)應(yīng)的XML配置文檔,通過(guò)這些XML配置文檔將構(gòu)件粘合成應(yīng)用系統(tǒng)。本文使用的XML配置文檔主要包括:(1)構(gòu)件描述文檔:對(duì)構(gòu)件信息進(jìn)行描述,以便使用構(gòu)件時(shí)能方便獲取構(gòu)件信息;(2)構(gòu)件適配文檔:對(duì)構(gòu)件接口連接關(guān)系進(jìn)行描述;(3)模塊適配文檔:對(duì)模塊之間以及構(gòu)件和模塊之間連接關(guān)系的描述;(4)菜單適配文檔:將菜單與對(duì)應(yīng)業(yè)務(wù)模塊綁定,以便用戶點(diǎn)擊對(duì)應(yīng)的菜單時(shí),觸發(fā)該功能模塊運(yùn)行。組裝時(shí),通過(guò)這些XML配置文檔,將構(gòu)件組裝成子模塊、功能模塊直至整個(gè)綜合測(cè)試系統(tǒng),需要時(shí)查找模型中相應(yīng)的標(biāo)簽位置并靈活插入,這樣在對(duì)系統(tǒng)修改時(shí),只需要修改相應(yīng)的構(gòu)件,其他部分不受影響。此方法支持系統(tǒng)的快速開(kāi)發(fā)和修改,具有較高的靈活性和較好的可擴(kuò)展性,達(dá)到了令人滿意的伸縮性。
在組裝時(shí),構(gòu)件組裝者根據(jù)應(yīng)用系統(tǒng)的需求檢索相關(guān)構(gòu)件,如果構(gòu)件庫(kù)中無(wú)此構(gòu)件,則必須制作相關(guān)構(gòu)件并放入構(gòu)件庫(kù)中,再將檢索到的構(gòu)件通過(guò)構(gòu)件組裝工具進(jìn)行組裝。為了不使應(yīng)用系統(tǒng)在組裝過(guò)程中太復(fù)雜,先將構(gòu)件組裝成業(yè)務(wù)構(gòu)件,再將業(yè)務(wù)構(gòu)件組裝成功能模塊,最后將功能模塊組裝成應(yīng)用系統(tǒng)。
2.1.1 構(gòu)件組裝
構(gòu)件組裝工具的核心是解決構(gòu)件適配問(wèn)題。大多數(shù)情況下,使用不同語(yǔ)言制作的構(gòu)件都需要做某種方式的修改以便與其他構(gòu)件相匹配,這個(gè)過(guò)程稱為構(gòu)件適配,適配方法有白盒法、黑盒法和灰盒法。文獻(xiàn)[7]對(duì)三種方法的技術(shù)、特點(diǎn)和實(shí)現(xiàn)的難易程度進(jìn)行了分析,結(jié)論是采用灰盒法既可以實(shí)現(xiàn)構(gòu)件組裝的靈活性,又不至于使適配技術(shù)過(guò)于復(fù)雜。本文在對(duì)各種灰盒法的適配技術(shù)進(jìn)行比較后,采用基于連接器的適配技術(shù)。此方法將構(gòu)件功能的實(shí)現(xiàn)與其交互作用的實(shí)現(xiàn)相分離,從而增加構(gòu)件組裝的可配置性,在現(xiàn)有技術(shù)條件下,它是實(shí)現(xiàn)構(gòu)件動(dòng)態(tài)組裝的有效途徑之一。
構(gòu)件連接器可以表示為CL=(IDcl,Ncl,Rcls),其中,IDcl為連接器唯一標(biāo)識(shí);Ncl為連接器名稱;Rcls為連接關(guān)系集合,包含有多個(gè)接口連接關(guān)系,每個(gè)連接關(guān)系Rcl可表示為Rcl=(IDsc,IDdc,DTc,Dc,MSc),其中,IDsc表示源構(gòu)件唯一標(biāo)識(shí),IDdc表示目標(biāo)構(gòu)件唯一標(biāo)識(shí),DTc表示數(shù)據(jù)類型,Dc為數(shù)據(jù)的值,MSc表示消息。
2.1.2 模塊組裝
通過(guò)模塊組裝工具可以將業(yè)務(wù)模塊組裝成功能模塊。本文使用類似連接器的方法設(shè)計(jì)模塊連接器。
模塊連接器可以表示為:ML=(IDml,Nml,Rmls),其中,IDml為模塊連接器唯一標(biāo)識(shí);Nml為模塊連接器名稱;Rmls為連接關(guān)系集合,包含有多個(gè)模塊接口連接關(guān)系,每個(gè)連接關(guān)系Rml可表示為Rml=(IDsm,IDdm,DTm,Dm,MSm),其中,IDsm表示源模塊唯一標(biāo)識(shí),IDdm表示目標(biāo)模塊唯一標(biāo)識(shí),DTm表示數(shù)據(jù)類型,Dm為數(shù)據(jù)的值,MSm表示消息。
模塊連接器信息用XML適配文檔進(jìn)行描述,其XML schema源碼如下:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XML
Schema">
<xsd:element name=" IDml " type="xsd:string"/>
<xsd:element name=" Nml ">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="Rml"type="xsd:string" maxOccurs=
"unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
2.1.3 菜單配置
菜單描述工具的主要功能是將菜單與對(duì)應(yīng)功能的模塊進(jìn)行綁定,生成菜單適配文檔。本系統(tǒng)菜單嵌套最多為三級(jí),菜單適配文檔可表示為FL=(IDm,IDf1,IDf2,IDf3),其中IDm表示功能模塊ID,IDfi為第i級(jí)菜單ID,i=1,2,3。其源碼可參考前文給出的模塊適配文檔XML schema源碼。
2.2 構(gòu)件運(yùn)行框架
構(gòu)件運(yùn)行框架主要包括:構(gòu)件調(diào)度器、構(gòu)件實(shí)例化工具以及各種XML配置文檔解析器。其中,配置文檔解析器的功能是解析對(duì)應(yīng)的XML配置文檔,其實(shí)現(xiàn)相對(duì)簡(jiǎn)單,在此不作介紹。下面重點(diǎn)介紹構(gòu)件調(diào)度器和構(gòu)件實(shí)例化工具。
2.2.1 基于工作流控制的構(gòu)件調(diào)度模型
構(gòu)件調(diào)度是一個(gè)動(dòng)態(tài)過(guò)程,調(diào)度之前難以知道構(gòu)件運(yùn)行所需要的全部信息,因此很難一次性建立構(gòu)件調(diào)度模型。即使建立了模型,隨著構(gòu)件調(diào)度的執(zhí)行,各種因素發(fā)生變化,也會(huì)使模型不能反應(yīng)信息的動(dòng)態(tài)變化而導(dǎo)致構(gòu)件調(diào)度失敗。
工作流技術(shù)[7,8]最初被廣泛應(yīng)用于解決企業(yè)的項(xiàng)目調(diào)度問(wèn)題,現(xiàn)已逐漸擴(kuò)展到許多領(lǐng)域。工作流技術(shù)可以全面描述過(guò)程的信息,在運(yùn)行時(shí)能夠動(dòng)態(tài)監(jiān)視業(yè)務(wù)過(guò)程的執(zhí)行情況,因此可得到過(guò)程執(zhí)行的實(shí)時(shí)信息,如:過(guò)程執(zhí)行、資源利用、時(shí)間計(jì)劃情況等,并能根據(jù)這些信息生成新的調(diào)度方案。因此,工作流技術(shù)可以應(yīng)用于解決構(gòu)件調(diào)度問(wèn)題。
本文提出一種基于工作流技術(shù)的構(gòu)件調(diào)度模型,模塊包括:過(guò)程控制模型、公共資源服務(wù)模型、消息處理模型、工作流數(shù)據(jù)模型。各模型之間的調(diào)用關(guān)系如圖3所示。
過(guò)程控制模型是構(gòu)件調(diào)度模型的核心和骨架,定義應(yīng)用系統(tǒng)所有構(gòu)件的處理流程,描述構(gòu)件調(diào)度問(wèn)題的約束,包括模塊之間以及組成模塊的構(gòu)件之間的邏輯關(guān)系、詳細(xì)描述(執(zhí)行所需的信息、資源)等。這些信息可以在構(gòu)件調(diào)度過(guò)程中通過(guò)各種XML配置文檔解析器解析對(duì)應(yīng)的XML配置文檔獲取。利用這些信息可以預(yù)測(cè)并找出工作流所管理的全部過(guò)程實(shí)例之間存在的資源沖突情況。通過(guò)把產(chǎn)生資源沖突的過(guò)程實(shí)例按照一定的規(guī)則抽取出來(lái)就可以得到項(xiàng)目調(diào)度的動(dòng)態(tài)模型。由于過(guò)程實(shí)例的執(zhí)行情況不斷變化,如某些過(guò)程實(shí)例執(zhí)行結(jié)束、某些實(shí)例被終止、某些活動(dòng)被掛起、某些異常出現(xiàn)等,因此按照一定的周期動(dòng)態(tài)地從這些過(guò)程實(shí)例中所得到的過(guò)程模型也會(huì)隨之不斷更新,得到“最新”的調(diào)度模型,這解決了調(diào)度模型不能反映信息動(dòng)態(tài)變化的問(wèn)題。
公共資源服務(wù)模型定義構(gòu)件調(diào)度過(guò)程中需要的公共服務(wù)資源,如數(shù)據(jù)庫(kù)服務(wù)、打印服務(wù)等。
消息處理模型定義構(gòu)件調(diào)度過(guò)程中的事件屬性,它是一個(gè)構(gòu)件向另一個(gè)構(gòu)件發(fā)出的某種通知。
工作流數(shù)據(jù)模型定義了與構(gòu)件調(diào)度模型執(zhí)行密切相關(guān)的數(shù)據(jù)。從某種意義上講,它確定構(gòu)件執(zhí)行過(guò)程狀態(tài)轉(zhuǎn)換的條件。
2.2.2 構(gòu)件實(shí)例化
構(gòu)件是動(dòng)態(tài)調(diào)用的,即應(yīng)用系統(tǒng)運(yùn)行前構(gòu)件都沒(méi)有實(shí)例化,只有在執(zhí)行過(guò)程中調(diào)用時(shí)才實(shí)例化??梢越柚瓷錂C(jī)制實(shí)現(xiàn)構(gòu)件動(dòng)態(tài)實(shí)例化。本文的構(gòu)件實(shí)例化工具是在.NET平臺(tái)下用C#語(yǔ)言實(shí)現(xiàn),其關(guān)鍵代碼如下:
private void CreateInstanceAndInvoke()
{
ParseXML();//解析相關(guān)XML文檔
SourceComXMLPath=COMSchedule();//構(gòu)件調(diào)度器
Assembly curAssm=Assembly.LoadFile(SourceComXMLPath);
Type[] types=curAssm.GetTypes();
if (isInterface)
{
foreach (Type type in types)
{
MethodInfo[] methodInfos=type.GetMethods();
foreach (MethodInfo methodInfo in methodInfos)
{
ParameterInfo[] paras=
methodInfo.GetParameters();
object[] objSourceParas=
new object[paras.Length];
object[] objTargetParas;
if (methodInfo.Name==strSourceComInter-
faceName)
{
objTargetParas=methodInfo.Invoke(curAssm.CreateInstance
(type.FullName),
out objSourceParas);
InvokeTarget();//調(diào)用目標(biāo)構(gòu)件的接口
}
}
}
}
else
{
……
}
…
}
3 應(yīng)用實(shí)例
本文設(shè)計(jì)的基于工作流控制的構(gòu)件化軟件框架已經(jīng)在某型設(shè)備接口測(cè)試系統(tǒng)中得到應(yīng)用。某型設(shè)備有多種待測(cè)接口,下面以其A/D接口測(cè)試為例說(shuō)明本系統(tǒng)的有效性。
圖4為對(duì)某型設(shè)備A/D、D/A接口構(gòu)件劃分結(jié)果圖。構(gòu)件通過(guò)構(gòu)件連接器組裝成業(yè)務(wù)模塊,業(yè)務(wù)模塊通過(guò)模塊連接器組裝成功能模塊。組裝后的某型設(shè)備接口測(cè)試系統(tǒng)對(duì)A/D接口測(cè)試結(jié)果如圖5所示。測(cè)試中,A/D接口的通道13測(cè)試誤差大于設(shè)定誤差的最大值,未通過(guò)測(cè)試;其他接口各通道的測(cè)試誤差均小于其最大誤差要求,通過(guò)測(cè)試。
實(shí)踐應(yīng)用證明,該軟件框架可以實(shí)現(xiàn)基于構(gòu)件的應(yīng)用系統(tǒng)的插座式組裝,使其能從原子構(gòu)件集成子模塊、功能模塊直至整個(gè)應(yīng)用系統(tǒng)。此方法支持系統(tǒng)的快速開(kāi)發(fā)和修改,具有較高的靈活性和較好的可擴(kuò)展性,達(dá)到了令人滿意的伸縮性。
針對(duì)目前大多數(shù)軟件模塊間耦合緊密、軟件可復(fù)用性低、可擴(kuò)展性差等問(wèn)題。將XML、工作流和構(gòu)件技術(shù)相結(jié)合,設(shè)計(jì)了圖形化方式構(gòu)件組裝框架和構(gòu)件運(yùn)行框架。用戶可以在構(gòu)件組裝框架下集成應(yīng)用系統(tǒng),在構(gòu)件運(yùn)行框架下運(yùn)行組裝的系統(tǒng)可以實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)功能。實(shí)踐證明,該軟件框架可以實(shí)現(xiàn)基于構(gòu)件的應(yīng)用系統(tǒng)的插座式組裝,使其能從原子構(gòu)件集成子模塊、功能模塊直至整個(gè)應(yīng)用系統(tǒng)。此方法支持系統(tǒng)的快速開(kāi)發(fā)和修改,具有較高的靈活性和較好的可擴(kuò)展性,避免了軟件的重復(fù)開(kāi)發(fā),節(jié)省了大量費(fèi)用,達(dá)到了令人滿意的伸縮性效果。
參考文獻(xiàn)
[1] 楊芙清,王千祥,梅宏,等.基于復(fù)用的軟件生產(chǎn)技術(shù)[J].中國(guó)科學(xué),2001,31(4):363-371.
[2] 任洪敏,錢樂(lè)秋.構(gòu)件組裝及其形式化推導(dǎo)研究[JJ.軟件學(xué)報(bào),2003,l4(6):1066-1074.
[3] 王強(qiáng),何克清,李兵,等.基于MMF的互操作性軟構(gòu)件庫(kù)管理模型的研究[J].計(jì)算機(jī)工程,2005,31(16):57-58.
[4] 吳信永,宋東,劉飛.基于構(gòu)件技術(shù)的通用ATS框架設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2008,16(2):141-143.
[5] 王忠杰,徐曉飛,戰(zhàn)德臣.基于特征的構(gòu)件模型及其規(guī)范化設(shè)計(jì)過(guò)程[J].軟件學(xué)報(bào),2006,17(1):39-47.
[6] 徐瑋,保林,李昭原.企業(yè)信息系統(tǒng)業(yè)務(wù)構(gòu)件研究[J]. 軟件學(xué)報(bào),2003,14(7):1213-1220.
[7] 王志堅(jiān),費(fèi)玉奎,婁淵清.軟件構(gòu)件技術(shù)及其應(yīng)用[M]. 北京:科學(xué)出版社,2005.
[8] 李偉平,范玉順.基于工作流的資源受限項(xiàng)目調(diào)度研 究[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2004,44(10):
1384-138.