摘要:針對與視點集成相關的問題,首先討論了基于開發關系的視點集成方式,然后提出了一種基于二元遞增方式的視點集成過程;同時采用范疇理論對該集成過程進行了建模,有利于一般意義上進一步研究與視點集成相關的基本性質。
關鍵詞:需求工程; 視點; 視點集成; 范疇論
中圖分類號:TP311.5文獻標志碼:A
文章編號:1001-3695(2008)02-0446-04
0引言
多視點需求工程方法中,對不同項目相關人員的需求采用不同的視點進行描述。為生成一份完整的規格說明書,最終必須將與各視點所對應的部分規格說明集成為一個統一的整體,以作為需求工程活動結束的里程碑,以及后階段系統開發#65380;測試和驗收的依據。目前,在多視點需求工程方法的研究中,已有很多與視點的定義[1,2]#65380;視點的表示[3,4]#65380;視點的一致性[5,6]等相關的專門研究,而有關視點集成的研究卻相對較少。其中較有代表性的主要是I.Sommerville等人[7]和牟克典等人[8]的工作。I.Sommerville的PREview方法從宏觀方面指導性地提出了視點集成過程應采取的主要步驟,但他所提出的步驟專門針對PREview方法所采用的特定視點標志和表示方式,難以應用于集成采用其他標志和表示方式的視點。牟克典等人基于格論對視點集成過程中重疊需求的不一致優先級處理策略和方法進行了研究,提出了一系列基本的處理策略和方法,但對視點集成的具體方式及其過程等則缺乏進一步的討論。
針對視點集成的相關問題,本文主要從一般角度討論一種基于遞增方式的視點集成過程。由于視點集成的過程與視點集成的方式及其目標密切相關。為統一處理視點集成時不同視點所對應部分規格說明在語法及語義方面可能存在的重疊問題,本文以公共開發的方式作為視點的集成方式,并將所有視點所對應部分規格說明的公共開發作為它們的集成結果。此外,為便于從一般角度進一步研究與視點集成相關的具體性質,本文采用范疇理論[9,10]對該集成過程進行了建模。
1視點的集成方式
實際開發過程中,若兩個視點所對應的部分規格說明完全無關,則它們的集成只需將兩者簡單地歸集到一起即可;若兩個或多個視點所對應的部分規格說明存在重疊的信息,則這些重疊的信息可能語法上等價但語義上不同,也可能語法上不同但語義上等價,僅通過直接的歸集操作難以將它們集成為一個完整統一的有機整體。由于在重疊信息上的具體語法及語義問題與待集成視點所對應的實際規格說明相關,缺乏討論的具體對象和依據。以下主要基于開發關系的方式討論一種一般意義上的視點集成方式。
定義1開發關系。需求工程過程中,若一個規格說明S1可沿靠近實現的方向通過一定的方式(dv)演化為另一個規格說明S2,則稱S2是S1的開發,記為S2 dv S1或S1dvS2,同時也稱S1與S2具有開發關系dv。
根據演化方式及性質的不同,S1與S2間的開發關系可分為求精#65380;實現#65380;等價等三種類型。a)求精關系表示S2通過將S1中的抽象描述演化為具體描述,或通過消除S1中的某些不確定性而得到;b)實現關系在演化的方式上與求精關系相同,只是前者通常只具有自反性,而后者既具有自反性,又具有傳遞性;c)等價關系則表示S2與S1在意義上完全一致,只是具體描述形式不同,除自反性與傳遞性外,等價關系還具有對稱性。
由于S1與S2間具體有什么樣的開發關系dv由S1的演化方式決定,且S2可由S1及dv完全推出,故也將S1與S2間的開發關系dv稱為S1對應開發關系dv。而一個規格說明具體可如何演化,即它具體可對應什么樣的開發關系,與其內容及描述方式相關。內容上,不同規格說明與最終實現的關系不同,所應采用的演化方式也不同,故需對應不同的開發關系;描述方式上,不同的描述方式所支持或定義的開發關系不同,因而實際可選取的開發關系也不同。
定義2公共開發。設S1,S2,…,Sn為規格說明,對應的開發關系分別為dv1,dv2,…,dvn;若存在某規格說明S,使S dv1 S1,S dv2 S2,…,S dvn Sn均成立,則稱S為S1,S2,…,Sn在dv1,dv2,…,dvn下的公共開發。
因兩個或多個規格說明在各自對應的開發關系下可能存在多個公共開發,以下給出公共開發集的定義:
定義3公共開發集。設S1,S2,…,Sn為規格說明,對應的開發關系分別為dv1,dv2,…,dvn,它們的公共開發集SCD定義為SCD={S|S dvi Si,對所有的i∈{1…n}}。
基于上面對開發關系及公共開發的定義,從語義的角度,若兩個或多個視點分別對應的部分規格說明在一定的開發關系下存在公共開發,則顯然該公共開發即可看成是相關視點的一個集成。為此,視點的集成可圍繞定義1中的開發關系dv展開,即以尋找各視點所對應部分規格說明的公共開發的方式作為視點的集成方式。
上面所定義的公共開發也可以作為定義和檢查相關視點是否一致的依據。具體而言,若兩個或多個視點所對應的規格說明可通過各自對應的開發關系找到一個公共開發,則說明它們都是對同一系統的合理描述,只是關注范圍#65380;抽象層次#65380;組織形式等方面可能不同,因而是一致的;若兩個或多個不同的規格說明不存在一個公共的開發,則說明它們相互間存在某些不能協調的東西,故無法找到一個公共的開發使各規格說明中的描述能有機地融合到一起,因而是不一致的。
定義4視點一致。設S1,S2,…,Sn分別為視點VP1,VP2,…,VPn所對應的部分規格說明,且所對應的開發關系分別為dv1,dv2,…,dvn;若存在某規格說明S,使S dv1 S1,S dv2 S2,…,S dvn Sn均成立,則稱VP1,VP2,…,VPn一致。
2視點的集成過程
基于上面介紹的集成方式,視點集成的目標是找出一個所有待集成視點所對應部分規格說明的公共開發。但當存在多個視點需進行集成時,想一次性找出所有部分規格說明的公共開發可能難度較大;從一致性檢查的角度而言,若它們之間存在不一致,期望采用一次性的方式找出它們的公共開發也不便于精確地定位具體哪些視點之間存在不一致,故視點的集成必須采用逐步的方式進行。
逐步集成包括無序集成和遞增集成兩種形式。a)無序集成每次從暫未參與集成的規格說明和上階段通過集成生成的中間結果中隨機選取不確定的若干個進行集成,生成新的中間集成結果,直至找到所有規格說明的一個公共開發為止。b)遞增集成除第一步外,每次將上一步生成的中間集成結果與一個或多個暫未參與集成的規格說明進行集成,生成新的中間集成結果;通過遞增的方式,當所有規格說明均參與集成時,則生成的結果即為所有規格說明的公共開發。
無序集成與遞增集成本質上沒有什么區別,但后者的集成過程更加清晰有序。為此,本文采用遞增方式討論視點的集成,不失一般性。以下討論基于二元遞增方式的集成,如圖1所示。
其中:S1,S2,…,Sn分別表示視點VP1,VP2,…,VPn所對應的部分規格說明,且所對應的開發關系分別為dv1,dv2,…,dvn;S2h為S1和S2的公共開發;S3i為S2h和S3的公共開發,依此類推,Snk為S(n-1)j和Sn的公共開發。
由于本文采用尋找公共開發的方式進行視點的集成,為使每次生成的中間集成結果可進一步參與后續的集成操作,它們也必須對應一個合理有效的開發關系。在此,指定每個中間集成結果所對應的開發關系為前一個中間集成結果及參與此次集成的規格說明兩者所對應開發關系的合取,如圖1所示。S2h對應的開發關系為dv1∩dv2;S3i對應的開發關系為dv1∩dv2∩dv3;依此類推,S(n-1)j對應的開發關系為dv1∩dv2∩…∩dvn-1。這樣,若S3i是S2h和S3的公共開發,則S3i與S2h之間既滿足dv1關系又滿足dv2關系,同時S2h與S1#65380;S2間分別滿足dv1#65380;dv2關系,故直觀上S3i也可看做是S1和S2的公共開發,依此類推,Snk是所有S1,S2,…,Sn的公共開發。
雖然采用上面的方式直觀上Snk似乎確實是S1,S2,…,Sn在dv1,dv2,…,dvn下的公共開發,但事實上還與dvi,i∈{1…n}的性質有關。例如,設S2h dv1 S1,S3i dv1∩dv2 S2h成立,但dv1不滿足傳遞性,則顯然S3i dv1 S1并不一定成立。故要保證Snk確實是S1,S2,…,Sn在dv1,dv2,…,dvn下的公共開發,必須保證dv1,dv2,…,dvn均具有傳遞性。
現有各種規格說明描述方法中所定義的開發關系基本上均可歸為等價和求精兩種類型,實現類型的關系十分罕見,下面的討論中假設所有的開發關系均具有傳遞性。
基于二元遞增方式的視點集成形式上雖然簡單,但實際的操作過程卻可能十分繁瑣。原因在于兩個視點的公共開發集中可能包括多個元素。其中:有些元素可與下一個待集成的視點進行進一步集成;另一些則可能無法進一步集成,即無法找出下一個所需的新的公共開發。故基于二元遞增方式集成視點時,必須恰當地選取中間過程中生成的公共開發,若某些選取的公共開發導致后面的過程無法完成最終的集成,則必須選取其他的公共開發進行進一步的集成。
綜合上述討論,以下算法的形式對圖1所示的二元遞增集成過程進行具體描述。
設有n個視點需進行集成,各自所對應的規格說明分別為S1,S2,…,Sn,且這些規格說明所對應的開發關系分別為dv1,dv2,…,dvn。不失一般性,假設按S1,S2,…,Sn的排列順序依次集成。
算法1基于二元遞增方式的視點集成過程步驟如下:
1)計算S1#65380;S2在dv1#65380;dv2下的公共開發集SCD_1。
2)從SCD_1中任取一個,記為S2h,同時SCD_1=SCD_1-{S2h},計算S2h#65380;S3在dv1∩dv2和dv3下的公共開發集SCD_2。
3)若SCD_2為空,則轉前一步;否則轉下一步。
4)若SCD_2為空,則轉前兩步;否則從SCD_2中任取一個,記為S3i,同時SCD_2= SCD_2-{S3i},計算S3i#65380;S4在dv1∩dv2∩dv3和dv4下的公共開發集SCD_3。
……
依此類推
……
2n-5)若SCD_n-2為空,則轉前一步;否則轉下一步。
2n-4)若SCD_n-2為空,則轉前兩步;否則從SCD_n-2中任取一個,記為S(n-1)j,同時SCD_n-2=SCD_n-2-{S(n-1)j},計算S(n-1)j#65380;Sn在dv1∩dv2∩…∩dvn-1和dvn下的公共開發集SCD_n-1。
2n-3)若SCD_n-1為空,則轉前一步;否則SCD_n-1中的任意一個均為S1,S2,…,Sn在dv1,dv2,…,dvn下的公共開發,即S1,S2,…,Sn的集成。
基于算法1所示的集成過程及定義4對視點一致的定義,顯然存在如下的性質:
性質1相關視點一致,當且僅當算法1能實現對它們的集成。
說明性質1充分性和必要性的證明可分別根據定義4和算法1進行,限于篇幅,本文不進行具體介紹。
3視點集成過程的范疇建模
本文主要從一般意義上對基于規格說明間的開發關系研究視點的集成,對視點集成過程的研究也主要關注于規格說明間存在的開發關系,而非各視點的具體內容及其表示形式。與集合論以個體的組成元素為研究對象不同,范疇論關注于研究對象間的態射,即對象間存在的關系,通過對對象間態射的研究,從最一般的角度分析對象及其相互之間可能具有的性質。基于本文所采用的集成方式及范疇論的這一特點,為便于從一般意義上進一步研究與視點集成相關的基本性質。下面采用范疇論的方法對該過程進行建模。
設有n個視點需進行集成,各自所對應的部分規格說明分別為S1,S2,…,Sn,且這些規格說明所對應的開發關系分別為dv1,dv2,…,dvn。假設按S1,S2,…,Sn的排列順序以二元遞增方式依次集成,則該集成過程可用如下構造的范疇R進行建模:
1)將S1,S2,…,Sn看成是R的對象,且分別具有自身到自身的態射dv1,dv2,…,dvn。
2)假設S1#65380;S2的公共開發集為SCD_1,將SCD_1中的每個元素看成是R的對象,且它們均具有自身到自身的態射dv1∩dv2。
3)分別在S1#65380;S2與SCD_1的每個元素間建立態射dv1#65380;dv2;若SCD_1中的兩個元素間具有dv1∩dv2關系,則在它們之間建立相應的態射dv1∩dv2。
4)假設SCD_1中的每個元素與S3的所有公共開發集中的元素構成集合SCD_2,將SCD_2中的每個元素看成是R的對象,且它們均具有自身到自身的態射dv1∩dv2∩dv3。
5)在SCD_1與SCD_2的元素兩兩間建立態射dv1∩dv2,在S3與SCD_2的每個元素間建立態射dv3;若SCD_2中的兩個元素間具有dv1∩dv2∩dv3關系,則在它們之間建立相應的態射dv1∩dv2∩dv3。
……
依此類推
……
2n-2)假設SCD_n-2中的每個元素與Sn-1的所有公共開發集中的元素構成集合SCD_n-1,將SCD_n中的每個元素看成是R的對象,且它們均具有自身到自身的態射dv1∩dv2∩…∩dvn。
2n-1)在SCD_n-2與SCD_n-1的元素兩兩間建立態射dv1∩dv2∩…∩dvn-1,在Sn-1與SCD_n-1的每個元素間建立態射dvn;若SCD_n-1中的兩個元素間具有dv1∩dv2∩…∩dvn關系,則在它們之間建立相應的態射dv1∩dv2∩…∩dvn。
2n)除經上述態射的合成生成的新態射外,R中不包含任何其他的對象和態射。
其中:R中態射的合成操作符“ ”定義如下。
設A#65380;B#65380;C為R中的對象,dvx1:A×B,dvx2:B×C為R中的態射,則dvx2 dvx1:A×C定義為
dvx2 dvx1≡dvx1。
依據定義1,所有開發關系dv1,dv2,…,dvn均具有自反性。當假定它們也都具有傳遞性時,容易驗證上面1)~2n-1)的構造過程是合理和有效的,因此,它們確實是對算法1的正確建模。
以下證明由1)~2n)及合成操作符“ ”所定義的R確實構成一個范疇。
首先討論合成操作符“ ”定義的有效性。
在1)~2n-1)的構造過程中,對于任意的對象A和B,若它們之間存在態射dvx1:A×B,則該態射在意義上表示B dvx1 A。要使dvx2 dvx1≡dvx1有效,必須保證C dvx1 A成立。
設dvX1=dvi∩…∩dvj(1≤i≤j≤n);dvX2=dvl∩…∩dvm(1≤l≤m≤n),
|dvX1| ≡{dvi,…,dvj},|dvX2| ≡{dvl,…,dvm}。
根據1)~2n-1)的構造過程,可知|dvX1||dvX2|,又由于dvi(1≤i≤n)均具有傳遞性,若B dvx1 A,C dvx2B成立,則C dvx1 A必然成立。因此,上面合成操作符“ ”的定義有效。
下面討論R滿足態射乘積的存在性#65380;態射乘積的結合性以及恒等態射的存在性。
根據對R中對象#65380;態射及態射合成操作符“ ”定義,容易驗證:
a)dvx1,dvx2∈Mor(R),dvx2 dvx1∈Mor(R);
b)dvx1∈Mor(A,B),dvx2∈Mor(B,C),dvx3∈Mor(C,D),dvx3 (dvx2 dvx1)=(dvx3 dvx2) dvx1;
c)A∈Ob(R),均存在惟一一個自身到自身的態射,此處假設用idA統一表示,且對于dvx1∈Mor(A,B),dvx2∈Mor(C,A),dvx1 idA=dvx1,idA dvx2=dvx2。
其中:a)~c)分別表示態射乘積的存在性#65380;態射乘積的結合性和恒等態射的存在性,故R滿足范疇的定義,因而R確實構成一個范疇。
要注意的是,在上面的R中,對于其中任意一個對象,從該對象出發的態射均采用相同的名稱進行標志。
由于R是對算法1的范疇建模,根據性質1及R的構造過程,若S1,S2,…,Sn在dv1,dv2,…,dvn下一致,則R中必然至少存在一個對象S,使S1,S2,…,Sn與S間分別存在態射dv1,dv2,…,dvn,該S即為S1,S2,…,Sn在dv1,dv2,…,dvn下的公共開發;反之,則不存在這樣的對象S。此外,R中的對象S1,S2,…,Sn自身到自身分別只存在一個惟一的態射dv1,dv2,…,dvn,而dvi dvi=dvi(1≤i≤n)。故根據范疇論中對共錐的定義,可知{dvi:Si→S}(1≤i≤n)是R中由S1,S2,…,Sn所構成離散圖的共錐。
定義5共錐元。設A1,A2,…,Am為R中的對象。若{dvxi:Ai→B}(1≤i≤m)為離散圖A1,A2,…,Am在R中的共錐,則稱B為A1,A2,…,Am在R中的共錐元。A1,A2,…,Am所有共錐元的集合記做Cocone_E(A1,A2,…,Am)。
設從A1,A2,…,Am出發的態射分別標記為dvx1,dvx2,…,dvxm,則根據R中態射的意義,顯然有Cocone_E(A1,A2,…,Am)等價于SCD(dvx1,A1)(dvx2,A2)…(dvxm,Am),故對于規格說明的一致性及其集成的性質,也可用如下的范疇論術語描述:
性質2若R中由S1,S2,…,Sn所構成的離散圖存在共錐,則它們相互一致,反之則不一致;若R中由S1,S2,…,Sn所構成的離散圖存在共錐,則任意一個共錐元均可作為它們的一個集成。
4結束語
視點的集成是多視點需求工程過程方法的一個重要環節。如何有效地將與各視點所對應的部分規格說明集成為一個統一的整體直接關系到需求工程階段開發的質量,以及后續的開發過程能否順利進行。針對與視點集成相關的問題,本文提出了一種基于二元遞增方式的視點的集成過程,對所提出的集成過程進行了范疇建模,并對該模型定義的有效性進行了討論,證明了該模型滿足范疇的定義。
參考文獻:
[1]SPANOUDAKIS G, FINKELSTEIN A, EMMERICH W. Viewpoint
96: international workshop on multiple perspectives in software deve-
lopment-workshop report[C]//Proc of the SIGSOFT ’96 Workshops on International Workshop on Multiple Perspectives in Software Deve-lopment(Viewpoints’96). New York: ACM Press, 1996:1-4.
[2]FINKELSTEIN A, SOMMERVILLE I. The viewpoints FAQ[J]. Software Engineering Journal, 1996,11(1):2-4.
[3]SOMMERIVILLE I, SAWYER P, VILLER S. Viewpoints for requirements elicitation: a practical approach[C]//Proc of the 3rd International Conference on Requirements Engineering, ICRE. Los Alamitos: IEEE CS Press, 1998:74-81.
[4]SILVA A. Requirements, domain and specifications: a viewpoint-based approach to requirements engineering[C]//Proc of the 24th International Conference on Software Engineering. Los Alamitos: IEEE CS Press, 2002:94-104.
[5]GHEZZI C, NUSEIBEH B. Special issue on managing inconsistency in software development[J]. IEEE Transactions on Software Engineering, 1999,25(6):782-869.
[6]NUSEIBEH B, KRAMER J, FINKELSTEIN A. Viewpoints: mea-ningful relationships are difficult[C]//Proc of the 25th International Conference on Software Engineering. Los Alamitos: IEEE CS Press, 2003:676-681.
[7]SOMMERVILLE I, SAWYER P. Requirements engineering: a good practice guide[M]. Chichester: Wiley, 1997.
[8]牟克典,金芝,陸汝鈐.視點合成中重疊需求的不一致優先級處理[J].計算機學報,2004,27(10):1379-1387.
[9]PIERCE B C. Basic category theory for computer scientists[M]. Cambridge: MIT Press, 1991.
[10]SCOTT P J. Some aspects of categories in computer science[J]. Handbook of Algebra, 2000,2:3-77.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”