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