【摘要】本文就如何建立一個支持網絡軟件協同開發活動的環境和信息系統,如何在此系統中進行任務劃分和協同管理等方面展開了討論,提出了協同活動管理中對象性、關系性和任務性這3個方面的分析模型,并進行了較為深入的設計和討論,它以軟件組件對象為核心描述了對象模型;以“最后離開者關門原則”討論了關系模型;以任務劃分方法分析了任務模型。
【關鍵詞】協同開發管理對象性關系性任務性
軟件開發活動的網絡化、分布化、共享化、協同化是信息時代發展的必然趨勢。作為新興的信息化應用軟件,協同軟件受到越來越多的學者和用戶關注。20世紀80年代中期,國外就已經有功能相對單一的商品化工作流系統問世,這可以看做早期協同軟件的雛形。協同軟件是指那些以團隊協作為目標的協作軟件工具,主要包括群組協作管理,如:工作流管理、項目管理等等;各種通信軟件,如E-Mail、即時通信、VOIP等。作為協同軟件開發的管理者,要想保證系統工作順利有效的進行,就應該從協同管理的軟件組件對象性,協同開發的關系性和協同管理的任務性等三方面進行分析、建立、管理、控制、協同開發工作。
一、協同管理的軟件組件對象模型
1.1概念
協同管理系統作為一種信息管理系統,除了具有一般信息管理系統的功能外,它還具有對協同信息的表述、存儲、提取、查詢和瀏覽等功能。
整體是由部分組成,協同管理軟件同樣如此,協同管理系統由多個局部系統組成。局部系統是協同管理系統的對象實例,本身是一個對象,同時它又是組件對象實例,被其他對象管理。
1.2組件對象的關聯和創建
協同管理系統中管理的各對象之間存在著復雜的關聯,以下是對其關聯情況的概括描述:
(1)<數據庫>::=<對象集>
(2)<對象集>::=<原子對象>/<結構>
(3)<結構>::=<名稱><層次><頭對象>[<對象集>/<鏈集>]
(4)<頭對象>::=<對象集>
(5)<鏈集>::=<空>/<鏈>/<鏈集>
(6)<鏈>::=(<對象集名>,<對象集名>)
在以上的描述中,我們可以將數據庫系統看成是一個獨立創建的包含了大量軟件組件對象的對象庫。
對于軟件組件對象的創建,一般來說有兩種創建方式,一種是由部分到整體的創建方式,就是先創建一個具體的軟件組件對象,然后由這個已創建好的軟件組件對象再創建出更多的組件對象,進而形成一個大的應用軟件系統。另一種是由整體到部分的創建方式,即先創建一個軟件組件系統框架,管理者根據需要創建許多的模塊,并給出設計要求,具體的內部結構由開發者自主決定。開發者創建好的軟件組件對象對其他開發者和用戶都是開放的,每個開發者或用戶都可以根據自己的需要及興趣檢出任意一個組件對象,也可以對其進行修改變動,將改動后的組件對象再存回數據庫中。
二、協同開發的關系模型
2.1自發組成的協作組
在一個開放的信息環境中,協作組的成員并不是一成不變的,可以事先確定,也可以隨時加入,那么如何來管理整個協作組呢?本模型采用了“誰最后離開誰關門”的方式。舉例說明:有A,B,C,D四人,他們分別提取了同一個目標對象,這樣他們四人就組成了一個協作組,在此協作組中的這四人彼此是可見的,如果他們對所提取的同一對象完成改動工作的順序是A→D→B→C,那么先完成改動工作的人要將他所完成改動后的內容和要求發送給其他未完成改動的人,最后的完成改動工作的開發者來實現改動的合并任務,并且需要按照版本模型的規則將完成改動的內容存回數據庫中。在該協作組中,每個協作組中的成員在接收到其他成員的改動內容后都要將自己的改動與之合并,之后發送給其他成員,發送完畢后,該成員可以退出協作組,也可以留在協作組中作一些輔助性的工作。在該協作組中,只有最后完成改動工作的人可以將改動結果送入數據庫,否則他所做的改動就會被覆蓋。
2.2協同信息表
協同信息表為管理協作帶來了方便,在數據庫中的每個組件對象,都需要有一個協同信息表L(oi),根據開發者的加入和退出情況,該協同信息表的內容會添加或者刪除一個表項。作為協作組的成員,他可以同時提取多個對象,這時他就成為了多個協作組的成員。因此在工作時,為了避免造成數據不一致現象的發生,不僅要考慮單個組員在不同組中的工作狀態,還要考慮到不同組之間的協作情況和相互影響。
考慮一個協同數據庫由幾大功能模塊構成,這些模塊形成系統的幾大特性,每一個特性可能都有若干候選選項。不同的選擇組合使系統的功能會發生變化,從這些意義上講協同數據庫可以表示為
SDB= P1,P2,…,Pm
針對組個O1,O2,O3,O4,就產生了3個協作組。
若所有被提取的對象Oi,Oj,…之間都沒有關聯和依賴,或者有依賴和關聯的對象Oi,Oj,…總是同屬于一個協作組,那么問題就變得簡單了。
第一種情況使協作者可以簡單地完成對象的接收合并或傳送到其他協作者工作區;第二種情況(如圖1)若只有對象O1,O2有關聯,它們與其他對象無關系,O3,O2盡管是被兩個協作組提取修改,但是它們是在兩個協作組中同時被提取的,因此,響應的開發者也可以像第一種情況一樣去對它們進行處理。
對于一個復合任務的劃分可以有兩種方法,一種方法是按照開發者成員數量劃分,即有幾個人就劃分成幾個子任務。另一種方法是按照子系統的結構劃分,也就是根據所要完成的復合任務的模塊進行的劃分,設該讀訪集中有N個模塊,那么每個R都是一個子任務的開始點,這種劃分方法也是軟件工程中最常見的劃分方法。
任務劃分會對分析結果產生影響,當兩個讀操作集重疊時不會產生影響,但當一個讀操作集與一個寫操作集重疊時,一個子任務會對另一個子任務產生影響,當兩個寫操作集重疊時,兩個子任務有可能會對同一個組件進行改動,波及覆時,會使兩個子任務間產生影響。通過對任務劃分的分析和細化從而使一個復合任務內部的各個子任務間的的相互依賴關系盡可能的減少是提高效率,改善工作質量的最好方法。通過影響分析方法可能改善協同工作的計劃和調度,影響分析方法也可以改善軟件模塊劃分。復合任務經過初始的任務劃分,產生了若干個工作命令,每個開發者接收到屬于自己的工作命令,建立了一個子任務網,在子任務讀寫集之間重疊的開發者屬于同一個協作組。
3.2任務調度
任務劃分完成后,復合任務的管理員或協調系統會進一步對子任務進行調度。一個復合任務被劃分成若干個原子任務,為了完成整個復合任務,管理員會對分散于各個場地的子任務進行調度,這種調度和實施的過程叫做事務處理。
參考文獻
[1]趙逢禹.軟件協同設計[M].北京:清華大學出版社,2010
[2]張海藩.軟件工程導論[M].北京:清華大學出版社,2012
[3]姜坤.基于動態工作流的網絡協同辦公系統建模方法研究[J].科技通報,2012.8
[4]劉鋼.異地合作設計服務研究與實現[D],西安:西安交通大學,2011
[5]丁建軍,楊岳,羅意平.基于工作流管理的遠程協同設計系統研究[J],制造業自動化,2011,26(3):21-25.