摘要:開發(fā)協(xié)作平臺將分布在不同場所的工作人員高效組織起來,通過虛擬化技術(shù)在一個實時工作環(huán)境里進行高效協(xié)作,并在不同的項目組之間應(yīng)用一致的流程和標準,從而提高開發(fā)效率,實現(xiàn)各類開發(fā)工件之間的完整追蹤能力和生命周期管理,使軟件交付活動更加透明。
關(guān)鍵詞:開發(fā)協(xié)作;Dojo;Equinox;Comet
中圖分類號:F426.672 文獻標識碼:A 文章編號:1007—9599 (2012) 14—0000—02
一、背景
自2000年6月國務(wù)院18號文件的簽發(fā)以來,中國軟件業(yè)經(jīng)歷了10多年的高速發(fā)展。時至今日,我國的軟件園區(qū)已達200多家。但在成績的背后,也應(yīng)該看到我國具有核心競爭力的軟件園區(qū)數(shù)量與國外相比依然偏少,主要原因在于產(chǎn)業(yè)公共服務(wù)缺乏、園區(qū)內(nèi)企業(yè)之間以及企業(yè)內(nèi)部組織之間不能高效地協(xié)作、產(chǎn)業(yè)鏈不完善等。這嚴重制約了我國軟件業(yè)的發(fā)展,軟件園開發(fā)協(xié)作平臺的構(gòu)建能夠較好地解決這些問題。
軟件園開發(fā)協(xié)作平臺是一個開放性的平臺,提供了一套支持在線開發(fā)的軟件開發(fā)工具庫,用于支持軟件外包園區(qū)內(nèi)各個企業(yè)間進行協(xié)作開發(fā),減小其運作成本,從而實現(xiàn)整合外包園區(qū)內(nèi)各個企業(yè)的研發(fā)資源和能力,同時提高協(xié)作性,最終實現(xiàn)提高整個軟件園區(qū)的市場競爭力。
二、系統(tǒng)核心架構(gòu)
開發(fā)協(xié)作平臺的核心是一個整合了多個功能接口的業(yè)務(wù)平臺,業(yè)務(wù)平臺之下細分為權(quán)限控制模塊、安全控制模塊、文件處理模塊、代碼編輯模塊、用戶管理模塊等五大功能模塊。這五大功能模塊是在對線編碼工具進行功能分析和整合后所得出的高度內(nèi)聚,彼此之間耦合度很低的功能套件,是整個平臺功能實現(xiàn)的支撐。其中,部分模塊又是對更加底層的數(shù)據(jù)或工具進行封裝和二次處理后所形成的。在業(yè)務(wù)平臺與前端頁面之間由傳統(tǒng)的請求\應(yīng)答消息接口和服務(wù)器推送接口作為消息傳遞的方式。開發(fā)協(xié)作平臺系統(tǒng)結(jié)構(gòu)圖如圖1所示。
權(quán)限控制模塊的作用是在協(xié)作開發(fā)的過程中,實現(xiàn)各個用戶之間的文件操作權(quán)限控制,即當一個文件被一個用戶打開時,與其協(xié)同開發(fā)的其他用戶(被共享有這個項目的用戶)將無法打開這個文件;當文件的擁有者釋放這個文件時(關(guān)閉該文件或退出系統(tǒng)),該文件才能被其他人操作。該模塊主要由User、UserManagement和FileSystem三個核心類組成。用戶管理器UserManagement負責監(jiān)管多個用戶的生命周期,每個用戶User都擁有一個FileSystem作為其專屬的文件管理器,用于處理其相關(guān)的文件工作。用戶的生命周期分為生成階段,文件操作階段,用戶掛起階段,消亡階段。其中生成階段和消亡階段分別在用戶登錄和退出時發(fā)生,進行資源分配和資源回收工作。文件操作階段是指用戶打開或擁有至少一個文件,此時用戶具有文件操作、修改的權(quán)力,并且此時要對被用戶打開的文件加鎖。加鎖的過程中,實際上是對這個用戶包含的FileSystem進行操作,即將文件狀態(tài)信息和擁有權(quán)注入到FileSystem中。當用戶釋放資源時,也是操作其所包含的FileSystem對象的相關(guān)數(shù)據(jù)結(jié)構(gòu)。
安全控制模塊和文件處理模塊相輔相成。一方面安全控制是對文件處理的安全控制,另一方面文件處理要受到安全控制的限制。為了更好地模塊化開發(fā),本系統(tǒng)將常用的文件操作類組織成文件處理模塊,而將和安全有關(guān)的類組織成安全控制模塊。圖5所示是安全控制核心類的結(jié)構(gòu)圖,F(xiàn)ileSystem類作為每個用戶專屬的文件系統(tǒng)管理和操作類,包含了四個支持安全控制的類,即ZipCipherUtil、Upload、JarGenerator、CipheUtil。其中ZipCipherUtil類用于提供文件和文件夾壓縮和解壓縮服務(wù);Upload類提供文件上傳功能,根據(jù)此功能能夠?qū)崿F(xiàn)本地文件和項目上傳到平臺進行開發(fā)或共享;JarGenerator用于將項目或文件打包成.jar格式的,可以提供給用戶進行下載和本地化操作;CipherUtil類用于提供加密和解密功能。四個類被FileSystem類整合,共同協(xié)作,結(jié)合安全控制文件結(jié)構(gòu),實現(xiàn)了一套相對簡單的安全控制機制。
代碼編輯模塊作為在線開發(fā)工具的核心功能,其涵蓋面十分廣泛,包含的子功能也非常多,因此采用Eclipse下的Equinox插件體系來完成。其關(guān)于代碼編輯模塊的核心包是org.eclipse.core.resources和org.eclipse.jdt.core這兩個包。這兩個包提供了一系列相關(guān)的工具,并且已經(jīng)封裝成相對來說操作較為簡單的接口,無需自己從底層實現(xiàn)。
如圖3所示的代碼編輯模塊核心類結(jié)構(gòu)可以看出,ClientMessageHandler類專門用做功能接口,其主要功能是處理前端發(fā)送過來的各種消息,并經(jīng)過初步解析和封裝后調(diào)用后臺各個功能塊和系統(tǒng);而調(diào)用后臺功能塊和系統(tǒng)是通過訪問UserManagement實現(xiàn)的,因為UserManagement中保存了當前活躍的用戶列表,ClientMessageHandler收到消息后從UserManagement中獲得操作相關(guān)的用戶,再通過User中的FileSystem將web操作映射到本地;所有底層的功能實現(xiàn)塊全部承接到FileSystem下,也就是說FileSystem這個類是一個針對指定用戶的功能平臺,各個上層模塊進行本地操作實際上就是通過層與層之間的訪問追溯到指定用戶的FileSystem再進行操作。
代碼編輯模塊提供了代碼編譯、代碼編輯、項目打包、項目結(jié)構(gòu)管理等功能。其中項目打包功能,項目結(jié)構(gòu)管理功能已通過其他模塊完成,只要進行簡單的關(guān)聯(lián)調(diào)用即可。代碼編輯功能除了要提供最基礎(chǔ)的文檔輸入功能(即復(fù)制、粘貼、剪切、字體格式顏色處理、保存、撤銷、重復(fù)、查找)以外,還需要實現(xiàn)針對代碼編輯的特殊功能需求,比如自動縮進、關(guān)鍵字高亮(JAVA語言)、花括號匹配、自動補全等功能。
用戶管理和交流模塊實際上是一系列跟用戶有關(guān)的附屬基礎(chǔ)功能集合,包括用戶管理、用戶交流管理、項目共享管理。用戶管理的功能是當用戶登錄時,進行驗證,驗證通過后從數(shù)據(jù)庫和文件系統(tǒng)中提取相關(guān)資源進行分配。這一功能由UserManagement類實現(xiàn),其中封裝了一系列針對用戶管理的操作,包括用戶的登錄、注銷等。用戶數(shù)據(jù)庫與項目的其他子平臺共用,相互協(xié)調(diào)統(tǒng)一。
如圖4所示的用戶交流與項目共享核心類結(jié)構(gòu)可以看出,用戶交流與項目共享的功能封裝在CollaborationsGenerator類中,其主要操作方法是訪問UserManagement,獲取其包含的User列表。通過根據(jù)索引查找到指定的User后再對其所包含的FileSystem進行操作。FileSystem中有專門用于存儲該用戶協(xié)作對象,協(xié)作項目,擁有資源的數(shù)據(jù)結(jié)構(gòu)。而CollaborationsGenerator類也正是通過控制這些數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)用戶交流與項目共享功能。每當該操作完成后,CollaborationsGenerator類會使用服務(wù)器推送接口將項目更新(主要是擁有權(quán)變更信息)傳遞給相關(guān)的用戶,無刷新更新其前端頁面。而用戶交流可以通過廣播和向指定用戶發(fā)送兩種方式進行消息傳輸,用戶接收到的消息將會在控制臺中呈現(xiàn)。
三、系統(tǒng)實現(xiàn)
由于在實際開發(fā)過程中,發(fā)生文件沖突的僅僅是進行項目共享的用戶,所以當項目共享過程發(fā)生時,會在User對象中保存其正在進行共享的用戶信息。每當要打開一個文件時,用戶可以通過訪問其所包含的共享用戶信息,遍歷他們是否擁有該文件的資源,如果有則放棄打開過程,并在界面上提示該文件已被加鎖;如果沒有在其共享用戶的擁有文件列表中找到該資源,則打開該文件。在本系統(tǒng)中,采用服務(wù)器推送接口實現(xiàn)文件狀態(tài)信息實時更新,如圖5所示顯示當前文件為非鎖定(可打開)狀態(tài)。
安全控制文件結(jié)構(gòu)中主要包含三個目錄,即store目錄、workplace目錄、recover目錄。Store目錄用于保存平臺各個文件和項目數(shù)據(jù),當用戶不在線時,其所擁有的文件和項目將被統(tǒng)一加密壓縮,置放與store文件夾中,而這個文件夾將被平臺管理員管理,用戶沒有直接訪問該文件夾的權(quán)力;加密壓縮后的壓縮包文件無法以正常的方式打開,只有經(jīng)過平臺解密后才能被讀取;workplace是當前活躍項目的存放文件夾,即平臺上操作文件或項目實際上是在用戶登錄后,從store文件夾下找到屬于其的項目,解壓縮到workplace目錄下,然后再進行操作;recover文件夾是用于存放被刪除的文件,用戶也可以在刪除后向平臺管理員申請,將誤刪除的文件恢復(fù)。全部文件操作基于Eclipse下Equinox插件體系來完成,這個插件已將文件操作封裝為針對某些節(jié)點,不需要從底層寫代碼。
代碼編輯區(qū)域總體上縱向分為三個板塊,分別是工具欄,代碼編輯區(qū)和控制臺。工具欄提供各種操作,包括當前文件保存、保存全部、復(fù)制、剪貼、粘貼、全文查找、撤銷、重復(fù)、縮進、字體顏色設(shè)置、自動補全、項目打包、執(zhí)行功能。代碼編輯區(qū)域以文件標簽的方式來進行各個當前已打開的文件之間切換,簡單方便??刂婆_作為系統(tǒng)消息的顯示區(qū)域,也可以用于顯示系統(tǒng)輸出流輸出的文字,作為項目的調(diào)試,此外,用戶之間聊天交流的顯示區(qū)域也在控制臺中。
四、結(jié)束語
本文給出了軟件園開發(fā)協(xié)作平臺的設(shè)計與實現(xiàn)核心內(nèi)容,該平臺作為軟件園外包協(xié)作平臺的三個子系統(tǒng)之一,可用于解決軟件園企業(yè)協(xié)作開發(fā)的一些相關(guān)問題,具有一定的實際意義。該系統(tǒng)采JAVA語言實現(xiàn),采用了Dojo、Equinox、Comet等框架,具有良好的可擴展性。
參考文獻:
[1](美)MartinFowler.企業(yè)應(yīng)用架構(gòu)模式[M].王懷民等譯.北京:機械工業(yè)出版社,2011
[2]陳華軍.J2EE構(gòu)建企業(yè)級應(yīng)用解決方案[M].人民郵電出版社,2002
[3]呂輝.我國軟件外包產(chǎn)業(yè)發(fā)展現(xiàn)狀研[D].北京交通大學,2008