数据自治开放的软件开发和运行环境
數(shù)據(jù)自治開放的軟件開發(fā)和運(yùn)行環(huán)境
吳毅堅(jiān)1,2, 陳士壯1,2, 葛佳麗1,2, 趙文耘1,2
1. 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,上海 201203
2. 上海市數(shù)據(jù)科學(xué)重點(diǎn)實(shí)驗(yàn)室,上海 201203
摘要:數(shù)據(jù)自治開放是數(shù)據(jù)開放的一種新形式,能保護(hù)數(shù)據(jù)擁有者的合法權(quán)益。數(shù)據(jù)自治開放這一新的數(shù)據(jù)開放模式要求軟件開發(fā)和運(yùn)行環(huán)境能從應(yīng)用的需求描述、應(yīng)用開發(fā)和調(diào)試、應(yīng)用運(yùn)行監(jiān)控等方面進(jìn)行全方位的支持。給出了支持?jǐn)?shù)據(jù)自治開放的軟件開發(fā)和運(yùn)行環(huán)境的總體設(shè)計(jì),闡述了支持軟件行為管控的數(shù)據(jù)自治開放應(yīng)用開發(fā)全過(guò)程,從而實(shí)現(xiàn)數(shù)據(jù)自治開放中數(shù)據(jù)的全生命周期管理,說(shuō)明了建設(shè)數(shù)據(jù)自治開放的軟件開發(fā)運(yùn)行基礎(chǔ)設(shè)施的可行性。
關(guān)鍵詞:數(shù)據(jù)開放;數(shù)據(jù)自治開放;軟件開發(fā)環(huán)境;軟件運(yùn)行環(huán)境;軟件行為管控
doi:10.11959/j.issn.2096-0271.2018016
論文引用格式:吳毅堅(jiān), 陳士壯, 葛佳麗, 等. 數(shù)據(jù)自治開放的軟件開發(fā)和運(yùn)行環(huán)境[J]. 大數(shù)據(jù), 2018, 4(2): 31-41.
WU Y J, CHEN S Z, GE J L, et al. Software development and runtime environment for self-governing openness of data[J]. Big data research, 2018, 4(2): 31-41.
1? 引言
近年來(lái),許多國(guó)家紛紛通過(guò)建立數(shù)據(jù)開放平臺(tái)推動(dòng)數(shù)據(jù)開放和共享,以便公眾能夠及時(shí)、快捷、準(zhǔn)確地獲取數(shù)據(jù)資源[1]。通常,這些平臺(tái)要求數(shù)據(jù)擁有者以XML、CSV、XLS等格式把數(shù)據(jù)上傳到平臺(tái)。數(shù)據(jù)使用者可以根據(jù)需求從數(shù)據(jù)平臺(tái)下載數(shù)據(jù),然后按照數(shù)據(jù)平臺(tái)的要求使用數(shù)據(jù)。然而,是否能完全遵守這類數(shù)據(jù)使用要求則很大程度上由數(shù)據(jù)使用者決定,數(shù)據(jù)擁有者無(wú)法控制其提供數(shù)據(jù)的復(fù)制、傳播和使用。數(shù)據(jù)治理權(quán)的削弱和喪失很大程度上導(dǎo)致數(shù)據(jù)擁有者不愿開放數(shù)據(jù)。
數(shù)據(jù)自治開放是數(shù)據(jù)開放的一種新思路和新模式。在數(shù)據(jù)自治開放環(huán)境下,數(shù)據(jù)擁有者將保持對(duì)數(shù)據(jù)的治理權(quán),擁有的數(shù)據(jù)將通過(guò)系統(tǒng)化的受控機(jī)制開放給潛在的數(shù)據(jù)用戶。潛在的數(shù)據(jù)用戶通過(guò)開放的渠道獲取數(shù)據(jù)的基本信息,并通過(guò)數(shù)據(jù)自治開放軟件平臺(tái)獲取經(jīng)過(guò)封裝的數(shù)據(jù)實(shí)體,在本地或云端按照約定的方式受控地使用數(shù)據(jù)。數(shù)據(jù)用戶可以查看部分?jǐn)?shù)據(jù)內(nèi)容(如果數(shù)據(jù)擁有者允許),并利用數(shù)據(jù)開展數(shù)據(jù)分析和開發(fā)數(shù)據(jù)應(yīng)用,但無(wú)法對(duì)數(shù)據(jù)個(gè)體或全體進(jìn)行復(fù)制或傳播。
與傳統(tǒng)的數(shù)據(jù)開放不同,數(shù)據(jù)自治開放環(huán)境在支持?jǐn)?shù)據(jù)開放的同時(shí),注重保持?jǐn)?shù)據(jù)稀缺性和保護(hù)數(shù)據(jù)權(quán)益。數(shù)據(jù)擁有者一方面希望通過(guò)持有數(shù)據(jù)獲得數(shù)據(jù)的潛在價(jià)值,另一方面又可能沒(méi)有能力獲取這種潛在價(jià)值。這種數(shù)據(jù)價(jià)值困境削弱了數(shù)據(jù)擁有者開放數(shù)據(jù)的動(dòng)機(jī),直接影響了數(shù)據(jù)潛在價(jià)值的挖掘。如何通過(guò)技術(shù)手段,在保護(hù)數(shù)據(jù)擁有者權(quán)益的同時(shí),又能充分發(fā)掘數(shù)據(jù)潛在價(jià)值,是面向數(shù)據(jù)自治開放的軟件環(huán)境面臨的挑戰(zhàn)之一。
數(shù)據(jù)價(jià)值的挖掘依賴于軟件,因此軟件的開發(fā)和運(yùn)行環(huán)境是否有足夠的能力支持?jǐn)?shù)據(jù)使用的全生命周期,直接影響數(shù)據(jù)自治開放的可行性、有效性和效率。為了提升數(shù)據(jù)利用的效率,數(shù)據(jù)擁有者僅提供數(shù)據(jù),而讀取并處理數(shù)據(jù)的軟件則由數(shù)據(jù)使用者自行開發(fā)(即外部軟件)。然而,由于大數(shù)據(jù)分析處理的創(chuàng)新性和不確定性,難以預(yù)先精確限定外部軟件的數(shù)據(jù)處理方式和具體行為,因此需要對(duì)外部軟件實(shí)際訪問(wèn)和處理數(shù)據(jù)進(jìn)行必要的管理和監(jiān)控,才能確保數(shù)據(jù)不被非法復(fù)制和傳播,從而保護(hù)數(shù)據(jù)的稀缺性和數(shù)據(jù)擁有者的合法權(quán)益。
為了有效地管理和監(jiān)控外部軟件行為、支持?jǐn)?shù)據(jù)使用者在數(shù)據(jù)自治開放環(huán)境下開發(fā)數(shù)據(jù)分析軟件,需要研究支持?jǐn)?shù)據(jù)治理權(quán)控制的軟件開發(fā)和運(yùn)行環(huán)境,對(duì)數(shù)據(jù)自治開放中數(shù)據(jù)獲取、外部軟件的開發(fā)調(diào)試和部署運(yùn)行、數(shù)據(jù)使用等環(huán)節(jié)提供數(shù)據(jù)和軟件的全生命周期的支持保障。本文從數(shù)據(jù)自治開放中數(shù)據(jù)使用方式變化的角度,分析了面向數(shù)據(jù)自治開放的軟件開發(fā)和運(yùn)行支持的總體需求,闡述了數(shù)據(jù)封裝體的基本設(shè)計(jì)思想;給出了基于數(shù)據(jù)封裝體的軟件開發(fā)和運(yùn)行環(huán)境進(jìn)行架構(gòu)設(shè)計(jì)的思路,闡述其主要組成部分的意義和功能,說(shuō)明了在該環(huán)境下數(shù)據(jù)使用和軟件開發(fā)的全過(guò)程;討論了構(gòu)建該環(huán)境的關(guān)鍵技術(shù)挑戰(zhàn)。
2 ?相關(guān)研究
在軟件開發(fā)平臺(tái)方面,各大云開發(fā)商都在研發(fā)相應(yīng)的大數(shù)據(jù)開發(fā)平臺(tái)。例如阿里云推出了“數(shù)加平臺(tái)”,提供大數(shù)據(jù)計(jì)算服務(wù)、大數(shù)據(jù)開發(fā)套件等大數(shù)據(jù)應(yīng)用開發(fā)和運(yùn)行基礎(chǔ)設(shè)施。然而,這些開發(fā)平臺(tái)主要針對(duì)一般性的大數(shù)據(jù)應(yīng)用開發(fā),而不關(guān)注數(shù)據(jù)本身的權(quán)益保護(hù)和數(shù)據(jù)稀缺性的保持。
軟件行為管控是數(shù)據(jù)自治開放中的重要環(huán)節(jié),通過(guò)監(jiān)控軟件訪問(wèn)數(shù)據(jù)的行為來(lái)保護(hù)數(shù)據(jù)不被非法復(fù)制和傳播。在信息安全領(lǐng)域,有大量的關(guān)于軟件行為分析的研究,通過(guò)動(dòng)態(tài)[2,3]和靜態(tài)[4-6]的方法追蹤敏感數(shù)據(jù)流,從而防止敏感數(shù)據(jù)的泄露。還有研究通過(guò)對(duì)常見的數(shù)據(jù)源和數(shù)據(jù)宿進(jìn)行分類[7],規(guī)定軟件的合法行為序列[8],對(duì)比軟件的實(shí)際執(zhí)行軌跡,判定軟件行為是否符合要求[2],從而發(fā)現(xiàn)是否有數(shù)據(jù)的非法使用[9]。然而,這些工作主要關(guān)注敏感數(shù)據(jù)泄露,并且大多應(yīng)用在移動(dòng)應(yīng)用的檢測(cè)上,而并不關(guān)注對(duì)完整數(shù)據(jù)集的泄露保護(hù)。另外,對(duì)軟件行為日志的分析也是軟件行為和意圖分析的一個(gè)重要輔助手段[10-13]。
從數(shù)據(jù)本身的保護(hù)方面來(lái)看,數(shù)據(jù)訪問(wèn)控制[14,15]是一種主要的數(shù)據(jù)泄露防控手段。然而,目前的做法主要是通過(guò)技術(shù)手段限制數(shù)據(jù)訪問(wèn),例如加密、授權(quán)、安全策略、信任級(jí)別[16]等,內(nèi)容也主要關(guān)注隱私保護(hù)[17],因此這些方法并不完全適用于數(shù)據(jù)開放環(huán)境。
由此可見,要從根本上解決數(shù)據(jù)開放環(huán)境下受控的數(shù)據(jù)訪問(wèn),保持?jǐn)?shù)據(jù)的稀缺性,必須從訪問(wèn)數(shù)據(jù)的軟件入手,研發(fā)針對(duì)數(shù)據(jù)稀缺性保護(hù)的軟件開發(fā)和運(yùn)行平臺(tái),確保軟件對(duì)數(shù)據(jù)的訪問(wèn)過(guò)程是受控的,并且同時(shí)具有一定的靈活性,以支持各類大數(shù)據(jù)分析和數(shù)據(jù)密集型應(yīng)用需求[18,19]。
3 ?數(shù)據(jù)自治開放的軟件開發(fā)和運(yùn)行環(huán)境
3.1 數(shù)據(jù)自治開放環(huán)境的數(shù)據(jù)訪問(wèn)特點(diǎn)和需求
數(shù)據(jù)自治開放是控制和限制數(shù)據(jù)使用者傳播或?yàn)E用數(shù)據(jù)的新型數(shù)據(jù)開放模式。在數(shù)據(jù)自治開放環(huán)境下,數(shù)據(jù)使用者無(wú)法再像傳統(tǒng)的數(shù)據(jù)開放或共享那樣,得到完整的數(shù)據(jù)資源,并對(duì)數(shù)據(jù)資源進(jìn)行直接的、不受數(shù)據(jù)擁有者或第三方(如基礎(chǔ)平臺(tái)軟件)控制的訪問(wèn),因此也無(wú)法任意復(fù)制傳播。但同時(shí),數(shù)據(jù)使用者又能根據(jù)自身的需求,在數(shù)據(jù)擁有者的“授權(quán)”(按申請(qǐng)的方式使用數(shù)據(jù)的權(quán)利,但不是處置權(quán)或治理權(quán))下自由使用數(shù)據(jù)。這就要求有一個(gè)支持?jǐn)?shù)據(jù)使用且對(duì)數(shù)據(jù)使用有適當(dāng)管控的軟件環(huán)境,將數(shù)據(jù)封裝和保護(hù)起來(lái),同時(shí)又具備計(jì)算能力滿足數(shù)據(jù)使用者傳統(tǒng)的數(shù)據(jù)使用(處理和分析等)需求。
自治開放中的數(shù)據(jù)是以帶有自主程序單元和內(nèi)在計(jì)算能力的封裝體的形式發(fā)布和使用的。這種數(shù)據(jù)封裝體是數(shù)據(jù)自治開放的軟件開發(fā)和運(yùn)行環(huán)境使用的最基礎(chǔ)的數(shù)據(jù)單元。數(shù)據(jù)使用者能獲得的數(shù)據(jù)只能存在于數(shù)據(jù)封裝體中,并且只能進(jìn)行自己聲稱的數(shù)據(jù)訪問(wèn)行為。超出預(yù)先聲稱意圖的數(shù)據(jù)訪問(wèn)行為必須被檢測(cè)、監(jiān)控、報(bào)警或拒絕;必要時(shí),數(shù)據(jù)封裝體中的自主程序單元還可對(duì)數(shù)據(jù)進(jìn)行銷毀(擦除),從而避免數(shù)據(jù)的非法復(fù)制傳播。
本文將針對(duì)這種數(shù)據(jù)訪問(wèn)特點(diǎn)和管控需求,給出數(shù)據(jù)自治開放的軟件開發(fā)和運(yùn)行環(huán)境的總體設(shè)計(jì)架構(gòu),并論述基于該架構(gòu)的數(shù)據(jù)應(yīng)用開發(fā)全過(guò)程。
3.2 總體架構(gòu)
數(shù)據(jù)自治開放的軟件開發(fā)和運(yùn)行環(huán)境是一個(gè)以數(shù)據(jù)封裝體(帶有自主程序單元和內(nèi)在計(jì)算能力的數(shù)據(jù)存儲(chǔ)形式,數(shù)據(jù)被灌裝入數(shù)據(jù)封裝體中)為基本數(shù)據(jù)組織和運(yùn)算的開發(fā)運(yùn)行一體化平臺(tái),分為相對(duì)獨(dú)立的開發(fā)平臺(tái)和運(yùn)行平臺(tái)兩個(gè)部分。開發(fā)平臺(tái)支持基于數(shù)據(jù)封裝體的外部軟件開發(fā)和調(diào)試,運(yùn)行平臺(tái)支持外部軟件的測(cè)試、運(yùn)行和管控,同時(shí)兩部分又通過(guò)數(shù)據(jù)封裝體的基本設(shè)計(jì)密切結(jié)合,一體化地支撐數(shù)據(jù)密集型應(yīng)用的開發(fā)和運(yùn)行。
圖1展示了基于數(shù)據(jù)封裝體的軟件開發(fā)和運(yùn)行環(huán)境的總體架構(gòu)。為了便于闡述,圖1中還包括了用于管理數(shù)據(jù)封裝體的管理平臺(tái)。在軟件開發(fā)和運(yùn)行環(huán)境中,外部軟件所需的所有數(shù)據(jù)可來(lái)自于數(shù)據(jù)擁有者的自主存儲(chǔ)或者公有存儲(chǔ),并通過(guò)數(shù)據(jù)管理平臺(tái)封裝到數(shù)據(jù)封裝體中。外部軟件的開發(fā)人員需要根據(jù)自身的業(yè)務(wù)需求和數(shù)據(jù)訪問(wèn)需求,通過(guò)數(shù)據(jù)封裝體管理平臺(tái)提出數(shù)據(jù)訪問(wèn)申請(qǐng),并由管理平臺(tái)將數(shù)據(jù)存儲(chǔ)中的數(shù)據(jù)灌裝到數(shù)據(jù)封裝體中,以供程序開發(fā)調(diào)試使用。具體開發(fā)流程將在第3.3節(jié)中論述。
圖1 數(shù)據(jù)自治開放的軟件開發(fā)和運(yùn)行環(huán)境的總體架構(gòu)
開發(fā)平臺(tái)主要由一個(gè)集成開發(fā)環(huán)境(integrated development environment, IDE)構(gòu)成。該IDE基于Eclipse架構(gòu),擴(kuò)展了新的面向數(shù)據(jù)封裝體開發(fā)的多種設(shè)計(jì)視圖,用于支持?jǐn)?shù)據(jù)封裝體應(yīng)用整個(gè)開發(fā)生命周期中不同開發(fā)環(huán)境的需求。例如,在數(shù)據(jù)封裝體應(yīng)用開發(fā)的啟動(dòng)階段,開發(fā)人員需要向數(shù)據(jù)站提交業(yè)務(wù)需求,此時(shí)要用到應(yīng)用開發(fā)需求視圖和資源列表視圖,便于開發(fā)人員書寫需求并查看可用的數(shù)據(jù)封裝體目錄;而在數(shù)據(jù)封裝體應(yīng)用開發(fā)初期,開發(fā)人員可能希望看到數(shù)據(jù)封裝體定義的細(xì)節(jié)以及一些樣本數(shù)據(jù),此時(shí)則要用到數(shù)據(jù)封裝體視圖。各類視圖將數(shù)據(jù)封裝體應(yīng)用開發(fā)過(guò)程中的需求組織起來(lái),以便開發(fā)人員針對(duì)不同開發(fā)需求自行切換。該IDE還集成了程序運(yùn)行時(shí)開發(fā)包,將數(shù)據(jù)封裝體訪問(wèn)、外部數(shù)據(jù)分析算法以及在數(shù)據(jù)站端的運(yùn)行支持接口等集成在開發(fā)環(huán)境中,方便開發(fā)者的程序開發(fā)工作。該IDE提供了專門針對(duì)大數(shù)據(jù)應(yīng)用開發(fā)問(wèn)題而重新設(shè)計(jì)的調(diào)試環(huán)境,用于解決由于數(shù)據(jù)質(zhì)量參差不齊而出現(xiàn)的實(shí)際數(shù)據(jù)內(nèi)容與數(shù)據(jù)封裝體標(biāo)稱數(shù)據(jù)結(jié)構(gòu)產(chǎn)生差異的問(wèn)題。外部程序開發(fā)人員根據(jù)獲取的樣本數(shù)據(jù)封裝體編寫和調(diào)試面向數(shù)據(jù)封裝體的應(yīng)用程序,并通過(guò)樣本數(shù)據(jù)封裝體進(jìn)行調(diào)試,才能在程序中正確處理樣本數(shù)據(jù)封裝體中出現(xiàn)的各類問(wèn)題。調(diào)試環(huán)境除了提供傳統(tǒng)集成調(diào)試環(huán)境以外,還特別針對(duì)數(shù)據(jù)分析過(guò)程進(jìn)行優(yōu)化,例如對(duì)數(shù)據(jù)計(jì)算的中間結(jié)果進(jìn)行檢查、根據(jù)數(shù)據(jù)規(guī)格說(shuō)明驗(yàn)證數(shù)據(jù)封裝體的數(shù)據(jù)實(shí)例等;而對(duì)于平臺(tái)而言,可以通過(guò)調(diào)試對(duì)代碼進(jìn)行動(dòng)態(tài)分析,從而對(duì)關(guān)鍵數(shù)據(jù)的處理邏輯進(jìn)行檢查。
運(yùn)行平臺(tái)是外部程序在服務(wù)器環(huán)境中運(yùn)行的基礎(chǔ)軟件支撐,主要包括以下幾個(gè)方面。
● 基本的應(yīng)用程序運(yùn)行容器,如Tomcat等Web應(yīng)用運(yùn)行容器或Java運(yùn)行,提供了應(yīng)用程序運(yùn)行的基本環(huán)境。
● 基礎(chǔ)運(yùn)行框架:是外部應(yīng)用程序在運(yùn)行容器中運(yùn)行時(shí)所需的面向數(shù)據(jù)封裝體的接口支持,如標(biāo)準(zhǔn)的數(shù)據(jù)封裝體訪問(wèn)接口以及集成的標(biāo)準(zhǔn)數(shù)據(jù)分析方法等。
● 管控模塊:基于數(shù)據(jù)封裝體實(shí)時(shí)訪問(wèn)日志以及運(yùn)行容器日志,收集外部程序的數(shù)據(jù)訪問(wèn)行為,并進(jìn)行實(shí)時(shí)和準(zhǔn)實(shí)時(shí)的分析,然后根據(jù)行為管控策略給出相應(yīng)的數(shù)據(jù)行為控制。
● 需求分析器:用于在開發(fā)初期分析選擇合適的數(shù)據(jù)封裝體以及在運(yùn)行階段作為數(shù)據(jù)訪問(wèn)行為異常的參考。
● 測(cè)試環(huán)境:任何一個(gè)面向數(shù)據(jù)封裝體的外部應(yīng)用在開發(fā)完成后、投入正式運(yùn)行之前,由應(yīng)用程序接入模塊送入測(cè)試環(huán)境進(jìn)行相應(yīng)的測(cè)試,包括用戶視角的用戶需求驗(yàn)證和平臺(tái)視角的數(shù)據(jù)權(quán)益保護(hù)。
3.3 支持軟件行為管控的數(shù)據(jù)自治開放應(yīng)用開發(fā)全過(guò)程
支持軟件行為管控的數(shù)據(jù)自治開放應(yīng)用開發(fā)過(guò)程如圖2所示,主要分為提交需求、獲取數(shù)據(jù)封裝體樣本、本地開發(fā)程序、調(diào)試程序、提交程序、測(cè)試程序以及正式運(yùn)行7個(gè)步驟。
圖2 支持軟件行為管控的數(shù)據(jù)自治開放應(yīng)用開發(fā)全過(guò)程
(1)提交需求
與普通的應(yīng)用開發(fā)不同,面向數(shù)據(jù)封裝體的應(yīng)用開發(fā)由于需要對(duì)軟件的行為進(jìn)行必要的管控,因此需要將待開發(fā)應(yīng)用的業(yè)務(wù)需求和數(shù)據(jù)需求提交給運(yùn)行平臺(tái)中的需求分析模塊,并在運(yùn)行平臺(tái)中對(duì)該軟件開發(fā)任務(wù)進(jìn)行注冊(cè)。后續(xù)的開發(fā)過(guò)程將同時(shí)在開發(fā)平臺(tái)和運(yùn)行平臺(tái)中記錄。
(2)獲取數(shù)據(jù)封裝體樣本
運(yùn)行平臺(tái)中的需求分析模塊在收到程序開發(fā)請(qǐng)求后,通過(guò)數(shù)據(jù)管理平臺(tái)獲得符合相關(guān)需求的樣本數(shù)據(jù)封裝體,并分發(fā)給開發(fā)者。樣本數(shù)據(jù)封裝體是對(duì)所需數(shù)據(jù)的部分采樣,僅供開發(fā)人員開發(fā)程序時(shí)使用。樣本數(shù)據(jù)封裝體的行為管控可以設(shè)置得較弱,而且開發(fā)人員為了充分調(diào)試程序,甚至可多次請(qǐng)求樣本數(shù)據(jù)封裝體。
(3)本地開發(fā)程序
在完成樣本數(shù)據(jù)封裝體的獲取后,開發(fā)人員就可利用傳統(tǒng)的開發(fā)技術(shù)自行開發(fā)數(shù)據(jù)封裝體應(yīng)用。通常,開發(fā)人員會(huì)首先讀取數(shù)據(jù)封裝體的實(shí)際數(shù)據(jù)結(jié)構(gòu),并按照實(shí)際的數(shù)據(jù)結(jié)構(gòu)嘗試讀取數(shù)據(jù)。在熟悉樣本數(shù)據(jù)后,結(jié)合實(shí)際業(yè)務(wù)需求,編寫數(shù)據(jù)查詢的代碼,并完成數(shù)據(jù)的分析。
(4)調(diào)試程序
在程序的開發(fā)過(guò)程中,開發(fā)人員需要利用集成開發(fā)環(huán)境中的集成調(diào)試器進(jìn)行程序調(diào)試。開發(fā)人員一般將著重檢查和驗(yàn)證開發(fā)程序?qū)颖緮?shù)據(jù)處理的正確性。與傳統(tǒng)的單純調(diào)試程序不同,在面向數(shù)據(jù)封裝體的應(yīng)用開發(fā)中,平臺(tái)本身也可通過(guò)程序的調(diào)試運(yùn)行獲取關(guān)鍵數(shù)據(jù)的使用邏輯,從而為后續(xù)正式程序的軟件行為檢測(cè)和管控收集信息。在調(diào)試程序的過(guò)程中,當(dāng)程序的行為與預(yù)期不一致時(shí),開發(fā)人員隨時(shí)可以重新修改程序,并再次進(jìn)行調(diào)試。
(5)提交程序
由于最終的程序?qū)⒃谶\(yùn)行平臺(tái)上執(zhí)行,所以通常情況下,開發(fā)人員在本地開發(fā)完成并通過(guò)調(diào)試的程序,需要通過(guò)運(yùn)行平臺(tái)的應(yīng)用程序接入模塊加載到運(yùn)行容器中執(zhí)行。在此過(guò)程中,應(yīng)用程序接入模塊根據(jù)需求分析模塊記錄的開發(fā)任務(wù)ID,找到程序在提交需求步驟中留下的數(shù)據(jù)訪問(wèn)信息,并據(jù)此信息初步驗(yàn)證程序?qū)?shù)據(jù)訪問(wèn)的合法性。
(6)測(cè)試程序
在面向數(shù)據(jù)封裝體的應(yīng)用開發(fā)過(guò)程中,系統(tǒng)級(jí)的測(cè)試是必不可少的環(huán)節(jié)。在此環(huán)節(jié)中,新開發(fā)的程序在隔離的沙箱環(huán)境中運(yùn)行。開發(fā)人員可提交必要的測(cè)試規(guī)則,使得程序在正式大規(guī)模高負(fù)荷運(yùn)行之前,仍然有機(jī)會(huì)在服務(wù)器環(huán)境下驗(yàn)證其數(shù)據(jù)處理的正確性。而對(duì)于運(yùn)行平臺(tái)而言,通過(guò)測(cè)試一方面可以預(yù)先檢查數(shù)據(jù)訪問(wèn)行為是否符合預(yù)期,是否與其聲稱的訪問(wèn)目標(biāo)一致,另一方面也可預(yù)判該程序的正式運(yùn)行是否會(huì)對(duì)整個(gè)運(yùn)行平臺(tái)的穩(wěn)定運(yùn)行造成不利影響。程序出現(xiàn)異常或平臺(tái)判定程序訪問(wèn)數(shù)據(jù)的言行不一致,都可以導(dǎo)致測(cè)試失敗,并驅(qū)動(dòng)外部程序返回集成開發(fā)環(huán)境進(jìn)行修正。因此,測(cè)試程序這一環(huán)節(jié),在面向數(shù)據(jù)封裝體的數(shù)據(jù)自治開放軟件開發(fā)環(huán)境中具有非同尋常的意義。
(7)正式運(yùn)行
當(dāng)開發(fā)人員和平臺(tái)都認(rèn)可測(cè)試結(jié)果后,程序?qū)⑦M(jìn)入正式的運(yùn)行狀態(tài)。考慮到大數(shù)據(jù)應(yīng)用的數(shù)據(jù)量大、計(jì)算方法多樣,盡管之前經(jīng)過(guò)了調(diào)試和測(cè)試,但當(dāng)程序面臨真實(shí)數(shù)據(jù)時(shí),仍然可能產(chǎn)生各種管控問(wèn)題。因此,運(yùn)行平臺(tái)中的管控模塊將持續(xù)對(duì)正式運(yùn)行的程序進(jìn)行行為檢測(cè)和分析,確保程序按既定方案正常使用數(shù)據(jù)。
4 ?關(guān)鍵技術(shù)挑戰(zhàn)
4.1 軟件行為管控
外部軟件行為管控需要在外部軟件開展正式數(shù)據(jù)訪問(wèn)之前,通過(guò)監(jiān)控外部軟件訪問(wèn)軟件的行為,提取軟件訪問(wèn)數(shù)據(jù)的行為特征,并基于這些特征抽象出其高層意圖。相關(guān)研究被廣泛應(yīng)用在軟件行為監(jiān)測(cè)、隱私防護(hù)、惡意軟件檢測(cè)方面。
外部軟件行為管控是數(shù)據(jù)自治開放中保障數(shù)據(jù)權(quán)益的重要環(huán)節(jié)。在數(shù)據(jù)自治開放環(huán)境下,外部軟件如何能充分獲得訪問(wèn)數(shù)據(jù)的自由,同時(shí)又能保證數(shù)據(jù)的權(quán)益不受侵害,是一個(gè)重要的研究挑戰(zhàn)。
外部軟件行為管控主要分為使用數(shù)據(jù)前的管控技術(shù)和使用數(shù)據(jù)過(guò)程中的管控技術(shù)兩個(gè)方面。使用數(shù)據(jù)前這一階段主要包括數(shù)據(jù)使用者獲取數(shù)據(jù)和獲取數(shù)據(jù)后開發(fā)外部軟件的若干活動(dòng)。在獲取數(shù)據(jù)時(shí),數(shù)據(jù)使用者需要提供使用數(shù)據(jù)的有關(guān)需求和意圖,這是保護(hù)數(shù)據(jù)治理權(quán)、防止數(shù)據(jù)濫用的基本條件。數(shù)據(jù)使用者的需求和意圖只有在不侵犯數(shù)據(jù)擁有者數(shù)據(jù)治理權(quán)的條件下,才可獲得批準(zhǔn),并開展后續(xù)的數(shù)據(jù)使用活動(dòng)。數(shù)據(jù)使用者獲批使用數(shù)據(jù)后,需要自行開發(fā)軟件來(lái)使用數(shù)據(jù)(如處理和分析,但是不能復(fù)制和傳播)。而開發(fā)調(diào)試軟件過(guò)程仍然不是正式的數(shù)據(jù)使用過(guò)程,而是僅通過(guò)部分或者示例性的樣本數(shù)據(jù)進(jìn)行。該過(guò)程中的軟件行為管控主要是在數(shù)據(jù)使用者初步完成開發(fā)軟件后,以開發(fā)運(yùn)行環(huán)境對(duì)軟件進(jìn)行靜態(tài)代碼分析為主、動(dòng)態(tài)軌跡收集為輔的方式,初步驗(yàn)證是否符合(不抵觸)之前聲稱的需求和意圖。
使用數(shù)據(jù)過(guò)程中的管控主要是對(duì)正式上線運(yùn)行的外部軟件的訪問(wèn)數(shù)據(jù)等行為進(jìn)行收集、分析、決策和控制。通過(guò)監(jiān)控外部軟件訪問(wèn)數(shù)據(jù)的行為,提取出軟件訪問(wèn)數(shù)據(jù)的行為特征,并基于這些特征抽象出其高層意圖,與數(shù)據(jù)使用者預(yù)先聲稱的需求和意圖進(jìn)行比較,從而決定是否允許后續(xù)的數(shù)據(jù)訪問(wèn)行為。主要通過(guò)程序動(dòng)態(tài)分析讓軟件在受控環(huán)境中運(yùn)行,收集軟件運(yùn)行時(shí)對(duì)數(shù)據(jù)實(shí)際的處理操作,并分析得到軟件的整體行為意圖。該過(guò)程需要同時(shí)考慮管控的效果和效率,并且在實(shí)現(xiàn)中根據(jù)實(shí)際管控需求作出相應(yīng)的權(quán)衡。
4.2 高層業(yè)務(wù)需求描述與建模
對(duì)外部程序的數(shù)據(jù)需求和業(yè)務(wù)需求的描述和建模是軟件行為管控的基礎(chǔ)。在面向數(shù)據(jù)封裝體的軟件開發(fā)開始前和完成后,都需要盡可能準(zhǔn)確地描述開發(fā)程序?qū)?shù)據(jù)的實(shí)際需求以及程序的高層業(yè)務(wù)需求。而現(xiàn)實(shí)中,準(zhǔn)確定義需求已經(jīng)是公認(rèn)的軟件工程的難題,并且由于軟件開發(fā)任務(wù)的高度復(fù)雜性和現(xiàn)實(shí)環(huán)境快速變化等多種因素的影響,需求的易變性也是導(dǎo)致難以準(zhǔn)確描述業(yè)務(wù)需求的一大障礙。然而,在數(shù)據(jù)自治開放環(huán)境下,由于數(shù)據(jù)需求可以相對(duì)清晰、較好地體現(xiàn)軟件開發(fā)者的設(shè)計(jì)思路,因此,充分利用數(shù)據(jù)需求和領(lǐng)域知識(shí)對(duì)數(shù)據(jù)使用者的意圖進(jìn)行描述,是一個(gè)重要的突破口。
外部軟件訪問(wèn)開放的數(shù)據(jù)資源時(shí),應(yīng)當(dāng)表明其訪問(wèn)數(shù)據(jù)資源的高層意圖。例如某外部軟件聲稱為了追蹤病癥A的治療和患者愈后情況,需要訪問(wèn)該病癥的所有醫(yī)療數(shù)據(jù),那么根據(jù)這一意圖,對(duì)與病癥A“概念相關(guān)”的數(shù)據(jù)資源的訪問(wèn)(可能)都是符合其意圖的。這種概念相關(guān)性依賴于特定業(yè)務(wù)領(lǐng)域知識(shí)模型以及對(duì)開放數(shù)據(jù)資源的語(yǔ)義標(biāo)注。在外部軟件訪問(wèn)開放數(shù)據(jù)資源時(shí),對(duì)其所有數(shù)據(jù)訪問(wèn)行為和曾訪問(wèn)過(guò)的數(shù)據(jù)資源語(yǔ)義進(jìn)行分析,對(duì)外部軟件訪問(wèn)數(shù)據(jù)資源的實(shí)際意圖進(jìn)行建模,并通過(guò)實(shí)際意圖與其生成的高層意圖的比較來(lái)評(píng)價(jià)數(shù)據(jù)訪問(wèn)行為的風(fēng)險(xiǎn)。
4.3 面向數(shù)據(jù)封裝體的軟件開發(fā)工具包的設(shè)計(jì)
軟件開發(fā)工具包(software development kit,SDK)是數(shù)據(jù)封裝體應(yīng)用開發(fā)的基礎(chǔ)。由于大數(shù)據(jù)應(yīng)用開發(fā)的復(fù)雜性和不確定性,一些軟件實(shí)現(xiàn)算法往往無(wú)法內(nèi)置于開發(fā)環(huán)境中,而只能由開發(fā)者自行編寫。這就產(chǎn)生了如何將外部編寫的算法邏輯安全可靠地運(yùn)行在服務(wù)器端,并確保數(shù)據(jù)權(quán)益不受外部程序損害的問(wèn)題。因此,需要一個(gè)基礎(chǔ)開發(fā)框架為外部軟件的開發(fā)提供足夠的可擴(kuò)展性。同時(shí),對(duì)于一些常見的數(shù)據(jù)分析算法,則希望有一些內(nèi)置的實(shí)現(xiàn)可以給開發(fā)人員方便地使用。另外,數(shù)據(jù)封裝體本身的訪問(wèn)也需要在開發(fā)平臺(tái)中實(shí)現(xiàn),但開發(fā)平臺(tái)僅處理樣本數(shù)據(jù)封裝體,因此需要數(shù)據(jù)封裝體訪問(wèn)接口的開發(fā)態(tài)和運(yùn)行態(tài)兩個(gè)不同的權(quán)限控制版本。可見,對(duì)基礎(chǔ)開發(fā)框架、可擴(kuò)展的數(shù)據(jù)分析算法的實(shí)現(xiàn)以及對(duì)數(shù)據(jù)封裝體本身的訪問(wèn),都是開發(fā)運(yùn)行平臺(tái)需要解決的問(wèn)題。
(1)基礎(chǔ)開發(fā)框架SDK
基礎(chǔ)開發(fā)框架SDK提供了外部程序在本地和運(yùn)行平臺(tái)中運(yùn)行的基礎(chǔ)接口類。這些基礎(chǔ)接口類是外部應(yīng)用程序代碼邏輯的重要擴(kuò)展點(diǎn)。當(dāng)外部應(yīng)用開發(fā)者需要在應(yīng)用開發(fā)時(shí)使用自有的特定算法時(shí),應(yīng)當(dāng)將這些算法根據(jù)基礎(chǔ)開發(fā)框架SDK中規(guī)定的框架進(jìn)行設(shè)計(jì)編碼,實(shí)現(xiàn)相應(yīng)的數(shù)據(jù)處理接口,從而實(shí)現(xiàn)從特定結(jié)構(gòu)輸入數(shù)據(jù)到特定結(jié)構(gòu)輸出數(shù)據(jù)的轉(zhuǎn)化。
之所以需要規(guī)定特定的數(shù)據(jù)輸入和輸出接口,是出于對(duì)數(shù)據(jù)保護(hù)的考慮。當(dāng)外部程序用自身算法進(jìn)行計(jì)算時(shí),涉及的原始數(shù)據(jù)都是對(duì)應(yīng)用程序開放的。然而,在這種情況下,缺乏對(duì)應(yīng)用程序的行為管控及對(duì)數(shù)據(jù)權(quán)益的保護(hù)是非常危險(xiǎn)的。因此,在基于數(shù)據(jù)封裝體的外部應(yīng)用開發(fā)中,應(yīng)用開發(fā)模塊對(duì)數(shù)據(jù)的讀寫都必須通過(guò)給定的接口完成,從而通過(guò)控制數(shù)據(jù)流入和流出情況來(lái)保護(hù)數(shù)據(jù)。
(2)數(shù)據(jù)分析SDK
數(shù)據(jù)分析SDK以外部軟件包的形式提供常用的數(shù)據(jù)分析算法。這些開發(fā)包對(duì)于整個(gè)開發(fā)環(huán)境而言是開放的,可以由任何第三方根據(jù)基礎(chǔ)開發(fā)框架的標(biāo)準(zhǔn)要求進(jìn)行擴(kuò)展。與數(shù)據(jù)封裝體內(nèi)置的基本分析接口不同,數(shù)據(jù)分析SDK可以提供更加復(fù)雜的計(jì)算邏輯,并且需要通過(guò)基礎(chǔ)開發(fā)框架SDK和數(shù)據(jù)封裝體SDK才能訪問(wèn)數(shù)據(jù)封裝體內(nèi)的數(shù)據(jù)。盡管復(fù)雜的計(jì)算邏輯可以通過(guò)外部程序開發(fā)者根據(jù)基礎(chǔ)框架SDK自行開發(fā),但內(nèi)置的數(shù)據(jù)分析SDK提供了常用的分析算法實(shí)現(xiàn),可簡(jiǎn)化外部程序開發(fā)人員的投入。
(3)數(shù)據(jù)封裝體SDK
數(shù)據(jù)封裝體SDK提供了外部程序訪問(wèn)數(shù)據(jù)封裝體中數(shù)據(jù)的基本操作規(guī)范,即數(shù)據(jù)訪問(wèn)接口。在數(shù)據(jù)自治開放環(huán)境中,當(dāng)數(shù)據(jù)站中的任何數(shù)據(jù)提供給外部程序使用時(shí),均會(huì)灌裝到數(shù)據(jù)封裝體中;而外部程序?qū)?shù)據(jù)封裝體中數(shù)據(jù)的訪問(wèn),必須通過(guò)數(shù)據(jù)封裝體SDK提供的數(shù)據(jù)封裝體訪問(wèn)接口。
數(shù)據(jù)封裝體SDK將提供受控的體內(nèi)數(shù)據(jù)訪問(wèn)能力和基本的數(shù)據(jù)分析能力。數(shù)據(jù)訪問(wèn)能力是指,當(dāng)外部程序需要獲取數(shù)據(jù)封裝體內(nèi)的原始數(shù)據(jù)時(shí),能通過(guò)數(shù)據(jù)封裝體提供的接口調(diào)用數(shù)據(jù)SDK中的數(shù)據(jù)獲取方法,讀取原始的數(shù)據(jù)記錄。這種原始數(shù)據(jù)的讀取能力受到數(shù)據(jù)封裝體內(nèi)置的安全機(jī)制的限制,例如,當(dāng)原始數(shù)據(jù)的讀取超過(guò)預(yù)設(shè)的限制時(shí),數(shù)據(jù)訪問(wèn)請(qǐng)求將被拒絕。基本的數(shù)據(jù)分析能力主要包括簡(jiǎn)單的數(shù)據(jù)統(tǒng)計(jì)操作,如求指定字段取值的最大值、最小值、算術(shù)平均值、中位值、方差等。同樣,數(shù)據(jù)分析能力也受 到封裝體內(nèi)安全機(jī)制的限制,用于保護(hù)原始數(shù)據(jù)不被過(guò)度泄露。
4.4 離線開發(fā)調(diào)試和在線運(yùn)行驗(yàn)證
為了便于開發(fā)人員使用與業(yè)務(wù)需求相關(guān)的各類數(shù)據(jù),數(shù)據(jù)封裝體提供了數(shù)據(jù)的基本規(guī)格說(shuō)明。數(shù)據(jù)使用方利用數(shù)據(jù)的規(guī)格說(shuō)明在本地編寫適用于獲得的數(shù)據(jù)封裝體的軟件代碼。用戶開發(fā)集成環(huán)境內(nèi)置數(shù)據(jù)封裝體訪問(wèn)接口,供數(shù)據(jù)用戶進(jìn)行本地調(diào)試使用。為了方便開發(fā)和保護(hù)數(shù)據(jù)權(quán)益,在開發(fā)前,運(yùn)行平臺(tái)生成一些帶有部分樣本數(shù)據(jù)的數(shù)據(jù)封裝體,使得開發(fā)人員可以利用數(shù)據(jù)封裝體開發(fā)接口進(jìn)行開發(fā)調(diào)試。
這種離線開發(fā)調(diào)試的方式能處理一部分?jǐn)?shù)據(jù)質(zhì)量問(wèn)題。但是,在大數(shù)據(jù)應(yīng)用環(huán)境下,數(shù)據(jù)質(zhì)量不高、數(shù)據(jù)內(nèi)容與規(guī)格說(shuō)明不一致等問(wèn)題層出不窮,因此即便本地調(diào)試通過(guò)的程序,仍然很可能在真實(shí)運(yùn)行環(huán)境中發(fā)生錯(cuò)誤而需要停機(jī)調(diào)試。
在正式運(yùn)行中,為了提升處理停機(jī)問(wèn)題的效率,需要一種既保護(hù)數(shù)據(jù)不被意外泄露,又能方便用戶在本地調(diào)試的實(shí)現(xiàn)方案。數(shù)據(jù)封裝體的開發(fā)態(tài)應(yīng)用程序編程接口(application programming interface, API)的離線版本提供了一種重要的在線本地調(diào)試方式,當(dāng)在線數(shù)據(jù)使用發(fā)生問(wèn)題、產(chǎn)生錯(cuò)誤時(shí),可通過(guò)本地接口獲得出錯(cuò)數(shù)據(jù)的樣本,并且配置一定的容錯(cuò)性,使接口能夠一次盡可能多地返回可能的數(shù)據(jù)異常的問(wèn)題。與此同時(shí),這一特性還需要和數(shù)據(jù)防泄露機(jī)制配合,防止因運(yùn)行時(shí)故障導(dǎo)致原始數(shù)據(jù)泄露的情況發(fā)生。
5 ?結(jié)束語(yǔ)
面向數(shù)據(jù)封裝體的軟件開發(fā)與運(yùn)行環(huán)境,是支持?jǐn)?shù)據(jù)自治開放的軟件開發(fā)和運(yùn)行的重要軟件基礎(chǔ)設(shè)施。本文給出了這種新型軟件開發(fā)與運(yùn)行環(huán)境的總體架構(gòu),并闡述了基于數(shù)據(jù)封裝體的數(shù)據(jù)自治開放軟件開發(fā)過(guò)程。數(shù)據(jù)自治開放的軟件開發(fā)要求開發(fā)環(huán)境和運(yùn)行環(huán)境的無(wú)縫銜接,進(jìn)一步突出了開發(fā)、運(yùn)行一體化的要求。數(shù)據(jù)封裝體作為支持?jǐn)?shù)據(jù)自治開放的新型載體,要求軟件開發(fā)和運(yùn)行環(huán)境提供相應(yīng)的支撐,包括解決數(shù)據(jù)需求描述、數(shù)據(jù)訪問(wèn)行為管控、數(shù)據(jù)封裝體應(yīng)用的本地開發(fā)和遠(yuǎn)程運(yùn)行等一系列的關(guān)鍵技術(shù)挑戰(zhàn)。在后續(xù)工作中,將逐步對(duì)面向數(shù)據(jù)封裝體的軟件開發(fā)和運(yùn)行環(huán)境的各個(gè)技術(shù)挑戰(zhàn)開展進(jìn)一步的研究,建立支持?jǐn)?shù)據(jù)自治開放的軟件研發(fā)基礎(chǔ)設(shè)施。
點(diǎn)擊下方?閱讀原文?即可獲取全文
作 者 簡(jiǎn) 介
吳毅堅(jiān)(1979-),男,博士,復(fù)旦大學(xué)副教授,主要研究方向?yàn)檐浖S護(hù)與演化、大數(shù)據(jù)應(yīng)用開發(fā)平臺(tái)。
?
陳士壯(1991-),男,復(fù)旦大學(xué)碩士生,主要研究方向?yàn)檐浖こ獭?shù)據(jù)開放共享。
?
葛佳麗(1993-),女,復(fù)旦大學(xué)碩士生,主要研究方向?yàn)檐浖こ獭?shù)據(jù)開放共享。
?
趙文耘(1964-),男,復(fù)旦大學(xué)教授,主要研究方向?yàn)檐浖こ獭⑵髽I(yè)應(yīng)用集成、軟件開發(fā)平臺(tái)。
?
《大數(shù)據(jù)》期刊
《大數(shù)據(jù)(Big?Data?Research,BDR)》雙月刊是由中華人民共和國(guó)工業(yè)和信息化部主管,人民郵電出版社主辦,中國(guó)計(jì)算機(jī)學(xué)會(huì)大數(shù)據(jù)專家委員會(huì)學(xué)術(shù)指導(dǎo),北京信通傳媒有限責(zé)任公司出版的科技期刊。
關(guān)注《大數(shù)據(jù)》期刊微信公眾號(hào),獲取更多內(nèi)容
總結(jié)
以上是生活随笔為你收集整理的数据自治开放的软件开发和运行环境的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++之const修饰得到是谁
- 下一篇: 2018中国国际大数据大会专属报名通道(