李鵬+陳智濤
摘要:該文設(shè)計實現(xiàn)了一種集中式倉儲化的軟件管理方法,將軟件以統(tǒng)一的形式存儲在軟件倉儲庫中,供用戶按需下載,自動完成軟件安裝、版本更新、運行環(huán)境設(shè)置以及配置文件修改等部署工作,從根本上解決了軟件管理混亂、安裝部署專業(yè)性強易出錯的難題。
關(guān)鍵詞:倉儲化存儲;集中管理;自動部署;服務(wù)化
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)16-0110-03
1 緒論
1.1 背景及實現(xiàn)方案
隨著當前信息化水平的日益提升,越來越多的信息系統(tǒng)被應(yīng)用到企業(yè)內(nèi)部各個層面,極大地提升了企業(yè)的工作效率。但同時由于云計算、大數(shù)據(jù)技術(shù)日新月異的發(fā)展,各種新架構(gòu)、新方法層出不窮,使得基于不同技術(shù)架構(gòu)開發(fā)的軟件安裝部署差異性很大,同時軟件更新?lián)Q代的頻率也變得更快,這就對企業(yè)信息系統(tǒng)的使用人員提出了很高的技術(shù)要求,需要將很大的精力放在軟件的部屬與更新的過程中,而不是如何通過信息系統(tǒng)處理相關(guān)業(yè)務(wù),降低了業(yè)務(wù)人員使用新系統(tǒng)、新技術(shù)的熱情。
軟件倉儲化管理方法針對上述軟件在使用過程中存在的各種問題,提出“規(guī)范開發(fā)、統(tǒng)一封裝、集中入庫、按需部署”的軟件管理方法,即:在信息系統(tǒng)開發(fā)初期集中梳理系統(tǒng)配置需求,確定軟件運行所需的軟件、數(shù)據(jù)庫、服務(wù)等環(huán)境,指定配置文件模板統(tǒng)一下發(fā);開發(fā)完成后使用軟件打包工具進行封裝,封裝完成形成.zip格式軟件壓縮包,其中包含軟件屬性信息及安裝部署信息;軟件包通過Web形式的注冊門戶添加到軟件倉儲庫中,安裝軟件類別進行存儲,同時可以通過在線方式對軟件進行維護操作;當業(yè)務(wù)人員需要使用某一軟件時,部署在客戶端的業(yè)務(wù)服務(wù)框架將自動下載軟件進行安裝,并自動檢測軟件版本進行更新。
通過上面描述,我們可以看出軟件倉儲化管理方法是一套面向軟件的全流程管控方法,通過對軟件生命周期的管理,實現(xiàn)軟件的規(guī)范管理、動態(tài)安裝和即裝即用。
1.2 現(xiàn)有方案技術(shù)缺點及本方案解決方法
從現(xiàn)有的軟件安裝方式看,大都沒有從軟件的全生命周期的角度對軟件進行管控,提供的功能比較單一,基本上都是將各方開發(fā)好的軟件上傳至統(tǒng)一的存儲環(huán)境中進行管理,當用戶需要下載安裝某一軟件時,也只是將安裝文件推送至客戶端,讓用戶自行進行軟件安裝,更談不上自動配置依賴環(huán)境及修改配置文件;此外,對于一些B/S架構(gòu)的軟件,由于沒有實體的安裝文件,現(xiàn)有的軟件庫是無能為力的,最多提供一個檢索頁面,讓用戶查詢相應(yīng)地址,在瀏覽器中輸入地址進而打開頁面的方式,費時費力。
本發(fā)明方法將所有的軟件均作為APP進行處理,無論軟件的形態(tài)是單機、服務(wù)端、客戶端還是僅僅是一個網(wǎng)頁地址,均需通過打包工具進行封裝,輸入軟件的基本屬性信息、環(huán)境依賴信息、角色信息、腳本信息等軟件顯示運行所必需的條件,然后將封裝好的軟件上傳至軟件倉儲環(huán)境中,軟件倉儲環(huán)境將根據(jù)軟件的類型采取不同的分類管理策略,提供軟件的瀏覽、檢索、維護等多種操作手段;而在用戶端則部署安裝業(yè)務(wù)服務(wù)框架,接管用戶當前桌面,負責軟件的下載、安裝及更新工作,用戶只需要幾步簡單的可視化界面操作,即可完成軟件的部署工作,框架將自動檢測本機的環(huán)境并進行配置,整個部署工作的進展情況可在界面中實時予以展示。
2 技術(shù)實現(xiàn)
2.1 技術(shù)概述
倉儲化軟件管理方法借鑒了當前移動終端應(yīng)用部署的方式,將移動端軟件商店的思想移植到固定端,實現(xiàn)軟件安裝的一鍵操作,簡化了軟件部署及更新流程,使得用戶將精力更多的投放到信息系統(tǒng)本身。
要實現(xiàn)倉儲化軟件管理方法,主要由軟件打包工具、軟件倉儲環(huán)境和業(yè)務(wù)服務(wù)框架三部分作為底層支持。其方案示意如圖 1所示。
如上圖所示,倉儲化軟件管理方法針對如那件開發(fā)的過程不做過多限制,僅需要按照規(guī)范要求填寫配置文件信息,開發(fā)完成后通過軟件打包工具對軟件的運行環(huán)境、腳本信息、依賴軟件等信息進行設(shè)置,生成標準格式軟件壓縮包;而后,通過軟件倉儲環(huán)境管理人員將軟件實體包注冊到軟件倉儲環(huán)境中,軟件倉儲環(huán)境將分別保存軟件的屬性信息和實體軟件;業(yè)務(wù)人員通過部署在客戶端的業(yè)務(wù)服務(wù)框架從軟件倉儲環(huán)境中檢索和下載軟件,業(yè)務(wù)服務(wù)框架自動完成軟件的安裝部署工作,并自動監(jiān)測自身版本信息,實現(xiàn)已安裝軟件的自動更新。
2.1.1 軟件打包工具
軟件打包工具是軟件進行倉儲化管理的基礎(chǔ),所有軟件屬性必須經(jīng)過軟件打包工具封裝,才能被后續(xù)過程自動識別。因此,所有涉及軟件發(fā)現(xiàn)即使用的信息均需在此處進行配置,具體包括:基本屬性、服務(wù)屬性、依賴關(guān)系、用戶角色及預(yù)操作腳本信息。
當前的業(yè)務(wù)軟件和商業(yè)軟件出于安全性和可靠性考慮,越來越多的運行在非Windows環(huán)境下,因此打包工具必須跨平臺運行在不同的操作系統(tǒng)下,同時由于打包過程涉及眾多類型不同的屬性配置,所以打包工具應(yīng)以可視化向?qū)У姆绞街鸩揭龑?dǎo)用戶完成打包操作,基于上述考慮打包工具采用JAVA SWT的方式進行開發(fā),顯示風格與用戶操作系統(tǒng)保持一致。
軟件打包工具主要包括基本屬性配置、服務(wù)屬性配置、依賴關(guān)系配置、用戶角色配置、腳本配置和軟件封裝6個功能模塊,其內(nèi)部邏輯圖如圖 2所示。
2.1.2 軟件倉儲環(huán)境
軟件倉儲環(huán)境為B/S架構(gòu)的軟件管理平臺,是信息系統(tǒng)納入倉儲化管理的門戶,是聯(lián)系軟件開發(fā)者與軟件管理者,以及業(yè)務(wù)人員的橋梁。
軟件管理員將軟件打包工具封裝的標準壓縮包通過WEB頁面上傳至軟件倉儲環(huán)境中,倉儲環(huán)境解析軟件壓縮包獲取完整的軟件屬性信息,根據(jù)軟件類別采取相應(yīng)的軟件管理策略;同時以WEB服務(wù)接口的形式向業(yè)務(wù)服務(wù)框架提供軟件查詢、下載及更新服務(wù)。軟件倉儲環(huán)境的內(nèi)部邏輯圖如圖 3所示。
2.1.3 業(yè)務(wù)服務(wù)框架
業(yè)務(wù)服務(wù)框架支持基于C++開發(fā)的客戶端軟件應(yīng)用集成,同時支持基于WEB的門戶界面集成,為業(yè)務(wù)系統(tǒng)用戶提供統(tǒng)一門戶入口,對被集成的各類通用基礎(chǔ)服務(wù)以及業(yè)務(wù)應(yīng)用服務(wù)軟件進行訪問,支持不同形式的業(yè)務(wù)的聚合及不同格式的業(yè)務(wù)內(nèi)容的聚合,并可根據(jù)每個用戶的使用特點和角色不同,定制個性化的工作空間,主要功能包括:用戶管理、配置管理、樣式管理、軟件檢索、應(yīng)用中心、軟件管理、窗口瀏覽器、任務(wù)管理器8個功能模塊。其內(nèi)部邏輯圖如圖 4所示。
2.2 軟件自動部署方式
本發(fā)明針對軟件自動下載部署的流程進行了詳細的定義,即用戶首先通過業(yè)務(wù)服務(wù)框架發(fā)起軟件查詢請求,隨后集成框架在軟件倉儲環(huán)境中找到指定軟件并下載在本地,然后解壓軟件包并按照文件的設(shè)置進行軟件安裝,安裝進度在框架主界面中實時顯示。詳細部署流程如圖 5所示:
針對上述部署流程,提出如下處理原則:
1)軟件下載邏輯控制
當用戶提出軟件下載請求后,并不立即從軟件倉儲環(huán)境中下載該軟件,而是首先在業(yè)務(wù)服務(wù)框架下檢索該軟件是否已被安裝,若已安裝將不在下載。
鑒于信息系統(tǒng)部署環(huán)境的差異性,軟件倉儲環(huán)境和業(yè)務(wù)服務(wù)框架支持軟件的斷點續(xù)傳,業(yè)務(wù)服務(wù)框架會自動記錄軟件當前的下載狀態(tài),當出現(xiàn)異常終止下載后,已下載的軟件不會刪除,下次框架啟動時將繼續(xù)執(zhí)行下載過程。
2) 依賴環(huán)境配置
當軟件下載完成后,業(yè)務(wù)服務(wù)框架并不急于進行安裝,而是按照屬性文件的內(nèi)容檢測安裝環(huán)境是否具備,若安裝環(huán)境尚不具備則首先從軟件倉儲環(huán)境中下載依賴軟件進行安裝;整個依賴檢測的過程可以嵌套執(zhí)行,直至所有的依賴環(huán)境均被安裝;若依賴軟件倉儲環(huán)境無法提供,則安裝過程直接終止,已安裝的依賴環(huán)境不再回退。
3) 修改配置文件
當前軟件開發(fā)模式下,軟件運行所需的服務(wù)端信息如:數(shù)據(jù)庫地址、服務(wù)端信息等大多存放在制定的配置文件中,需要用戶手工修改,而大多數(shù)情況下用戶對于后臺運行的服務(wù)信息并不了解,這就需要倉儲化管理方法動態(tài)獲取服務(wù)信息。
軟件安裝完成后,業(yè)務(wù)服務(wù)框架會自動修改軟件運行所需配置文件中的信息:業(yè)務(wù)服務(wù)框架讀取配置文件中的關(guān)鍵字,將其發(fā)送至軟件倉儲環(huán)境,軟件倉儲環(huán)境結(jié)合用戶權(quán)限信息在屬性庫中檢索出其對應(yīng)的真實值,并返回業(yè)務(wù)服務(wù)框架,框架修改配置文件內(nèi)容。
考慮到后續(xù)服務(wù)端信息變更的可能性,框架將在軟件每次啟動之前進行一次配置文件的更新,確保服務(wù)端的實時性。
4) 實時進度顯示
軟件整個下載安裝部署的過程均在業(yè)務(wù)服務(wù)框架界面中實時顯示,當進度條走完,表示安裝過程順利完成,在界面中出現(xiàn)該軟件快捷方式,點擊快捷方式將直接啟動軟件;若中途安裝失敗則進度條直接消失,界面給出錯誤原因。
2.3 軟件版本更新方式
本發(fā)明借鑒移動端APP更新方法,將其移植到信息系統(tǒng)中,使固定端同樣具備軟件更新主動推送的功能,詳細更新流程如圖 6所示:
如上圖所示,業(yè)務(wù)服務(wù)框架在啟動時或每隔一段時間就會將框架內(nèi)已安裝的軟件信息發(fā)送至軟件倉儲環(huán)境,由軟件倉儲環(huán)境判斷哪些軟件存在新版本并將版本信息返回集成框架,框架在用戶界面中的軟件圖標上給出提示信息,用戶根據(jù)個人意愿決定是否執(zhí)行版本更新,若用戶決定執(zhí)行版本更新,則框架將首先在軟件倉儲環(huán)境中下載新軟件版本,并按照屬性文件要求備份已安裝軟件數(shù)據(jù)信息,然后執(zhí)行新版軟件的安裝步驟,若新版本安裝完成導(dǎo)入備份數(shù)據(jù)信息隨后卸載舊版本;若安裝失敗再刪除已安裝信息版本軟件,恢復(fù)舊版本使用。
針對上述部署流程,提出如下處理原則:
1) 版本更新判定原則
信息系統(tǒng)在開發(fā)之初即為系統(tǒng)中的每個軟件分配唯一的軟件標識,后續(xù)版本更新不得變更軟件標識。軟件開發(fā)完成使用軟件打包工具封裝時,將軟件標識作為必填屬性之一添加到屬性文件中。相同軟件的不同版本通過打包工具提供的版本號屬性進行區(qū)分,在軟件倉儲環(huán)境中相同軟件標識的多個軟件將被認為是同一軟件的不同版本。
當軟件倉儲環(huán)境接收到業(yè)務(wù)服務(wù)框架提交的軟件版本信息后,將根據(jù)軟件標識和版本號在自身屬性庫中進行比對,若存在相同軟件標識且版本號大于已安裝版本號軟件時即認為該存在更新。
2) 版本更新過程限定
為保證軟件在版本更新過程中使用的連續(xù)性,在進行版本更新前需將已安裝版本的數(shù)據(jù)信息進行備份,備份數(shù)據(jù)的類型在軟件打包工具生成的數(shù)據(jù)文件中有詳細的描述;
① 軟件版本進行更新應(yīng)先進行新版本的安裝,在進行舊版本的刪除,以保證舊版本在新版本安裝失敗后還能正常使用;
② 若軟件倉儲環(huán)境中同時存在多個可更新版本時,將默認推送最新的版本軟件;
③ 業(yè)務(wù)服務(wù)框架作為軟件的一種,也可同步進行更新操作。
④ 多個軟件的更新操作可并行執(zhí)行,軟件的更新操作不會影響其他已安裝軟件的正常運行。
3 結(jié)束語
本方法最大的特點為結(jié)合信息系統(tǒng)特點對軟件進行全生命周期的管理,而現(xiàn)有的軟件管理模式將軟件開發(fā)人員、軟件管理人員及最終的軟件使用人員割裂開來,各自為政。造成最終用戶需要將很大的精力放在軟件的安裝部署工作上,從一開始就降低了對信息系統(tǒng)的好感度;同樣軟件管理人員在舊的軟件管理模式下,很大一部分精力要用來解決最終用戶在軟件安裝及更新過程中出現(xiàn)的各種問題。
本文從信息系統(tǒng)真實的開發(fā)及使用場景入手,結(jié)合移動端應(yīng)用使用流程,通盤考慮軟件整個使用流程,更多地從如何打通軟件存續(xù)的各個階段的連接點下功夫,實現(xiàn)對軟件的倉儲化管理,而對軟件自身形態(tài)不做任何限制,確保不同開發(fā)語言、不同開發(fā)環(huán)境下生成的軟件均可自動安裝部署在系統(tǒng)用戶的環(huán)境中。
本文提出的集中式倉儲化管理方法解決了信息系統(tǒng)各類軟件無法統(tǒng)一管理、自動部署的難題,為軟件管理模式設(shè)計確立了標桿,提供了思路。
參考文獻:
[1] 馮翔, 殷月明, 吳永和. 融合軟件商店和Web聚合的SaaS軟件開發(fā)模型[J]. 電信科學(xué), 2012(11).
[2] 馬友忠, 孟小峰, 姜大盺. 移動應(yīng)用集成:框架、技術(shù)與挑戰(zhàn)[J]. 計算機學(xué)報, 2013(7).
[3] 周婧. 基于云服務(wù)平臺的應(yīng)用軟件商店開發(fā)者社區(qū)研究與實現(xiàn)[D].成都: 電子科技大學(xué), 2009.