專利名稱:基于組織實(shí)體能力的軟件過程建模方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軟件過程建模技術(shù),特別涉及一種基于組織實(shí)體能力的軟件過程建模方法和系統(tǒng),屬于計(jì)算機(jī)軟件工程領(lǐng)域。
背景技術(shù):
規(guī)?;?、過程化生產(chǎn)的首要因素是建立規(guī)范的生產(chǎn)過程模型。軟件具有固有的知識性產(chǎn)物特征,因其對生產(chǎn)者能力的過分依賴而導(dǎo)致軟件過程模型在建立和維護(hù)時(shí)的諸多困難。最典型的問題表現(xiàn)在(1)軟件過程的不確定性,不同的生產(chǎn)者實(shí)現(xiàn)同一個(gè)目標(biāo)可以使用不同的過程;(2)軟件過程能力對生產(chǎn)者的高度依賴性對軟件生產(chǎn)而言,人不僅是過程的執(zhí)行者,而且是一種生產(chǎn)資源甚至“生產(chǎn)設(shè)備”。這至少反映了人對軟件過程有著至關(guān)重要的影響。由于生產(chǎn)者之間能力的差異,他們即使在相同的計(jì)算機(jī)上做同一件事情,在工期和質(zhì)量方面完全可能出現(xiàn)截然不同的結(jié)果。所以,對于建立軟件生產(chǎn)的過程體系,“人”的因素被提高到了一種十分重要的地位;(3)軟件過程的動態(tài)多變性軟件組織所承攬的軟件項(xiàng)目通常都是不重復(fù)的工作,這與制造業(yè)批量重復(fù)的生產(chǎn)有很大不同。對于不同的軟件項(xiàng)目,由于其涉及的軟件技術(shù)、應(yīng)用領(lǐng)域、用戶要求以及商業(yè)環(huán)境不同,其軟件開發(fā)的過程不盡相同,甚至于完全不同。針對每一個(gè)軟件項(xiàng)目的開發(fā)和生產(chǎn),都有可能要求相關(guān)的軟件過程進(jìn)行必要的變化和調(diào)整。這種軟件過程的動態(tài)多變性對軟件過程的建模也提出新的挑戰(zhàn);(4)軟件組織資源的流動性軟件組織中資源具有較大的流動性,從而導(dǎo)致組織現(xiàn)有資源的不確定,要求相應(yīng)的軟件過程模型在資源變化情況下保持穩(wěn)定。
傳統(tǒng)的軟件過程模型試圖沿用制造工業(yè)過程的建模方法,將軟件開發(fā)的相關(guān)要素(如活動、工作產(chǎn)品、角色以及軟件工程工具等)組成軟件過程,并通過一定的過程紀(jì)律來規(guī)范軟件過程的行為。傳統(tǒng)的軟件過程模型要求建模時(shí)預(yù)計(jì)可能發(fā)生的情況,將軟件開發(fā)人員視為一個(gè)可以被操作的對象,將它們之間的協(xié)同或其它可預(yù)見的變化視為一組確定的事務(wù)或控制規(guī)則,并顯式地將這些事務(wù)或規(guī)則的處理方案定義在模型中。當(dāng)出現(xiàn)預(yù)定義的情況時(shí),就觸發(fā)相應(yīng)的處理程序。顯然,這樣的模型一旦確定就難以在環(huán)境變化時(shí)自適應(yīng)地進(jìn)行調(diào)整,而且模型忽略了軟件過程主體“人”的主觀意愿和利益,表現(xiàn)出結(jié)構(gòu)剛性和協(xié)同剛性的特點(diǎn)。軟件生產(chǎn)在計(jì)劃時(shí)往往只能憑借管理者的經(jīng)驗(yàn)和主觀判斷,容易造成局部的利益失衡;而在執(zhí)行時(shí)個(gè)體的差異則常常導(dǎo)致計(jì)劃的失控甚至失敗,更談不上保證過程整體的最優(yōu)結(jié)果。
還有一些方法將智能主體(Agent)技術(shù)引入軟件過程建模中,它們通過引入多種類型的主體對過程的各個(gè)方面實(shí)施管理。
這些方法在應(yīng)用主體時(shí),存在兩個(gè)主要問題(1)需要引入很多不同種類的主體對過程的各個(gè)方面實(shí)施管理,從一定程度上增加了問題的復(fù)雜程度;(2)這些方法從傳統(tǒng)的軟件過程模型和工作流技術(shù)發(fā)展而來,忽略了很多軟件過程中的部分關(guān)鍵問題,如資源的分配等等。
發(fā)明內(nèi)容
針對上述問題,本發(fā)明的目的在于提供一種基于組織實(shí)體能力的軟件過程建模方法和系統(tǒng),針對軟件生產(chǎn)的特點(diǎn)實(shí)現(xiàn)軟件過程建模。發(fā)明構(gòu)思為在建模系統(tǒng)中使用過程主體(Agent)來代表軟件組織中具有確定資源和資源能力(確定的目標(biāo)、技能、知識、生產(chǎn)率、經(jīng)驗(yàn)、歷史數(shù)據(jù)記錄、設(shè)備等等)的組織實(shí)體,這些過程主體具有資源和它們能力的描述,且擁有資源在實(shí)現(xiàn)目標(biāo)的過程知識和經(jīng)驗(yàn),能夠在環(huán)境的驅(qū)動下實(shí)現(xiàn)自治的行為。它們被部署到系統(tǒng)的工作區(qū)中,在系統(tǒng)中可以獨(dú)立地建立特定目標(biāo)和環(huán)境下的軟件過程。
這種構(gòu)思的目的在于如果系統(tǒng)的用戶希望得到一個(gè)開發(fā)過程,則將該目標(biāo)輸入到系統(tǒng)中,系統(tǒng)中的過程主體根據(jù)自身的資源情況和知識,以及項(xiàng)目的約束目標(biāo),自主運(yùn)行匹配目標(biāo)并產(chǎn)生具有資源調(diào)度情況的項(xiàng)目軟件過程。
為實(shí)現(xiàn)上述發(fā)明目的,基于組織實(shí)體能力的軟件過程建模系統(tǒng)采用下述的技術(shù)方案所述系統(tǒng)采用訪問界面/工作區(qū)/數(shù)據(jù)庫三層結(jié)構(gòu),如圖1所示,分別包含如下內(nèi)容A.訪問界面層包括用戶過程主體的創(chuàng)建/編輯界面、建模目標(biāo)的創(chuàng)建編輯界面、建模結(jié)果的查看界面,以及外部工具接口;B.工作區(qū)層包含過程主體管理、目標(biāo)管理、外部工具接口輸入處理三個(gè)功能模塊,以及目標(biāo)、過程執(zhí)行數(shù)據(jù)和一組過程主體三個(gè)實(shí)體,工作區(qū)層的核心是過程主體,其中每個(gè)過程主體都是能夠自主運(yùn)行、獨(dú)立實(shí)現(xiàn)目標(biāo)的實(shí)體,包含了知識結(jié)構(gòu)和行為引擎。
C.數(shù)據(jù)庫層包括過程主體的描述性知識、過程主體的過程性知識和過程主體的經(jīng)驗(yàn)知識。
其中,所述數(shù)據(jù)庫層的三個(gè)部分分別存儲如下的內(nèi)容C1.描述知識數(shù)據(jù)庫存儲過程主體的描述性信息,包括過程主體能夠?qū)崿F(xiàn)的目標(biāo)、擁有資源以及資源能力(如技能、生產(chǎn)率、所做產(chǎn)品質(zhì)量等);C2.過程知識數(shù)據(jù)庫存儲過程主體實(shí)現(xiàn)其自身目標(biāo)的過程,它由一組過程步驟組成,這些步驟將在過程主體實(shí)現(xiàn)目標(biāo)時(shí)實(shí)例化為資源具體要執(zhí)行的任務(wù);
C3.經(jīng)驗(yàn)知識數(shù)據(jù)庫存儲過程主體包含的資源在每個(gè)歷史項(xiàng)目中實(shí)施步驟所得到的歷史數(shù)據(jù)記錄及其統(tǒng)計(jì)數(shù)據(jù)。過程主體根據(jù)經(jīng)驗(yàn)知識,估算實(shí)現(xiàn)特定目標(biāo)的過程所需要分配的資源。
所述工作區(qū)層的功能模塊分別包含如下功能B1.過程主體管理模塊用于過程主體信息(包括描述性知識、過程性知識和經(jīng)驗(yàn)知識)的創(chuàng)建和編輯,并將創(chuàng)建和編輯的結(jié)果輸入到數(shù)據(jù)庫中;B2.目標(biāo)管理模塊用于目標(biāo)信息(包括目標(biāo)描述、目標(biāo)約束)的創(chuàng)建和編輯,并將創(chuàng)建和編輯的結(jié)果輸入到工作區(qū)中;B3外部工具接口輸入處理模塊用于對外部計(jì)劃執(zhí)行工具產(chǎn)生的過程執(zhí)行數(shù)據(jù)輸入進(jìn)行加工并輸入到工作區(qū)中。
所述工作區(qū)層的過程主體是能夠自主運(yùn)行、獨(dú)立實(shí)現(xiàn)目標(biāo)的實(shí)體,它的知識結(jié)構(gòu)包括描述性知識、過程性知識和經(jīng)驗(yàn)知識,這些知識在系統(tǒng)啟動時(shí),從數(shù)據(jù)庫層加載到過程主體中。它的行為引擎包括感知器、效應(yīng)器、推理引擎、學(xué)習(xí)引擎和實(shí)施引擎,分別具有如下功能(1)感知器用于從工作區(qū)中識別目標(biāo)、約束條件等,并將這些內(nèi)容轉(zhuǎn)換為過程主體的內(nèi)部知識表示(感知);(2)效應(yīng)器用于將過程主體的計(jì)劃輸出到訪問界面層的建模結(jié)果查看界面;(3)推理引擎用于基于知識的推理,從而實(shí)現(xiàn)根據(jù)感知的目標(biāo)生成項(xiàng)目計(jì)劃。包括目標(biāo)分析器、過程選擇器和計(jì)劃生成器,功能如下●目標(biāo)分析器利用目標(biāo)匹配推理算法,根據(jù)數(shù)據(jù)庫描述性知識所提供的過程主體自身目標(biāo)的描述、擁有的技能、資源情況等信息判斷是否滿足感知器感知的目標(biāo)描述和技能約束;●過程生成器根據(jù)數(shù)據(jù)庫過程性知識確定實(shí)現(xiàn)目標(biāo)所需的過程;●計(jì)劃生成器利用資源進(jìn)度估算算法,基于過程選擇器確定的過程并根據(jù)數(shù)據(jù)庫經(jīng)驗(yàn)知識確定執(zhí)行該過程需要的資源數(shù)量、進(jìn)度安排以及工作量,并生成相應(yīng)的計(jì)劃;(4)學(xué)習(xí)引擎用于對感知到的過程執(zhí)行數(shù)據(jù)進(jìn)行分析,如果過程執(zhí)行數(shù)據(jù)是過程主體所包含的資源執(zhí)行產(chǎn)生的,則將該數(shù)據(jù)加入到該過程主體的經(jīng)驗(yàn)知識中,從而再次進(jìn)行估算的時(shí)候有更多的數(shù)據(jù)作經(jīng)驗(yàn)支持,結(jié)果更精確,從而達(dá)到過程主體自學(xué)習(xí)的目的;(5)實(shí)施引擎用于作為過程主體行為引擎的控制核心,控制行為引擎各部分的協(xié)調(diào)工作。
如圖2所示,過程主體在實(shí)施引擎的控制下,進(jìn)行建模的步驟如下a.實(shí)施引擎定時(shí)地通知感知器對工作區(qū)進(jìn)行感知;
b.感知器判斷工作區(qū)中是否有新增的目標(biāo)和過程執(zhí)行數(shù)據(jù),如果有則將其讀入到過程主體中作為感知,并通知實(shí)施引擎感知完成,其中,感知到的數(shù)據(jù)為過程執(zhí)行數(shù)據(jù)或目標(biāo);c.實(shí)施引擎判斷感知數(shù)據(jù)的類型,如果是目標(biāo),則實(shí)施引擎通知推理引擎推理目標(biāo);d.推理引擎首先調(diào)用目標(biāo)分析器判斷目標(biāo)是否與過程主體自身目標(biāo)相符合,如果不符合則拋棄該目標(biāo),并轉(zhuǎn)到步驟a;e.推理引擎調(diào)用過程生成器生成實(shí)現(xiàn)目標(biāo)的過程;f.推理引擎調(diào)用計(jì)劃生成器生成實(shí)現(xiàn)目標(biāo)的計(jì)劃,生成結(jié)束后通知實(shí)施引擎計(jì)劃生成完成;g.實(shí)施引擎通知效應(yīng)器輸出計(jì)劃;h.效應(yīng)器輸出計(jì)劃,針對一個(gè)目標(biāo)的建模過程完成,轉(zhuǎn)到步驟a。
除了為目標(biāo)建模,生成實(shí)現(xiàn)目標(biāo)的計(jì)劃,過程主體還可以對感知器感知的過程數(shù)據(jù)進(jìn)行學(xué)習(xí),從而增加其經(jīng)驗(yàn)知識。在實(shí)施引擎的控制下,學(xué)習(xí)引擎學(xué)習(xí)的過程如下i.實(shí)施引擎通知學(xué)習(xí)引擎處理過程執(zhí)行數(shù)據(jù);j.學(xué)習(xí)引擎判斷該過程執(zhí)行數(shù)據(jù)是否為該過程主體的資源所執(zhí)行產(chǎn)生,如果是則將其加入該過程主體的經(jīng)驗(yàn)知識中,否則將該數(shù)據(jù)拋棄;過程主體進(jìn)行建模的過程是一個(gè)循環(huán)的過程,在系統(tǒng)運(yùn)行后,過程主體將不斷地尋找可能實(shí)現(xiàn)的目標(biāo)并實(shí)現(xiàn)或者不斷增加經(jīng)驗(yàn),達(dá)到自學(xué)習(xí)目的。
本發(fā)明的技術(shù)效果在于1)將傳統(tǒng)的以活動、制品、角色為中心的軟件過程建模轉(zhuǎn)變?yōu)橐匀藶橹行模?)當(dāng)目標(biāo)確定時(shí),具體的開發(fā)過程只有在實(shí)現(xiàn)該目標(biāo)的過程主體確定后才能確定,這種過程是實(shí)現(xiàn)目標(biāo)恰當(dāng)?shù)倪^程,它按照實(shí)體能力分配資源,選擇適當(dāng)?shù)拈_發(fā)者執(zhí)行該過程,能夠確保過程的穩(wěn)定性和可預(yù)測性;3)資源的變動不影響建模過程;4)完成為系統(tǒng)輸入過程主體后,過程主體在根據(jù)目標(biāo)生成項(xiàng)目計(jì)劃的過程中獨(dú)立運(yùn)行,獨(dú)立決策,不需要人的參與。
圖1是基于組織實(shí)體能力的軟件過程建模系統(tǒng)的架構(gòu)示意圖;圖2是過程主體建模過程的流程示意圖;圖3是用戶的使用流程示意圖。
具體實(shí)施例方式
下面結(jié)合附圖,通過為實(shí)現(xiàn)Web類型軟件設(shè)計(jì)和編碼目標(biāo)建模的具體實(shí)施方式
對本發(fā)明作進(jìn)一步的說明,但不構(gòu)成對本發(fā)明的限制。
(一)數(shù)據(jù)庫層過程主體的數(shù)據(jù)基礎(chǔ)在所述基于組織實(shí)體能力的軟件過程建模系統(tǒng)的數(shù)據(jù)庫層中(圖1),過程主體的描述性知識、過程主體的過程性知識和過程主體的經(jīng)驗(yàn)知識是過程主體的數(shù)據(jù)基礎(chǔ)。
下面詳細(xì)描述這三個(gè)數(shù)據(jù)庫。
1.過程主體的描述性知識過程主體的描述性知識包括過程主體能夠?qū)崿F(xiàn)的目標(biāo)、擁有資源以及資源能力(如技能、生產(chǎn)率、所做產(chǎn)品質(zhì)量等),它被定義為一個(gè)5元組DK=(BA,AG,AGP,SK,RC),其中BA是過程主體的基本屬性描述,包括它的名稱(Name)以及過程主體的描述(Description);AG由一個(gè)目標(biāo)字符串構(gòu)成,它是過程主體能夠?qū)崿F(xiàn)的目標(biāo)的描述;AGP是過程主體的一個(gè)資源實(shí)現(xiàn)自身目標(biāo)的平均生產(chǎn)率;SK是過程主體擁有的全部技能(Skill)的描述集合,例如領(lǐng)域技能、語言技能等;RC是過程主體自身資源約束(Resource Constraint)的描述,即,過程主體擁有的可調(diào)用資源,包括資源的數(shù)量(RN)、每個(gè)資源的名稱和可以調(diào)用的時(shí)間描述(RT)。
例如具有編碼目標(biāo)的兩個(gè)過程主體PA1、PA2的描述性知識分別如下 描述表示PA1的目標(biāo)是設(shè)計(jì)和編碼,它的資源實(shí)現(xiàn)目標(biāo)的平均生產(chǎn)率是3.5千代碼行每人月,具有Web領(lǐng)域的Java語言開發(fā)技能,它有兩個(gè)資源R1、R2,空閑時(shí)間都為2006年6月1日到8月31日。PA2的目標(biāo)是設(shè)計(jì)和編碼,它的資源實(shí)現(xiàn)目標(biāo)的平均生產(chǎn)率是2.2千代碼行每人月,具有Compiler領(lǐng)域的Java語言開發(fā)技能,它有一個(gè)資源R1,空閑時(shí)間為2006年5月10日到9月10日。
2.過程主體的過程性知識過程主體的過程性知識描述過程主體實(shí)現(xiàn)其目標(biāo)的過程,它由一組過程步驟組成,每個(gè)步驟定義為5元組,ST=(StepID,Name,Input,Output,Order)StepID是步驟的唯一標(biāo)識;Name是步驟的名稱,同時(shí)也表明了這個(gè)步驟的工作;
Input是步驟的輸入,即執(zhí)行該步驟需要的制品或參數(shù);Output是步驟的輸出,即執(zhí)行該步驟能夠產(chǎn)生的制品或參數(shù);Order是步驟在該過程中執(zhí)行的順序,如果一個(gè)步驟的Order值小于另一個(gè)步驟,則該步驟將先被執(zhí)行,如果兩個(gè)步驟的Order值相同,則表示他們應(yīng)該同時(shí)執(zhí)行。
例如PA1的過程性知識由如下四個(gè)順序執(zhí)行的步驟構(gòu)成第一個(gè)步驟是“提取分析類”,它的StepID=11;StepName=“提取分析類”;輸入Input=“需求規(guī)格說明”,輸出Output=“分析類”,執(zhí)行順序Order=1;第二個(gè)步驟是“接口設(shè)計(jì)”,它的StepID=12;StepName=“接口設(shè)計(jì)”;輸入Input=“分析類”,輸出Output=“接口”,執(zhí)行順序Order=2;第三個(gè)步驟是“實(shí)體定義”,它的StepID=13;StepName=“實(shí)體定義”;輸入Input=“分析類和接口”,輸出Output=“實(shí)體類”,執(zhí)行順序Order=3;第四個(gè)步驟是“編碼”,它的StepID=14;StepName=“編碼”;輸入Input=“分析類、接口和實(shí)體類”,輸出Output=“實(shí)現(xiàn)代碼”,執(zhí)行順序Order=4;PA2的過程性知識由如下四個(gè)步驟構(gòu)成,其中步驟1、2可以并發(fā)執(zhí)行,步驟3、4可以并發(fā)執(zhí)行第一個(gè)步驟是“運(yùn)行環(huán)境設(shè)計(jì)”,它的StepID=21;StepName=“運(yùn)行環(huán)境設(shè)計(jì)”;輸入Input=“需求規(guī)格說明”,輸出Output=“運(yùn)行環(huán)境設(shè)計(jì)”,執(zhí)行順序Order=1;第二個(gè)步驟是“語言處理設(shè)計(jì)”,它的StepID=22;StepName=“語言處理設(shè)計(jì)”;輸入Input=“需求規(guī)格說明”,輸出Output=“語言處理設(shè)計(jì)”,執(zhí)行順序Order=1;第三個(gè)步驟是“運(yùn)行環(huán)境實(shí)現(xiàn)”,它的StepID=23;StepName=“運(yùn)行環(huán)境實(shí)現(xiàn)”;輸入Input=“運(yùn)行環(huán)境設(shè)計(jì)”,輸出Output=“運(yùn)行環(huán)境實(shí)現(xiàn)代碼”,執(zhí)行順序Order=2;第四個(gè)步驟是“語言處理實(shí)現(xiàn)”,它的StepID=24;StepName=“語言處理實(shí)現(xiàn)”;輸入Input=“語言處理設(shè)計(jì)”,輸出Output=“語言處理實(shí)現(xiàn)代碼”,執(zhí)行順序Order=2;3.過程主體的經(jīng)驗(yàn)知識過程主體的經(jīng)驗(yàn)知識部分存儲過程主體包含的資源在每個(gè)歷史項(xiàng)目中實(shí)施步驟所得到的歷史數(shù)據(jù)記錄及其統(tǒng)計(jì)數(shù)據(jù)。過程主體根據(jù)經(jīng)驗(yàn)知識,估算實(shí)現(xiàn)特定目標(biāo)的過程所需要分配的資源。它的原始數(shù)據(jù)記錄可以定義為一個(gè)7元組,HD=(StepID,ResourceName,Size,PlanTime,ActualTime,PlanEffort,ActualEffort),其中StepID是步驟的標(biāo)識,它是歷史數(shù)據(jù)記錄所對應(yīng)過程性知識中的過程步驟的標(biāo)識;ResourceName表示該歷史數(shù)據(jù)是哪個(gè)資源執(zhí)行步驟產(chǎn)生的;Size表示目標(biāo)的規(guī)模,如一個(gè)代碼開發(fā)的目標(biāo)可以用千代碼行數(shù)來表示;PlanTime是步驟的計(jì)劃執(zhí)行時(shí)間;
ActualTime是步驟的實(shí)際執(zhí)行時(shí)間;PlanEffort是步驟的計(jì)劃執(zhí)行工作量;ActualEffort是步驟的實(shí)際執(zhí)行工作量。
該數(shù)據(jù)記錄可以根據(jù)需要擴(kuò)展,例如如果希望得到成本和質(zhì)量數(shù)據(jù),則需要為HD加入步驟執(zhí)行時(shí)計(jì)劃和實(shí)際的成本以及計(jì)劃和實(shí)際的缺陷數(shù)據(jù)。
根據(jù)原始數(shù)據(jù)可以計(jì)算出步驟執(zhí)行的統(tǒng)計(jì)數(shù)據(jù),例如根據(jù)過程主體每次執(zhí)行過程步驟的歷史數(shù)據(jù),可以得到步驟間的工作量平均使用比例。對于PA1和PA2,我們給出各步驟的比例如下
(二)工作區(qū)層的實(shí)體在所述基于組織實(shí)體能力的軟件過程建模系統(tǒng)的工作區(qū)層中(圖1),包含運(yùn)行的過程主體、用戶輸入的目標(biāo)以及從外部工具接口獲得的過程執(zhí)行數(shù)據(jù)。下面詳細(xì)描述這三部分實(shí)體。
1.過程主體運(yùn)行的過程主體包括知識結(jié)構(gòu)和行為引擎,其中知識結(jié)構(gòu)中的知識通過數(shù)據(jù)庫中的描述性知識、過程性知識和經(jīng)驗(yàn)知識構(gòu)造,每個(gè)過程主體有自己的行為引擎,使用類Engine實(shí)現(xiàn),包括感知器、效應(yīng)器、推理引擎、學(xué)習(xí)引擎和實(shí)施引擎,分別具有如下的功能和實(shí)現(xiàn)方式(圖3)(1)感知器使用類Perceptor實(shí)現(xiàn),通過getPerception方法從工作區(qū)中識別目標(biāo)、過程執(zhí)行數(shù)據(jù)等,并將這些內(nèi)容轉(zhuǎn)換為過程主體的內(nèi)部知識表示(用perception對象表示的感知);(2)效應(yīng)器使用類Reactor實(shí)現(xiàn),通過setPlan方法將過程主體的計(jì)劃輸出到訪問界面層的建模結(jié)果查看界面;(3)推理引擎使用類ReasoningEngine實(shí)現(xiàn),用于基于知識的推理,從而實(shí)現(xiàn)根據(jù)感知的目標(biāo)生成項(xiàng)目計(jì)劃。包括目標(biāo)分析器、過程選擇器和計(jì)劃生成器,功能如下●目標(biāo)分析器使用類GoalAnalyzer實(shí)現(xiàn),它的goalMatch方法利用目標(biāo)匹配推理算法,根據(jù)數(shù)據(jù)庫描述性知識所提供的過程主體自身目標(biāo)的描述、擁有的技能、資源情況等信息判斷是否滿足感知器感知的目標(biāo)描述和技能約束;●過程生成器使用類ProcessGenerator實(shí)現(xiàn),它的processGenerate方法根據(jù)數(shù)據(jù)庫過程性知識確定實(shí)現(xiàn)目標(biāo)所需的過程;●計(jì)劃生成器使用類PlanGenerator實(shí)現(xiàn),它的planGenerate方法利用資源進(jìn)度估算算法,基于過程選擇器確定的過程并根據(jù)數(shù)據(jù)庫經(jīng)驗(yàn)知識確定執(zhí)行該過程需要的資源數(shù)量、進(jìn)度安排以及工作量,并生成相應(yīng)的計(jì)劃;(4)學(xué)習(xí)引擎使用類LearningEngine實(shí)現(xiàn),它使用經(jīng)驗(yàn)學(xué)習(xí)算法實(shí)現(xiàn)過程主體的學(xué)習(xí)功能。該算法首先通過analysisData方法對感知到的過程執(zhí)行數(shù)據(jù)進(jìn)行分析,如果過程執(zhí)行數(shù)據(jù)是過程主體所包含的資源執(zhí)行產(chǎn)生的,則調(diào)用addToEL方法,將該數(shù)據(jù)加入到該過程主體的經(jīng)驗(yàn)知識中,從而使過程主體再次進(jìn)行估算的時(shí)候有更多的數(shù)據(jù)作經(jīng)驗(yàn)支持,結(jié)果更精確,從而達(dá)到它的自學(xué)習(xí)目的;(5)實(shí)施引擎使用類EnactmentEngine實(shí)現(xiàn),用于作為過程主體行為引擎的控制核心,通過control方法控制行為引擎各部分的協(xié)調(diào)工作。
系統(tǒng)啟動后,過程主體開始不斷地運(yùn)行,自主地尋找可以實(shí)現(xiàn)的目標(biāo)并生成項(xiàng)目計(jì)劃。
2.目標(biāo)目標(biāo)被定義為一個(gè)4元組,G=(G_Description,G_Size,G_Constraints,G_Skills),其中G_Description是目標(biāo)的描述,它通過一個(gè)字符串描述目標(biāo)是什么;G_Size是目標(biāo)的規(guī)模;G_Constraints是實(shí)現(xiàn)目標(biāo)G的約束條件集合,它可以是進(jìn)度約束(Time Constraint,TC)、成本約束(Cost Constraint,CC)、質(zhì)量約束(Quality Constraint,QC)等;G_Skills是實(shí)現(xiàn)目標(biāo)所需的技能集合,如領(lǐng)域方面的技能、編程語言方面的技能等。
例如,如下目標(biāo)G=(設(shè)計(jì)和編碼,12KLOC,{TC=[2006-06-01,2006-07-30]},{領(lǐng)域=”Web”,語言=”Java”})該目標(biāo)表示實(shí)現(xiàn)Web類型軟件設(shè)計(jì)和編碼,目標(biāo)的規(guī)模是12KLOC,要求在2006年6月1日至2006年7月30日之間完成。
3.過程執(zhí)行數(shù)據(jù)過程執(zhí)行數(shù)據(jù)由一條條的數(shù)據(jù)記錄構(gòu)成,被定義為一個(gè)7元組,PD=(StepID,ResourceName,Size,PlanTime,ActualTime,PlanEffort,ActualEffort)StepID是步驟的標(biāo)識,它是過程執(zhí)行數(shù)據(jù)記錄是執(zhí)行哪個(gè)過程步驟所產(chǎn)生數(shù)據(jù)的標(biāo)識;ResourceName表示該過程執(zhí)行數(shù)據(jù)是哪個(gè)資源執(zhí)行步驟產(chǎn)生的;
Size表示執(zhí)行該步驟對應(yīng)目標(biāo)的規(guī)模,如一個(gè)代碼開發(fā)的目標(biāo)可以用千代碼行數(shù)來表示;PlanTime是過程步驟的計(jì)劃執(zhí)行時(shí)間;ActualTime是過程步驟的實(shí)際執(zhí)行時(shí)間;PlanEffort是過程步驟的計(jì)劃執(zhí)行工作量;ActualEffort是過程步驟的實(shí)際執(zhí)行工作量。
同歷史數(shù)據(jù)記錄類似,過程執(zhí)行數(shù)據(jù)可以根據(jù)需要擴(kuò)展,例如如果希望得到成本和質(zhì)量數(shù)據(jù),則需要為PD加入步驟執(zhí)行時(shí)計(jì)劃和實(shí)際的成本數(shù)據(jù)項(xiàng)以及計(jì)劃和實(shí)際的缺陷數(shù)據(jù)項(xiàng)。
例如工作區(qū)中有如下兩條過程執(zhí)行數(shù)據(jù)PD1=(12,R1,6KLOC,0.37M,0.375,64Hours,60Hours),該數(shù)據(jù)表示資源R1執(zhí)行步驟12的數(shù)據(jù),其中步驟的目標(biāo)規(guī)模是6KLOC,計(jì)劃時(shí)間是0.37月,實(shí)際用0.375月,計(jì)劃工作量64小時(shí),實(shí)際工作量60小時(shí);PD2=(14,R2,8KLOC,0.96M,1.0M,154Hours,160Hours)該數(shù)據(jù)表示資源R2執(zhí)行步驟14的數(shù)據(jù),其中步驟的目標(biāo)規(guī)模是8KLOC,計(jì)劃時(shí)間是0.96月,實(shí)際用1.0月,計(jì)劃工作量154小時(shí),實(shí)際工作量160小時(shí)。
(三)基于知識的推理和學(xué)習(xí)所用的支持算法基于上述數(shù)據(jù)基礎(chǔ)以及目標(biāo)的表示,過程主體通過行為引擎得到目標(biāo)的實(shí)現(xiàn)計(jì)劃需要通過兩個(gè)算法實(shí)現(xiàn)目標(biāo)匹配的推理算法、資源進(jìn)度估算算法;過程主體實(shí)現(xiàn)自學(xué)習(xí)的目的需要通過經(jīng)驗(yàn)學(xué)習(xí)算法。下面詳細(xì)描述這三個(gè)算法。
1.目標(biāo)匹配的推理算法如下本算法根據(jù)當(dāng)前推理引擎的目標(biāo)分析器獲取的目標(biāo)判斷過程主體是否有能力實(shí)現(xiàn)該目標(biāo)。其具體步驟如下(1)判斷目標(biāo)的描述G_Descirption是否與自身目標(biāo)AG相同,如果不同,則返回過程主體無法實(shí)現(xiàn)該目標(biāo)消息,算法結(jié)束;過程主體PA1和PA2的AG都與G的G_Descirption相同,因此都可以做后續(xù)的步驟。
(2)過程主體的AG滿足目標(biāo)的G_Descirption,判斷過程主體的技能是否覆蓋目標(biāo)要求的所有技能,即任取sk∈G_Skills,都有sk∈SK,如果缺少目標(biāo)要求的技能,則返回過程主體無法實(shí)現(xiàn)該目標(biāo)消息,算法結(jié)束;由于PA2不具有(領(lǐng)域=”Web”)技能,因此無法覆蓋G_Skills,所以PA2無法實(shí)現(xiàn)目標(biāo)G,算法結(jié)束;而PA1.SK=G.G_Skills,因此可以繼續(xù)后面的算法。
(3)根據(jù)目標(biāo)的規(guī)模G_Size和過程主體資源實(shí)現(xiàn)目標(biāo)的平均生產(chǎn)率AGP計(jì)算實(shí)現(xiàn)目標(biāo)所需的工作量,Effort=G_Size/AGP;對于PA1,Effort=12KLOC/(3.2KLOC/P-M)=3.75P-M。
(4)根據(jù)目標(biāo)的約束條件G_Constraints所描述的時(shí)間約束TC,利用過程主體每個(gè)資源的可以調(diào)用的時(shí)間描述RT,計(jì)算過程主體在該時(shí)間約束內(nèi)可提供的資源及工作量(PA.Effort);因?yàn)镻A1有兩個(gè)資源,在[2006-06-01,2006-07-30]之間都可以調(diào)用,因此可以提供4P-M的工作。
(5)判斷是否PA.Effort≥Effort,如果成立,過程主體具有實(shí)現(xiàn)目標(biāo)的能力,返回過程主體能夠?qū)崿F(xiàn)該目標(biāo)消息,算法結(jié)束;否則過程主體沒有足夠的資源實(shí)現(xiàn)目標(biāo),返回過程主體無法實(shí)現(xiàn)該目標(biāo)消息,算法結(jié)束;因?yàn)?P-M≥3.75P-M,所以PA1具有足夠的資源實(shí)現(xiàn)目標(biāo)。
2.資源進(jìn)度估算算法如下過程主體利用目標(biāo)分析器判斷一個(gè)目標(biāo)能夠?qū)崿F(xiàn)后,由過程生成器根據(jù)過程性知識給出了實(shí)現(xiàn)目標(biāo)的過程,該過程確定了步驟的執(zhí)行順序。接下來,計(jì)劃生成器利用資源進(jìn)度估算算法根據(jù)數(shù)據(jù)庫經(jīng)驗(yàn)知識確定執(zhí)行該過程的每個(gè)步驟需要的資源數(shù)量、進(jìn)度安排以及工作量,算法具體描述如下(1)確定實(shí)現(xiàn)過程所需的資源數(shù)量;設(shè)過程主體有N個(gè)資源Ri(i=1,2,...,N),每個(gè)資源在G的時(shí)間約束范圍內(nèi)可調(diào)用的工作量是Rei(i=1,2,...,N),則得到方法如下For i=1to N doTotalEffort=TotalEffort+Rei;If TotalEffort>Effort then return i End IfEnd For在例子中,PA1需要使用2個(gè)資源實(shí)現(xiàn)目標(biāo)G。
(2)根據(jù)目標(biāo)所需的工作量和經(jīng)驗(yàn)知識描述的每個(gè)步驟需要的工作量平均比例,計(jì)算每個(gè)步驟需要的工作量;按照經(jīng)驗(yàn)知識提供的工作量平均比例,PA1各個(gè)步驟的工作量分別為提取分析類0.9人月、接口設(shè)計(jì)0.75人月、實(shí)體定義0.6人月、編碼1.5人月。
(3)按照步驟的執(zhí)行順序,確定每個(gè)步驟的起止時(shí)間;在例子中,第一個(gè)執(zhí)行的步驟是提取分析類,兩個(gè)資源分別用0.45個(gè)人月工作量,需用13.5天,從2006年6月1日~6月14日;第二個(gè)執(zhí)行的步驟是接口設(shè)計(jì),兩個(gè)資源分別用0.375人月工作量,需用11.25天,從2006年6月15日~6月26日;第三個(gè)執(zhí)行的步驟是實(shí)體定義,兩個(gè)資源分別用0.3人月工作量,需用9天,從2006年6月27日~7月5日;第四個(gè)執(zhí)行的步驟是編碼,兩個(gè)資源分別用0.75人月工作量,需用22.5天,從2006年7月6日~7月28日。由此,資源、進(jìn)度和工作量分配完畢,生成最后的計(jì)劃。
3.經(jīng)驗(yàn)學(xué)習(xí)算法實(shí)施引擎在判斷感知器感知的是過程執(zhí)行數(shù)據(jù)后,通知學(xué)習(xí)引擎處理過程執(zhí)行數(shù)據(jù),學(xué)習(xí)引擎調(diào)用經(jīng)驗(yàn)學(xué)習(xí)算法實(shí)現(xiàn)過程主體的學(xué)習(xí)功能,具體步驟如下(1)根據(jù)過程執(zhí)行數(shù)據(jù)中的步驟標(biāo)識和資源名稱,判斷該過程執(zhí)行數(shù)據(jù)是否為當(dāng)前過程主體中的資源執(zhí)行產(chǎn)生的;過程主體PA1具有步驟12和資源R1,以及步驟14和資源R2,分別與過程執(zhí)行數(shù)據(jù)PD1和PD2表示的步驟和資源相同,因此,PD1和PD2都是過程主體PA1的資源產(chǎn)生的數(shù)據(jù);相反,過程主體PA2不具備上述的步驟和資源,因此PD1和PD2不是過程主體PA2的資源產(chǎn)生的數(shù)據(jù)。
(2)將感知到的數(shù)據(jù)加入到經(jīng)驗(yàn)知識數(shù)據(jù)庫中,實(shí)現(xiàn)其經(jīng)驗(yàn)不斷增加的自學(xué)習(xí)過程。
PD1和PD2分別被過程主體PA1加入到PA1的經(jīng)驗(yàn)知識中,從而使PA1的經(jīng)驗(yàn)知識中增加了兩條數(shù)據(jù)。
根據(jù)上述方法,用戶使用所述系統(tǒng)進(jìn)行建模的步驟如下(圖4)(1)通過過程主體的創(chuàng)建/編輯界面進(jìn)行過程主體的創(chuàng)建,將軟件組織中具有相同能力的資源建立成一個(gè)過程主體輸入到系統(tǒng)中;(2)通過目標(biāo)創(chuàng)建/編輯界面創(chuàng)建或編輯目標(biāo),輸入到系統(tǒng)中;(3)等待系統(tǒng)輸出;(4)如果在目標(biāo)允許的范圍內(nèi)沒有輸出計(jì)劃,則系統(tǒng)不具備實(shí)現(xiàn)該目標(biāo)的過程主體,如果用戶希望通過修改目標(biāo)達(dá)到實(shí)現(xiàn),則轉(zhuǎn)到步驟(3),否則,目標(biāo)未實(shí)現(xiàn)而完成;(5)如果計(jì)劃已經(jīng)生成,則在建模結(jié)果查看界面獲取生成的計(jì)劃;(6)將生成的計(jì)劃放入計(jì)劃執(zhí)行工具執(zhí)行,從而完成系統(tǒng)的建模過程。
對于計(jì)劃執(zhí)行工具執(zhí)行計(jì)劃所產(chǎn)生的數(shù)據(jù),用戶可以自行選擇手動的方式通過外部工具接口輸入到系統(tǒng)中,也可以通過計(jì)劃執(zhí)行工具與外部工具接口連接,自動輸入到系統(tǒng)中。
上述實(shí)施例中既包含了對本發(fā)明系統(tǒng)的描述,本領(lǐng)域的技術(shù)人員應(yīng)能理解,軟件過程建模的過程也包含在其中,依照本實(shí)施例,本領(lǐng)域的技術(shù)人員可以很容易地實(shí)現(xiàn)基于組織實(shí)體能力的軟件過程建模方法。
權(quán)利要求
1.一種軟件過程建模系統(tǒng),采用訪問界面/工作區(qū)/數(shù)據(jù)庫三層結(jié)構(gòu),其特征在于,所述的結(jié)構(gòu)包括A.訪問界面層包括用戶過程主體的創(chuàng)建/編輯界面、建模目標(biāo)的創(chuàng)建編輯界面、建模結(jié)果的查看界面,以及外部工具接口;B.工作區(qū)層包含過程主體管理、目標(biāo)管理、外部工具接口輸入處理三個(gè)功能模塊,以及目標(biāo)、過程執(zhí)行數(shù)據(jù)和一組過程主體三個(gè)實(shí)體,工作區(qū)層的核心是過程主體,其中每個(gè)過程主體都是能夠自主運(yùn)行、獨(dú)立實(shí)現(xiàn)目標(biāo)的實(shí)體,包含了知識結(jié)構(gòu)和行為引擎;C.數(shù)據(jù)庫層包括過程主體的描述性知識、過程主體的過程性知識和過程主體的經(jīng)驗(yàn)知識。
2.如權(quán)利要求1所述的軟件過程建模系統(tǒng),其特征在于,所述數(shù)據(jù)庫層的三個(gè)部分分別存儲如下的內(nèi)容C1.描述知識數(shù)據(jù)庫存儲過程主體的描述性信息,包括過程主體能夠?qū)崿F(xiàn)的目標(biāo)、擁有資源以及資源能力;C2.過程知識數(shù)據(jù)庫存儲過程主體實(shí)現(xiàn)其自身目標(biāo)的過程,它由一組過程步驟組成,這些步驟將在過程主體實(shí)現(xiàn)目標(biāo)時(shí)實(shí)例化為資源具體要執(zhí)行的任務(wù);C3.經(jīng)驗(yàn)知識數(shù)據(jù)庫存儲過程主體包含的資源在每個(gè)歷史項(xiàng)目中實(shí)施步驟所得到的歷史數(shù)據(jù)記錄及其統(tǒng)計(jì)數(shù)據(jù)。
3.如權(quán)利要求1所述的軟件過程建模系統(tǒng),其特征在于,所述工作區(qū)層的功能模塊分別包含如下功能B1.過程主體管理模塊用于過程主體信息的創(chuàng)建和編輯,并將創(chuàng)建和編輯的結(jié)果輸入到數(shù)據(jù)庫中;B2.目標(biāo)管理模塊用于目標(biāo)信息的創(chuàng)建和編輯,并將創(chuàng)建和編輯的結(jié)果輸入到工作區(qū)中;B3外部工具接口輸入處理模塊用于對外部計(jì)劃執(zhí)行工具產(chǎn)生的過程執(zhí)行數(shù)據(jù)輸入進(jìn)行加工并輸入到工作區(qū)中。
4.如權(quán)利要求1所述的軟件過程建模系統(tǒng),其特征在于,所述工作區(qū)層的過程主體是能夠自主運(yùn)行、獨(dú)立實(shí)現(xiàn)目標(biāo)的實(shí)體,它的知識結(jié)構(gòu)包括描述性知識、過程性知識和經(jīng)驗(yàn)知識,這些知識在系統(tǒng)啟動時(shí),從數(shù)據(jù)庫層加載到過程主體中。
5.如權(quán)利要求4所述的軟件過程建模系統(tǒng),其特征在于,所述過程主體的行為引擎包括感知器,用于從工作區(qū)中識別目標(biāo)、約束條件等,并將這些內(nèi)容轉(zhuǎn)換為過程主體的內(nèi)部知識表示;效應(yīng)器,用于將過程主體的計(jì)劃輸出到訪問界面層的建模結(jié)果查看界面;推理引擎,用于基于知識的推理,從而實(shí)現(xiàn)根據(jù)感知的目標(biāo)生成項(xiàng)目計(jì)劃;學(xué)習(xí)引擎,用于對感知到的過程執(zhí)行數(shù)據(jù)進(jìn)行分析,如果過程執(zhí)行數(shù)據(jù)是過程主體所包含的資源執(zhí)行產(chǎn)生的,則將該數(shù)據(jù)加入到該過程主體的經(jīng)驗(yàn)知識中;實(shí)施引擎,用于作為過程主體行為引擎的控制核心,控制行為引擎各部分的協(xié)調(diào)工作。
6.如權(quán)利要求5所述的軟件過程建模系統(tǒng),其特征在于,所述的推理引擎還包括目標(biāo)分析器,用于通過目標(biāo)匹配推理算法,根據(jù)數(shù)據(jù)庫描述性知識所提供的過程主體自身目標(biāo)的描述、擁有的技能、資源情況等信息判斷是否滿足感知器感知的目標(biāo)描述和技能約束;過程生成器,用于根據(jù)數(shù)據(jù)庫過程性知識確定實(shí)現(xiàn)目標(biāo)所需的過程;計(jì)劃生成器,用于通過資源進(jìn)度估算算法,基于過程選擇器確定的過程并根據(jù)數(shù)據(jù)庫經(jīng)驗(yàn)知識確定執(zhí)行該過程需要的資源數(shù)量、進(jìn)度安排以及工作量,并生成相應(yīng)的計(jì)劃。
7.一種軟件過程建模方法,包括步驟a.實(shí)施引擎定時(shí)地通知感知器對工作區(qū)進(jìn)行感知;b.感知器判斷工作區(qū)中是否有新增的目標(biāo)和過程執(zhí)行數(shù)據(jù),如果有則將其讀入到過程主體中作為感知,并通知實(shí)施引擎感知完成,其中,感知到的數(shù)據(jù)為過程執(zhí)行數(shù)據(jù)或目標(biāo);c.實(shí)施引擎判斷感知數(shù)據(jù)的類型,如果是目標(biāo),則實(shí)施引擎通知推理引擎推理目標(biāo);d.推理引擎首先調(diào)用目標(biāo)分析器判斷目標(biāo)是否與過程主體自身目標(biāo)相符合,如果不符合則拋棄該目標(biāo),并轉(zhuǎn)到步驟a;e.推理引擎調(diào)用過程生成器生成實(shí)現(xiàn)目標(biāo)的過程;f.推理引擎調(diào)用計(jì)劃生成器生成實(shí)現(xiàn)目標(biāo)的計(jì)劃,生成結(jié)束后通知實(shí)施引擎計(jì)劃生成完成;g.實(shí)施引擎通知效應(yīng)器輸出計(jì)劃;h.效應(yīng)器輸出計(jì)劃,針對一個(gè)目標(biāo)的建模過程完成,轉(zhuǎn)到步驟a。
8.如權(quán)利要求7所述的軟件過程建模方法,其特征在于,還包括步驟i.實(shí)施引擎通知學(xué)習(xí)引擎處理過程執(zhí)行數(shù)據(jù);j.學(xué)習(xí)引擎判斷該過程執(zhí)行數(shù)據(jù)是否為該過程主體的資源所執(zhí)行產(chǎn)生,如果是則將其加入該過程主體的經(jīng)驗(yàn)知識中,否則將該數(shù)據(jù)拋棄。
全文摘要
一種基于組織實(shí)體能力的軟件過程建模方法和系統(tǒng),針對軟件生產(chǎn)的特點(diǎn)實(shí)現(xiàn)軟件過程建模。在建模系統(tǒng)中使用過程主體(Agent)來代表軟件組織中具有確定資源和資源能力的組織實(shí)體,這些過程主體具有資源和它們能力的描述,且擁有資源在實(shí)現(xiàn)目標(biāo)的過程知識和經(jīng)驗(yàn),能夠在環(huán)境的驅(qū)動下實(shí)現(xiàn)自治的行為。它們被部署到系統(tǒng)的工作區(qū)中,在系統(tǒng)中可以獨(dú)立地建立特定目標(biāo)和環(huán)境下的軟件過程。用戶只要將目標(biāo)輸入到系統(tǒng)中,系統(tǒng)中的過程主體根據(jù)自身的資源情況和知識,以及項(xiàng)目的約束目標(biāo),自主運(yùn)行匹配目標(biāo)并產(chǎn)生具有資源調(diào)度情況的項(xiàng)目軟件過程。
文檔編號G06F17/30GK1928814SQ200610088999
公開日2007年3月14日 申請日期2006年7月28日 優(yōu)先權(quán)日2006年7月28日
發(fā)明者王青, 肖俊超, 李明樹 申請人:中國科學(xué)院軟件研究所